javascript - Node Red 和 Raspberry pi sense hat 图表

标签 javascript raspberry-pi node-red

我是红色节点的新手,我创建了一个从 Raspberry sense hat 获取数据的函数,并编写了以下函数将数据分成 3 个流:

var msg1 = { payload: msg.payload.acceleration.z };
var msg2 = { payload: msg.payload.temperature };
var msg3 = { payload: msg.payload.pressure };

return [ [msg1], [msg2], [msg3] ];

根据这些数据流,我附上了图表,所有数据似乎都正确显示。然而,这 3 条消息继续出现在调试窗口中。你知道为什么或如何阻止他们吗?

21 Mar 18:28:20 - [error] [ui_gauge:21ce1e34.466272] TypeError: Cannot read property 'toString' of undefined
21 Mar 18:28:20 - [error] [ui_gauge:f04d20fd.29fdd] TypeError: Cannot read property 'toString' of undefined
21 Mar 18:28:20 - [error] [function:89bbcb93.c61508] TypeError: Cannot read property 'z' of undefined

最佳答案

SenseHat 节点为其生成的三种类型的事件发出单独的消息。这意味着每条消息都是运动事件、环境事件或操纵杆事件。

您的代码当前假设每条消息都具有所有属性,但事实并非如此。

您应该在尝试访问每个属性之前添加检查以查看每个属性是否存在。事实上,msg.topic 标识消息包含的事件类型:

var msg1,msg2,msg3;
if (msg.topic === 'motion') {
    msg1 = { payload: msg.payload.acceleration.z };
} else if (msg.topic === 'environment') {
    msg2 = { payload: msg.payload.temperature };
    msg3 = { payload: msg.payload.pressure };
}
return [ msg1, msg2, msg3 ];

关于javascript - Node Red 和 Raspberry pi sense hat 图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42935577/

相关文章:

javascript - grunt.task.run() 不工作

javascript - 展平/展开对象 : am I on the right tracks?

c - 将 C 代码编译为裸机(树莓派)时我做错了什么?

javascript - Node 红色 : lots of time to respond

javascript - 获取 CPU 温度作为 Node 红色中的数字

ibm-cloud - 在 Node-Red 中指定函数节点上的输出

javascript - HTML 5 验证必需的输入字段,显示无属性并且不提交表单

javascript - JQuery 在 div 中选择多个 img 之一

raspberry-pi - 如何在 Raspberry Pi 上运行 robocorp 或 robotsframework 文件 (.robot)?

raspberry-pi - 使用 scapy 进行 channel 跳跃嗅探数据包