一、咱们先聊聊需求和场景
先问个问题:机房里服务器、交换机、路由器这些设备,有没有必要做定时控制?
你可能会说——“服务器不应该是7x24小时开着的吗?”
没错,业务服务器确实不能随便关。但实际场景中有很多“非核心设备”是需要灵活控制的,比如:
测试服务器的定时开关(下班自动关,上班自动开)
机柜散热风扇的定时启停(晚上负载低的时候关掉省电)
大屏展示设备的定时上下电
备用设备的周期性通电检测
甚至是你工位旁边的网络设备,周末自动断电省电
有了智能PDU(8位分控),再加上芯步开放的HTTP接口,写几行代码就能搞定这些事情。今天咱们就聊聊怎么二次开发实现这个功能。
二、用到的硬件和它的接口
设备长什么样?
用的是芯步的 智能PDU[分控]|8位 这款设备。
简单说就是一个机柜专用的排插,但它有8个可独立控制的插座口,每个口都可以单独开关。每个插座对应一个继电器,你通过API告诉它“把第3路打开”,它就照做。
开放接口什么样?
这是最良心的地方——芯步免费开放了HTTP接口。这意味着:
不挑编程语言:Python、Java、Go、Node.js、PHP……只要你能发HTTP请求,就能控制它
不挑部署环境:你写个脚本跑在Windows、Linux、Mac上都行
支持局域网:如果不想走云端,还可以私有化部署,纯局域网内控制
接口调用方式大概是这样
签名计算方式:
控制命令示例:
{"power1": 1}→ 打开第1路{"power2": 0}→ 关闭第2路{"batch": "10101010"}→ 批量控制8个口
三、整体方案设计思路
我们要实现的功能是:定时控制8路设备的开关。
比如这样的定时任务表:
| 端口 | 设备 | 开启时间 | 关闭时间 | 生效日期 |
|---|---|---|---|---|
| 1 | 测试服务器 | 09:00 | 18:00 | 工作日 |
| 2 | 机柜风扇 | 08:00 | 22:00 | 每天 |
| 3 | 大屏展示机 | 10:00 | 17:00 | 周一至周五 |
| 4 | 备用设备 | 每月1日 00:00 | 每月1日 06:00 | 每月一次 |
实现方式有两种思路:
写一个定时脚本:用Python或Node.js写个脚本,配合系统的cron任务调度,定时调用API
部署一个常驻服务:用Node.js或Python写个常驻服务,内部维护定时任务列表,自己控制执行时机
我个人推荐第二种,更灵活,而且方便加个简单的管理界面。不过第一种对新手更友好,看你的需求。
四、动手开干——代码实现
第一步:准备工作
去芯步官网注册账号
创建工作台,进入物联网控制台
给PDU配网(2.4G WiFi,按官方文档操作就行)
在控制台找到你的设备ID和AppID、AppSecret
设备通电并在线
第二步:封装API调用
先写一个核心的API调用封装,我用Node.js示例(Python也类似):
如果你更喜欢Python,大概长这样:
注意几点:
签名要严格按照
md5(md5(AppSecret) + 时间戳)的顺序时间戳用秒级的
device参数如果需要控制多个设备,可以用逗号分隔
第三步:实现定时调度服务
有了API封装,接下来做定时调度。这里用Node.js的node-cron库举例:
cron表达式的说明:
0 9 * * 1-5→ 每周一到周五的上午9:00整0 18 * * 1-5→ 每周一到周五的下午6:00整0 8 * * *→ 每天早上8:00整0 22 * * *→ 每天晚上10:00整
第四步:进阶——加个简易管理界面
如果想让运维同事也能用,可以加个简单的Web管理界面。用Express写几个接口就行:
五、部署和运维注意事项
1. 网络环境
PDU只支持2.4G WiFi,确保机柜附近有2.4G信号
如果机柜在弱电井或者信号不好的地方,考虑拉个AP或者用有线网络方案(芯步也有支持有线的型号)
2. 服务高可用
定时控制服务最好部署在内网的一台小型服务器或者树莓派上
做进程守护(用PM2或者systemd),万一挂了能自动重启
如果服务挂了,PDU会保持最后一次的开关状态,不会丢配置
3. 安全性
AppSecret要妥善保管,别硬编码在代码里提交到Git,用环境变量
如果通过公网API控制,考虑加一层VPN或者IP白名单
支持私有化部署的话,直接用局域网模式
4. 失败重试
网络波动是常态,调用API的时候加重试逻辑:
六、总结
就这么简单——写个几十行代码,芯步的PDU就能按你的想法自动干活了。
关键优势在于:
接口免费开放,不额外收费
协议简单,就是个HTTP调用,啥语言都能写
支持局域网,内网控制延迟低、还安全
8路独立控制,每个设备各管各的,互不干扰
如果想做得更完善,还可以扩展:
加个电量统计功能(如果PDU支持的话),监控每路设备的功耗
对接企业微信/钉钉,定时任务执行后发个通知
做个Web管理后台,让运维同事也能改定时配置
如果有技术问题,芯步那边也提供全程技术指导,从选型到调试都有人帮忙。放心干就完了!
有什么具体问题或者想进一步讨论的,欢迎随时交流!