В качестве предисловия
Тот, кто уже читал мою статью про Глобальные данные в 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 плагин, Вы найдете по ссылке.
Отличная статья! Впрочем как и всегда)
ссылка не работает (