AC5-10A 是一款支持HTTP接口直控的智能通断器,无需网关即可接入WiFi。结合其开放API,你可以在控制通断的基础上,通过集成电能采集逻辑和闭环控制算法,实现“计量+控制”的二次开发。以下是具体方案:
一、 背景与目标
芯步 AC5-10A 电源控制模块(智能通断器)不仅具备基本的继电器开关控制功能,还支持电能计量(视具体型号,通常计量版支持电压、电流、功率统计)。该设备开放了标准的 HTTP API 接口,允许开发者绕过官方 App,将其集成到自有系统中。
目标实现对 AC5-10A 模块的 状态监测 和 能耗统计,并结合业务逻辑(如超限断电、定时任务、费用计算)进行自动化控制。
二、 核心技术架构
由于该模块直连 WiFi 且无需网关,二次开发架构通常采用 端-云-应用 的简化模式:
设备端:AC5-10A 模块(连接到 2.4G WiFi)。
云端接口:芯步开放 API (
api.thingboot.com)。开发端:你的业务服务器或云函数(负责调用 API 和逻辑处理)。
三、 二次开发关键步骤
1. 环境准备与接口鉴权
在开始编码前,需在芯步开发者后台获取密钥,这是接口调用的凭证。
AppID:应用唯一标识。
AppSecret:用于生成签名(Sign)。
设备 ID:AC5-10A 模块的唯一标识。
签名算法:官方接口为保障安全,通常要求携带
sign和ts(时间戳)。你需要根据官方文档的规则(通常是 MD5 或 HMAC-SHA256 对参数排序后加密)生成签名,或先在开发者后台开启 “调试模式” 以暂时忽略签名校验,方便快速测试。
2. 设备配网与连接
AC5-10A 模块首次使用时需要通过配网让其连接到你所在场所的 WiFi。
方式 A(软AP配网):设备上电后发射热点,手机/服务器连接该热点并发送路由器账号密码。
方式 B(一键配网/SmartConfig):通过广播包发送 WiFi 凭证。
注意:经测试,该模块仅支持 2.4GHz WiFi,不支持 5G 频段。
3. 核心功能接口调用解析
二次开发主要涉及以下三类接口,你可以用任何支持 HTTP 请求的语言(Python, Java, Node.js, PHP 等)调用。
第一种场景:获取实时能耗数据这是实现“计量”功能的核心。你需要向服务器请求当前设备的电参数。
目的:读取当前的瞬时功率、累计电量、电压、电流。
请求示例
GET https://api.thingboot.com/{AppID}/device/status?device={deviceId}&sign={sign}&ts={ts}返回数据解析
power:当前功率(W),用于判断设备是否在耗电。voltage:当前电压(V)。current:当前电流(A)。energy:累计用电量(kWh)。
第二种场景:继电器控制实现“控制”功能,即开/关电源。
指令
{"power":"1"}(开启),{"power":"0"}(关闭)。请求示例
POST https://api.thingboot.com/{AppID}/device/control/Body (JSON)
扩展控制:支持
point(先通后断)和reset(先断后通)等脉冲控制模式,这对于控制电机或服务器重启非常有用。
第三种场景:获取历史耗电数据用于生成报表或分析能耗趋势。
调用方式:通过查询数据接口,传入时间范围(如
start_date和end_date),获取该时间段内的总用电量或功率曲线。
四、 核心功能实现逻辑
以下为实现“实时能耗计量与断路器控制”的具体业务逻辑伪代码实现。
1. 轮询与数据入库
你需要建立一个定时任务(例如每分钟执行一次)来轮询设备状态。
2. “计量+控制”闭环应用
基于获取的计量数据,你可以实现高阶控制逻辑:
逻辑一:功率超限保护
需求:保护老旧线路,超过 2000W 自动断电。
实现:在服务器定时任务中判断
fetch_energy()中的power字段。若power > 2000,则调用control_device('{"power":"0"}')并发送告警通知。
逻辑二:无人自动关机
需求:检测到设备功率低于 5W(待机功耗)超过 10 分钟,判定为设备未使用,自动断电节能。
实现:缓存最近 10 次的功率数据,若均小于阈值,执行关闭指令。
逻辑三:精准计费
需求:针对共享充电桩、租赁设备场景。
实现:记录用户开始充电时的
start_energy(累计电量),结束时的end_energy,计算差值(end - start) * 电价,扣费后自动断电。
五、 负载管控策略示例
为了提供更全面的解决方案,以下是一段典型的逻辑控制策略表格,展示了如何结合计量数据与开关动作:
| 策略名称 | 触发条件(计量数据) | 执行动作(控制指令) | 适用场景 |
|---|---|---|---|
| 过载保护 | 实时功率 > 2200W | 立即断电 (power:0) | 防止线路过热起火 |
| 限时任务 | 设定的定时时间到 | 执行脉冲 (point:5000) | 热水器/饮水机定时加热 |
| 待机自动关机 | 功率 < 10W 持续超过 30分钟 | 断电 (power:0) | 办公室饮水机夜间节能 |
| 电量阈值 | 累计电量 >= 100度 | 断电且禁用重开 (power:0) | 宿舍/公寓电费管控 |
| 通讯异常处理 | API连续3次请求超时 | 维持前状态,触发告警 | 防止因网络丢包误判状态 |
六、 常见问题排查
接口返回“签名错误”
检查系统时间是否与标准时间同步(误差过大会导致 ts 无效)。
严格按照官方文档对参数进行 字典序排序 后再计算 MD5。
若为测试阶段,可在开发设置中直接开启 “调试模式” 跳过签名验证,专注于业务逻辑开发。
为什么读取的功率与实际不符
AC5-10A 对于感性负载(如电机、风扇)和阻性负载(如灯泡、加热管)的测量精度不同。如果是控制 LED 灯或节能灯,负载应小于 300W 才能保证计量较为准确,否则降额使用。
实时性不足
HTTP 请求模式为短连接,无法做到毫秒级即时通知。如果需要实时监测电压波动,可以缩短轮询间隔(如 2秒/次),但这会增加服务器压力。若需真正的实时推送,查阅官方文档是否支持 MQTT 协议 或 WebSocket。
通过以上步骤,开发者可以高效地完成对芯步 AC5-10A 模块的二次开发,构建从数据感知(计量)到智能决策(控制)的完整闭环系统。