Když jsme dělali nádrž na dešťovku, počítal jsem rovnou s tím, že ji časem napojím do Home Assistantu. K nádrži jsem proto nechal dotáhnout síťový kabel cat7 S/FTP, abych nemusel řešit Wi-Fi někde venku, baterky ani samostatné napájení.

Samotné měření hladiny tak pro mě nebylo nouzové dodělávání, ale spíš třešnička na dortu celé instalace dešťovky. Nádrž fungovala i bez toho, ale pořád chyběla jedna praktická věc: vědět, kolik vody v ní opravdu je.

Hlavně před blížícím se deštěm.

Když má přijít větší srážka, je dobré vědět, jestli je v nádrži ještě dost volné kapacity, nebo jestli má smysl předem extra zalít zahradu a udělat v nádrži místo. Bez měření jsem musel ven a oddělat poklop. S měřením vidím stav rovnou v Home Assistantu a můžu se podle toho rozhodnout.

Při instalaci Momentka při instalaci. Vypadá to celkem OK, ne?

Princip

Použil jsem ponorné tlakové čidlo pro měření hladiny vody. Čidlo je dole v nádrži a podle tlaku vodního sloupce dává analogové napětí. Čím víc vody nad čidlem, tím vyšší tlak a tím vyšší výstupní napětí.

Na AliExpressu se podobná čidla prodávají v několika variantách: 4–20 mA, 0–10 V, RS485, 0–5 V nebo 0–3.3 V. Pro ESP32 je zásadní použít variantu s výstupem vhodným pro jeho ADC vstup. Na ADC vstup ESP32 nesmí přijít víc než 3,3 V, jinak hrozí poškození desky.

Já tedy používám analogovou variantu vhodnou pro přímé čtení ESP32 a napětí čtu přes ADC vstup.

Hardware

Základ je deska Olimex ESP32-POE. Hlavní důvod je jednoduchý: když už mám k nádrži dotažený Cat7 S/FTP kabel, dává smysl po něm řešit komunikaci i napájení. Jeden kabel, žádná Wi-Fi a žádný zdroje.

Zapojení čidla je jednoduché:

ESP32-POE Tlakové čidlo
+5V VCC
GND GND
GPIO35 OUT

Mezi výstup čidla a ADC vstup ESP32 jsem dal sériový odpor 4.7 kΩ a na vstup kondenzátor 100 µF proti zemi. Ne proto, že bych to měl nějak dokonale spočítané jako referenční návrh, ale hlavně proto, že jsem zrovna jiné vhodné součástky neměl po ruce.

U měření hladiny vody mi to nijak nevadí. Hladina se nemění skokově po milisekundách, takže pomalejší a klidnější měření je spíš výhoda. Zbytek vyhlazení pak ještě řeší filtry přímo v ESPHome.

ESP32-POE v instalační krabici Zapojené ESP32 s kondenzátorem na signálu proti GND, který řeší napěťové špičky a rezistorem jako ochrana ESP32

ESPHome

Celou konfiguraci jsem dal na GitHub:

https://github.com/honza-kasik/water-cistern

Po přidání do Home Assistantu vzniknou hlavně tyto entity:

  • Napětí čidla
  • Hladina vody
  • Zaplnění nádrže

První hodnota je filtrované napětí z čidla. To je užitečné hlavně při kalibraci a kontrole, jestli čidlo dává rozumné hodnoty.

Druhá hodnota je přepočtená výška vodního sloupce v metrech.

Třetí hodnota je už praktické zaplnění nádrže v procentech.

Konfigurace používá Ethernet a nativní ESPHome API, takže není potřeba MQTT. První nahrání firmware je potřeba udělat typicky přes USB, další aktualizace už můžou běžet přes Ethernet.

Terminál s logem Hurá, funguje to! Zatím jen v konvi s vodou. Výška hladiny sedí.

Přidání do Home Assistant už byla otázka doslova dvou kliků. ESPHome integrace vše našla a automaticky přidala.

Kalibrace

Kalibrace je nejdůležitější část celého měření. Nestačí jen připojit čidlo a věřit číslům.

V konfiguraci jsou tři hlavní hodnoty:

v_empty: "0.142"
v_full: "2.50"
tank_height_m: "2.194"

Použitý HW