芯步的5位分控插排(智能PDU)开放了HTTP接口,可以通过二次开发实现过流过载保护。核心思路是:持续读取功率数据 → 判断是否超阈值 → 触发断电命令。下面是一套完整的实现方案。
一、 搞清楚你的硬件能力
首先,确认你手头的是 智能PDU 5位分控 这款设备(型号通常为 UNI-PDU-FK-5)。
它有几个关键特点:
5路独立分控:每个插孔都可以独立开关,互不影响。
功率计量:能实时上报电压、电流、功率等数据。
开放接口:支持 HTTP 接口控制,任何编程语言都能调用。
二、 核心逻辑思路
我们不需要去修改设备内部的固件,而是用“外部脚本”来充当一个智能监护人的角色。
逻辑流程图:
采集:程序定时(比如每秒)去读取插排的实时功率。
判断:检查总功率(或单路功率)是否超过了预设的安全值(比如 2500W)。
动作:如果超了,立刻调用“关闭指定插孔”的接口。
恢复:关闭后可以发个警报,等人工确认或过一会儿再尝试开启。
三、 准备工作
在写代码之前,需要拿到三把“钥匙”:
注册账号:去芯步官网注册开发者账号。
添加设备:在控制台把插排配网,确保设备在线。
获取密钥:在控制台的“开发设置”里找到:
AppID:你的应用ID。
AppSecret:你的应用密钥(要保密)。
Device ID:插排的设备ID。
四、 核心接口分析
1. 获取实时功率(查询状态)
芯步的设备会上报状态。你可以通过查询接口获取当前功率值。
目标:拿到
power(总功率)或power1~power5(分路功率)字段。
2. 执行断电控制(下发命令)
这是最关键的指令。需要调用设备控制接口。
请求地址
https://api.thingboot.com/{AppID}/device/control/需要带上的签名
sign和ts(防止别人乱动你的设备)。控制命令示例
关闭第1路:
{"power1":0}关闭第2路:
{"power2":0}关闭全部:
{"power":0}(注意:不带数字的power代表总开关)。
五、 代码实战
这里用 Python 写一个简单的保护脚本为例。
第一步:先封装一个控制函数芯步的接口需要 md5(md5(AppSecret) + ts) 这种双重加密的签名方式。我们需要一个函数来生成请求头。
第二步:实现监控逻辑
每隔 2 秒读取一次插排状态。
如果 总功率 > 2500W(举例),就触发保护。
第三步:编写保护动作
打印报警日志。
调用关闭函数,比如关掉功率最大的那一路,或者直接全部断电。
这是一个简化版的逻辑思路,具体代码实现时需要重点关注:
关键点1:签名生成
芯步的接口安全性较高,使用 md5(md5(secret)+ts) 的签名机制。你必须严格按照官方文档的顺序拼接字符串,否则会报签名错误。注意 ts 是秒级时间戳。
关键点2:阈值不要设太满
插排是有额定功率的(通常是 2500W),但在实际代码中,设置一个 安全系数。
理论最大值:2500W
保护值:2200W(留出余量,防止瞬间波动)。
关键点3:分控与总控的区别
总控
power控制总闸。分控
power1控制第一个孔,power2控制第二个孔,以此类推。
如果你只想切断那个“吃电大户”,需要先通过功率查询接口看 power1 到 power5 哪个数值最大,然后单独发指令关那个。
六、 进阶玩法:软恢复与硬件自锁
总不能一过载就关掉,然后让人跑去机房按按钮吧?你可以在程序里增加 “自动重合闸” 逻辑(请请一定要确保安全的前提下使用):
第一次过载:立刻切断对应插座,记录过载时间。
延时等待:等待 30 秒。
尝试恢复:发送开启指令
{"power1":1}。再次判断:如果恢复后 1分钟内 再次过载,说明是真故障(比如设备短路了),这时候就 彻底锁死,不再尝试恢复,必须人工介入。
七、 部署
运行环境:只要能联网就行。可以跑在办公室的电脑上、树莓派上,甚至是云服务器上。
高可用性:如果你觉得电脑关机了就不安全,可以把这个脚本部署在 路由器(OpenWRT) 或者 NAS 里,保证 24 小时在线监控。
总结
利用芯步的开放接口做二次开发,最爽的一点就是它接口简单、反馈及时(据说从命令下发到执行仅 80-120ms),而且 API 定义清晰。只要写好那个“读数据 -> 比大小 -> 关电源”的循环,你的 5位分控插排就变成一个智能的“用电保险柜”了。如果在调试接口时遇到签名报错,请仔细检查时间戳的单位以及 MD5 加密的次序。