Pomocníci
Nejdříve začneme pomocníky, protože se nimi setkáme i v dalších kapitolách. Pomocníci nám umožňují definovat vlastní ovládací prvky či pomocné nástroje pro tvorbu skriptů, automatizací nebo vlastních senzorů. Nastavují se v menu Nastavení → Zařízení a služby → Pomocníci → Vytvořit pomocníka. Na výběr máme ze 17 možných druhů a každý z nich má své specifické nastavení. Uvedu jen několik z nich, se kterými se pravděpodobně setkáme nejčastěji.
- Číslo vytvoří vstupní pole, do kterého můžeme zadat jakékoliv číslo, např. aktuální stav elektroměru.
- Text vytvoří vstupní textové pole pro uložení libovolného řetězce, podobně jako pomocník „Číslo“.
- Datum a/nebo čas vytvoří pole pro zadání data a/nebo času. Takový pomocník je pak možné použít v automatizaci pro spuštění úlohy v konkrétním čase. Výhodou je, že pro budoucí úpravy nemusíme upravovat automatizaci, ale jen hodnotu v pomocníkovi.
- Měřič vytvoří senzor, jehož vstup se bude na základě zadaného časového okna nulovat – např. každou hodinu, den, týden, měsíc apod. Typickým použitím je sledování spotřeby energie.
- Počítadlo vytvoří senzor dle zadaného minima, maxima a s krokem pro přičítání hodnoty. Použít jej můžeme např. pro počítání počtu průchodů.
- Přepínač nabývá hodnot zapnuto/vypnuto a jeho časté využití je právě v automatizacích, aby bylo možné zkontrolovat stav zařízení a nepouštět tak automatizace stále dokola. Tento pomocník se objeví v jedné z ukázkových automatizací.
- Skupina vytvoří skupinový senzor pro zvolené zařízení dle konkrétního účelu (roleta, světlo, vypínač apod.) a následně umožní ovládat všechna zařízení najednou. Vhodné pokud máme např. více světel na chodbě nebo více okenních rolet v jedné místnosti.
Na následujícím obrázku můžeme vidět konkrétní použití pomocníků přepínač, datum a čas, číslo, skupina a měřič, které jsou zobrazeny na kartě „Entity“.
Scény
Scény, jak název napovídá, umožňují připravit vlastní scénáře, co se má v jednom okamžiku provést, např. zatáhnout rolety v pokoji, rozsvítit ambientní světla a zapnout TV. Scény se nastavují v menu Nastavení → Automatizace a scény → Scény → Přidat scénu. Vytvořit scénu je jednoduché, vše se zadává do již připravených polí vizuálního editoru. Stačí tedy zadat název a vybrat požadovaná zařízení nebo entity z rozbalovacích polí. Zde je však jedna záludnost. Každé zařízení je potřeba předem uvést do stavu, v jakém se mají nacházet pro danou scénu nastavit, resp. je možné tento stav v okamžiku přidání entity/zařízení přednastavit. Po uložení scény pak potřeba všechna zařízení uvést do původního stavu. Uložení scény totiž námi nastavené vlastnosti zařízení nedeaktivuje. Osobně dávám přednost pro definici a následné spouštění posloupnosti spíše skriptům (viz další kapitola), kde je k dispozici více možností a není vyžadována interaktivita se zařízeními.
Automatizace
Automatizace jsou velice mocný nástroj a troufnu si říci, že jsou tím hlavním důvodem, proč chceme používat Home Assistant či podobný software. Nastavují se v menu Nastavení → Automatizace a scény → Automatizace → Vytvořit automatizaci. Standardně se otevře vizuální editor, který velice pomůže s nastavením jednotlivých kroků. Pro pokročilé uživatele nebo pro předání celého kódu automatizace další osobě je možné celé rozhraní přepnout do YAML kódu. To se provede kliknutím na tři svislé tečky a zvolením položky „Upravit v YAML“. My zatím zůstaneme u vizuálního editoru.
Automatizace stojí na definici tří voleb – spouštěč, podmínka a akce. Pro každou z nich je k dispozici velké množství možností, proto si v této kapitole projdeme jen ty, z mého pohledu, nepoužívanější. Na závěr si ukážeme i několik reálných příkladů pro případnou inspiraci.
Spouštěč neboli trigger popisuje událost, na kterou má automatizace reagovat. Jedná se o povinnou volbu a k dispozici je celkem 17 možných spouštěčů. Uvedu opět jen několik z nich, se kterými se pravděpodobně setkáme nejčastěji.
- Čas definuje pevný čas (nebo časový údaj z vytvořeného pomocníka), ve kterém se posloupnost akcí jednorázově spustí.
- Časový vzorec je vlastně obdoba linuxového CRONu, tj. definuje hodinu, minutu nebo sekundu, ve které/kterých se má událost spustit. Je zde možné definovat interval, tj. spuštění např. každých 5 minut. Oproti CRONu se zapisuje bez hvězdičky – „/5“
- Číselný stav definuje horní nebo spodní číselnou hodnotu pro zadanou entitu. Spustí se tedy např. v okamžiku, když klesne venkovní teplota pod 20 stupňů Celsia. Pro tento spouštěč je k dispozici ještě i volba „Po dobu“, která se zadává v hodinách, minutách nebo sekundách. Tato volba udává pevný čas, po který se číselný stav entity nesmí změnit, jinak nedojde k jeho spuštění. Toto typicky používám např. u sledování spotřeby pračky, neboť pokud je spotřeba menší než 5W po dobu dvou minut, pračka dokončila svoji práci. U tohoto spouštěče pozor na jednu záludnost. V některých případech se může stát, že nedojde ke spuštění, ačkoliv je vše nastaveno na první pohled správně. Tento spouštěč se totiž provede pouze za předpokladu, že předchozí stav nebyl v rozsahu prahové hodnoty. Konkrétně to tedy znamená, že pokud senzor teploty aktuálně udává 20 stupňů Celsia a do spouštěče nastavíme „menší než 25“, spouštěč se nespustí. senzor musí nejprve vrátit teplotu větší než 25 a poté se s klesající teplotou spouštěč aktivuje.
- Slunce spustí události při východu nebo západu slunce podle toho, jakou polohu domácnosti jsme zadali při instalaci Home Assistant. Je to tedy spouštěč vhodný např. pro otevírání a zavíraní okenních rolet či jiných akcí spojených s denní dobou. Spouštěč nabízí ještě volbu „Posun“, ve které můžeme definovat o kolik hodin, minut nebo sekund se má čas východu/západu slunce posunout dopředu nebo dozadu. Na základě sledování spouštění automatizací s tímto spouštěčem tento čas posouvám o 20–30 minut, tj. v případě západu slunce „+00:20:00“ a v případě východu slunce „-00:20:00“, aby to více odpovídalo reálnému stavu.
- Stav definuje hodnotu entity a spustí akce pokud ze změnil výchozí nebo cílový stav. Typicky se ale nepoužívá pro vyjádření číselných hodnot, k tomu je výše uvedený „číslený stav“. Konkrétní použití je např. pro sledování přítomnosti osob v blízkosti domova, tj. změna „Doma“ na „Pryč“ nebo opačně. I v tomto případě je zde možnost definovat volbu „Po dobu“, aby se eliminovali případné false-positive případy.
- Zařízení je spouštěč, který na základě vybraného zařízení automaticky nabídne všechny jeho dostupné události, tedy např. změnu stavu, zapnutí/vypnutí či další reakce. Na rozdíl od výše uvedených spouštěčů se zde nepracuje s konrétní entitou (např. teplota), ale s celým zařízením. Do jisté míry zjednodušuje, hlavně v začátcích, definici spouštěče a často si vystačíme právě s tímto spouštěčem.
Pro každý spouštěč je možné volitelně definovat i jeho ID, pomocí kterého je pak možné rozlišit jeho spouštění v podmínce. K tomu, aby bylo možné ID zadat je nutné v pravém horním rohu spouštěče kliknout na tři svislé tečky a zvolit „Upravit ID“. Pojmenování spouštěčů je vhodné pro případy, že v jedné automatizace potřebujeme definovat více spouštěčů a nebo chceme dvě podobné automatizace sloučit do jedné. Typickým scénářem může být např. právě otevírání a zavírání okenních rolet na základě času. Vytvoříme dva spouštěče, oba vhodně pojmenujeme a poté v definici podmínky vybereme pojmenování spouštěče, pro který se má akce provést.
Podmínka se vztahuje pro celou automatizaci a jedná se o nepovinnou volbu, protože ne vždy je užitečné mít podmínku definovanou globálně. Jednotlivé podmínky je pak možné definovat přímo v Akcích (v dalším odstavci). K dispozici je celkem 11 různých podmínek, opět uvedu jen ty nejčastější.
- A definuje standardní AND, tedy přítomnost dvou podmínek, kdy obě musí být splněné.
- Ne definuje negaci podmínky.
- Nebo definuje standardní OR, tedy přítomnost dvou podmínek, kdy musí být alespoň jedna z nich splněná.
- Čas, Číselný stav, Stav, Zařízení mají stejné použití jako v případě spouštěčů a může se zdát, že jde o duplicitní nastavení. Použití v podmínkách má smysl v případech, kdy potřebujeme definovat nějakou kombinaci. Typickým příkladem může být zatažení okenních rolet v 10:00, pokud je venkovní teplota větší než 20 stupňů Celsia.
- Spouštěč definuje pojmenování spouštěče (jeho ID, viz výše), pokud jich máme definováno více. Při globálním použití podmínek to ale nedává příliš smysl.
Akce provádí na základě definice spouštěče, případně podmínky, konkrétní posloupnost příkazů. Na výběr je celkem 15 různých akcí, ukážeme si ty nejpoužívanější.
- Čekání na uplynutí času definuje, jak název napovídá, zpoždění v hodinách, minutách nebo sekundách.
- Scéna spouští předem vytvořenou scénu.
- Zařízení podobně jako u spouštěče automaticky nabídne všechny dostupné události, které se mohou provést. Např. rozsvícení světla, zapnutí termostatu apod.
- Zavolat službu umožňuje spustit buď vlastní skripty a nebo připravené služby týkající se zařízení nebo samotného Home Assistanta. Např. provedení jakékokoliv akce zařízení, nastavení hodnoty pomocníka, spustění jiné automatizace, zaslání notifikace na mobilní zařízení, údržbu interní databáze apod. Seznam všech dostupnách služeb je k nalezení v menu Nástroje pro vývojáře → Služby.
- Když-pak definuje podmínku pro konkrétní akci, jedná se o klasickou konstrukci „IF-ELSE“
- Volby pak definuje více podmínek pro více akcí, jde o klasickou konstrukci „CASE“
Ke každé automatizaci je možné definovat v jakém běží režimu. Ten určuje, co se stane, pokud automatizace probíhá a je opakovaně spuštěna (např. z pohybového čidla). V pravém horním rohu stačí kliknout na tři svislé tečky a zvolit „Změnit režim“:
- Single režim je standardně použit s novou automatizací a udává, že souběžné spuštění nesmí proběhnout.
- Restart režim zajistí, že se zastaví původní běh automatizace a spustí se od začátku.
- Queued režim spustí automatizaci znovu až po dokončení předchozího běhu, jedná se tedy o klasickou implementaci fronty. Současně je možné definovat maximální počet takových následných spuštění. Standardní hodnota je 10.
- Parallel režim spustí automatizaci nezávisle/paralelně na současném běhu. Podobně jako u předchozího režimu, je možné definovat maximální počet souběžných spuštění.
Příklady automatizací
Připravil jsem několik ukázek automatizací, jak automatizace ve skutečnosti vypadají. Uvidíme, že to vlastně není tak složité, jak by to na první pohled vypadalo. Všechny tři níže uvedené vychází z mého reálného použití. Zápis je uveden v YAML kódu, takže stačí ve svém Home Asisstantu vytvořit novou automatizaci, přepnout do YAML a upravit názvy entit a zařízení dle svého nastavení.
1. Rozsvícení a zhasnutí světla (Philips Hue A60 bulb E27), když pohybový senzor (Philips Hue motion senzor) začne nebo přestane detekovat pohyb. Jsou definovány dva spouštěče (využívá se zde právě pojmenování pomocí ID). První spouštěč rozsvítí světlo na úroveň 10, pokud je aktuální světelnost menší než 8lx. Druhý spouštěč světlo zhasne. V této automatizaci je záměrně nastaven režim „restart“, aby se zajistilo spouštění automatizace i při opětovné detekci pohybu v průběhu již rozsvíceného světla. Doba, kdy je stále rozsvíceno, se tak vlastně prodlouží a vyhneme se nepříjemné situaci, kdy se pohybujeme okolo pohybového senzoru, to sice správně detekuje pohyb, ale světlo po uplynutí doby zhasne, protože se automatizace může spustit pouze jednou.
alias: "Pohybový sensor - chodba" description: >- Při detekci pohybu rozsvítí světlo, po uplynují occupancy time + 5sec světlo vypne. trigger: - type: motion platform: device device_id: 3a5b6c9cb5b4669c2b96fa893761f59b entity_id: binary_sensor.sensor_occupancy domain: binary_sensor id: pohyb - type: no_motion platform: device device_id: 3a5b6c9cb5b4669c2b96fa893761f59b entity_id: binary_sensor.sensor_occupancy domain: binary_sensor id: klid for: hours: 0 minutes: 0 seconds: 5 condition: [] action: - choose: - conditions: - condition: trigger id: pohyb - type: is_illuminance condition: device device_id: 3a5b6c9cb5b4669c2b96fa893761f59b entity_id: sensor.sensor_illuminance_lux domain: sensor below: 8 sequence: - type: turn_on device_id: 1a716d27aa79b4667579977f0a28c142 entity_id: light.svetlo domain: light brightness_pct: 10 - conditions: - condition: trigger id: klid sequence: - type: turn_off device_id: 1a716d27aa79b4667579977f0a28c142 entity_id: light.svetlo domain: light mode: restart
2. Ovládání rolet podle pevně zadaného času a venkovní teploty. Jsou definovány dva spouštěče. První spustí akci v 9:30 a zavře vybrané okenní rolety na 40 %, pokud je venkovní teplota větší než 20 stupňů Celsia. Druhý v 16:30 okenní rolety zcela otevře. V tomto případě není vhodné podmínku pro test venkovní teploty nastavit jako globální, protože by se pak s poklesem teploty odpoledne nemusely okenní rolety opět otevřít.
alias: "Rolety léto" description: V létě zavírá rolety dopoledne a odpoledne zase otevírá trigger: - platform: time at: "09:30:00" id: zatahnout - platform: time at: "16:30:00" id: roztahnout action: - choose: - conditions: - condition: trigger id: - zatahnout - condition: numeric_state entity_id: weather.openweathermap attribute: temperature above: 20 sequence: - service: cover.set_cover_position data: position: 40 target: entity_id: - cover.mistnost1 - cover.mistnost2 - choose: - conditions: - condition: trigger id: - roztahnout sequence: - service: cover.open_cover data: {} target: entity_id: - cover.mistnost1 - cover.mistnost2 mode: single
3. Notifikace o zapnutí a vypnutí pračky. Používá se zásuvka s měřením spotřeby (TuYa TS011F), do které je spotřebič trvale zapojen. Dále je vytvořený pomocník „přepínač“, který udržuje informaci, zdali je spotřebič spuštěn či nikoliv. Na základě předem zjištěné spotřebě konkrétního spotřebiče při zapnutém (více než 5W) nebo vypnutém (méně než 5W) stavu jsou opět definovány dva spouštěče. Při jejich aktivaci se zkontroluje, zdali je pomocník „Přepínač“ ve stavu „on“ nebo „off“ a na základě tohoto zjištění se pošle notifikace s vhodným textem.
alias: "Spotřebiče: notifikace o dokončení" description: Podle měření spotřeby pošle notifikaci o zapnutí a vypnutí trigger: - platform: numeric_state entity_id: sensor.zasuvka_pracka_power for: hours: 0 minutes: 2 seconds: 0 below: 5 id: pracka_end - platform: numeric_state entity_id: sensor.zasuvka_pracka_power above: 5 id: pracka_start for: hours: 0 minutes: 2 seconds: 0 condition: [] action: - if: - condition: trigger id: pracka_start - condition: state entity_id: input_boolean.zasuvka_pracka_stav state: "off" then: - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.zasuvka_pracka_stav - service: notify.mobile_app data: title: Spotřebiče message: Pračka - zapnutí. - if: - condition: trigger id: pracka_end - condition: state entity_id: input_boolean.zasuvka_pracka_stav state: "on" then: - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.zasuvka_pracka_susicka_stav - service: notify.mobile_app data: title: Spotřebiče message: Pračka - vypnutí. mode: single
Ladění
Nezmínil jsem ještě několik dalších podstatných možností či voleb. Každou automatizaci je možné po jejím vytvoření zakázat či povolit po kliknutí na „tři svislé tečky“ vpravo nahoře. Když automatizaci vložíme jako jakoukoliv jinou entitu přímo na dashboard, můžeme ji přepínačem také vypínat a zapínat. Je to jednoduší, než se proklikávat nastavením. Automatizaci můžeme samozřejmě spustit ručně, abychom ji mohli otestovat. Dokonce můžeme v rámci ladění spustit i jen dílčí část definovanou v akcích. Každá akce, podmínka i spouštěč mají pro každý svůj záznam také proklik na „tři svislé tečky“. Dílčí akci tak můžeme ručně spustit, ale také zakázat či povolit. Podmínku, a to i v rámci akcí pokud používáme „Když-pak“ nebo „Volby“, tímto způsobem můžeme otestovat a zjistit tak, zdali se opravdu má stát to, co očekáváme.
Konečně, pokud nám automatizace stále nefunguje a už nevíme kudy kam, klikneme vpravo nahoře na volbu „Trasy“. Ty slouží k podrobnějšímu ladění, kdy se dokážeme přesně podívat i zpět do historie, co se stalo nebo na čem se automatizace zastavila. Máme k dispozici jednoduchý vývojový diagram s jednotlivými kroky, časovou osu, stavy podmínek, ale také hodnoty proměnných apod.
Skripty
Skript je vlastně posloupnost akcí, kterou je možné následně použít kdekoliv nebo k jednorázovému spuštění. Výhodou je, že při použití voláme pouze jeden příkaz, což při složitějším použití vede k velkému zjednodušení. Ze sady skriptů můžeme dokonce vytvořit vlastní tlačítko volané z dashboardu Home Assistant. Skripty se vytváří v menu Nastavení → Automatizace a scény → Skripty → Přidat skript. Podobně jako v případě automatizací se otevře vizuální editor, ale je zde opět možnost přepnout do YAML editoru. Skripty nemají spouštěče ani podmínky, pouze posloupnost akcí. Zvolíme tedy pojmenování skriptu, které se automaticky použije i pro jeho označení. Dále můžeme zvolit ikonu, řežim a poté již definujeme požadované akce (resp. sekvence, abychom dodrželi správné názvosloví), opět zcela stejně jako u automatizací.
Pro ukázku jsem vytvořil dva skripty. Jeden rozsvítí dvě světla na úroveň 50, druhý je zhasne a oba mají navíc definovanou i ikonu. Současně nastavují pomocníka typu „přepínač“ input_boolean.svetla_dole_stav, kterého je potřeba definovat předem a bude nám signalizovat stav zapnutí nebo vypnutí. V další kapitole se k obou skriptům ještě vrátíme a vytvoříme z nich vlastní tlačítko.
alias: Světla dole on sequence: - service: light.turn_on data: brightness_pct: 50 target: entity_id: - light.svetlo_vstup - light.svetlo_predsin - service: input_boolean.turn_on data: {} target: entity_id: input_boolean.svetla_dole_stav mode: single icon: mdi:lightbulb
alias: Světla dole off sequence: - service: light.turn_off data: {} target: entity_id: - light.svetlo_vstup - light.svetlo_predsin - service: input_boolean.turn_off data: {} target: entity_id: input_boolean.svetla_dole_stav mode: single icon: mdi:lightbulb-off
Šablony pro vlastní senzory
V poslední kapitole se podíváme na trochu pokročilější možnosti, tím jsou šablony nebo-li tzv. „Templates“, tedy možnost vytvořit vlastní typy objektů. Typicky to mohou být různé senzory, které vrací výsledky dle zadaných definicí nebo třeba i virtuální žárovky, rolety, tlačítka apod., které ve skutečnosti spouští připravené vlastní skripty. Základem je porozumět právě tomu, jak se šablony používají. Jedná se vlastně o Jinja2 engine, takže se není nutné se učit něco zcela nového. Díky Jinja2 máme k dispozici různé matematické operátory, porovnávací funkce a samozřejmě i logické operátory. Drobnou vadou na kráse je fakt, že pro definici vlastních objektů není k dispozici žádný interaktivní editor. Vše je nutné ukládat přímo do konfiguračního souboru a následně provést znovu načtení konfigurace. Pro usnadnění je alespoň k dispozici v menu Nástroje pro vývojáře → Šablony formulář, ve kterém si můžeme jednotlivé konstrukce vyzkoušet a spustit.
Nejdříve se podíváme na základní konstrukce, jak pracovat s výstupy a mít možnost je modifikovat. Vše budeme zkoušet právě ve výše uvedeném formuláři.
Každý senzor vrací svůj základní stav v konstrukci „state“, případně další hodnoty ukládá do „attributes“. Konkrétní hodnoty každé entity můžeme prohlídnout v menu Nástroje pro vývojáře → Stavy. První ukázka vrátí aktuální hodnotu teploty senzoru teploty a vlhkosti (SONOFF SNZB-02) jako číselný typ float, druhá ukázka pak hodnotu atributu, který udává jednotku měření:
{{ states('sensor.sensor_loznice_temperature') | float }}
{{ state_attr('sensor.sensor_vt_loznice_temperature','unit_of_measurement') }}
Pro jednotlivé výstupy můžeme použít již zmíněné matematické operátory a tak si např. sečíst spotřeby z jednotlivých elektrickýh zásuvek:
{{ states('sensor.zasuvka_pracka_energy') | int + states('sensor.zasuvka_susicka_energy') | int + states('sensor.zasuvka_mycka_energy') | int }}
Výstupy můžeme uložit i do proměnných a dále s nimi pracovat:
{% set CENA = states('input_text.cena') | float %} {% set KURZ = states('input_text.kurz') | float %} {{- (CENA * KURZ) | round(2) -}}
A konečně to celé můžeme propojit i s podmínkou IF-ELSE:
{{ states('input_text.cena') | float }} {% if (states('input_text.cena') | float) > 20 %} cena je vyšší než 20 {% else %} cena je nižší než 20 {% endif %}
Vlastní senzory a tlačítko
Po lehkém úvodu do psaní šablon se podíváme, jak vytvořit jednoduchý senzor. Mějme konkrétní situaci – chytrý termostat k plynovému kotli měřící i teplotu v místnosti, kterou chceme zobrazovat na dashboardu. Jelikož jde o zařízení typu „climate“, jeho stavem je pouze informace, zdali je zapnuté topení či nikoliv. Teplota je uložena pouze v atributu. V úvodu jsem se zmiňoval, že veškeré vlastní senzory je nutné definovat přímo v konfiguraci, tj. v souboru configuration.yaml. Osobně doporučuji to kvůli přehlednosti zadávat pomocí direktivy „include“ do vlastních konfiguračních souborů. Do souboru „configuration.yaml“ přidáme další řádek s definicí „01_sensor.yaml“ a rovnou i „01_binary_sensor.yaml“ pro další ukázku.
sensor: !include 01_sensor.yaml binary_sensor: !include 01_binary_sensor.yaml
A editujeme soubor „01_sensor.yaml“ ve stejné adresářové struktuře. Definujeme platformu template, že se jedná o senzor a že se bude jmenovat „obyvaci_pokoj_temperature“. Parametr „friendly_name“ uvádá jeho uživatelský název, dále nastavíme měrnou jednotku, ikonu a konečně jeho výstupní hodnotu jako template.
- platform: template sensors: obyvaci_pokoj_temperature: friendly_name: 'Teplota obývací pokoj' unit_of_measurement: '°C' icon: mdi:thermometer value_template: "{{ state_attr('climate.obyvaci_pokoj', 'current_temperature') }}"
Aby se změny projevily, musíme postupovat následovně. V menu Nástroje pro správu → Konfigurace YAML klikneme na „Zkontrolovat konfiguraci“. Pokud je vše OK, pak klikneme ve formuláři „Nové načtení XML konfigurace“ na „Všechny konfigurace YAML“. V některých případech je však nutné provést restart celého Home Assistanta. Poté můžeme zkusit náš první vlastní senzor zobrazit jako entitu v dashboardu.
Definici šablony nemusíme použít jen pro hodnotu, ale můžeme kombinovat i pro ikonu. Níže uvedená ukázka vytvoří nový server, který vrací informaci o stavu vytápení a současně podle tohoto výstupu nastavuje vhodnou ikonu:
- platform: template sensors: vytapeni_domu_stav: friendly_name: "Vytápění domu" value_template: "{{ state_attr('climate.obyvaci_pokoj', 'hvac_action') }}" icon_template: >- {% if is_state('sensor.vytapeni_domu_stav',"idle") %} mdi:power-on {% elif is_state('sensor.vytapeni_domu_Stav',"heating") %} mdi:fire {% else %} mdi:octagon {% endif %}
Vlastní senzory mají ještě jednu výhodu, také ukládají svojí historii. Konkrétně u výše uvedeného senzoru se můžeme podívat i do historie, kdy vytápění běželo a kdy ne.
Podobným způsobem můžeme definovat i binární senzory. To jsou senzory, které typicky vrací TRUE nebo FALSE dle zadané podmínky a použijeme je jako spouštěče v automatizacích. Editujeme tedy „01_binary_sensor.yaml“ ve stejné adresářové struktuře a definujeme jako v minulých případech platformu, typ, název. Podmínku uvedeme přímo do „value_template“ tak, jako se jednalo o běžný výstup. Tedy žádné kontrukce pro „IF-ELSE“ apod. V níže uvedeném případě definujeme jeden binární senzory, který vrátí TRUE v případě, že odběr pračky je větší než 5W a je tedy v provozu.
- platform: template sensors: power_pracka: friendly_name: "Pračka běží" value_template: "{{ states('sensor.zasuvka_pracka_power') | int > 5 }}"
Konečně se dostáváme k vlastnímu tlačítku, které jsem sliboval při povídání o skriptech. Nejdříve opět upravíme konfigurační soubor „configuration.yaml“, do kterého přidáme nový řádek:
switch: !include 01_switch.yaml
Poté editujeme soubor „01_switch.yaml“ ve stejné adresářové struktuře a přidáme níže uvedenou definici. Není to nic jiného, než spuštění dvou připravených scriptů a podmínka se stavem pomocníka „přepínač“, která určitě stav tlačítka. Stejného pomocníka ještě využijeme i v podmínce pro nastavení ikonky.
- platform: template switches: svetla_dole: friendly_name: "Světla dole" value_template: "{{ is_state('input_boolean.svetla_dole_stav', 'on') }}" turn_on: service: script.svetla_dole_on turn_off: service: script.svetla_dole_off icon_template: >- {% if is_state('input_boolean.svetla_dole_stav','on') %} mdi:lightbulb {% else %} mdi:lightbulb-off {% endif %}
Příště budeme ukládat data
Jednotlivá témata, která jsou poměrně rozsáhlá, jsme prošli tak trochu letem světem. Snažil jsem se, abyste si odnesli alespoň dobrý základ a snad tomu pomohli i praktické ukázky.
Používáte nějaké zajímavé automatizace nebo skripty? Podělte se s ostatními v diskuzi. Pokud se přeci jen na programování automatizací zatím necítíte nebo jen hledáte inspiraci, podívejte se na již hotová řešení na stránkách Blueprints Exchange.
K vlastním šablonám, neboli „Templates“ se ještě vrátím v některém z dalších pokračování, které se bude zabývat tvorbou vlastních dashboardů. Příští pokračování bude ale zaměřené na využití InfluxDB pro ukládání dat a jejich vizualizaci v Grafana, přesun sqlite do vhodnější relační databáze a další spíše interní záležitosti Home Assistant.
(Autorem obrázků je Václav Steiner.)