CATALOG

芯步的智能PDU(总控款)采用HTTP接口开放策略,二次开发的核心是调用/device/control/接口,通过order参数中的powerreset等命令实现远程通断、重启及参数配置。以下从接口机制、命令构造、代码实现到状态反馈逐一说明。

解决方案:基于芯步开放接口的机柜PDU(8位总控)二次开发

1. 背景与目标

在现代数据中心和边缘计算节点中,机柜PDU(电源分配单元)是基础设施的关键组成部分。传统PDU缺乏远程管理能力,运维人员需要现场操作。本方案的目标是利用芯步智能PDU(8位总控) 的开放HTTP接口,进行二次开发,实现以下目标:

  • 远程总控:在任何地点通过软件下发指令,对PDU整体进行通电、断电或重启。

  • 参数配置:通过API配置设备的网络参数、重启策略(如先断后通的时间间隔)以及定时任务。

  • 系统集成:将PDU管理功能无缝集成到现有的机房动环监控系统、自动化运维平台(如Ansible、SaltStack)或内部IT服务管理系统中。

2. 核心开放接口解析

芯步的8位总控PDU型号通常为UNI-PDU-ZK-8,其核心交互通过HTTP/HTTPS协议完成,数据格式为标准JSON。

  • 请求地址http(s)://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}

  • 请求方式:POST(推荐,参数较长时使用)

  • 核心参数

    • device:设备ID,即PDU的唯一标识(可在设备外壳或控制台获取)。

    • order:命令体,这是二次开发的关键字段,用于传递控制指令和配置参数

3. 解决方案实施:从环境搭建到功能实现

3.1 环境准备与设备入网

在编写代码前,需完成设备初始化,确保PDU具备公网或局域网可达的IP地址。

  1. 账号注册:在芯步官网注册开发者账号。

  2. 设备配网:通过“芯步小程序”或PC控制台,为PDU配置现场的2.4G WiFi网络。配网成功后,设备会在云端上线,此时可在控制台获取唯一的device ID

  3. 获取凭证:在控制台获取AppID,并按照官方签名文档生成sign(签名)和ts(时间戳),用于接口安全校验。

3.2 功能模块开发

针对“远程总控与参数配置管理”,重点开发以下四个功能模块:

模块一:远程总控开关通过API直接修改PDU的输出状态。对于总控款PDU,命令通常作用于总继电器。

  • 场景:远程发现机柜温度过高,立即关闭总电源或重启。

  • 接口调用示例(Python)

模块二:精准参数配置(先断后通/重启策略)运维场景中,重启服务器时往往需要切断电源等待几秒再恢复(冷重启)。通过reset命令可精准配置“断电持续时间”。

  • 场景:某台服务器死机,需要强制断电重启。

  • 控制指令

    • 基础重启{"reset": 3000} (断电3000毫秒后自动通电)。

    • 精细化控制:对于支持分控的PDU可使用batch指令,对于总控款,虽然只有一个总开关,但通过配置extra字段可以携带任务ID,方便回调追踪

模块三:批量管理与自动化脚本利用device参数支持多设备的特点,实现对整个机柜甚至整个机房的批量运维。

  • 场景:夜间对某一排机柜进行节能断电,或批量升级固件前统一切断电源。

  • 请求示例

    • device: "123456,789012,345678" (用逗号分隔多个PDU的ID)

    • 指令发送:一条HTTP请求即可控制最多100台设备同时执行通断电,极大提升运维效率

模块四:状态同步与异步消息处理由于HTTP请求返回的200仅代表指令送达,不代表设备实际已执行(可能存在设备离线或继电器故障)。为了保证系统数据的一致性,需配置消息推送(Webhook/MQTT)

  • 配置:在芯步控制台配置回调URL。

  • 处理逻辑

    1. 下发命令时携带extra字段(如操作流水号)。

    2. 设备实际执行成功后,云端会向配置的服务器地址推送包含该流水号的执行结果。

    3. 二次开发的服务端接收推送,更新数据库中该设备的电源状态。

3.3 私有化与局域网部署(可选)

对于安全性要求比较高的金融或涉密机房,若PDU必须运行在纯内网环境:

  • 芯步支持私有化部署,可将API服务端部署在内网服务器。

  • 二次开发时,只需将请求地址修改为内网API地址即可,内部业务代码逻辑零改动

4. 技术点总结

功能需求接口/命令参数业务实现逻辑
远程通电order: {"power": 1}针对总控设备,1为开,0为关,逻辑清晰,适合集成到自动化脚本。
远程断电order: {"power": 0}紧急情况下的硬关断,优先级最高。
设备重启order: {"reset": 2000}order: {"reset": {"interval": 2000}}先执行断电,等待2秒后自动上电。适合远程解决服务器假死。
带参重启order: {"reset": 3000, "extra": "ID1001"}发送重启指令并附带业务ID,通过异步回调精准记录操作结果。
批量运维device: "id1,id2,id3"一次请求管理多个机柜,降低代码复杂度,提高运维效率。

5. 结论

通过集成芯步开放的HTTP接口,开发人员仅需关注业务逻辑层(如定时任务、监控联动、工单系统),无需关心底层通信协议。利用简单的JSON指令{"power": 0/1}{"reset": interval}即可构建一套高效的远程电源管理系统,实现机房管理的自动化与无人化。