4.1.2. LoRaWAN®パケットの解析
上記のセクションで説明したようにlora-packetライブラリが提供されています。
このライブラリはLoRaScriptでLoRaWAN®パケットをパースするために使用できます。
リスト4-5はコード例であり図4-2は実行結果を示しています。
リスト4-5 LoRaWAN®パケットの解析例
var lora_packet = require('lora-packet'); function onInit() { debug_print("on init"); } function onLoRaRx (data) { debug_print("on Recv data"); var raw = JSON.parse(data); var lorawan_packet = new Buffer(raw.data, 'base64'); if(lorawan_packet.length>12) { var device = new Buffer(4); for (var i=0; i<4; i++) { device[i] = lorawan_packet[4-i]; } var packet = lora_packet.fromWire(lorawan_packet); var NwkSKey = new Buffer("2b7e151628aed2a6abf7158809cf4f3c", 'hex'); if(lora_packet.verifyMIC(packet, NwkSKey)){ var AppSKey = new Buffer("2b7e151628aed2a6abf7158809cf4f3c", 'hex'); var dec = lora_packet.decrypt(packet, AppSKey, NwkSKey).toString('hex'); var msg = { devaddr: device.toString('hex'), data: dec, fport: packet.getFPort(), counter: packet.getFCnt(), freq: raw.freq, datr: raw.datr }; debug_print(JSON.stringify(msg)); } } }
図4-2 LoRaScriptでのLoRaWAN®パケットの解析の実行