自定义数据流¶
自定义数据流是对EZtCloud标准通信协议的补充和扩展,用来支持更多类型的设备接入。
EZtCloud为设备接入提供了简单易用的MQTT接入协议,并在MQTT的基础上提供了一套完整的应用规范,包括规定MQTT主题和消息格式。
这些内置的规范有助于设备端的开发过程变得更加简单。但是对于另一些情况,您可能需要使用自定义数据流。比如:
- 由于项目开发的某些需求,需要使用自定义的MQTT主题,或者需要使用自定义的消息格式
- 硬件和云平台的通信需要使用二进制消息。例如:Modbus RTU报文消息
- 需要使用一些现成的设备,只支持TCP网络通信。例如:仅支持TCP连接的DTU设备。
这时,可以为设备类型创建自定义数据流,从而使该设备类型下的所有设备都支持该自定义数据流。
创建自定义数据流¶
进入 设备类型 > 设备类型详情 > 自定义数据流 > 创建自定义数据流,即可创建自定义数据流。
- 数据流名称:支持中文
- 数据流标识符:用在自定义数据流的MQTT主题中,仅支持:英文大小写字母、数字、下划线、横线
- 数据格式:选择自定义数据流中传输的消息格式
数据格式¶
选择正确的数据格式,用于云平台对自定义数据流传输的消息进行合法性验证。
消息格式可以随时修改,支持以下数据格式:
Modbus RTU¶
设备和云平台之间传输的是Modbus RTU二进制消息,通常用在DTU连接云平台,将Modbus子设备的报文直接透传到云平台。
例如:01 03 0A 00 16 00 53 00 38 00 08 00 03 C1 D5
Binary 二进制消息¶
任意自定义的二进制消息。
通常使用自定义二进制消息的场景例如:
- 设备现有通信协议仅支持二进制消息,例如一些工业设备。
- 需要严格限制通信数据流量,用二进制消息尽可能减少消息长度。
JSON 格式消息¶
自定义的JSON消息格式,云平台不对消息格式做任何合法性检查。
Plaintext 文本消息¶
自定义的 Plaintext 消息格式,云平台不对消息格式做任何合法性检查。
自定义数据流的MQTT主题¶
每个自定义数据流都拥有一组预定义好的MQTT主题,如下:
| 消息类型 | 主题 |
|---|---|
| 发布主题 | data/{username}/{attributes} |
| 订阅主题 | data_set/{username}/{attributes} |
自定义数据流在云平台处理¶
设备通过自定义数据流和云平台建立消息通信,云平台可以通过规则对自定义数据流进行各种处理,比如解析Modbus RTU消息并生成预设的属性值。云平台还可以通过规则将自定义数据流转发给第三方应用或接口。
例如:使用Modbus RTU数据格式的自定义数据流,设备向云平台上报了消息:01 03 0A 00 16 00 53 00 38 00 08 00 03 C1 D5
通过在规则中启用Modbus RTU解析规则,云平台在收到以上消息后,会立即自动解析,生成以下设备属性:
{
"temperature": 22,
"humidity": 83,
"hs_temperature": 56,
"cs_temperature": 8,
"device_status": 3
}
绑定TCP数据流¶
自定义数据流除了本身具备MQTT主题,还可以开放TCP接入。设备的TCP接入方式实际上是复用了自定义数据流,当创建自定义数据流后,便可以将某个自定义数据流绑定为TCP数据流。
一个设备类型中,只能有一个自定义数据流可以绑定到TCP数据流。绑定后,设备类型下的所有设备便支持TCP接入,您可以在设备详情页 > 连接,查看TCP接入点的主机名和端口。