Статья

Азы Node Red. Функция (function) - как использовать и пример проброса давления в HomeKit

В качестве предисловия

Тот, кто уже читал мою статью про Глобальные данные в Node Red, уже догадался, что эта статья является продолжением обзора и возможностей Node Red. Это мой взгляд на Node Red через призму моего личного опыта работы с ним. Я не претендую на абсолютные знания в этой теме и прошу простить меня, если я допущу какие-то ошибки или неточности.

Функция (function)

Нода функции - это самая многофункциональная нода в Node Red. Она позволяет запускать Java Script код к сообщениям, которые через нее проходят. Более детально с описанием работы можно ознакомиться на сайте Node Red по ссылке. Я, как и большинство из нас, не знаю Java Script, но если Вы знакомы с любым языком программирования, то совсем не составит труда использовать эту ноду в проектах автоматизации.

Почему я люблю использовать ноду функции везде, даже там, где можно обойтись простейшими нодами?

Ответ прост - нода функции позволяет отдавать состояние, сообщение под самим графическим блоком ноды. Это выглядит красиво, а так же удобно при наладке сложных автоматизаций. Ты сразу можешь видеть все что происходит.

Вот таким образом выглядят функции, которые забирают данные с ноды Openweathermap и подготавливают для передачи в HomeKit. Преимущество функции еще в том, что можно сразу масштабировать и добавлять коррекцию к данным, которые Вы желаете потом использовать где-либо. Конечно это не единственный способ, но он уменьшает количество лишних кубиков в проекте.

Как все это работает внутри

На нашем телеграм канале часто возникает вопрос - Как отобразить давление в программе Дом? Ниже я экспортировал код функции давления, для передачи данных с датчика Aqara. Так как HomeKit не обладает такой характеристикой как давление, то приходится его немного обманывать и пробрасывать данное значение, как освещенность. Это, конечно, не красиво, но для желающих видеть давление в программе Дом от Apple - пока это единственная возможность.

var characteristic = {}; characteristic.CurrentAmbientLightLevel = (msg.payload*0.75^0); node.status(); msg.payload = characteristic; return msg;

Для передаче данных в HomKit требуются соблюдать определенные правила. Данные передаются в формате JSON с названиями, которые Apple стандартизировал для HomKit.

Данный пример - лишь незначительное описание возможностей использование функций в Node Red.

Как я уже говорил, функция в Node Red - это мощный инструмент при создании автоматизаций. Если научиться программировать в Java Script, то с помощью данного функционала можно легко строить сложные автоматизации под ваши задачи. В одной из следующих статей я еще вернусь к примерам использования функций, применительно к управлению объектом через HomKit и автоматизации Node Red.

Флоу с примером работы с погодными значениями от Openweathermap (необходим плагин node-red-node-openweathermap) и датчиком Aqara, который проброшен через Deconz плагин, Вы найдете по ссылке.


Отличная статья! Впрочем как и всегда)

"Вы найдете по https://sprut.ai/paste/MbZvQ5Bc"
ссылка не работает (

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