5 trikov, ktoré mi pomáhajú udržiavať moje automatizácie v Home Assistant pod kontrolou


Keď vytvárate automatizácie v Home Assistant, nemusia sa vždy správať presne tak, ako očakávate. Niekedy sa namiesto toho, aby sa spustili raz podľa plánovaného zámeru, vaša automatizácia môže spustiť niekoľkokrát za sebou v rýchlom slede. Ak sa vám to stane, existuje niekoľko celkom jednoduchých spôsobov, ako to vyriešiť.

Použite príslušný režim automatizácie

Jedným z najjednoduchších spôsobov, ako zabrániť opakovanému spúšťaniu automatizácií, je zabezpečiť, aby ste používali správny režim automatizácie. Home Assistant obsahuje štyri rôzne spôsoby, ako môžu automatizácie konať, keď sú opätovne spustené ešte pred dokončením všetkých akcií.

S predvoleným režimom „jediný“ sa ani v prípade, že sa automatizácia spustí viackrát, kým ešte beží, nespustia nové behy. Namiesto toho si môžete zvoliť jednu z troch ďalších možností.

„Reštart“ okamžite zastaví aktuálne spustenie a spustí nové. „V fronte“ dokončí aktuálne spustenie a ďalšie spustenie sa spustí až po úplnom dokončení pôvodného spustenia. „Paralelne“ spustí úplne nové spustenie, zatiaľ čo pôvodné spustenie pokračuje až do dokončenia.

Tieto režimy automatizácie sa uplatňujú len počas spustenej automatizácie. Po jej dokončení nebránia spusteniu automatizácie znova.

Debounce pomocou „for“

Jedným bežným dôvodom, prečo sa automatizácie neustále spúšťajú, je ten, že senzor, ktorý spúšťa automatizáciu, sa neustále pohybuje okolo hodnoty, ktorá sa používa ako prah, alebo rýchlo prechádza medzi dvoma stavmi. Napríklad, ak máte automatizáciu spustenú kontaktným senzorom, senzor môže často kmitajúco prechádzať medzi otvoreným a zatvoreným stavom, keď sa dvere zatvoria, čo spôsobuje opakované spúšťanie automatizácie.

Debouncing je proces odstraňovania nežiaducich výkyvov v signáli, a toto môžete dosiahnuť v Home Assistant pomocou možnosti „for“ vo vašich spúšťačoch založených na stave. To vám umožňuje zabezpečiť, že automatizácia sa spustí iba vtedy, keď bol spúšťač zaznamenaný počas určitej nepretržitej doby. Napríklad pri kontaktnom senzore môžete nastaviť automatizáciu tak, aby sa spustila iba vtedy, keď senzor zostal vo „zatvorenom“ stave aspoň dve sekundy.

Hysterezis s dvoma prahmi

Hysterezis je ďalšia užitočná metóda, ako zabrániť opakovanému spúšťaniu automatizácií, keď sa senzory pohybujú okolo kľúčových hodnôt. Koncept je jednoduchý: Namiesto toho, aby existoval len jeden prah, pri ktorom sa automatizácia zapína a vypína, nastavíte dva prahy, ktoré sú od seba oddelené malou vzdialenosťou. Keď senzor dosiahne najvyššiu hodnotu, automatizácia sa spustí a nezastaví sa, kým senzor neklesne pod najnižšiu hodnotu, čím sa vytvorí medzera, počas ktorej sa neuskutoční žiadna akcia.

Jedným z najjednoduchších spôsobov, ako použiť hysterezis v automatizácii, je pomocou pomocníka Threshold. Poskytnete vstupný senzor, ktorý chcete použiť ako spúšťač, nastavíte horné a/alebo dolné hranice a hodnotu hysterezis (vzdialenosť, ktorú musí mať hodnota vstupného senzora od prahu, aby sa zmenil stav prahového senzora).

Napríklad pri teplotnom senzore s hornou hranicou 20 a hysteréznou hodnotou 1 sa senzor zapne, keď teplota stúpne nad 21, a vypne, keď teplota klesne pod 19. Tento senzor potom môžete použiť na spúšťanie vašich automatizácií namiesto hodnoty priamo získanej zo senzora.

Pridať časovač prestávky

Ďalším jednoduchým, ale účinným spôsobom, ako zabrániť tomu, aby sa vaše automatizácie spúšťali príliš často, je použitie časového obmedzenia (cooldown timer). Pridáte časové obmedzenie k svojej automatizácii, ktoré zabezpečí, že sa znovu nespustí, kým neuplynie stanovená doba.

Existuje niekoľko spôsobov, ako toho dosiahnuť. Ak je vaša automatizácia nastavená na predvolený režim „single“, môžete na konci automatizácie pridať akciu „oneskorenie“. Tým sa automatizácia bude spúšťať až do ukončenia časovača oneskorenia a pri použití režimu „single“ sa automatizácia nespustí znova, kým sa prvé spustenie nedokončí.

Nevýhodou je, že to znamená, že vaša automatizácia beží na pozadí, čo nie je ideálne. Lepšou voľbou je použiť šablónovú podmienku založenú na čase, kedy bola automatizácia naposledy spustená.

Vytvoríte šablónovú podmienku, ktorá zisťuje časový rozdiel medzi aktuálnym časom a časom „last_triggered“. Ak je tento časový rozdiel nižší ako prah, ktorý pridáte do šablóny, automatizácia sa nespustí. Príklad tohto typu šablónovej podmienky je nasledovný:

{{ (now() - (state_attr('automation.your_automation_name', 'last_triggered') | default(as_datetime(0), true))) > timedelta(minutes=5) }} Toto umožní spustiť automatizáciu iba vtedy, ak nebola spustená v posledných piatich minútach. Časť default(as_datetime(0), true) zabezpečuje, že automatizácia sa stále spustí, ak neexistuje hodnota pre last_triggered, napríklad ak automatizácia ešte nikdy nebola spustená.

Použiť spúšťanie na hrane

Niekedy senzory stratia spojenie s Home Assistant. Ak máte automatizáciu, ktorá sa spustí, keď sa senzor zapne, môže to spôsobiť, že sa automatizácia bude spúšťať zakaždým, keď sa senzor znovu pripojí a jeho stav sa z "nedostupný" alebo "neznámy" zmení na "zapnutý".

Toto často môžete vyriešiť vytvorením spúšťača, ktorý zahŕňa stav „od“ aj „do“. Napríklad, váš spúšťač môže byť, keď sa stav senzora zmení z „vypnuté“ na „zapnuté“. To zabezpečí, že automatizácia sa spustí iba pri „rastúcej hranici“ a nespustí sa, keď sa stav zmení z „neznáme“ na „zapnuté“.


Existuje mnoho dôvodov, prečo sa automatizácie môžu spúšťať aj vtedy, keď to nechcete. Najlepší spôsob, ako to vyriešiť, je pochopiť príčinu. Potom môžete nájsť vhodné riešenie, ktoré zabezpečí, že sa vaše automatizácie spustia iba vtedy, keď budete chcieť.

Súvisiace články