CATALOG

芯步的5位机柜智能插排(智能PDU)开放HTTP接口,支持实时获取每路插孔的电流、功率数据,也支持远程通断控制。基于这套接口,可以在30分钟左右搭建一个过流自动保护系统——当总电流超过阈值时自动切断指定插孔或整机,避免跳闸或火灾风险。以下是完整的技术实现方案。

1. 背景与目标

1.1 背景

在数据中心、通信基站或服务器机柜中,设备负载的增加可能导致PDU(Power Distribution Unit,电源分配单元)总电流超过额定值(如10A/16A)。传统PDU不具备自动保护功能,过载时可能引发跳闸甚至火灾风险。芯步的智能PDU(如型号UNI-PDU-ZK-5)提供了开放的HTTP接口,支持实时电量采集远程通断控制,为二次开发提供了基础。

1.2 目标

基于芯步5位机柜智能插排的开放接口,开发一套“总路过流自动断电控制系统”。系统将实现以下核心功能:

  • 实时监测插排总路(或各孔位)的电流、功率。

  • 当总电流连续超过预设阈值(如10A)时,执行自动断电策略。

  • 提供告警通知(Webhook、邮件或Syslog,系统日志协议)。

  • 支持策略配置(阈值、持续时间、恢复方式)。

1.3 适用产品

本方案主要针对芯步 智能PDU总控(UNI-PDU-ZK-5)及其同系列多孔位插排。该产品具备以下特性:

  • 5位输出孔位,支持总控或分控。

  • 额定总功率:2200W-3000W,总额定电流:10A-16A(视型号)。

  • 通信接口:WiFi 2.4G,支持HTTP Client/Server模式。

  • 计量功能:实时上报电压、电流、功率、电量。

2. 系统总体设计

2.1 系统架构

系统采用云-端协同本地闭环两种模式。考虑到机柜环境对网络延迟和稳定性的要求,采用本地服务器闭环控制模式。

  • 感知层:芯步5位智能插排(PDU)。

  • 传输层:2.4G WiFi,通过HTTP API与服务器交互。

  • 平台层(控制中枢)

    • 方式A(推荐):机柜旁部署的本地工控机、树莓派或Docker容器,运行Python/Java采集与控制服务。

    • 方式B:公有云服务器(如阿里云ECS),但依赖外网且延迟稍高。

  • 应用层:监控看板、告警推送、策略配置界面。

2.2 工作流程

系统核心逻辑为“采集-判断-执行”闭环,延迟控制在毫秒级(设备响应80-120ms):

  1. 定时轮询/主动推送:服务端通过接口轮询设备状态,或设备通过MQTT/HTTP主动推送实时电参。

  2. 逻辑判断:服务端解析JSON数据,提取总电流值

  3. 阈值比对

    • 当前电流 > 过流阈值 且持续时间 > 延时触发时间:进入保护流程。

    • 否则,继续监测。

  4. 执行动作:调用芯步下发{"power": 0}(总路断开)或针对具体孔位{"power1": 0}

  5. 恢复机制:可选择手动恢复(需人工介入确认故障排除)或延迟自动恢复(尝试重新上电)。

3. 技术实现(Secondary Development Details)

3.1 接口准备与鉴权

芯步的API采用双重MD5签名机制

  • AppId/AppSecret:在芯步开发者后台获取。

  • 签名算法

    1. Secret_MD5 = md5(AppSecret)

    2. SignStr = Secret_MD5 + Ts (Ts为Unix时间戳秒)

    3. Sign = md5(SignStr)

  • 请求地址https://api.thingboot.com/{AppId}/device/control/?sign={Sign}&ts={Ts}

注:若部署在局域网且设备支持私有化,可直接转发请求至本地设备IP,无需公网签名(视固件支持情况)。

3.2 核心功能开发:实时电量采集

虽然设备支持定时上报,但在过流保护场景中,为了保证实时性,通常使用高频轮询策略。

  • 获取电量数据接口(假设为device/status):

    • 请求方式:POST

    • 参数:device=设备ID

    • 返回示例(PDU类设备):

  • 代码示例(Python轮询)

3.3 核心功能开发:过流保护逻辑

为了避免瞬时浪涌电流造成的误判,算法中需引入“持续时间窗口”

  • 算法设计

    1. 定义阈值THRESHOLD_CURRENT = 10.0 (A)。

    2. 定义触发时间TRIGGER_DURATION = 3 (秒)。

    3. 维护计数器overload_counter

    4. 每次采集:若电流 > 阈值,counter += 1;否则 counter = max(0, counter-1)

    5. counter >= TRIGGER_DURATION / 采集周期 时,触发断电。

  • 断电执行代码芯步支持单路控制批量控制

3.4 高级策略:优先级逐级脱载

对于机柜而言,一刀切断电可能导致核心服务中断。利用5位插排的“分路控制”能力,可以实现软中断

  1. 分级定义

    • 非关键负载:接在第4、5位(如备份设备、显示器)。

    • 关键负载:接在第1、2位(如核心交换机、主服务器)。

  2. 逐级切断策略:芯步PDU支持先通后断先断后通,但这里的逻辑是降流。

    • 当总电流 > 12A:切除非关键负载(power4=0, power5=0)。

    • 等待5秒,若电流仍 > 12A:通知人工干预,避免切核心设备。

  3. 命令示例

4. 系统部署与配置

4.1 环境要求

  • 硬件:树莓派4B / x86工控机 / 最低配置1核CPU 512MB内存。

  • 软件:Python 3.8+ / Java 11+ / Node.js 14+,安装requests库,可选Flask(用于构建本地可视化面板)。

  • 网络:需确保服务器与智能插排在同一个局域网,或智能插排已联网。

4.2 代码结构

4.3 配置参数说明

5. 异常处理与安全加固

5.1 防误判机制

  • 滤波处理:由于电机启动瞬间电流可能飙高,采用上述“持续时间窗口”算法,避免高频通断损坏继电器。

  • 看门狗:若采集服务进程崩溃,需利用操作系统的Systemd或Supervisor进行守护,确保保护系统持续运行。

5.2 API调用失败处理

  • 重试机制:当调用send_command失败时(如网络抖动),进行3次随机间隔(或逐次增大间隔)重试。

  • 本地缓存:记录最近10次的状态数据,以便故障排查。

6. 总结

利用芯步智能5位插排的开放接口(HTTP API),开发者无需修改硬件固件,即可在应用层实现软定义的过流保护

本方案的核心优势在于:

  1. 灵活性:阈值、延时、动作策略均可通过配置文件动态调整,无需重新烧录代码。

  2. 经济性:降低了“智能PDU”的选型门槛,标准硬件配合开源代码即可实现高端ATS(自动转换开关)的部分功能。

  3. 可观测性:接入Prometheus或InfluxDB后,可绘制机柜功耗趋势图,用于容量规划

通过上述步骤,开发人员在大约200行代码以内即可完成一个稳定的机柜级过流保护系统。