AC1-10A这款智能通断器开放了HTTP接口,对接思路其实很清晰——就是“下发指令控制”+“接收推送感知状态”两步走。下面我把具体流程串起来讲,顺便附上代码片段和避坑点。
一、 我们到底要对接什么?(明确目标)
首先要清楚我们的对象——UNI-TDQ-AC1-10A。这玩意儿说白了就是一个支持 WiFi 的1-10A 智能通断器,也叫智能开关。
我们做对接的核心目的只有两个:
发指令:通过 HTTP 请求远程关掉它或打开它。
收消息:实时知道它是开还是关(这步是“监控”的关键)。
因为芯步的设备支持“消息推送”机制,状态变化会自动上报,所以我们不需要一直傻傻地“查”,等着它“喊”就行,实时性很高。
二、 准备工作:先“握手”一下
在写代码前,需要搞定三个“通行证”:
注册与创建:去芯步官网注册账号,创建一个“工作台”,进入“物联网控制台”。
拿钥匙(AppID & AppSecret):在控制台的“开发设置”里找到这两个东西。
AppID:像是你的“账号ID”。
AppSecret:像是你的“密码”,千万别放前端。
给设备联网:用他们提供的小程序给 AC1-10A 配网,确保它在控制台里显示“在线”。
三、 核心方案:如何下发控制指令?
AC1-10A 最常用的场景就是远程开关。接口地址是:https://api.thingboot.com/{你的AppID}/device/control/?sign={签名}&ts={时间戳}
1. 签名机制(避坑重点)
很多人在签名 (Sign) 这步会晕,这里用大白话解释一下。签名是为了防止接口被别人乱刷。算法规则是:Sign = md5( md5(AppSecret) + ts )
“拆解步骤”如下:
先把你的 AppSecret 做一次 MD5 加密,得到字符串
A。把当前的时间戳(秒级,例如 1698800000)拼接到
A的后面,得到Ats。再把
Ats整体做一次 MD5 加密,出来的结果就是 Sign。
2. 控制代码示例(很直白)
假设我们要关闭开关(因为很多时候监控是为了防止忘关),使用 POST 请求,Body 格式为 JSON
device:就是控制台里那个纯数字的 ID。order:核心指令。{“power”: 1}代表开,{“power”: 0}代表关。
命令行测试(curl) 大概长这样(需替换实际参数):
如果返回 {“code”: 200},说明指令下发成功,设备会“咔哒”一声响,立马断电。
四、 核心方案:如何监控运行状态?
如果只是控制,那不叫监控。我们需要实时感知状态。AC1-10A 支持上行消息推送。
1. 原理
设备状态一变(比如有人按了模块上的物理按键,或者电流异常断电了),云端会立刻往你设定好的服务器地址(URL)推一条消息。
2. 配置接收地址
在物联网控制台的“开发设置”里,找到“消息推送 URL”,填入你的服务器接口地址,例如 https://yourdomain.com/api/device/callback。
3. 接收数据的处理(后端示例)
当设备状态变化时,你的接口会收到一个 POST 请求,Body 内容大概是这样的
你需要在你的服务器代码里做这几件事:
接收请求:写一个 API 接口接收这个 JSON。
验签(可选):防止假数据冒充,校验一下消息来源。
解析数据:读取
message.data[0].power的值。业务处理:把这个“开/关”状态存到你的数据库,或者在前端页面上实时刷新显示(比如亮一个绿灯图标)。
五、 方案进阶与避坑指南
1. 200 不等于成功!
调用接口返回 code: 200,只代表云端收到了指令,不代表设备真的执行了。如果设备正好断网,你也会收到 200,但设备没反应。所以监控要以“消息推送”收到的状态为准。
2. 设备离线了怎么办?
如果设备掉线,你发指令它收不到,消息推送也不会发(因为没有状态变化)。:在控制台查看设备最后上线时间,或者结合心跳机制,如果超过 5 分钟没收到设备消息,系统就判定设备离线,并告警。
3. 私有化部署(局域网)
如果你担心数据走外网太慢,或者工厂没外网,AC1-10A 其实还支持软网关模式。它可以在局域网内广播,你的系统直接通过内网 IP 调用它,不走云平台。
六、 总结
对接 AC1-10A 其实就两层:
控制层:拿着 AppID 算签名,发 POST 指令给云端,云端下发给设备。
监控层:搭好 HTTP 接口等着,设备状态变了云端会主动给你“打电话”通知。
按照这个方案,你不仅能控制它开关,还能实时知道设备到底是开着还是关着,甚至能统计运行时长。如果对接过程中遇到签名报错,记得检查一下时间戳是不是精确到秒(不是毫秒),以及 AppSecret 是不是被多余的空格干扰了。