blog.vyoralek.cz

Automatizace pro chytrou domácnost – 4. část – použití entity Slunce

Další díl věnující se definici automatizací v Home Assistentovi představuje použití entity slunce, která je v základu HomeAssistenta a může být velmi užitečná.

Pojďme si nejprve připomenout tři části automatizací v Home Assistantovi.

První je ? trigger, nebo-li spoušteč, která definuje za jakých okolností se automatizace začne zpracovávat – povětšinou se bude vyhodnocovat změna stavu zařízení či jiné entity. Tímto spouštěčem může být i ☀️ slunce – např. jakmile slunce zajde za horizont.

Druhou částí jsou ? podmínky, které mohou zpracovávání automatizace ještě před vyvoláním konkrétní akce zastavit – vyhodnocuje se aktuální stav zařízení či entity. Do podmínky můžeme opět použít ☀️ slunce – např. budeme chtít provést automatizace jen pokud je slunce za horizontem (samotné spuštění automatizace bylo však vynuceno stavem jiné entity).

A konečně poslední částí jsou akce ?, které určují co se má při automatizaci provést. Jelikož nejsme schopni měnit stav slunce či posunovat se v čase tak v této části ☀️ slunce nepoužijeme.

? Pokud si nejste jistí těmito pojmy koukněte ještě na první část této minisérie, kde je to popsáno detailněji.

Nyní si ukážeme jednotlivé typy použití v detailech.

? Jako spuštěč

Nejjednodušším použitím ☀️ slunce v automatizacích je jako spouštěč.

Máme v podstatě jen dvě základní možnosti spuštění automatizace a to:

  1. při východu slunce
  2. při západu slunce

Jelikož občas se může hodit spustit automatizaci v pevně definovaný interval před východem / západem slunce můžeme jako volitelnou část konfigurace přidat i tento časový posun.

Poměrně přímočaré a jednoduché nastavení je pomocí uživatelského rozhraní automatizací v HomAssistantu. V části spouštěč vybereme typ Slunce a jako událost zvolíme buď východ nebo západ slunce podle potřeby.

Pokud to dává smysl můžeme použít i časový posun, který je potřeba zadat ve formátu hh:mm:ss, tedy nejprve hodiny, minuty a nakonec sekundy, tj. například 10 minut před zadáme jako 00:10:00 a naopak 10 minut po jako -00:10:00.

Pokud z jakéhokoliv důvodu používáte definici automatizací v YAML souborech pak zápis spouštěče se sluncem vypadá v případě východu slunce takto:

platform: sun
event: sunrise
offset: '00:10:00' # nepovinne

Pokud chceme západ slunce tak jako event nastavíme sunset.

? Jako podmínka

Druhou možností použití slunce ☀️ je v podmínkách. Jelikož obvykle potřebujeme nadefinovat časový interval od / do bude konfigurace krapet složitější, zejména na uvědomění si co všechno vyplnit.

Pokud se podíváme do tabulky níže uvidíme všechny možné kombinace nastavení, kde podle mě ale smysl dávají pouze dvě – celou noc a nebo celý den (bez noci). Docela nechápu proč je konfigurace tak obecná ale budiž.

Ukažme si tedy proto jen dvě možnosti a to jak omezit automatizace aby se provedla pouze v noci a druhý případ pouze za denního světla.

Od svítání do soumraku – ☀️ pouze ve dne

Začneme denní variantou ☀️ – chceme aby automatizace byla zpracována pouze pokud je denní svit, tj. od východu slunce po západ slunce a přidáme si i časový posun 10 minut, který nám posune interval o 10 minut od východu slunce.

Pokud bychom chtěli udělat totéž pomocí YAML konfigurace:

condition: sun
after: sunrise
before: sunset
after_offset: '00:10:00' # nepovinne

Od soumraku do svítání – ? pouze v noci

Druhou variantou je pouze noc ?, která vypadá zdánlivě velmi podobně, nicméně z hlediska konfigurace nás čeká bohužel jedno úskalí. Jelikož intervaly nejsou striktně omezeny – zasahují i do okolních dnů – je potřeba přidat tyto variantu jako dvě podmínky, kdy si otestujeme zda je splněna alespoň jedna – typ NEBO.

Asi sami vidíte, že je to značně nepřehledné. Mě poměrně pomohlo pokud si termíny po / před změním na od / do a pak to začne dávat větší smysl.

V první podmínce nastavíme od (po) západu slunce, čímž pokryjeme čas od západu slunce do půlnoci aktuálního dne.

V druhé podmínce pak přidáváme interval od začátku dne (00:00) do (před) východu slunce.

Stejně jako v případě ? spouštěče můžeme i u ? podmínky pomocí prodlevy posunout čas před východem nebo po západu o např. 10 minut, což je zapsáno opět jako 00:10:00.

Zápis YAML by pak vypadal takto

condition: or
conditions:
  - condition: sun
    after: sunset
  - condition: sun
    before: sunrise
    before_offset: '00:10:00'

Entita Slunce v HA

Pokud nemáte v HomeAssistentovi správně nastavenou lokaci a nebo si prostě jen chcete zkontrolovat jak na dnešní den vychází východ a západ slunce pak je jednou z cest kontrola entity Sun přímo v HA.

Možností jak se k ní dostat je více, ale mě přijde nejrozumnější v menu Nastavení kliknout na Entity a do hledacího pole zadat Sun.

Pokud na tuto entity klikneme a ještě v dialogu klikneme na ikonku vpravo nahoře pak uvidíme kýžené podrobnosti:

Druhou možností je pak pomocí Vývojařských nástrojů v záložce stavy a do filtrovat entity dáme Sun.

Po kliknutí na ikonku ⓘ pak uvidíme stejný dialog jako výše.

Závěrem

Pomocí entity slunce můžete dynamicky omezovat automatizace podle aktuální dne, což může být velmi užitečné.

Typickým příkladem může být aktivace venkovního osvětlení na pohyb pouze v případě, že venku už je tma – tedy v noci.

Zatím je zejména použití nočního omezení v podmínce v HomeAssistantovi poměrně neintuitivní, nicméně věřím, že podle tohoto návodu jste to už zvládli 🙂

Pokud máte nějaké zajímavé zkušenosti či automatizace s použitím východu / západu slunce budeme rádi pokud se s námi o ně podělíte.


Kompletní minisérie o vytvoření domácí automatizace obsahuje následující články:

  • 1. část – Teoretický úvod do automatizace – spouštěč -> podmínky -> akce
  • 2. část – Vytváření automatizací přes UI HomeAssistanta
  • 3. část – HomeAssistant – novinky představené ve verzi 0.113
  • 4. část – HomeAssistant – použití entity Slunce (sun)

7 comments

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..

  • Dobry den, rad bych se zeptal, jaka zarizeni pouzit (pripadne zda na to staci snoff s20) na tento scenar. Potrebuji do zasuvky pred spotrebic vlozit nejake chytre zarizeni, ktere rozpozna, ze se spotrebic probral ze standby( zvetsil se odber) a homeassistant podle toho spustil skript, ktery se pripoji prez ssh na jine zarizeni a provede nekolik prikazu. Dekuji za odpoved a pripadnou radu jak toto vyresit.

  • Dobrý den. Lze preflesovat jaký koliv vypínač ovládaný ewelink? Dekuji

  • V článku je uvedeno:
    „Pokud to dává smysl můžeme použít i časový posun, který je potřeba zadat ve formátu hh:mm:ss, tedy nejprve hodiny, minuty a nakonec sekundy, tj. například 10 minut před zadáme jako 00:10:00 a naopak 10 minut po jako -00:10:00“

    Není to naopak?
    Pokud chci něco před Východem/Západem, neměl bych zadat třeba -00:10:00, jakože 10 minut míň než čas východu/západu a naopak,
    pokud chci něco po Východu/Západu, neměl bych zadat třeba 00:10:00, jakože 10 minut víc než čas východu/západu?

    • Tak si odpovím sám:
      Chci něco vykonat 10 minut PŘED Východem/Západem sluce, zadám čas takto: -00:10:00
      Chci něco vykonat 10 minut PO Východu/Západu slunce, zadám čas takto: 00:10:00

  • Jak udělám spouštěč, když chci spustit automatizaci když číslo jedné entity bude větší než číslo druhé entity?