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.
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.
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.
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/