Telegram Home Assistant

Налаштовуємо Home Assistant для роботи з Telegram

На сьогодні, Telegram є одним з найпопулярніших засобів обміну повідомленнями. Якщо ви є активним користувачем Telegram, мабуть, тоді для вас буде зручно отримувати повідомлення про стан вашого розумного будинку саме сюди. Більше того, у вас, навіть, з’явиться можливість керування прямісінько з Telegram.

Підготовка

Додамо включення в configuration.yaml окремими зовнішніми файлами

Введіть в стрічці пошуку Telegram @BotFather та перейдіть до нього. Створимо бота в Telegram за допомогою @BotFather: натискаємо /newbot та вводимо назву, наприклад «testhassbot», тиснемо відправити. Другим кроком, вводимо ім’я та відправляємо. Якщо ім’я не зайняте, бачимо подібне повідомлення, інакше підберіть інше ім’я для вашого бота.

В повідомленні є посилання на створеного вами бота, можете його зберегти на майбутнє, також скопіюйте токен, він нам ще знадобиться.

Знайдіть бота @userinfobot та натисніть /start , у відповідь ви отримаєте власний telegram ID, скопіюйте його. Повторіть цю процедуру з іншими членами родини, якщо хочете щоб і вони теж могли отримувати інформацію з домашнього телеграм бота. Заповніть інформацію в файлі /config/includes/telegram.yaml отриманими раніше даними за зразком

Створюємо сповіщення та даємо їм назви, для кожного члена родини в файлі /config/includes/notify.yaml

Перезавантажте Home Assistant.


Налаштувавши сповіщення в автоматизації, є змога відправляти повідомлення конкретному адресату

Або усім, хто підписаний на повідомлення від домашнього бота.

Додавання автоматизацій для роботи з Telegram

Створимо першу автоматизацію що діятиме при старті бота (або натисканні /start)

В вікні телеграм ми побачимо щось подібне

Тепер додамо ще одне правило, яке діятиме при натисканні кнопки в вікні Telegram наприклад кнопки «Weather»

В такому варіанті правила автоматизації у відповідь ми отримаємо подібне повідомлення:

Тут директива service: telegram_bot.edit_message не відправляє нове повідомлення, а редагує останнє (message_id: ‘last’), відбувається це з не нав’язливим анімаційним ефектом, це повідомлення «зміниться лише в того користувача, який натискав кнопку «Weather» (chat_id: ‘{{ trigger.event.data.user_id }}’), що не відволікає інших членів вашої родини зайвими повідомленнями.

Аналогічні правила і дії можна «повісити» і на інші кнопки «панелі керування», і навіть зробити деревовидну структуру дій та команд. Після всіх налаштувань, поділіться з членами вашої родини посиланням на домашнього бота. Користуйтесь з задоволенням.

 

17 thoughts on “Налаштовуємо Home Assistant для роботи з Telegram”

  1. Поділіться будь ласка своїм автоматизаціями на інших кнопках (панелях):
    Там де світло, статус, охорона, пінг, покупки, щоб зрозуміти, що туди своє вписати.
    Або може де є ще приклади, як організувати цей простір панелей)

  2. Подскажите как обновить inline_keyboard, при переключении статуса света например как у вас на видео 0:43, а то свет то переключается но чтоб это увидеть нужно вернуться на раздел назад, а потом снова войти в прежнюю вкладку переключения света

  3. Можно ли где то глянуть весь лог автоматизаций с данного видео?

  4. Спасибо за статью, очень помогли!
    Подскажите можно ли отправить фоторгафию так же через edit_message?

    1. К сожалению нет, отправка фото делается отдельным сервисом (telegram_bot.send_photo), аналогично нельзя заменять отправленное фото на текст. Возможно ситуация изменится в будущем с выходом обновлений HA, но пока я решения не нашел.

  5. Возможно ли делать типа подгруппы?
    немогу понять возможно ли это
    делаю event_type: telegram_command
    далее по вложенности колбек ) – все ок
    а далее хочу дальше ) но не команд ни колбек неработает (

    1. Вопрос не совсем понятен, но в любом случае воспользуйтесь Developer Tools, если заработает там, то будет и код работать.

  6. Доброго дня, а куди вписувати автоматизацію, цівкавить Spoiler то треба створювати окремий файл?

    1. Добрий день! Так, краще виносити все в окремі файли, або навіть папки. У мене всі правила автоматизацій винесено в папку automations, а вже в ній для кожної кімнати чи девайсу можна створювати окремі файли, так ви швидше знайдете потрібне правило і не заплутаєтесь
      посилання на папку в /config/configuration.yaml:
      automation: !include_dir_merge_list automations
      Назви файлів в папці значення не мають, головне щоб були написані латиницею і мали розширення .yaml

  7. В будь-якому випадку дякую, Ви мені дуже допомогли. Код у коменті був відсутньою ланкою у розумінні матеріалів вашої статті.

  8. Вітаю.
    Поясніть як не спеціалісту.
    inline_keyboard:
    – ‘{{ “\u21a9\ufe0f” }} Панель керування:/to_cp’ – це куди має бути перехід? в коді такого немає…

    1. В даному випадку бот буде “слухати” те що після знаку “:”, тобто, він має виконати команду зі слешом, тут “/to_cp”
      Далі, якщо у вас є правило з таким тригером, HA виконає ту команду, яка була описана в правилі.
      Наприклад:

      - id: telegram-ik-to-cp
        alias: "Telegram Панель керування"
        trigger:
          - platform: event
            event_type: telegram_callback
            event_data:
              data: "/to_cp"
        action:
          - service: telegram_bot.edit_message
            data_template:
              message_id: "last"
              chat_id: "{{ trigger.event.data.user_id }}"
              title: "*Панель керування*"
              message: "Оберіть розділ"
              inline_keyboard:
                - '{{"\U0001F4A1"}} Lights:/lights, {{"\u2753"}} Status:/sstatus, {{"\u26D4"}} Security:/security'
                - '{{"\U0001F6E0"}} System:/system, {{"\U0001F501"}} Ping:/ping, {{"\U0001F4CC"}} User location:/location '
                - '{{"\U0001F324"}} Weather:/weather, {{"\U0001F4B5"}} Shoping :/shopinglist'

      1. Працює! 😉
        Дякую! Як тільки не крутив, не виходило.
        А чи можна за допомогою telegram передавати дані в НА. У мене задача передати показники лічильників з квартири батьків в мою базу?

        1. Теоретично можна, для цього бот повинен чекати вводу вручну. Але, чесно кажучи, досвіду такого налаштування не маю.

        2. Можна створити input_text або input_number helper і записувати в нього повідомлення через telegram_callback

Leave a Reply Cancel reply