Телеграм в умном доме для меня стал очень удобным инструментом получать уведомления - состояние охраны, статус устройств, когда нужно идти в сауну по готовности … Все статусы стараюсь отправлять в телеграм. Мощный инструмент который позволяет также запрашивать данные, например видео с камер видеонаблюдения.
Думаю, что телеграм должен быть включен в начальные настройки Home Assistant.
Ладно, пора запилить телегу.
Лучше делать через свой аккаунт в telegram https://web.telegram.org/ там проще добыть адрес группы.
В Дзене код плохо отображается, поэтому в конце статьи ссылка для удобного копирования.
Поддержать автора на новые гаджеты для обзора.
Создание Telegram-бота через BotFather
- Запустите Telegram и найдите пользователя @BotFather.
- Отправьте команду /newbot и следуйте инструкциям: задайте имя вашему боту (например, HomeAssistantBot) и выберите уникальное имя пользователя (например, home_assistant_bot).
- После создания BotFather пришлёт вам токен вида:123456789:ABCdefGhIJKlmNoPQRsTUVWxyZ
Важно: Сохраните токен в надёжном месте, он понадобится для настройки Home Assistant. Сохраните вместе с именем и уникальным именем.
Добавление бота в группу и получение chat_id
- Создайте группу в Telegram (или выберите уже существующую), в которой вы хотите получать уведомления.
- Добавьте созданного бота в группу, как обычного участника.
- В строке адреса группы можно посмотреть номер группы, он нам потребуется для дальнейшей настройки. Обязательно копируем с “-” -4679580470
Настройка Home Assistant
Для этого нам нужен любой редактор, подробнее в начальных настройках https://dzen.ru/a/Z1GHKaC_YR--V31m
В автоматизациях я буду использовать код который удобно поправить (подставить свои сущности), а также в любой момент можно перевести в Форму ввода и править там.
Редактирование файла configuration.yaml
- Интеграция telegram_bot:
- Добавьте следующие строки, заменив <ВАШ_ТОКЕН> и chat_id на свои значения:
telegram_bot:
- platform: polling
api_key: "<ВАШ_ТОКЕН>"
allowed_chat_ids:
- -123456789 # Обратите внимание: для групп идентификатор обычно отрицательный
2. Интеграция notify для отправки сообщений:
Добавьте конфигурацию компонента notify:
notify:
- platform: telegram
name: telegram_notify
chat_id: -123456789
3. Проверка конфигурации:
Используйте инструмент «Проверка конфигурации» в интерфейсе Home Assistant:
Панель разработчика→ Проверить конфигурацию
Если ошибок нет – перезагрузите Home Assistant, чтобы применить изменения.
Для проверки что все отправляется мы можем вернуться в панель разработчика и отправить тестовое сообщение
Примеры отправки сообщений.
Отправка данных с сенсора
Предположим, в системе есть сенсор, например, sensor.system_monitor_processor_temperature. Сенсор отвечает за показание температуры процессора.Чтобы отправить его значение, можно использовать шаблон:
action: telegram_bot.send_message
data:
message: "Текущая температура процессора: {{ states('sensor.system_monitor_processor_temperature') }} °C"
Такое уведомление динамически подставит состояние сенсора в текст сообщения.
Запрос от бота и получение сообщений
Через телеграм бот можно и запросить информацию. Для этого используется команда через / , но ее сначала надо прописать в боте.
Идем в сам телеграм в botfather
Нажимаем /start и выбираем /mybots - edit your bots, находим своего бота → Edit bot → Edit commands Вводим команду точно как в инструкции с описанием temp - Узнать температуру процессора.
С компьютера в группе при запросе /temp подставляется как /temp@alpaca2_bot, а вот с телефона /temp. Для автоматизации телеграм требует точное передачу информации. Поэтому в автоматизации указываем оба варианта.
Теперь нужно создать автоматизацию в Home Assistant. Автоматизации находятся в Настройках. Можно создать автоматизацию и перейти в текстовый редактор.
--- Начало автоматизации
alias: Запрос температуры процессора # Имя автоматизации: его увидят в интерфейсе Home Assistant
description: Отправляет температуру процессора при получении команды /temp или /temp@alpaca2_bot # Здесь можно скорректировать текст описания
mode: single # Режим выполнения: single — новая копия не запустится, пока предыдущая не завершится
triggers: # Раздел с условиями запуска автоматизации
- event_type: telegram_command # Событие: получение команды от Telegram
event_data:
command: /temp@alpaca2_bot # Точная команда, при которой срабатывает (меняйте на вашу команду)
trigger: event # Тип триггера: событие
- event_type: telegram_command # Добавляем второй триггер для команды без указания бота
event_data:
command: /temp # Команда без указания бота
trigger: event # Тип триггера: событие
actions: # Действия, выполняемые после срабатывания триггера
- action: telegram_bot.send_message # Сервис отправки сообщения через Telegram Bot
data:
target: "{{ trigger.event.data.chat_id }}" # ID чата для ответа: автоматически берётся из входящего события
message: > # Текст сообщения; символ > позволяет переносить длинные строки
Температура процессора: {{ states('sensor.system_monitor_processor_temperature') }} °C # Шаблон, показывающий значение датчика
--- Конец автоматизации
/temp@alpaca2_bot команда указывается как /temp @ Имя_bot . Потому что из группы он обращается к боту.
Нужно перезапустить конфигурацию Home Assistant.
В чате нажимаем команду и можем выбрать.
Кнопки состояния. Запрос - ответ
Один из кейсов использования телеграма это запрос статуса умного дома. Тут я приведу простой пример на основе system monitor, но можно создавать любые сценарии.
Зарегистрируем новую команду в телеграм боте
Создадим автоматизацию с кнопками. Код выглядит сложным лишь потому что запросы и ответы (callback) в одной автоматизации.
--- Начало автоматизации
alias: System Monitor Telegram Notification
description: Sends system monitor options via Telegram with interactive buttons and handles user selections
mode: single
trigger:
- trigger: event
event_type: telegram_command
event_data:
command: "/status@alpaca2_bot"
id: request_status
- trigger: event
event_type: telegram_callback
event_data:
data: "/processor_use"
id: processor_use
- trigger: event
event_type: telegram_callback
event_data:
data: "/processor_temperature"
id: processor_temperature
- trigger: event
event_type: telegram_callback
event_data:
data: "/memory_free"
id: memory_free
condition: []
action:
- choose:
- conditions:
- condition: trigger
id: request_status
sequence:
- action: telegram_bot.send_message
data:
target: "{{ trigger.event.data.chat_id }}"
message: "Выберите статус, который хотите узнать:"
inline_keyboard:
- "Процессор (%):/processor_use"
- "Температура CPU:/processor_temperature"
- "Свободно памяти:/memory_free"
- conditions:
- condition: trigger
id: processor_use
sequence:
- action: telegram_bot.send_message
data:
target: "{{ trigger.event.data.chat_id }}"
message: "Использование процессора: {{ states('sensor.system_monitor_processor_use') }}%"
- action: telegram_bot.delete_message
data:
chat_id: "{{ trigger.event.data.chat_id }}"
message_id: "{{ trigger.event.data.message_id }}"
- conditions:
- condition: trigger
id: processor_temperature
sequence:
- action: telegram_bot.send_message
data:
target: "{{ trigger.event.data.chat_id }}"
message: "Температура процессора: {{ states('sensor.system_monitor_processor_temperature') }}°C"
- action: telegram_bot.delete_message
data:
chat_id: "{{ trigger.event.data.chat_id }}"
message_id: "{{ trigger.event.data.message_id }}"
- conditions:
- condition: trigger
id: memory_free
sequence:
- action: telegram_bot.send_message
data:
target: "{{ trigger.event.data.chat_id }}"
message: "Свободно памяти: {{ (states('sensor.system_monitor_memory_free') | float / 1024) | round(2) }} GiB"
--- Конец автоматизации
Что делают telegram_command, telegram_callback и inline_keyboard
- telegram_command:
- Триггер в Home Assistant, который срабатывает, когда пользователь отправляет команду боту в Telegram (например, /status@alpaca2_bot). Запускает автоматизацию для отправки сообщения или выполнения действий.
- telegram_callback:
- Триггер, который активируется при нажатии на интерактивную кнопку в Telegram. Кнопка отправляет данные (callback_data, например, /processor_use), и автоматизация обрабатывает выбор пользователя.
- inline_keyboard:
- Набор кнопок, добавляемых к сообщению в Telegram (формат: ["Текст:/callback_data"]). Пользователь нажимает кнопку, и это вызывает событие telegram_callback с указанными данными для дальнейшей обработки.
Пример работы:
- Пользователь отправляет /status@alpaca2_bot → telegram_command запускает сообщение с кнопками.
- Кнопки (inline_keyboard) предлагают выбрать, например, "Процессор (%)".
- Нажатие кнопки → telegram_callback обрабатывает выбор и отправляет данные сенсора.
Код для удобного копирования https://gist.github.com/smirnowegor/23e6895433cbd26b93f6c5887c9f8db0
Способ 1 Поддержать автора
Способ 2 https://donate.stream/yoomoney410013774736621
или через криптокошелёк (Только USDT) TCHekdJZFndXpDrHZGuTmqFNcqhWBTTzPr
Связаться со мной. (Консультации, проектирование и обучение)
Новый подход к электрике и дизайну помещений. Некоторые провода уже не нужно тянуть, какие-то решения можно принять после ремонта. Перенести выключатель, запустить кондиционер с телефона - возможно автоматизировать любую рутину.
Мой телеграм канал, там все быстрее обновляется телеграм.
Сайт smart4home.ru и альтернативный Умный дом на любом этапе.
Соц сети: RuTube канал Удобный дом / You Tube канал Удобный дом Яндекс Дзен: Удобный дом / InGram
Платформы специалистов: Авито / Профи.ру / Яндекс Услуги https://uslugi.yandex.ru/profile/EgorSmirnov-2294380?from=telek