10A智能开关AC2这款产品的核心优势在于它的HTTP接口非常开放,不用折腾复杂的协议,只要能发网络请求就能控制。下面我用口语化的方式,一步步拆解如何实现延时控制。
解决方案:用芯步AC2智能开关实现“延时通断”控制
一、 准备工作:先认亲(拿到钥匙和门牌号)
在写代码之前,你首先得去芯步的后台拿到两样东西,不然门都摸不着:
AppID 和 AppSecret:这相当于你在芯步平台的“用户名”和“密码”。登录芯步控制台,在“开发设置”里就能看到。
设备ID:就是你那个10A智能开关AC2的身份证号。把设备配网添加到后台后,在设备列表里就能找到那一串数字。
小提示:AC2支持HTTP接口和WebSocket两种方式,为了简单起见,咱们直接用HTTP POST请求,哪怕是Excel的VBA都能调。
二、 核心算法:签名(别怕,就是算个数学题)
芯步的接口为了安全,每次发命令都要带个签名。虽然看着像那么回事,但其实逻辑极其简单,任何后端语言(PHP, Java, Python, Go, Node.js)照着抄就行
公式
sign = md5( md5(AppSecret) + ts )步骤
把你拿到的
AppSecret做一次MD5加密。获取当前的时间戳
ts(就是自从1970年1月1日到现在的秒数,比如1734567890)。把第1步的结果和
ts拼在一起,再做一次MD5加密,结果就是sign。
举个例子(伪代码思维):假设 AppSecret = “abc123”,ts = “1734567890”。第一步:hidden_key = md5("abc123") 得到 “xyz...” 。第二步:sign = md5("xyz..." + "1734567890")。搞定!
三、 重头戏:如何实现“延时通断”
重点来了!AC2这个设备比较人性化,它原生支持两种“延时”模式,不需要你自己在代码里写sleep阻塞线程。
场景假设:我想让插座先通电3秒钟,然后自动断开。这叫什么?这叫 “先通后断” 。
请求地址https://api.thingboot.com/{你的AppID}/device/control/?sign={你算的sign}&ts={当前时间戳}
请求方式:POST请求头Content-Type: application/json请求体
命令解释“point”:3000 就是“先通后断”的指令,3000是毫秒数(即3秒)。设备收到后,会立刻吸合继电器(通电),3秒后自动断开。
反向操作如果你想实现 “先断开,过一会再接通” (比如控制水阀冲一下水就关),那就把 point 换成 reset
*注:有些文档里对于单路设备也用 point1 或 reset1,你可以对着产品手册看,AC2-10A通常直接用 point 就行。*
四、 实战代码演示(PHP版 & 命令行版)
光说不练假把式,这里用最常见的PHP写个例子,大家一看就懂
如果你想用命令行测试(最快速的方法)打开终端(Linux/Mac)或Git Bash,直接复制下面这串(记得改参数)
五、 进阶技巧:捕获设备状态(消息推送)
如果你想知道“那3秒钟到底有没有执行成功”,或者用户按了开关你需要在系统里记录下来,AC2支持状态上报。
你得在自己的服务器上写一个接收地址(URL),然后去芯步控制台设置消息推送。设备状态一变(比如从通变成断),平台就会把数据POST到你服务器上。这样,不管是用手机App控制、按开关物理按钮,还是用代码控制,你都能知道插座现在是开着还是关着。
总结
接入AC2实现延时控制,其实就是调用一个HTTP链接的事。
想让他亮一下就灭:发
{"order":{"point": 毫秒数}}想让他灭一下就亮:发
{"order":{"reset": 毫秒数}}
不需要复杂的硬件PWM波,也不用在代码里写死循环等待,几行代码就搞定了。