Интеграция с Home Assistant — оповещения умного дома
Подключите Home Assistant к Echobell и получайте мгновенные оповещения умного дома: события охраны, движения, температуры и автоматизаций в виде push-уведомлений или звонков.
Home Assistant — мощная платформа домашней автоматизации с открытым исходным кодом, в которой на первом месте локальное управление и приватность. Подключив Echobell к Home Assistant, вы будете получать мгновенные уведомления и даже звонки, когда в умном доме происходит что-то важное: сработала охрана, температура вышла за порог или запустился триггер автоматизации.
Это руководство описывает, как настроить Echobell на приём уведомлений от автоматизаций Home Assistant через вебхуки или сервис RESTful Notify.
Предварительные требования
Перед началом убедитесь, что у вас есть:
- Приложение Echobell / Google Play, установленное на мобильном устройстве
- Активный канал Echobell (создайте его в приложении, если ещё не создали)
- Запущенный экземпляр Home Assistant (рекомендуется версия 2023.1 или новее)
- Доступ к конфигурации Home Assistant
Способ 1: вебхук-триггеры (рекомендуется)
Вебхук — самый гибкий вариант: он позволяет передавать произвольные данные и использовать переменные шаблонов в уведомлениях.
Получите URL вебхука Echobell
- Откройте приложение Echobell и перейдите к своему каналу
- Нажмите на канал, чтобы открыть сведения
- Найдите URL вебхука в разделе Triggers
- Скопируйте URL — он выглядит так:
https://hook.echobell.one/t/<channel-token>
Создайте автоматизацию в Home Assistant
В Home Assistant уведомления Echobell можно отправлять через сервис rest_command. Сначала добавьте REST-команду в 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 }}"}'Замените YOUR_TOKEN на ваш реальный токен вебхука Echobell.
После этого перезапустите Home Assistant, чтобы загрузить новую конфигурацию.
Использование в автоматизациях
Теперь этот сервис можно вызвать из любой автоматизации. Пример уведомления об открытии двери:
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') }}"Настройте шаблоны уведомлений
В настройках канала Echobell задайте шаблоны уведомлений, чтобы выводить данные из вебхука:
- Шаблон заголовка:
{{title}} - Шаблон текста:
{{message}}
Теперь при срабатывании автоматизации вы получите уведомление с заданными заголовком и текстом.
Способ 2: платформа RESTful Notify
Для более тесной интеграции можно подключить Echobell как сервис уведомлений (notify) в Home Assistant.
Конфигурация
Добавьте в configuration.yaml следующее:
notify:
- name: echobell
platform: rest
resource: https://hook.echobell.one/t/<channel-token>
method: POST_JSON
data:
title: "{{ title }}"
message: "{{ message }}"
Замените YOUR_TOKEN на токен вебхука Echobell и перезапустите Home Assistant.
Использование сервиса notify
Теперь Echobell можно использовать как любой другой сервис уведомлений:
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') }}%"
Продвинутые сценарии
Мониторинг температуры с критическими оповещениями
Используйте типы уведомлений, чтобы отправлять критические оповещения о температуре звонком:
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"}'
В канале Echobell установите тип уведомления «Звонок» и используйте такой шаблон:
- Заголовок:
Critical Temperature Alert - Текст:
{{location}} temperature is {{temperature}}°C - Immediate attention required!
Интеграция с системой охраны
Настройте полноценный охранный мониторинг:
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() }}"
Уведомления от бытовой техники
Следите за циклами работы техники и узнавайте об их завершении:
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"
Мониторинг среды
Отслеживайте качество воздуха, влажность и другие параметры окружающей среды:
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."
Умная фильтрация через условия
С помощью условий Echobell можно фильтровать уведомления по нужным критериям — например, уведомлять только в определённое время суток или когда значения превышают порог:
Задайте условие в канале Echobell:
severity == "critical" || (hour >= 22 || hour <= 7)
Уведомление отправится, только если severity равен critical ИЛИ сейчас ночь (с 22:00 до 7:00).
В автоматизации Home Assistant передайте нужные данные:
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 }}"
Передача данных с датчиков
В уведомления Echobell можно передавать любые данные датчиков 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 }}"
}
Работа с HTTP-заголовками
Echobell читает HTTP-заголовки запросов вебхука. Это удобно для аутентификации или трассировки:
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 }}"}'
В шаблоне Echobell обращайтесь к заголовкам так:
{{header["x-home-assistant-instance"]}}
Отладка и тестирование
Проверьте вебхук
Проверьте конфигурацию через Developer Tools → Services в Home Assistant:
- Выберите
rest_command.echobell_notify - Введите тестовые данные:
title: "Test Notification"
message: "This is a test from Home Assistant"
- Нажмите «Call Service»
- Проверьте, пришло ли уведомление в приложение Echobell
Проверьте логи Home Assistant
Если уведомления не приходят, посмотрите логи Home Assistant:
# In Home Assistant, go to:
Settings → System → Logs
# Or check the log file:
config/home-assistant.log
Ищите ошибки, связанные с rest_command или HTTP-запросами к hook.echobell.one.
Проверьте URL вебхука
Убедитесь, что URL вебхука указан верно:
- Он должен начинаться с
https://hook.echobell.one/t/ - Токен должен быть на месте
- Без лишних пробелов и символов
Что учитывать по производительности
Ограничение частоты
Для вебхуков Echobell действуют ограничения по частоте запросов — это защита от злоупотреблений. Для датчиков с частыми обновлениями:
- Не отправляйте уведомление при каждом обновлении датчика
- Используйте
forв триггерах, чтобы подавить дребезг:
trigger:
- platform: numeric_state
entity_id: sensor.temperature
above: 30
for:
minutes: 5 # Only trigger after 5 minutes above threshold
Объединение обновлений
Несколько связанных событий имеет смысл объединить в одно уведомление:
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 }}
Рекомендации по безопасности
Защитите URL вебхука
- Никогда не публикуйте URL вебхуков в открытых репозиториях
- Храните чувствительные данные в secrets Home Assistant
- Периодически меняйте токены вебхуков
Использование secrets в 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 }}"}'
Ограничьте объём чувствительных данных
Следите за тем, какие данные попадают в уведомления:
# Good - General information
message: "Motion detected in living room"
# Avoid - Sensitive details
message: "Security code: 1234, camera feed: http://..."
Решение типичных проблем
Уведомления не приходят
- Проверьте сеть: у экземпляра Home Assistant должен быть доступ в интернет
- Проверьте URL вебхука: скопируйте его целиком, вместе с токеном
- Проверьте приложение Echobell: убедитесь, что вы подписаны на канал
- Просмотрите логи Home Assistant: ищите ошибки HTTP или таймауты
Ошибки в шаблонах
Если шаблоны подставляются неверно:
- Проверьте шаблоны в Developer Tools → Template
- Убедитесь, что имена переменных совпадают в Home Assistant и Echobell
- Проверьте синтаксис на опечатки:
{{variable}}, а не{{ variable}}
Автоматизация не срабатывает
- Проверьте условия триггера в Home Assistant
- Запустите автоматизацию вручную из Developer Tools
- Убедитесь, что состояния сущностей соответствуют настройкам триггера
- Изучите трассировки автоматизации
Пример: полная настройка охранной системы
Развёрнутый пример с несколькими охранными датчиками:
# 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') }}"
В Echobell задайте шаблоны:
- Заголовок:
Security Alert: {{event_type | upper}} - Текст:
{{location}} activated at {{timestamp}} (Alarm: {{alarm_state}})
Дальнейшие шаги
Теперь, когда Echobell подключён к Home Assistant:
- Изучите типы уведомлений для разных уровней важности оповещений
- Разберитесь с условиями, чтобы фильтровать уведомления по смыслу
- Посмотрите переменные шаблонов для гибкого форматирования сообщений
- Прочитайте о рекомендациях по работе с вебхуками для оптимальной интеграции