Přemýšlel jsem jak neinvazivně měřit spotřebu vody. Napadlo, mě snímat z vodoměru pohyb pomocí IR závory, nebo koupit vodoměr s pulzním výstupem, ale objevil jsem projekt, který je neinvazivní.
Na webu jsem našel projekt “AI-on-the-edge-device” , který pomocí ESP32 s kamerou vyčítá stav vodoměru. Moc jsem tomu nevěřil, ale chtěl jsem to zkusit. Udělal jsem tam pár úprav, ale vypadá to, že to funguje.
Elektronika je celkem jednoduchá , stačí ESP32Cam modul a k tomu zdroj 5V 1A (např. nabíječka na mobil).
Vodoměr :

SW jsem vycházel z verze 9.1.0 , která je publikovaná na zde .
Použil jsem PlatformIO, kde jsem založil projekt pro espressif32 . Pak jsem nakopíroval všechny adresáře z původního projektu do mnou vytvořeného projektu a upravil platformio.ini. Zkusil jsem překlad a po pár desítkách vteřin vypadl firmware. Ten jsem podle návodu nahrál do ESP32Cam modulu a zkusil se připojit přes web k tomuto modulu. Vše fungovalo. Aby mohl snímat modul vodoměr z blízka, je nutné pootočit čočkou na kameře v modulu, tím se obraz zaostří, zkoušel jsem to na vzálenost cca 12-13cm.

Vznikl problém jak to připevnit k vodoměru. Bude potřeba tubus, cca 13cm dlouhý cca 65-70mm průměr. Nechtělo se mi jej tisknout, tam jsem hledal a našel , šla použít 0.5L hliníková nádoba od piva / limonády. Odstřihnul jsem spodek a vršek a na 3D tiskárně si udělal zátky. Vnitřek jsem pro jistotu stříknul černou matnou barvou, aby nevznikaly odlesky.

LEDka na modulu se mi zdála, že moc svítí, tak jsem ji přikryl dvěma vstvami papíru, aby vznikl rozptyl světla.
Aby to komunikovalo správně s DOMOTICZ přes MQTT je potřeba udělat úpravu v souboru ClassFlowMQTT.cpp – řádek 165-178. Jedná se o převod z m3 na litry a přizpůsobení věty pro Domoticz v mém případě mám dva senzory s idx 89 a 90.
zde je kód který jsem tam vložil
V domoticz pak stačí přidat dva senzory v mém případě idx=89 pro stav vodoměru (General – počítadlo ) a průtok l/min idx=90 (Waterflow)..
U senzoru 89 vodoměr, jsem nastavil, že se má odečítat 999 (to byl stav vodoměru kdy jsem to pustil) tak aby se zobrazoval údaj jako by byl od nuly.

A funguje to 🙂


