我是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
答案 0 :(得分:3)
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 ];