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

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

HEX/字符串转换

JSON校验

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)

lora服务器传输协议,基于lorawan协议的几种常见入网方法相关推荐

  1. 服务器串口协议,基于TCPIP协议串口通信服务器设计说明.docx

    基于TCP/IP协议的串口通信服务器设计 摘要:随着通信技术与自动控制技术的发展,现代工业发展的一个主要方向趋向于利用网络对设备进行远程控制.用户可以通过中心控制平台使得实时监控不同区域的系统变得很方 ...

  2. UDP客户端向服务器发送文件,基于UDP协议的客户端与服务器端的文件传送

    #include #define IP "127.0.0.1" #define PORT 8888 // 客户端 int main(int argc, char *argv[]) ...

  3. 北境之地服务器没有响应,《北境之地》常见问题解决方法

    <北境之地>常见成绩怎样处理,许多才入门的小搭档必定会被前期一些游戏成绩所难住吧,本日小编给大伙整理对于<北境之地>常见成绩处理方式,供大伙参考,盼望对大伙有所辅助. 怎样成功 ...

  4. 基于FTP协议的文件传输与下载

    目录 一.FTP协议: 二.文件上传: 1.连接服务器 2.登录操作 3.上传操作 三.文件下载 1.连接服务器 2.登录操作 3.下载操作 四. 总结: 一.FTP协议: ftp是(File Tra ...

  5. lorawan协议网关如何选择?-东胜物联

    LoRaWAN网关如何工作? 远程广域网网关是系统的关键组件,因为它们与节点通信并充当中继.它们支持终端设备通过物联网连接到网络服务器.它们只是充当将RF(射频)数据包转换成IP数据包的桥梁,或者反过 ...

  6. LoRaWAN协议中文版 第5章 MAC命令

    前言 这是<LoRaWAN102>的译文,即LoRaWAN协议规范 V1.0.2 版本(2016年7月定稿). 我正在陆续对协议的各个章节进行翻译,具体其他章节的译文,以及译文之外的代码解 ...

  7. 使用nginx搭建音视频点播服务——基于HLS协议

    文章目录 1 音视频技术 1.1 流媒体 1.2 点播与直播 1.3 HLS流媒体协议 1.4 CDN 2 搭建点播服务(音视频同理) 2.1 nginx服务器 2.2 nginx-vod-modul ...

  8. php即时聊天的框架_workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的)...

    workerman-chat(PHP开发的基于Websocket协议的聊天室框架)(thinkphp也是支持socket聊天的) 一.总结 1.下面链接里面还有一个来聊的php聊天室源码可以学习 2. ...

  9. redis客户端-服务端协议(RESP协议)

    简介:      redis客户端与服务端通信,使用RESP(REdis Serialization Protocal,redis序列化协议)协议通信,该协议是专门为redis设计的通信协议,但也可以 ...

最新文章

  1. opencv 霍夫曼变换 直线提取
  2. Redux中的重要概念
  3. codevs 2928 你缺什么
  4. Sqlserver自动优化
  5. UIDevice获取设备数据以及如何获取应用信息
  6. maven项目中引用jave
  7. MATLAB-基本简介
  8. 2022年计算机视觉3大趋势
  9. 视频必备资源:免费音效素材下载
  10. 三维微分方程组四阶龙格库塔求解
  11. Charles 实现电脑抓取手机包(解决手机不能上网问题)
  12. Discuz杂志/新闻报道模板(jeavi_line)UTF8-GBK/DZ模板下载
  13. 使用kind安装单机版k8s学习环境
  14. 【opencv-python】 cv2.subtract(...)图片减法
  15. 你知道路由器,但是你知道交换机吗?
  16. opencv矩形轮廓顶点的具体位置确定
  17. 北工商计算机学校,北京工商大学计算机学院
  18. 产品健康度模型(4) 打分I
  19. 挑战杯、互联网+大学生创新创业大赛项目计划书《多功能智能化无人机》
  20. js汉字转换首字母大写拼音

热门文章

  1. 暑期训练DAY9(贪心)
  2. 人工智能AI趣闻:光头请戴假发!英球赛AI摄像头只对准边裁光头,球迷错过进球,AI:我眼里只有他
  3. 详解【C语言】中的二分查找法和折半查找法(例题解答)
  4. geotools学习(五)影像
  5. 学计算机的气质,大学生“气质大比拼”!闷骚型计算机,直男癌土木工程,你躺枪没...
  6. 与大数据相关的热门职位都有哪些(三)
  7. 【转】【Visual C++】游戏开发笔记十五 游戏人工智能(一) 运动型游戏AI
  8. 原来可以这么使用puts来进行字符串的逆序
  9. git提交远程报错解决方案
  10. 词向量表示和句向量、文章向量计算方法