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.

1 1 vote
Article Rating
Subscribe
Powiadom o
0 komentarzy
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x