CATALOG

DC-10A 这款智能通断器通过 HTTP 接口控制,实现延时通断的核心思路就是“先计算签名,再下发带定时参数的指令”。下面我把整个流程拆开来讲,包括前期准备、签名算法、几种常见场景的具体指令写法,以及一些踩坑提醒。

一、 前期准备:你手里的“钥匙”和“门牌号”

在开始敲代码之前,有两样东西你需要在芯步的后台找出来,这相当于你开门的钥匙和门牌号:

  1. AppID 和 AppSecret (开发者密码) :登录芯步控制台,在“开发设置”里找到这两个。注意:AppSecret 泄露了别人就能控制你的设备,记得保管好。

  2. Device ID (设备ID):给 DC-10A 通上电,连好 WiFi。连网通常是用“芯步”的小程序,扫说明书上的二维码就能配网,很简单。配好网后,在控制台的设备列表里就能看到一串数字,那个就是 Device ID

二、 核心难点:搞定签名(Sign)

芯步的接口为了安全,所有指令都要带一个动态生成的签名,不然发不过去。这个算法稍微有点绕,我用人话给你拆解一下。

算法规则:Sign = md5( md5(AppSecret) + ts)

拆解步骤:

  1. 把你刚才拿到的 AppSecret 做一次 MD5 加密,得到一串32位的字符串,比如叫 str1

  2. 获取当前的时间戳 (ts) 。注意这里是秒数,不是毫秒,比如 1715328000

  3. str1ts 直接拼起来 (注意是字符串拼接,不是相加),得到一个 str2

  4. 再把 str2 做一次 MD5 加密,最终得到的就是 Sign

举个例子:假设你的密钥是 abc123,当前时间是 1715328000

  • 第一次加密:md5(‘abc123’) = ‘e99a18c428cb38d5f22e03...’ (取前几位举例)

  • 拼接:str2 = ‘第一次的结果’ + ‘1715328000’

  • 第二次加密:Sign = md5(str2)

小技巧:你如果只是想赶紧把功能跑通,可以在控制台的“开发设置”里打开“调试模式”。打开后,系统会暂时忽略 Sign 和时间戳的校验。等代码写好了正式上线再把调试模式关掉就好了

三、 正式对接:让开关“到点再动”

HTTP 接口的请求地址是固定的,不管你是用 Python、Java 还是用 Postman 测试,都往这个地址发 POST 请求

请求体 Headers:Content-Type: application/json

请求体 Body:Body 里有两个关键字段:device (填你的设备ID) 和 order (填你要它干什么)

下面就是核心了:DC-10A 怎么实现延时控制? 它支持两种“自定义动作”模式,不需要你在代码里去写 Sleep 或者定时器,而是直接告诉它:“你先通电,等2秒再断电”,剩下的设备自己执行。

模式名称动作描述适用场景指令示例
Point 模式先通后断:立即开启线路,保持若干毫秒后自动关闭。控制一个门禁开关(通电开门,1秒后自动断电以保护电磁锁);控制一个只是“触发”一下的机器。{“point1”: 500}
Power 模式直接控制:无条件开启或关闭。正常开关灯,或者实现“先断后通”的逻辑。{“power1”: 1}

第一种场景:简单的定时关闭 (Point 模式)

这个场景非常常见。比如你要控制一个抽风机,要求它打开 10 秒 后自动关闭,防止一直开着浪费电。这时候你不用写循环,直接发这条指令过去:

解释:DC-10A 收到 point1:10000 这个命令后,会立刻闭合开关(接通电路),保持 10 秒,时间一到自动断开。如果在这个过程中你又发了一个指令,它会覆盖之前的动作。

第二种场景:先断电再通电或精准延时开启

如果你想实现“先关掉,过一会再开”,或者仅仅是“延迟5秒后再开启”,那就需要配合 power 和延时机制了。因为 DC-10A 的延时动作通常依赖于 point,如果你需要延时开启,逻辑是这样的:

  1. 先发一个“什么都不做”的等待指令(或者直接利用 point 的特性)。

  2. 芯步的平台逻辑里,如果直接发 {“power1”:1} 是瞬间响应的。要实现“过5秒再开”,通常是在业务服务器(你自己的后端)做定时,或者如果设备支持,可以使用“先断后通”的模式。

查阅接口资料,DC-10A 支持 point (先通后断) 和继电器控制。如果你的需求是“保持关闭 2 秒,然后开启”:实际上可以直接下发 power1:0 (关闭),然后由你的程序控制 2 秒后下发 power1:1 (开启)。不过,为了减少网络延迟,你可以直接使用单次定时任务。例如,让它在5秒后再执行开启:其实指令里包含时间戳的参数,但最简单的做法