У меня есть 2 узла, извлекающие некоторые данные mqtt, некоторые показания температуры и влажности. Я пытаюсь передать эту информацию в узел sqlite. На этом узле у меня есть следующий код:
var newMsg = {
"topic": "INSERT INTO ambiente VALUES (null, #thisshouldbetemperature, #thisshouldbehumidity, date('now'), time('now') )"
}
return newMsg;
Я пытаюсь использовать узел соединения, но безуспешно. Итак, как правильно передать msg.payload этой функции? Спасибо!
Узел join
- это правильный способ объединить 2 входящих сообщения. Вы должны использовать ручной режим и настроить его для создания объекта значения ключа примерно так.
Проблема в том, что ваш функциональный узел игнорирует входящие данные и создает новое сообщение только с установленной темой.
Исправление для функционального узла:
msg.topic = "INSERT INTO ambiente VALUES (null, " + msg.payload.temperature + ", " + msg.payload.humidity + " , date('now'), time('now') )";
return msg;
Это просто обновит msg.topic
и оставит входящий msg.payload
нетронутым. Это предполагает, что сообщения MQTT приходят по темам temperature
и humidity
.
И поставить на выход узла join
узел отладки
ммм не понимаю ... msg.topic = "INSERT INTO ambiente VALUES (null," + msg.payload.room/temperature + "," + msg.payload.room/humidity + ", date ('now'), время ('сейчас')) "; return msg; // выдает ошибку ReferenceError: температура не определена (строка 1, столбец 70)
мне нужно определить температуру? ключ (тема) - это комната / температура, а не температура
Поскольку имя ключа имеет /, вам нужно будет использовать альтернативный метод для доступа к ключу. msg.payload['room/temperature']
привет спасибо за ответ !! теперь часть соединения работает хорошо, но при отладке функции я не могу получить значение, просто undefined. Мои темы - это комната / температура и комната / влажность. может там ошибка?