2017-01-13 10 views
0

すぐにバットを外して、私は全部の騒ぎですので、どんな助けでも大歓迎です。ここでNode-Red:JSONデータを解析し、バイナリに変換します。

は、ここでは、私の問題の内訳である私のスクリーンショットに見られるようなノードです:

INJECT- 自己explanitory

名 - リターン{ペイロード: "= 00ECC90AG001XQ01" };

HTTPリクエストは= "http://192.168.63/get_points/" + msg.payload msg.method = "GET" ポイント・ツー msg.urlを取得します。 返信msg;

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文字を見つけます!しかしもう1つの質問ですが、私はまず458886をバイナリ(0b1110000000010000110)に変換する必要があります。何か案は? –

+0

いいえ、関数の最初の行は数値をバイナリに変換します。 '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;メッセージを返す。もう1つの質問ですが、変数がmsg変数に格納されていないのはなぜですか?msg.payloadにはどうしてですか?これはNode-Rdに組み込まれたメソッドの一部ですか? –

関連する問題