Dziś miałem napisać artykuł niezwiązany – przynajmnije nie bezpośrednio – z Home Assistant, bo ostatni artykuł, który został opublikowany (też) dotyczy wprost Home Assistant, a konkretnie jego nowej wersji. Życie jednak czasem pisze własne scenariusze i tak się stało teraz. Z powodu zagrożenia powodziowego, znajomy zapytał mnie, czy dałoby się np. w Home Assistant, z którego korzysta, dodać jakieś czujniki związane z poziomem rzeki (w jego przypadku Odry) i na tej bazie zrobić jakieś powiadomienia w sytuacji, gdy zrobi się nieciekawie. Oczywiście da się, bo inaczej by nie było tego artykułu. A przynajmniej da się teoretycznie to zrobić…

Powiadomienie o zagrożeniu powodziowym w Home Assistant

Tak więc plan zakłada, że do Home Assistant dodajemy czujniki związane ze stanem wody w interesującym nas miejscu, i na bazie odczytów z tych czujników tworzymy automatyzację, która np. wyśle powiadomienie na telefon, w momencie, gdy zostanie aktywowany alarm (zagrożenie powodziowe i alarm powodziowy). Brzmi prosto i logicznie, ale problem w tym, że mam wrażenie, że niestety, ale dane nie są aktualne. Przynajmniej te wyświetlane w Home Assistant. Stąd na wstępie napisałem, że się da, ale jest to jakby teoretyczne.

Integracja z IMGW-PIB

Zaczynamy od dodania do Home Assistant nowej integracji, a konkretnie „IMGW-PIB” (Ustawienia -> Urządzenia oraz usługi -> Dodaj integrację: IMGW-PIB), dzięki czemu – po wybraniu interesującej „lokalizacji” z listy – będziemy mieli nowe czujniki m.in. z poziomem wody (aktualnym, zagrożenia i alarmowym), oraz 2 sensory binarne dotyczące konkretnego alarmu (zagrożenie lub alarm powodziowy).

Po dodaniu integracji przechodzimy do niej i korzystając z opcji „dodaj wpis” dodajemy miejsce, które chcemy monitorować.

Oczywiście można monitorować więcej niż jedno, a dla każdego są tworzone niezależne czujniki (encje). Część z nich jest domyślnie wyłączona. Jeśli dobrze pamiętam, to dotyczy to sensorów znajdujących się w sekcji „diagnostyka”, czyli z poziom ostrzegawczy i alarmowy. Tak więc jak ktoś chce z nich korzystać, to musi je włączyć.

No i (zwłaszcza) przy dodawaniu nowej „lokalizacji” może się przydać trochę cierpliwości, bo zwłaszcza teraz serwery IMGW-PIB (Instytut Meteorologii i Gospodarki Wodnej – Państwowy Instytut Badawczy) zdają się mocno przeciążone, przez co często skutkuje błędami w stylu „nie można nawiązać połączenia”.

Powiadomienie o zagrożeniu lub alarmie powodziowym

Gdy integracja z IMGW-PIB dodana do Home Assistant i udało się dodać czujniki, pora utworzyć automatyzację, która powiadomi nas w sytuacji, gdy aktywuje się sensor binarny „zagrożenie powodziowe” lub „alarm powodziowy”. Można też wykorzystać sensor „poziom wody”, gdy chcemy otrzymać powiadomienie w momencie, gdy woda będzie miała konkretny poziom (w innych okolicznościach można wykorzystać też sensor „temperatura wody”, ale to raczej już w następnym sezonie letnim ;-)).

Przykładowa automatyzacja, dla konkretnego obszaru, z której sam korzystam, wygląda tak:

W sekcji „kiedy” mam dwa wyzwalacze oparte na sensorach binarnych „zagrożenie powodziowe” i „alarm powodziowy”, z których każdy ma swój unikatowy identyfikator, który później służy do zdefiniowania, która akcja ma się wykonać:

W sekcji „jeśli” nie mam nic. Natomiast w sekcji „wykonaj” mam dwa rodzaje zdarzeń. Pierwsze, to powiadomienie na telefon, które jest wysyłane niezależnie od tego, jaki sensor aktywuje automatyzację. Z racji tego, że w treści powiadomienia mam odczyty z czujników, to konfiguracja tego elementu jest możliwa tylko przez kod YAML (może kiedyś pojawi się opcja dodawania tego typu informacji z normalnego edytora, ale na razie jest, jak jest):

Jakby ktoś chciał wykorzystać, to kod, by nie trzeba było przepisywać z obrazka:

action: notify.mobile_app_telefon_patryka
metadata: {}
data:
  title: IMGW-PIB Gdańsk
  message: >-
    Poziom wody: {{ states('sensor.imgw_pib_gdansk_poziom_wody') | round(0) }} (temp. wody: {{ states('sensor.imgw_pib_gdansk_temperatura_wody') | round(1) }}°C).

    Zagrożenie powodziowe: {{
    states('binary_sensor.imgw_pib_gdansk_zagrozenie_powodziowe') }} ({{
    states('sensor.imgw_pib_gdansk_poziom_zagrozenia_powodziowego') | round(0) }} cm).

    Alarm powodziowy: {{
    states('binary_sensor.imgw_pib_gdansk_alarm_powodziowy') }} ({{
    states('sensor.imgw_pib_gdansk_poziom_alarmu_powodziowego') | round(0) }} cm).
  data:
    ttl: 0
    priority: high
    channel: alarm_stream

Kolejny element mojej automatyzacji to głosowe powiadomienie na telefon. Jest to rzecz opcjonalna, ale bardzo dobrze sprawdza się np. w nocy, gdy w telefonie mam aktywny tryb cichy, bo tego typu powiadomienie ignoruje ten fakt i za pomocą dźwięku (mowy) sygnalizuje to, co zostanie wysłane:

Artykuł o powiadomieniach na telefon z Home Assistant jest dopiero w planach, więc tutaj tylko w skrócie o tym, co istotne przy tym powiadomieniu:

Jako treść wpisujemy „TTS” i nic więcej, bo to jest informacja dla aplikacji Home Assistant na telefonie, że jest to komunikat do odczytania przez mechanizm TTS, a nie do wyświetlenia jako klasyczne powiadomienie. Od razu dodam, że jest to w wersji dla Androida, z którego korzystam i choć w iOS jest podobnie, to niektóre „komendy” delikatnie się różnią, ale można to sprawdzić w dokumentacji.

Drugim ważnym elementem jest sekcja „data”, gdzie mam ustawiony wysoki priorytet dla powiadomienia, treść („tts_text”) oraz informację, by komunikat został odczytany na maksymalnej głośności:

ttl: 0
priority: high
media_stream: alarm_stream_max
tts_text: "UWAGA: Alarm powodziowy dla Gdańska!"

I to właściwie tyle, jeśli chodzi o podstawową automatyzację związaną z powiadomieniami na temat zagrożenia powodziowego pobieranego do Home Assistan z IMGW-PIB. Z automatyzacji wyciąłem niektóre elementy, ale dlatego, że są one już dopasowane do moich potrzeb oraz innych sensorów, z których korzystam. Natomiast każdy może ją rozbudować wedle swoich specyficznych potrzeb…

Nie zawierzaj swojego bezpieczeństwa „hobby”

Pamiętaj jednak, że Home Assistant to tylko Home Assistant i wszędzie tam, gdzie chodzi o nasze bezpieczeństwo, nie należy polegać tylko i wyłącznie na nim. Tak samo, jak nie można polegać tylko i wyłącznie na integracji z IMGW-PIB, bo nigdy nie ma pewności, czy nic się „nie wysypie”. Zwłaszcza teraz, gdy ich serwery zdają się mocno przeciążone, co często skutkuje błędami w stylu „nie można nawiązać połączenia”, a same czujniki (encje) mogą przestać być dostępne:

Dlatego ja tego typu rozwiązania traktuję pomocniczo, i nie bazuję na nich, podejmując decyzje, które mogą mieć wpływ na moje i moich najbliższych bezpieczeństwo. Tak samo, jak mam własnej konstrukcji czujniki gazu, tlenku węgla czy dymu, fajnie zintegrowane z Home Assistant, ale oprócz tego mam certyfikowane czujniki „klasyczne”. Bo hobby to hobby, a bezpieczeństwo to bezpieczeństwo.

(!) 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
Patryk