2014-06-12 5 views
2

나는 꽤 새로운데, 내 Arduino가 "Lux and Temp"라는 이름의 Xively 스트림에 값을 게시하는 방법을 혼란스럽게합니다. 3 가지 값; 카운트, 럭스, 온도.Xively and Node-Red

이제 Node-Red를 사용하여 그 값을 가져와 무언가를하십시오. http://nodered.org

나는 노드 - 레드가 실행 중이지만, Xively API 피드의 데이터를 구문 분석하는 방법을 알면 알 수 있습니다. https://api.xively.com/v2/feeds/1823833592

슬프게도 여기에 반환되는 데이터를 실제로 게시 할 수있는 충분한 평판 포인트가 없습니다. 데이터에 3 개 이상의 URL이 포함되어 있기 때문에 충분하지 않습니다. LONG 문자열의 데이터이기도합니다. ;)

나는 원하는 부분을 추출하는 함수를 작성하는 방법에 관해서는 난처한 편이다.

내가 가장 먼저 원하는 것은 간단한 트위터 피드를 만드는 것입니다. 뭔가가 좋아.

"40 카운트, 럭스 (30), 온도 78.3"

나는 결국 내 RasPi 뭔가를 만드는 것처럼 다른 것들에 대한 코드를 재활용 할 수 있습니다; 디스플레이 또는 일부 LED 일 수 있습니다. 두 경우 모두 데이터를 구문 분석하고 다양한 메시지를 작성해야합니다.

누구나 솔루션을 통해 나를 걸을 수있는 Node-Red 기능에 대한 경험이 있습니까? Node-Red 사이트는 꽤 멋지지만, 나는 그것이 내가 실제로 경험하는 것보다 훨씬 숙련 된 사용자라고 가정한다고 생각합니다. 그것은 힌트를 제공하지만 솔직히 내가 아는 모든 것에 관해서는 상당히 기본적인 Arduino와 사소한 수준의 Python이다.

답변

0

OK, 너무 까다로울 수 있지만, 기능 블록이 퍼팅 시도해서는 안 :

var newPayload = ""; 
var count, lux, temp; 

var data = msg.payload.datastreams; 

for (var i = 0 ; i< data.length; i++) { 
    if (data[i].id === 'Count') { 
    count = data[i].current_value; 
    }else if (data[i].id === 'Lux') { 
    lux = data[i].current_value; 
    } else if (data[i].id === 'Temp') { 
    temp = data[i].current_value; 
    } 
} 

newPayload = util.format('Count: %s, Lux: %s, Temp: %s', count, lux, temp); 

msg.payload = newPayload; 

return msg; 

당신은 msg.payload = JSON.parse (msg.payload)를 추가해야 할 수도 있습니다; 그러나 처음부터 xiving에서 피드를 얻는 것이 이미 json으로 간주되지는 않습니다. [편집] JSON 구문 분석 노드를 통해 흐름을 실행할 수도 있습니다. (나는 항상 변환기 노드를 잊어 버린다.)

트위터 출력 노드에 연결할 수 있어야한다.

+0

고마워요! 나는 그것을 줄 것이다. – quade

+0

굉장! msg.payload = JSON.parse (msg.payload);를 추가해야했습니다. 시작까지, 그러나 그것은 일하고있다! 당신의 예제는 읽기 쉽기 때문에 그것을 이해할 수있을만큼 충분히 이해하고 있다고 생각합니다. 고맙습니다. – quade