Или Node-red как паутина…
В прошлой статье мы добавили наше устройство в NODE-RED (далее NR) и HomeKit (далее – НК), настроили связь, получили обратный отклик, насладились моментом. Дальше больше..
Добавляем температуру в HomeKit
Следующим шагом добавим модуль датчика температуры в НК. (это совсем не обязательно и лучше не привязывать к нему автоматизации, но все же можно понимать какая температура в разных углах комнаты).
Сначала мы берем «ноду» «function» из предустановленного списка нод:
Соединяем с раннее построенной конфигурацией:
Заходим в настройки и прописываем следующую функцию:
var value = null; if (msg.status === null) value = 'NO_RESPONSE'; else value = (msg.status.temp_dec)/10; var msgNew = {}; msgNew.payload = {"CurrentTemperature":value}; return msgNew;
Копируем «ноду» НК и соединяем с функцией, в настройках выбираем «TemperatureSensor».
Нажимаем принять и радуемся.
Заходим в НК заходим в увлажнитель и выбираем «На отдельных плитках» .
Flows доступен по ссылке.
Добавляем на дашборд
На этом можно было бы закончить, но мы рассмотрим, как создать панель отображения и управления в web-интерфейсе. Для этого нам необходимо скачать и установить «node-red-dashboard».
И начинаем собирать кубики – сначала уже известная нам «function», и прописываем формулу:
if (msg.status === null) return null; var msgNew = {}; msgNew.payload = msg.status.power=='on'?true:false; node.status({fill:"grey",shape:"dot",text:msgNew.payload?'on':'off'}); return msgNew;
Далее берем «ноду» «switch» из набора «dashboard»:
Создаем группу и таблицу:
Остальное без изменений поля «Name» и «Label» отвечают за название в HR и Web-интерфейсе соответственно. Остальное можно не менять.
Далее берем «ноду» «switch» из набора «function»:
Ставим следующие настройки:
Далее берем «ноду» «out» из набора «miio»:
Выбираем наше устройство, выбираем наш режим (в данном случае «ВКЛ/ВЫКЛ»).
Получаем такую картину:
Переходим в Web-интерфейс по адресу http: // localhost: 1880 / ui и видим картину:
Получили кнопку при нажатии на которую включается и выключается наше устройство.
После добавления всех параметров устройства получаем следующий вид:
И в Web-интерфейсе:
Можно также добавить графики изменения температуры и влажности:
Только отображать они будут данные до перезагрузки NR и всего на определенное количество времени выстроенное в настройках (в примере это последние 12 часов с шагом обновления 5 секунд).
Итоговый Flows доступен по ссылке.
Спасибо за внимание прошу, сообщить стоит ли писать все так подробно?
3 комментария
Все отлично описано, особенно для таких как я, которые только входят в NR.
Спасибо большое за проделанную работу!
Пожалуйста, главное что все получилось)
Не полностью отработал. Помогите, пожалуйста , исправить две ошибки:
————————————
1) Не выводится температура в ХК и в самом устройстве
Функция:
var value = null;
if (msg.status === null) value = ‘NO_RESPONSE’;
else value = (msg.status.temp_dec)/10;
var msgNew = {};
msgNew.payload = {«CurrentTemperature»:value};
return msgNew;
Дебаг:
CurrentTemperature: NaN
————————————
2) Не выводится влажность отдельным устройством
Функция:
if (msg.status === null) return null;
var msgNew = {};
msgNew.payload = msg.status.humidity;
node.status({fill:»grey»,shape:»dot»,text:msgNew.payload +’%’});
return msgNew;
Дебаг:
«Invalid payload type: number»
————————————
Мне как новичку не удалось поправить.