Home Assistant seriál s Jakubem: Díl 4: Termostatická hlavice Danfoss Ally a teplotní senzor Xiaomi
Úvod
V dnešním díle se podíváme na chytrý termostat Danfoss Ally a k němu si rovnou přidáme i senzor teploty a vlhkosti Xiaomi Mi Thermometer. Termostat je o něco dražší a na trhu najdete i mnohem levnější varianty, nicméně zkoušel jsem i levné termostaty od Tuya a nebylo to ono. Reagovaly pomalu, někdy topily i 2 hodiny po překročení teploty na senzoru a občas se nechtěly ani úplně uzavřít. Ve výsledku s nimi bylo více zlosti, než užitku.

Zkušenosti
Danfoss Ally používám cca 3 měsíce a (zatím) vše funguje jak má. Nastavení je trochu složitější, ale dnes si všechno vysvětlíme. Termostat vám bude fungovat i bez externího senzoru teploty, ale výsledek pak není tak dobrý. Integrovaný senzor teploty je velmi blízko radiátoru a tudíž bývá dost nepřesný, částečně se to dá vyřešit offsetem, ale externí senzor je externí senzor.
Senzorů teploty jsem vyzkoušel několik. Jak Zigbee, tak WiFi varianta skýtá pár nevýhod, které jsou obzvášť pro regulaci teploty v místnosti nepříjemné. Obě dvě varianty mají poměrně vysokou spotřebu energie a neodesílají data moc často. My potřebujeme zařízení, které odesílá data často a spotřebuje co nejméně energie.
Xiaomi Mi Thermometer využívá Bluetooth a umí odesílat data jakkoliv si nastavíte (já je posílám každou minutu). Pomocí automatizace pak data pošlete přímo do hlavice, která dle toho topí/netopí. Jedinou nevýhodou je, že pokud máte velký dům nebo bude senzor moc daleko od koordinátora (dongle), musíte si rozšířit Bluetooth pokrytí např. použitím Bluetooth proxy na desce ESP. To už je trochu složitější a povíme si o tom v některém z dalších dílů. ESPčko rovnou využijeme na senzor CO2 nebo jako radar (senzor přítomnosti).
Co se týče výdrže baterie, tak termostat má po třech měsících 80 % baterie a senzor teploty 74 %, takže baterie vydrží cca rok.
Co budeme potřebovat
- termostatickou hlavici Danfoss Ally
- senzor teploty a vlhkosti Xiaomi Mi Thermometer (volitelné)
- počítač nebo notebook s Bluetooth (volitelné)
- nainstalovaný HA a zigbee2mqtt z předchozích dílů
Před nákupem hlavice si ověřte, zda je kompatibilní s Vaším radiátorem, resp. závitem. Seznam podporovaných závitů najdete na stránkách výrobce v datasheetu.
Xiaomi Mi Thermometer
Připojení k senzoru
Nejdříve si do HA přidáme senzor teploty a vlhkosti. Pokud nechcete používat externí senzor, můžete tuto část vesele přeskočit a rovnou si přidat a nastavit hlavici.
Do senzoru nejprve vložíme CR2032 baterii a chvilku počkáme. V našem případě využijeme alternativní firmware, který nám odemkne další nastavení a prodlouží výdrž baterie. Otevřeme si tedy tuto stránku a klepneme na Connect. Měla by se nám objevit nabídka níže, v seznamu najdeme zařízení, které bude začínat na písmena LYWS a klepneme na Spárovat. Ne vždy se připojení povede na první pokus, pokud se vám nebude dařit zkuste to vícekrát, popř. na chvilku vyjměte baterii ze senzoru. Někdy může pomoci i jiný prohlížeč.


Vybrání senzoru
Aktivace a flash
Po úspěšném připojení se vám zobrazí nabídka níže. Nejdříve klepneme na Do Activation, chvilku počkáme a poté v horní části vybereme Custom Firmware, v mém případě verzi 4.6_ATC_v46.bin. Verze se může lišit dle toho, kdy čtete tento článek :). A poté klepneme na Start Flashing.

Flash alternativního firmware
Flash trvá pár sekund, po jeho dokončení se senzor restartuje a musíme se k němu znovu připojit. Postupovat budeme úplně stejně jako při prvním připojení, akorát budeme hledat zařízení, které se jmenuje ATC_.

Konfigurace
Po úspěšném připojení by se nám měla zobrazit sekce Configuration, pokud ne, tak klepneme na Get Config. Senzor můžete víceméně nastavit stejně jako já, tj. aby využíval BTHome v2 protokol a posílal data každých 60 sekund. Dále jsem si nastavil, aby se na displeji zobrazovaly informace o baterii a snížil výkon na -0.14dbm. Po nastavení všech hodnot nezapomeňte klepnout na Send Config, aby se vám změny uložily.

Konfigurace senzoru, část. 1

Konfigurace senzoru, část. 2
Poslední, co budeme potřebovat, je BindKey, který použijeme pro zabezpečenou komunikaci mezi senzorem a HA. Klepneme na Get BindKey, kód si zkopírujeme a uložíme např. do poznámkového bloku, budeme ho potřebovat za chvilku.
Přidání senzoru do HA
Na našem HA serveru klepneme na Settings->Devices a v levém horním rohu by se nám mělo objevit nové zařízení BTHome. Pokud ho tam nevidíme, je nutno nějakou dobu počkat, někdy i restartovat HA server.

Přidání senzoru do HA
Klepneme na Configure a objeví se nám nabídka, v které vyplníme již dříve zkopírovaný BindKey a potvrdíme. Vybereme BTHome v sekci Configured a měli bychom tam vidět námi přidaný senzor (já tam mám nyní už dva). Klepnutím na tři tečky vpravo a Rename si můžeme senzor pojmenovat trochu smysluplnějším názvem, než je jeho MAC adresa :).

Zobrazení, přejmenování senzoru

Hotový a přidaný senzor v HA
Senzor teď můžeme umístit na místo, v kterém chceme měřit teplotu a vrhneme se na přidání termostatické hlavice Danfoss.
Danfoss Ally
Instalace na radiátor
Z radiátoru nejprve sundáme naši starou hlavici a dle typu závitu našeho radiátoru zvolíme vhodný adaptér. Adaptér našroubujeme na radiátor, do hlavice vložíme baterie a ujistíme se, že na displeji svítí „M“. Pokud ne, tak podržíme na 5 sekund tlačítko nad displejem. Hlavici našroubujeme na adaptér a šroubujeme do té doby, než se nám hlavice v závitu protočí a cvakne. Dalším otáčením si nastavíme, kterým směrem bude mířit displej. Po instalaci na 5 sekund podržíme tlačítko nad displejem a měli bychom slyšet zvuk motoru, hlavice se zkalibruje a máme skoro hotovo.
Případně koukněte na instalační video přímo od Danfossu.
Přidání do zigbee2mqtt
Nyní konečně využijeme náš zigbee2mqtt addon a přidáme si do něj naše první zigbee zařízení. V levém menu vybereme zigbee2mqtt (pokud ho tam nemáme, tak Settings -> Addons -> Zigbee2MQTT -> Open WEB UI). Uprostřed nahoře klepneme na Povolit připojení (Vše), na hlavici krátce podržíme tlačítko nad displejem, na displeji by se nám měla rozblikat anténka a za pár sekund by se nám mělo zařízení objevit v zigbee2mqtt. Název zařízení bude ve tvaru 0x0 …, klepneme na název a dole vybereme modrou tužku a zařízení si rozumně pojmenujeme. V mém případně se jmenuje Bedroom Thermostat – Danfoss Ally.

Termostat v Zigbee 2 mqtt
Přesuneme se do záložky Vystavuje a do hlavice nastavíme vše potřebné. Nebudu zde vysvětlovat každou položku zvlášť, všechny informace najdete zde (anglicky). Na obrázcích níže můžete vidět jak jsem hlavici nastavil já.
Důležité položky
Důležité položky, které doporučuji nastavit takto:
Programming operation mode = setpoint
Radiator covered = true (využíváte externí senzor teploty), false (nevyužíváte externí senzor teploty)
Algorithm scale factor = 1
Load balancing enable = disable (v místnosti je pouze jeden radiátor s Danfoss Ally hlavicí), enable (v místnosti je více radiátorů s Danfoss Ally hlavicí)
Adaptation run settings = enable
Adaptation run control = intiate_adaption
Konfigurace

Konfigurace hlavice, část. 1

Konfigurace hlavice, část. 2

Konfigurace hlavice, část. 3

Konfigurace hlavice, část. 4

Konfigurace hlavice, část. 5
Adaptace
Jakmile tyto položky nastavíte, do pár minut (může to trvat i déle) by se měl změnit stav Adaptation run status na In Progress. Hlavici je ideální nechat několik hodin v klidu a nic na ní nenastavovat. Neděste se, že bude topení občas topit, hlavice se adaptuje a různě se zapíná a vypíná. Po úspěšné adaptaci se stav změní na Found. Občas je nutné vyvolat adaptaci znovu, tj. klepnout na cancel_adaptation, pár minut počkat a přepnout znovu na initiate_adaption.
Vizualizace a krátce o dashboardech
Pro případné manuální ovládání a vizualizaci používám Better Thermostat a Better Thermostat UI, který bohužel není dostupný jako klasická integrace, ale musí se instalovat přes HACS (Home Assistant Community Store). Jeho instalace vyžaduje SSH přístup do HA a pár příkazů a je spíše pro pokročilejší uživatele.
Pro začátek nám postačí základní karta Thermostat, kterou si můžeme přidat na dashboard. Nejdříve si ale řekneme, co je to vlastně dashboard. Dashboard je alfou a omegou celého HA UI. Můžete si jich vytvořit libovolné množství a přidávat si do nich libovolné entity. Já osobně mám hlavní dashboard rozdělen na jednotlivé místnosti, tj. každá místnost má svoji stránku, ale fantazii se meze nekladou.
Níže je ukázka části dashboardu pro ložnici:

Dashboard ložnice
Nejprve si tedy vytvoříme nový dashboard, tj. přesuneme se do Settings -> Dashboards -> Add Dashboard -> New dashboard from scratch. Vyplníme Title, pokud chceme tak můžeme zvolit nějakou ikonu, ujistíme se, že máme zaškrtnuto Show in sidebar.

Přidání dashboardu
Klepneme na Create a v levém menu se nám objeví položka s název Thermostat. Klepneme na ni, v pravém horním rohu klepneme na ikonku tužky a pak v pravém spodním rohu klepneme na Add Card.
V další obrazovce si můžeme kartu pojmenovat, případně přidat módy heat a off přes Add Feature -> Climate HVAC modes. Klepnutím na Save se nám karta přidá na dashboard a pomocí +/- si můžeme nastavit cílovou teplotu, kterou chceme v místnosti udržovat.

Přidání karty Thermostat

Konfigurace karty Thermostat
Odesílání teploty ze senzoru do hlavice
Pro odesílání teploty ze senzoru do hlavice využijeme předpřipravený blueprint od uživatele bnapalm a tím si ušetříme kus práce.
Pro import blueprintu se přesuneme do Settings -> Automations & Scenes -> Blueprints -> Import Blueprint. Do Blueprint address vyplníme:
https://gist.github.com/bnapalm/eab265100029aa7f035ad29ef89708df

rt blueprintu
Nyní si vytvoříme Timer, kterým se bude spouštět automatizace. Přesuneme se do Settings -> Devices & Services -> Helpers -> Create helper. Vybereme Timer, vyplníme Name a klepneme na Create.

Vytvoření timeru
Nyní se vrátíme zpět do Automations & Scenes -> Blueprints, klepneme na náš blueprint a vyplníme tři políčka – v prvním naši hlavici, v druhém náš externí senzor teploty a ve třetím Timer, který jsme vytvořili v předchozím kroku.

Přidání blueprintu
Pro kontrolu se podíváme do Settings -> Devices & services -> Entities a do vyhledávacího políčka zadáme External measured room sensor. Klepneme na vyhledanou entitu a zkontrolujeme, že má entita správně nastavenou hodnotu z externího senzoru teploty. V závislosti na tom, jestli používáte Radiator covered: true a nebo false se bude lišit čas, za jak dlouho se hodnota do entity přepíše, pokud je hodnota prázdná, tak nezoufejte a chvíli počkejte.

Entita – External measured room sensor
Automatizace
Pro regulaci teploty používám několik podmínek a automatizace pro všechny hlavice je poměrně dlouhá a složitá a tento díl už je i tak dost dlouhý. V dalším díle si ukážeme instalaci HACS, Better Thermostatu a podíváme se i podrobněji na automatizace a jak je vytvářet. Zde se fantazii meze opravdu nekladou, já osobně zapínám/vypínám topení dle toho jaká je teplota v místnosti, zda je/není někdo doma (rozlišuji i zda jsem doma já nebo manželka) a dále dle toho zda je den nebo noc.
Závěr
Dnešní článek byl trochu delší, ale odvedli jsme kus práce. Přidali jsme si integraci BTHome, flashnuli a nastavili si senzor teploty a vlhkosti, oživili jsme naše první zigbee zařízení a můžeme vesele topit :).
Regulaci teploty zdar!
Super clanek, diky za nej.
Existuje nejaky „vypinac“ primo na kotel? Kdyz ve vsech trech mistnostech budou termohlavice vypnuty, tak at se vypne i kotel celkove…
jj určitě by šlo využít sílu automatizací a fantazii se meze nekladou. Takhle narychlo z hlavy mě napadá mít automatizaci, kde se budou kontrolovat stavy na hlavici (např. entita Running State, ale dá se využít určitě i jiná) a pokud bude na všechn hlavicích hodnota idle, tak se vypne i kotel 🙂
Článek dobrý. Pozor na označení- termostat je snímač, ne akční člen (zde termostatická hlavice). Takže nadpis je matoucí.
Pravda 🙂 Opraveno, díky!
Ahoj, mam dva senzory jeden ma starší firmware ten funguje podľa návodu super, ale nastal problém pri snahe s druhým senzorom. Tam je novší firmware a hlási to tuto chybu (!) Verzia: 2.1.1_0159 dočasne nie je podporovaná (!) keď dám pripojiť senzor. Nevieš mi poradiť ako to obísť? Ďakujem.
Ahoj, omlouvám se za pozdní reakci. Jediná možnost, jak je flashnout na starý fw. (alespoň co jsem našel) je senzor rozebrat a flashnout přes UART převodník.
Více zde: https://github.com/devbis/z03mmc/issues/31
Dobrý den,
máte zde super články.
Právě momentálně řeším provoz Zigbee radiatorových hlavic „https://www.zigbee2mqtt.io/devices/TS0601_thermostat.html#tuya-ts0601_thermostat“ kde je momentálně používám přes App „Smartlife“ kde je součástí i spínač který řídí hlavice a tím spínají plynový kotel. Takto mám 3 hlavice a další 2 začínám implementovat do HA Z2M (zatím zkouším ) a jde mi o to aby byl dostupný případně Schedule plán, který se dá přímo v HA do hlavice nastavit (samozřejmě dle potřeby upravit teplotu ručně ) a při akci že hlavice topí sepnoout spínač co spustí topení kotle. SAmozřejmě jich bude 5 tudíž když jedna přestane topit další topí tak musí být spínač stále sepnutý. Spínač mám vyrobený WemoD1mini rele . Můžete toto nějak v dalším článku se pokusit rozepsat případně mi poradit na můj email? V HA jsem spíše zařátečník.
Děkuji Přikryl
Dobrý den, díky jsem rád, že se články líbí. Tyto hlavice jsem taky nějakou dobu používal, ale bohužel si dost dělaly co chtěly. Prakticky vždy místnost přetopily a někdy jim trvalo i hodinu, než začaly topit, i když teplota na externím teploměru byla dávno pod hranicí, kdy měly sepnout. Jedna mi ještě zbyla v koupelně, ale ta moc práce nemá, mám tam tlačítko které když se stiskne, tak se na hlavici nastaví maximální teplota na 30 minut a pak se zase vypne (dobré na sušení ručníků :)).
Schedule plán jde u těchto hlavic nastavit přímo v zigbee2mqtt a zůstane v nich uložený, i když HA nebude fungovat.
Automatizace pro sepnutí spínače kotle bude trochu horší. Hlavice nemá žádnou entitu, která by řekla, zda hlavice topí a nebo netopí, neumí ani pozici ventilu podle které by to šlo poznat. Takže jedině mít externí senzor teploty (ten bych stejně doporučoval v každé místnosti) a napsat si jednoduchou automatizaci, kde bude všech 5 senzorů a podmínka, že pokud jeden překročí určitou teplotu, tak se sepne spínač na kotel.
Zdravím Jakube a díky za Vaše články. Dovolím se zeptat, mám teď nově 1 Danfoss eTRV0103 a peru se s nastavením v HA. Mám nastavené, že se (vše přes Zigbee) ptá každých 5 minut externího senzoru (Sonoff), jaká je teplota a pokud je menší než x, měla by otevřít hlavici na režim vytápění. Krásně to funguje u hlavic Sonoff, zavírají a otevírají bez chyby. Pouze u Danfoss se nic nestane, hlavice je při nízké teplotě na čidle pořád v režimu vytápění, ale „nečinná“ a netopí. Když udělám obrácený postup, t.zn. teplota dosáhne na externím čidlu požadované výše, režim vytápění zůstane, ale hlavice přejde do režimu „nečinná“ a netopí to. Do teďka mi není jasný rozdíl mezi režimy vytápění on/off a režimem činný/nečinný. Možná tím jsou mé problémy dané. Kdybyste měl náladu a čas na radu… Moc díky a pěkný den. Standa
Zdravím, aby fungovalo externí čidlo teploty, tak v hlavici musí být nastaveno „Radiator covered = true“. Dále zkontrolovat:
Mounted mode control = false
Heat available = true
+ sledovat „External measured room sensor“. Tato hodnota se musí aktualizovat minimálně každých 5m přes externí script.
Dobrý deň,
potreboval by som vyriešiť kúrenie v rodinnom dome s plynovým kotlom+11 radiátorov, 2 podlazia + suterén. Začal som so Sonoff zigbee bridge, 2x Sonoff hlavicami TVRBZ a bezpotenciálovým relé SonOff na spínanie kotla. Ak niektorá hlavica začala kúrit relé zoplo. Regulácia chodila divne. Potom som sa dočítal, že Sonoff aplikácia ovláda hlavice len ON/OFF.
Potom som pred pár dňami našiel vaše članky, sú veľmi dobre napísané.
Tak som na PI4 rozchodil HA + SonOff Dongle Plus a MQTT a Z2M a pripojil hlavicu SonOff k HA. MQTT som musel pridať aj do HA inak hlavicu HA nevidelo. Ale zatiaľ som použil len entitu Thermostat. Zistil som, že hlavica Sonoff má v skutočnosti oveľa viac parametrov a dá sa používať aj proporcionálne. Ale oproti hlavici Damfoss ALLY sa mi zdá, že je to detská hračka. Samozrejme dokázala by to isté ako Damfoss ale niekto by na to musel napísať soft. Hardwarove sa zdá byť kvalitná a je tichá.
Damfoss ALLY sa predáva aj ako hotový set hlavíc, zigbee bridge a relé pre kotol.
Chcel by som vás poprosiť o názor. Ak urobím podobnú zostavu s HA + Sonoff Dongle, s Damfoss hlavicami a nejakým bezpoteciálovým smart relé pre kotol, dosiahmem porovnatelné vlastnosti regulacie teploty pomocou aplikácie „Better Thermostat“ ako so zostavou Damfoss, bez nejakého zložitého programovania? Neviem, či o regulácii v zostave Damfoss rozhodujú iba hlavice alebo je nejaká inteligencia aj v Zigbee bridge alebo v elektronike relé.
S pozdravom
Štefan Tomkuljak
Moc děkuji a jsem rád, že se Vám články líbí. O regulaci se stará pouze hlavice, v případě použití Better Thermostat je tam volba AI, kdy by se doplněk měl postupně „učit“ a přizpůsobovat se. Nějakou dobu jsem to testoval, ale v mém případě mi lépe fungovala volba bez AI a vlastní automatizace.
Rozdělil bych to takto:
Profi řešení – Modbus a aktuátor na každém radiátoru (k tomu je ale potřeba mít natažené kabely ke každému radiátoru, takže to je nejlepší dělat při stavbě domu/rekonstrukci
Vyšší třída – hlavice Shelly Blu TRV – má o tom zatím jen něco načteno, zatím jsem jí netestoval, ale obecně jsou Shelly produkty dost kvalitní
Střední třída – Danfoss Ally
Lowcost – Tuya TRV, Sonoff TRV atd.
Ve vašem případě a při takto velkém počtu radiátorů bych osobně šel první variantou, ale chápu, že nemusí být možné natahat kabely pro sériovou komunikaci a napájení k jednotlivým radiátorům.
Dobrý deň,
integrovali ste hlavice Danfoss Ally do Better thermostatu. Má Better thermostat takú istú kvalitu regulacie ako originálna Danfoss Ally aplikácia? Nemám skúsenosti akú čast regulácie robí samotná hlavica a akú čast aplikácia. Rozhodujem sa pre reguláciu plynového kotla v dome, či kúpiť celú zostavu Danfoss Ally alebo len hlavice a používať homeassistent. Nemáte náhodou skúsenosti, či sa dá Danfoss Ally Zigbee relé pre spínanie kotla pripojiť do Homeasistenta? Relé by spínalo kotol, ak by niektorá hlavica požiadala o kúrenie alebo napr. by pretok na hlavici prekročil 5%.
Nemáte náhodou skúsenosti z hlavicou Sonoff TRVBZ. Veľa ľudí ju vychvaľuje ale podľa toho, čo som si prečítal, tak zatiaľ hlavica nedosahuje zdaleka úroveň Danfoss Ally. Ale možno sa postupne soft zlepší.
Dobrý den, bohužel porovnání s originálním aplikací nemám, ale osobně bych předpokládal, že originální aplikace bude lepší než Better Thermostat. Nejlepší kvality dosáhnete tím, že si napíšete vlastní automatizace a nebude spoléhat na AI (ať už v Better Thermostat nebo v hlavici jako takové). Dle typu radiátoru se dá např. napsat automatizace, která Vám bude nastavovat pi_heating_demand dle teploty. Pokud např. víte, že radiátor zůstane horký ještě dlouho po vypnutí, tak bych to nastavil tak, že pokud teplota klesne pod určitou úroveň, nastaví se pi_heating_demand třeba na 50% a pak v nějakém cyklu můžete kontrolovat jak rychle teplota stoupá a pokud se přiblížíte k cílové teplotě např. o 1,5°C, tak se opět nastaví nula a radiátor už to vyhřeje ze zbytkového tepla. Bude to ale na podrobnější testování a zkoušení.
Co se týče Sonoff, tak s jejich hlavicemi nemám žádnou zkušenost, ale osobně bych nešel do žádné, kde se nedá přímo nastavit poloha ventilu, to Vám umožní největší volnost v ovládání topení.
Co se týče relé, tak bych ho spínal dle teploty, takže bych si napsal automatizaci, která přepne relé v případě, že na nějakém senzoru klesne teplota pod požadovanou úroveň a je tedy potřeba topení a podle senzoru teplotu bych i řídil jednotlivé hlavice.
Dobry den,
mozetete mi prosim poradit, je mozne nacitat stav pripojenia na zigbee hlavice Damfoss ALLY a silu signalu zigbee na hlavici.
Som zaciatocnik v HA.
Ako mozem nacitat do automatizacie stav:
„pi_heating_demand“: 3 a „running_state“: „idle“.
S pozdravom
Stefan Tomkuljak
Dobrý den,
do pi_heating_demand se dá pouze zapisovat, hodnotu nelze číst, viz. dokumentace:
pi_heating_demand: Position of the valve (= demanded heat) where 0% is fully closed and 100% is fully open. To control publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {„pi_heating_demand“: VALUE} where VALUE is the % between 0 and 100. Reading (/get) this attribute is not possible.
To samé platí i pro running_state:
running_state: The current running state. Possible values are: idle, heat. Reading (/get) this attribute is not possible
Zdravím,
díky za parádní článek! Mám 4 hlavice. 2 jsou v jednom pokoji a pak 2 ve dvou dalších pokojích. Stačí mi na aktializaci externích čidel jeden timer, nebo musím pro každou hlavici udělat vlastní timer.
Honza
Zdravím, moc díky. Teoreticky by stačil jeden, jestli nad tím dobře přemýšlím, ale já používám pro každou hlavici vlastní. Lépe se pak dohledává jakýkoliv problém 🙂