snmpを使用してスイッチから複数の64ビットカウンタを読み込みました。値をバッファに格納します。しかし、バッファのサイズは8バイトほどではないので、 'buf.readDoubleBE'を使って変換することはできません。カウンターが増加している間にバッファーが増加します。 次の例では、カウンタ値に変換する方法を任意のヒントSNMPサブツリーのノード(ちょうど最初の二つのオブジェクト)node-redを値に変換する
msg : Object
object
host: "192.168.0.11"
name: "SWHAR"
_msgid: "3a45e09a.957c9"
oid: "1.3.6.1.2.1.31.1.1.1.6"
payload: array[33]
[0 … 9]
0: object
oid: "1.3.6.1.2.1.31.1.1.1.6.1"
value: buffer[4]raw
0: 0x0
1: 0xb9
2: 0xda
3: 0x4b
1: object
oid: "1.3.6.1.2.1.31.1.1.1.6.2"
value: buffer[1]raw
0: 0x0
2: object ....cut
の出力ですか? 私は以下の関数を使って配列を個々のメッセージに分けています。 ドキュメントを最後まで読まずに 'readDoubleBE(0、true)'を使ってみましたが、すぐにDockerコンテナを停止します。 noAssertなしインデックスから範囲外のエラーが発生しました。
function shootMsg(element, index, array) {
node.send ({payload: element.value, topic:'SwMetrics/' + msg.name + '/' + index});
}
msg.payload.forEach(shootMsg);
と4つの別々のバイトとしてそれを読んでする必要があるので、4バイト
value
は、実際のIPアドレスであることを推測するつもりだました64ビットの値はカウンタなので、常に整数になりますか? – hardillbまた、NodeJSがサポートできる最大整数型は32ビットです – hardillb