AC3-10A 计量版的核心价值在于“通断控制+电量计量”二合一。二次开发的关键是两件事:用签名算法拿到控制权,再把设备主动上报的数据接回自己的系统。以下从设计到代码实现逐步展开。
一、 解决方案设计
要实现对该设备的二次开发并监控其运行状态,推荐采用 “云端API控制 + 消息推送接收” 的异步架构。
1. 架构组件:
设备层: AC3-10A 计量版智能通断器(连接 Wi-Fi)。
芯步云平台: 负责设备连接、指令转发、数据汇聚。
用户自建服务器: 你需要开发的服务端程序,包含两部分:
API 调用端: 主动发起 HTTPS 请求控制设备(通断、获取数据)。
消息接收端(HTTP Server): 接收并解析设备主动上报的状态数据。
2. 工作流程:
下行控制: 业务系统 芯步云 API AC3 设备
上行监控: AC3 设备 芯步云 业务系统接收地址(Callback URL)
二、 核心功能开发详解
1. 准备工作:获取密钥与设备ID
在芯步的“物联网控制台”中,你需要准备好以下三个关键凭证,它们将贯穿整个开发过程:
AppID / AppSecret: API 调用的身份凭证。签名计算时会用到 AppSecret,其重要性等同于密码,请一定要在服务端妥善保管 。
设备ID: 目标通断器的唯一标识。将设备添加到控制台后即可获得。
消息推送接收地址: 你需要准备一台具备公网 IP 或域名(支持 HTTPS 更佳)的服务器,并配置一个接口 URL 来接收数据 。
2. 重点解决:设备控制与签名生成
实现对 AC3-10A 的通断控制是所有监控动作的基础。芯步的接口采用动态签名机制来保障安全,这是开发中需要首先攻克的技术点。
接口信息:
请求方式:
POSTURL结构:
https://api.thingboot.com/{AppId}/device/control/?sign={Sign}&ts={ts}
签名生成算法:为了避免在开发过程中因签名错误而导致接口调用失败(常见于时间戳不同步或 MD5 计算顺序有误),请严格按照以下步骤进行签名计算:
准备 AppSecret(例如
abc123)和当前 Unix 时间戳ts(秒级,例如1700000000)。计算
md5_1 = md5(AppSecret),得到一个 32 位字符串。拼接
string = md5_1 + ts。计算
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 推送
配置: 在控制台设置消息接收 URL。
数据接收: 芯步平台会将设备数据作为
POST请求的body发送到你的服务器。返回值: 接收到数据后,你的服务器只需返回
HTTP 200 OK状态码即可,无需返回具体数据内容。若 5 秒内未能成功返回,平台将放弃本次推送,因此要确保接口具备足够的处理速度 。
方案B:MQTT 订阅对于流量较大或对实时性要求较高的场景,MQTT 是更优的选择。
连接: 使用
AppId和AppSecret按规则计算出的用户名和密码,连接至平台的 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 计量版通断器的设备监控系统,不仅能看到开关状态,还能直接分析负载的能耗与健康度。