Podesłał mi chwilę temu kolega link do grupy na Facebooku poświęconej oprogramowaniu Home Assistant, gdzie ktoś zapytał o możliwość wysłania na telefon powiadomienia o nieudanym logowaniu, z pytaniem, czy wiem jak to zrobić, bo w sumie on też by chciał coś takiego. No cóż, poczułem się wywołany do tablicy i to podwójnie. Podwójnie, bo nie tylko wiem jak to zrobić, ale nawet mam gotowe notatki do tego tematu, bo kiedyś sam, po pytaniu innego znajomego o to, testowo u siebie ustawiłem automatyzację, co na telefon wysyłała mi informacje o nieudanych próbach logowania do Home Assistant.

Automatyzacja uruchamiana powiadomieniem o nieudanym logowaniu w Home Assistant

Znajomy, który pierwotnie zapytał, korzysta nadal, ja po testach automatyzację zostawiłem, bo kto wie, może się kiedyś przyda, ale mam ją wyłączoną, bo nie potrzebuję takiego powiadomienia. Wystarczy mi taka informacja w panelu „powiadomienia” w Home Assistant. No ale skoro jest zapotrzebowanie, a ja mam notatki, to wypada w końcu ten temat na tapet zapodać…

Ale zacznijmy od podstaw, czyli od… standardowego powiadomienia, dostępnego w panelu „powiadomienia” w Home Assistant, gdzie w standardzie pojawiają się różne powiadomienia, m.in. o nieudanej próbie logowania. Przykładowe powiadomienie wygląda tak:

A jest ono o tyle istotne, że za pomocą odpowiednich zdarzeń i warunków, możemy oprzeć się na treści powiadomienia, i zależnie od tego, czy będą jakieś „słowa kluczowe” wykonać akcję, np. właśnie wysłanie powiadomienia, np. na telefon. W tym przypadku możemy oprzeć się o tekst „Login attempt failed”, który jest w tytule powiadomienia.

Tak więc tworzymy nową automatyzację, i w sekcji „kiedy” dodajemy wyzwalacz „trwałe powiadomienie”:

W jego konfiguracji, w sekcji „rodzaj powiadomienia” zaznaczamy „dodano”:

Spowoduje to uruchomienie automatyzacji przy każdym powiadomieniu, jakie się pojawi w panelu „powiadomienia” w Home Assistant. A skoro interesuje nas tylko powiadomienie i nieudanym logowaniu, to w sekcji „jeżeli” dodajemy element „szablon”, za pomocą którego przefiltrujemy powiadomienia:

I uzupełniamy go warunkiem określającym, że interesują nas tylko powiadomienia o konkretnym tytule:

{{ 'Login attempt failed' in trigger.notification.title }}

Zostało już tylko ustawić, co ma się w takiej sytuacji, gdy zostaną spełnione warunki, zdarzyć. Może to być np. wysłanie powiadomienia na telefon z zainstalowaną aplikacją Home Assistant:

U mnie ten moduł jest trochę bardziej rozbudowany, niż na zrzucie ekranu powyżej, tak by w treści powiadomienia wysłanego na telefon pojawiała się treść powiadomienia z Home Assistant:

Można to uzyskać modyfikując element „message”:

{{ trigger.notification.message }}

Oraz element „title”:

{{ trigger.notification.title }}

Kod YAML modułu odpowiedzialnego za wysłanie powiadomienia będzie w takim przypadku wyglądał np. tak:

service: notify.mobile_app_telefon_patryka
metadata: {}
data:
  title: "{{ trigger.notification.title }}"
  message: "{{ trigger.notification.message }}"

A kod YAML całej automatyzacji może wyglądać np. tak:

alias: "HA: Login attempt failed"
description: ""
trigger:
  - platform: persistent_notification
    update_type:
      - added
    notification_id: ""
condition:
  - condition: template
    value_template: "{{ 'Login attempt failed' in trigger.notification.title }}"
action:
  - service: notify.mobile_app_telefon_patryka
    metadata: {}
    data:
      title: "{{trigger.notification.title}}"
      message: "{{trigger.notification.message}}"
mode: single

Oczywiście w powyższej konfiguracji, jako urządzenie docelowe dla powiadomienia (zamiast „notify.mobile_app_telefon_patryka”) należy wskazać swoje urządzenie. Tak samo, jak można zmienić, by zamiast powiadomienia za pomocą powiadomień w aplikacji Home Assistant było to dowolne inne zdarzenie. Można też opisany tutaj mechanizm wykorzystać do innych powiadomień, nie tylko o nieudanym logowaniu. Kwestia potrzeb…

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