Jak przekonałem się niejednokrotnie, klątwa wiedzy krąży, i nie zawsze co dla nas oczywiste, jest takie dla wszystkich. I to czasem nawet bardziej zaawansowanych, doświadczonych… I tak dziś na tapet bierzemy Home Assistant i jeden z tych tematów, co gdy już wiemy, to wydaje się to nie tylko proste, ale i oczywiste. Ale jak sam się przekonałem kilka dni temu, rozmawiając z innymi użytkownikami Home Assistant, nie jest to takie oczywiste i raczej słyszałem „o…”, a nie „e, znam”.

Identyfikator wyzwalacza w automatyzacjach w Home Assistant

Konkretnie będzie o automatyzacjach. A jeszcze konkretniej, o automatyzacjach, które jako warunek mogą mieć dwie sprzeczne sytuacje, np. „czujnik wykrył ruch” i „czujnik przestał wykrywać ruch”. W teorii mogą być tu potrzebne dwie automatyzacje – jedna uruchamia działania w przypadku wykrycia ruchu, druga, gdy tego ruchu już nie ma, czyli gdy przestanie być wykrywany.

Ale można to zrobić za pomocą jednej automatyzacji. Gdy przewrotnie zapytałem jak, w większości przypadków słyszałem, że niby można, ale to bez sensu, bo skoro każdy ze stanów (przeciwnych) uruchamia automatyzację, to trzeba by później, w sekcji „wykonaj” badać jeszcze raz warunek i zależnie od stanu (np. czujnik wykrywa ruch lub przestał), wykonywać konkretne działania.

I faktycznie, jest to sposób, choć niekoniecznie optymalny. Bo lepiej do tego celu wykorzystać „identyfikatory wyzwalacza”, które działają wewnątrz danej automatyzacji, a pozwalają określić, który konkretnie element „kiedy” spowodował uruchomienie akcji.

Problem w tym, że jak zauważyłem, niekoniecznie wszyscy użytkownicy Home Assistant – również ci bardziej zaawanowani – wiedzą, że taka opcja istnieje. A to dlatego, że nie jest ona domyślnie widoczna, a pole „ID” trzeba odblokować za pomocą menu kontekstowego danego modułu, za pomocą pozycji „edytuj identyfikator”:

W tym momencie na samej górze konkretnego wyzwalacza automatyzacji pojawi się pole „identyfikator wyzwalacza”:

W którym, dla konkretnego wyzwalacza, możemy wpisać jego identyfikator, z którego można później skorzystać, przy tworzeniu warunków dla akcji do wykonania (sekcja „wykonaj”), np. w module „wybór”:

W którym jako warunek wybieramy „wyzwolone przez”:

I wybieramy jeden lub kilka identyfikatorów wyzwalacza, dla których dany warunek ma być spełniony:

Dzięki temu za pomocą jednej akcji, bez kolejnego sprawdzania zdarzeń, które wywołały akcję (choćby dlatego, że w międzyczasie mogły się zmienić), możemy wykonać tylko te działania, które są przypisane do konkretnego wyzwalacza, a konkretnym identyfikatorze. Czyli np. w przypadku wykrycia ruchu będzie to włączenie alarmu lub oświetlenia, a gdy ruch ustanie, jego wyłączenie.

I choć przykład z detekcją ruchu może nie jest najlepszy pod tym względem, że akurat to można wykonać również na inne sposoby, to celowo go wybrałem, bo dość dobrze pokazuje 2 sprzeczne sytuacje, a więc idealny duet, dla pokazania opcji identyfikatorów wyzwalaczy. Natomiast skrzydeł identyfikatory wyzwalacza dostają przy bardziej złożonych automatyzacjach.

Natomiast to też nie znaczy, że przez to wszystkie moje automatyzacje to złożone molochy, do których upycham, co tylko mogę. Wręcz przeciwnie. Bo zdarza mi się tworzyć automatyzacje oddzielne dla np. włączenia światła przy wykryciu ruchu, jak i wyłączenia, gdy ruch ustanie, bo czasem chcę mieć możliwość selektywnego korzystania z wybranych automatyzacji. Bez zabawy w wirtualne przełączniki (pomocnicy).

Natomiast tam, gdzie nie mam takiej potrzeby, i ma to sens, faktycznie wolę zrobić jedną automatyzację i za pomocą identyfikatorów wyzwalaczy rozdzielić akcje, w zależności od tego, co faktycznie uruchomiło daną automatyzację. W końcu to nie wymóg, a tylko opcja, która właściwie użyta może znacznie usprawnić m.in. zarządzanie automatyzacjami. Nie tylko poprzez redukcję ich liczby, a czasem to może już i nawet ilości… ;-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej