CATALOG

AC3-10A这款物联网计重器(实际是智能通断器)的开放接口走的是标准的HTTP协议,签权逻辑也比较固定,接入门槛不高。下面我按“准备-签名-下发”这条主线,把远程参数配置的完整流程串起来说清楚。

一、认识主角:AC3-10A 能做什么?

首先我们要搞清楚手里这个硬件到底是什么。虽然问题里写的是“物联网计”,但根据芯步的官方资料,它真正的型号是 智能通断器 AC3-10A(计量版)

你可以把它理解成一个可以远程开关、并且能看电表读数的智能插座的内核。它主要有这几个本事:

  1. 远程开关:通过API控制电路的通断(就是那个最简单的power命令)。

  2. 电能量计量:既然是“计”,它肯定能读取电压、电流、功率等数据。

  3. 参数配置:这一点对于远程管理很重要。你可以通过接口去设置它的安全功率阈值——比如如果用电设备功率超过2500W,让它自动跳闸,防止起火

  4. 连接方式:它自带Wi-Fi(只用2.4G),不需要额外的网关,直接连路由器就行

二、准备工作:找到开门的钥匙

在写代码之前,需要先去芯步的后台拿两样东西,就像进门前得有门禁卡和钥匙:

  1. 获取 AppID 和 AppSecret

    • 登录芯步的控制台。

    • 在“开发设置”里找到 AppID(相当于你的账号ID)和 AppSecret(相当于密码,注意保密

  2. 获取设备ID

    • 先把AC3-10A通上电,用手机配网,让它连上互联网。

    • 在控制台的设备列表里,找到这台设备,复制它的 Device ID(就是一串数字,比如 1878

  3. 搞清楚你要发什么命令

    • 既然是“参数配置”,AC3-10A 支持修改一些内部设置。比如设置过载保护阈值,通常命令格式类似 {"power":"value"} 或者特定的计量设置参数。具体有哪些参数可以配,可以在产品的“产品手册”页面的“支持命令”部分找到

三、核心难点与解法:签名(Sign)怎么算?

芯步的接口为了保证安全,没有用复杂的OAuth,而是用了一种自定义签名的方式。这是整个接入过程中比较容易搞错的地方,不过道理不复杂。

规则是这样的:sign = md5( md5(AppSecret) + ts )

拆解一下这个公式:

  • 第1步:把你刚才拿到的 AppSecret 进行MD5加密,得到一串32位的字符串(记作 str1)。

  • 第2步:获取当前的Unix时间戳(单位是秒,比如 1715678900,记作 ts)。

  • 第3步:把 str1ts 拼起来(直接拼接,比如 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也支持私有化部署

这里有两种模式,看你的需求:

  1. 完全私有化(自建MQTT Broker)

    • 你需要自己搭一个消息服务器(Broker)。

    • 然后通过友物提供的“私有化热点配置”方式,把AC3-10A配置成连接你的服务器,而不是友物的云

    • 这样设备就完全脱离公网了,但代价是你得自己处理设备管理和数据存储。

  2. 局域网直连(不走云端转发)

    • 如果你只是在同一个局域网内(比如办公室的电脑控制办公室的灯),想更快一点。

    • 你可以通过路由映射,或者直接调用AC3-10A本地的HTTP服务(如果它在局域网里开放了接口),但这种方式通常需要在路由器层面做处理

六、总结与排坑指南

写到最后,给你几点,能少走弯路:

  1. 小心时间戳(ts):你的服务器时间和官方时间不能差太多,官方文档虽然没明确说要精确到秒,但通常误差超过几分钟签名就会失效。如果签名一直不对,先查时间。

  2. 注意响应码:调用接口返回 200不代表设备执行成功了! 200 只代表平台收到了指令。如果设备没反应,要去检查设备是不是离线了(没电了或者Wi-Fi断了),或者命令格式虽然对了,但参数值超出了设备允许范围。

  3. 计量版的特殊性:确认你手上的是“-P”结尾的计量版,因为只有计量版才支持读取电压电流和设置功率阈值。普通版只能控制通断,没什么参数可配的

  4. 安全性AppSecret 千万别写死在网页前端代码里,很容易被别人扒走。请一定要放在你自己的后端服务器调用。