2017-03-21 7 views
0

노드가 빨간색이므로 라스베리 감각 모자에서 데이터를 가져 오는 함수를 만들었고 데이터를 3 개의 스트림으로 구분하는 다음 함수를 작성했습니다.노드 빨간색과 Raspberry pi sense hat 차트

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 

답변

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

시간을내어 설명해 주셔서 감사합니다. :-) – resolver101