54. Оповещения в Home Assistant. Вложенные группы.


Среда управления умным домом Home Assistant позволяет отправлять сообщения на устройства, на которых установлен её клиент. Например на смартфоны, с которых можно и управлять домом. Сами сообщения могут содержать разнообразную информацию указанную как в ручном, так и в автоматическом режиме.

В статье рассмотрим пример работы с приложением установленном на смартфоне с операционной системой Android.
Само приложение можно найти в Play Market'е по этой ссылке.
Для корректной работы приложения должен быть настроен удалённый доступ к самой системе ХА. (ссылка1, ссылка2, ссылка3)

Итак, доступ настроен, приложение установлено, в интерфейс зашли. Как же отправлять оповещения на телефон?
Для начала стоит помнить что у всего есть имя, и поэтому смартфон с приложением тоже "прописался" в системе с каким-то именем. Кстати его можно было указать в настройках в момент первичного подключения, или изменить позже с того же устройства.

Для того чтобы отправить оповещение на смартфон, используется сервис оповещения.
Сервисов оповещения может быть несколько, по одному на каждое устройство, на котором установлен клиент Home Assistant.

Первичное знакомство с этим сервисом и проверку отправки можно осуществить в одноимённой закладке в разделе разработчика.


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

пример оповещения на смартфоне

Более полную и подробную информацию по теме можно получить из официальной документации по этой ссылке.

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

К сожалению, на момент написания этого материала, группирование устройств для отправки сообщений ещё не реализовано в графическом интерфейсе. Однако легко осуществляется с помощью редактирования основного конфигурационного файла configuration.yaml.
В него нужно добавить всего несколько строк:
notify:
  - name: "Family"
    platform: group
    services:
    - service: user1_phone1
    - service: user2_phone1 
Вместо user1_phone1 и user2_phone1, соответственно, подставив идентификаторы необходимых устройств.
И тогда, после перезагрузки конфигурации появится новая служба:

Оповещения отправленные на этот сервис буду приходить на все вышеперечисленные устройства.

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

Итак, есть устройства "юзер1" и "юзер2", они объединены в группу "семья". Эта группа указана в автоматизациях и прочих сценариях.
Чтобы избежать проблем связанных со сменой телефонов, как было только что описано выше, создаются группы для каждого юзера по отдельности: "гр.юзер1" и "гр.юзер2" соответственно.

Чтобы все устройства могли продолжить получать уведомления, нужно сделать группу "гр.семья" участниками которой будут две другие группы: "гр.юзер1" и "гр.юзер2". На случай если один из пользователей меняет аппарат, то он так же меняется только в одном месте ("гр.юзерX") и дальше всё продолжает работать.

А теперь собственно главный вопрос: можно ли делать такое и если да, то как??

Легко. Создадим скачала по группе для каждого пользователя. Участниками группы будут смартфоны этого пользователя. И не важно сколько их у него, 1 или 10, надо указать все.
notify:
  - name: "user1"
    platform: group
    services:
    - service: user1_phone1
    - service: user1_phone2
  - name: "user2"
    platform: group
    services:
    - service: user2_phone1
    - service: user2_phone2

Как видно - это 2 группы, по одной для каждого из пользователей. В каждой группе по два телефона для каждого пользователя.
После создания этих служб в файле конфигурации, перезагружаемся и объекты создаются в системе.
Теперь снова открываем тот же файл конфигурации и дописываем к нему новый объект:
  - name: "family users"
    platform: group
    services:
    - service: user1
    - service: user2
Как видно, это группа, участниками которой являются две другие созданные ранее группы. И которые уже существуют в системе. Поэтому перезагружаемся ещё раз и в системе появляется новая группа и одноимённый работающий сервис: notify.family_users.

Пример:
Когда у пользователя номер 2 сменится второй смартфон, то только в группе user2 нужно будет указать новое имя устройства, и перезапустить систему.

Комментарии