AC3-10A这款物联网计重器(实际是智能通断器)的开放接口走的是标准的HTTP协议,签权逻辑也比较固定,接入门槛不高。下面我按“准备-签名-下发”这条主线,把远程参数配置的完整流程串起来说清楚。
一、认识主角:AC3-10A 能做什么?
首先我们要搞清楚手里这个硬件到底是什么。虽然问题里写的是“物联网计”,但根据芯步的官方资料,它真正的型号是 智能通断器 AC3-10A(计量版)。
你可以把它理解成一个可以远程开关、并且能看电表读数的智能插座的内核。它主要有这几个本事:
远程开关:通过API控制电路的通断(就是那个最简单的
power命令)。电能量计量:既然是“计”,它肯定能读取电压、电流、功率等数据。
参数配置:这一点对于远程管理很重要。你可以通过接口去设置它的安全功率阈值——比如如果用电设备功率超过2500W,让它自动跳闸,防止起火。
连接方式:它自带Wi-Fi(只用2.4G),不需要额外的网关,直接连路由器就行。
二、准备工作:找到开门的钥匙
在写代码之前,需要先去芯步的后台拿两样东西,就像进门前得有门禁卡和钥匙:
获取 AppID 和 AppSecret
登录芯步的控制台。
在“开发设置”里找到
AppID(相当于你的账号ID)和AppSecret(相当于密码,注意保密)。
获取设备ID
先把AC3-10A通上电,用手机配网,让它连上互联网。
在控制台的设备列表里,找到这台设备,复制它的
Device ID(就是一串数字,比如1878)。
搞清楚你要发什么命令
既然是“参数配置”,AC3-10A 支持修改一些内部设置。比如设置过载保护阈值,通常命令格式类似
{"power":"value"}或者特定的计量设置参数。具体有哪些参数可以配,可以在产品的“产品手册”页面的“支持命令”部分找到。
三、核心难点与解法:签名(Sign)怎么算?
芯步的接口为了保证安全,没有用复杂的OAuth,而是用了一种自定义签名的方式。这是整个接入过程中比较容易搞错的地方,不过道理不复杂。
规则是这样的:sign = md5( md5(AppSecret) + ts )
拆解一下这个公式:
第1步:把你刚才拿到的
AppSecret进行MD5加密,得到一串32位的字符串(记作str1)。第2步:获取当前的Unix时间戳(单位是秒,比如
1715678900,记作ts)。第3步:把
str1和ts拼起来(直接拼接,比如str1+ts),得到一个更长的字符串。第4步:把这个拼接后的字符串再次进行MD5加密。最后得到的才是
sign。
通俗理解:服务器要验证两件事——一是你密码对不对(通过AppSecret),二是这个请求是不是现在发的(通过ts时间戳)。双重MD5是为了防止别人把你的密码直接抓包抓走。
四、实战操作:下发配置与读取数据
一旦你把上面的签名算法跑通了,剩下的就很简单了——就是一个标准的HTTP POST请求。
请求地址https://api.thingboot.com/{你的AppID}/device/control/
需要携带的参数(在URL里):
sign:刚刚算出来的签名。ts:你刚刚用来算签名的时间戳。
请求体(Body) :
假设现在夏天到了,怕空调功率太大导致电线过热,我要把AC3-10A的功率限制参数改成 2500W(注:具体字段名需查阅手册,这里以metering示例,实际可能是max_power之类的)。
注:order 里面传的是 JSON 字符串,所以要记得转义双引号。
如何读取当前参数?通常读取数据也是通过类似接口,可能是发送查询命令,或者通过物模型(影子)直接读取。对于计量的数据(比如现在的电压、电流),直接发送获取数据命令就行,设备会返回实时数值。
五、进阶一点:私有化部署与局域网控制
如果你想把数据完全留在自己的服务器上,不想走友物的云,AC3-10A也支持私有化部署。
这里有两种模式,看你的需求:
完全私有化(自建MQTT Broker) :
你需要自己搭一个消息服务器(Broker)。
然后通过友物提供的“私有化热点配置”方式,把AC3-10A配置成连接你的服务器,而不是友物的云。
这样设备就完全脱离公网了,但代价是你得自己处理设备管理和数据存储。
局域网直连(不走云端转发) :
如果你只是在同一个局域网内(比如办公室的电脑控制办公室的灯),想更快一点。
你可以通过路由映射,或者直接调用AC3-10A本地的HTTP服务(如果它在局域网里开放了接口),但这种方式通常需要在路由器层面做处理。
六、总结与排坑指南
写到最后,给你几点,能少走弯路:
小心时间戳(ts):你的服务器时间和官方时间不能差太多,官方文档虽然没明确说要精确到秒,但通常误差超过几分钟签名就会失效。如果签名一直不对,先查时间。
注意响应码:调用接口返回
200,不代表设备执行成功了!200只代表平台收到了指令。如果设备没反应,要去检查设备是不是离线了(没电了或者Wi-Fi断了),或者命令格式虽然对了,但参数值超出了设备允许范围。计量版的特殊性:确认你手上的是“-P”结尾的计量版,因为只有计量版才支持读取电压电流和设置功率阈值。普通版只能控制通断,没什么参数可配的。
安全性
AppSecret千万别写死在网页前端代码里,很容易被别人扒走。请一定要放在你自己的后端服务器调用。