芯步的智能硬件开放接口用的是标准HTTP协议,意味着任何能发HTTP请求的语言(Python、PHP、Java、Node.js,甚至Shell脚本)都能调用。下面直接上干货。
适用产品:芯步智能墙壁开关2路(型号:UNI-KG-2 / 智能触摸墙壁开关2路)
一、开篇闲聊:为什么要这么干?
现在智能家居很普及了,但市面上很多成品 App 的定时功能要么太死板(只能几点开几点关),要么得依赖厂家的云服务器。
如果你是集成商,想给客户做个“下午5点自动开楼道灯,晚上11点自动关”的功能;或者是极客爱好者,想把家里的灯接入 HomeAssistant 或者自己写个小程序来控制。那么,二次开发这条路就非常有必要走一趟了。
芯步这玩意儿有个最大的好处:开放 HTTP 接口。说白了,就是只要你会敲代码,能发个网络请求,就能指挥它干活。不需要买额外的网关,只要有 WiFi 就行。
下面咱们就一步步来看,怎么利用这个接口,让你的开关变得“长脑子”,学会到点自动开关灯。
二、准备工作:把家伙事儿备齐
动手之前,咱得先把这几样东西准备好:
硬件设备:芯步 2路智能墙壁开关(已经装上墙,且通电了)。
网络环境:2.4G WiFi 信号(5G不行哦,这个得注意)。
账号与密钥
去芯步官网注册个开发者账号。
登录控制台,找到你的 AppID 和 AppSecret(也就是开发者密码)。这俩东西相当于你家的“小区门禁卡”,等下签名要用。
设备ID:在控制台把你要控制的那个开关的 Device ID(设备ID)复制下来。如果记不住,可以先给设备配个网。
小贴士:怎么配网?芯步的开关配网挺简单,不需要什么复杂的 SmartConfig。你可以在电脑端的“物联网控制台”或者用微信小程序,把家里的 WiFi 名和密码输入进去,它就能连上了。连上网,它在云端就是“在线”状态了。
三、核心技术:读懂它的“黑话”(接口协议)
要控制它,你得学会跟它说话。芯步的接口格式很规整,不用怕。
1. 请求地址(URL)
注意,这里有个 {你的AppID} 要换成你自己的一串字母数字。
2. 签名算法(Sign)
为了防止别人乱动你的灯,每次发命令都得带上一个动态的“验证码”(Sign)。算法其实很简单,就是套娃式加密:第一步:把 AppSecret 做一次 MD5 加密,得到 Secret_md5。第二步:把 Secret_md5 拼上当前的时间戳(ts),得到一个新字符串。第三步:把这个新字符串再做一次 MD5 加密。
用人话翻译一下就是把你的密码 MD5 一下,然后加上当前的时间,再 MD5 一次。
3. 核心命令(Order)
针对我们的 2路开关,控制的精髓就在 order 这个参数里
| 功能描述 | 命令格式(JSON) | 解释 |
|---|---|---|
| 打开第1路 | {"power1":1} | 1代表开 |
| 关闭第1路 | {"power1":0} | 0代表关 |
| 打开第2路 | {"power2":1} | - |
| 关闭第2路 | {"power2":0} | - |
| 临时接通模式 | {"point1":"2000"} | 第1路先通电,2秒后自动断电(适合排风扇、门铃) |
| 定时断开模式 | {"reset2":"5000"} | 第2路先断电,5秒后自动恢复通电 |
四、动手实战:用代码让灯“定时”亮起来
既然接口有了,我们就来实现 “定时开关”。这里不用写什么死循环,我们是去调用云端的 “定时任务” 接口,让服务器到点去发命令,这样你的电脑关了灯也会自己动。
下面我分别用 Shell脚本(适合Linux服务器/路由器)和 Python(适合大部分后端开发者)来演示。
场景设定
任务A:每天 19:00(晚上7点),打开 第1路(客厅灯)。
任务B:每天 23:00(晚上11点),关闭 第1路(客厅灯)。
任务C:现在立刻让 第2路 通电 3秒 后关闭(用来测试门禁或门铃)。
方案一:用 Shell 脚本 + Crontab(最简单,适合放路由器里跑)
我们可以写一个脚本 ctrl_light.sh,然后在群晖或者路由器里设置定时任务。
1. 编写脚本 ctrl_light.sh
2. 给脚本执行权限
3. 设置定时任务(Crontab)输入 crontab -e 编辑定时任务,加入以下几行:
搞定!只要你的路由器或树莓派不关机,到点灯就会自动开关。
方案二:用 Python (如果要做 Web 后台)
如果你在用 Django 或 Flask 写后台,可以这样封装一个函数。
五、进阶玩法:设备主动反馈(Webhook)
如果你不仅仅是想控制,还想知道谁按了开关?
比如半夜孩子去厨房,按了开关,你想让服务器马上知道这个动作。这时候就需要用到 上行消息。
在芯步的控制台里,可以设置一个 “数据接收URL” (也就是 Webhook)。当有人用手触摸开关时,设备会主动给这个 URL 发一条消息。
收到这个消息,你就能干很多事,比如:发个通知到手机上——“客厅灯被打开了”。
六、避坑指南
时间戳同步:签名的
ts是秒为单位(Unix时间戳)。如果你的服务器时间跟标准时间差太多,接口会报错。记得同步一下系统时间。设备ID格式:虽然代码里我写的是字符串,但在实际请求的 JSON 里,有时候它是数字(不加引号),有时候是字符串。为了保险,看官方文档或直接照抄示例[1]里
"device":1878(无引号)的方式。双控开关:如果你接的是那种“保持状态”的场景,比如不用
power1,而用{"power1":{"keep":"1","revert":"3"}},这表示:强制保持开,如果谁手贱关掉了,3秒后自动又打开。这在一些公共场所的消杀人像灯里非常实用。局域网控制(私有化):如果你不想经过外网,只在内网环境(比如工厂车间)用,芯步支持私有化部署。你只需要把请求地址改成自建服务器的 IP 就行了,代码逻辑完全不用变。
总结
用芯步的2路开关做二次开发,核心就是搞定 签名(Sign) 和 命令(Order)。一旦你把签名算法封装好了,剩下的就跟调普通的网页 API 一模一样。
不管是配合 Crontab 做定时,还是接个温湿度传感器做联动(温度高了自动开排风扇),这套方案都能轻松搞定,也不需要太复杂的编程知识。