Domopool
Goal
The goal of this project is to automatise some parts of my pool, mainly the flter pump based on the water temperature. There is also an option to use a ph pump.
Hardware
The base hardware is an esp32 devkitC. Other hardware:
- Box: arduitouch
- LCD: Ili9341 240x320 RGB touch screen
- Power: Integrated 5V voltage regulator (input voltage 9 - 35V DC)
- Built-in piezo buzzer
- Controler: ESP32 board
- Temperatures (water and ambiant): 2 DS18B20
- Water pressure: GS07381-06 (200PSI) amazon
- RTC: DS3231 amazon
- ADC: ADS1115 az-delivery
- LevelShifter: TXS0108E az-delivery
- Relay: 4-relay module 5V with optocoupler low-level trigger az-delivery
Pictures
-
The box
- The pressure sensor on top of the sand filter
Funtionalities
- Read/write configuration from preferences (nvs storage)
- Mesure water temperature, ambiant temperature and water pressure
- Auto-detect DS18B20 (temperature sensors)
- Avaluate filtering time based on day hour and water temperature
- Get/Set values through grpc request
- Set time with ntp
- Send data with mqtt
- alarms on temperatures and pressure
- frost protection
- low/high pressure protection
Configuration
To ease configuration update 2 front-end are under developement:
- CLI: https://github.com/golgoth31/domopool-cli
- UI: https://github.com/golgoth31/domopool-cli/tree/master/web
Temp/filter time
The local table is defined like this:
Temp | Hour | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
t<1 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | |
1<t<3 | X | X | |||||||||||||||||||||||
3<t<6 | X | X | |||||||||||||||||||||||
6<t<9 | X | X | X | ||||||||||||||||||||||
t=6 | X | X | X | ||||||||||||||||||||||
t=7 | X | X | X | ||||||||||||||||||||||
t=8 | X | X | X | ||||||||||||||||||||||
t=9 | X | X | X | X | |||||||||||||||||||||
9<t<12 | X | X | X | X | |||||||||||||||||||||
12<t<15 | X | X | X | X | X | ||||||||||||||||||||
15<t<18 | X | X | X | X | X | X | |||||||||||||||||||
18<t<21 | X | X | X | X | X | X | X | ||||||||||||||||||
21<t<23 | X | X | X | X | X | X | X | X | |||||||||||||||||
23<t<26 | X | X | X | X | X | X | X | X | X | X | X | ||||||||||||||
26<t<28 | X | X | X | X | X | X | X | X | X | X | X | X | X | ||||||||||||
28<t<30 | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | ||||||||||
30<t | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X | X |
Other table exemples:
ToDo
- set hour if ntp and rtc are not ok
- add Hbridge driver for peristaltic pump (ph)
- add ability to redefine filter pump steps