什么是网关?
负责将一个或多个设备连接至物联网平台的设备,是设备接入网络与互联网的转换器
什么是网关子设备?
无法直接与互联网/平台通信,需要借由网关实现与平台的数据连接的物联网设备
网关子设备与网关之间需要有固定的“一对一”或“一对多”拓扑关系 网关子设备与网关之间无固定绑定关系,而是由平台进行拓扑关系维护的情况,需借由第三方接入平台,使用云对云方式对接
LinkOS网关子设备处理模型
基础模型及术语定义
- 子设备与网关之间使用各类接入协议通信,如modbus,lora私有协议,433射频私有协议等
- 网关与linkos之间通信,使用包含但不限于2/3/4/5G/NB-IoT,LoRaWAN和以太网等方式
- 子设备通信地址:子设备与网关之间通信时,用于对子设备进行寻址的编号,称之为“子设备通信地址”
- 子设备数据:子设备实际需要上报的业务数据,称之为“子设备数据”
- 网关设备编号:linkos向网关设备寻址时使用的编号
上行处理过程
- LinkOS实现网关与子设备物模型
- LinkOS注册网关和子设备,并建立网关与子设备之间的关联关系
- 网关采集到子设备的数据报文,应当包含“子设备通信地址”和“子设备数据”
- 网关将子设备数据报文,按照与linkos的通信方式,发送至linkos,应当包含“子设备通信地址”、“子设备数据”和“网关设备编号”
- 网关物模型将接收到的网关数据,解析出“子设备通信地址”和“子设备数据”,
- LinkOS根据网关与子设备的关联关系和“子设备通信地址”,寻找到对应的子设备物模型
- 子设备物模型进行数据解析
下行处理过程
- LinkOS实现网关与子设备物模型
- LinkOS注册网关和子设备,并建立网关与子设备之间的关联关系
- 子设备物模型接收到应用的下行服务请求,使用编码规则编码出设备可识别的业务数据,形成“子设备数据”
- LinkOS根据网关与子设备的关联关系,寻找到对应的网关物模型,并将“子设备通信地址”和“子设备数据”传递给对应的网关物模型进行编码处理
- 网关物模型根据网关与LinkOS之间的通信协议进行编码,并下发至对应网关,网关继而把数据发送至对应子设备
网关与网关子设备的数据解析
网关设备
数据输入结构:视接入渠道而定,网关设备的解析规则输入与终端设备相同 返回值要求:必须将输入数据解析并拆分为网关所管理的各子设备数据,返回值为对象数组
{ "child_device_pkt": [ { "child_device_comm_id": xxx, // 子设备1通信ID "child_device_data": xxx // 子设备1数据 }, { "child_device_comm_id": xxx, // 子设备2通信ID "child_device_data": xxx // 子设备2数据 } ] }
解析规则示例
function parsing(data){ var obj = {}; obj.child_device_pkt = []; child_device_pkt.push({'child_device_comm_id': 'xxxx1', 'child_device_data': 'xxxx1'}); // 子设备1数据 child_device_pkt.push({'child_device_comm_id': 'xxxx2', 'child_device_data': 'xxxx2'}); // 子设备2数据 return obj; }
编码规则示例
输入字段包含2个默认字段:child_device_comm_id和child_device_data,分别对应要下发命令的网关子设备的通信ID和业务数据 返回值字段要求:视接入渠道而定,与终端设备相同
function cmd_downlink(data){ var result = {}; result.payload = data.child_device_comm_id + data.child_device_data; return result; }