CATALOG

DC-10A 这款智能通断器本身不带 WiFi 模块,需要配合网关使用,所以对接的时候会多一个“找网关”的步骤。下面我把整个流程梳理一下,包含签名计算、指令格式这些关键细节。

一、 准备工作

在开始写代码之前,有三样东西是必须准备好的,就像开锁需要钥匙一样:

  1. DC-10A 设备与网关:确保你的 DC-10A 已经通过网关(如 Zigbee 网关)添加到了芯步的控制台,并且设备状态显示为“在线”。

  2. 三要素(AppID/AppSecret/DeviceID)

    • AppIDAppSecret:登录芯步开放平台后台,在“开发设置”里可以找到。这是你的“账号密码”,调用任何接口都要带上。

    • DeviceID:在控制台的设备列表里找到你的 DC-10A ,复制那一串数字 ID(比如 1234567)。同时你也要记下网关的 DeviceID,因为 DC-10A 需要通过网关转发指令

  3. 网络环境:确保你的服务器或开发电脑能访问公网()。如果做私有化部署,则指向你自己的服务器地址。

二、 核心步骤:怎么下发指令

DC-10A 不具备直接联网能力,所以指令路径是:你的电脑/服务器 -> 芯步云平台 -> 家里的网关 -> DC-10A 设备

我们要用的接口地址是(注意替换 {AppID}):https://api.thingboot.com/{AppID}/device/control/

1. 签名计算(这是最容易坑的地方)

为了防止接口被别人乱刷,所有请求都要带签名 sign。芯步的签名算法虽然是标准的 MD5,但套了两层,逻辑如下:

  1. 先把你的 AppSecret 进行一次 MD5 加密,得到 secret_md5

  2. 然后拿 secret_md5 拼接上当前的时间戳 ts(比如 1715678900),组成新字符串 secret_md5 + ts

  3. 最后对这个新字符串再做一次 MD5,得到的就是 sign

公式sign = MD5( MD5(AppSecret) + ts )

举个栗子假设 AppSecret 是 abc123,当前时间戳是 1715678900

  • 第一步 MD5(abc123) = e99a18c428cb38d5f22e03...

  • 第二步 MD5(e99a18c428... + 1715678900) = f1d2d2f924e986ac86fdf... (这就是最终的 sign)

注意:时间戳 ts 是秒级单位的,前后误差太大会报错,记得校准服务器时间。

2. 构造请求 Body

请求方式用 POST,数据格式用 JSON。这是最稳的,避免了参数里有特殊字符转义的问题。

  • 如果是控制普通 WiFi 插座,直接传 device 就行。

  • 但 DC-10A 是 Zigbee 设备(透传),必须告诉云平台“通过哪个网关”去找 DC-10A。所以要在请求里加上 gateway 字段

假设你要打开 DC-10A(设备ID: 110),连接的网关ID是 5566。

JSON 结构如下:

如果是关闭,把 order 里的 1 改成 0 就行了。

3. 完整请求示例

假设:

  • AppID: test_app

  • DeviceID: 110

  • GatewayID: 5566

  • 要执行动作:开启

Python 代码示例:

预期返回:如果成功,平台会返回 {"code": 200}

注意:返回 200 只代表指令下达成功,并不代表设备已经执行了(网络可能有延迟)。如果设备离线,会返回特定错误码。

三、 进阶技巧:极速响应与状态获取

1. 局域网私有化部署(减少延迟)

如果你是在家里搭建本地智能家居系统(比如 HomeAssistant),觉得数据绕一圈云端有点慢,芯步的 DC-10A 支持局域网通信

你可以搭建自己的 MQTT Broker 或 HTTP 服务器,让网关直接把指令发给设备,不经过外网,响应速度能提到几十毫秒内 。具体配置在网关的管理后台可以设置。

2. 获取设备当前状态

远程控制只是第一步,很多时候你想知道灯到底开着没。这需要订阅设备的上报消息。

DC-10A 状态变化时(比如你用手按了开关,或者被远程关掉),网关会上报状态到云端。你需要设置一个消息接收 URL,让芯步平台把状态变化实时推送给你

推送示例(JSON):

四、 一些实在的小

  1. 重试机制:网络有时候会波动,如果控制指令发过去超时了,可以设置 200ms 后重试一次,体验会更好。

  2. 透传与非透传:千万记得 DC-10A 是 Zigbee 设备,请一定要带上 gateway 参数。如果是直接用另一款 WiFi 通断器,那就不需要 gateway,直接 device + order 就行了,别搞混。

  3. 调试工具:刚开始调试时,可以用 Postman 配合在线签名计算工具试试水,先把签名搞通了,再去写代码,省心很多。

总结一下DC-10A 的对接逻辑就是 “带路” ,因为它是 Zigbee 设备,不能直接接收 WiFi 指令,所以只要在 HTTP 请求里指明了 gateway 参数,剩下的开关逻辑(order 里的 power)就和普通插座一模一样了。