@Balkonsky

Как собрать информацию из нескольких узлов mqtt Node-Red?

Существующая схема в Node-Red:
a330b5580b7b4240aa9f9248a4418b3e.png

функция db_query описана следующим образом и заносит в БД только значения одного узла:
var newMsg = {payload : msg.payload};
newMsg.topic ="INSERT INTO `m2m`.`sens1` (`TEMP`) VALUES ("+newMsg.payload+")";
return newMsg;


Подскажите пожалуйста как написать сбор данных (функция collect_data) от узлов в несколько переменных для передачи их в функцию db_query и создания одного SQL INSERT запроса в БД.

Таблица в БД в которую заносят данные :
select * from sens1;
+----+------+-------+-------+-----+---------------------+
| id | TEMP | HUMID | PRESS | AIR | date                |
+----+------+-------+-------+-----+---------------------+
|  1 | 41.2 |     0 |     0 |   0 | 2016-11-15 22:08:54 |
+----+------+-------+-------+-----+---------------------+
1 row in set (0.00 sec)


Спасибо!
  • Вопрос задан
  • 1811 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ratatyq
Как вариант использовать глобальное пространство node-red, то-есть использовать либо global.get/set либо flow.get/set
nodered.org/docs/writing-functions (найдите подзаголовок Flow context)
В эту глобальную переменную можно засовывать показания с этих mqqt блоков и делать проверку на заполнение их, как только они заполняться сделать запись в бд и обнулить эту глобальную переменную и все по новой начнется.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы