我们以芯步的 “智能墙壁开关2路” (产品型号UNI-KG-2)为例,结合其开放接口,写一份关于如何实现多设备联动的解决方案。
这份方案会稍微偏向技术逻辑一点,但尽量让你看懂,后端程序员或者动手能力强的DIY玩家都可以参考。
一、 我们要解决什么问题?
很多时候,我们说“智能家居”不只是一两个独立设备,而是“联动”。比如:按一下门口的开关,全屋的灯都关了,同时窗帘合上,语音播报“一路平安”。
芯步这款智能墙壁开关(2路)本身就支持HTTP接口,这意味着它不再是一个孤立的硬件,而是你整个自动化系统里的一个“执行手脚”。
二、 核心思路:谁是“大脑”?
要实现联动,你得有个“大脑”。由于芯步提供了开放的HTTP API,我们不需要依赖它自带的App定时任务,而是可以用你自己的服务器或者局域网内的树莓派/NAS作为中央控制中枢。
逻辑链路如下:
触发源(另一个开关 / 传感器 / 语音助手) -> 中枢服务器(接收事件/处理逻辑) -> HTTP指令 -> 芯步墙壁开关(执行开/关)
三、 准备工作:认识你的“墙壁开关”
首先,你手里得有这款2路开关。它最核心的亮点是:可以独立控制2个回路(比如第1路接客厅灯,第2路接走廊灯)。
根据官方手册,它的控制指令非常简单,是标准的HTTP请求。我们需要知道:
设备ID: 每个开关在芯步后台的唯一编号。
API地址:
https://api.thingboot.com/{AppId}/device/control/鉴权方式: 签名(Sign) + 时间戳(ts)。虽然有点麻烦,但这是为了安全,防止谁都能开你家灯。
核心指令
开第1路:
{"power1": 1}关第1路:
{"power1": 0}开第2路:
{"power2": 1}关第2路:
{"power2": 0}
一个小彩蛋: 它还有“点动模式”指令point1,相当于按一下通一下然后自动断,这个在某些特殊场景(比如给老式门铃供电)很有用。
四、 实战场景:用“无线开关”控制“墙壁开关”
假设我们有一个随意贴(无线开关,假设它是另一个芯步设备或者只发MQTT的任意设备)。我们想实现:单击无线开关,墙壁开关的第1路状态翻转(如果灯亮就关,灯灭就开)。
1. 接口对接的“麻烦事”——签名计算
很多朋友看到API文档里的md5(md5(AppSecret)+ts)就头大,这里帮你拆解一下。用PHP、Python或任何编程语言,步骤如下:
Step 1: 你有AppSecret(比如是
abc123)。Step 2: 对它做一次MD5,得到
str1。Step 3: 拿当前的秒级时间戳
ts(例如1714556800),拼接到str1后面,得到str2。Step 4: 对
str2再做一次MD5,就是你的签名。
其实你写好一次这个函数,以后就不用管了。
2. 中枢服务器的处理逻辑
你的服务器需要接收无线开关的信号,然后执行以下逻辑(伪代码):
3. 关于“获取当前状态”的
这里有个工程小坑:墙壁开关被物理按键按下时,它是直接动作的。为了保持你的系统状态同步,官方文档里提到了“实时状态上报”功能。
最佳实践是: 让墙壁开关在每次状态改变时(不管是APP控制、联动控制还是你手按),都主动上报一条消息给你的服务器。这样你的大脑就知道灯到底亮没亮,避免出现“想关灯结果开了灯”的尴尬。
五、 进阶玩法:打造“离家模式”一键全关
这个场景更简单,也最实用。你想在出门时,喊一句“我走了”,或者按一下门口的虚拟按钮,就把家里所有芯步的开关都切断。
这时候,芯步接口的 “多设备控制” 能力就派上用场了。
你可以一次HTTP请求,同时控制多个设备。比如你要控制客厅开关的1路和2路,以及卧室开关的1路:
请求参数:
device:
"1878,1880"(注意用逗号隔开不同设备的ID)order:
{"power1":0, "power2":0}(这会让所有指定设备的第一路和第二路都变为0)
这么做的好处是什么?
极低延迟: 不用循环发几十个请求,一次网络往返,全屋灯灭。
原子性: 虽然开关是独立的,但操作是一次性的。
六、 如果不想折腾服务器?—— 私有化部署与规则引擎
如果觉得写代码太麻烦,芯步的接口也支持 “私有化部署”。
意味着你可以直接把消息推送到你自己局域网的一台电脑上。你可以用 Node-RED(一个图形化的编程工具,很容易上手)来搭一个中枢。
在Node-RED里做联动很简单:
拉一个 HTTP Input 节点,用来接收墙壁开关按下的消息。
拉一个 Function 节点,写一行
msg.payload = {"power1":1};拉一个 HTTP Request 节点,配置成芯步的API地址。
连线。
几分钟就能搞定一个简单的联动,而且全程局域网,不需要外网也能用,断网了灯照样能联动。
七、 总结
对接芯步的墙壁开关做联动,其实就是 “命令转换” 的过程。
不管你前面接的是小米无线开关、苹果HomeKit、还是家里自己焊的一个人体传感器,只要最终你在你的服务器里拼出来这样一个命令发送出去,联动就完成了:
既然它支持HTTP,就几乎能接入任何现代的智能家居系统。只要你的“大脑”能发HTTP请求,它就能听话。