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

系列文章:
【从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发给网关1700PUSH_DATA消息的ACK
PULL_DATA发给服务器任意1700
PULL_ACK发给网关1700PULL_DATA的ACK
PULL_RESP发给网关1700服务器下发给网关,需要发送RF数据
TX_ACK发给服务器1700PULL_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随机值
3PUSH_DATA 标识码 0x00
4-11网关ID
12-结束JSON对象
4.2、PUSH_ACK帧格式
字节功能
0协议版本= 2
1-2PUSH_DATA的随机值,用来识别ACK
3PUSH_ACK标识码0x01
4.3、PULL_DATA帧格式
字节功能
0协议版本 = 2
1-2随机值
3PULL_DATA 的标识码 0x02
4-11网关ID
4.4、PULL_ACK 帧格式
字节功能
0协议版本= 2
1-2PULL_DATA的随机值,用来识别ACK
3PULL_ACK 的标识码 0x04
4.5、PULL_RESP 帧格式
字节功能
0协议版本=2
1-2随机值
3PULL_RESP的标识码 0x03
4-结束JSON对象
4.6、TX_ACK 帧格式
字节功能
0协议版本= 2
1-2PULL_RESP 的随机值,用来识别ACK
3TX_ACK 的标识码 0x05
4-11G网关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物联网》系列的所有软硬件资料将会分享在公众号。在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

freemote

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值