芯步的这款PDU最讨喜的地方就是接口开放、文档干净——直接走HTTP就能控制,不用折腾什么复杂的网关或私有协议。
下面我把整个“二次开发”的流程捋了一遍,从拿到设备到最终跑通代码,希望能帮你少踩几个坑。
一、 搞清楚你的设备:分控还是总控?
在动手写代码之前,咱们得先确认一下你手上的设备是哪一种。芯步的8位PDU主要有两种,接口虽然一样,但控制逻辑稍有不同:
8位分控:这是最常用的。8个孔位可以独立控制,想开第3路就开第3路,关第5路就关第5路,互不干扰。适合需要单独重启某台服务器的场景。
8位总控:只能整体控制。虽然插了8个设备,但一关全关,一开全开。适合只需要统一断电或送电的场景。
从“折腾”的角度来说,分控的可玩性最高。我们今天的方案也是围绕分控来展开的,因为总控其实就是把“8个按钮”变成了“1个开关”,逻辑上更简单。
二、 核心思路:一句话的事儿
芯步没有搞私有SDK(软件开发工具包)或者复杂的加密库,它的原理极其简单:
你(你的服务器) —— 发一个HTTP请求(带密码) ——> 芯步云 ——> 转发给 ——> PDU(执行动作)
只要你的设备能联网(配网流程产品手册里有,用小程序或者电脑后台配好Wi-Fi),只要你的电脑能上网,用任何编程语言(Python, Java, PHP, 甚至是命令行curl)都能控制它。
三、 准备工作:找到你的“钥匙”
在写代码前,我们需要先拿到三样东西,这相当于你控制设备的“账号密码”。
AppID(应用ID):注册芯步账号后,在“物联网控制台”里找到你的应用ID。
AppSecret(应用密钥):这个跟ID是一对,注意保密,生成签名用的。
Device ID(设备ID):把你的PDU添加到控制台后,设备列表里会有一个唯一的设备编号。
四、 签名机制(重要!)
芯步的接口为了安全,要求在请求里带上一个签名(sign)。很多人在这一步会被劝退,其实没那么复杂。我们不需要自己从零写加密算法。
通常芯步会提供“签名生成示例代码”,直接复制粘贴就行。如果找不到,逻辑如下(以分控PDU为例):
我们要开第1路插座,需要生成一个字符串,一般是把 AppID + DeviceID + 时间戳 + 密钥 混在一起算MD5(信息摘要算法)。
不用纠结算法,我们看怎么用。
五、 实战演练
假设我们要写一个Python脚本,用来远程重启连接在第1口上的路由器。
第一步:找到接口地址
根据分控PDU的手册,控制接口大概是这样的(具体路径请查阅最新PDF):
https://api.yoyoiot.com/orderpdu/control
第二步:准备参数
我们需要告诉服务器:你是谁?你要控制谁?你要干什么?
第三步:撸起袖子写代码
这里我写一段很直白的Python代码,你复制保存成 control_pdu.py 就能跑(记得先安装requests库)。
注意:上面代码中的签名拼接逻辑是我推测的常见写法,实际开发时请请一定要对照芯步官方的《接口文档》中的“签名算法”章节来微调,别直接复制粘贴就以为完事了。
第四步:进阶玩法(定时任务)
既然代码能跑,那我们就可以玩点花的了。
场景:每天晚上2点,自动关闭所有测试设备,省电。
这时候不需要写死循环,利用你操作系统的定时任务就行。
Windows任务计划程序:把
control_pdu(1, "off")保存成一个脚本,设置每天02:00触发。Linux Crontab(定时任务)编辑终端,输入
crontab -e,加入一行:0 2 * * * /usr/bin/python3 /home/pi/control_pdu.py(这行代码的意思就是:每天凌晨2点,系统自动帮你跑一遍Python关电脚本)
六、 避坑指南
在开发过程中,有几个小问题可能会让你卡住,提前做个心理准备:
Wi-Fi频段:芯步的这款PDU只支持2.4G Wi-Fi。如果你的路由器是双频合一的,最好在手机App里把2.4G和5G分开,用2.4G去配网,不然设备可能连不上。
签名失败:这是新手最容易遇到的问题。返回“sign invalid”。
检查时间戳:你的服务器时间不能和真实时间差太多(一般不能超过5分钟)。
检查编码:参数里尽量不要有中文,如果有,注意统一UTF-8编码。
频繁控制:PDU内部的继电器是机械结构,频繁(比如每秒好几次)开关可能会缩短寿命。记得在代码里加个
time.sleep(1)或者限制调用频率,别让它“抽搐”。IP变更:如果你们公司网络环境比较复杂,PDU重启后IP可能会变。直接用设备ID控制,走芯步的云平台接口,这样不管设备在哪,只要能上网就能控。如果是局域网内使用,可以用
ping或者ARP(地址解析协议)绑定一下路由器的DHCP(动态主机配置协议),给PDU一个固定内网IP。
七、 总结
说白了,二次开发芯步的PDU,本质上就是在调一个HTTP接口。
简单点:你用浏览器地址栏或者 Postman(接口测试工具),带上参数和签名,直接
GET一下,设备就动了。复杂点:把它集成到你公司的监控系统里。比如,Zabbix(开源监控系统)检测到服务器宕机 -> 自动调用这个接口 -> 强制重启电源第3口。甚至你可以给它写个Web界面,做成一个内部用的“电闸管理平台”。
这套方案确实比较轻量,够用,关键是省去了写驱动的麻烦。