datasheet

murata村田

文章数:487 被阅读:97864

账号入驻

LoRaWAN协议——OTAA入网方式详述

2017-11-09
    阅读数:
前言


OTAA(Over-The-Air Activation),是LoRaWAN的一种空中入网方式。当node在上电的时候处于非入网状态时,需要先入网才能和服务器进行通信。其操作就是node发送join_request message,请求入网,然后服务器同意入网,并且返回Join-accept message,node再对信息进行解析,获取通信参数,之后就可以和服务器通信了。


顺便分享几个工具网站给大家:

  1. HEX/字符串转换

  2. JSON校验

  3. BASE64编码/解码


OTAA方式入网步骤


准备工作


node端在做OTAA入网之前,需要先具备三个参数:

  • APPEUI node自定义的8字节长地址

  • APPKEY 服务器和node端都事先存好,用于对Join_acept message 做加解密处理

  • DevNonce 2字节的随机数,用于生成随机的AppSKey和NwkSKey


这些参数可以通过程序固话在里面,或者通过串口或其他方式在入网操作前告诉node。


当这些准备工作都做好了之后,node设备就能够入网了。


第一步


1.node发起入网请求,也就是发送join_request message,

根据LoRaWAN specification 可知,join_request message的格式如下:


其中


需要注意的是Join_request message是未加密的


第二步


2.GW将此数据上传至NS


GW对MAC层的数据不进行解析,而是直接将其进行base64编码之后,封装成JSON包上传至NS,MAC层的数据位于rxpk.data

样例数据:

此处,将data进行base64解码,我们就可以看到MAC层数据了,因为join_request message数据是未加密的。


data部分的内容如下:

\x00 \x01 \x00 \x00 \x20 \x00 \xc5 \x26

\x2c \x16 \x10 \x16 \x20 \x00 \x77 \x4a

\x00 \x54 \x7b \x40 \x2d \xe1 \x9a


各部分的内容分别为:


第三步


3.NS向AS发送设备入网包


样例数据:


将join.frame进行base64 解码,得到的内容为:

\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数据没有变化


第四步


4.AS同意入网并且向NS回复同意入网


样例数据:


第五步


5.NS生成MoteAddr,并将node端的信息发送给AS


样例数据:


第六步


6.AS生成密钥,并将相关信息告诉NS

样例数据:


可以看到,networkkey直接发送给NS了,这也就是NwkSKey,之所以明文告诉NS,是因为:


1. NS不做解密的工作,所以不能通过APPKEY解密负载得到


2.networkkey在NS对上下行数据进行校验的时候会使用到


第七步


7.NS将数据告诉GW,GW再转换成MAC包,发送给node


样例数据:

需要注意的是,此时的data部分是经过base64编码以及AES加密的,直接解码,看到的数据是无效的,需要再进行解密,解密需要使用APPKEY,也就是之前介绍的APPKEY.


txpk.data部分就是LoRaWAN MAC的join_accept message.


第八步


8.node解析join_accept message 部分


根据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


这个数据是未解密的,我们还需要解密


解密后为
\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)


文章转载自:http://www.cnblogs.com/answerinthewind/ 


推荐阅读

【视频】验证负离子发生器除去PM2.5的效果3—— 带电滤波器(折叠式滤波器)

避免片状多层陶瓷电容器断裂的安装方法

多层陶瓷电容扭曲裂纹的产生原理及预防方案

LoRaWAN协议(二)--LoRaWAN MAC数据包格式

基于高性能应用处理器和Android操作系统的物联网开发平台

验证负离子发生器除去PM2.5的效果2:带电滤波器(蜂窝结构)

陶瓷电容器具备哪些种类?

掌握贴片多层陶瓷电容器的制作方法

村田推出输入输出电压范围广泛的小型DC-DC转换器

资深工程师带你玩转片状多层陶瓷电容器的封装方法

【视频】:村田Wi-Fi音频通讯解决方案

99%的人都收藏了的最全电气工程符号,别错过了!

详解村田ESR控制型低ESL电容器LLR系列的特点及应用



  如需了解其他内容,请关注后反馈给我



About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: TI培训

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved