---
title: "Интеграция с Home Assistant — оповещения умного дома"
sidebarTitle: Home Assistant
description: "Подключите Home Assistant к Echobell и получайте мгновенные оповещения умного дома: события охраны, движения, температуры и автоматизаций в виде push-уведомлений или звонков."
---

import { Step, Steps } from "fumadocs-ui/components/steps";

# Интеграция с Home Assistant

[Home Assistant](https://www.home-assistant.io/) — мощная платформа домашней автоматизации с открытым исходным кодом, в которой на первом месте локальное управление и приватность. Подключив Echobell к Home Assistant, вы будете получать мгновенные уведомления и даже звонки, когда в умном доме происходит что-то важное: сработала охрана, температура вышла за порог или запустился триггер автоматизации.

Это руководство описывает, как настроить Echobell на приём уведомлений от автоматизаций Home Assistant через вебхуки или сервис RESTful Notify.

## Предварительные требования

Перед началом убедитесь, что у вас есть:

- [Приложение Echobell](https://apps.apple.com/app/apple-store/id6743597198?pt=128151925&ct=docs-developer-home-assistant-ru&mt=8) / [Google Play](https://play.google.com/store/apps/details?id=one.echobell.echobellandroid), установленное на мобильном устройстве
- Активный канал Echobell (создайте его в приложении, если ещё не создали)
- Запущенный экземпляр Home Assistant (рекомендуется версия 2023.1 или новее)
- Доступ к конфигурации Home Assistant

## Способ 1: вебхук-триггеры (рекомендуется)

Вебхук — самый гибкий вариант: он позволяет передавать произвольные данные и использовать [переменные шаблонов](/docs/template) в уведомлениях.

<Steps>
<Step>
### Получите URL вебхука Echobell

1. Откройте приложение Echobell и перейдите к своему каналу
2. Нажмите на канал, чтобы открыть сведения
3. Найдите **URL вебхука** в разделе Triggers
4. Скопируйте URL — он выглядит так: `https://hook.echobell.one/t/<channel-token>`
</Step>
<Step>

### Создайте автоматизацию в Home Assistant

В Home Assistant уведомления Echobell можно отправлять через сервис `rest_command`. Сначала добавьте REST-команду в `configuration.yaml`:

```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, чтобы загрузить новую конфигурацию.

</Step>
<Step>
### Использование в автоматизациях

Теперь этот сервис можно вызвать из любой автоматизации. Пример уведомления об открытии двери:

```yaml
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') }}"
```

</Step>
<Step>
### Настройте шаблоны уведомлений

В настройках канала Echobell задайте шаблоны уведомлений, чтобы выводить данные из вебхука:

- **Шаблон заголовка**: `{{title}}`
- **Шаблон текста**: `{{message}}`

Теперь при срабатывании автоматизации вы получите уведомление с заданными заголовком и текстом.

</Step>
</Steps>

## Способ 2: платформа RESTful Notify

Для более тесной интеграции можно подключить Echobell как сервис уведомлений (notify) в Home Assistant.

### Конфигурация

Добавьте в `configuration.yaml` следующее:

```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 можно использовать как любой другой сервис уведомлений:

```yaml
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') }}%"
```

## Продвинутые сценарии

### Мониторинг температуры с критическими оповещениями

Используйте [типы уведомлений](/docs/notification), чтобы отправлять критические оповещения о температуре звонком:

```yaml
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 установите [тип уведомления](/docs/notification) «Звонок» и используйте такой шаблон:

- **Заголовок**: `Critical Temperature Alert`
- **Текст**: `{{location}} temperature is {{temperature}}°C - Immediate attention required!`

### Интеграция с системой охраны

Настройте полноценный охранный мониторинг:

```yaml
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() }}"
```

### Уведомления от бытовой техники

Следите за циклами работы техники и узнавайте об их завершении:

```yaml
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"
```

### Мониторинг среды

Отслеживайте качество воздуха, влажность и другие параметры окружающей среды:

```yaml
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](/docs/conditions) можно фильтровать уведомления по нужным критериям — например, уведомлять только в определённое время суток или когда значения превышают порог:

Задайте условие в канале Echobell:

```
severity == "critical" || (hour >= 22 || hour <= 7)
```

Уведомление отправится, только если severity равен critical ИЛИ сейчас ночь (с 22:00 до 7:00).

В автоматизации Home Assistant передайте нужные данные:

```yaml
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:

```yaml
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-заголовки запросов вебхука. Это удобно для аутентификации или трассировки:

```yaml
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:

1. Выберите `rest_command.echobell_notify`
2. Введите тестовые данные:

```yaml
title: "Test Notification"
message: "This is a test from Home Assistant"
```

3. Нажмите «Call Service»
4. Проверьте, пришло ли уведомление в приложение Echobell

### Проверьте логи Home Assistant

Если уведомления не приходят, посмотрите логи Home Assistant:

```bash
# 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` в триггерах, чтобы подавить дребезг:

```yaml
trigger:
  - platform: numeric_state
    entity_id: sensor.temperature
    above: 30
    for:
      minutes: 5 # Only trigger after 5 minutes above threshold
```

### Объединение обновлений

Несколько связанных событий имеет смысл объединить в одно уведомление:

```yaml
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`:

```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 }}"}'
```

### Ограничьте объём чувствительных данных

Следите за тем, какие данные попадают в уведомления:

```yaml
# Good - General information
message: "Motion detected in living room"

# Avoid - Sensitive details
message: "Security code: 1234, camera feed: http://..."
```

## Решение типичных проблем

### Уведомления не приходят

1. **Проверьте сеть**: у экземпляра Home Assistant должен быть доступ в интернет
2. **Проверьте URL вебхука**: скопируйте его целиком, вместе с токеном
3. **Проверьте приложение Echobell**: убедитесь, что вы подписаны на канал
4. **Просмотрите логи Home Assistant**: ищите ошибки HTTP или таймауты

### Ошибки в шаблонах

Если шаблоны подставляются неверно:

1. Проверьте шаблоны в Developer Tools → Template
2. Убедитесь, что имена переменных совпадают в Home Assistant и Echobell
3. Проверьте синтаксис на опечатки: `{{variable}}`, а не `{{ variable}}`

### Автоматизация не срабатывает

1. Проверьте условия триггера в Home Assistant
2. Запустите автоматизацию вручную из Developer Tools
3. Убедитесь, что состояния сущностей соответствуют настройкам триггера
4. Изучите трассировки автоматизации

## Пример: полная настройка охранной системы

Развёрнутый пример с несколькими охранными датчиками:

```yaml
# 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:

- Изучите [типы уведомлений](/docs/notification) для разных уровней важности оповещений
- Разберитесь с [условиями](/docs/conditions), чтобы фильтровать уведомления по смыслу
- Посмотрите [переменные шаблонов](/docs/template) для гибкого форматирования сообщений
- Прочитайте о [рекомендациях по работе с вебхуками](/docs/webhook) для оптимальной интеграции

## Полезные ресурсы

- [Документация Home Assistant по REST Command](https://www.home-assistant.io/integrations/rest_command/)
- [Платформа RESTful Notify в Home Assistant](https://www.home-assistant.io/integrations/notify.rest/)
- [Документация по вебхукам Echobell](/docs/webhook)
- [Система шаблонов Echobell](/docs/template)
