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®パケットの解析の実行