# **智控通信协议**
新云慧联科技有限公司
编写:孙成
2020/11/11 ## 更新历史 | 版本号 | 修改说明 | 修改日期 | 修改人 | | :---: | :---: | :---: | :---: | | 01 | 首次修改适配mqtt 协议 | 2020/11.11 | 孙成 | | 02 | 修改协议,增加设备端发往服务器端数据的格式,数据长度 | 2020/12.11 | 孙成 | | 03 | 修改开关时间下发指令为多时间段组合 | 2020/12.28 | 孙成 | | 04 | 修改终端设备订阅topic 在之前的前加上PP/ | 2020/12.29 | 孙成 | | 05 | 增加继电器开关编组控制指令 | 2020/12.30 | 孙成 | ## 1\. 概述 ### 1.1背景 为了满足物联网智控设备和互联网服务器的数据交换,需要设计一套安全、灵活、易用、易扩展的通信协议,为此我们在TCP/IP 通信协议的基础上,将原来的自定义协议适配mqtt协议,负责设备通过互联网进行数据交换和通信,能够支持rj45,gprs、nb-iot、lte 、wifi网络下的数据通信。 ### 1.2适用范围 本协议规定了智控系统中控制器网关设备和后台服务程序的接口和数据通信协议,适用于遵守本协议通信的本公司所有智控网关设备。 ## 2\. 指令描述 ### 2.1 设备发往服务器的指令: 从设备端发往服务器端的一对一指令。不需要等待返回的应答。 设备端的mqtt clientID 定义为设备的mac。**publish**的topic 定义为两级: 一级topic/二级topic, 例如:CN/FTC。 服务器端**subscribe** topic也定义为定义为两级 :一级topic/二级topic,服务器端根据payload 的最前面的12个字节的设备网关的mac 来判断是哪个终端设备的数据,并做相应处理。具体如下。 #### 2.1.1 连接指令 终端设备连接上服务器时发给服务器的连接指令。终端的 publish topic 为CN/FTC,CN/RCN。服务器端收到连接指令后根据payload 的最前面的12个字节的设备网关的mac给该终端网关设备发送一个网关PP/mac/CFG/NTP 的点对点的时间同步指令。 topic 名缩写表见文后附录。 | 指令类型 | 一级topic | 二级topic | 功能描述 | 备注 | | ---- | ------- | ------- | ---- | --- | | 连接 | CN | FTC | 设备上电启动后首次连接到服务器的握手指令 | | | 连接 | CN | RCN | 设备掉线后重新连服务器成功发送该指令 | | ##### 2.1.1.1 Payload 数据格式说明 payload 为设备网关mac+网关版本号。共19Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | | | | | byte13-19 | 设备网关软件版本号 | 5-7 | | | 有些是5个字节的,有的是7个字节的 | - - - #### 2.1.2 设备数据上传指令: 终端设备将采集到的相关数据上报给服务器端。topic 名缩写表见文后附录。 | 指令类型 | 一级topic | 二级topic | 功能描述 | 备注 | | ---- | ------- | ------- | ---- | --- | | 设备数据上传 | DT | SDT | 传感器数据上传到服务器 | 包含多个不同的传感器 | | 设备数据上传 | DT | EPD | 电气数据上传到服务器 | 包含电力计,电表,调光节点数据 | | 设备数据上传 | DT | SIM | 上传SIM卡ICCID号到服务器 | 设备上电连接到服务器后就将iccid号上传到服务器,没有卡的设备不上传 | ##### 2.1.2.1 传感器数据上传到服务器指令: 设备向服务器上报设备传感器运行状态数据的指令。服务器订阅topic name为**DT/SDT**,终端设备发布topic name为**DT/SDT**。 **Payload 数据格式** | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 传感器数量 | 1 | | | | | byte14...M | 第一个传感器数据包 | X | | | | | ...... | ...... | | | | | | byteM...N | 第N个传感器数据包 | X | | | | **传感器数据包格式:** 根据不同的传感器类型数据格式不一样。 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | Byte1 | 类型 | 1 | Hex | | | | Byte2...N | 数据 | 数据格式不一样 | Hex | | | **类型:** | 名称 | 编号 | 备注 | | --- | --- | --- | | 温湿度传感器 | 01 | 数量唯一 | | 陀螺仪传感器 | 02 | 数量唯一 | | 环境亮度传感器 | 03 | 数量唯一 | | 线温传感器 | 04 | 可以有多个 | **数据:** * 1.温湿度传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 温度 | 1 | Hex | | | | byte2 | 湿度 | 1 | Hex | | | * 2.陀螺仪传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1-2 | roll | 2 | Hex | | 翻滚角度 | | byte3-4 | pitch | 2 | Hex | | 俯仰角度 | | byte5-6 | yaw | 2 | Hex | | 偏航角度 | * 3.环境亮度传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 亮度值高8位 | 1 | Hex | | | | byte2 | 亮度值低8位 | 1 | Hex | | | * 4.线温传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 线温 | 1 | Hex | | | ##### 2.1.2.2 电器数据上传到服务器: 将包含电力计,电表,调光节点的电器数据上报给服务器。服务器订阅topic name为**DT/EPD**,终端设备发布topic name为**DT/EPD**。 **Payload 数据格式说明**: 设备网关mac+节点数量(1Byte)+节点1数据 +.........节点N数据 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 节点数量 | 1 | | | | | byte14--20 | 第一个节点数据包 | 7 | | | | | ..... | ..... | | | | | | byteN... | 第N个节点数据包 | X | | | | **节点数据格式**: 根据不同的节点类型数据格式不一样。 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | Byte1-6 | 节点MAC地址 | 6 | Hex | | | | Byte7 | 节点类型 | 1 | Hex | | | | Byte8.. | 节点数据 | 节点类型数据格式不一样 | Hex | | 单位 0.01w,除100转为W | 节点类型: | 名称 | 编号 | 备注 | | --- | --- | --- | | 电表节点 | 01 | 总表,支取电能 | | 智能空开节点 | 02 | 网关自带电力计是特殊型,mac为 0F0000000001 | | 调光节点 | 03 | | | 烟感节点 | 04 | | 节点数据格式: * 1 电表节点: 4个字节的电能数据,单位0.1KWH,除10转为KWH。(要确认大小端) | Byte1 | Byte2 | Byte3 | Byte4 | | ----- | ----- | ----- | ----- | | energy[0] | energy[1] | energy[2] | energy[3] | * 2 智能空开节点数据: 18 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | Byte1-4 | 电压 | 4 | Hex | | 单位:10mV 除100转为V | | Byte5-8 | 电流 | 4 | Hex | | 单位:0.1mA 除10000转为A | | Byte9-12 | 功率 | 4 | Hex | | 单位 0.01w,除100转为W | | Byte13-16 | 电能 | 4 | Hex | | 单位0.1KWH,除10转为KWH | | Byte17-20 | 继电器状态 | 4 | Hex | | | 继电器状态:2 byte |00 00 00 01|00 00 00 02|00 00 00 04|00 00 00 08|00 00 00 10|00 00 00 20|00 00 00 40|00 00 00 80|00 00 01 00|00 00 02 00|00 00 04 00 |00 01 00 00|00 08 00 00|00 10 00 00|00 20 00 00| | :---: | :---: | :---: | :---: | :---: | :---: | ----- | :---: | :---: | :---: |:---: | :---: | :---: | :---: |:---: | | 过压拉闸 | 欠压拉闸 | 过载拉闸 | 用电超额拉闸 | 定时拉闸 | 远程拉闸 | 超自动合闸次数拉闸 | 快速电流拉闸 | 手动合闸 | 手动拉闸 |远程合闸|定时合闸|过压恢复合闸|欠压恢复合闸|上电合闸| * 3 调光节点数据: | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1-6 | 节点MAC地址 | 6 | Hex | | 1-64 有效组号65未分组 | | byte7 | 节点所属组号 | 1 | Hex | 2 | | | byte8 | 节点当前亮度 | 1 | Hex | 68 | | | byte9 | 调光模式 | 1 | Hex | 1 | 默认:0 自动,1:手动 2:环境亮度调光 | | byte10 | 调光类型 | 1 | Hex | 1 | 默认值0:突变 1:渐变 | | byte11 | 节点电压 | 1 | Hex | | 单位:0.1V ,除10转为V 保留一位小数 | | byte12-13 | 节点电流 | 2 | Hex | | | * 4 烟感节点数据: | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 报警状态 | 1 | Hex | | 1:报警 0:正常 | ##### 2.1.2.3 上传SIM卡ICCID号到服务器: 对于有装有sim卡的设备,设备上电启动后将自身的sim 卡的 iccid 号上传给服务器。 服务器订阅topic name为**DT/SIM**,终端设备发布topic name为**DT/SIM**。 **Payload 数据格式**:,共32Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-32 | iccid号 | 20 | string | 89860446101981740827 | | - - - #### 2.1.3 设备请求服务器配置指令: 设备上电启动后,先读取本地的相关配置,如果本地配置没有,就主动向服务器请求相关配置,服务器收到请求后,下发相关的配置指令。 | 指令类型 | 一级topic | 二级topic | 功能描述 | 备注 | | ---- | ------- | ------- | ---- | --- | | 请求配置 | SCR | BKS | 请求备份服务器配置 | | | 请求配置 | SCR | NAT | 节点信息表 | | | 请求配置 | SCR | STS | 请求开关时间段配置 | | | 请求配置 | SCR | SRV | 请求额定电压配置 | | | 请求配置 | SCR | SRC | 请求额定电流配置 | | | 请求配置 | SCR | SAT | 请求传感器阀值配置 | | ##### 2.1.3.1 请求备份服务器配置指令: 设备上电如果没有读取本地备份服务器配置,就会主动向服务器发送请求备份服务器配置指令。 服务器订阅topic name为**SCR/BKS**,终端设备发布topic name为**SCR/BKS**。 **Payload 数据格式** :设备网关的mac(12byte)。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | ##### 2.1.3.2 请求节点信息表: 设备上电如果没有读取本地子节点表配置,则设备向服务器主动请求下发子节点表配置指令。 服务器订阅topic name为**SCR/NAT**,终端设备发布topic name为**SCR/NAT**。 **Payload 数据格式** :设备网关的mac(12byte)。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | ##### 2.1.3.3 请求额定电压配置指令: 设备上电如果没有读取本地电表节点的额定电压配置,则设备向服务器主动请求下发节点额定电压配置指令。 服务器订阅topic name为**SCR/SRV**,终端设备发布topic name为**SCR/SRV**。 **Payload 数据格式** :设备网关的mac(12byte)+子节点mac(6byte),共18Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | | | | | byte13-18 | 子节点mac | 6 | hex | | | ##### 2.1.3.4 请求额定电流配置指令: 设备上电如果没有读取本地电表节点的额定电流配置,则设备向服务器主动请求下发节点额定电流配置指令。 服务器订阅topic name为**SCR/SRC**,终端设备发布topic name为**SCR/SRC**。 **Payload 数据格式** :设备网关的mac(12byte)+子节点mac(6byte),共18Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | | | | | byte13-18 | 子节点mac | 6 | hex | | | ##### 2.1.3.5 请求开关时间段配置指令: 设备上电如果没有读取本地的开关时间段配置,则设备向服务器主动请求下发开关时间段配置指令。 服务器订阅topic name为**SCR/STS**,终端设备发布topic name为**SCR/STS**。 **Payload 数据格式** :设备网关的mac(12byte)+子节点mac(6byte),共18Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | hex | | | ##### 2.1.3.6 请求传感器阀值配置指令: 设备上电如果没有读取本地的传感器配置,则设备向服务器主动请求下发传感器阀值配置指令。 服务器订阅topic name为**SCR/SAT**,终端设备发布topic name为**SCR/SAT**。 **Payload 数据格式** :设备网关的mac(12byte) | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | | | | - - - ### 2.2 服务器发往设备的指令: 服务器(包含web 后台模块和设备管理后台模块)下发给终端设备网关的配置,控制指令。用来对终端设备进行参数配置,行为控制。 服务器端mqtt 的publish\*\*的topic 定义为四级:PP/设备mac/三级topic/四级topic。时间同步指令除外。 终端设备mqtt 的subscribe的topic 定义为:PP/设备mac/三级topic/#,通过topic name 判断具体是哪个指令,再进行处理 (时间同步指令除外)。 #### 2.2.1 时间同步指令: 服务器每隔1小时向所有的设备下发时间同步指令,同步所有设备的实时时间。不需要回复。所有设备终端都订阅 topic为 **NTP**,服务器端发布 topic 为**NTP** 。 | 指令类型 | 一级topic | 功能描述 | 备注 | | | | ---- | ------- | ---- | --- | --- | --- | | 时间同步 | NTP | 时间同步 | 24小时制 | | | **Payload 数据格式** 6个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 年 | 1 | Hex | 11 | 2017年 | | byte2 | 月 | 1 | Hex | 0A | 10月 | | byte3 | 日 | 1 | Hex | 08 | 8日 | | byte4 | 时 | 1 | Hex | 17 | 23时 | | byte5 | 分 | 1 | Hex | 32 | 50分 | | byte6 | 秒 | 1 | Hex | 01 | 01秒 | **回复数据格式**:无 - - - #### 2.2.2 配置指令: 服务器端下发给终端设备网关的配置指令。对于需要回复的指令,终端设备收到设备管理后台下发的该指令后,需要立刻回复服务器一个ack 信息,将设置的原始数据返回给设备管理后台模块,设备管理后台模块收到后将数据更新到数据库。 终端设备回复publish topic为:ACK/二级topic/三级topic 数据为接收到的原始数据。 设备管理后台模块 subscribe topic 为:ACK/#, 设备管理后台模块接收到数据后根据clientID和topic name 来区分是那台设备的什么指令数据。topic 名缩写表见文后附录。 | 指令类型 | 一级topic | 二级topic | 三级topic | 四级topic | 功能描述 | 备注 | | ---- | ------- | ------- | ------- | ------- | ---- | --- | | 配置参数 | PP | 设备mac | CFG | NTP | 连接时间指令 | 不需要回复 | | 配置参数 | PP | 设备mac | CFG | BKS | 备份服务器配置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | ULI | 设备数据上传间隔配置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | STS | 开关时间段设置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | SRV | 额定电压设置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | SRC | 额定电流设置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | NAT | 下发节点信息表配置 | | | 配置参数 | PP | 设备mac | CFG | GNV | 获取子节点版本号 | | | 配置参数 | PP | 设备mac | CFG | SCM | 开关控制模式(拉合闸)设置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | DGS | 调光节点分组设置 | | | 配置参数 | PP | 设备mac | CFG | DGM | 调光节点分组数据修改 | | | 配置参数 | PP | 设备mac | CFG | MGM | 电表节点分组设置 | 需要回复 | | 配置参数 | PP | 设备mac | CFG | SAT | 传感器报警阀值设置 | 需要回复 | ##### 2.2.2.1 连接时间指令: 服务器收到连接指令后下发的时间同步指令,格式跟NTP 指令一样。 ##### 2.2.2.2 备份服务器配置指令: 这个指令给终端设备配置备份服务器的连接IP地址,端口的,当服务器接收到终端设备的备份服务器配置请求指令或者web端,移动端更改了备份服务器设置时,服务器给设备端下发备份服务器配置指令。如果设备不在线,等设备上线后再下发。该指令需要回复。 服务器发布topic name为PP/终端设备mac\*\*/CFG/BKS\*\*,终端设备订阅topic name为PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式** 6个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-4 | IP | 4 | string | | | | byte5-6 | PORT | 2 | Hex | | | **回复数据格式**: 终端设备回复publish topic为:**ACK/CFG/BKS** 数据为设备网关的mac+接收到的原始数据。共18Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-16 | IP | 4 | string | | | | byte17-18 | PORT | 2 | Hex | | | ##### 2.2.2.3 设备数据上传间隔配置指令: 该指令用来配置终端设备向服务器上报相关数据的间隔时间的。当web端,移动端更改了设备数据上传频率设置时,服务器给设备端下发设备数据上传频率配置指令。如果设备不在线,等设备上线后再下发。 默认为50s。 服务器发布topic name为PP/终端设备mac\*\*/CFG/ULI\*\*,终端设备订阅topic name为PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式** 2个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 单位 | 1 | Hex | | 1:秒 2:分钟 3:小时 4:天 | | byte2 | 上传数值 | 1 | Hex | | | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/ULI 数据为设备网关mac+接收到的原始数据。共14Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 单位 | 1 | Hex | | 1:秒 2:分钟 3:小时 4:天 | | byte14 | 上传数值 | 1 | Hex | | | ##### 2.2.2.4 开关时间段设置指令: 该指令用来配置设备(包含网关继电器和智能空开节点继电器)的定时自动控制的时间段配置。如果设备不在线,等设备上线后再下发。默认为 08:00 开 23:59 关。 服务器发布topic name为PP/终端设备mac\*\*/CFG/STS\*\*,终端设备订阅topic name为PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 子节点mac(6byte)+子节点类型(1byte)+时间点个数(1byte)+时间点个数\*3(时,分,开关状态)个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte7 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte8 | 时间点个数 | 1 | Hex | | | | byte9-10 | 时间1 | 2 | Hex | | 时,分 | | byte11 | 时间1开关状态 | 1 | Hex | | 0:OFF,1:ON | | ... | ... | ... | ... | | ... | | byte(8+(n-1)\*3+1)-byte(8+(n-1)\*3+2) | 时间2 | 2 | Hex | | 时,分 | | byte(8+n\*3) | 时间n开关状态 | 1 | Hex | | 0:OFF,1:ON | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/STS 数据为设备网关mac+接收到的原始数据。共23Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte19 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte20 | 时间点个数 | 1 | Hex | | | | byte21-22 | 时间1 | 2 | Hex | | 时,分 | | byte23 | 时间1开关状态 | 1 | Hex | | 0:OFF,1:ON | | ... | ... | ... | ... | | ... | | byte(20+(n-1)\*3+1)-byte(20+(n-1)\*3+2) | 时间2 | 2 | Hex | | 时,分 | | byte(20+n\*3) | 时间n开关状态 | 1 | Hex | | 0:OFF,1:ON | ##### 2.2.2.5 额定电压设置指令: 这个指令用来给终端设备配置智能空开型节点设置额定电压阀值,当服务器接收到终端设备的额定电压设置请求指令或者web端,移动端更改了额定电压值设置时,服务器就给设备端下发额定电压设置指令。如果设备不在线,等设备上线后再下发。 服务器发布topic name为PP/终端设备mac\*\*/CFG/SRV\*\*,终端设备订阅topic name为PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 9个字节。服务器下发的格式为大端格式,高位在前,低位在后。设备端要颠倒。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte7 | 节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte8-9 | 额定电压阀值 | 2 | Hex | 0A5A | 单位:0.1V 265V | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/SRV 数据为设备网关的mac+接收到的原始数据。共21Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte19 | 节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte20-21 | 额定电压阀值 | 2 | Hex | 0A5A | 单位:0.1V 265V | ##### 2.2.2.6 额定电流设置指令: 这个指令用来给终端设备配置智能空开型节点设置额定电流阀值,当服务器接收到终端设备的额定电流设置请求指令或者web端,移动端更改了额定电流值设置时,服务器就给设备端下发额定电流设置指令。如果设备不在线,等设备上线后再下发。 服务器发布topic name为PP/终端设备mac\*\*/CFG/SRC\*\*,终端设备订阅topic name为PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 11个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte7 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte8-11 | 额定电流阀值 | 4 | Hex | | | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/SRC 数据为设备网关mac+接收到的原始数据。共23Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte19 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte20-23 | 额定电流阀值 | 4 | Hex | | | ##### 2.2.2.7 节点信息表配置指令: 终端设备上电后,如果没有读到本地节点信息表,则终端设备会请求服务器下发节点信息表配置指令。如果终端设备跳转到另外一台服务器,终端设备也会请求服务器下发节点信息表配置指令。服务器端如果修改了节点表信息,则服务器端要主动下更新后的发节点信息表配置给终端设备。 服务器发布topic name:PP/终端设备mac\*\*/CFG/NAT\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 节点数量(1byte) + 第一个节点信息数据 + ..............+ 第N个节点信息数据。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 节点数量 | 1 | | | | | byte2--8 | 第一个节点数据包 | 7 | | | | | ..... | | | | | | | byte 7N-5--7N+1 | 第N个节点数据包 | 7 | | | | **节点信息数据格式:** | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | Byte1-6 | 节点MAC地址 | 6 | Hex | | | | Byte7 | 节点类型 | 1 | Hex | | | **回复数据格式**:无。 ##### 2.2.2.8 获取子节点版本号指令: 服务器端可通过这个指令来获取指定节点的软件版本号。 服务器发布topic name:PP/终端设备mac\*\*/CFG/GNV\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 6个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 节点MAC | 6 | string | 201908200029 | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/GNV 。共23Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 网关MAC | 12 | hex | | | | byte13-18 | 节点MAC | 6 | hex | 201908200029 | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte19-23 | 节点软件版本号 | 5 | string | 1.1.0 | | ##### 2.2.2.9 开关控制模式(拉合闸)设置指令: 这个指令用来给终端设备配置开关的控制模式,分为 手动和自动(自动时间段)方式。 服务器发布topic name:PP/终端设备mac\*\*/CFG/SCM\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 8个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 节点MAC | 6 | string | 201908200029 | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte7 | 设备类型 | 1 | string | 03 | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte8 | 控制模式(拉合闸) | 1 | Hex | | 默认:0:自动 1:手动 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/SCM 数据为设备网关mac+接收到的原始数据。共20Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 节点MAC | 6 | string | 201908200029 | 网关自带电力计是特殊型,智能空开节点,mac为 0F0000000001 | | byte19 | 设备类型 | 1 | string | 03 | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte20 | 控制模式(拉合闸) | 1 | Hex | | 默认:0:自动 1:手动 | ##### 2.2.2.10 调光节点分组设置指令: 服务器向网关设备发送调光子节点分组设置指令,对调光节点进行分组。调光节点默认组号为65,表示未分组,节点亮度为0。 服务器发布topic name:PP/终端设备mac\*\*/CFG/DGS\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 22个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点MAC | 6 | Hex | | | | byte7 | 设备类型 | 1 | string | 03 | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte8 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte9-10 | 时间1 | 2 | Hex | | 时,分 | | byte11 | 亮度1 | 1 | Hex | | 0--100 | | byte12-13 | 时间2 | 2 | Hex | | 时,分 | | byte14 | 亮度2 | 1 | Hex | | 0--100 | | byte15-16 | 时间3 | 2 | Hex | | 时,分 | | byte17 | 亮度3 | 1 | Hex | | 0--100 | | byte18-19 | 时间4 | 2 | Hex | | 时,分 | | byte20 | 亮度4 | 1 | Hex | | 0--100 | | byte21 | 调光模式 | 1 | Hex | | 默认:0 自动,1:手动 2:环境亮度调光 | | byte22 | 调光类型 | 1 | Hex | | 默认值0:突变 1:渐变 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/DGS 数据为设备网关mac+接收到的原始数据。共34Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 节点MAC | 6 | string | 201908200029 | 网关自带电力计是特殊型,智能 | | byte19 | 设备类型 | 1 | string | 03 | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | | byte20 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte21-22 | 时间1 | 2 | Hex | | 时,分 | | byte23 | 亮度1 | 1 | Hex | | 0--100 | | byte24-25 | 时间2 | 2 | Hex | | 时,分 | | byte26 | 亮度2 | 1 | Hex | | 0--100 | | byte27-28 | 时间3 | 2 | Hex | | 时,分 | | byte29 | 亮度3 | 1 | Hex | | 0--100 | | byte30-31 | 时间4 | 2 | Hex | | 时,分 | | byte32 | 亮度4 | 1 | Hex | | 0--100 | | byte33 | 调光模式 | 1 | Hex | | 默认:0 自动,1:手动 2:环境亮度调光 | | byte34 | 调光类型 | 1 | Hex | | 默认值0:突变 1:渐变 | ##### 2.2.2.11 调光节点分组数据修改指令: 这个指令用来修改已分组的调光组的时间,亮度,调光模式,类型参数。 服务器发布topic name:PP/终端设备mac\*\*/CFG/DGM\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 15个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte2-3 | 时间1 | 2 | Hex | | 时,分 | | byte4 | 亮度1 | 1 | Hex | | 0--100 | | byte5-6 | 时间2 | 2 | Hex | | 时,分 | | byte7 | 亮度2 | 1 | Hex | | 0--100 | | byte8-9 | 时间3 | 2 | Hex | | 时,分 | | byte10 | 亮度3 | 1 | Hex | | 0--100 | | byte11-12 | 时间4 | 2 | Hex | | 时,分 | | byte13 | 亮度4 | 1 | Hex | | 0--100 | | byte14 | 调光模式 | 1 | Hex | | 默认:0 自动,1:手动 2:环境亮度调光 | | byte15 | 调光类型 | 1 | Hex | | 默认:0突变 1:渐变 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/DGM 数据为设备网关mac+接收到的原始数据。共27Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte14-15 | 时间1 | 2 | Hex | | 时,分 | | byte16 | 亮度1 | 1 | Hex | | 0--100 | | byte17-18 | 时间2 | 2 | Hex | | 时,分 | | byte19 | 亮度2 | 1 | Hex | | 0--100 | | byte20-21 | 时间3 | 2 | Hex | | 时,分 | | byte22 | 亮度3 | 1 | Hex | | 0--100 | | byte23-24 | 时间4 | 2 | Hex | | 时,分 | | byte25 | 亮度4 | 1 | Hex | | 0--100 | | byte26 | 调光模式 | 1 | Hex | | 默认:0 自动,1:手动 2:环境亮度调光 | | byte27 | 调光类型 | 1 | Hex | | 默认:0突变 1:渐变 | ##### 2.2.2.12 电表节点分组设置指令: TBC ##### 2.2.2.13 传感器报警阀值设置指令: 这个指令用来设置设备的传感器报警阀值。 服务器发布topic name:PP/终端设备mac\*\*/CFG/SAT\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CFG/#\*\*。 **Payload 数据格式**: 每个传感器的配置长度不同 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1...m | 第一个传感器配置 | X | | | | | ...... | | | | | | | bytem...n | 第N个传感器配置 | X | | | | **传感器配置信息:** * 1.温湿度传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 传感器类型 | 1 | Hex | | 01 | | byte2 | 温度最小值 | 1 | Hex | | | | byte3 | 温度最大值 | 1 | Hex | | | | byte4 | 湿度最小值 | 1 | Hex | | | | byte5 | 湿度最大值 | 1 | Hex | | | * 2.陀螺仪传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 类型 | 1 | Hex | | 02 | | byte2-3 | roll偏移阈值 | 2 | Hex | | 翻滚角度 | | byte4-5 | pitch偏移阈值 | 2 | Hex | | 俯仰角度 | | byte6-7 | yaw偏移阈值 | 2 | Hex | | 偏航角度 | * 3.线温传感器 | 数据顺序 | 名称 | 数据长度 | 格式 | 样例 | 备注 | | ---- | --- | ---- | --- | --- | --- | | byte1 | 类型 | 1 | Hex | | 04 | | byte2 | 线温阈值 | 1 | Hex | | 多个线温传感器共用同一个阈值 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CFG/SAT 数据为设备网关mac+接收到的原始数据。12Byte+接收到的原始数据长度。 - - - #### 2.2.3 控制指令: 服务器端对设备终端进行动作行为控制的。由设备管理后台下发指令,终端设备收到后,回复给设备管理后台模块进行数据更新。topic 名缩写表见文后附录。 | 指令类型 | 一级topic | 二级topic | 三级topic | 四级topic | 功能描述 | 备注 | | ---- | ------- | ------- | ------- | ------- | ---- | --- | | 控制设备 | PP | mac | CTR | RRS | 远程重启设备 | | | 控制设备 | PP | mac | CTR | SFR | 设备恢复出厂设置 | | | 控制设备 | PP | mac | CTR | RS | 服务器跳转 | | | 控制设备 | PP | mac | CTR | OTA | ota 升级 | | | 控制设备 | PP | mac | CTR | RDC | 远程手动调光 | | | 控制设备 | PP | mac | CTR | RSC | 远程开关控制 | 单个开关,需要回复 | | 控制设备 | PP | mac | CTR | RGC | 远程开关编组控制 | 多个开关编组控制,需要回复 | | 控制设备 | PP | mac | CTR | RCN | 删除子节点指令 | 需要回复 | ##### 2.2.3.1 设备远程重启指令 服务器向网关设备发送此指令使网关设备重新启动。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RRS\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 无。 **回复数据格式**:无。 ##### 2.2.3.2 设备恢复出厂设置指令 当终端设备收到这个指令后,会清除本地的jsconfig.ini 配置文件。 服务器发布topic name:PP/终端设备mac\*\*/CTR/SFR\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 无。 **回复数据格式**:无。 ##### 2.2.3.3 服务器跳转指令 服务器向网关设备发送此指令使网关设备跳转到指定服务器。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RS\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 6个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-4 | IP | 4 | Hex | | | | byte5-6 | PORT | 2 | Hex | | | **回复数据格式**:无。 ##### 2.2.3.4 ota 远程升级指令 服务器向网关发送此指令对网关设备进行远程升级。 服务器发布topic name:PP/终端设备mac\*\*/CTR/OTA\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 6个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-4 | IP | 4 | Hex | | | | byte5-6 | PORT | 2 | Hex | | | **回复数据格式**:无。 ##### 2.2.3.5 远程手动调光指令 服务器远程调节调光节点的亮度。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RDC\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 3个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte2 | 亮度 | 1 | Hex | | 范围1-100 | | byte3 | 调光类型 | 1 | Hex | | 默认值0:突变 1:渐变 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CTR/RDC 数据为设备网关mac+接收到的原始数据。共15Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 组号 | 1 | Hex | | 1-64 有效组号65未分组 | | byte14 | 亮度 | 1 | Hex | | 范围1-100 | | byte15 | 调光类型 | 1 | Hex | | 默认值0:突变 1:渐变 | ##### 2.2.3.6 远程开关控制指令 服务器向网关设备发送远程开关控制指令,用来进行拉合闸控制。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RSC\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 8个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型空开节点,mac为 0F0000000001 | | byte7 | 子节点类型 | 1 | Hex | | 01:电表节点,02:智能空开节点,03:调光节点,04:烟感节点 | | byte8 | 拉合闸动作 | 1 | Hex | | 拉闸 0 ,合闸 1 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CTR/RSC数据为设备网关mac+接收到的原始数据。共20Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | Hex | | 网关自带电力计是特殊型空开节点,mac为 0F0000000001 | | byte19 | 子节点类型 | 1 | Hex | | 01:电表节点,02:智能空开节点,03:调光节点,04:烟感节点 | | byte20 | 拉合闸动作 | 1 | Hex | | 拉闸 0 ,合闸 1 | ##### 2.2.3.7远程开关编组控制指令 服务器向网关设备发送远程开关编组控制指令,用来对多个智能空开进行拉合闸控制。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RGC\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 3个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1 | 组号 | 1 | Hex | | | | byte7 | 子节点类型 | 1 | Hex | | 01:电表节点,02:智能空开节点,03:调光节点,04:烟感节点 | | byte8 | 拉合闸动作 | 1 | Hex | | 拉闸 0 ,合闸 1 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CTR/RGC数据为设备网关mac+接收到的原始数据。共15Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13 | 组号 | 1 | Hex | | | | byte14 | 子节点类型 | 1 | Hex | | 01:电表节点,02:智能空开节点,03:调光节点,04:烟感节点 | | byte15 | 拉合闸动作 | 1 | Hex | | 拉闸 0 ,合闸 1 | ##### 2.2.3.8 删除子节点指令 服务器向网关设备发送此指令删除子节点,不管节点是否在线,都从网关的节点表里删除该节点。 服务器发布topic name:PP/终端设备mac\*\*/CTR/RCN\*\*,终端设备订阅topic name:PP/终端设备mac\*\*/CTR/#\*\*。 **Payload 数据格式**: 7个字节。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-6 | 子节点mac | 6 | Hex | | | | byte7 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | **回复数据格式**: 终端设备回复 publish topic为:ACK/CTR/RCN数据为设备网关mac+接收到的原始数据。共19Byte。 | 数据顺序 | 名称 | 长度 | 格式 | 样例 | 备注 | | ---- | --- | --- | --- | --- | --- | | byte1-12 | 设备网关mac | 12 | hex | | | | byte13-18 | 子节点mac | 6 | Hex | | | | byte19 | 子节点类型 | 1 | Hex | | 电表节点:01,智能空开节点:02,调光节点:03,烟感节点:04 | - - - ## 附录: ### **Topic 名缩写表** : | Topic 名缩写 | 完整拼写 | 中文 | | --------- | ---- | --- | | DT | Data Transfer | 数据传输 | | CN | connect network | 连接网络 | | FTC | first time connect | 首次连接服务器 | | RCN | reconnect | 重连接服务器 | | SDT | Sensor Data Transfer | 上传传感器数据 | | EPD | Electrical power data | 电力数据 | | BKS | backup server | 备份服务器 | | NTP | Network Time Protocol | 网络时间同步 | | CFG | Configure | 配置 | | CTR | control | 控制 | | SCR | Send Configure Request | 发送配置请求 | | NAT | Node Allocation Table | 节点分配表 | | SRV | set rated voltage | 设置额定电压 | | SRC | set rated current | 设置额定电流 | | SAT | sensor alarm threshold | 传感器报警阀值 | | ULI | upload interval | 数据上传间隔时间 | | STS | Switch time setting | 开关时间设置 | | SCM | Switch control mode | 开关控制模式 | | DGS | dimmer Group settings | 调光分组设置 | | DGM | dimmer Group modify | 调光组设置修改 | | RRS | Remote reboot system | 远程重启终端设备系统 | | SFR | Set Factory Reset | 设置工厂复位 | | RS | Redirection Server | 重定向服务器 | | RDC | remote diming control | 远程调光控制 | | RSC | remote switch control | 远程开关控制 | | RGC | remote group control | 远程开关编组控制 | | RCN | Remove Child Nodes | 删除节点 | | GNV | Get node version | 获取子节点版本号 |