芯步20A智能断路器开放完整的HTTP API接口,你可以通过签名鉴权后直接下发命令实现远程通断控制。实现定时任务有两种方式:一是利用设备内置的“定时通断”参数(reset/point),无需后端维护定时队列;二是在你的服务器上用cron定时调用API触发。以下按“准备工作→核心接口→定时方案”的顺序展开说明。
一、 核心准备工作:获取密钥与设备ID
在进行二次开发之前,你需要准备以下三个关键凭证。这些信息在芯步官方的开发者控制台中获取。
AppId 和 AppSecret
登陆芯步官网,进入控制台的“开发设置”页面。
AppId:通常作为URL路径的一部分,用于标识你的应用身份。
AppSecret:用于生成接口签名(Sign)的密钥,请勿泄露。
设备ID (Device ID)
在控制台的“设备列表”或“产品管理”中,找到你已配网的20A智能断路器。
记录下那一串纯数字的ID(例如:
820720)。
二、 接口鉴权机制:签名计算
为了防止接口被恶意调用,芯步的API采用了动态签名验证。所有的控制请求都需要在URL中携带sign(签名)和ts(时间戳)。
签名生成逻辑(伪代码级说明):
具体步骤如下:
将你的
AppSecret进行一次MD5加密,得到字符串S1。获取当前的Unix时间戳(秒级,例如
1714352400),记为ts。将
S1与ts进行拼接,得到S2(注意:是拼接字符串,非加密)。将
S2再次进行MD5加密,最终得到的字符串就是sign。
为什么要这么做?这种机制确保了每次请求的签名都不同(因为ts在变化),同时服务端会校验时间戳的有效性,防止请求被抓包后重放攻击。
三、 即时控制与延时任务:接口命令详解
芯步的20A断路器不仅支持简单的开关,还内置了定时任务处理器。这意味着你不需要在服务器端维护复杂的定时队列,直接通过JSON参数告诉芯片“什么时候做什么事”即可。
1. 基础远程开关
这是最核心的功能,立即让断路器通电或断电。
请求地址:
POST http(s)://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}请求头:
Content-Type: application/json请求Body
2. 实现“远程定时任务”的两种方式
针对“远程定时任务”的需求,如果你希望实现“5分钟后关闭”或“先通电1小时再关”,使用设备自带的倒计时或定时属性,这样即便网络中断,设备也会在芯片内部执行完任务。
方案 A:简单延时任务(倒计时复位)该命令会立即改变状态,并在设定的毫秒数后自动恢复。这非常适合需要“临时通电”的场景。
应用场景:远程给服务器重启(先断后通,间隔10秒)、给电动车充电1小时后自动断电。
命令示例
reset:先执行断开动作(如果是断电状态,则先通电),等待interval毫秒后,执行相反动作。interval:3600000 毫秒 = 1 小时。
方案 B:设备内置定时(预先规划)虽然用户问的是“远程”下发,但你可以通过远程接口,为设备设置一组定时表。这利用了设备的本地RTC(实时时钟)能力。
场景:每日固定时间开关(如:每天早上8点开灯,下午6点关灯)。
实现:调用设备的时间表配置接口(具体参数视固件版本而定,通常包含
time和repeat字段),设备断网也会执行。
四、 实战开发:定时任务调度器架构
假设你需要构建一个后端服务来实现“动态定时任务”(例如用户在前端设置“今晚8点打开热水器”),推荐的技术架构如下:
前端/用户端:用户设定时间(2024-05-01 20:00:00)和动作(Power=1)。
后端逻辑(以Python + APScheduler或Linux Crontab为例)
你需要在你的服务器上建立一个任务表。
当到达设定的时间时,你的后端服务器执行签名算法,并发送HTTP请求到芯步的API。
代码核心逻辑示例(Python):
五、 针对20A产品的特定配置与高级功能
多路控制(如果是4路版本)如果使用的20A断路器是多路的(例如型号
AC4-20A),order中可以使用power1、power2等来单独控制每一路。私有化部署(局域网)如果对网络延迟或数据安全有比较高要求,20A断路器支持私有化部署。在设备配网时,可以将API地址指向你自己的私有服务器IP,所有控制指令将在局域网内闭环完成。
状态同步如果只是定时开关,不需要实时状态反馈即可闭环。但如果需要在界面上显示“当前是否通电”,使用芯步提供的MQTT协议或回调机制。设备状态变化时,平台会主动推送到你的服务器,这样你的数据库里就能实时记录断路器当前是ON还是OFF。
总结
通过对芯步20A智能断路器的二次开发实现远程定时任务,核心在于掌握动态签名算法。实现定时任务有两种路径:
简单场景(如延时断电):优先使用设备API中的
reset参数,由硬件本地执行,最为可靠。复杂场景(如每周固定多时段开关):在你的业务服务器上部署定时任务(Cron Job),在指定时间通过HTTP API下发
power指令即可。