
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.

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)]](https://zaplanujswojdom.pl/wp-content/uploads/2019/10/1024px-Infobox_info_icon.svg_-300x300.png)
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.

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.

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.
Może Ci się spodobać

Dlaczego inteligentny dom oparty na komunikacji bezprzewodowej może okazać się niebezpieczny?
16 lutego 2020
Inteligentny dom – od czego zacząć?
23 sierpnia 2019
Super działa tylko to są powiadomienia bez dźwięku w jaki sposób można to zmienić ?
trzeba w systemie telefonu włączyć aby powiadomienia były z dźwiękiem.
Jak dodac do informacji date i czas
tutaj są przykłady https://www.home-assistant.io/blog/2017/10/15/templating-date-time/