🎙 Poslední aktualizace článku 26.1.2020. Pokud najdete nějaké rozdíly v aktuálním stavu, dejte vědět v komentářích, díky.
Budu vycházet z toho jak je automatizace pojatá v Home Assistantovi, jelikož se kolem něj točí i celý můj blog, ale věřím, že to bude možné aplikovat i v mnohem obecnější rovině automatizace, jako jedná z částí chytré domácnosti, neboli Smarthome.
Troufám si odhadnout, že automatizace je a bude jedním z největším článků skutečného přínosu chytré domácnosti a může nám přinést jak úsporu času a peněz, tak také kvalitnějšího a spokojenějšího života ve vaší domácnosti.
Podíváme se nejprve na základní pojmy a pak si na modelovém příkladu ukážeme konkrétní řešení ve dvou systémech – pomocí automatizací Home Assistanta a pomocí workflow v Red-Node.
Tyhle dva systémy jsem vybral záměrně, jelikož je to ukázkový příklad úplně jiných způsobů. Detailnější informace si k nim pak představíme v navazujících článcích později.
Základní kameny
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-26.png)
Automatizace je (zatím stále ještě, v budoucnosti může být částečně nebo úplně nahrazena určitou formou AI) definice, kdy říkáme centru a nebo jednotlivých prvkům chytré domácnosti jak mají zareagovat (např. zapni světlo v místnosti) – 🚀 AKCE – na určitou událost (např. někdo přišel domů) či změnu měřené veličiny (např. teplota v místnosti přesáhla určitou mez) – 🧨 SPOUŠTĚČE.
Zároveň můžeme, ale taky nemusíme, mezi spouštěč a akci přidat omezující 👓PODMÍNKY na aktuální stav jiných komponent chytré domácnosti (např. jen pokud nesvítí žádné světlo v místnosti?) či dalších stavů okolo nás (např. je už po západu slunce?).
Častým problémem na začátku bývá představit si rozdíl mezi spouštěčem a podmínkou a pravdou je, že hranice mezi těmito dvěma pojmy je velice tenká a často bývají mixovány.
Pro zjednodušení si můžeme představit 🧨 SPOUŠTĚČ jako změnu mezi dvěma stavy – něco se mění z jedné hodnoty na druhé – kdežto 👓 PODMÍNKY obsahují pouze jednu hodnotu a to aktuální stav v době spuštění spouštěče.
Příklad modelové situace
💡 Mějme příklad situace, kdy chceme aby se nám po příchodu domů zapnuly automaticky všechny malé světla v pokoji, pokud je po západu slunce.
Pokud se zamyslíme máme dvě možnosti, které nám mohou tuhle situaci vyřešit.
1. varianta automatizace
V první možnosti budeme sledovat změny stavu slunce a jakmile dojde k západu slunce tak zkontrolujeme stav zda jsme doma – 🧨 spouštěč je západ slunce a 👓 podmínka stav zda jsme doma či nikoliv.
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-27.png)
2. varianta automatizace
V možnosti druhé si naopak budeme všímat změny stavu naší osoby, zda jsme doma či nikoliv a jakmile se stav změní, že jsme doma pak zkontrolujeme jestli je po západu slunce – 🧨 spouštěč je stav naší osoby a 👓 podmínkou západ slunce.
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-28.png)
Vyhodnocení variant z pohledu akce
A nyní pokud přijdeme po západu slunce 2x domů – během večera si někam odskočíme – pak:
- v prvním případě se 🚀 akce zapnutí světel v pokoji provede pouze jednou
- v druhém případě se 🚀 akce zapnutí světel provede 2x, jelikož stav naší osoby se změní právě 2x.
🔔 Vidíte ten rozdíl? Proto je velmi užitečné se zamyslet nad tím co bude pro nás spouštěč a co naopak podmínky, jelikož konečné reakce mohou být jiné. Zároveň nemůžeme jednoznačně říct, že jedna z varianta je špatně – záleží jen na tom čeho chceme docílit.
A nyní abychom to neměli tak teoretické, pojďme se zatím jen pro představu podívat jak by takové automatizace vypadaly ve dvou reálných řešeních.
Řešení pomocí HomeAssistanta
Aby to nebylo úplně jednoduché v HomeAssisstantovi máme hned dvě možnosti jak definovat automatizaci. Buď použijeme UI, které je stále v rané fázi a nebo použijeme YAML konfiguraci. Já pro tento případ použiji variantu druhou a nastavení přes UI si ukážeme na druhém řešení pomocí Node-Red.
1. varianta – spouštěčem je změna stavu slunce
id: lampicky_po_zapadu
alias: Zapnout lampičky po západu slunce pokud je Pepa doma
trigger:
- platform: sun
event: sunset
condition:
- condition: state
entity_id: device_tracker.josef_novak
state: 'home'
action:
- service: light.turn_on
data:
entity_id:
- light.myroom_small_lights
2. varianta – spouštěčem je změna stavu osoby
id: lampicky_po_prichodu_josef_novak
alias: Zapnout lampičky při příchodu Pepy pokud je po západu slunce
trigger:
- platform: state
entity_id: device_tracker.josef_novak
to: 'home'
condition:
- condition: sun
after: sunset
action:
- service: light.turn_on
data:
entity_id:
- light.myroom_small_lights
Jak můžete vidět kód je v obou případech hodně podobný a mění se pouze jednotlivé bloky, kde jednotlivé stavy použijeme.
Řešení pomocí Node-Red
O Node-Red jsem žádný článek ještě nenapsal, takže opravdu zatím jen pro představu. Pokusím se alespoň ve stručnosti – Node-Red je webové rozhraní pro definování workflow s téměř neomezenými možnostmi. Existuje i jako Hass.io addon, který obsahuje spousty užitečných prvků přímo pro HomeAssistanta.
V našem jednoduchém příkladu nám počet použitých prvků – tzv. uzlů – přesně odpovídá kombinaci – Spouštěč -> Podmínka -> Akce.
1. varianta – spouštěčem je změna stavu slunce
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-30.png)
Uzel Západ slunce
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-33.png)
2. varianta – spouštěčem je změna stavu osoby
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-29.png)
Uzel Příchod domů
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-31.png)
Uzel Zapni lampičky
![](http://i0.wp.com/blog.vyoralek.cz/wp-content/uploads/2020/01/image-32.png)
Jak jste mohli vidět definice automatizací nemusí být až tak složitá jak to možná někdy vypadá. Důležité je však vždy se na začátku zamyslet.
V dalších článcích se podíváme na detaily obou řešení a do budoucna bych rád přidal i možnost automatizace přímo na koncových zařízeních, tj. například s firmware Tasmota či ESPHome.
Pokud máte už nyní nějaké dotazy či náměty na další díly neváhejte se ozvat a můžete tak ovlivnit i o čem to vlastně celé nakonec bude 🙂 Věřím, že to může být příjemná změna oproti někdy poněkud nudné dokumentaci.
Dobrá práce !
Paráda!
Jsem zvědav kde se to bude vyvíjet. Do HA pronikám už dva roky a stále jsem někde na začátku.
Vynikající práce.
Chvíli jsem si hrál s Domoticz a teť jsem přešl na HA a ESPHome a stále si připadám, že nic neumím. 🙂
U yaml prikladu je prohozene ID a popis, takze to muze mast jak to funguje.
A u node-red je popis x trigger taky obracene.
Ondřeji díky moc za upozornění! Jsem se do toho koukám sám zamotal 🙂
Ještě k podmínce „po západu slunce“. Nejspíš v realitě chceme docílit toho, aby se lampičky rozsvítily po západu slunce, ale zároveň i druhý den ráno, pokud vstaneme před východem, to už vlastně tato podmínka neplatí nebo?
To bychom pak museli použít asi něco jako…
condition:
– condition: or
conditions:
– after: sunset
after_offset: -01:00:00
condition: sun
– before: sunrise
condition: sun
..Ale to jen vařím z vody. Ještě jsem to nezkoušel v reálu 🙂