芯步的智能PDU开放了HTTP接口,二次开发的核心就是调用接口、写好签名、拿到设备ID和命令格式。下面我整理了一份方案,从接口原理到批量控制的脚本示例都会讲到,你可以直接参考。
一、为什么选芯步的这款5位分控PDU做二次开发?
如果你手头管着一堆服务器、网络设备或者机房里的各种电器,每次都要跑过去按开关,或者挨个点APP控制,那效率太低了。
芯步这款5位分控PDU,最大的好处就是开放了HTTP接口。这意味着什么呢?意味着你别把它当成一个普通的插排,把它当成一个可以通过网址命令控制的执行器。
不管是你是写Python脚本,还是用Java、PHP,甚至是在Excel里发请求,只要能调HTTP接口,就能控制它。
二、准备阶段
在你动手写代码之前,需要先把“钥匙”拿到手。
注册账号并添加设备:先去芯步官网注册账号,在后台把PDU设备配网连上WiFi(必须要是2.4G频段)。
找到开发凭证:在控制台的“开发设置”里,找到两个关键字符串:
AppID:相当于你的用户名。
AppSecret:相当于你的密码(这个要保密,别传到GitHub上)。
拿到设备ID:在设备列表里,找到你这台PDU的编号(Device ID),是一串数字。
三、核心接口与原理解析
要控制这台PDU,你只需要对着这个网址发请求,比如:
https://api.thingboot.com/{你的AppID}/device/control/
里面必须要带上三个关键参数:device(设备ID)、order(开关指令),还有一个动态生成的签名(sign)。
关于签名(Sign)的温馨提醒这个接口为了安全,不直接用密码,而是用签名。这个签名虽然官方文档写起来很绕(md5(md5(AppSecret)+ts)),你可以理解为:把密码加密一次,再结合当前时间戳,再加密一次。这样做的好处是,每次请求的签名都不一样,就算被人抓包了,他也改不了指令,安全性很高。
四、怎么实现“批量管控”?
所谓的批量管控,其实分两个层面:
一台设备控制多个插口(单设备批量):这就很简单了,只需要改
order这个参数就行。比如控制第1路和第3路同时打开。一键控制多台设备(多设备批量):如果你机柜里有好多台PDU,比如一排5个PDU,你想一键重启所有设备,就在一次请求里把这几台设备的Device ID都用逗号拼起来传过去。
下面用具体的代码说话。
五、实战脚本示例
这里用最简单的 Shell + curl 来展示,你也可以轻松转换成Python或Java代码。
1. 单路控制
需求:关闭第2个插口。
2. 单设备批量操作
需求:控制一台PDU的1、3、5路打开。这个时候要用到特殊的 batch 命令。
(注:这里因为JSON套娃,引号需要转义,看着有点晕,实际在代码里构建好数组转成json就没那么乱了)
3. 多设备批量操作
需求:一键重启机柜A和机柜B的两台PDU(关掉再打开)。这时候device参数用逗号隔开就行。
4. 完整脚本模版
这里直接用芯步官方给的Bash模版修改一下,添加了多点位控制的逻辑:
六、进阶玩法思路
拿到这个接口,你就不只是手动敲命令了,可以把它接入你现有的运维系统:
对接Shell脚本或Python:写一个定时任务(Crontab),每天早上8点自动打开打印机电源,晚上8点自动关掉,省电。
集成到监控系统(Zabbix/Nagios):写一个脚本,让服务器死机了自动调用PDU接口拔电重启。
做成网页按钮:做个简单的HTML后台,几个大按钮,“重启服务器集群”、“关闭测试环境”,按一下就触发上面的脚本。
局域网控制:如果你不想走外网,芯步这套也支持私有化部署,数据可以完全跑在你公司内网,速度和安全性都会更好。
七、避坑小贴士
时间戳同步:生成
ts的时候,一定要保证你的电脑时间是准的,如果和服务器时间差太多,会报签名过期。网络稳定性:5位分控PDU连的是2.4G WiFi。如果放在金属机柜里,注意WiFi信号屏蔽问题,最好在后台看看信号强度。
并发控制:你的脚本里如果瞬间发了几十个指令给同一台设备,虽然设备能处理,但稍微加一点点延时(sleep 0.5秒),避免设备“反应不过来”。
只要搞定上面那个签名,发个POST请求,芯步这款PDU就能乖乖听你程序的话了。