Статья

HomeKit & Telegram. Просто, как никогда (Telegram BOT)

Сидя на лежащих NodeRed и HomeAssistant, продолжаем цикл статей про быстрые команды в HomeKit.

Сегодня мы подготовим и настроим взаимодействие Telegram и HomeKit.

Если ранее можно было только отправлять сообщения, и то, через сторонние системы, то сегодня можно не только отправлять, принимать и обрабатывать, но и взаимодействовать с HomeKit и всеми его данными.

Если вы спросите - а это сложно? Поверхностно, да. Сложно. К примеру, если вся логика взаимодействия с Telegram для других систем автоматизации уже написана, и вам лишь нужно выбирать - отправить или получить, то в HomeKit ее придётся написать с нуля.

К счастью, я ее написал сам, и вам лишь нужно будет заменить некоторые данные на свои (устройства и данные Telegram).

Попробуем разобраться, что же получилось.

  • Первым этапом бот получает обновления, если они есть.
  • Вторым этапом - обрабатывает полученные команды и управляет устройствами.
  • Третий этап - реакция на ваши сообщения. Изменить, ответить, написать - все что позволяет API Telegram, с легкостью можно реализовать.

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

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

К примеру возьмём следующий сценарий:

Вам звонят в дверь (через любую кнопку в HomeKit), вам в Telegram приходит фото с камеры и кнопка - открыть:

Скачать пример

{ "inline_keyboard": [[{ "text": "? Открыть", "callback_data": "opendoor"}]] }

Это параметры кнопки. Нас интересует имя и «callback_data». Именно здесь мы передаём сообщение боту - «opendoor».

Это может быть любое значение, но оно должно быть понятно и уникально для всех команд в вашем доме.

После этого вы можете добавить обработку этой команды в раздел «Управляем устройствами»:

Вот и все. Добавляйте любые устройства аналогично этому. Ещё раз:

  • Нужно отправить в чат или диалог сообщение с кнопкой.
  • Добавить в бота реакцию на это сообщение.

Запуск бота

Запускать бота можно средствами HomeKit. Но я пока не стал доверять этот процесс ему, ввиду обильного количества багов в iOS 13.1, воспользовавшись внешним триггером на базе Homebridge. Это будет плагин, который раз в n секунд будет активировать виртуальный датчик движения, а HomeKit - уже запускать автоматизацию по этому датчику.

Плюс к этому решению ещё тот, что средствами HomeKit можно изменять частоту реакции датчика, к примеру, снижая ночью опросы до раз в 60, и повышая днём до раз в 5 сек., так и вообще отключать обработку Telegram, если она не нужна вам на время. Обратите внимание, что бот будет обрабатывать сообщения с частотой, заданной вами! Не указывайте слишком маленькие значения, рекомендую - 5 секунд.

Пример конфигурации плагина Homebridge для реакции раз в 10 секунд ниже. Далее вы сможете изменять ее через программу Eve.

{ "platform": "AutomationSwitches", "switches": [ { "type": "automation", "name": "Telegram", "period": 10, "autoOff": false, "stored": true } ] }

Скачать бота


Respekt

На видео заметил, есть пункт уровень воды.

По умолчанию у увлажнителя есть такой параметр? Может кто подскажет чем измерять уровень воды в баке, что бы данные в хк получить?


Вернуться назад
Вернуться назад