一、背景与需求
在很多场景下——比如共享自习室、共享台球厅、办公室或者小仓库——我们经常需要对照明设备进行定时开关控制。早上自动开灯,晚上自动关灯,既能省电又不用人工跑一趟。
芯步的 4路智能照明控制器(型号:UNI-KZQ-ZM-4) 正好能解决这个问题。这台设备支持4路独立控制,每路最大可带10A或16A的负载,不光能接照明,还可以接其他电器。最关键的是,它提供了开放的HTTP接口,我们只需要会一点点编程,就能给它加上定时功能。
下面我就从零开始,手把手说说怎么二次开发这套定时控制系统。
二、准备工作
动手之前,先把这几样东西备齐:
| 项目 | 说明 |
|---|---|
| 4路智能照明控制器 | 已通电、已联网(支持2.4G WiFi) |
| 设备ID | 在芯步控制台查看,每个设备有唯一标识 |
| AppID | 应用ID,平台注册后生成 |
| API密钥 | 用于生成签名(sign),验证接口权限 |
| 开发环境 | 任意支持HTTP的语言:Python、Node.js、Java、PHP等 |
芯步的接口设计得很简单,官方说“十分钟就能完成对接”,我们来看看是不是真的。
三、接口调用基础
3.1 接口地址与格式
控制设备用的是这个接口:
几个参数的意思:
{AppId}:你创建的应用ID{sign}:签名,用来验证身份(后面会说怎么生成){ts}:当前时间戳,防止请求被重放攻击
请求体是JSON格式,需要带上设备ID和命令:
3.2 命令格式详解
对于4路控制器,控制每一路开关的命令格式是
| 操作 | 命令(order) | 说明 |
|---|---|---|
| 开启第1路 | {"power1":"1"} | 1=开 |
| 关闭第1路 | {"power1":"0"} | 0=关 |
| 开启第2路 | {"power2":"1"} | 以此类推 |
| 关闭第2路 | {"power2":"0"} | |
| 开启第3路 | {"power3":"1"} | |
| 关闭第3路 | {"power3":"0"} | |
| 开启第4路 | {"power4":"1"} | |
| 关闭第4路 | {"power4":"0"} |
如果你想同时控制多路,把命令拼在一起就行,比如同时开启1、3路:
3.3 签名生成(Python示例)
签名算法一般是对参数排序后拼接密钥再取MD5(具体以官方文档为准),这里给个参考写法:
四、定时控制方案设计
4.1 整体架构
定时控制系统不需要太复杂,核心就是一个定时器 + API调用的组合:
flowchart LR
A[定时任务
(每天固定时间触发)] --> B[计算当前
要执行的操作]
B --> C{判断动作类型}
C -->|开灯| D[调用API
powerX=1]
C -->|关灯| E[调用API
powerX=0]
D --> F[4路控制器
执行指令]
E --> F说白了就是:写一个脚本,里面定义好什么时间开哪一路、什么时间关哪一路,然后用系统的定时任务(比如crontab)或者写个死循环轮询来触发。
4.2 方案一:简单脚本 + 系统定时任务
这是最简单的方式,写一个只执行一次开关的脚本,然后用操作系统的定时任务去调用它。
Python脚本 control_light.py
然后在Linux/Mac上用crontab设置定时任务,比如每天早上8点开1路,晚上10点关1路: