Найти в Дзене
Удобный дом!

Телеграм для Home Assistant и полезные автоматизации

Оглавление

Телеграм в умном доме для меня стал очень удобным инструментом получать уведомления - состояние охраны, статус устройств, когда нужно идти в сауну по готовности … Все статусы стараюсь отправлять в телеграм. Мощный инструмент который позволяет также запрашивать данные, например видео с камер видеонаблюдения.

Вот так ИИ видит управление через телеграм, надпись так и не захотел правильно написать.
Вот так ИИ видит управление через телеграм, надпись так и не захотел правильно написать.

Думаю, что телеграм должен быть включен в начальные настройки Home Assistant.

Ладно, пора запилить телегу.

Лучше делать через свой аккаунт в telegram https://web.telegram.org/ там проще добыть адрес группы.

В Дзене код плохо отображается, поэтому в конце статьи ссылка для удобного копирования.

Поддержать автора на новые гаджеты для обзора.

Создание Telegram-бота через BotFather

  1. Запустите Telegram и найдите пользователя @BotFather.
  2. Отправьте команду /newbot и следуйте инструкциям: задайте имя вашему боту (например, HomeAssistantBot) и выберите уникальное имя пользователя (например, home_assistant_bot).
  3. После создания BotFather пришлёт вам токен вида:123456789:ABCdefGhIJKlmNoPQRsTUVWxyZ

Важно: Сохраните токен в надёжном месте, он понадобится для настройки Home Assistant. Сохраните вместе с именем и уникальным именем.

Добавление бота в группу и получение chat_id

  1. Создайте группу в Telegram (или выберите уже существующую), в которой вы хотите получать уведомления.
  2. Добавьте созданного бота в группу, как обычного участника.
  3. В строке адреса группы можно посмотреть номер группы, он нам потребуется для дальнейшей настройки. Обязательно копируем с “-” -4679580470
-2

Настройка Home Assistant

Для этого нам нужен любой редактор, подробнее в начальных настройках https://dzen.ru/a/Z1GHKaC_YR--V31m

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

Редактирование файла configuration.yaml

  1. Интеграция telegram_bot:
  2. Добавьте следующие строки, заменив <ВАШ_ТОКЕН> и 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"

-4

Такое уведомление динамически подставит состояние сенсора в текст сообщения.

Запрос от бота и получение сообщений

Через телеграм бот можно и запросить информацию. Для этого используется команда через / , но ее сначала надо прописать в боте.

Идем в сам телеграм в 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.

В чате нажимаем команду и можем выбрать.

-5

Кнопки состояния. Запрос - ответ

Один из кейсов использования телеграма это запрос статуса умного дома. Тут я приведу простой пример на основе system monitor, но можно создавать любые сценарии.

Зарегистрируем новую команду в телеграм боте

-6

Создадим автоматизацию с кнопками. Код выглядит сложным лишь потому что запросы и ответы (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"

--- Конец автоматизации

-7

Что делают 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 с указанными данными для дальнейшей обработки.

Пример работы:

  1. Пользователь отправляет /status@alpaca2_bot → telegram_command запускает сообщение с кнопками.
  2. Кнопки (inline_keyboard) предлагают выбрать, например, "Процессор (%)".
  3. Нажатие кнопки → 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