CATALOG

40A带计量断路器的二次开发,说白了就是“怎么用代码把用电数据读出来,把开关控制住”。芯步的设备走的是HTTP接口,不需要网关,WiFi直连,上手挺快的。

一、这玩意儿能干啥?

简单说,这就是一个能远程控制、能实时监测电量的空气开关。

对于开发者来说,这货是一个WiFi物联网设备,你可以通过HTTP接口:

  1. 读取数据:实时看电压、电流、功率、累计用电量。

  2. 控制开关:远程合闸(开)、远程分闸(关)、重启。

  3. 接收告警:过载、超压、欠压了,它能主动告诉你。

二、准备工作

在写代码之前,需要去芯步的控制台做三件事,这三件事搞定了后面就顺了:

  1. 拿钥匙(AppID 和 AppSecret):登录控制台,在“开发设置”里找到。这是调用接口的身份证,AppID是账号,AppSecret是密码(要保密)。

  2. 看编号(设备ID):在设备列表里找到你要调试的那台40A断路器,记下那串数字ID。发给设备指令全靠这个ID。

  3. 联网:给断路器通上电,用官方App或者配网模式,把WiFi密码告诉它(它只支持2.4G WiFi)。

三、核心难点:签名计算

这是唯一稍微有点绕的地方。芯步的接口为了安全,不是裸奔调用,得验明正身

简单来说就是:把密码(AppSecret)加上当前时间戳,混合搅乱,算出一串唯一的暗号(Sign)。

公式(官方给的):Sign = md5( md5(AppSecret) + ts )

举个例子,假设你的密码是abc123,当前时间是1714512000

  1. 先算 md5("abc123"),假设结果是 xxxxx

  2. 把上面那个结果拼接上时间戳:xxxxx1714512000

  3. 再算一次MD5:md5("xxxxx1714512000"),最终得到Sign。

注意:时间戳(ts)是秒级(10位数字)的,前后时间差不能太大,不然服务器会认为签名过期了(bad sign)。

四、怎么读取电压电流功率?(计量监测重点)

40A带计量版的断路器,在官方定义里通常有metering(计量)或直接读取voltagecurrentpower的功能。

虽然控制命令通常是{"power":1}这种格式,但读取实时数据通常不需要你主动发“读”命令。在芯步的架构里,更常见的两种拿数据方式:

  1. 设备主动上报(推荐):设备会每隔几秒自动把电压、电流、功率推送到芯步的云端。你需要做的就是搭建一个接收服务器(Webhook),让平台把数据POST给你。

  2. 主动查询(拉取):直接通过HTTP接口查设备状态。

针对计量功能,你关心的核心字段通常叫:

  • 电压voltage(单位:V)

  • 电流electric currentcurrent(单位:A,40A量程)

  • 功率power(单位:W或kW)

  • 电量energykwh(度)

五、实战:用代码跑起来

既然是要“二次开发”,我们就得自己写逻辑。这里用Python举个栗子,因为最直白。逻辑是通用的,你用PHP、Go、Node.js都一样。

1. 计算签名函数

2. 下发控制命令(通/断)

比如你想关掉这台断路器(假设设备ID是 123456789),可以这样写:

3. 读取计量数据(拿电流电压)

假设官方开放了查询设备状态的接口(如 /device/info/ 或类似路径,具体看产品手册),逻辑类似:

六、更高级的玩法:私有化部署(局域网)

如果你不想数据经过芯步的云服务器,想在自己公司的内网跑,这设备也支持。它在联网的时候可以配置成连接你自己的服务器,而不是连接官方云。

这时候,你写的代码就是服务器了。设备会把数据POST到你指定的IP地址,你只需要写一个简单的Flask/Django接口接收就行:

七、总结

二次开发这个40A断路器,核心就三步:

  1. 搞定签名(Sign):把AppSecret和时间戳混在一起加密,这是所有接口调用的通行证。

  2. 搞定读取:如果是做大屏展示,用设备主动上报模式(搭建Webhook接收)最省事,数据实时更新;如果只是偶尔看一眼,用接口拉取

  3. 搞定控制:向/device/control/接口POST一条{"power":1}的命令,就能把几千瓦的电器关了。

唯一需要注意的是,控制命令通常没有直接返回电压电流,电压电流通常在上报数据里,别在控制接口的返回值里找数据就行。