From 2da8a40ac201b1d28bed5eda8d080d414537bf67 Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 22 Dec 2023 15:09:41 +0800 Subject: [PATCH] fix --- apps/iot/include/iot.hrl | 5 ++++ docs/websocket.md | 51 +++++++++++++++++++++++++++++++--------- 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/apps/iot/include/iot.hrl b/apps/iot/include/iot.hrl index d5ae976..f1dc1b7 100644 --- a/apps/iot/include/iot.hrl +++ b/apps/iot/include/iot.hrl @@ -40,9 +40,14 @@ %% 消息体类型 -define(PACKET_REQUEST, 16#01). -define(PACKET_RESPONSE, 16#02). +%% 服务器端推送消息 -define(PACKET_PUBLISH, 16#03). -define(PACKET_PUBLISH_RESPONSE, 16#04). +%% 服务端指令 +-define(PACKET_COMMAND, 16#05). +-define(PACKET_COMMAND_RESPONSE, 16#06). + %% 事件类型 -define(EVENT_DEVICE, 16#01). %% 主机的相关事件 diff --git a/docs/websocket.md b/docs/websocket.md index 80cbc55..5ae07ef 100644 --- a/docs/websocket.md +++ b/docs/websocket.md @@ -1,11 +1,15 @@ # websocket通讯格式逻辑说明 -## 消息体有四种格式 +## 消息体以下格式 1. 主机发送的请求 (0x01) 2. 服务端对主机请求的响应 (0x02) + 3. 服务端对主机的消息推送 (0x03) 4. 主机对服务器推送消息的响应 (0x04) + 5. 服务器端对主机推送的指令 (0x05) + 5. 主机对服务器推送的指令的响应 (0x06) + ## 消息体的格式说明 <<消息体类型/1byte, PacketId/4byte, Packet/任意长度>> @@ -43,7 +47,7 @@ Reply: {a: bool, aes: "服务器生成的aes的值"} PacketId: 4字节整数, 值为0; Body: - ```json: +```text { "service_name": "从该设备端的哪个服务采集的数据", // 如果为空,就表明是微服务产生的数据,如果有值,表示是设备产生的数据 @@ -69,14 +73,14 @@ Body: // todo 在insert数据到influxdb的时候需要增加service_name + host_uuid } - ``` +``` ### ping数据上传(无响应) <<0x01, PacketId:4, 0x03, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: - ```json +```text { // 硬件信息,目前有剩余内存,剩余磁盘和cpu负载 // 剩余内存,单位为mb @@ -113,14 +117,14 @@ Body: } ] } - ``` +``` ### inform数据上传(无响应) <<0x01, PacketId:4, 0x04, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: - ```json +```text { "at": $int64, // 微服务信息 @@ -133,14 +137,14 @@ Body: "status": 0|1 }] } - ``` +``` ### feedback_step数据上传(无响应) <<0x01, PacketId:4, 0x05, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: - ```json +```text { "task_id": "任务的task id", // sc为step code,具体地: @@ -152,14 +156,15 @@ Body: // 5代表任务已经完成,微服务已经处理完成。 "code": $int } - ``` +``` ### feedback_result数据上传(无响应) <<0x01, PacketId:4, 0x06, Body:任意长度>> PacketId: 4字节整数, 值为0; Body: - ```json + +```text { "task_id": "任务id", // unix nano类型 @@ -171,7 +176,7 @@ Body: // 返回任务类型,1表示任务是微服务下发,0代表是命令下发 "type": 0 | 1, } - ``` +``` ### 主机上传终端设备的相关事件 <<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 // 发命令时间 + } +} \ No newline at end of file