CATALOG

AC3-10A 计量版的核心价值在于“通断控制+电量计量”二合一。二次开发的关键是两件事:用签名算法拿到控制权,再把设备主动上报的数据接回自己的系统。以下从设计到代码实现逐步展开。

一、 解决方案设计

要实现对该设备的二次开发并监控其运行状态,推荐采用 “云端API控制 + 消息推送接收” 的异步架构。

1. 架构组件:

  • 设备层: AC3-10A 计量版智能通断器(连接 Wi-Fi)。

  • 芯步云平台: 负责设备连接、指令转发、数据汇聚。

  • 用户自建服务器: 你需要开发的服务端程序,包含两部分:

    • API 调用端: 主动发起 HTTPS 请求控制设备(通断、获取数据)。

    • 消息接收端(HTTP Server): 接收并解析设备主动上报的状态数据。

2. 工作流程:

  • 下行控制: 业务系统 \rightarrow 芯步云 API \rightarrow AC3 设备

  • 上行监控: AC3 设备 \rightarrow 芯步云 \rightarrow 业务系统接收地址(Callback URL)

二、 核心功能开发详解

1. 准备工作:获取密钥与设备ID

在芯步的“物联网控制台”中,你需要准备好以下三个关键凭证,它们将贯穿整个开发过程:

  • AppID / AppSecret: API 调用的身份凭证。签名计算时会用到 AppSecret,其重要性等同于密码,请一定要在服务端妥善保管

  • 设备ID: 目标通断器的唯一标识。将设备添加到控制台后即可获得。

  • 消息推送接收地址: 你需要准备一台具备公网 IP 或域名(支持 HTTPS 更佳)的服务器,并配置一个接口 URL 来接收数据

2. 重点解决:设备控制与签名生成

实现对 AC3-10A 的通断控制是所有监控动作的基础。芯步的接口采用动态签名机制来保障安全,这是开发中需要首先攻克的技术点。

接口信息:

  • 请求方式:POST

  • URL结构:https://api.thingboot.com/{AppId}/device/control/?sign={Sign}&ts={ts}

签名生成算法:为了避免在开发过程中因签名错误而导致接口调用失败(常见于时间戳不同步或 MD5 计算顺序有误),请严格按照以下步骤进行签名计算:

  1. 准备 AppSecret(例如 abc123)和当前 Unix 时间戳 ts(秒级,例如 1700000000)。

  2. 计算 md5_1 = md5(AppSecret),得到一个 32 位字符串。

  3. 拼接 string = md5_1 + ts

  4. 计算 sign = md5(string)

控制命令示例(JSON):针对 AC3-10A 计量版,主要的控制指令如下

  • 打开/关闭:

    • 开启:{"power":"1"}{"power":1}

    • 关闭:{"power":"0"}{"power":0}

  • 读取计量数据:

    • 立即读取:{"metering":"1"} (设备会触发一次新的数据上报)

  • 定时/脉冲模式:

    • 先通后断(点动):{"point":"3000"} (立即接通,3秒后自动断开)

3. 重点解决:如何接收实时状态与计量数据

这是实现“监控”的核心。设备电压、电流、功率等关键数据都将通过“消息推送”机制实时同步给你。该机制支持 HTTP 和 MQTT 两种方式,考虑到实时性和长连接优势,生产环境推荐 MQTT 方案

方案A:HTTP 推送

  1. 配置: 在控制台设置消息接收 URL。

  2. 数据接收: 芯步平台会将设备数据作为 POST 请求的 body 发送到你的服务器。

  3. 返回值: 接收到数据后,你的服务器只需返回 HTTP 200 OK 状态码即可,无需返回具体数据内容。若 5 秒内未能成功返回,平台将放弃本次推送,因此要确保接口具备足够的处理速度

方案B:MQTT 订阅对于流量较大或对实时性要求较高的场景,MQTT 是更优的选择。

  • 连接: 使用 AppIdAppSecret 按规则计算出的用户名和密码,连接至平台的 MQTT Broker。

  • 订阅: 订阅主题 api/{AppId}/message/state 即可接收所有设备的状态更新

4. 设备上报数据解析

无论通过 HTTP 还是 MQTT,你收到的 JSON 数据结构是统一的。你需要解析 message.data 数组来提取具体的计量指标。一个典型的设备自主上报消息体结构如下

在实际开发中,你以 device 字段作为索引,将解析出的电压、电流、功率值存入数据库,并据此判断所连接电器的运行状态(如:功率>10W 视为运行中)。

三、 典型场景实践:设备运行状态监控

假设你需要监控一台“工业风扇”是否真正开启,而不仅仅是继电器有没有吸合。

1. 阈值判断逻辑:

  • 待机/故障: 继电器状态为 power:1(开启),但 power_w(功率)持续 10 秒低于 5W。此时可判定风扇电机损坏或未连接。

  • 正常运行: 继电器状态为 power:1,且 power_w 稳定在 100W-200W 之间。

  • 过载预警:power_w 超过 2200W(10A版理论峰值)。此时应立即下发 {"power":"0"} 指令切断电源

2. 故障自动复位机制:你可以利用设备的计量功能实现自动化运维。检测到电压异常波动后,程序等待 5 秒;若电压仍未恢复,则自动执行一次“先断后通”复位操作——发送 {"power":"0"} 切断设备,延时 5 秒后再发送 {"power":"1"} 尝试重启。如果重启后电流依然超过额定值,再次切断电源并发送告警通知。

3. 代码实现示例以下是一个典型的后端逻辑伪代码,实现了对设备上报数据的处理和对设备的主动控制。

  • 数据接收端处理函数这个函数在你的服务器上运行,每当收到设备上报的数据时被触发。它会解析功率数据,并在功率过低时标记设备为空载。

  • 设备重启指令生成当你在接收端判定设备需要重启时,需要调用芯步的 API。这个函数负责生成上文提到的签名并发起 API 调用。

四、 网络与部署优化

针对 AC3-10A 设备,有两个特别的优势可以充分利用:

1. 局域网私有化部署如果监控场景对数据安全要求比较高(如工厂内部机密设备),或者现场没有外网,可以利用 AC3 的“支持局域网”特性。

  • 原理: 设备支持 UDP 广播或 HTTP 局域网发现。

  • 做法: 如果 PC 服务器和设备在同一 Wi-Fi 网段下(且路由器允许内网通信),你可以尝试直接向设备的 IP 地址发送 HTTP 指令(端口通常为 80),从而绕过外网云平台,实现纯内网监控,延迟可以控制在 10ms 以内

2. 离线缓存逻辑设备在没有外网的情况下,虽然无法上报数据到云端,但如果是内网直连控制,依然可以响应 HTTP 指令。如果是云端模式,设备支持多 Wi-Fi 备份,当一个 Wi-Fi 信号弱时,可自动切换备用 Wi-Fi,这极大提高了监控链路的稳定性

通过以上方案,你可以快速搭建一个基于 AC3-10A 计量版通断器的设备监控系统,不仅能看到开关状态,还能直接分析负载的能耗与健康度。