Javascript 节点红色和覆盆子圆周率检测帽图表

Javascript 节点红色和覆盆子圆周率检测帽图表,javascript,raspberry-pi,node-red,Javascript,Raspberry Pi,Node Red,我不熟悉节点red,我创建了一个函数,从Raspberry sense帽子中获取数据,并编写了以下函数将数据分为3个流: var msg1 = { payload: msg.payload.acceleration.z }; var msg2 = { payload: msg.payload.temperature }; var msg3 = { payload: msg.payload.pressure }; return [ [msg1], [msg2], [msg3] ]; 从这些数据

我不熟悉节点red,我创建了一个函数,从Raspberry sense帽子中获取数据,并编写了以下函数将数据分为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 ];

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 ];

谢谢你花时间解释:-)谢谢你花时间解释:-)