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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTA3NTItY2YwZDA2NzUtYTRjZi00MGQ0LWI4MWEtYTEwYzllOGJkOGQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1NDcyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4OTZjZTJmYTlhOTllNmM5YjNkNDdmMDZlYWE4MGJkOTljNWIzMjFjYmFjOGZhYTcwYTljNjk5NmRhZGI5YjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1OYWC10NbWim6YTuIAVCduuj0DvL_KcA-l1UxdLJLi0)
![](https://private-user-images.githubusercontent.com/28454466/280051624-ecc0cbdd-011f-45b6-871b-4c5f7b65c3a1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTE2MjQtZWNjMGNiZGQtMDExZi00NWI2LTg3MWItNGM1ZjdiNjVjM2ExLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTMlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEzVDE1NDcyMFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI2MGEwMTMxMTgyYWYyOTE2OWQ0YzU5MTA0YTZkNGQ5NDYzNGI3MTczMDNlYjY1N2JkMjg2NWUwNmI2YjBiNTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1A5eAyoPiM2SgE-XjBxbeHCH6HKE6jinXq2wObF86mc)
![](https://private-user-images.githubusercontent.com/28454466/280052192-a7340757-c1f6-49b8-85c1-667cc4f1c164.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTIxOTItYTczNDA3NTctYzFmNi00OWI4LTg1YzEtNjY3Y2M0ZjFjMTY0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01NzlhOTJhYTJjYmU4MmI4Mzk1MGRmOTY2NTFmNGRlYTRkNmU4Y2ViYzcxMjc3ZGNjYmI0MThjNzZiMzllNTY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.nBLBhQYp4Mp276Bar-LXeKPmv-tPeNdLdyRiI6YAmyw)
![](https://private-user-images.githubusercontent.com/28454466/280053831-23d2618b-3ec2-42b9-96fe-23af8ee97a89.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTM4MzEtMjNkMjYxOGItM2VjMi00MmI5LTk2ZmUtMjNhZjhlZTk3YTg5LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yZTk2MDQxYjkwZDUyZWY4YjYzNzRkMDk3ZTIyYjJjNGY1ZmFjZjI5YTM3YjkxZmZhNWYyZDkzMzMyYTQ1MGVhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.i2TNXJr-_5tmDZNetcd06H3cH_zOofv26CEyjZZcz84)
![](https://private-user-images.githubusercontent.com/28454466/280053016-28cdc3b1-99bc-404a-bbaa-b2231584a57f.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTMwMTYtMjhjZGMzYjEtOTliYy00MDRhLWJiYWEtYjIyMzE1ODRhNTdmLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NTA4OTQzMDVlYjg2ZTE1NDk0M2NiYjUzNzYwZGJkMGRkOWZjMDY5ZThkMmFhZDMwNDdlZDY2YWMyMzAzOTdmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.LmagIuMNkpTjTsEuaqtvZztgRDVt24tMDT2j3qa2wtk)
![](https://private-user-images.githubusercontent.com/28454466/280052557-a85c56ce-077c-4368-91e6-4d0fd9aaec03.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNTI1NTctYTg1YzU2Y2UtMDc3Yy00MzY4LTkxZTYtNGQwZmQ5YWFlYzAzLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1jOTg5N2QzNDc1M2EwNmRlYTkwMWEzMmI0Yjk3NGMzM2YzYzE0YzYzZWMxMDk3ZWJiNmM3YTQwNDI1NGRlZWUwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.SITo2todo8S1t9kUJhAw__68FHXvnGRXMAq5po0POVE)
![](https://private-user-images.githubusercontent.com/28454466/280062805-795140ad-6fbc-4879-9a73-3eb7211ca349.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAwNjI4MDUtNzk1MTQwYWQtNmZiYy00ODc5LTlhNzMtM2ViNzIxMWNhMzQ5LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wN2ExOTVlYjMwNDI2ZDlhYjU3MmNlOTFlZDkwY2JiOTgwZjVjZmVjNzVhMmRiYmE5MWNjMGFjYmQxNjBlMjM5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ygV1rrFbongBbnPMZ0gu6iZRC9PMSZIufVez4oWO7SI)
![](https://private-user-images.githubusercontent.com/28454466/280221085-16824b0a-f303-46b3-ab3d-1b29961d2013.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjEwODUtMTY4MjRiMGEtZjMwMy00NmIzLWFiM2QtMWIyOTk2MWQyMDEzLmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xNDU2MGYzZDRiY2E3NzdlZWI1NGFjZmYwY2MwY2MyYmVjZWQzNzMxNWRkZjYyNGNkNDdmYTgzZjk2ZmNhOGMyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.EOORwl3QU9kvcBG-pGUrY7o2nd_mIQu3I-2wbQ3DH28)
![](https://private-user-images.githubusercontent.com/28454466/280221051-dab51afa-1b45-4f0d-a840-ff9fc813e5d4.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjEwNTEtZGFiNTFhZmEtMWI0NS00ZjBkLWE4NDAtZmY5ZmM4MTNlNWQ0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03YzZkNzAyYTQ1YTVmMzMxMGY0NDZmZWZjMjdjODY2NGRmYjNhMWZkNmUwNDI4Mjg1NjdlOWQ2YjJiYTZhYmFlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4J2VNK6WYpgyB1P9RTYSpTr3cSonmy4hk2iQgNXdjd8)
![](https://private-user-images.githubusercontent.com/28454466/280221126-8bac14c5-4791-43b9-836b-32f0ffd4fa74.jpeg?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzk0NjE5NDAsIm5iZiI6MTczOTQ2MTY0MCwicGF0aCI6Ii8yODQ1NDQ2Ni8yODAyMjExMjYtOGJhYzE0YzUtNDc5MS00M2I5LTgzNmItMzJmMGZmZDRmYTc0LmpwZWc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEzJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxM1QxNTQ3MjBaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02NTkwZWI0M2VjZDQzYjMyODlkOTViMWY3MTcxOTEwMzY3MjhkMGNhYWM0OTNjMTY4YmMzYTE5N2YwOWE1ZmUwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.jQlLnMTGr4d8H3z9ng5NXvK9eUqW_AVa3zviYj7KCOc)
- 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