跳转至

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