系列文章:
【从0到1搭建LoRa物联网】1、LoRa物联网的架构
【从0到1搭建LoRa物联网】2、终端设备开发方式
【从0到1搭建LoRa物联网】3、国产LoRa终端ASR6505软硬件
【从0到1搭建LoRa物联网】4、国产LoRa终端ASR6505普通GPIO
【从0到1搭建LoRa物联网】5、国产LoRa终端ASR6505驱动DHT11
【从0到1搭建LoRa物联网】6、国产LoRa终端ASR6505 I2C接口
【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程
【从0到1搭建LoRa物联网】8、国产LoRa终端ASR6505 PingPong通信
【从0到1搭建LoRa物联网】9、国产LoRa终端ASR6505 PingPong通信OLED显示
【从0到1搭建LoRa物联网】10、LoRa终端ASR6505 ADC采样
【从0到1搭建LoRa物联网】11、ASR6505 LoRaWAN通信

1、GWMP(LoRa Gateway Message Protocol)协议

同一个网关能连接到不同的Network Server、不同厂家的网关可以连接到同一个Network Server,这就要求网关和Network Server之间有统一的通讯协议。这个协议是由semtech制定并维护的,网关和网络服务器之间的通讯协议简称GWMP协议,也叫包转发协议。

2、GWMP消息类型

GWMP消息类型 传输方向 网关源端口号 网络服务器UDP端口号 网关UDP目标端口号
PUSH_DATA 发给服务器 任意 1700
PUSH_ACK 发给网关 1700 PUSH_DATA消息的ACK
PULL_DATA 发给服务器 任意 1700
PULL_ACK 发给网关 1700 PULL_DATA的ACK
PULL_RESP 发给网关 1700 服务器下发给网关,需要发送RF数据
TX_ACK 发给服务器 1700 PULL_RESP的ACK,包含RF发送任务返回状态

3、时序图

3.1、上行时序图

+---------+                                                    +---------+
| Gateway |                                                    | Server  |
+---------+                                                    +---------+| -----------------------------------\                         ||-| When 1-N RF packets are received |                         || ------------------------------------                         ||                                                              || PUSH_DATA (token X, GW MAC, JSON payload)                    ||------------------------------------------------------------->||                                                              ||                                           PUSH_ACK (token X) ||<-------------------------------------------------------------||                              ------------------------------\ ||                              | process packets *after* ack |-||                              ------------------------------- ||                                                              |

PUSH_DATA <–> PUSH_ACK:网关向网络服务器提交上行RF数据包。

3.2、下行时序图
+---------+                                                    +---------+
| Gateway |                                                    | Server  |
+---------+                                                    +---------+| -----------------------------------\                         ||-| Every N seconds (keepalive time) |                         || ------------------------------------                         ||                                                              || PULL_DATA (token Y, MAC@)                                    ||------------------------------------------------------------->||                                                              ||                                           PULL_ACK (token Y) ||<-------------------------------------------------------------||                                                              |

PULL_DATA <–> PULL_ACK:GW向NS发送“心跳”。

+---------+                                                    +---------+
| Gateway |                                                    | Server  |
+---------+                                                    +---------+|      ------------------------------------------------------\ ||      | Anytime after first PULL_DATA for each packet to TX |-||      ------------------------------------------------------- ||                                                              ||                            PULL_RESP (token Z, JSON payload) ||<-------------------------------------------------------------||                                                              || TX_ACK (token Z, JSON payload)                               ||------------------------------------------------------------->|

PULL_RESP <–> TX_ACK:NS向GW提交下行RF数据包。

4、 数据格式

4.1、PUSH_DATA帧格式

字节 功能
0 协议版本 = 2
1-2 随机值
3 PUSH_DATA 标识码 0x00
4-11 网关ID
12-结束 JSON对象

4.2、PUSH_ACK帧格式

字节 功能
0 协议版本= 2
1-2 PUSH_DATA的随机值,用来识别ACK
3 PUSH_ACK标识码0x01

4.3、PULL_DATA帧格式

字节 功能
0 协议版本 = 2
1-2 随机值
3 PULL_DATA 的标识码 0x02
4-11 网关ID

4.4、PULL_ACK 帧格式

字节 功能
0 协议版本= 2
1-2 PULL_DATA的随机值,用来识别ACK
3 PULL_ACK 的标识码 0x04
4.5、PULL_RESP 帧格式
字节 功能
0 协议版本=2
1-2 随机值
3 PULL_RESP的标识码 0x03
4-结束 JSON对象
4.6、TX_ACK 帧格式
字节 功能
0 协议版本= 2
1-2 PULL_RESP 的随机值,用来识别ACK
3 TX_ACK 的标识码 0x05
4-11 G网关ID
12-end 可选JSON 对象

5、JSON协议

5.1、网关向服务器提交接收到的RF数据包

{"rxpk":[{"time":"2013-03-31T16:21:17.528002Z",               //收到LoRa帧的UTC时间 "tmst":3512348611,                                 //收到RF信号的SX1301内部时间"chan":0,                                          //信道"rfch":1                                            //射频前端,一般130x会有两个射频前端"freq":470.3,                                       //频率"stat":1,             //接收收RF数据的CRC状态。1代表正确,-1代表CRC校验不过,0代表没有CRC校验"modu":"LORA",                                        //射频调制方式"datr":"SF7BW125",                                    //速率"codr":"4/6",                                         //编码率"rssi":-35,                                            //接收灵敏度"lsnr":5.1,                                            //信噪比"size":32,                                           //数据长度"data":"-DS4CGaDCdG+48eJNM3Vai-zDpsR71Pn9CPA9uCON84"  //base64编码数据}
]}

5.2、服务器向网关下发RF数据包

{"txpk":{"imme":true,            //是否立刻发送"freq":500.3,         //频率"rfch":0,             //射频前端"powe":14,              //发射功率"modu":"LORA",          //射频调制方式"datr":"SF11BW125",     //速率"codr":"4/6",           //编码率"ipol":false,           //I/Q信号反转"size":32,              //数据长度"data":"H3P3N2i9qc4yt7rK7ldqoeCVJGBybzPY5h1Dd7P7p8v"    //base64编码数据
}}

5.3、网关状态

{"stat":{"time":"2014-01-12 08:59:28 GMT",       //网关的UTC时间"lati":46.24000,                      //纬度"long":3.25230,                           //经度"alti":145,                               //高度"rxnb":2,                             //收到的无线数据包数"rxok":2,                              //正确的无线数据包数"rxfw":2,                              //转发的无线数据包数"ackr":100.0,                          //网关收到PUSH_ACK的百分比"dwnb":2,                               //网关收到服务器下发RF数据包数量"txnb":2                                //网关RF发出的数据包数
}}

欢迎关注微信公众号【物联网思考】,回复关键字“ ASR6505”获取资料,《从0到1搭建LoRa物联网》系列的所有软硬件资料将会分享在公众号。

【从0到1搭建LoRa物联网】12、LoRa网关与平台通讯协议相关推荐

  1. 【全网详解】从0到1搭建双十一实时交易数据展示平台——Spark+Kafka构建实时分析系统

    目录 万事具备之巧借东风 预备知识 环境搭建 Spark安装 Kafka安装 Kafka核心知识介绍 Kafka开启及测试服务 Python依赖库 PyCharm安装 搭建总结 八仙过海之各显神通 数 ...

  2. 【从0到1搭建LoRa物联网】15、LoRa连接到The Things Network

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  3. 【从0到1搭建LoRa物联网】13、低成本单通道网关(一)

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  4. 【从0到1搭建LoRa物联网】16、LoRa连接到腾讯云物联网平台

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  5. 【从0到1搭建LoRa物联网】17、LoRa连接到chirpstack

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  6. 【从0到1搭建LoRa物联网】18、LoRa应用服务器Application Server

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  7. 【从0到1搭建LoRa物联网】20、LoRaWAN扩展

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  8. 【从0到1搭建LoRa物联网】14、低成本单通道网关(二)

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  9. 【从0到1搭建LoRa物联网】19、LoRa串口透传例程(补充)

    系列文章: [从0到1搭建LoRa物联网]1.LoRa物联网的架构 [从0到1搭建LoRa物联网]2.终端设备开发方式 [从0到1搭建LoRa物联网]3.国产LoRa终端ASR6505软硬件 [从0到 ...

  10. LoRa、LoRaWAN及网关相关技术介绍

    LoRa.LoRaWAN及网关技术介绍 1. LoRa与LoRaWAN 2. LoRaWAN协议定义的终端节点工作模式 3. LoRaWan网络架构 4. 组网方式 5. 终端节点→网关:多对一时 6 ...

最新文章

  1. localhost❤matrix6
  2. hdu6438 Buy and Resell 买卖物品 ccpc网络赛 贪心
  3. 让你的网站在移动端健步如飞
  4. 软件测试的艺术第三章总结
  5. Fragment的布局中自定义Layout的onSizeChanged添加组件失败的问题
  6. 牛逼! IDEA 2020 要本土化,真的是全中文了!
  7. 开源基于Canal的开源增量数据订阅消费中间件
  8. php+api抖音随机播放视频源码
  9. mysql sql优化入门_Mysql入门SQL 语句优化方法30例
  10. matlab模拟砂轮形貌,基于多颗磨粒随机分布的虚拟砂轮建模及磨削力预测
  11. java随机生成字母用三元运算符,【代码笔记】Java常识性基础补充(一)——赋值运算符、逻辑运算符、三元运算符、Scanner类、键盘输入、Random类、随机数...
  12. I/O设备与主机的联系方式
  13. 实践中 XunSearch(讯搜)更新索引方案对比
  14. 【绘图】Origin关闭加速模式(speed mode)
  15. 用python画一只加拿大电鳗
  16. 一次搞明白什么是MVC、MVP、MVVM?
  17. EXCEL成绩分出优秀及格与不及格
  18. 命题逻辑完备性定理证明
  19. 房屋租赁系统 nodejs+vue微信小程序
  20. 元器件学习——————三极管

热门文章

  1. OSX 安装MongoDB
  2. linux foxit,Foxit PDF SDK
  3. 【JAVA程序设计】(C00075)基于SSM的网上汽车租赁管理系统
  4. 微信桌面版如何同时登陆两个微信账号
  5. 二维离散傅里叶变换 matlab
  6. 五分钟看懂plc梯形图程序
  7. javaw java_我可以找出java程序是使用java还是javaw启动的
  8. 值得收藏!教你如何在火星直播中使用分享码
  9. 香橙派的使用入门无屏幕安装系统
  10. 运放参数的详细解释和分析