芯步16A86型智能插座支持HTTP接口直接调用,定时任务既可通过设备的“先断后通”命令一次性完成,也可在服务器端用定时任务(如cron)实现周期性调度。以下方案涵盖两种实现方式及签名算法细节。
解决方案:对接16A86型物联网智能插座实现定时开关电器
1. 概述
本方案基于芯步16A86型智能墙壁插座(UNI-QC-16A系列)的开放HTTP接口,旨在指导开发者或集成商通过编程方式实现电器的定时开关控制。
该插座支持标准86型底盒安装,额定功率高达3500W,适用于空调、热水器等大功率电器。其核心优势在于开放了简洁的HTTP API,允许任何支持HTTP请求的编程语言(如Python, Java, PHP, Node.js)或工具(如Postman, curl)进行远程调用。
实现定时主要有两种技术路径:
设备端定时(硬件级): 利用插座的
reset(先断后通)指令,一次性设定“延时关闭”功能。这种方式即使服务器或网络中断,设备也会执行指令,稳定性比较高。云端/服务器端调度(软件级): 通过服务器端的定时任务(如Cron Job、Windows Task Scheduler)在指定时间调用API接口发送开关指令。这种方式支持复杂的周期性规则(如每周一至周五早上8点开启)。
2. 准备工作与接口鉴权
在开始编码前,需获取必要的身份凭证和网络配置。
硬件安装与配网
将16A86型插座按说明书接入家中零火线(注意:16A插座通常需要专用线路,避免过载)。
通过“芯步”App或厂商提供的配网工具将设备连接至2.4GHz Wi-Fi网络,记录下生成的唯一 设备ID (Device ID)。
获取 API 凭证
登录芯步开发者控制台。
进入“开发设置”页面,获取 AppID 和 AppSecret (开发者密码)。
若在测试阶段,可开启调试模式暂时忽略签名校验以便快速验证;生产环境下必须严格计算签名。
核心接口说明:
请求地址:
https://api.thingboot.com/{AppID}/device/control/?sign={sign}&ts={ts}请求方法: POST
请求头:
Content-Type: application/json签名算法:
sign = md5(md5(AppSecret) + ts)。即先将AppSecret进行MD5加密,得到32位小写字符串,再拼接上当前Unix时间戳(秒),最后对整个字符串再次进行MD5加密。设备命令
{“power”: “1”}: 开启{“power”: “0”}: 关闭{“reset”: “3600000”}: 立即关闭,1小时后开启(单位:毫秒)。
3. 方案一:使用定时任务系统(适用于周期性定时)
这是最常用的方法,适合每天固定时间开关、工作日定时等场景。通过服务器端脚本定时调用API。
场景示例: 每天 22:00 关闭热水器,06:00 开启热水器。实施步骤:
编写一个脚本(如Python),封装API调用逻辑。
在服务器设置两个Cron任务。
Python 示例代码:
服务器 Cron 配置 (Linux):
4. 方案二:利用设备硬件定时(适用于一次性或延时任务)
芯步16A插座支持 reset (先断后通)和 point (先通后断)指令。这两个指令在服务器发出后即刻生效,设备内部开始倒计时,非常适合“倒计时关闭”或“倒计时开启”场景。
场景示例: 充电完成后自动断电。电动车充电器通常需要充电8小时后断电。实施步骤: 在充电开始时,发送一条指令。
Node.js (JavaScript) 示例:
指令逻辑说明:
point: 设备当前若为关闭状态,执行该指令后立即开启,保持指定毫秒数后自动关闭。reset: 设备当前若为开启状态,执行该指令后立即关闭,保持指定毫秒数后自动开启。
5. 安全注意事项与最佳实践
签名安全:
AppSecret严禁写入前端代码(如微信小程序、浏览器JS)中,必须存放于后台服务器。如果必须由前端控制,应由后端提供一个代理接口。负载限制: 该插座虽然支持16A/3500W阻性负载,但对于电机、LED灯等感性或容性负载,其启动电流较大,负载功率控制在500W以内,否则可能损坏触点。
状态同步: 带功率计量版本的插座会实时上报数据。在开发定时任务时,先通过API查询设备当前开关状态,避免重复发送相同的指令导致不必要的API调用。
超时重试: 网络波动可能导致指令下发失败,在代码中增加重试机制(如失败后每隔2秒重试一次,共重试3次)。