Home Assistant,  Inteligentny dom

Home Assistant – powiadomienia z akcjami

Inteligentny dom oparty na systemie Home Assistant umożliwia wysyłanie powiadomienia do użytkownika za pomocą zdefiniowanych automatyzacji. Dodatkową funkcjonalnością są akcje, które mogą być wyzwolone w okienku powiadomienia. W tym wpisie postaram się w prosty sposób przybliżyć wdrożenie tej funkcjonalności.

Aby otrzymywać powiadomienia na telefonie z systemem Android, niezbędne jest pobranie oficjalnej aplikacji ze sklepu Play. Dla systemu iOS ze sklepu App Store.

Dla przykładu przyjmijmy powiadomienie wszystkich użytkowników o zbyt długo otwartych drzwiach wejściowych. Do tego celu użyjemy wcześniej zamontowany i skonfigurowany w systemie Home Assistant kontaktron. W moim przypadku kontaktron nazywa się kontaktron_wejscie z grupy binary_sensor, więc encja posiada nazwę binary_sensor.kontaktron_wejscie. Gdy drzwi zostaną zamknięte, kontaktron styka się z magnesem tworząc połączenie, daje nam stan wysoki na wejście urządzenia zbierającego sygnały.

Podstawową składnię automatyzacji opisałem we wpisie z automatycznym wyłączaniem światła po określonym czasie. Jeśli nie wiesz, jak działają automatyzacje, zachęcam do zapoznania się z jego pierwszą częścią.

Standardowe powiadomienia

- alias: 'Za długo otwarte drzwi'
  trigger:
    platform: state
    entity_id: binary_sensor.kontaktron_wejscie
    to: 'on'
    for: "00:05:00"
  action:
    service: notify.notify
    data:
      message: "Drzwi wejściowe są otwarte zbyt długo!"
      title: "UWAGA"

Powyższa automatyzacja wywoływana jest przez zmianę stanu kontaktronu z off na on – po 5 minutach od tej zmiany.

Serwis, który wywołujemy, wymaga podania pola message; wiadomość ta zostanie wysłana do wszystkich użytkowników. Tytuł nie jest obowiązkowy.

Podgląd powiadomienia Home Assistant bez akcji na urządzenia.
Powiadomienie bez akcji w Home Assistant

Powiadomienia z akcją

Jeśli chcemy umożliwić użytkownikowi wybór akcji z poziomu powiadomienia, nasza automatyzacja powinna zawierać nazwę zdarzenia oraz tytuł przycisku.

- alias: 'Za długo otwarte drzwi'
  trigger:
    platform: state
    entity_id: binary_sensor.kontaktron_wejscie
    to: 'on'
    for: "00:05:00"
  action:
    service: notify.notify
    data:
      message: "Drzwi wejściowe są otwarte zbyt długo!"
      title: "UWAGA"
      data:
        actions:
          - action: "wlacz_alarm"
            title: "Uruchom alarm"

Dodatkowo należy przygotować obsługę zdarzenia w formie automatyzacji. Zostanie ona uruchomiona w przypadku wciśnięcia przycisku na powiadomieniu.

- alias: Włącz alarm
  trigger:
    platform: event
    event_type: mobile_app_notification_action
    event_data:
      action: wlacz_alarm
  action:
    - service: notify.notify
      data:
        message: "Włączono alarm"
        title: "Uwaga"
    - service: script.turn_on
      data:
        entity_id: script.wlacz_alarm_w_centralce

Zwróć uwagę, że w sekcji trigger korzystamy z platformy event z filtrem na zdarzenie o nazwie wlacz_alarm oraz typem mobile_app_notification_action.


User:Kontos [CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0)] Rdzeń systemu Home Assistant opiera się na magistrali zdarzeń (event bus). Zdarzenia mogą być wysyłane do magistrali w dowolnym momencie i konsumowane przez różne podsystemy.
Maszyny stanów (state machine) wykorzystują wzorzec magistrali eventów.

Naszą akcją jest wysłanie powiadomienia do wszystkich użytkowników o alarmie oraz uruchomienie odpowiedniego skryptu, który włącza alarm w centrali domu.

Podgląd powiadomienia Home Assistant z akcją na urządzeniu.
Powiadomienie z dostępną akcją w Home Assistant

Usuwanie lub nadpisywanie powiadomień

Home Assistant umożliwia nadpisywanie lub usuwanie powiadomienia. Wymagane jest dodanie tagu do wysłanego powiadomienia w sekcji data.

- alias: 'Za długo otwarte drzwi'
  trigger:
    platform: state
    entity_id: binary_sensor.kontaktron_wejscie
    to: 'on'
    for: "00:05:00"
  action:
    service: notify.notify
    data:
      message: "Drzwi wejściowe są otwarte zbyt długo!"
      title: "UWAGA"
      tag: ostrzezenie

Aby nadpisać powiadomienie, wyślij nowe z takim samym tagiem. W przypadku gdybyś chciał usunąć powiadomienie, wystarczy, że podmienisz wartość pola message na clear_message.

- alias: 'Drzwi zamknięto'
  trigger:
    platform: state
    entity_id: binary_sensor.kontaktron_wejscie
    to: 'off'
  action:
    service: notify.notify
    data:
      message: clear_message
      tag: ostrzezenie

Testowanie powiadomień

Bardzo przydatnym narzędziem podczas pisania automatyzacji jest strona „Narzędzia developera”, w której można między innymi wywołać usługę powiadomień i zobaczyć czy powiadomienie wyświetla się prawidłowo.

Testowanie powiadomień w Home Assistant
Testowanie powiadomień w Home Assistant

Inne dostępne funkcjonalności

  • Istnieje możliwość wskazania, na jakie urządzenie powinno być wysłane powiadomienie. Wówczas wystarczy w polu service zamiast notify.notify wpisać notify.mobile_app_<id Twojego urządzenia>.
  • Jeśli posiadasz więcej odbiorców zdefiniowanych, możesz utworzyć grupę powiadomienia (więcej informacji).
  • Powiadomienia mogą zawierać zdjęcia lub obraz z kamery.
  • Obsługa powiadomień z akcjami dla urządzeń firmy Apple jest trochę inna (więcej informacji).
  • Urządzenia firmy Apple oferują obsługę większej ilości funkcjonalności. Różnice między Androidem a iOSem aktualizowane są w dokumentacji.
  • Jeśli chcesz wysyłać powiadomienia do urządzeń MySensors, powinieneś użyć serwisu notify.mysensors. Tutaj znajduje się opis integracji.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *