针对芯步AC1-10A智能通断开关,实现“过流自动断电”的二次开发,核心逻辑是轮询获取电流数据 -> 阈值判断 -> 调用断电接口。由于设备本身可能不具备边缘计算能力(即本地直接执行阈值判断),这个逻辑通常需要在你的云端服务器或本地网关中实现。
以下是具体的解决方案:
一、 二次开发设计
为了实现自动控制,采用基于事件驱动的云函数或本地服务架构。整个流程不依赖人工干预,完全由代码逻辑触发。
sequenceDiagram
participant App as 你的应用服务器
participant IoT as 芯步云平台
participant Device as AC1-10A设备
loop 轮询机制
App->>IoT: 请求实时状态/电量数据
IoT->>Device: 获取瞬时电流
Device-->>IoT: 返回电流值
IoT-->>App: 返回数据
end
alt 电流超过阈值(如>10A)
App->>IoT: 下发断开命令(order: power=0)
IoT->>Device: 执行断开
Device-->>App: 返回执行结果
Note over App: 记录日志并发送告警
else 电流正常
Note over App: 继续监测
end二、 核心技术实现步骤
AC1-10A的开放能力主要集中在HTTP API和消息推送两方面。实现过流保护,推荐以下两种技术路径:
方案 A:主动轮询方案
适合简单的脚本或低频控制场景。你的服务器定期向设备请求当前状态。
获取实时数据:调用查询设备状态的API,解析返回报文中的电流字段。
逻辑判决:将获取到的浮点数电流值与预设的安全阈值(例如 8A 或 9A)进行比较。
执行断电:若连续 N 次检测到过流,调用控制接口断开电路。
方案 B:异步消息推送方案 —— 推荐
AC1-10A 支持类似微信公众号的消息机制,当设备状态变化或数据上报时,会实时推送到你指定的 URL。这种方式延迟最低,且不需要处理复杂的轮询逻辑,更加符合工程规范。
配置回调接口:在你的服务器上配置一个 HTTP 接口(例如
/webhook/device_callback),并在芯步控制台中将其设置为消息接收 URL。解析数据包:当电流发生变化时(例如负载设备启动),芯步会主动将 JSON 数据包 POST 到你的接口,其中包含
current或power相关字段。触发防护
接口收到数据 -> 提取电流值。
判断
if current > 10.0。满足条件 -> 反向调用 API 执行
power=0命令。
三、 接口调用与签名详解
无论采用哪种方案,调用 API 是核心。根据官方文档,你需要处理动态签名机制来保证安全性。
1. 关键凭证与签名生成
你需要准备 AppID 和 AppSecret。签名生成算法是:Sign = md5( md5(AppSecret) + ts )。
步骤1:将 AppSecret 进行一次 MD5 加密,得到
Secret_MD5。步骤2:将
Secret_MD5与当前 Unix 时间戳(秒)拼接成字符串。步骤3:对拼接后的字符串再次进行 MD5 加密,得到最终的 Sign。
2. 断电指令下发示例
当你判定电流超标时,需要向设备发送以下指令:
请求地址
https://api.thingboot.com/{AppId}/device/control/请求方法
POST查询参数
sign={YourSign}&ts={当前时间戳}请求体
(注意:
power:1代表接通,power:0代表断开)
四、 代码伪代码样例
以下是一段运行在你服务器上的核心逻辑 Demo:
五、 部署和需要注意的点
部署位置:为了降低延迟,你的后端服务部署在具有稳定公网 IP 或域名的云服务器上(如阿里云/腾讯云 ECS),确保能稳定调用芯步的 API。
防抖处理:在代码逻辑中加入“去抖动”处理。例如,连续 2 次检测到过流才断电,或者断电后设置 30 秒冷却期,防止设备因电机启动瞬间的浪涌电流而误跳闸。
断电自锁:实现自动断电后,你可以设计逻辑:如果不人工介入(或等待特定延时后),不要自动尝试重新接通,以保护后端负载设备的安全。
日志记录:请一定要记录每次因过流跳闸的时间、电流峰值和恢复时间,方便后续排查是设备故障还是线路过载。
通过上述方案,你可以高效地将普通开关升级为具备智能保护功能的断路器。