2017-01-13 2 views
0

박쥐에서 벗어난 나는 모든 멍청한 놈이다. 그래서 어떤 도움이라도 대단히 감사 할 것이다.Node-Red : JSON 데이터를 파싱하여 바이너리로 변환합니다.

INJECT- 셀프 explanitory

NAME- 반환 {페이로드 : "= 00ECC90AG001XQ01"내 스크린 샷에서 볼 수 있듯이 여기

내 문제의 고장이며, 여기에 노드입니다 };

HTTP 요청 = "http://192.168.63/get_points/"+ msg.payload msg.method = "GET"점 - msg.url를 얻을; 돌아 오는 메시지;

http 요청- GET으로 설정하십시오.

JSONpath- .points [0]이 http://192.168.63/get_points/=00ECC90AG001XQ01에있는 JSON를 파싱 설정되어 .ST $.

내가이 형성 얻을 출력은 내가 바이너리에이 번호를 변환하고 싶습니다 458886.

입니다. 그런 다음이 바이너리에서 -7 자릿수를 파싱하고 싶습니다.

입력을 이진수로 변환하기위한 이진 노드 (스크린 샷에서 연결이 끊어진 것)를 사용해 보았습니다. 나는 "패턴"요구 사항을 통과 할 수 없었다. Layout

답변

0

이진 노드는 아마도 당신이 찾고있는 노드가 아니며 복잡한 이진 구조를 작성/파싱하는 데 더 유용합니다.

다음과 같은 뭔가 함수 노드가 될이 작업을 수행하는 간단한 방법 :

var binary = msg.payload.toString(2); 
// 6 because it's zero based count 
var bit7 = binary.charAt(6); 
msg.payload = bit7; 
return msg; 

이 피드백의 왼쪽

+0

감사에서 7 번째 문자를 찾을 수 있습니다! 한 가지 더 질문하지만, 먼저 458886을 바이너리 (0b1110000000010000110)로 변환해야합니다. 어떤 아이디어? –

+0

아니요, 함수의 첫 번째 행은 숫자를 2 진수로 변환합니다. 'toString (2)'는 숫자를 밑줄 2의 문자열로 바꾼다. (앞에 '0b'가 없다.) – hardillb

+0

네가 맞아, 내게 던지는 것은 내 원래 458886의 숫자가 계속 나타나고있다. 바이너리로 변환 된 경우에만 1 또는 0을 선택해야합니다. 이것은 내가 지금 내 출력 5, 어딘가에 바이너리 변환을 잃고 라인을 따라 : var binary = msg.payload.toString (2); var alarmBit = binary.charAt (binary.length-5); msg.payload = alarmBit; 메시지를 반환합니다. 한 가지 더 궁금한 점이 있다면, 변수가 msg 변수에 저장되지 않은 이유는 왜 msg.payload에 있어야합니까? 이것은 Node-Rd에 내장 된 메서드의 일부 유형입니까? –

관련 문제