MineCC 前后端接口 - 版本1
接口消息格式
MineCC 前后端接口 顾名思义 就是 前端界面 和 后端服务系统 之间的 通讯接口。
前后端之间 是TCP 长连接。后端 是服务端,前端是客户端
每个消息以 字节 04
(ASCII码 EOT
end of transmission)作为结束符,也就是消息边界
消息体内容是JSON格式的编码。
目前消息内容字符都是ascii范围之内的。
如果消息中有中文字符,编码时,采用unicode escape, 防止消息中出现 04字节,搞乱边界
消息格式示例如下,为消息头加消息体,以 字符$
作为分隔符
BF01|notify-to-frontend|0|1695691644857589${"device-sn":"aaaa0002","humidity":51.85,"temperature":25.56}
消息头
消息头存放消息类型,以 $
结束
消息头中内容以 |
分隔,依次为 协议版本、消息类型、是否重发消息、消息编号
协议版本
当前协议版本为1, 表示为 BF01
消息类型
描述当前消息的类型,比如
后端通知前端消息: notify-to-frontend
设备控制消息: device_control
在项目实战练习说明中,会有各个消息的含义说明
是否重发消息
表示该消息是首次发送还是重发的消息
0 为正常消息, 1 为重发消息
消息编号
用一个无符号整数,作为消息的编号,用来标记消息。
响应消息必须和请求消息使用同一编号
消息编号要保证唯一
消息的编号方式推荐格式: 当前时间戳unix时间(到微秒), 比如,1670243387.279147
业务消息如果需要响应,并且超时,必须重发,重发消息的 编号 和前面的消息一致,并且重发消息头标记。
当接收方发现是重发消息时,应该检验消息体内的业务序列号,确定是否已经处理过。
消息体
消息头后面是消息体,是json的对象格式
比如
{"device-sn":"aaaa0002","humidity":51.85,"temperature":25.56}
这是气温气压计的数据上报消息 的 消息体 内容。
每个字段的含义如下
device-sn : 设备编号
humidity : 空气湿度值
temperature : 空气摄氏温度值
系统数据
目前系统中 模拟接入了如下设备
设备类型: 毒气监测仪
设备编号: aaaa0001
设备类型: 温度湿度计
设备编号: aaaa0002
设备类型: 空气流量仪
设备编号: aaaa0003
设备类型: 水流量表
设备编号: aaaa0004
设备类型: 饮用水箱
设备编号: aaaa0005
设备类型: 摄像头
设备编号: aaaa0006
设备类型: 毒气监测仪
设备编号: aaaa0021
设备类型: 温度湿度计
设备编号: aaaa0022
设备类型: 空气流量仪
设备编号: aaaa0023
设备类型: 水流量表
设备编号: aaaa0024
设备类型: 饮用水箱
设备编号: aaaa0025
设备类型: 摄像头
设备编号: aaaa0026