This project contains the program controlling my osmotic water filter using an ESP32.
![](https://private-user-images.githubusercontent.com/28454466/280050752-cf0d0675-a4cf-40d4-b81a-a10c9e8bd8d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTA3NTItY2YwZDA2NzUtYTRjZi00MGQ0LWI4MWEtYTEwYzllOGJkOGQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTI0VDIwMzMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA4OGU1OGYwNmNiNDdhNDMyZDg3YzY5YjA1ODJiMWI3MWMwZDQyNWViODIxMDYzMmY1MjA5YzVkNWY1Nzc0MjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.JWGsaq0LkktHKFTLdWdPpStNrTTAtX_0XKby7-rg1Ng)
![](https://private-user-images.githubusercontent.com/28454466/280051624-ecc0cbdd-011f-45b6-871b-4c5f7b65c3a1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTE2MjQtZWNjMGNiZGQtMDExZi00NWI2LTg3MWItNGM1ZjdiNjVjM2ExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA1MjQlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNTI0VDIwMzMzNlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ5ZmE0M2ZmOWVlNjY3NTI5N2NiNGRiODJkNzAyNmMwYzhkNzQyZjlkMTkwNWUwZjU0YzE2N2JhZjE4NzE5M2YmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.b6FJU0x7TZ38nU2_YqdB78jG0sUpRK0-_wCMhhzZxgU)
![](https://private-user-images.githubusercontent.com/28454466/280052192-a7340757-c1f6-49b8-85c1-667cc4f1c164.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTIxOTItYTczNDA3NTctYzFmNi00OWI4LTg1YzEtNjY3Y2M0ZjFjMTY0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jMDk5NmY3NDQ2ODBmMzM5MjhkZWY3MmVlZTUyMDdkZWMzZmU4ZDI3N2RjMTZlMzZmMzQyY2IxOGNiYTAwY2Y0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9._XjdWs8O1zQL4tMf-DzUpralR_Id_QIbJhMCeoJC_xQ)
![](https://private-user-images.githubusercontent.com/28454466/280053831-23d2618b-3ec2-42b9-96fe-23af8ee97a89.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTM4MzEtMjNkMjYxOGItM2VjMi00MmI5LTk2ZmUtMjNhZjhlZTk3YTg5LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04ZmYxYTA3NWJhNTdmMzRkNTlkNjRmYTVkYWZkZGE0Nzg1NWUzYWQ0NGUwZjQwZGNkYzFiMjZkNTVjNTI5ZDNhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.F3aLscj05kaRfLaAaOKxZdj97lVJ4yqdteodSJ5foFA)
![](https://private-user-images.githubusercontent.com/28454466/280053016-28cdc3b1-99bc-404a-bbaa-b2231584a57f.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTMwMTYtMjhjZGMzYjEtOTliYy00MDRhLWJiYWEtYjIyMzE1ODRhNTdmLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNDgzYzdlMTYxOTQ3ZDAxMjIxYzA2Yjc2MjBlNjExZjI0ODY1YzFlMGZkZmMyMGQzYzkwMDJlNTAxOThmNmU1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.__hImKj8exa1Svp_m7ZnVuert0Ape89vOSlacziiSZs)
![](https://private-user-images.githubusercontent.com/28454466/280052557-a85c56ce-077c-4368-91e6-4d0fd9aaec03.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTI1NTctYTg1YzU2Y2UtMDc3Yy00MzY4LTkxZTYtNGQwZmQ5YWFlYzAzLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04YmVhNTRlYTQ1ZGRjZDZjNjJjNmU3ZmQzOWY5ZmQzZTUxMjc3YjI0MmRjMjdkNWVjY2JmZTdlYTcxYTdjOTIwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.KefJCdeyV3JsABjvKpGwbKXTA1vr1zwCaw_s5CI6jag)
![](https://private-user-images.githubusercontent.com/28454466/280062805-795140ad-6fbc-4879-9a73-3eb7211ca349.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNjI4MDUtNzk1MTQwYWQtNmZiYy00ODc5LTlhNzMtM2ViNzIxMWNhMzQ5LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lOTNhOWRlYjhiOWQzZmQyZjNlZGNhYTU1NjliMTc5YzRkNWJlOGUyYjBmN2QwY2RjNzY5NTE1NzQyNWE2ODczJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.Agh-PYSxVaNcH-hgMBqbAul9ZKuc93khpwd_jeZvnvc)
![](https://private-user-images.githubusercontent.com/28454466/280221085-16824b0a-f303-46b3-ab3d-1b29961d2013.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjEwODUtMTY4MjRiMGEtZjMwMy00NmIzLWFiM2QtMWIyOTk2MWQyMDEzLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03NDI0YWUzMzBjZWIyMTc4M2Q0OTg5YzVlYzFlM2NkZTZkMDk4YTk1NGYxMTI0NmViNmNjZTAwMDU3ODYxODZkJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.wK_bNHjCwWSso4EulW2P65HNd_2iuA6QX_qLceTl9t8)
![](https://private-user-images.githubusercontent.com/28454466/280221051-dab51afa-1b45-4f0d-a840-ff9fc813e5d4.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjEwNTEtZGFiNTFhZmEtMWI0NS00ZjBkLWE4NDAtZmY5ZmM4MTNlNWQ0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03ZGQ5ZmNkODRmYjgwMmZhODZjZjhiYjQ5YzE3NjQzOGFmYTRhNzNjNjhjOGRmMGVkMGFlMGE1ODNlMjJlOWU3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.HNxCdk9H-BdunmhN8dZyHw6SxHvU2lRldFzSvDyq5Bk)
![](https://private-user-images.githubusercontent.com/28454466/280221126-8bac14c5-4791-43b9-836b-32f0ffd4fa74.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTY1ODMxMTYsIm5iZiI6MTcxNjU4MjgxNiwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjExMjYtOGJhYzE0YzUtNDc5MS00M2I5LTgzNmItMzJmMGZmZDRmYTc0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNTI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDUyNFQyMDMzMzZaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zOGJhMjJjYzMzYWE5ZjYxZWNiYzkzZDdmNjNlN2NmOWMzOTc5MjFmOWFmNzMwMjRjZWQ0NThjOWJhNzUyODFjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.N1o6ADKOcfJAN6AbNzS1GTAt-Irv01QVZic9Ug0nOgE)
- Heltec WiFi LoRa 32 (V2)
- HX711 + scale sensor
- TDS meter sensor
- 4 channel relay module
- Flush membrane and standing water before filtering water to prevent contamination.
- Flush membrane after filtering water to prevent membrane from calcification.
- Only flush when necessary by storing last flush time.
- Flush membrane and standing water every 4 hours to prevent contamination.
- Disinfection program (filter small time amount, rest for 15 minutes, repeat 10 times, flush membrane, filter water).
- Add button to trigger disinfection program.
- HTTP REST call to send event-status to backend.
Create the file platformio.ini
:
[env:heltec_wifi_lora_32_V2]
platform = espressif32
board = heltec_wifi_lora_32_V2
build_flags =
-DWIFI_SSID='"change-me"'
-DWIFI_PASSWORD='"change-me"'
framework = arduino
lib_deps =
heltecautomation/Heltec ESP32 Dev-Boards@^1.1.0
bogde/HX711@^0.7.5
arkhipenko/TaskScheduler@^3.6.0
robtillaart/StopWatch@^0.3.2
monitor_speed = 115200