40A带计量断路器的二次开发,说白了就是“怎么用代码把用电数据读出来,把开关控制住”。芯步的设备走的是HTTP接口,不需要网关,WiFi直连,上手挺快的。
一、这玩意儿能干啥?
简单说,这就是一个能远程控制、能实时监测电量的空气开关。
对于开发者来说,这货是一个WiFi物联网设备,你可以通过HTTP接口:
读取数据:实时看电压、电流、功率、累计用电量。
控制开关:远程合闸(开)、远程分闸(关)、重启。
接收告警:过载、超压、欠压了,它能主动告诉你。
二、准备工作
在写代码之前,需要去芯步的控制台做三件事,这三件事搞定了后面就顺了:
拿钥匙(AppID 和 AppSecret):登录控制台,在“开发设置”里找到。这是调用接口的身份证,AppID是账号,AppSecret是密码(要保密)。
看编号(设备ID):在设备列表里找到你要调试的那台40A断路器,记下那串数字ID。发给设备指令全靠这个ID。
联网:给断路器通上电,用官方App或者配网模式,把WiFi密码告诉它(它只支持2.4G WiFi)。
三、核心难点:签名计算
这是唯一稍微有点绕的地方。芯步的接口为了安全,不是裸奔调用,得验明正身。
简单来说就是:把密码(AppSecret)加上当前时间戳,混合搅乱,算出一串唯一的暗号(Sign)。
公式(官方给的):Sign = md5( md5(AppSecret) + ts )
举个例子,假设你的密码是abc123,当前时间是1714512000
先算
md5("abc123"),假设结果是xxxxx。把上面那个结果拼接上时间戳:
xxxxx1714512000。再算一次MD5:
md5("xxxxx1714512000"),最终得到Sign。
注意:时间戳(ts)是秒级(10位数字)的,前后时间差不能太大,不然服务器会认为签名过期了(bad sign)。
四、怎么读取电压电流功率?(计量监测重点)
40A带计量版的断路器,在官方定义里通常有metering(计量)或直接读取voltage、current、power的功能。
虽然控制命令通常是{"power":1}这种格式,但读取实时数据通常不需要你主动发“读”命令。在芯步的架构里,更常见的两种拿数据方式:
设备主动上报(推荐):设备会每隔几秒自动把电压、电流、功率推送到芯步的云端。你需要做的就是搭建一个接收服务器(Webhook),让平台把数据POST给你。
主动查询(拉取):直接通过HTTP接口查设备状态。
针对计量功能,你关心的核心字段通常叫:
电压
voltage(单位:V)电流
electric current或current(单位:A,40A量程)功率
power(单位:W或kW)电量
energy或kwh(度)
五、实战:用代码跑起来
既然是要“二次开发”,我们就得自己写逻辑。这里用Python举个栗子,因为最直白。逻辑是通用的,你用PHP、Go、Node.js都一样。
1. 计算签名函数
2. 下发控制命令(通/断)
比如你想关掉这台断路器(假设设备ID是 123456789),可以这样写:
3. 读取计量数据(拿电流电压)
假设官方开放了查询设备状态的接口(如 /device/info/ 或类似路径,具体看产品手册),逻辑类似:
六、更高级的玩法:私有化部署(局域网)
如果你不想数据经过芯步的云服务器,想在自己公司的内网跑,这设备也支持。它在联网的时候可以配置成连接你自己的服务器,而不是连接官方云。
这时候,你写的代码就是服务器了。设备会把数据POST到你指定的IP地址,你只需要写一个简单的Flask/Django接口接收就行:
七、总结
二次开发这个40A断路器,核心就三步:
搞定签名(Sign):把
AppSecret和时间戳混在一起加密,这是所有接口调用的通行证。搞定读取:如果是做大屏展示,用设备主动上报模式(搭建Webhook接收)最省事,数据实时更新;如果只是偶尔看一眼,用接口拉取。
搞定控制:向
/device/control/接口POST一条{"power":1}的命令,就能把几千瓦的电器关了。
唯一需要注意的是,控制命令通常没有直接返回电压电流,电压电流通常在上报数据里,别在控制接口的返回值里找数据就行。