順便分享幾個工具網(wǎng)站給大家:
-
HEX/字符串轉(zhuǎn)換
-
JSON校驗
-
BASE64編碼/解碼
node端在做OTAA入網(wǎng)之前,需要先具備三個參數(shù):
-
APPEUI node自定義的8字節(jié)長地址
-
APPKEY 服務(wù)器和node端都事先存好,用于對Join_acept message 做加解密處理
-
DevNonce 2字節(jié)的隨機數(shù),用于生成隨機的AppSKey和NwkSKey
這些參數(shù)可以通過程序固話在里面,或者通過串口或其他方式在入網(wǎng)操作前告訴node。
當(dāng)這些準(zhǔn)備工作都做好了之后,node設(shè)備就能夠入網(wǎng)了。
第一步
1.node發(fā)起入網(wǎng)請求,也就是發(fā)送join_request message,
根據(jù)LoRaWAN specification 可知,join_request message的格式如下:

其中

需要注意的是Join_request message是未加密的
第二步
2.GW將此數(shù)據(jù)上傳至NS
GW對MAC層的數(shù)據(jù)不進(jìn)行解析,而是直接將其進(jìn)行base64編碼之后,封裝成JSON包上傳至NS,MAC層的數(shù)據(jù)位于rxpk.data
樣例數(shù)據(jù):

此處,將data進(jìn)行base64解碼,我們就可以看到MAC層數(shù)據(jù)了,因為join_request message數(shù)據(jù)是未加密的。
data部分的內(nèi)容如下:
\x00 \x01 \x00 \x00 \x20 \x00 \xc5 \x26
\x2c \x16 \x10 \x16 \x20 \x00 \x77 \x4a
\x00 \x54 \x7b \x40 \x2d \xe1 \x9a
各部分的內(nèi)容分別為:

第三步
3.NS向AS發(fā)送設(shè)備入網(wǎng)包
樣例數(shù)據(jù):

將join.frame進(jìn)行base64 解碼,得到的內(nèi)容為:
\x00 \x01 \x00 \x00 \x20 \x00 \xc5 \x26
\x2c \x16 \x10 \x16 \x20 \x00 \x77 \x4a
\x00 \x54 \x7b \x40 \x2d \xe1 \x9a
可以看到,原先的MAC 層的data數(shù)據(jù)沒有變化
第四步
4.AS同意入網(wǎng)并且向NS回復(fù)同意入網(wǎng)
樣例數(shù)據(jù):

第五步
5.NS生成MoteAddr,并將node端的信息發(fā)送給AS
樣例數(shù)據(jù):

第六步
6.AS生成密鑰,并將相關(guān)信息告訴NS
樣例數(shù)據(jù):

可以看到,networkkey直接發(fā)送給NS了,這也就是NwkSKey,之所以明文告訴NS,是因為:
1. NS不做解密的工作,所以不能通過APPKEY解密負(fù)載得到
2.networkkey在NS對上下行數(shù)據(jù)進(jìn)行校驗的時候會使用到
第七步
7.NS將數(shù)據(jù)告訴GW,GW再轉(zhuǎn)換成MAC包,發(fā)送給node
樣例數(shù)據(jù):

需要注意的是,此時的data部分是經(jīng)過base64編碼以及AES加密的,直接解碼,看到的數(shù)據(jù)是無效的,需要再進(jìn)行解密,解密需要使用APPKEY,也就是之前介紹的APPKEY.
txpk.data部分就是LoRaWAN MAC的join_accept message.
第八步
8.node解析join_accept message 部分
根據(jù)LoRaWAN specification 可知,join_accept message的格式如下:

其中

需要注意的是Join_accept message是加密的,需要使用APPKEY解密
txpk.data:"data": "IPqAKXQ7LS/CmYVCDy8K3k4"
base64解碼:\x20 \xfa \x80 \x29 \x74 \x3b \x2d \x2f\xc2 \x99 \x85 \x42 \x0f \x2f \x0a \xde\x4e
這個數(shù)據(jù)是未解密的,我們還需要解密
解密后為\x20 \x43 \x75 \xcb \x24 \x00 \x00 \x02\x00 \x00 \x48 \x03 \x00 \x82 \xc9 \xd0\xf9
具體的情況如下:

可以看到,DevAddr為0x48000002,而AppSKey和NwkSKey無法直接看出來,需要再計算
計算公式如下:
-
NwkSKey = aes128_encrypt(AppKey, 0x01 | AppNonce | NetID | DevNonce | pad16)
-
AppSKey = aes128_encrypt(AppKey, 0x02 | AppNonce | NetID | DevNonce | pad16)
-
LoRaWAN協(xié)議
+關(guān)注
關(guān)注
3文章
20瀏覽量
12505 -
otaa方式
+關(guān)注
關(guān)注
0文章
1瀏覽量
2008
原文標(biāo)題:LoRaWAN協(xié)議——OTAA入網(wǎng)方式詳述
文章出處:【微信號:murata-eetrend,微信公眾號:murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
請問一下怎樣去開發(fā)一種LoRaWAN協(xié)議?
幾種常見路由器設(shè)置方法
詳解LoRaWAN網(wǎng)絡(luò)架構(gòu)和協(xié)議內(nèi)容
LoRaWAN協(xié)議之OTAA入網(wǎng)流程
LoRaWAN網(wǎng)絡(luò)協(xié)議的優(yōu)勢介紹
OTAA節(jié)點是如何入網(wǎng)的
LoRaWAN網(wǎng)關(guān)與常見網(wǎng)絡(luò)服務(wù)器的協(xié)議

基于lorawan協(xié)議的幾種常見入網(wǎng)方法
評論