This commit is contained in:
anlicheng 2023-12-22 15:09:41 +08:00
parent af83193e36
commit 2da8a40ac2
2 changed files with 45 additions and 11 deletions

View File

@ -40,9 +40,14 @@
%% %%
-define(PACKET_REQUEST, 16#01). -define(PACKET_REQUEST, 16#01).
-define(PACKET_RESPONSE, 16#02). -define(PACKET_RESPONSE, 16#02).
%%
-define(PACKET_PUBLISH, 16#03). -define(PACKET_PUBLISH, 16#03).
-define(PACKET_PUBLISH_RESPONSE, 16#04). -define(PACKET_PUBLISH_RESPONSE, 16#04).
%%
-define(PACKET_COMMAND, 16#05).
-define(PACKET_COMMAND_RESPONSE, 16#06).
%% %%
-define(EVENT_DEVICE, 16#01). -define(EVENT_DEVICE, 16#01).
%% %%

View File

@ -1,11 +1,15 @@
# websocket通讯格式逻辑说明 # websocket通讯格式逻辑说明
## 消息体有四种格式 ## 消息体以下格式
1. 主机发送的请求 (0x01) 1. 主机发送的请求 (0x01)
2. 服务端对主机请求的响应 (0x02) 2. 服务端对主机请求的响应 (0x02)
3. 服务端对主机的消息推送 (0x03) 3. 服务端对主机的消息推送 (0x03)
4. 主机对服务器推送消息的响应 (0x04) 4. 主机对服务器推送消息的响应 (0x04)
5. 服务器端对主机推送的指令 (0x05)
5. 主机对服务器推送的指令的响应 (0x06)
## 消息体的格式说明 ## 消息体的格式说明
<<消息体类型/1byte, PacketId/4byte, Packet/任意长度>> <<消息体类型/1byte, PacketId/4byte, Packet/任意长度>>
@ -43,7 +47,7 @@ Reply: {a: bool, aes: "服务器生成的aes的值"}
PacketId: 4字节整数, 值为0; PacketId: 4字节整数, 值为0;
Body: Body:
```json: ```text
{ {
"service_name": "从该设备端的哪个服务采集的数据", "service_name": "从该设备端的哪个服务采集的数据",
// 如果为空,就表明是微服务产生的数据,如果有值,表示是设备产生的数据 // 如果为空,就表明是微服务产生的数据,如果有值,表示是设备产生的数据
@ -69,14 +73,14 @@ Body:
// todo 在insert数据到influxdb的时候需要增加service_name + host_uuid // todo 在insert数据到influxdb的时候需要增加service_name + host_uuid
} }
``` ```
### ping数据上传(无响应) ### ping数据上传(无响应)
<<0x01, PacketId:4, 0x03, Body:任意长度>> <<0x01, PacketId:4, 0x03, Body:任意长度>>
PacketId: 4字节整数, 值为0; PacketId: 4字节整数, 值为0;
Body: Body:
```json ```text
{ {
// 硬件信息目前有剩余内存剩余磁盘和cpu负载 // 硬件信息目前有剩余内存剩余磁盘和cpu负载
// 剩余内存单位为mb // 剩余内存单位为mb
@ -113,14 +117,14 @@ Body:
} }
] ]
} }
``` ```
### inform数据上传(无响应) ### inform数据上传(无响应)
<<0x01, PacketId:4, 0x04, Body:任意长度>> <<0x01, PacketId:4, 0x04, Body:任意长度>>
PacketId: 4字节整数, 值为0; PacketId: 4字节整数, 值为0;
Body: Body:
```json ```text
{ {
"at": $int64, "at": $int64,
// 微服务信息 // 微服务信息
@ -133,14 +137,14 @@ Body:
"status": 0|1 "status": 0|1
}] }]
} }
``` ```
### feedback_step数据上传(无响应) ### feedback_step数据上传(无响应)
<<0x01, PacketId:4, 0x05, Body:任意长度>> <<0x01, PacketId:4, 0x05, Body:任意长度>>
PacketId: 4字节整数, 值为0; PacketId: 4字节整数, 值为0;
Body: Body:
```json ```text
{ {
"task_id": "任务的task id", "task_id": "任务的task id",
// sc为step code具体地 // sc为step code具体地
@ -152,14 +156,15 @@ Body:
// 5代表任务已经完成微服务已经处理完成。 // 5代表任务已经完成微服务已经处理完成。
"code": $int "code": $int
} }
``` ```
### feedback_result数据上传(无响应) ### feedback_result数据上传(无响应)
<<0x01, PacketId:4, 0x06, Body:任意长度>> <<0x01, PacketId:4, 0x06, Body:任意长度>>
PacketId: 4字节整数, 值为0; PacketId: 4字节整数, 值为0;
Body: Body:
```json
```text
{ {
"task_id": "任务id", "task_id": "任务id",
// unix nano类型 // unix nano类型
@ -171,7 +176,7 @@ Body:
// 返回任务类型1表示任务是微服务下发0代表是命令下发 // 返回任务类型1表示任务是微服务下发0代表是命令下发
"type": 0 | 1, "type": 0 | 1,
} }
``` ```
### 主机上传终端设备的相关事件 ### 主机上传终端设备的相关事件
<<0x01, PacketId:4, 0x07, Body:任意长度>> <<0x01, PacketId:4, 0x07, Body:任意长度>>
@ -226,3 +231,27 @@ Body: 事件内容AES加密
``` ```
## 指令说明
### 服务器对主机推送的指令格式
<<0x05, PacketId:4, Body:任意长度>>
PacketId: 4字节整数; 如果值为0则不需要返回指令执行结果
Body: 事件内容AES加密
#### 计费电表, 下发指令
```text
{
"device_uuid": "xxxxxx", // 设备的device_uuid, 数组格式
"version": "1.0",
"command_type": 0x01, // 中电计费电表控制
"command": {
"type": "ctrl", // 遥控
"stype": int, // 遥控类型0: 遥控, 1: 遥调, 2: 置数
"ctype": int, // 遥控动作, 0: 打开1: 闭合
"value": double, // 控制参数
"timestamp": 17031000000 // 发命令时间
}
}