Вместо предисловия
Возможно Вы уже знаете, что платформа для создания автоматизаций Node-Red позволяет устанавливать дополнительные плагины в систему, которые расширяют ее функциональность. Я расскажу о node-red-contrib-homekit-bridged, который позволяет симулировать Apple Homekit устройства. Вы сможете сами создать любое Homekit устройство, не дожидаясь появления нативного, или пока кто-нибудь не напишет плагин для HomeBridge. Если у Вас еще нет Node-Red, как раз время его установить и в этом Вам поможет статья с нашего портала.
Установка плагина и начальная база знаний
Установка плагина происходит так же, как и большинство плагинов для Node-Red: заходите во вкладку Manage Palette, нажимаете Install, в строке поиска вбиваете название и устанавливаете. Скорее всего Вас попросят перезапустить Node-Red после установки, но если этого не случится, то это будет не лишним. Сразу скажу на будущее, что работа с нодой этого плагина требует определенного ритуала: при изменении параметров в ноде или удаление нод, необходим перезапуск Node-Red.
Apple HomeKit устройство описывается следующим образом: устройство, которое обладает определенными сервисами, которые, в свою очередь, имеют свои характеристики. Для симуляции HomeKit необходимо обеспечить его требуемым сервисом или сервисами, а также необходимыми характеристиками. Характеристики сервиса делятся на основные и дополнительные.
Ссылка на wiki от автора плагина и также полезная ссылка по Homekit сервисам и характеристикам, где вы найдете множество примеров по созданию своих HomeKit устройств. Запаситесь терпением и знанием Английского языка (либо Google переводчик Вам в помощь).
Если у Вас Deconz?
Это самое простое решение, так как наш коллега по чату Node-Red Андрей Попов создал прекрасный плагин, который позволяет это сделать автоматически, практически для всех устройств. По ссылке найдете описание плагина и примеры использования для различных устройств. Картинки для HomeKit ноды могут отличаются, так как плагин кардинально обновлялся, но смысл не изменился. Я не буду останавливаться более детально на описании работы с этим плагином, чтобы не повторятся позже, где я рассмотрю работу с HomeKit нодой. Для примера, флоу трех zigbee ламп c использованием Conbee координатора от Deconz, через плагин node-red-contrib-deconz.
Если Вы используете zigbee2mqtt?
Если Вы еще не догадались, то и для координаторов с использованием бриджа zigbee2mqtt нашлось время у Андрея и появился замечательный плагин, который существенно облегчает работу с HomeKit устройствами. Пока это работает не со всеми устройствами, в силу того, что у автора их просто нет и он определил эту опцию, как приятный бонус. Но тем не менее, очень много HomeKit устройств поддерживается этим плагином прямо из коробки. В описании плагина есть вся необходима информация для его установки и примеры работы с ним. Лишь покажу флоу, как это выглядит.
Если у Вас ничего НЕТ, только данные
Для начала нужно получить необходимые данные, причем желательно в формате Object, так просто легче с ними работать. Как получить данные - это вопрос отдельной статьи, я затрону лишь способ, как посмотреть то, что мы получаем и как это использовать в дальнейшем. Если Вы все же мало знакомы с Node-Red, то в статье одного из авторов нашего портала sprut.ai, ознакомьтесь с базовыми нодами (кубиками), а то возможно продолжение статьи будет неинтересно и малопонятно.
Да, я решил разбить статью на две части
Подумав немного, я все же решил разбить статью на две части. Многие уже используют вышеперечисленные плагины и им уже и так все просто. Многим же надо подумать и пройтись по ссылкам в этой статье, иначе вторая часть будет бессмысленной. Нельзя объять необъятное в рамках одной темы и поэтому вторая часть будет посвящена Homekit без готового решения из коробки. Берем поток данных и формируем HomeKit устройство. Да, и не забудьте изучить детально ноды Inject и Debug, они Вам точно понадобятся в следующей статье.
Часть 1, конечно, получилась в большей степени обзорной, нет тестовых флоу, готовых примеров по решению ваших задач, но это только начальная точка. Следующая часть немного приоткроет мир HomeKit устройств, которые Вы создадите сами с помощью Node-Red, как волшебник из страны Оз.
Если есть пожелания какой тип устройства будем прокидывать в части 2, оставляйте в коментариях.
даешь лампы CT+RGB
Не в следующей части точно, когда HUE появится у меня
Я бы хотел увидеть как прокинуть кондиционер через броадлинк.
Напрашивается пара комментариев к статье:
https://sprut.ai/static/media/cache/00/16/97/5/3895837/58941/1000x_image.png?1590402225" alt="1000x_image.png?1590402225" />Во-первых, обычно при работе с нодой HomeKit нужна проверка аттрибута hap.context чтобы проверить, что евент, которое летит на исполнение конечному устройству родился из приложения Дом на Apple-девайсе, а не пришел статусом от самого устройства. Если этого не делать - можно поймать зацикливание.
Во-вторых, перезапуск всего NodeRed требуется не так уж и часто, на практике, как правило отрабатывая логику нужно деплоить только изменившиеся ноды. Тогда все проходит, мягче. По своему опыту, рестарт всего NodeRed нужен, как правило, чтобы удалить устройство из HomeKit-а. Добавление происходит без перезапуска.
Спасибо за комментарий, рестарт Node-Red пришел со старых версий плагина и сейчас он нужен в основном для удаления, а иногда для того чтобы быть уверенным что все изменения в характеристиках, которые мы внесли внутри китовой ноды применились правильно.
По первому пункту я специально ничего не писал, так как оставил на часть 2. Чтобы не было зацикливания думаю достаточно убрать галочку в конфигурации сервера "Allow Message Passthrough" и тогда не нужно проверять на hap.context
У ноды deconz out (справа) есть вариант приема homekit. Она разве не имеет встроенный фильтр по hap?
Это только автор плагина может ответить, но я сильно сомневаюсь.