CATALOG

芯步的AC1智能通断器通过HTTP接口开放控制能力,可以像调用普通API一样集成到任意软件项目中。以下是完整的对接方案,涵盖接口协议、签名算法、核心代码实现和典型场景应用。

1. 解决概述

1.1 产品核心特性

AC1智能通断器(型号:UNI-TDQ-AC1-10A)是一款支持WiFi直连的单路交流继电器模组,其核心价值在于将传统的220V交流电路转化为可编程控制的“智能开关”

  • 接口协议:全开放HTTP API,无SDK依赖,支持Java、Python、PHP、Go、C#等任何支持HTTP协议的语言。

  • 网络要求:仅支持2.4G WiFi,无需网关,支持局域网直连和公网远程控制。

  • 负载能力:10A-16A额定电流,可直接控制2200W-3500W以下的电器设备(如照明、电机、插座)。

  • 部署模式:支持公有云调用,也支持私有化部署(纯局域网环境)

1.2 架构拓扑

在软件集成中,系统架构通常分为三层:

  1. 设备层:AC1智能通断器,连接现场电器。

  2. 云平台层:芯步开放平台(API网关),负责设备鉴权与指令转发。

  3. 应用层:你的业务系统(Web/App/小程序),通过HTTP请求调用接口。

2. 核心对接流程与鉴权机制

要实现对AC1通断器的控制,首先需要处理平台的鉴权逻辑。芯步采用 Sign 签名认证模式,所有API请求均需携带签名以防止伪造

2.1 准备必要参数

在芯步控制台(ThingBoot Console)获取以下凭证:

  • AppID:应用唯一标识,通常在URL路径中直接使用。

  • AppSecret:开发者密钥,用于加密生成签名,严禁直接暴露在前端代码中

  • Device ID:设备的唯一ID,配网后可在控制台查看。

2.2 签名算法(核心)

签名生成规则如下:Sign = MD5( MD5(AppSecret) + ts )

  • 步骤:先将 AppSecret 进行MD5哈希;再将该哈希值与当前Unix时间戳拼接;最后对整个拼接字符串进行MD5加密

  • 防重放攻击:参数中包含 ts(时间戳),服务器会校验时间戳的有效性(通常允许5分钟内偏差)。

示例代码(Python):

3. 关键接口实现详解

AC1通断器主要涉及两个核心动作:下发控制指令接收状态反馈

3.1 控制设备通断(单路控制)

这是最基础的功能,用于远程开关灯或电机。

  • 请求URLPOST https://api.thingboot.com/{AppID}/device/control/

  • Query参数sign={签名}&ts={时间戳}

  • HeaderContent-Type: application/json

  • Body参数

    • device:设备ID(字符串类型)。

    • order:指令JSON对象。对于AC1设备,{"power": 1} 代表开启,{"power": 0} 代表关闭

cURL 调用示例:

3.2 高级指令:脉冲控制(先通后断)

在实际场景中(如按一下门铃、触发道闸),往往需要“通电1秒后自动断电”,即脉冲控制芯步接口原生支持此逻辑,无需客户端做定时任务

  • 指令:使用 point 字段。

  • 参数relay 指定线路(AC1为单路,即为1),interval 指定毫秒数。

  • 示例:闭合1秒后自动断开。

3.3 接收设备状态回调(消息推送)

设备状态(如被人手动按下机身按钮、或断电重启)需要同步到你的软件后台。AC1支持状态主动上报机制,类似于Webhook

  • 配置:在控制台“开发设置”中配置 Callback URL

  • 机制:当设备状态发生变化时,平台会向你的服务器 Callback URL 发送POST请求,携带设备ID和当前状态。

  • :你的接收端接口需要做好去重和签名验证,确保消息来源合法。

接收到的回调数据示例:

4. 实战:集成到软件项目中

由于接口基于HTTP,无论你是前端(通过后端代理)还是后端开发,均可轻松集成。以下以 Node.jsJava 为例展示封装思路。

4.1 封装通用控制类

在后端封装一个 IoTService 类,统一处理签名生成和请求发送。

逻辑流程图:

  1. 输入:设备ID,控制命令(开/关/脉冲)。

  2. 处理:调用签名算法生成 SignTs

  3. 请求:构造HTTP Client发起POST请求。

  4. 返回:解析芯步返回的JSON结果。

Node.js 封装示例:

4.2 对接注意点

  1. 跨域问题:由于api.thingboot.com通常不配置前端跨域头,绝对禁止在浏览器端直接调用此API(会暴露AppSecret且存在跨域拦截)。必须在你的后端服务器调用

  2. 超时重试:在WiFi信号弱的地带,指令下发可能延迟。设置Timeout(如5秒),并在业务层做重试机制(通常重试3次)。

  3. 设备离线处理:接口返回可能会提示设备离线,你的软件应展示“设备离线”状态,而非直接提示“控制失败”。

5. 典型应用场景分析

第一种场景:共享/租赁设备管理(如自习室、充电桩)

痛点:用户使用结束后需手动断电,管理员无法远程复位。方案

  • 在订单结束回调中,调用AC1控制接口 {"power": 0} 强制断电。

  • 利用脉冲控制实现“先断后通”(Reset)功能:{"reset":{"relay":[1],"interval":1000}}(断开1秒后重新上电),用于远程重启死机的共享设备

第二种场景:环境监测联动(传感器+通断器)

痛点:仓库温度过高需要自动打开排风扇。方案

  • 芯步平台支持内部联动,即在云平台配置规则(如:温度传感器>40度,触发AC1通断器闭合)。

  • 如果你的业务逻辑极其复杂,可通过消息推送将传感器数据实时接收至你的服务器,由你的业务逻辑判断后,再调用AC1接口执行动作

总结

通过标准的HTTP API,芯步AC1智能通断器可以作为一个“网络可控继电器”无缝嵌入你的软件生态。开发者只需重点关注 签名算法业务逻辑层面的防抖处理 ,无需关心底层无线协议的复杂性。先使用芯步控制台中的“调试模式”(关闭签名校验)进行快速验证,确认设备响应正常后,再集成签名逻辑投入生产环境