# 智能转换器断电告警插座10A-通断-4G (型号：GSPMA1B-4G) - 开发者指令 
## 产品基本描述 
 
## 产品主要特点 
 
## 产品图 
<https://smart-bird-oss.smart-bird.cn/images/2025/08/31/1743359014940952.png> 
## 官网产品资料 
### 产品详细信息 
<null> 
### 淘宝购买网址 
<null> 
### 京东购买网址 
<null> 
### 开发者文档 
<https://www.smart-bird.cn/doc/product/GSPM/device/GSPMA1B-4G/command> 
## 客户常见问题 
 
### 设备可以连接到自己的阿里云服务器吗，数据不需要通过您那边中转吧？ 
是的，配置MQTT参数，即可连接到指定的服务器，数据完全不经过厂商  
 
### 二次开发对接要额外收费吗？ 
不收费。接入自己的平台没有额外费用。  
 
### 自定义 MQTT 配置好了为什么不生效？ 
自定义 MQTT 必须重启设备后才生效（拔插电源，或在配置首页点「重新启动」）。只在配置页点保存不会生效。  
 
### 设备是否支持连接TSL加密服务器？是否支持mqtts？ 
该功能正在研发中，即将更新。可在自定义 MQTT 中配置 mqtts / TLS 加密连接，端口与证书参数按开发文档设置，配置后重启设备生效。  
 
### 为什么控制台上一直显示设备离线/未激活？ 
请先确认： 1、设备是否已经配置了单频的2.4G WiFi，或者4G物联网卡是否正常； 2、是否进行过自定义MQTT操作，自定义MQTT的设备会和控制台MQTT断开连接，此时控制台显示设备离线或未激活是正常的  
 
### 支持二次开发写入我们自己内部的运维平台吗？ 
支持。设备开放 MQTT / TCP协议与指令文档，可直接连接用户自有服务器平台，接入不收取额外费用。  
 
### 能接入哪些系统或平台？支持接入米家/华为生态/涂鸦吗？ 
1、【支持】自建服务器 / 自建平台：你自己的 MQTT Broker（Mosquitto、EMQX、HiveMQ 等）+ 自研业务系统； 2、【支持】第三方物联网云平台：阿里云 IoT、华为云 IoT、腾讯云 IoT等； 3、【支持】开源 / 第三方平台：ThingsBoard、Home Assistant、 4、【不支持】暂不支持接入米家、华为 HiLink、涂鸦等第三方公有生态； 总结：设备面向开发者免费开放MQTT/TCP协议，适合接入自建平台做深度集成。  
 
### 可不可以连接我们的内网服务器？ 
可以。 1、WiFi设备：连接您的内网WiFi后，自定义 MQTT 直连您的内网服务器； 2、4G设备：可安装使用您自己专网卡，自定义MQTT后直连您的内网服务器。 配置完成后重启设备生效，数据不经过厂商。  
 
### 能不能按我提供的MQTT信息批量写入到设备里？ 
支持。可联系工作人员获取批量配置表格。在表单内填写您的服务器参数信息后，由技术人员上传表格至智鸟ERP系统生效。 后续我们还将提供客户运维管理系统（vip.smart-bird.cn），企业客户可通过该平台自己批量维护。  
 
### 是否需要连接网关？ 
不需要。设备WiFi/4G正常通信后，通过协议直连您的服务器平台，无需网关。  
 
### 支持API调用吗？ 
可通过HTTP调用GemeOpen控制台接口。控制台仅供用户测试使用，不能保证稳定性，常会因为其他用户极限测试，影响平台设备正常使用。 如果您是做商用项目，建议通过MQTT/TCP接入您自己搭建的服务器平台，更稳定，更便于后续二次开发。  
 
### 我们是做商用项目的，GemeOpen可不可以提供中性产品？ 
开关、插座类强制认证过的产品，不支持提供中性产品。所有信息均在认证机构做过照片备案，无法修改。 其他非强制认证类产品，外壳支持自定义打标，可修改为用户自有品牌型号信息。  
 
### 自定义mqtt后，客户端发布消息，为什么收不到订阅回复？ 
常见原因： ①订阅/发布的主题与开发文档定义不一致，可尝试将订阅主题发布主题交换位置填写； ②修改自定义 MQTT 后未重启设备； ③服务器参数填写错误，服务器端 ACL 未放行。  
## 产品电气参数 
--- 
| 参数名 | 参数值 | 
|------|------| 
| 品牌 | GemeOpen | 
| 上市日期 | 未上市 | 
| 产品类型 | 智能转换器插座10A-S1-WiFi | 
| 产品型号 | GSPMA1B-4G | 
| 产品尺寸 | - | 
| 输入电压 | AC 85~265V | 
| 最大负载电流 | 10A | 
| 额定功率 | - | 
| 待机功率 | - | 
| 继电器 | - | 
| 工作温度 | - | 
| 通讯方式 | 4G全网通 | 
| 通讯模块 | - | 
| 控制协议 | MQTT、蓝牙 | 
| 传输距离 | - | 
| 屏幕显示 | 无 | 
| 3C证书编号 | - | 
--- 
 
## 常用指令 
 
### 控制设备通断 
*controller-event* 
 
控制设备的通断电操作 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
"key" : 0,
"messageId" : "test-relay-on-001",
"type" : "event"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| messageId | String | 消息ID字段 | test-relay-on-001 | 
| type | String | 控制设备开关固定传"event" | event | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
"code" : "GSPMA1B-4G",
"commandName" : "controller-event",
"iccid" : "898608361924D2182927",
"imei" : "863434083576113",
"key" : 0,
"keyLock" : 0,
"messageId" : "test-relay-on-001",
"onState" : 2,
"resetLock" : 0,
"signal" : 27,
"source" : "command",
"timerEnable" : 1,
"timerInterval" : 60,
"version" : "1.1.1"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 产品类型，固定为"GSPMA1B-4G" | GSPMA1B-4G | 
| commandName | String | 指令名称 | controller-event | 
| iccid | String | SIM 卡号 | 898608361924D2182927 | 
| imei | String | 设备 IMEI，唯一标识 | 863434083576113 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 0 | 
| keyLock | int | 按键锁：0未锁，1锁定（锁定后本地按键无效） | 0 | 
| messageId | String | 消息ID字段 | test-relay-on-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 2 | 
| resetLock | int | 重置锁：0未锁，1锁定（锁定后长按重置无效） | 0 | 
| signal | int | 4G 信号强度（CSQ）范围 0~31， CSQ值小于10，网络较差。 CSQ值在10和25之间，网络中等。 CSQ值大于25，网络较好。 | 27 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 定时电量上报开关：0关闭，1 开启 | 1 | 
| timerInterval | int | 定时上报间隔（秒）；仅 timerEnable=1`时返回，取值范围5-86400 | 60 | 
| version | String | 固件版本号 | 1.1.1 | 
---  
 
### 查询设备信息 
*info-all* 
 
查询设备基础信息，包括型号、固件版本、继电器当前状态、4G 信号强度、SIM 卡 ICCID，以及按键锁、重置锁、定时上报、断电恢复策略等配置参数。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "type": "info",
 "messageId": "test-info-001"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-info-001 | 
| type | String | 固定值"xxx" | info | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "imei": "860123456789012",
 "code": "GSPMA1B-4G",
 "version": "1.0.0",
 "key": 0,
 "signal": 25,
 "iccid": "89860123456789012345",
 "keyLock": 0,
 "resetLock": 0,
 "timerEnable": 1,
 "timerInterval": 60,
 "onState": 0,
 "messageId": "test-info-001",
 "commandName": "info-all",
 "source": "command"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | info-all | 
| iccid | String | SIM-卡ICCID值 | 89860123456789012345 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 1 | 
| keyLock | int | 按键锁，0：关闭，1：开启 | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-info-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 2 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 0 | 
| signal | int | 4G 信号强度（CSQ）范围 0~31， CSQ值小于10，网络较差。 CSQ值在10和25之间，网络中等。 CSQ值大于25，网络较好。 | 25 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备统计信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 设备统计信息上报时间间隔（单位秒），取值范围5-86400 | 60 | 
| version | String | 当前固件版本号 | 1.0.0 | 
---  
 
### 查询电量统计 
*info-statistic* 
 
获取设备采集的累积电量、实时电压、实时电流、有功功率 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-stat-001",
 "type" : "statistic"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-stat-001 | 
| type | String | 获取设备电量信息固定传"statistic" | statistic | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "info-statistic",
 "current" : 15.027,
 "energy" : 25.047,
 "imei" : "860123456789012",
 "key" : 0,
 "messageId" : "test-stat-001",
 "power" : 2921.511,
 "powerState" : 1,
 "source" : "command",
 "voltage" : 226.024
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | info-statistic | 
| current | float | 当前电流，单位A，保留三位小数 | 15.027 | 
| energy | float | 累计用电量，单位KW*H，保留三位小数，断电后不会归零，重置后会归零 | 25.047 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| messageId | String | 消息ID字段 | test-stat-001 | 
| power | float | 当前功率，单位W，保留三位小数 | 2921.511 | 
| powerState | int | 供电状态：1 正常供电，0检测到断电（内部供电） | 1 | 
| source | String | 指令回复“command" | command | 
| voltage | float | 当前电压，单位V，保留三位小数 | 226.024 | 
---   
 
## 主动上报 
 
### 断电上报 
*device-power-warnl* 
 
当设备检测到断电时，自动切换为内部供电，并使用QoS 1确保告警可靠送达 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "device-power-warnl",
 "current" : 0.0,
 "energy" : 1.234,
 "imei" : "860123456789012",
 "key" : 0,
 "power" : 0.0,
 "powerState" : 0,
 "source" : "auto",
 "voltage" : 15.2
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | device-power-warnl | 
| current | float | 当前电流，单位A，保留三位小数 | 0.0 | 
| energy | float | 累计用电量，单位KW*H，保留三位小数，断电后不会归零，重置后会归零 | 1.234 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 0 | 
| power | float | 当前功率，单位W，保留三位小数 | 0.0 | 
| powerState | int | 固定为 0（检测到断电，内部供电） | 0 | 
| source | String | 指令回复“command" | auto | 
| voltage | float | 当前电压，单位V，保留三位小数 | 15.2 | 
---  
 
### 定时电量上报 
*device-timer-task* 
 
开启 timerEnable后，按 timerInterval周期上报 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "device-timer-task",
 "current" : 0.12,
 "energy" : 1.234,
 "imei" : "860123456789012",
 "key" : 0,
 "power" : 26.4,
 "powerState" : 1,
 "source" : "auto",
 "voltage" : 220.5
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | device-timer-task | 
| current | float | 当前电流，单位A，保留三位小数 | 0.12 | 
| energy | float | 累计用电量，单位KW*H，保留三位小数，断电后不会归零，重置后会归零 | 1.234 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 0 | 
| power | float | 当前功率，单位W，保留三位小数 | 26.4 | 
| powerState | int | 供电状态：1:正常供电，0:检测到断电（内部供电） | 1 | 
| source | String | 指令回复“command" | auto | 
| voltage | float | 当前电压，单位V，保留三位小数 | 220.5 | 
---  
 
### 本地按键触发 
*info-all* 
 
单击按键（`keyLock=0` 时）切换继电器后上报 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-info-001 | 
| type | String | 固定值"xxx" | info | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "code" : "GSPMA1B-4G",
 "commandName" : "info-all",
 "iccid" : "89860123456789012345",
 "imei" : "860123456789012",
 "key" : 1,
 "keyLock" : 0,
 "messageId" : "test-info-001",
 "onState" : 2,
 "resetLock" : 0,
 "signal" : 25,
 "source" : "command",
 "timerEnable" : 1,
 "timerInterval" : 60,
 "version" : "1.0.0"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | info-all | 
| iccid | String | SIM-卡ICCID值 | 89860123456789012345 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 1 | 
| keyLock | int | 按键锁，0：关闭，1：开启 | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-info-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 2 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 0 | 
| signal | int | 4G 信号强度（CSQ）范围 0~31， CSQ值小于10，网络较差。 CSQ值在10和25之间，网络中等。 CSQ值大于25，网络较好。 | 25 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备统计信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 设备统计信息上报时间间隔（单位秒），取值范围5-86400 | 60 | 
| version | String | 当前固件版本号 | 1.0.0 | 
---   
 
## 设备维护 
 
### 恢复出厂（重置） 
*controller-reset* 
 
恢复出厂设置后配网信息和自定义信息都会清空，请谨慎操作！ 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-reset-001",
 "system" : "reset",
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-reset-001 | 
| system | String | 重置/恢复出厂设置默认填"reset" | reset | 
| type | String | 设备设置固定传"setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "controller-reset",
 "imei" : "860123456789012",
 "message" : "ok",
 "messageId" : "test-reset-001",
 "source" : "command",
 "success" : true
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | controller-reset | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| message | String | 执行返回结果 | ok | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-reset-001 | 
| source | String | 指令回复“command" | command | 
| success | boolean | 执行结果 | true | 
---  
 
### 软重启 
*controller-restart* 
 
远程触发设备软重启。设备会先回复 MQTT 响应消息，等待 4 秒后执行重启操作。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-restart-001",
 "system" : "restart",
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-restart-001 | 
| system | String | 重置/恢复出厂设置默认填"reset" | restart | 
| type | String | 固定值"xxx" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "controller-restart",
 "imei" : "860123456789012",
 "message" : "ok",
 "messageId" : "test-restart-001",
 "source" : "command",
 "success" : true
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | controller-restart | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| message | String | 执行结果描述：对命令执行结果的文本说明。执行完成且无异常：ok ；如果出现异常，返回异常结果描述。 | ok | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-restart-001 | 
| source | String | 指令回复“command" | command | 
| success | boolean | 执行结果，执行成功：true；执行失败：false | true | 
---  
 
### 定时上报间隔 
*device-timer-interval* 
 
配置设备定时电量上报的开关和上报间隔。开启后设备将按设定周期自动上报电压、电流、功率、累计电量等数据。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-timer-report-001",
 "timerEnable" : 1,
 "timerInterval" : 10,
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 消息ID字段 | test-timer-report-001 | 
| timerEnable | int | 设备电量信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 电量信息上报时间间隔（单位秒），取值范围5-86400 | 10 | 
| type | String | 设备设置固定传"setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "code" : "GSPMA1B-4G",
 "commandName" : "device-timer-interval",
 "iccid" : "89860123456789012345",
 "imei" : "860123456789012",
 "key" : 0,
 "keyLock" : 0,
 "messageId" : "test-timer-report-001",
 "onState" : 1,
 "powerState" : 1,
 "resetLock" : 0,
 "signal" : 27,
 "source" : "command",
 "timerEnable" : 1,
 "timerInterval" : 10,
 "version" : "1.2.3"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | device-timer-interval | 
| iccid | String | SIM-卡ICCID值 | 89860123456789012345 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| keyLock | int | 按键锁，0：关闭，1：开启 | 0 | 
| messageId | String | 消息ID字段 | test-timer-report-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 1 | 
| powerState | int | 报警器电源状态，1：市电供电：0：电池供电 | 1 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 0 | 
| signal | int | 4G 信号强度（CSQ）范围 0~31， CSQ值小于10，网络较差。 CSQ值在10和25之间，网络中等。 CSQ值大于25，网络较好。 | 27 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备电量信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 电量信息上报时间间隔（单位秒），取值范围5-86400 | 10 | 
| version | String | 当前固件版本号 | 1.2.3 | 
---  
 
### 清除累计用电量 
*energy-clear* 
 
清除累计用电量 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-energy-clear-001",
 "system" : "energy-clear",
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-energy-clear-001 | 
| system | String | 固定为 `energy-clear` | energy-clear | 
| type | String | 固定 "setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "energy-clear",
 "imei" : "860123456789012",
 "message" : "ok",
 "messageId" : "test-energy-clear-001",
 "source" : "command",
 "success" : true
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | energy-clear | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| message | String | 执行返回结果 | ok | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-energy-clear-001 | 
| source | String | 指令回复“command" | command | 
| success | boolean | 执行结果 | true | 
---  
 
### 查询当前协议 配置  
*info-protocol* 
 
查询 当前协议 配置  
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-protocol-001",
 "type" : "protocol"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-protocol-001 | 
| type | String | 获取设备通讯协议固定传protocol | protocol | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "clientId" : "868926080557405",
 "commandName" : "info-protocol",
 "messageId" : "test-protocol-001",
 "password" : "123456",
 "port" : "1883",
 "protocol" : "mqtt",
 "publish" : "/GeekOpen/qos0",
 "server" : "broker.emqx.io",
 "source" : "command",
 "subcribe" : "/GeekOpen/qos1",
 "username" : "admin"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| clientId | String | 自定义MQTT客户端ID注意：不可重复 | 868926080557405 | 
| commandName | String | 指令名称 | info-protocol | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-protocol-001 | 
| password | String | 密码 | 123456 | 
| port | String | 端口号 | 1883 | 
| protocol | String | 协议类型 | mqtt | 
| publish | String | 自定义发布主题 注意:不可重复 | /GeekOpen/qos0 | 
| server | String | 自定义服务器地址 | broker.emqx.io | 
| source | String | 指令回复“command" | command | 
| subcribe | String | 自定义订阅主题，注意：不可重复 | /GeekOpen/qos1 | 
| username | String | 自定义服务器用户名 | admin | 
---  
 
### 按键锁 
*setting-key-lock* 
 
功能按键锁定后，设备仅能通指令远程操作，例如控制开关的通断、插座的通断电，都只能通过指令操作 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "keyLock" : 0,
 "messageId" : "test-keylock-001",
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| keyLock | int | 按键锁，0：关闭，1：开启 | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-keylock-001 | 
| type | String | 设备设置固定传"setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "code" : "GSPMA1B-4G",
 "commandName" : "setting-key-lock",
 "iccid" : "89860123456789012345",
 "imei" : "860123456789012",
 "key" : 0,
 "keyLock" : 0,
 "messageId" : "test-keylock-001",
 "onState" : 1,
 "resetLock" : 0,
 "signal" : 25,
 "source" : "command",
 "timerEnable" : 1,
 "timerInterval" : 60,
 "version" : "1.1.1"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | setting-key-lock | 
| iccid | String | SIM-卡ICCID值 | 89860123456789012345 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| keyLock | int | 按键锁，0：关闭，1：开启 | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-keylock-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 1 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 0 | 
| signal | int | 4G 信号强度（CSQ） | 25 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备电量信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 设备统计信息上报时间间隔（单位秒），取值范围5-86400 | 60 | 
| version | String | 当前固件版本号 | 1.1.1 | 
---  
 
### 自定义MQTT 
*setting-mqtt* 
 
修改设备的 MQTT 服务器连接参数，使设备接入客户指定的MQTT 服务器（自建服务器、第三方平台等）。<br/> 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
"clientId" : "custom",
"password" : "123456",
"port" : "1883",
"protocol" : "mqtt",
"publish" : "/GeekOpen/qos0",
"server" : "broker.emqx.io",
"subscribe" : "/GeekOpen/qos1",
"type" : "custom",
"username" : "admin"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| clientId | String | 自定义MQTT客户端ID注意：不可重复 | custom | 
| password | String | 密码 | 123456 | 
| port | String | 端口号 | 1883 | 
| protocol | String | 协议类型 | mqtt | 
| publish | String | 自定义发布主题 注意:不可重复 | /GeekOpen/qos0 | 
| server | String | 自定义服务器地址 | broker.emqx.io | 
| subscribe | String | 自定义订阅主题，注意：不能与发布主题重复 | /GeekOpen/qos1 | 
| type | String | 设备自定义固定传"custom" | custom | 
| username | String | 自定义服务器用户名 | admin | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
"clientId" : "custom",
"commandName" : "setting-mqtt",
"mac" : "4CEBD60BFD62",
"port" : "1883",
"protocol" : "mqtt",
"publish" : "/topic/qos0
",
"server" : "192.168.0.66",
"source" : "command",
"subscribe" : "/topic/qos1",
"username" : "admin"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| clientId | String | 自定义MQTT客户端ID注意：不可重复 | custom | 
| commandName | String | 指令名称 | setting-mqtt | 
| mac | String | wifi设备MAC地址或4G设备的IMEI号，唯一标识 | 4CEBD60BFD62 | 
| port | String | 端口号 | 1883 | 
| protocol | String | 协议类型 | mqtt | 
| publish | String | 自定义发布主题 注意:不可重复 | /topic/qos0 | 
| server | String | 自定义服务器地址 | 192.168.0.66 | 
| source | String | 指令回复“command" | command | 
| subscribe | String | 自定义订阅主题，注意：不能与发布主题重复 | /topic/qos1 | 
| username | String | 自定义服务器用户名 | admin | 
---  
 
### 设置上电默认状态 
*setting-on-state* 
 
设置设备在断电后重新通电时，继电器应恢复到什么状态。出厂设备默认断电 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "onState" : 1,
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 1 | 
| type | String | 设备设置固定传"setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "code" : "GSPMA1B-4G",
 "commandName" : "setting-on-state",
 "iccid" : "89860123456789012345",
 "imei" : "860123456789012",
 "key" : 0,
 "messageId" : "test-onstate-001",
 "onState" : 1,
 "resetLock" : 0,
 "signal" : 25,
 "source" : "command",
 "timerEnable" : 1,
 "timerInterval" : 15,
 "version" : "1.1.1"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | setting-on-state | 
| iccid | String | SIM-卡ICCID值 | 89860123456789012345 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-onstate-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 1 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 0 | 
| signal | int | 4G 信号强度（CSQ） | 25 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备电量信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 设备统计信息上报时间间隔（单位秒），取值范围5-86400 | 15 | 
| version | String | 当前固件版本号 | 1.1.1 | 
---  
 
### 重置锁 
*setting-resetLock* 
 
锁定或解锁设备的长按重置（恢复出厂）功能。锁定后，用户长按重置键无法触发恢复出厂操作。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "messageId" : "test-resetlock-001",
 "resetLock" : 1,
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-resetlock-001 | 
| resetLock | int | 重置锁，0：关闭，1：开启 | 1 | 
| type | String | 固定值"xxx" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "code" : "GSPMA1B-4G",
 "commandName" : "setting-resetLock",
 "iccid" : "89860123456789012345",
 "imei" : "860123456789012",
 "key" : 0,
 "keyLock" : 0,
 "messageId" : "test-resetlock-001",
 "onState" : 0,
 "resetLock" : 1,
 "signal" : 25,
 "source" : "command",
 "timerEnable" : 1,
 "timerInterval" : 60,
 "version" : "1.0.0"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| code | String | 设备型号代码 | GSPMA1B-4G | 
| commandName | String | 指令名称 | setting-resetLock | 
| iccid | String | SIM 卡 ICCID | 89860123456789012345 | 
| imei | String | 设备 IMEI，唯一标识 | 860123456789012 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 0 | 
| keyLock | int | 按键锁：0未锁，1锁定（锁定后本地按键无效） | 0 | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-resetlock-001 | 
| onState | int | 设备上电的默认状态： 0：记忆；是指记忆最后一次设备断电前的状态，如断电前设备是通电状态（指示灯是蓝的），设备下次上电默认是通电状态（指示灯是蓝的）。 1：关闭，即断电状态（指示灯是灭的），如断电前，设备是通电状态（指示灯是蓝的），设备下次上电默认是依旧是断电状态（指示灯是灭的）。需要手动/远程开启通电状态。 2：开启，即通电状态（指示灯是蓝色的），是指设备上电之后，默认是通电状态，此刻需要注意，插在设备上的负载会通电运行，会有安全风险，所以建议是默认上电状态为关闭。 | 0 | 
| resetLock | int | 重置锁：0 未锁，1锁定（锁定后长按重置无效） | 1 | 
| signal | int | 4G 信号强度（CSQ） | 25 | 
| source | String | 指令回复“command" | command | 
| timerEnable | int | 设备统计信息定时上报状态，0：关闭；1：开启 | 1 | 
| timerInterval | int | 设备统计信息上报时间间隔（单位秒），取值范围5-86400 | 60 | 
| version | String | 当前固件版本号 | 1.0.0 | 
---   
 
## 定时任务 
 
### 查询任务列表 
*info-timer-task-query* 
 
查询设备上所有已启用的定时任务，返回每个任务的编号、触发时间、重复规则和关联的继电器动作。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "action" : "timerTaskQuery",
 "messageId" : "test-timer-query-001",
 "type" : "event"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| action | String | 学习红外码指令默认填"learn" | timerTaskQuery | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-timer-query-001 | 
| type | String | 固定值"event" | event | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "action" : "timerTaskQuery",
 "commandName" : "info-timer-task-query",
 "imei" : "860123456789012",
 "list" : [{"number":1,"hour":8,"repeat":"day","command":{"type":"event","key":1},"minute":30},{"number":3,"week":5,"hour":22,"repeat":"week","command":{"type":"event","key":0},"minute":0}],
 "messageId" : "test-timer-query-001",
 "source" : "command",
 "type" : "event"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| action | String | 固定为 timerTaskQuery | timerTaskQuery | 
| commandName | String | 指令名称 | info-timer-task-query | 
| imei | String | 设备 IMEI | 860123456789012 | 
| list | List | list为列表，参数带number、week、hour、minute、repeat是定时按星期时分执行一次，参数不带week则是每天按时分循环执行,key1、key2、key3含义同event指令 | [{"number":1,"hour":8,"repeat":"day","command":{"type":"event","key":1},"minute":30},{"number":3,"week":5,"hour":22,"repeat":"week","command":{"type":"event","key":0},"minute":0}] | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-timer-query-001 | 
| source | String | 指令回复“command" | command | 
| type | String | 固定为 event | event | 
---  
 
### 删除定时任务 
*setting-timer-delete* 
 
删除一个已启用的定时任务。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| action | String | 固定值delete | delete | 
| messageId | String | 消息ID字段 | 202201241610366046 | 
| number | int | 任务编号 | 1 | 
| type | String | 设备设置固定传"setting" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | setting-timer-delete | 
| mac | String | wifi设备MAC地址或4G设备的IMEI号，唯一标识 | 4CEBD60BFD62 | 
| message | String | 执行返回结果 | ok | 
| messageId | String | 消息ID字段 | 202201241610366046 | 
| source | String | 指令回复“command" | command | 
| success | boolean | 执行结果 | true | 
---  
 
### 设置定时任务 
*setting-timer-task* 
 
设置一个定时任务，支持一次性、每天重复、按周重复三种模式。到点后会自动执行指定的继电器开/关动作，并上报通知。最多支持 10 个闹钟。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "command" : 
 {
 "key" : 1,
 "type" : "event"
 },
 "hour" : 19,
 "messageId" : "test-alarm-001",
 "minute" : 2,
 "number" : 1,
 "repeat" : "week",
 "task" : "timer",
 "type" : "setting",
 "week" : "2"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| command | Object | 指令 | | 
| hour | int | 触发小时，范围0~23 | 19 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 1 | 
| messageId | String | 消息ID字段 | test-alarm-001 | 
| minute | int | 触发分钟，范围0~59 | 2 | 
| number | int | 任务编号，范围1~10 | 1 | 
| repeat | String | 重复类型：oneof（一次性）、day每天）、week（按周） | week | 
| task | String | 固定值“timer" | timer | 
| type | String | 设备设置固定传"setting" | setting | 
| type | String | 控制设备开关固定传"event" | event | 
| type | String | 固定值"event" | event | 
| week | String | 星期，仅 repeat=week` 时需要；1周一 ~ 7周日 | 2 | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "command" : 
 {
 "key" : 0,
 "type" : "event"
 },
 "commandName" : "setting-timer-task",
 "hour" : 19,
 "imei" : "860123456789012",
 "messageId" : "test-alarm-001",
 "minute" : 2,
 "number" : 1,
 "repeat" : "oneof",
 "source" : "command",
 "week" : "2"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| command | Object | 指令 | | 
| commandName | String | 指令名称 | setting-timer-task | 
| hour | int | 任务编号，范围1~10 | 19 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 0 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 0 | 
| messageId | String | 消息ID字段 | test-alarm-001 | 
| minute | int | 触发分钟，范围0~59 | 2 | 
| number | int | 任务编号，范围1~10 | 1 | 
| repeat | String | 重复类型：oneof（一次性）、day每天）、week（按周） | oneof | 
| source | String | 指令回复“command" | command | 
| type | String | 控制设备开关固定传"event" | event | 
| type | String | 固定值"event" | event | 
| week | String | 星期，仅 repeat=week 时需要；1周一 ~ 7周日 | 2 | 
---   
 
## 倒计时 
 
### 停止倒计时 
*controller-countdown-clear* 
 
停止当前正在运行的倒计时任务。倒计时被停止后不会执行 finishCommand 动作 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "type": "setting",
 "task": "countdown-clear",
 "messageId": "test-countdown-clear-001"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-countdown-clear-001 | 
| task | String | 固定值“countdown" | countdown-clear | 
| type | String | 固定值"xxx" | setting | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "messageId": "test-countdown-clear-001",
 "success": true,
 "commandName": "setting-timer-countdown-clear",
 "source": "command",
 "imei": "860123456789012",
 "message": "ok"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | setting-timer-countdown-clear | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| message | String | 执行结果描述：对命令执行结果的文本说明。执行完成且无异常：ok ；如果出现异常，返回异常结果描述。 | ok | 
| messageId | String | 业务流水号。由请求方生成的唯一标识，响应方原样回显，用于请求与响应的关联匹配。 | test-countdown-clear-001 | 
| source | String | 指令回复“command" | command | 
| success | boolean | 执行结果，执行成功：true；执行失败：false | true | 
---  
 
### 设置倒计时任务 
*setting-timer-countdown* 
 
启动一个倒计时任务。倒计时运行期间，设备按设定间隔自动上报进度；倒计时结束后自动执行指定的继电器动作，并上报最终结果。 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
{
 "countdownSecond" : 10,
 "finishCommand" : 
 {
 "key" : 1,
 "type" : "event"
 },
 "messageId" : "test-countdown-001",
 "task" : "countdown",
 "timerInterval" : 1,
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| countdownSecond | int | 倒计时总时长（秒），必须大于 0 | 10 | 
| finishCommand | Object | 倒计时结束后自动执行的继电器动作 | | 
| key | int | 插座通断电状态，0：断电，1：通电 | 1 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 1 | 
| messageId | String | 消息ID字段 | test-countdown-001 | 
| task | String | 固定值“countdown" | countdown | 
| timerInterval | int | 进度上报间隔（秒）。0表示仅上报开始和结束，>0时必须小于 countdownSecond | 1 | 
| type | String | 设备设置固定传"setting" | setting | 
| type | String | 控制设备开关固定传"event" | event | 
| type | String | 固定为 `event` | event | 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "setting-timer-countdown",
 "countdownSecond" : 60,
 "finishCommand" : 
 {
 "key" : 1,
 "type" : "event"
 },
 "imei" : "860123456789012",
 "messageId" : "test-countdown-001",
 "source" : "command",
 "task" : "countdown",
 "timerInterval" : 1,
 "type" : "setting"
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | setting-timer-countdown | 
| countdownSecond | int | 倒计时总时间 | 60 | 
| finishCommand | Object | 完成任务 | | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| key | int | 插座通断电状态，0：断电，1：通电 | 1 | 
| key | int | 设备通断电状态，0：断电，1：通电 | 1 | 
| messageId | String | 消息ID字段 | test-countdown-001 | 
| source | String | 指令回复“command" | command | 
| task | String | 固定值“countdown" | countdown | 
| timerInterval | int | 进度上报间隔（秒） | 1 | 
| type | String | 设备设置固定传"setting" | setting | 
| type | String | 控制设备开关固定传"event" | event | 
| type | String | 固定为 event | event | 
---  
 
### 倒计时进度上报 
*setting-timer-countdown-active* 
 
倒计时运行期间，按启动时设定timerInterval上报进度 
 
**向设备发送指令（服务端向设备订阅topic发送消息）** 
```json 
 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
--- 
**设备返回信息（设备向服务端订阅topic上报消息）** 
```json 
{
 "commandName" : "setting-timer-countdown-active",
 "countdownSecond" : 60,
 "imei" : "860123456789012",
 "remaining" : 45,
 "source" : "auto",
 "state" : 1
} 
``` 
#### 字段属性 
--- 
| 字段名称 | 字段类型 | 字段说明 | 示例值 | 
|------|------|------|------| 
| commandName | String | 指令名称 | setting-timer-countdown-active | 
| countdownSecond | int | 倒计时总时长（秒） | 60 | 
| imei | String | 设备唯一标识 | 860123456789012 | 
| remaining | float | 剩余时间（秒） | 45 | 
| source | String | 指令回复“command" | auto | 
| state | int | 任务状态：0：待启动，1：正在进行，2：结束 | 1 | 
---