CATALOG

芯步的智能PDU8位分控产品支持通过HTTP接口进行远程开关控制,可以轻松集成到现有的广告灯箱管理系统中。下面从接口协议、签名算法、核心命令实现到完整的项目设计,给出详细的解决方案。

1. 项目概述与需求分析

在户外广告、数字标牌和智慧城市项目中,广告灯箱设备机柜通常分布在城市的各个角落。传统的运维模式面临三大痛点:高能耗(灯具长时间无效开启)、高运维成本(故障需人工到场重启)、缺乏监控(无法感知设备真实运行状态)。

本方案基于芯步智能PDU8位[分控](型号:UNI-PDU-FK-8) ,旨在通过将其开放API集成到现有软件平台,实现对机柜内8路电源输出的远程监控、独立控制和能耗管理。

核心集成目标:

  • 远程分控:精确控制灯箱内部的LED电源、散热风扇、卷帘电机等8个不同设备。

  • 故障自愈:监测到设备无响应(如Ping失败),自动执行端口断电重启。

  • 定时策略:根据经纬度日出日落时间或市政路灯开关信号,自动执行开关灯计划。

  • 能耗监测:通过API获取PDU当前负载,判断灯具老化或损坏情况。

2. 芯步PDU接口特性与通信架构

2.1 硬件基础

  • 设备名称:智能PDU8位[分控]

  • 控制粒度:8路独立分控,每路均可单独开关。

  • 网络方式:WiFi 2.4GHz(直连,无需网关)。

  • 核心优势:支持私有化部署,指令响应快(约80-120ms),支持局域网纯环境运行。

2.2 开放接口协议

芯步的设备接口采用极简的HTTP/HTTPS协议,这意味着无论你的后端是Java、Python、Go还是PHP,甚至前端JavaScript(通过Nodejs或Electron),只要支持HTTP请求,都能轻松集成

  • 请求方式:POST

  • 数据格式:JSON

  • 鉴权方式:动态签名(Sign)+ 时间戳(Ts)

2.3 通信架构图

在你的软件项目中,通信链路如下:

sequenceDiagram
    participant Admin as 运维后台(Web/App)
    participant Server as 你的业务服务器
    participant YoYoAPI as 芯步开放API
    participant PDU as 智能PDU(机柜内)
    participant Device as 灯箱设备(灯/LED屏)

    Admin->>Server: 点击"关闭第3路"
    Server->>Server: 生成签名(Sign) & 设备ID
    Server->>YoYoAPI: POST /device/control/ (含签名)
    YoYoAPI->>YoYoAPI: 验证签名与设备归属
    YoYoAPI->>PDU: 推送指令(MQTT/长连接)
    PDU->>PDU: 执行继电器动作
    PDU-->>YoYoAPI: 指令执行成功
    YoYoAPI-->>Server: 返回 {"code":0,"msg":"success"}
    Server-->>Admin: 实时更新状态
    PDU->>Device: 电源断开/闭合

3. 核心集成步骤:代码实现与逻辑

要将PDU集成到你的软件项目中,核心在于封装好签名生成指令下发这两个环节。

3.1 集成准备:凭证获取

在芯步物联网控制台中,你需要获取以下关键信息:

  1. AppId: 应用唯一标识。

  2. AppSecret: 开发者密码,用于加密。

  3. Device ID: 该PDU设备的序列号(例如 1878

3.2 签名算法实现

为了防止接口被恶意调用,芯步使用了双层MD5加密。签名生成逻辑如下(以Python伪代码为例,任何语言逻辑通用):

注意:时间戳ts必须与签名计算时使用的保持一致,服务器会校验收发时间差,防止重放攻击

3.3 关键指令下发实现

针对广告灯箱场景,以下是几个最常用的API指令示例。请求地址为:https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}

第一种场景:单独控制(如关闭LED电源所在的第3路)

广告灯箱晚上开、白天关。假设设备ID为 10086

  • 请求Body

第二种场景:批量控制与一键全开

在某些应急场合(如检修完毕),需要一键开启所有输出口。

  • 请求Body

第三种场景:先断后通(Reset)

当监控摄像头或工控机死机时,需要模拟“拔插电源”动作。reset指令会先断开指定端口,等待短暂间隔后自动重新上电。

  • 请求Body

*参考依据:智能PDU支持power1-8、batch、reset等指令集*

3.4 状态同步与接收(回调机制)

单纯的“下发指令”是单向的,一个完善的软件项目还需要知道“设备到底开了没有”以及“当前的功率是多少”。

  • 状态上报:芯步支持消息推送机制。你需要在软件项目中配置一个接收服务器。当PDU状态变化或被物理按键操作时,芯步会主动POST一个JSON数据包到你指定的URL,你的服务器据此更新数据库中的设备状态

  • 主动查询:若不想配置接收服务器,也可以通过调用“设备状态查询接口”主动拉取当前各路开关的状态和电流负载数据。

4. 软件项目设计

要将此PDU无缝融入你的业务系统,在软件架构中采用中间件模式

4.1 的项目架构层级

  1. 前端展示层: 在你的Vue/React管理后台,绘制一个带有8个开关按钮的卡片。按钮颜色代表开关状态(绿/灰),按钮旁显示实时功率。

  2. 业务逻辑层: 你的后端服务(SpringBoot/ThinkPHP等)负责鉴权、记录操作日志(谁在什么时间关了什么灯),并调用芯步API。

  3. 设备适配层: 封装一个PDUService类,专门处理签名计算、重试机制(因为网络抖动可能丢包)和异常捕获。

4.2 典型业务流程:定时巡检与自愈

在广告灯箱场景中,如果LED屏卡死,往往需要设备断电重启。可以在你的软件项目中配置自动化规则:

  • 触发条件: 每5分钟 Ping 广告屏IP,连续超时3次。

  • 逻辑判断: 调用PDU接口,对输出口执行 {"reset":2}

  • 二次确认: 等待2分钟,再次检查网络连通性。若恢复,记录“自愈成功”;若未恢复,向运维人员发送告警工单。

5. 关键注意事项

在正式部署前,请请一定要在你的软件项目中处理好以下环节:

  1. 私有化部署(内网环境)很多广告机柜处于内网或专网环境。芯步PDU支持局域网直连。如果你的服务器也在同一个局域网内,可以直接将API域名指向PDU的内网IP,无需经过外网,既降低了延迟,也提高了安全性

  2. 设备离线处理网络波动可能导致指令下发失败。在代码中应加入 “最大重试次数” (例如3次)和 “熔断机制” 。如果PDU离线,软件界面应显示“设备离线”,避免运维人员误判为灯箱坏了。

  3. 参数校验由于涉及强电操作,你的软件前端和后台都必须做严格校验。例如,严禁在“批量关闭”后毫秒级立即执行“批量开启”,必须设置间隔延迟(例如1秒),防止瞬间浪涌电流导致机柜跳闸。

  4. 日志记录请一定要在数据库中详细记录每一次电源状态变更。包括:操作人、操作时间、指令内容、接口返回结果。这对于排查“广告屏半夜为何自动关闭”这类问题至关重要。

通过上述方案,你可以将芯步的智能PDU深度集成到现有的广告灯箱管理平台中,实现从“人工现场维护”到“云端自动化运维”的升级。