Удобные автоматизации без ограничений HomeKit.

Что зачастую не устраивает пользователей Homebridge из-за чего они постепенно переходят на системы типа Home Assistant, Openhab, Domoticz и т.д?

Конечно, причин, может быть множество, но в первую очередь они связаны именно с невозможность нормально автоматизировать какие-то ежедневные рутины. Самый простой пример: включить вентилятор если влажность достигла 50%. В HomeKit это просто невозможно.

Можно воспользоваться сторонними приложениями типа Eve, но в итоге и их функционала не хватит для каких-то отдельных кейсов автоматизации.

Что нам понадобится:

  • запустить homebridge в insecure режиме
  • воспользоваться Node-RED

Запускаем Homebridge -I

И так. Всё, что нам нужно для того, чтобы мы смогли управлять устройствами не только внутри приложения Дом — это запустить Homebridge в так называемом Insecure режиме.

Для этого при запуске homebridge необходимо добавить аргумент «-I».

Если вы устанавливали homebridge по нашим инструкциям и запускаете его с помощью pm2, то необходимо поправить команду запуска следующим образом:

pm2 delete homebridge
pm2 start homebridge -- -I
pm2 save

Если вы запускаете homberidge через systemd, то проследуйте этой инструкции.

Настраиваем связь с Node-RED

После запуска Homebridge в insecure режиме мы сможем из Node-RED получить доступ к устройствам Homebridge.

Для начала нам необходим получить список наших устройств в homebridge с их ID.

Вот такой простой flow позволит вывести в лог список всех наших устройств.

Внутри блока http request должен быть записан URL по формату: http://ip:port/accessories, где ip — это IP нашей малины, port — это порт Homebridge (смотрите в конфиге). Кстати, для самопроверки можете просто перейти по этому адресу и увидеть кучу текстовой информации — значит вы на верном пути.

Пример по ссылке, как обычно.

После этого деплоим наш flow, открываем справа лог(иконка жука) и нажимаем на синюю кнопку около надписи timestamp.

В debug панели появится новый объект. Теперь в этом списке нужно найти наше устройство, которое мы хотим автоматизировать. Немного поковырявшись внутри полученного списка, в общем, будет несложно понять его логику и найти нужно устройство.

Что важно:

  • нам нужно найти aid — это ID устройства
  • внутри объекта с нужным aid найти iid характеристики, которую мы хотим изменить, или за изменением которой хотим следить.

Примерно так выглядит характеристика с отслеживанием включено/выключено устройство.

После того, как мы нашли требуемый aid и iid, нам необходимо передать команду.

Передать команду можно, отправив запрос с указанием aid, iid и требуемой характеристики, которую мы хотим изменить.

Допустим, если мы хотим включить aid: 2 с характеристикой iid: 10, то необходимо использовать такой flow, внутри которого передать следующий объект. Тем самым мы изменим значение (value) характеристики 10 объекта 2 на true. Т.е. включим его.

{"characteristics":[{"aid":2,"iid":10,"value":true}]}

При этом для аутентификации запрос необходимо не забыть добавить заголовок, в котором указываем код от HomeBridge (тот код, который мы вбиваем у себя на телефоне, чтобы добавить homebridge в HomeKit).

Скачиваем пример flow по ссылке.

Заключение

Вот и всё. По аналогии с этими примерами с помощью Node-RED мы можем выполнять сложные автоматизации, на которые только способно ваше воображение. Удачи!

Author

Наш главный гайд-мастер. Инструкции и обзоры его конёк. Иногда перебарщивает с личным мнением.