Статья

Азы Node Red: Создаем Homekit устройства в Node-Red, часть 1

Вместо предисловия

Возможно Вы уже знаете, что платформа для создания автоматизаций 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 появится у меня

Я бы хотел увидеть как прокинуть кондиционер через броадлинк.



Напрашивается пара комментариев к статье:
Во-первых, обычно при работе с нодой HomeKit нужна проверка аттрибута hap.context чтобы проверить, что евент, которое летит на исполнение конечному устройству родился из приложения Дом на Apple-девайсе, а не пришел статусом от самого устройства. Если этого не делать - можно поймать зацикливание.

https://sprut.ai/static/media/cache/00/16/97/5/3895837/58941/1000x_image.png?1590402225" alt="1000x_image.png?1590402225" />

Во-вторых, перезапуск всего NodeRed требуется не так уж и часто, на практике, как правило отрабатывая логику нужно деплоить только изменившиеся ноды. Тогда все проходит, мягче. По своему опыту, рестарт всего NodeRed нужен, как правило, чтобы удалить устройство из HomeKit-а. Добавление происходит без перезапуска.

Спасибо за комментарий, рестарт Node-Red пришел со старых версий плагина и сейчас он нужен в основном для удаления, а иногда для того чтобы быть уверенным что все изменения в характеристиках, которые мы внесли внутри китовой ноды применились правильно.

По первому пункту я специально ничего не писал, так как оставил на часть 2. Чтобы не было зацикливания думаю достаточно убрать галочку в конфигурации сервера   "Allow Message Passthrough" и тогда не нужно проверять на hap.context

У ноды deconz out (справа) есть вариант приема homekit. Она разве не имеет встроенный фильтр по hap?


Это только автор плагина может ответить, но я сильно сомневаюсь.

Ссылка на плагин Андрея Попова мертвая (404).. не подскажете где найти?

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