Сидя на лежащих 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
На видео заметил, есть пункт уровень воды.
По умолчанию у увлажнителя есть такой параметр? Может кто подскажет чем измерять уровень воды в баке, что бы данные в хк получить?