CATALOG

芯步的16A智能插座开放了HTTP接口,定时控制其实不需要你自己维护定时任务——接口本身就支持“先通后断”这类一次性延时指令。下面直接说怎么对接。

芯步16A智能插座对接方案:实现定时开关电器

一、搞清楚我们要干啥

简单来说,就是通过代码调用芯步的开放接口,控制16A智能插座的通断。实现定时开关不需要你自己写定时任务,直接用接口里的延时参数就能搞定。

这个16A智能插座,说白了就是一个可以用WiFi控制的大功率插座。它的接口是完全开放的,支持HTTP请求,什么编程语言都能调。而且芯步的开放平台永久免费,这个得点个赞

二、准备工作

动手之前,你需要搞到三样东西:

  1. AppID —— 你的应用ID,在芯步控制台的“开发设置”里能看到

  2. AppSecret —— 开发者密码,也在同一个地方

  3. 设备ID —— 就是你那个16A插座的ID,配网后在控制台能看到

配网很简单:下载芯步小程序,登录你的账号,添加你家WiFi(注意必须是2.4G频段),然后把插座通上电,小程序里点一下就能搜到配上了

三、签名怎么算(这个坑别踩)

芯步的接口需要携带签名,这是很多新手容易卡住的地方。签名算法其实不复杂:

一步步来:

  1. 把AppSecret做一次MD5加密,得到一个32位字符串

  2. 把上面得到的字符串和ts(当前时间戳,10位数字)拼在一起

  3. 把拼接后的字符串再做一次MD5

ts就是当前时间的秒数,比如 1695024000 这样。两个MD5套在一起,看着晕但其实写代码也就几行

四、核心:怎么实现定时开关

16A插座支持几种控制方式

  • 直接开关{"power":1} 开,{"power":0}

  • 先通后断(定时关){"point":3600000} 先通电,1小时后自动断开

  • 先断后通(定时开){"reset":300000} 先断电,5分钟后自动接通

注意这些时间的单位都是毫秒

场景1:让鱼缸水泵工作1小时后自动停

这个场景用 point 命令。point 的意思是先接通,然后过了指定时间后自动断开。

场景2:让热水器在晚上6点自动开启

这种场景分两步走:先计算当前到晚上6点还有多少毫秒,然后用 reset 命令。reset 的意思是先断开(如果现在是通的话),然后过了指定时间再接通。

比如现在是下午5点,离6点还有3600000毫秒(1小时),那就发:

如果你的业务场景需要每天固定时间重复(比如每天晚上10点关),那在你自己服务器上写个cron定时任务,到点调用 power=0 就行了。

五、完整的请求示例

以Node.js为例(其他语言同理,无非就是发个HTTP请求):

返回 {"code":200} 就表示成功了

六、几个实际场景举例

鱼缸水泵:每小时开50分钟停10分钟。你需要在自己服务器上算好时间,每10分钟发一次开,然后带一个 point:3000000(50分钟=3000000毫秒)让它自动关。

电动车充电:晚上10点开始充,早上6点停。在晚上10点发开指令,同时带一个 point:28800000(8小时=28800000毫秒)。或者在你服务器上设早上6点的定时关。

办公室饮水机:早上9点开,下午6点关。在服务器上设两个cron:9点发 power=1,18点发 power=0

七、注意事项

  1. 接口限流:单个设备每秒最多请求1次,别写死循环去刷

  2. 单位是毫秒pointreset 的值都是毫秒,1秒=1000,1分钟=60000,1小时=3600000

  3. 设备需要在线:如果插座断网了,命令发过去也没用。可以订阅设备上下线状态来做异常处理

  4. 私有化部署:如果你不想走公网,芯步也支持把接口部署到你自己的局域网里

整体来说,芯步这套接口设计得还算清爽,核心就是拼好签名、选对命令、算好时间。不用写复杂的定时逻辑,一个 pointreset 就能搞定大部分场景。