Удобные автоматизации без ограничений 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 мы можем выполнять сложные автоматизации, на которые только способно ваше воображение. Удачи!