芯步的智能PDU开放了HTTP接口,这意味着你可以用自己的服务器或脚本直接控制每个插孔。要实现“过流自动断电”,核心思路就是:持续获取电流数据 → 判断是否超标 → 调用断电接口。
下面是一个比较详细的二次开发方案,我会尽量写得口语化一点,方便你理解。
一、 准备工作:让设备“上网”并找到“钥匙”
在写代码之前,需要先把硬件准备好,就像新电器拆箱要插电一样。
硬件上电与配网拿到芯步的5位分控PDU,先插上电。因为它是WiFi版本的,需要让它连上你办公室或机房的2.4G WiFi 。
操作路径:下载“芯步”小程序,或者登录他们的官网控制台。
步骤:在控制台里找到“网络配置”,输入WiFi密码,然后通过手机热点的方式(或者现在的蓝牙配网)把WiFi凭证推给PDU。看到设备状态变成“在线”,这第一步就搞定了。
获取API密钥(AppID/AppSecret)这是你写代码时的“身份证”,PDU得认你才听你话。
登录芯步控制台,进入“开发设置”。
你会看到
AppID和AppSecret。这里有两个小开启调试模式:刚开始开发时,在后台打开“调试模式”,这样暂时不用算复杂的签名(sign),先跑通流程再说 。
记录设备ID:在“设备列表”里找到你这台PDU,把它的一长串
设备ID复制下来,这就是你要控制的对象。
二、 核心逻辑:如何判断“过流”?
所谓的“过流自动断电”,其实就是写一段程序,模拟人的判断:“电流超过5A了?马上把那个插孔给我掐了!”
要实现这个,你需要用到两个接口:
获取设备状态(查询电流)
目的:实时读取当前5个插孔各自的电流值。
接口方法:通常是一个
POST请求,带上你的AppID和设备ID。响应数据:返回的JSON里会包含类似
"outlet_1_current": 2.3这样的字段,单位通常是安培。
控制分控开关(执行断电)
目的:给指定的插孔发送“关”指令。
接口形态:参考芯步的通用规范,请求地址通常有固定格式,比如
https://api.yoyoiot.com/ordercontrol/。命令参数:你需要告诉PDU关哪一个口。例如:
{"device_id": "xxx", "outlet": 3, "status": 0}(status: 0代表关,1代表开)。
三、 实战方案:写代码(Python示例)
这里用Python写一个简单的死循环脚本为例,你可以把它部署在树莓派、云服务器,甚至是你的办公室电脑上。逻辑不复杂,就是轮询。
四、 进阶与优化:让方案更可靠
如果你觉得上面的死循环脚本在断电或重启后就没了,或者想更专业一点,可以考虑下面几种方案:
部署在云端/本地服务器(Docker)你完全可以把这个Python脚本打包成一个Docker镜像,运行在办公室的NAS或者任何一台Linux服务器上。芯步的设备支持局域网本地控制,如果你的服务器和设备在同一个网段,可以不经过云端直接下发指令,延时几乎为零 。
利用Webhook/回调(推荐)一直在问“电流多少了?”其实挺费资源的(虽然HTTP请求还好)。更优雅的方式是利用芯步平台的规则引擎。
你可以在后台设置一个规则:“当
设备A的插孔3电流大于8A时,触发Webhook”。你的服务器只需要提供一个接收通知的接口。当PDU电流过大时,平台会自动调用你的接口,告诉你有异常了,你再通过API去断电。
好处:不用写轮询代码,响应更及时,且节省API调用次数。
故障隔离与重试机制参考华为PDU的设计理念,过流断开是为了保护设备 。
锁定机制:一旦因为过流断电,在你的程序里加一个
flag(标志位)。不要让它因为电流降下来了又自动通电,这样反复通断可能损坏设备。最好需要人工去后台确认故障排除后,再手动或者通过另一个接口恢复供电。
五、 总结
用芯步的PDU做二次开发,体验还是比较顺滑的,因为它的接口足够开放 。
核心代码:无非就是 Get(读电流) 和 Post(发指令) 两个动作。
部署:如果追求稳定,放在服务器上跑,利用好局域网控制功能。
你可以先拿着Postman(接口调试工具)测试一下开关指令,成功了再写代码。官方后台有10分钟对接指南,配合上面的逻辑,很快就能跑起来 。