CATALOG

针对芯步AC5-10A智能通断器,其核心优势在于开放了标准的HTTP API接口,这使得开发者可以用熟悉的编程语言(如Python、PHP、Java、Go等)通过简单的POST请求,即可实现对设备的远程通断控制。以下方案详细说明了从设备准备、接口鉴权到命令下发的完整对接流程。

1. 产品概述与准备

AC5-10A 智能通断器是一款支持WiFi直连的继电器控制模块,额定电流10A,适用于100-250V交流电路。其核心对接价值在于开放了标准的HTTP接口,无需网关中转,可直接接入任何支持HTTP请求的软件系统(Web、App、SaaS等)

准备工作:

  • 硬件:AC5-10A设备一台,已通电并联网。

  • 账号:芯步官方平台开发者账号。

  • 凭证:登录工作台,获取 AppId(应用ID)和 AppSecret(应用密钥)

  • 目标:记录下需要控制的设备ID(Device ID)。

2. 接口鉴权与签名机制

为了保证接口调用的安全性,所有API请求均需携带动态生成的签名(Sign)。芯步采用双层MD5加密策略,具体生成算法如下

  1. 准备时间戳:获取当前的Unix时间戳(秒),例如 ts = 1714352400

  2. 第一次MD5加密:将 AppSecret 进行MD5加密,得到 Secret_Md5

  3. 拼接字符串:将 Secret_Md5 与上述的 ts 直接拼接成一个新字符串。

  4. 第二次MD5加密:对新字符串再次进行MD5加密,得到最终的 sign

伪代码示例:

3. API接口调用详解

对接的核心是通过HTTP POST请求向指定API地址下发控制指令。

3.1 请求概览

  • 请求地址http(s)://api.thingboot.com/{AppId}/device/control/

  • 请求方式POST

  • 数据格式JSON

  • 参数位置:Query参数携带签名(sign, ts),Body携带指令数据。

3.2 请求参数说明

在请求Body中,需要包含两个关键字段:

字段类型描述
deviceString / Int目标设备的唯一ID,可在后台查看
orderJSON Object控制指令集,通断器主要控制继电器输出

3.3 核心指令集 (Order)

对于 AC5-10A 型号,由于设备手册显示其为1路控制,通常对应 power 字段。如果为多路版本,则对应 power1

动作Order JSON 示例业务含义
开启{“power”: 1}{“power1”: 1}继电器吸合,线路导通,负载开始工作。
关闭{“power”: 0}{“power1”: 0}继电器断开,线路切断,负载停止工作。
先断后通 (脉冲){“reset”: 3000}立即断开电路,保持断开状态3秒后,自动重新闭合(常用来重启路由器等设备)
先通后断 (点动){“point”: 5000}立即接通电路,保持接通状态5秒后,自动断开(常用于门禁开门或自动喂食器)

注意resetpoint 命令的参数单位为毫秒(ms)。

3.4 实际对接示例

以下展示如何使用 curl 命令控制设备开启:

场景:控制设备ID为 820720 的设备开启灯光。

组合指令device = 820720order = {“power”: 1}

请求示例

正常情况下,设备会在 80-120ms 内响应并执行动作

4. 高级功能与场景应用

除了简单的开关,AC5-10A接口支持更复杂的逻辑控制,无需业务后台维护定时任务队列。

4.1 精准定时与自动化

接口支持“延时自动恢复”功能,这对于防止设备因忘记关断而造成的能源浪费非常实用。场景:控制排风扇通风,5分钟后自动关闭。指令{“point”: 300000} (通5分钟,断)该指令下发后,设备会立即吸合(开),300秒后自动断开(关),即使手机断网也不影响该时序逻辑

4.2 设备状态同步

虽然本文主要讲“下发控制”,但为了系统完整性,对接“消息推送”功能。当设备被物理按键按下或定时任务触发时,设备会主动向配置的服务器推送状态变更,确保App/Web端显示的开关状态与物理实体保持一致

5. 常见问题与排错

  • 签名错误(401)请检查时间戳是否为Unix秒级(非毫秒),并确认MD5结果为32位小写十六进制字符串

  • 设备离线(1002)*AC5-10A直连2.4G WiFi,请确保网络稳定且未连接5G频段*

  • 命令无响应确认 order 字段是否使用了正确的指令集。若无法确定是 power 还是 power1,请参照该设备的产品手册页面

通过以上步骤,开发者即可在10分钟内完成AC5-10A低压控制开关的API对接,实现远程继电器通断控制。如需对接入代码进行单元测试,可参考平台提供的代码示例模块