順便分享幾個(gè)工具網(wǎng)站給大家:
-
HEX/字符串轉(zhuǎn)換
-
JSON校驗(yàn)
-
BASE64編碼/解碼
node端在做OTAA入網(wǎng)之前,需要先具備三個(gè)參數(shù):
-
APPEUI node自定義的8字節(jié)長(zhǎng)地址
-
APPKEY 服務(wù)器和node端都事先存好,用于對(duì)Join_acept message 做加解密處理
-
DevNonce 2字節(jié)的隨機(jī)數(shù),用于生成隨機(jī)的AppSKey和NwkSKey
這些參數(shù)可以通過(guò)程序固話在里面,或者通過(guò)串口或其他方式在入網(wǎng)操作前告訴node。
當(dāng)這些準(zhǔn)備工作都做好了之后,node設(shè)備就能夠入網(wǎng)了。
第一步
1.node發(fā)起入網(wǎng)請(qǐng)求,也就是發(fā)送join_request message,
根據(jù)LoRaWAN specification 可知,join_request message的格式如下:
其中
需要注意的是Join_request message是未加密的
第二步
2.GW將此數(shù)據(jù)上傳至NS
GW對(duì)MAC層的數(shù)據(jù)不進(jìn)行解析,而是直接將其進(jìn)行base64編碼之后,封裝成JSON包上傳至NS,MAC層的數(shù)據(jù)位于rxpk.data
樣例數(shù)據(jù):
此處,將data進(jìn)行base64解碼,我們就可以看到MAC層數(shù)據(jù)了,因?yàn)閖oin_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ù)沒(méi)有變化
第四步
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,是因?yàn)?
1. NS不做解密的工作,所以不能通過(guò)APPKEY解密負(fù)載得到
2.networkkey在NS對(duì)上下行數(shù)據(jù)進(jìn)行校驗(yàn)的時(shí)候會(huì)使用到
第七步
7.NS將數(shù)據(jù)告訴GW,GW再轉(zhuǎn)換成MAC包,發(fā)送給node
樣例數(shù)據(jù):
需要注意的是,此時(shí)的data部分是經(jīng)過(guò)base64編碼以及AES加密的,直接解碼,看到的數(shù)據(jù)是無(wú)效的,需要再進(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
這個(gè)數(shù)據(jù)是未解密的,我們還需要解密
解密后為\x20 \x43 \x75 \xcb \x24 \x00 \x00 \x02\x00 \x00 \x48 \x03 \x00 \x82 \xc9 \xd0\xf9
具體的情況如下:
可以看到,DevAddr為0x48000002,而AppSKey和NwkSKey無(wú)法直接看出來(lái),需要再計(jì)算
計(jì)算公式如下:
-
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文章
15瀏覽量
12115 -
otaa方式
+關(guān)注
關(guān)注
0文章
1瀏覽量
1926
原文標(biāo)題:LoRaWAN協(xié)議——OTAA入網(wǎng)方式詳述
文章出處:【微信號(hào):murata-eetrend,微信公眾號(hào):murata-eetrend】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論