89 lines
3.1 KiB
Markdown
89 lines
3.1 KiB
Markdown
## 头信息
|
|
|
|
| 字节序 | 类型 | 字段 |
|
|
|:----:|---------|:-----------:|
|
|
| 0 | INT8 | 消息类型 |
|
|
| 1-8 | INT64 | UTC时间戳 |
|
|
| 9-11 | INT16 | 消息序号 |
|
|
| 12-n | STRING | 设备ID |
|
|
| ... | MESSAGE | 消息类型对应的编码规则 |
|
|
|
|
## 数据类型
|
|
|
|
所有数据类型均采用`大端`编码
|
|
|
|
| Byte | Type | 编码规则 |
|
|
|:----:|:-------:|---------------------------------------------|
|
|
| 0x00 | NULL | 0x01 |
|
|
| 0x01 | BOOLEAN | 1字节 0x00为false 其他为true |
|
|
| 0x02 | INT8 | 1字节 (byte) |
|
|
| 0x03 | INT16 | 2字节整型 (short) |
|
|
| 0x04 | INT32 | 4字节整型 (int) |
|
|
| 0x05 | INT64 | 8字节整型 (long) |
|
|
| 0x06 | UINT8 | 1字节无符号整型 |
|
|
| 0x07 | UINT16 | 2字节无符号整型 |
|
|
| 0x08 | UINT32 | 4字节无符号整型 |
|
|
| 0x09 | FLOAT | 4字节 IEEE 754浮点数 |
|
|
| 0x0a | DOUBLE | 8字节 IEEE 754浮点数 |
|
|
| 0x0b | STRING | 前`2字节无符号整型`表示字符串长度,接下来长度的字节为字符串内容,UTF8编码 |
|
|
| 0x0c | BINARY | 前`2字节无符号整型`表示数据长度,接下来长度的字节为数据内容 |
|
|
| 0x0d | ARRAY | 前`2字节无符号整型`表述数组长度,接下来根据后续报文类型来解析元素 |
|
|
| 0x0e | OBJECT | 前`2字节无符号整型`表述对象字段长度,接下来根据后续报文类型来解析key value |
|
|
|
|
## 消息类型定义
|
|
|
|
| Byte | Type | 说明 |
|
|
|:----:|:-------------------|--------|
|
|
| 0x00 | keepalive | 心跳 |
|
|
| 0x01 | online | 首次连接 |
|
|
| 0x02 | ack | 应答 |
|
|
| 0x03 | reportProperty | 上报属性 |
|
|
| 0x04 | readProperty | 读取属性 |
|
|
| 0x05 | readPropertyReply | 读取属性回复 |
|
|
| 0x06 | writeProperty | 修改属性 |
|
|
| 0x07 | writePropertyReply | 修改属性回复 |
|
|
| 0x08 | function | 功能调用 |
|
|
| 0x09 | functionReply | 功能调用回复 |
|
|
|
|
### 0x00 keepalive 心跳
|
|
|
|
[ 0x00 ]
|
|
|
|
### 0x01 online 首次连接
|
|
|
|
[ 0x01,STRING:密钥信息 ]
|
|
|
|
### 0x02 ack 应答
|
|
|
|
[ 0x02,应答码 ]
|
|
|
|
应答码: 0x00:ok , 0x01: 未认证, 0x02: 不支持.
|
|
|
|
### 0x03 reportProperty 上报属性
|
|
|
|
[ 0x03,属性数据:OBJECT类型 ]
|
|
|
|
### 0x04 readProperty 读取属性
|
|
|
|
[ 0x04,属性列表:ARRAY类型 ]
|
|
|
|
### 0x05 readPropertyReply 读取属性回复
|
|
|
|
读取成功:
|
|
|
|
[ 0x05,`0x01`,属性数据:OBJECT类型 ]
|
|
|
|
读取失败:
|
|
[ 0x05,`0x00`,错误码:动态类型,错误消息:动态类型 ]
|
|
|
|
`动态读取`表示类型不确定,根据对应的`数据类型`来定义类型.
|
|
|
|
如: 无错误信息
|
|
|
|
[ 0x05,0x00,`0x00`,`0x00` ]
|
|
|
|
`INT8(0x02)`类型错误码:`0x04`
|
|
|
|
[ 0x05,0x00,`0x02,0x04`,0x00 ]
|
|
|
|
TODO 更多消息类型 |