Давненько ничего не писал про свой умный дом. Не потому что прекратил им заниматься, а потому что в последнее время больше занимался реорганизацией и причёсыванием: в ходе ремонта менял временные решения на постоянные и усовершенствовал разную автоматику.
Но вот, наконец-то, настало время разобраться с уведомлениями о события в телеграм. К этой задаче я уже подступался когда-то давно, ещё в самом начале настройки Home Assistant, но с наскоку тогда не получилось, а потом как-то руки не доходили. Осенью 2021го я вернулся к этой теме и обнаружилось, что тут всё довольно просто и странно, что я не сделал ещё раньше. А прорыв гофры в ванной в январские праздники в очередной раз напомнил мне, что состояние датчиков, которые я рассовал по разным углам, нужно не только красиво выводить на панели, но и своевременно о них узнавать, то есть нужны уведомления на телефон, особенно в тех случаях, когда меня нет дома.
Итак, настала пора не только настроить бота в телеграме, но и наладить туда уведомления. И первое, что мы должны сделать:
Создаём чат-бота
Находим в телеграме отца всех ботов @BotFather и пишем ему:
/start
В ответ бот выдаст список всех команд, с помощью которых можно создать и управлять своим ботом. Начинаем с создания бота:
/newbot
BotFather запросит имя для этого бота и его юзернейм в телеграм:
Там же в тексте BotFather сообщит токен для взаимодейстия с новым ботом. Этот токен надо сохранить.
Узнаём свой чат ид
Чтобы бот отправлят сообщения нужному аккаунту в телеграме (себе), нужно узнать свой ChatID, для этого можно обратиться к другому боту @userinfobot. Пишем ему:
/start
Получаем краткую информацию о себе, но нас интересует только числовой ID.
Подключаем бота
Сначала сохраняем наши приватные данные - токен и ID в наши секреты secrets.yaml:
telegram_key: 'Наш токен от BotFather'
chat_id: 'Наш ID от userinfobot'
И прописываем настройки интеграции в configuration.yaml:
telegram_bot:
- platform: polling
api_key: !secret telegram_key
allowed_chat_ids:
- !secret chat_id
А так же прописываем настройки уведомлений там же, в configuration.yaml:
notify:
- platform: telegram
name: HassStas
chat_id: !secret chat_id
Всё, после перезапуска HomeAssistant мы получили новую службу notify.hasstas (или ваше название), в которую можно передать заголовок и текст сообщения. Проверить работу можно в панели разработчика, вызвав нашу службу:
service: notify.hasstas
data:
message: Тестовое сообщения в телеграм
title: Проверка связи
Настраиваем алерты
Ну и осталось только настроить автоматизации (или встроить в существующие) оповещения о событиях. Вот мой пример оповещений о том, что в моё отсутствие где-то включился свет:
- alias: Свет включился
trigger:
- platform: state
entity_id: light.bedroom,light.playroom,light.kitchen,light.livingroom
from: 'off'
to: 'on'
- condition: state
entity_id: person.goest
state: not_home
action:
- service: notify.hassstas
data:
message: '{{ trigger.from_state.attributes.friendly_name }} включился'
mode: single
Ну вот и всё, осталось только навесить уведомления на все мало-мальские события в нашем умном доме.