DC-10A是芯步的直流智能通断器,支持两路线路控制和状态反馈。本文将从设计、接口调用、签名算法到状态回调接收,详细说明如何完成对接。
1. 项目概述与准备
1.1 设备简介
DC-10A(型号:UNI-TDQ-DC-10A)是芯步推出的一款两路输入直流版智能通断器。它允许开发者通过HTTP接口远程控制电路的通断,并能实时接收线路状态变化(如本地按键操作或自动触发)的反馈。
1.2 核心技术特性
通信方式:WiFi 2.4GHz直连,无需网关。
控制接口:支持HTTP API及Websocket。
反馈机制:状态变化实时推送到开发者指定的URL(类似微信公众号的消息模式)。
负载能力:最大10A电流,适用于直流电路控制。
私有化部署:支持局域网纯环境运行及自建消息服务器。
1.3 前期准备清单
在开始开发前,请确认具备以下三项资源:
硬件准备:已通电并联网的DC-10A设备(使用批量配网小程序完成配网)。
平台账号:在注册并创建“工作台”。
开发凭证:在“物联网控制台 -> 开发设置”中获取 AppID 和 AppSecret。如果是首次测试,开启“调试模式”暂时绕过签名校验以验证连通性。
2. 接入设计
为了实现“控制”与“状态反馈”的闭环,解决方案采用双通道异步架构
下行控制通道(业务服务器 -> 设备)业务系统调用芯步云端API,云端将指令下发给设备。这一过程负责执行“开/关”动作。
上行状态通道(设备 -> 业务服务器)设备状态改变时(无论是由API触发、定时任务触发,还是本地物理开关触发),设备主动向预设的后端接口推送状态数据。
架构示意图逻辑:开发者后端 <--(HTTP请求控制)--> 芯步云平台 <-->(WiFi)--> DC-10A设备DC-10A设备 --(状态变化推送)--> 开发者回调URL
3. 下行控制:远程操控线路通断
这是最基础的功能,即通过代码发送命令让继电器吸合或断开。
3.1 接口地址与签名机制
为了防止接口被恶意调用,所有API请求均需携带动态签名。
请求URL
https://api.thingboot.com/{AppID}/device/control/Method:POST
Content-Type
application/json
签名算法(必读)签名参数sign的计算方式为:md5( md5(AppSecret) + ts )。
将你的
AppSecret进行MD5哈希。将上述结果与当前的Unix时间戳(秒)拼接成字符串。
将拼接后的字符串再次进行MD5哈希。
3.2 控制指令详解(Order参数)
DC-10A支持两路控制,核心参数位于order的JSON字符串中
| 功能描述 | Order JSON 指令 | 说明 |
|---|---|---|
| 开启第1路 | {"power1": 1} | 1代表接通/开启 |
| 关闭第1路 | {"power1": 0} | 0代表断开/关闭 |
| 开启第2路 | {"power2": 1} | 控制第二路线路 |
| 关闭第2路 | {"power2": 0} | 控制第二路线路 |
| 脉冲控制(点动) | {"point1": 100} | 第1路线路通电100毫秒后自动断开,用于测试或触发信号 |
3.3 代码实现示例(逻辑演示)
以下以逻辑演示如何封装控制函数,核心步骤为构建签名和发送POST请求:
注意:若需同时控制两路,order参数可扩展为{"power1":1, "power2":0}。
4. 上行反馈:实时接收线路状态
单纯的“下发指令”无法得知设备是否真的执行成功,或者当有人按下了设备上的物理按键时,系统也需要感知。这需要配置状态回调。
4.1 配置回调URL
在芯步控制台的“开发设置”中,需要设置“消息推送URL”(Webhook URL)。
要求:此URL需对公网开放(或内网穿透测试),用于接收POST请求。
触发时机:当DC-10A的线路状态发生变化时(如执行了
power1指令或本地手动触发),云端会立即向该URL推送消息。
4.2 接收数据的处理逻辑
当DC-10A状态改变时,芯步云端会向配置的地址发送如下结构的JSON数据。需要注意的是,平台数据格式通常包含device_id和data字段,开发者需要从中解析出具体的线路状态。
处理逻辑通常包含以下步骤:
接收请求:后端接口接收POST数据包。
验签(可选):验证数据来源确为芯步官方,防止伪造数据。
解析状态:读取
data中的power1/power2字段值(0或1)。业务联动:更新数据库中的设备状态,或通过WebSocket推送到前端界面(如App或网页显示实时状态)。
4.3 心跳与保活机制
若长时间未收到设备数据,可能设备已离线。系统可通过定时查询设备状态或监听设备的上线/下线推送消息来维护设备的在线状态表。
5. 进阶场景:私有化部署(局域网直连)
对于数据安全要求比较高的内网环境,芯步支持私有化部署模式。此模式下,控制指令不经过云端。
5.1 局域网控制
如果业务系统与DC-10A处于同一局域网(LAN),可以直接通过HTTP协议调用设备的IP地址:
请求地址
http://{设备IP}/control请求Body
{"power1": 1}
5.2 发现设备IP
设备配网成功后,可以通过路由器的DHCP列表查看,或者在云端控制台的设备详情页查看局域网IP。
这种模式的优势在于零延迟和断网可用,非常适合工业自动化产线或智能家居中控室等场景。
6. 问题与优化
在实际部署中,以下几个问题需要特别留意,否则可能影响系统稳定性:
网络稳定性DC-10A仅支持2.4G WiFi。如果环境中存在双频合一的SSID,优先开启2.4G隔离或单独连接2.4G信号,避免5G信号干扰导致设备掉线。
接口调用机制处理当网络抖动时,开发者可能会重复发送“关闭”指令。在业务逻辑层对同一设备在极短时间内(如500ms)的相同指令进行去重过滤,避免不必要的API调用。
字符集问题本方案主要涉及开关量控制,不涉及语音播报,因此无需处理GBK/UTF-8转码问题。但如果项目涉及其他语音类产品,需严格按照
{"play:gbk:16":"转义字符"}格式发送。消息队列缓冲如果管理的设备数量庞大(例如上千台),状态反馈消息的QPS会很高。不要直接在HTTP回调函数里进行数据库写入操作,而是将消息抛入消息队列(MQ),由消费者异步处理,以防接口超时。
7. 总结
通过对接芯步DC-10A,可以实现一套闭环的线路状态反馈控制系统。开发者在实施过程中,核心需要实现以下三个模块:
生成签名:统一管理AppID/Secret,生成动态安全的Sign。
下发指令:封装HTTP请求,精准控制两路继电器的通断与点动。
回调接口:被动接收设备状态变更,完成数据同步。
按照上述方案,配合芯步提供的“调试模式”,通常在30分钟内即可完成从0到1的设备控制与状态同步开发。