Nastal čas, kdy jsem si řekl, že by bylo fajn mít v Home Assistantu přehled o spotřebovaných energiích. Začít jsem chtěl s tím, co jsem si myslel, že bude nejjednodušší: sledováním spotřeby vody.
Už nějakou dobu jsem si občas uložil nějaký zajímavý článek nebo nápad, jak to udělat, tak jsem si řekl, že to projdu a pustím se do toho. Tak jsem to chvíli studoval, a zde je přehled všeho, na co jsem přišel (než to sám pozapomínám :D ).
Takže, o co mi jde: chci mít v Home Assistant* přehled o spotřebované vodě (za poslední den, měsíc, rok; v litrech/kubících, v korunách, …)
K tomu je potřeba vyřešit tři hlavní problémy:
1) detekovat, že na vodoměru proběhl nějaký impulz (= proteklo nějaké množství vody)
2) informaci o tom, že tento impulz proběhl, dopravit do HA
3) tuto informaci nějak zpracovat a na konci mít pěkný dashboard, grafy, jestli spotřebovávám víc/míň, než kolik odchází zálohy apod.
Tento článek je přehledem, jakými různými způsoby se dají řešit první dva problémy.
*ad 2), samozřejmě to nemusí být jenom Home Assistant, ale klidně i ThingSpeak, Blynk, ThingsBoard, Domoticz, Zabbix (+ Grafana) aj. Prostě jakákoliv platforma, kde tu informaci chci nějak dále zpracovat.
Problém #1: Jak z vodoměru odečítat impulzy?
Jeden impulz je informace o tom, že vodoměrem proteklo nějaké množství vody (nejčastěji každých 1, nebo 10 litrů). A my chceme tento impulz detekovat a předat ho dál. Způsobů, jak to udělat, je docela dost. Seřazeno od nejlevnějších:
Jazýčkový kontakt (reed switch), od 2 Kč
Jazýčkový kontakt je spínač, který se sepne pokaždé, když se přiblíží k magnetickému poli (běžně jsou např. v senzorech otevřených dveří/oken). Uvnitř jsou kousíček od sebe dva jazýčky, které se působením magnetu spojí (viz Wikipedia):
Některé vodoměry mají přímo místo pro umístění takového spínače. Takto např. vypadá vodoměr a jazýčkový kontakt zabalený v adaptéru, který pasuje jen do konkrétního vodoměru (zdroj):
A nebo můžete vzít samotný jazýčkový kontakt a prostě ho připlácnout tam, kde víte, že bude správně spínat (zdroj):
Ve vodoměrech je tento magnet často na poslední (nebo předposlední) číslici v číselníku; může být také v otáčejících se ručičkách nebo kolečkách. V některých vodoměrech ale zase nejsou vůbec.
Tak či onak, pokud lze použít jazýčkový spínač, tak v okamžik jeho sepnutí máme k dispozici informaci o tom, že právě protekl další litr (nebo 10) vody.
Příklady jazýčkových spínačů a projektů pro inspiraci:
- AliExpress: mraky různých
- Ukázka hotového senzoru s jazýčkovým kontaktem pro přicvaknutí přímo do vodoměru: 2 Wire Single Reed Switch
- Ukázka měření samotnými jazýčkovými spínači: @sairon
Snímání protáčejícího se kolečka, od $1
Některé vodoměry mají z poloviny (nebo třeba ze 2/3) reflexní kolečko, které se otáčí s protékající vodou. Tím jak se střídá reflexní a matná část lze sledovat, jak se kolečko otáčí a tím sbírat impulzy (většinou jedno protočení = jeden litr vody).
Otáčení tohoto kolečka lze snímat např. indukčním (proximity) senzorem, foto senzorem a nepochybně i dalšími senzory, zrovna tady se asi kreativitě meze nekladou. Já jsem třeba doma našel optický senzor TCRT5000:
Je to vlastně IR LED která svítí, a fototranzistor, který sbírá odraz zpět. A rovnou jsem vyzkoušel, že v analogovém výstupu lze zřetelně vidět reflexní vs. černou část kolečka, a tím počítat litry:
Potom stačí nastavit potenciometr na TCRT5000, aby spínal digitální výstup 1/0 ve správný moment (někde v půlce přechodu, asi), a můžeme měřit přesně po litrech.
Na vodoměru to potom může vypadat nějak takto:
Příklady senzorů a projektů pro inspiraci:
-
- projekt: Měření vodoměru v Home Assistant: Nastavení senzoru TCRT5000 (můj :D)
- senzor: TCRT5000 (AliExpress)
- projekt s proximity senzorem: Build a cheap water usage sensor using ESPhome and a proximity sensor, senzor LJ18A3-8Z/BX (AliExpress)
- jiný projekt s proximity sensorem a Tasmotou: Indukční senzor SN04-N + Tasmota
Snímač magnetického pole (Hallův senzor), od $2
Tuhle variantu jsem důkladně neprozkoumal, nicméně opět funguje na detekci síly magnetického pole ve třech osách, které fluktuují, když se uvnitř vodoměru něco s magnetem hýbe. Vzhledem k tomu, že třeba u suchoběžných vodoměrů (číselník je od samotné turbíny oddělený, a číselník tak lze sundat, aniž by všude začala stříkat voda :D ) se informace na samotné měřidlo přenáší nejspíš právě magneticky, tak by to asi mohlo nějak fungovat, ale zatím jsem neměl možnost vyzkoušet. Pokud je magnet přímo v číselníku nebo ručičkách, tak mi analogový jazýčkový kontakt přijde jako lepší volba.
Potom to může vypadat třeba nějak takto (zdroj):
Příklady senzorů a projektů pro inspiraci:
- senzor HMC5883L (AliExpress)
- projekt: Live Wi-Fi Water Meter Reader
- projekt: Gas meter reading with magnetometer HMC5883L
Snímání číselníku kamerou, od $5
Dalším řešením může být ESP32-CAM, malá vývojová destička s kamerou. Tu namíříte na číselník a čtete. Existují projekty (např. AI on the edge), které po natrénování číselníku dělají klasické rozpoznání textu. To už začíná být energeticky asi trochu náročnější řešení (spousta lidí u toho ještě využívá třeba přísvit), každopádně to existuje, tak to zmiňuji. U old-school-mokroběžných-čistě-analogových vodoměrů, kde se na číselníku pořádně nic neotáčí, je to nejspíš jediná možnost, pokud se chcete vyhnout instalatéřině a výměně (nebo montáži dalšího) vodoměru. Ukázka (zdroj fotky):
Příklady senzorů a projektů pro inspiraci:
- vývojová destička ESP32-CAM (AliExpress)
- projekt AI-on-the-edge-device
- Read water meter with ESP-Cam / AI-on-the-edge (video, německy)
OEM impulzní moduly
Doteď to byly všechno věci, které lze sehnat za pár dolarů z alíka. Pak existují (dražší) řešení přímo od výrobců vodoměrů:
Na některé vodoměry lze dokoupit impulzní moduly od výrobce, které se jen nacvaknou na vodoměr a hotovo. Z těch vede pár drátů, ze kterých už jen čtete impulzy. Nevýhodou je dost vysoká cena, která se pohybuje od 900 Kč za kus. To znamená, že pokud chcete snímat teplou i studenou vodu, tak jenom za tyhle dva senzoru dáte i přes 2000 Kč (a pořád je potřeba vyřešit dopravu impulzů do HA). To už je na můj vkus dost, zas tak nutně to v HA nepotřebuju (kdyby to měla být jediná varianta 😂).
Každopádně to existuje a spolehlivou a relativně rychlou integraci (vč. té úplně bezdrátové) je to asi nejsnazší řešení.
- Já mám například vodoměry Enbra ER-AM, pro které např. existuje impulzní modul pro vodoměry ER-AM (AT-MBUS-NE-02).
- Podobná ukázka továrního impulzního modulu je třeba impulzní kabelový snímač RFM-MB1 pro vodoměry GSD8-RFM.
- Impulzní modul pro vodoměry Sensus 420, 620, 820, 405S a 612.
Takto např. vypadá impulzní modul pro vodoměr Enbra ER-AM zezadu: je vidět, že taky snímá poloreflexní kolečko (to, které se otočí 1× s každým litrem). Výstupem z modulu je potom impuls každých 10 litrů (uvnitř je napevno baterie, která údajně vydrží 10 let):
Odečítání existujícího vzdáleného odečtu
V dnešní době jsou vodoměry čím dál častěji odečítány dálkově, nezřídka právě krabičkou podobnou impulznímu modulu o odstavec výše. Tam nevím, jestli se k těm informacím dá nějakým rozumným způsobem dostat, ještě jsem to nikdy neviděl. Podle některých zdrojů by to v určitých případech jít mohlo (např. Home Assistant – odczyt stanu licznika wody z zakładką APATOR – data chytá nějakým DVB-T donglem a nějak dekóduje – nezkoumal jsem podrobněji).
Co jsem tak viděl, tak některé rádiové moduly pro vzdálený odečet dodavatelem se nasadí na stávající vodoměr, a téměř celý zakryjí. Potom odpadá možnost použití některých vlastních senzorů a zůstane jen možnost snímat nějak magnetické pole zboku, případně opticky odečítat číslice:
Vlastní impulzní vodoměr
Poslední varianta je koupit si vlastní vodoměr(y), o kterých víte, že z nich půjdou impulzy snadno získávat, a vlepit je za hloupý (nebo cizí, na který nechcete sahat) vodoměr.
Této variantě jsem původně nevěnoval přílišnou pozornost, protože jsem koukal jenom na ceny nových vodoměrů. Pak jsem ale kouknul na bazoš a koupil pár… pět :D… použitých vodoměrů za 250 Kč za všechny (v tomhle případě Enbra ER-AM, u kterých už jsem měl vyzkoušené, že jdou snadno měřit). Dražší pak bylo i jen samotné šroubení (2× přechodka z PP + šroubení = 250 Kč), než zbývající hardware dohromady (vodoměr + Wemos D1 Mini + TCRT5000 = 120 Kč :D).
Každopádně když je to v těchto relacích, tak rovnou měřím nejen vodu z řádu, ale i ze studny. Protože… proč ne. :)
Příklad:
- vodoměry Bonega (viz např. tatageek.cz)
- mraky dalších, ale nestudoval jsem to dál
- obdobnou variantou pak může být použití průtokoměru (vodoměr bez displeje), ale ty levné jsou nepřesné
Problém #2: Doprava impulzů do Home Assistant
Takže dejme tomu, že jsme nějakým způsobem schopní zaznamenat každý impuls na vodoměru. Ale jak teď tuto informaci dostat do Home Assistantu? Opět od nejlevnějších:
Přes WiFi: ESP8266* vývojová destička, např. Wemos D1 Mini (od $2)
Tohle už vyžaduje trošku větší bastlení (než připájení dvou drátků, jako níže), ale je to zase naprosto univerzální, protože jako čidlo impulzů můžete použít vlastně úplně všechno ze zde zmíněných (jazýčkový kontakt, optické čidlo, proximity senzor, Hallův senzor, u EPS32 kamera, …). Další výhodou, že je z jedné takové desky můžete číst dva vodoměry, k tomu teploměr, LED diodu zámku dveří pračky/sušičky (a mít tak notifikace na hotové praní/sušení) – prostě není to předurčeno k jediné činnosti (počítání impulzů) jako přiohnutí teploměru nebo dveřního senzoru níže.
Na takovou desku naflashujete ESPHome (nebo Tasmota) firmware, nakonfigurujete senzory a počítáte. Nevýhodou je (narozdíl od níže uvedených dveřních senzorů, nebo teploměrů), že se hůř dělá udělátko, které by bylo schopné jet rozumnou dobu pouze z baterky (např. Wemos D1 Mini + 2× TCRT5000 v Apple USB 1A nabíječce má spotřebu cca 7 kWh ročně – not great, not terrible, ale na provoz z baterky to není).
Tuhle variantu (Wemos D1 Mini + ESPHome firmware + optické senzory TCRT5000) jsem zatím ve všech případech použil já.
Dosah: podle dosahu WiFi. Existují také ESP32 desky s RJ45 konektorem pro připojení kabelem, některé vč. POE napájení (např. Olimex, wESP32, Lilygo).
Více info:
- Měření vodoměru v Home Assistant (moje)
- Build a cheap water usage sensor using ESPhome (pieterbrinkman.com)
- Reading the house water meter with ESPHome and Home Assistant (bujarra.com)
Přes Bluetooth: Xiaomi teploměr LYWSD03MMC ($5)
Xiaomi Mi Home LYWSD03MMC je teploměr, který stojí kolem $5, dokáže hodně dlouho (>rok) fungovat na knoflíkovou CR2032 baterku, a data vysílá přes Bluetooth Low Energy advertisement (BLE). V kombinaci s jazýčkovým spínačem je to čistě mechanické a bezdrátové řešení s minimální energetickou náročností. Ideální ovšem je, pokud jste z vodoměru schopní impulzy sbírat jazýčkovým kontaktem, protože ostatní varianty snímání impulzů už většinou vyžadují nějaké svoje napájení (a potom už by asi dávalo větší smysl sáhnout např. po Wemos D1 Mini rovnou).
„Cože, jak mám použít TEPLOMĚR k počítání pulzů?“, ptáte se? No, ano. :D
On má totiž uvnitř pin využitelný právě pro počítání impulzů (P8
):
Jeden drobný chyták to teda má: na teploměrech je potřeba přeflashovat firmware na pvvx/ATC_MiThermometer
. Ten má mj. přímo „reed switch counter“. Tzn. počítá sepnutí, a jejich počet pravidelně vysílá (společně s naměřenou teplotou a vlhkostí, takže jako bonus máte v HA i informaci o teplotě ve stoupačce, ve sklepě, nebo prostě tam, kde máte vodoměr). Flashnutí firmwaru je nicméně jednoduché, stačí počítač s BT a prohlížeč a vyplatí se udělat obecně. Lze s ním potom snížit interval měření teploty a jedou pak na jednu baterku do aleluja (i když ani s origo firmwarem, který teplotu a vlhkost měří dost intenzivně, není výdrž špatná).
Jednou z možných nevýhod je, že načtení impulzů v HA není úplně okamžitě, ale s drobnou prodlevou (všechny naměřené hodnoty se zveřejňují se v přednastaveném intervalu, nikoliv ihned po jejich zaznamenání). Já jsem bohužel skončil na tom, že impulzy z mých vodoměrů jazýčkovým kontaktem snímat nejde; jinak by to asi byla moje #1 volba: $10 za dva teploměry (na dva vodoměry), jednou za rok-dva nové baterky po 10 Kč, a nestarat se o to. :D
A pokud zrovna sháníte teploměry snadno integrovatelné do HA, tyhle doporučuju i tak, mám jich asi 10 a jsou super (po přeflashování na ATC_MiThermometer
firmware).
V HA je potřeba mít zapnuté integrace Bluetooth a BTHome a samozřejmě nějaký hardwarový Bluetooth adaptér (já mám ASUS BT-400).
Dosah: podle dosahu BLE signálu (až desítky metrů), lze zvýšit přidáním opakovačů (např. ESPHome Bluetooth Proxy, viz zde).
Více info:
- tweet @sairon a jeho počítadlo (+ ukázka integrace do HA)
- alternativní firmware pvvx/ATC_MiThermometer (+ dokumentace k připojení jazýčkového kontaktu)
- teploměry Xiaomi LYWSD03MMC na AliExpressu
Přes ZigBee: Aqara Door and Switch Sensor (cca $15)
Další poměrně populární varianta je impulzy předávat nějakým senzorem otevřených dveří/oken, akorát se ta informace nečte jako „dveře byly otevřeny“ ale jako „proteklo 10 litrů vody“. Opět vyžaduje nějaké menší bastlení, typicky odpájení magnetu a připájení vodičů od počítače impulzů.
Konkrétně dveřní senzor od Aqara (jinak spadá také pod Xiaomi) je pro tento účel skvělá volba, protože na jednu CR1632 baterku dokáže předat 870 tis. (!) impulzů, čímž dalece předčil jakýkoliv jiný senzor dveří. Alespoň tedy podle tohoto 4měsíčního srovnávacího testu.
Je to tak sice řešení dražší, než teploměr výše, nicméně výhodou je okamžitá doprava impulzů do HA, as they happen.
Alternativní a dost podobná varianta je úprava IKEA TRÅDFRI tlačítka (rovněž běží přes ZigBee), kde informaci „tlačítko bylo zmáčknuto“ je opět v překladu „proteklo 10 litrů vody“. Nevýhoda je, že třeba u IKEA tlačítka to údajně dost rychle baští baterku (viz odkaz níže). Potíž může být v tom, že pokud se impuls zastaví ve stavu HIGH („zmáčknuto“), tak může tlačítko třeba celou noc zůstat viset v probuzeném stavu a rychle se tak vyšťaví. Vzhledem k tomu, že IKEA tlačítko není o tolik levnější (250 Kč), asi bych volil raději Aqaru.
Dosah: podle dosahu ZigBee sítě.
Více info:
- Aqara Door & Window Sensor ($15)
- IKEA TRÅDFRI Rychlý vypínač (249 Kč)
- s AQARA Window & Door Sensor: Návod na měření spotřeby energií (facebook)
- s IKEA TRÅDFRI tlačítkem: Jak změřit spotřebu vody v domácnosti (tatageek.cz)
Předbastlená řešení
Tohle už tady jen zmiňuju, protože jsem na to taky narazil. Cenově je to někde mezi zbastleným řešením za $10 a hotovým impulzním modulem (viz výše).
Jsou to většinou taková předbastlená řešení která, různě kombinují výše zmíněné možnosti 1) čtení impulzů a 2) jejich odesílání někam ke zpracování.
Příklady:
- Řešení Smart Gateways Water Meter (asi i s gateway, tedy jak pro snímání, tak odesílání impulzů).
- Moduly pro snímání impulzů: Impulzní moduly MIKROMARZ – různá řešení pro různé vodoměry.
Problém #3: Zpracování dat o impulzech v Home Assistantu
Závěrečný úkol je v Home Assistant tato impulzová data zpracovat. To je o nadefinování toho, že jeden impulz značí odběr 1 nebo 10L vody, že 1000 l vody mě stojí 87 korun, že výchozí stav vodoměru je 258,874 m3 (abychom v dashboardu měli stejný údaj jako na vodoměru – pro kontrolu), že po přečtení každého impulzu zvýšíme počet impulzů v pomocné entitě apod.
V okamžiku, kdy se správně odečítají impulzy (tzn. nespíná se nic navíc, ani nic nevypadává) a správně se odesílají do HA, už je tohle taková odpočinkovější činnost, alespoň teda pro mě. :D
Další zdroje:
- integrace Utility Meter