芯步的智能PDU插排开放标准HTTP接口,你可以用任何支持HTTP请求的编程语言(Python、Java、Go、PHP等)进行二次开发。以下方案以5位分控PDU为例,涵盖接口对接、状态反馈和总线路控制三个核心环节。
一、 整体架构与预备工作
在开始编码之前,需要明确通信逻辑。芯步的设备采用 “指令-应答” 模式,同时支持设备主动上报状态。
二次开发流程概览:
设备端:智能PDU插排(5位)连接WiFi。
平台端:芯步物联网平台(负责设备管理与消息转发)。
应用端(你的服务器)
主动控制:通过调用芯步的开放HTTP API下发指令(开/关)。
被动接收:配置消息推送接口(Webhook/MQTT),接收设备状态变更的实时通知。
核心接口与数据说明:
控制接口
POST https://api.thingboot.com/{AppID}/device/control状态数据:对于5位PDU,
order参数通常使用power1至power5表示对应位插孔的开关状态("1"为开启,"0"为关闭)。总线路状态:因为不需要单独的总开关API,“总线路状态” 可以理解为对所有5位插孔状态的逻辑汇总(例如:只要有一个插孔通电,总线路就算通电;或者逻辑上视为一个虚拟的总继电器)。
二、 核心功能开发:总线路状态反馈
“总线路状态反馈” 是指在不依赖单独传感器的情况下,得知整条PDU进线端是否有电。由于PDU本身由外部电源供电,如果PDU离线,通常意味着进线断电或网络断了。
方案 A:基于设备在线状态(推荐)
逻辑:如果PDU设备向云端发送心跳或响应Ping命令,说明PDU本身有电(因为没电的设备无法联网)。
实现:调用芯步的
设备状态查询接口,若返回online状态,则判定总线路供电正常;若离线,则判定总线路断电或断网。
方案 B:基于任意分控口状态逻辑汇总
逻辑:虽然总线路没有独立的API,但在系统逻辑层创建一个虚拟属性。如果5个分控口中的任意一个处于开启状态,且设备在线,则认为总线路正在供电。
实现:在接收到设备上报的数据后,执行聚合计算。
三、 核心代码实现方案
以下以 Python 为例,使用 requests 库演示如何实现二次开发。
1. 签名生成与基础配置
芯步的API通常要求携带签名 sign 和时间戳 ts 进行身份验证。
2. 实现总线路“反馈”逻辑(状态聚合)
由于5位PDU是分控的,所谓的“总线路状态反馈”可以是读取所有分控口当前的状态并汇总。
场景需求: 用户想知道“PDU总共有多少口在通电?”
3. 实现“总线路控制”
由于物理上没有总开关继电器,实现“一键全开”或“一键全断”即可模拟总线路控制。
场景需求: 管理员点击“关闭总线路”,所有5个插孔同时断电。
4. 实时状态反馈的配置(Webhook)
为了获得实时的总线路反馈(例如某个分控口被手动按下了),你需要配置消息推送。
在芯步控制台中设置你的服务器回调 URL(例如 http://yourdomain.com/api/pdu_callback)。
在你的服务器代码中:
四、 解决冲突和需要注意的点
关于5位PDU的具体参数
芯步的标准分控PDU产品手册中,
order字段在控制5位设备时,通常对应power1至power5。如果你的5位设备是定制型号,请通过“拉取设备信息接口”确认
power字段的具体命名规则。
并发控制
如果在你的系统界面上点“总线路关闭”,会连续发送5条单控指令或1条批量指令。使用官方文档中提到的
batch指令(如果支持),这样一条HTTP请求就能控制所有位,避免网络延迟导致部分插孔关不掉的情况。
局域网直连(私有化部署)
如果你需要在纯内网环境使用,芯步的设备支持 HTTP局域网远程控制。
你可以查阅设备配网后的IP地址,直接向
http://{PDU_IP}/control发送请求。这种方式脱离外网,延迟更低,适合对响应速度要求高的场景。
定时任务
如果不想自己写代码维护定时器,可以在芯步的物联网控制台中直接配置 “定时任务”。即便你的服务器关机,PDU也会按照设定的时间(如每周一9点重启总线路)自动执行通断。
五、 总结
针对芯步5位PDU插排的二次开发方案总结如下:
| 功能模块 | 技术实现路径 | 关键点 |
|---|---|---|
| 总线路控制 | HTTP API -> 批量控制指令 -> 同时操作 power1:power5 | 使用 batch 指令确保原子性,5位同时动作 |
| 总线路状态反馈 | 设备上报 / 主动查询 -> 逻辑聚合层 -> 输出汇总状态 | 逻辑上聚合5位状态,若任一口通电则总线路视为通电 |
| 实时性保障 | 配置消息推送(HTTP/MQTT) | 接收设备秒级状态变更,用于界面实时刷新 |