Уведомления Home Assistant на телефон: приложение, Telegram, MAX

14 минчтения 23разделов Умный домрубрика

Умный дом должен уметь сообщать о важном: протечка, открытая дверь, севшая батарея датчика, человек у калитки. Самый удобный канал для этого — телефон. Уведомления Home Assistant на телефон настраиваются через официальное мобильное приложение: после входа система сама создаёт службу отправки, и остаётся вызывать её из автоматизаций. В статье разберём, как установить и настроить мобильное приложение Home Assistant, как отправить первое сообщение, сделать уведомления с кнопками, фото и разной степенью срочности, а также как подключить Telegram и мессенджер MAX и что делать, если сообщения не доходят.

Уведомления Home Assistant на телефон: приложение, Telegram, MAX
Фото: Acabashi, CC BY-SA 4.0 / Wikimedia Commons

1Кратко

  • Основной способ — официальное приложение Home Assistant: после входа появляется действие notify.mobile_app_<имя_устройства>, которое принимает title, message и data.
  • Имя действия не нужно угадывать: найдите его в «Инструменты разработчика > Действия» по запросу notify.mobile_app и сначала отправьте тестовое сообщение.
  • В data задаются кнопки, картинка, тег для замены сообщений, канал и срочность. Параметры для Android и iOS отличаются.
  • Telegram и MAX подключаются отдельными интеграциями и подходят как запасной канал или для общего чата семьи. Условия и ограничения у них свои.
  • Если уведомления не приходят, проверьте разрешения телефона, экономию заряда на Android и доступ в интернет у обеих сторон.

2Куда можно отправлять уведомления: сравнение каналов

Канал Как подключается Сильные стороны На что обратить внимание
Мобильное приложение Home Assistant Установка приложения и вход в систему Кнопки, фото, срочные сообщения, управление домом прямо из уведомления Нужны разрешения и интернет; на Android влияет экономия заряда
Постоянное уведомление в интерфейсе Встроенное действие persistent_notification.create Работает без внешних сервисов Телефон не будит, видно только в веб-интерфейсе
Telegram Интеграция Telegram bot и бот, созданный через BotFather Общий чат, история сообщений, отправка фото Нужен токен бота и идентификатор чата; доступность мессенджера зависит от вашей сети
MAX Пользовательская интеграция из сообщества, ставится через HACS Российский мессенджер, возможны кнопки и приём ответов Не входит в ядро Home Assistant; требования уточняйте в описании проекта
Электронная почта и сервисы-агрегаторы Встроенная интеграция SMTP или сторонний сервис Один вызов на несколько получателей и каналов Зависимость от внешнего сервиса, задержки
Уведомления Home Assistant на телефон: приложение, Telegram, MAX — иллюстрация
Фото: Vernon Chan, CC BY 2.0 / Wikimedia Commons

3Как устроены уведомления в Home Assistant

Любой канал вызывается действием notify.<что-то> с параметрами message, а при необходимости title и data. Для телефона это действие с именем вашего устройства. Кроме того, в системе есть универсальное действие notify.send_message: оно работает с сущностями-получателями типа notify, если интеграция их предоставляет. Какое именно действие предлагает ваш канал, видно в разделе «Инструменты разработчика > Действия». Освоив мобильные уведомления, вы так же легко переключитесь на другие каналы: меняется имя действия и набор полей в data.

4Что понадобится

  • Работающий Home Assistant и вход в него с телефона: из домашней сети либо по внешнему адресу, если вы настроили удалённый доступ.
  • Смартфон на Android или iPhone с официальным приложением Home Assistant. Устанавливайте только официальную сборку из доступного вам магазина приложений.
  • Разрешение на показ уведомлений в настройках телефона.
  • Интернет у телефона и у сервера: push-уведомления доставляются через сервис проекта, а не напрямую с вашего сервера на телефон.

5Установка и настройка мобильного приложения Home Assistant

  1. Установите приложение Home Assistant на телефон и откройте его.
  2. Если сервер в вашей сети виден по mDNS, приложение обнаружит его само. Если нет, нажмите ввод адреса вручную и укажите адрес в виде http://IP-адрес:8123 либо ваш внешний адрес.
  3. Войдите под своей учётной записью Home Assistant. Лучше завести отдельного пользователя для каждого члена семьи, чтобы уведомления и местоположение не смешивались.
  4. Разрешите приложению уведомления и, по желанию, доступ к геолокации. Геолокация нужна для автоматизаций «пришёл домой», уведомления она не требует.

После входа система регистрирует устройство. Проверить это можно в «Настройки > Устройства и службы», в интеграции «Mobile App»: там появится ваш телефон. Имя устройства задаётся в настройках самого приложения («Настройки приложения > Устройство» или похожий раздел; точное название зависит от версии приложения).

6Как узнать имя службы notify.mobile_app

Имя службы формируется из названия устройства: например, телефон «Ivan Phone» превращается в notify.mobile_app_ivan_phone. Чтобы не гадать:

  1. Откройте «Инструменты разработчика > Действия» (в старых версиях этот раздел назывался «Службы»).
  2. Введите в поле поиска notify.mobile_app.
  3. В списке найдите вариант с названием вашего телефона.

Именно эту строку вы будете подставлять во все примеры ниже. Если телефонов несколько, у каждого будет своя служба.

7Тестовое уведомление на телефон

В том же разделе действий выберите нужную службу и переключитесь в режим YAML. Вставьте:

action: notify.mobile_app_ivan_phone
data:
  title: "Проверка связи"
  message: "Это тестовое уведомление из Home Assistant"

Нажмите «Выполнить действие». Через несколько секунд сообщение должно появиться на телефоне. Если этого не произошло, переходите к разделу с ошибками внизу.

8Уведомление из автоматизации

Теперь используем службу в реальном сценарии: сообщать, что входная дверь осталась открытой.

alias: "Дверь открыта слишком долго"
mode: single
triggers:
  - trigger: state
    entity_id: binary_sensor.front_door
    to: "on"
    for: "00:05:00"
conditions: []
actions:
  - action: notify.mobile_app_ivan_phone
    data:
      title: "Входная дверь"
      message: "Дверь открыта уже более пяти минут"

В актуальных версиях используются ключи triggers:, actions:, trigger: state и action:. В старых вам встретятся platform: state и service: notify.mobile_app_...; смысл тот же, а новый синтаксис предпочтительнее.

Чтобы отправить сообщение сразу нескольким людям, можно добавить несколько действий подряд или создать группу получателей (см. ниже).

9Значения датчиков в тексте уведомления

В сообщение можно подставлять данные с помощью шаблонов:

actions:
  - action: notify.mobile_app_ivan_phone
    data:
      message: "Заряд пылесоса: {{ states('sensor.vacuum_battery') }} %"

Если нужна красивая подпись с названием сущности, используйте state_attr() или trigger.to_state.name внутри автоматизации. Правильность шаблона проверяйте в «Инструменты разработчика > Шаблон», прежде чем сохранять.

10Уведомления с кнопками (actionable)

Мобильное приложение умеет показывать в уведомлении кнопки. Нажатие на кнопку отправляет в Home Assistant событие, которое можно обработать другой автоматизацией. Это превращает сообщение в мини-пульт.

Автоматизация, которая спрашивает про гараж:

alias: "Гараж: вопрос про ворота"
mode: single
triggers:
  - trigger: state
    entity_id: cover.garage_door
    to: "open"
    for: "00:10:00"
actions:
  - action: notify.mobile_app_ivan_phone
    data:
      title: "Ворота гаража"
      message: "Ворота открыты десять минут. Закрыть?"
      data:
        actions:
          - action: "CLOSE_GARAGE"
            title: "Закрыть"
          - action: "IGNORE_GARAGE"
            title: "Оставить"

Автоматизация, которая реагирует на нажатие:

alias: "Гараж: обработка кнопки"
mode: single
triggers:
  - trigger: event
    event_type: mobile_app_notification_action
    event_data:
      action: "CLOSE_GARAGE"
actions:
  - action: cover.close_cover
    target:
      entity_id: cover.garage_door

Обратите внимание: идентификаторы кнопок (CLOSE_GARAGE) вы придумываете сами, они должны совпадать в обеих автоматизациях. В документации приложения рекомендуется использовать уникальные строки, чтобы случайно не перехватить чужое событие.

11Фото с камеры в уведомлении и действие по нажатию

К уведомлению можно прикрепить картинку, например снимок с камеры. Для этого в блоке data указывается путь к изображению:

actions:
  - action: notify.mobile_app_ivan_phone
    data:
      title: "Звонок в дверь"
      message: "У входа кто-то есть"
      data:
        image: "/api/camera_proxy/camera.front_door"
        tag: "doorbell"

Путь вида /api/camera_proxy/camera.<имя> ведёт к снимку камеры внутри Home Assistant. Приложение скачивает изображение, используя вашу авторизацию, поэтому адрес должен быть доступен телефону, иначе картинка не покажется. Параметр tag задаёт метку: новое уведомление с тем же тегом заменит предыдущее, а не добавится к нему. Это спасает от десятка одинаковых сообщений.

Чтобы по нажатию на уведомление открывалась нужная страница панели, добавляют параметр действия при нажатии. На Android он называется clickAction, на iOS используется url; значением может быть путь внутри интерфейса, например /lovelace/cameras. Точное имя вкладки зависит от вашей панели. Если вы пользуетесь обеими платформами, сверяйтесь с документацией приложения, так как поведение параметров со временем уточняется.

12Срочные уведомления: важность на Android и iOS

Не все сообщения одинаково срочны. Сообщение о завершении стирки подождёт, сообщение о задымлении — нет.

На Android используются каналы уведомлений и параметры приоритета:

actions:
  - action: notify.mobile_app_ivan_phone
    data:
      title: "Пожарная тревога"
      message: "Сработал датчик дыма на кухне"
      data:
        channel: "alarm_stream"
        importance: high
        ttl: 0
        priority: high

Канал alarm_stream позволяет сообщению проигрываться как будильник, в обход режима «Не беспокоить», если вы разрешили это в настройках. Параметры ttl: 0 и priority: high просят доставить сообщение немедленно, даже если телефон в режиме сна. Подробности и список каналов смотрите в документации мобильного приложения.

На iOS применяется уровень прерывания:

actions:
  - action: notify.mobile_app_iphone
    data:
      title: "Пожарная тревога"
      message: "Сработал датчик дыма на кухне"
      data:
        push:
          interruption-level: critical

Приложение для Android умеет и озвучивать текст сообщения (режим TTS): в message указывается значение TTS, а текст для проговаривания передаётся в tts_text. Это полезно для сигнала тревоги, который должен быть слышен, даже если вы не смотрите на экран. Название параметров и поддерживаемые возможности проверяйте в документации приложения для вашей версии.

Критические уведомления на iPhone требуют отдельного разрешения: приложение попросит его при первом использовании или его можно включить в настройках уведомлений телефона. Не злоупотребляйте критическим уровнем: если телефон будет «кричать» по пустякам, вы очень скоро его отключите.

13Как заменить или убрать уведомление: tag и clear_notification

Когда дверь закрыли, висящее сообщение о ней уже не нужно. Его можно снять командой с тем же тегом:

actions:
  - action: notify.mobile_app_ivan_phone
    data:
      message: clear_notification
      data:
        tag: "front_door_open"

Для этого исходное уведомление нужно было отправить с tag: "front_door_open". Так вы получаете аккуратную ленту без устаревших тревог.

14Группы получателей

Если уведомления должны приходить всей семье, удобно описать группу в configuration.yaml:

notify:
  - name: family
    platform: group
    services:
      - action: mobile_app_ivan_phone
      - action: mobile_app_anna_phone

Группу можно создать и без YAML: в помощниках («Настройки > Устройства и службы > Помощники») есть тип «Группа» с вариантом для уведомлений, если он доступен в вашей версии. После перезапуска (или перезагрузки соответствующей конфигурации) появится служба notify.family, и вызов action: notify.family отправит сообщение обоим телефонам. В более старых версиях внутри services: использовался ключ service: вместо action:. Если вы не уверены, какой формат принимает ваша версия, посмотрите подсказки редактора или журнал ошибок после проверки конфигурации. Часто бывает удобнее вовсе обойтись без группы и оформить два действия подряд в нужной автоматизации.

15Уведомления Home Assistant в Telegram

Telegram удобен тем, что сообщения остаются в истории чата, а в чат можно добавить всю семью. Для подключения нужен бот и интеграция Telegram bot, встроенная в Home Assistant.

  1. Создайте бота у официального бота BotFather в Telegram и сохраните выданный токен. Не публикуйте токен: любой, кто его знает, управляет ботом.
  2. Узнайте идентификатор чата, в который бот должен писать. Для личного чата и группы он разный; способы получения описаны в документации интеграции.
  3. В «Настройки > Устройства и службы > Добавить интеграцию» выберите Telegram bot, введите токен и укажите способ получения обновлений. Режим с веб-хуками требует внешнего HTTPS-адреса, режим опроса работает без него.
  4. Найдите в «Инструменты разработчика > Действия» действия telegram_bot и отправьте тестовое сообщение. Поле получателя (идентификатор чата) называется по-разному в разных версиях, поэтому ориентируйтесь на подсказки интерфейса.
actions:
  - action: telegram_bot.send_message
    data:
      message: "Датчик протечки на кухне сработал"

Добавьте в блок data поле получателя, которое требует ваша версия интеграции. Фотографии и документы отправляются отдельными действиями этой же интеграции. Помните об ограничении: если Telegram в вашей сети работает нестабильно, этот канал не годится как единственный для срочных тревог.

16Уведомления в мессенджер MAX

Для MAX в ядре Home Assistant встроенной интеграции нет, но есть пользовательская от сообщества (проект MaxNotify). Описание ниже основано на README проекта; перед установкой перечитайте его, так как условия и требования меняются.

  • Установка. Рекомендуется через HACS как пользовательский репозиторий, затем перезапуск Home Assistant и добавление интеграции в «Устройства и службы». Возможна и ручная копия каталога интеграции.
  • Способы подключения. Через официальный API MAX с токеном бота либо через стороннюю прокси-службу. Использование стороннего сервиса — на ваш страх и риск: его работа не контролируется автором интеграции, и у него свои ограничения.
  • Возможности. Отправка текста, фото, документов и видео, несколько получателей, кнопки в сообщениях и приём ответов, которые становятся событиями для автоматизаций.
  • Ограничения. Проект требует достаточно свежей версии Home Assistant. Регистрация официальных ботов в MAX рассчитана на юридических лиц и индивидуальных предпринимателей. Для приёма сообщений через веб-хук нужен публично доступный HTTPS-адрес. Для официального API по описанию проекта могут понадобиться дополнительные корневые сертификаты.

Действие для отправки и его поля создаёт сама интеграция, поэтому после установки найдите их в «Инструменты разработчика > Действия». Выдуманных параметров приводить не будем: берите их из описания проекта.

17Какой канал выбрать и как сделать резервный

  • Срочные тревоги (дым, протечка, вскрытие): приложение Home Assistant с критическим уровнем или каналом будильника, плюс запасной канал в мессенджер.
  • Информационные сообщения (стирка закончилась, низкий заряд): обычное уведомление приложения без звука.
  • Общие семейные оповещения: группа получателей либо чат в мессенджере.
  • Технические сообщения для администратора: постоянное уведомление в интерфейсе.

Чтобы сбой одного канала не остановил весь сценарий, отметьте отправку как необязательную параметром continue_on_error:

actions:
  - action: notify.mobile_app_ivan_phone
    continue_on_error: true
    data:
      title: "Протечка"
      message: "Сработал датчик на кухне"
  - action: telegram_bot.send_message
    data:
      message: "Протечка: сработал датчик на кухне"

Если в приложении отключены уведомления, второй канал всё равно получит сообщение. Для действительно критичных систем не полагайтесь только на уведомления: добавьте локальную сирену или световую индикацию.

18Мобильное приложение — это ещё и датчики

Приложение не только принимает сообщения. Оно передаёт в систему данные телефона: уровень заряда, состояние зарядки, тип сети, а при разрешении — геолокацию. Эти сущности создаются автоматически и видны в интеграции «Mobile App». Их можно использовать как триггеры: например, предупреждать, что телефон жены разряжается, или запускать сценарий, когда вы подъезжаете к дому. Список включённых датчиков меняется в настройках приложения: лишние лучше отключить, чтобы не нагружать батарею.

19Типичные ошибки и решения

Симптом Вероятная причина Решение
Службы notify.mobile_app_... нет в списке Приложение не вошло в систему или устройство не зарегистрировано Проверьте интеграцию «Mobile App» в устройствах и службах, при необходимости выйдите из приложения и войдите снова
Действие выполняется без ошибок, но на телефоне пусто Запрещены уведомления в настройках телефона или нет интернета на одной из сторон Проверьте разрешения приложения, подключение к интернету на телефоне и на сервере
Android присылает с большой задержкой Система экономии заряда «усыпляет» приложение Исключите приложение из оптимизации батареи, используйте ttl: 0 и priority: high
Картинка с камеры не показывается Адрес недоступен с телефона или камера недоступна Проверьте путь, откройте его в приложении, убедитесь, что внешний адрес настроен
Кнопки не срабатывают Идентификаторы в уведомлении и в триггере события не совпадают Сверьте регистр и написание значения action
Ошибка в YAML при сохранении Неверные отступы или кавычки Смотрите подсказку редактора; шаблоны и значения с двоеточием берите в кавычки
Уведомления «склеиваются» или дублируются Не задан tag Добавьте тег для сообщений одного типа
Android без сервисов Google не получает push Доставка через сервис проекта опирается на облачные push-сервисы телефона Посмотрите в настройках уведомлений приложения режим постоянного соединения с вашим сервером (название зависит от версии); либо добавьте запасной канал в мессенджере
Telegram молчит Неверный токен или идентификатор чата, бот не добавлен в группу, мессенджер недоступен в сети Проверьте токен и чат, напишите боту первое сообщение, проверьте доступность сервиса
Сообщения в MAX не уходят Не выполнены требования проекта: версия, сертификаты, права бота в чате Сверьтесь с README интеграции и журналом ошибок Home Assistant

20Несколько рекомендаций

  • Пишите сообщения так, чтобы суть была ясна без открытия приложения: что случилось и где.
  • Разделяйте срочные и информационные сообщения: для первых используйте отдельный канал или критический уровень.
  • Ограничивайте частоту: условие по времени, параметр for в триггере и tag не дадут превратить телефон в источник шума.
  • Не вшивайте токены и пароли в тексты автоматизаций, которыми вы делитесь с другими.
  • Новые уведомления проверяйте сначала в «Инструменты разработчика > Действия», а потом встраивайте в автоматизации.

21Пример: уведомление при низком заряде батареи датчика

Беспроводные датчики разряжаются незаметно, и узнать об этом лучше заранее. Уведомление придёт один раз при пересечении порога, а не будет повторяться при каждом обновлении значения.

alias: "Батарея датчика разряжена"
mode: single
triggers:
  - trigger: numeric_state
    entity_id: sensor.hallway_motion_battery
    below: 15
actions:
  - action: notify.mobile_app_ivan_phone
    data:
      title: "Низкий заряд"
      message: "Датчик в коридоре: заряд {{ states('sensor.hallway_motion_battery') }} %"
      data:
        tag: "battery_hallway_motion"

Идентификатор сущности зависит от вашего датчика и интеграции, поэтому найдите его в списке сущностей. Такой же приём работает для любых числовых значений: температуры в подвале, уровня воды, заряда пылесоса. Если вы хотите, чтобы сообщение приходило только в дневное время, добавьте условие по времени и настройте отдельное напоминание на утро.

22Постоянные уведомления внутри интерфейса

Для технических сообщений, которые не нужно отправлять на телефон, подойдёт действие persistent_notification.create:

actions:
  - action: persistent_notification.create
    data:
      title: "Проверка"
      message: "Резервная копия не создавалась более недели"
      notification_id: "backup_warning"

Уведомление появится в боковой панели интерфейса и будет висеть, пока вы его не закроете. Параметр notification_id позволяет обновить или удалить сообщение позже действием persistent_notification.dismiss.

23Итог

Чтобы настроить уведомления Home Assistant на телефон, достаточно установить мобильное приложение, войти в систему и найти служебное имя вида notify.mobile_app_.... Дальше всё строится на одном действии notify с параметрами title, message и data. Добавляйте теги, кнопки, изображения и уровни важности по мере необходимости, и сообщения станут не просто оповещениями, а удобным способом управлять домом на расстоянии.

Вопросы и ответы

Как узнать имя службы уведомлений для моего телефона?

Откройте Инструменты разработчика, раздел Действия (в старых версиях Службы), и введите в поиск notify.mobile_app. В списке будет вариант с названием вашего устройства.

Почему уведомления не приходят на телефон?

Проверьте разрешения на уведомления в настройках телефона, интернет у телефона и сервера, а на Android ещё и ограничения экономии заряда для приложения. Тестовое сообщение из Инструментов разработчика поможет понять, где обрыв.

Можно ли добавить в уведомление кнопки?

Да. В блоке data указывается список actions с идентификаторами и названиями кнопок, а нажатие обрабатывается автоматизацией по событию mobile_app_notification_action.

Как отправить уведомление сразу нескольким людям?

Добавьте в автоматизацию несколько действий подряд, по одному на каждый телефон, или создайте группу получателей notify. Для общего чата подойдёт Telegram.

Как заменить или убрать старое уведомление?

Отправляйте сообщения с одинаковым tag, и новое заменит прежнее. Чтобы убрать уведомление, отправьте message: clear_notification с тем же тегом.

Можно ли получать уведомления Home Assistant в MAX?

Да, через пользовательскую интеграцию из сообщества, которая ставится через HACS. Встроенной интеграции в ядре нет, поэтому требования, версии и порядок настройки смотрите в описании проекта.

Остались вопросы?

Задайте свой — после модерации он появится на форуме, ответить сможет редакция и другие читатели.

Войдите, чтобы задать вопрос или ответить другим.