通信协议简述

注意:通信协议是一套系统中非常核心的内容,设计好后通信的双发必须遵守,不得擅自修改。本文中如果标定自行发挥字样或者需求无对应协议的的可以根据需求自行修订,其余的不允许修改。

指令类型

通信的json协议中,通过type字段来标定事务类型,type取值如下(可以继续扩展):

1:采集指令/采集回复指令
2:控制指令/控制回复指令
3:模式修改
4:历史数据查询

节点查询请求

客户端--->上报进程

  1. 对应网关“刷新上报”的方式,QT客户端主动下发采集指令,网关收到采集指令后根据指令要求上报数据点。
  2. QT客户端控制设备后,为了及时获知到设备是否正常响应,可以延时一段时间后更新下设备状态,此时也需要下发一条采集指令。

注意:limit只做all模式即可。部分点采集功能“part”做保留。

  • topic: /app/data/down
{
	"type": 1, //指令类型:1-采集指令
	"limit": "all", //采集数据点范围,all/part,默认全部采集,也可单点或者部分点采集。
	"keys": [1, 2, 3, 4] //limit为part时有效,表示采集点的key值
}

节点查询回复

上报进程-->客户端

  1. 如果网关设置的上报模式是“刷新上报”或者“周期上报”,data数组肯定包含所有的数据点。
  2. 如果网关设置的上报模式是“变化上报”,那么data数组只包含变化的数据点。这里注意区分。
  • topic: /app/data/up
{
	"type": 1, //回复指令类型:1-采集回复指令
	"result": 0, //成功返回0,失败返回1
	"data": [{  //数据点值数组,控制指令不需要  
			"key": 1,  //数据点key
			"val": "22.5"  //数据点键值,必须用字符串,因为不一定是什么类型的,bool类型"0"代表flase,1代表true
		},
		{
			"key": 2,
			"val": "52.5"
		},
		{
			"key": 3,
			"val": "2"
		}
	]
}

主动上报协议

上报进程-->客户端

  • topic: /app/data/up

主动上报即上报进程的定时上报和变化上报,协议复用上述的“节点查询回复”协议。

你可能感兴趣的:(网络)