Integracja z Home Assistant - alerty inteligentnego domu
Połącz Home Assistant z Echobell i odbieraj natychmiastowe alerty z domu: bezpieczeństwo, ruch, temperatura i automatyzacje jako push lub połączenie.
Home Assistant to rozbudowana, otwartoźródłowa platforma automatyki domowej, która stawia na lokalną kontrolę i prywatność. Łącząc Echobell z Home Assistant, możesz odbierać natychmiastowe powiadomienia, a nawet połączenia telefoniczne, gdy w Twoim inteligentnym domu wydarzy się coś ważnego — czy będzie to alert bezpieczeństwa, przekroczenie progu temperatury, czy zadziałanie automatyzacji.
Ten przewodnik przeprowadzi Cię przez konfigurację Echobell tak, aby odbierać powiadomienia z automatyzacji Home Assistant przy użyciu webhooków lub usługi RESTful Notify.
Wymagania wstępne
Zanim zaczniesz, upewnij się, że masz:
- Zainstalowaną na urządzeniu mobilnym aplikację Echobell / Google Play
- Aktywny kanał Echobell (jeśli jeszcze go nie masz, utwórz go w aplikacji)
- Działającą instancję Home Assistant (zalecana wersja 2023.1 lub nowsza)
- Dostęp do konfiguracji Home Assistant
Metoda 1: wyzwalacze webhook (zalecana)
Metoda z webhookiem jest najbardziej elastyczna — pozwala wysyłać własne dane i używać zmiennych szablonu w powiadomieniach.
Pobierz adres URL webhooka Echobell
- Otwórz aplikację Echobell i przejdź do swojego kanału
- Dotknij kanału, aby zobaczyć jego szczegóły
- Znajdź adres URL webhooka w sekcji wyzwalaczy
- Skopiuj adres — będzie wyglądał tak:
https://hook.echobell.one/t/<channel-token>
Utwórz automatyzację w Home Assistant
W Home Assistant możesz wyzwalać powiadomienia Echobell przy użyciu usługi rest_command. Najpierw dodaj polecenie REST do pliku configuration.yaml:
rest_command:
echobell_notify:
url: "https://hook.echobell.one/t/<channel-token>"
method: POST
content_type: "application/json"
payload: '{"title": "{{ title }}", "message": "{{ message }}"}'Zastąp YOUR_TOKEN swoim właściwym tokenem webhooka Echobell.
Po dodaniu tego wpisu zrestartuj Home Assistant, aby wczytać nową konfigurację.
Użyj w automatyzacjach
Teraz możesz wywołać tę usługę z dowolnej automatyzacji. Oto przykład powiadomienia o otwarciu drzwi:
automation:
- alias: "Door Open Alert"
trigger:
- platform: state
entity_id: binary_sensor.front_door
to: "on"
action:
- service: rest_command.echobell_notify
data:
title: "Security Alert"
message: "Front door opened at {{ now().strftime('%H:%M') }}"Skonfiguruj szablony powiadomień
W ustawieniach kanału Echobell skonfiguruj szablony powiadomień tak, aby wyświetlały dane z webhooka:
- Szablon tytułu:
{{title}} - Szablon treści:
{{message}}
Od tej chwili, gdy automatyzacja zadziała, otrzymasz powiadomienie z własnym tytułem i treścią.
Metoda 2: platforma RESTful Notify
Jeśli wolisz ściślejszą integrację, możesz skonfigurować Echobell jako usługę notify w Home Assistant.
Konfiguracja
Dodaj poniższy fragment do pliku configuration.yaml:
notify:
- name: echobell
platform: rest
resource: https://hook.echobell.one/t/<channel-token>
method: POST_JSON
data:
title: "{{ title }}"
message: "{{ message }}"
Zastąp YOUR_TOKEN swoim tokenem webhooka Echobell, a następnie zrestartuj Home Assistant.
Korzystanie z usługi notify
Teraz możesz używać Echobell jak każdej innej usługi notify:
automation:
- alias: "Low Battery Alert"
trigger:
- platform: numeric_state
entity_id: sensor.phone_battery
below: 20
action:
- service: notify.echobell
data:
title: "Low Battery Warning"
message: "Phone battery is at {{ states('sensor.phone_battery') }}%"
Zaawansowane zastosowania
Monitoring temperatury z alertami krytycznymi
Wykorzystaj typy powiadomień, aby wysyłać krytyczne alerty o temperaturze jako połączenia:
rest_command:
echobell_critical:
url: "https://hook.echobell.one/t/<channel-token>"
method: POST
content_type: "application/json"
payload: '{"temperature": "{{ temperature }}", "location": "{{ location }}", "severity": "critical"}'
W kanale Echobell ustaw typ powiadomienia na „Połączenie” (Calling) i użyj takiego szablonu:
- Tytuł:
Critical Temperature Alert - Treść:
{{location}} temperature is {{temperature}}°C - Immediate attention required!
Integracja z systemem bezpieczeństwa
Skonfiguruj kompleksowy monitoring bezpieczeństwa:
automation:
- alias: "Security Breach Detection"
trigger:
- platform: state
entity_id:
- binary_sensor.motion_detector_1
- binary_sensor.motion_detector_2
- binary_sensor.window_sensor
to: "on"
condition:
- condition: state
entity_id: alarm_control_panel.home_alarm
state: "armed_away"
action:
- service: rest_command.echobell_notify
data:
title: "🚨 Security Alert"
message: "{{ trigger.to_state.attributes.friendly_name }} detected activity while system armed"
sensor: "{{ trigger.entity_id }}"
timestamp: "{{ now().isoformat() }}"
Powiadomienia ze sprzętu AGD
Śledź cykle pracy urządzeń i dowiedz się, gdy się zakończą:
automation:
- alias: "Washing Machine Complete"
trigger:
- platform: state
entity_id: sensor.washing_machine_power
to: "0"
for:
minutes: 3
action:
- service: notify.echobell
data:
title: "Washing Machine Done"
message: "Your laundry is ready to be moved to the dryer"
Monitoring warunków otoczenia
Śledź jakość powietrza, wilgotność i inne parametry środowiskowe:
automation:
- alias: "High CO2 Alert"
trigger:
- platform: numeric_state
entity_id: sensor.living_room_co2
above: 1000
action:
- service: rest_command.echobell_notify
data:
title: "Air Quality Warning"
message: "CO2 level in living room is {{ states('sensor.living_room_co2') }} ppm. Consider ventilating."
Inteligentne filtrowanie przy użyciu warunków
Możesz użyć warunków Echobell, aby filtrować powiadomienia według wybranych kryteriów. Na przykład powiadamiać tylko o określonych porach albo wtedy, gdy wartości przekroczą progi:
Ustaw warunek w swoim kanale Echobell:
severity == "critical" || (hour >= 22 || hour <= 7)
Powiadomienia zostaną wysłane tylko wtedy, gdy waga alertu jest krytyczna LUB gdy jest noc (od 22:00 do 7:00).
W automatyzacji Home Assistant dołącz odpowiednie dane:
action:
- service: rest_command.echobell_notify
data:
title: "Temperature Alert"
message: "Freezer temperature: {{ states('sensor.freezer_temp') }}°C"
severity: "{% if states('sensor.freezer_temp') | float > -10 %}critical{% else %}normal{% endif %}"
hour: "{{ now().hour }}"
Wysyłanie danych z czujników
Do powiadomień Echobell możesz przekazać dowolne dane z czujników Home Assistant:
rest_command:
echobell_sensor_update:
url: "https://hook.echobell.one/t/<channel-token>"
method: POST
content_type: "application/json"
payload: >
{
"sensor_name": "{{ sensor_name }}",
"current_value": "{{ current_value }}",
"unit": "{{ unit }}",
"state": "{{ state }}",
"timestamp": "{{ timestamp }}"
}
Obsługa nagłówków HTTP
Echobell ma dostęp do nagłówków HTTP z żądań webhooka. Przydaje się to przy uwierzytelnianiu lub śledzeniu:
rest_command:
echobell_with_headers:
url: "https://hook.echobell.one/t/<channel-token>"
method: POST
headers:
X-Home-Assistant-Instance: "{{ instance_name }}"
X-Automation-ID: "{{ automation_id }}"
content_type: "application/json"
payload: '{"message": "{{ message }}"}'
W szablonie Echobell odwołasz się do nagłówków tak:
{{header["x-home-assistant-instance"]}}
Diagnostyka i testowanie
Przetestuj webhook
Skorzystaj z Narzędzi programisty → Usługi w Home Assistant, aby przetestować konfigurację:
- Wybierz
rest_command.echobell_notify - Wpisz dane testowe:
title: "Test Notification"
message: "This is a test from Home Assistant"
- Kliknij „Wywołaj usługę”
- Sprawdź powiadomienie w aplikacji Echobell
Sprawdź logi Home Assistant
Jeśli powiadomienia nie docierają, zajrzyj do logów Home Assistant:
# W Home Assistant przejdź do:
Settings → System → Logs
# Albo sprawdź plik dziennika:
config/home-assistant.log
Poszukaj błędów dotyczących rest_command lub żądań HTTP do hook.echobell.one.
Zweryfikuj adres URL webhooka
Upewnij się, że adres URL webhooka jest poprawny:
- Powinien zaczynać się od
https://hook.echobell.one/t/ - Token musi być dołączony
- Bez dodatkowych spacji i znaków
Kwestie wydajnościowe
Ograniczanie częstotliwości
Webhooki Echobell podlegają ograniczeniom częstotliwości, które chronią przed nadużyciami. Przy czujnikach o wysokiej częstotliwości:
- Nie wyzwalaj powiadomienia przy każdej aktualizacji czujnika
- Użyj
forw wyzwalaczach, aby wygasić drgania:
trigger:
- platform: numeric_state
entity_id: sensor.temperature
above: 30
for:
minutes: 5 # Wyzwól dopiero po 5 minutach powyżej progu
Grupowanie aktualizacji
Przy wielu powiązanych zdarzeniach rozważ połączenie ich w jedno powiadomienie:
automation:
- alias: "Daily Home Summary"
trigger:
- platform: time
at: "09:00:00"
action:
- service: rest_command.echobell_notify
data:
title: "Morning Home Summary"
message: >
Temperature: {{ states('sensor.temperature') }}°C
Humidity: {{ states('sensor.humidity') }}%
Energy today: {{ states('sensor.daily_energy') }} kWh
Windows open: {{ expand(states.binary_sensor) | selectattr('state', 'eq', 'on') | selectattr('attributes.device_class', 'eq', 'window') | list | count }}
Dobre praktyki bezpieczeństwa
Chroń adres URL webhooka
- Nigdy nie umieszczaj adresów URL webhooków w publicznych repozytoriach
- Do danych wrażliwych używaj mechanizmu secrets w Home Assistant
- Okresowo zmieniaj tokeny webhooków
Użycie secrets w configuration.yaml:
# secrets.yaml
echobell_webhook: "https://hook.echobell.one/t/<channel-token>"
# configuration.yaml
rest_command:
echobell_notify:
url: !secret echobell_webhook
method: POST
content_type: "application/json"
payload: '{"title": "{{ title }}", "message": "{{ message }}"}'
Ograniczaj dane wrażliwe
Uważaj na to, jakie dane umieszczasz w powiadomieniach:
# Dobrze - informacja ogólna
message: "Motion detected in living room"
# Unikaj - dane wrażliwe
message: "Security code: 1234, camera feed: http://..."
Rozwiązywanie typowych problemów
Powiadomienia nie docierają
- Sprawdź łączność sieciową: upewnij się, że instancja Home Assistant ma dostęp do internetu
- Zweryfikuj adres URL webhooka: skopiuj i wklej go uważnie, razem z tokenem
- Sprawdź aplikację Echobell: upewnij się, że subskrybujesz dany kanał
- Przejrzyj logi Home Assistant: poszukaj błędów HTTP lub przekroczeń limitu czasu
Błędy szablonów
Jeśli szablony nie renderują się poprawnie:
- Przetestuj szablony w Narzędziach programisty → Szablon
- Upewnij się, że nazwy zmiennych zgadzają się między Home Assistant a Echobell
- Sprawdź, czy nie ma literówek w składni:
{{variable}}, a nie{{ variable}}
Automatyzacja się nie wyzwala
- Zweryfikuj warunki wyzwalania w Home Assistant
- Uruchom automatyzację ręcznie z Narzędzi programisty
- Sprawdź, czy stany encji odpowiadają konfiguracji wyzwalacza
- Przeanalizuj ślady (traces) automatyzacji
Przykład: kompletny system bezpieczeństwa
Oto rozbudowany przykład integrujący wiele czujników bezpieczeństwa:
# configuration.yaml
rest_command:
echobell_security:
url: !secret echobell_security_webhook
method: POST
content_type: "application/json"
payload: >
{
"event_type": "{{ event_type }}",
"location": "{{ location }}",
"sensor": "{{ sensor }}",
"timestamp": "{{ timestamp }}",
"alarm_state": "{{ alarm_state }}"
}
# automations.yaml
- alias: "Security Event Handler"
trigger:
- platform: state
entity_id:
- binary_sensor.front_door
- binary_sensor.back_door
- binary_sensor.garage_door
- binary_sensor.motion_hallway
- binary_sensor.motion_living_room
to: "on"
action:
- service: rest_command.echobell_security
data:
event_type: "{{ 'door' if 'door' in trigger.entity_id else 'motion' }}"
location: "{{ trigger.to_state.attributes.friendly_name }}"
sensor: "{{ trigger.entity_id }}"
timestamp: "{{ now().strftime('%Y-%m-%d %H:%M:%S') }}"
alarm_state: "{{ states('alarm_control_panel.home_alarm') }}"
W Echobell ustaw szablony:
- Tytuł:
Security Alert: {{event_type | upper}} - Treść:
{{location}} activated at {{timestamp}} (Alarm: {{alarm_state}})
Kolejne kroki
Skoro Echobell działa już z Home Assistant:
- Poznaj typy powiadomień i różne poziomy pilności alertów
- Dowiedz się, jak warunki pozwalają inteligentnie filtrować powiadomienia
- Zajrzyj do zmiennych szablonu i zaawansowanego formatowania wiadomości
- Przeczytaj o dobrych praktykach dla webhooków, aby zoptymalizować integrację