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

04 октября 2019, 17:14

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

Тот, кто уже читал мою статью про Глобальные данные в 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({fill:"green",shape:"ring","text": msg.payload*0.75^0});
msg.payload = characteristic;
return msg;

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

  • В первой строчке объявляем переменную. 
  • Во второй строчке передаем данные давления (с учетом масштабирования в мм ртутного столба) по правилам Apple, как уровень освещенности (соответственно, нода HomeKit должна быть датчиком освещенности).
  • Третья строчка - отображение статуса ноды,  выводим значение давления.
  • Четвертая строчка - передаем переменную объекта characteristic в сообщение.
  • Пятая строчка - возвращаем новое сообщение на выход ноды функции. 

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

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

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


Все новости мира умных домов - t.me/SprutAI_News

Остались вопросы? Мы в Telegram - t.me/soprut

Хочешь умный дом но нет времени разбираться?
Посмотри примеры работ и выбери себе интегратора.
  1. Александр Жабунин (OXOTH1K)

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

К списку статей

Скидки для сообщества

Интернет-магазин yourhomekit.ru

+7 914 550-51-11
Промокод:
SPRUT-BLG
Размер скидки:
8%
Cамый большой ассортимент в России аксессуаров Apple HomeKit

Похожие статьи

04 сентября 2018, 12:14
Интеграция RGB ленты на ESP8266 с прошивкой tasmota в систему HomeBridge (HomeKit)
09 ноября 2018, 20:54
Кейс создания умного дома без каких либо прокладок в виде Raspberry pi
15 октября 2018, 09:05
Прошивка для Sonoff c нативным HomeKit
15 ноября 2018, 09:42
Способы автоматизации механических ворот
27 октября 2018, 12:20
Нативный Термостат для котла на ESP8266 с поддержкой Apple HomeKit
15 ноября 2018, 13:11
Xiaomi Mi Remote 360 добавляем Apple HomeKit
01 октября 2018, 07:43
Нативный HomeKit на ESP8266
15 июня 2018, 12:13
Охранная система в гараж на ESP8266 с интеграцией в Apple HomeKit
02 октября 2018, 18:41
Установка SDK для компиляции прошивок под HomeKit
28 августа 2018, 09:48
От голого Raspbian до веб-интерфейса homebridge за четыре команды в терминале.