CATALOG

我们以芯步的 “智能墙壁开关2路” (产品型号UNI-KG-2)为例,结合其开放接口,写一份关于如何实现多设备联动的解决方案。

这份方案会稍微偏向技术逻辑一点,但尽量让你看懂,后端程序员或者动手能力强的DIY玩家都可以参考。

一、 我们要解决什么问题?

很多时候,我们说“智能家居”不只是一两个独立设备,而是“联动”。比如:按一下门口的开关,全屋的灯都关了,同时窗帘合上,语音播报“一路平安”

芯步这款智能墙壁开关(2路)本身就支持HTTP接口,这意味着它不再是一个孤立的硬件,而是你整个自动化系统里的一个“执行手脚”

二、 核心思路:谁是“大脑”?

要实现联动,你得有个“大脑”。由于芯步提供了开放的HTTP API,我们不需要依赖它自带的App定时任务,而是可以用你自己的服务器或者局域网内的树莓派/NAS作为中央控制中枢。

逻辑链路如下:

触发源(另一个开关 / 传感器 / 语音助手) -> 中枢服务器(接收事件/处理逻辑) -> HTTP指令 -> 芯步墙壁开关(执行开/关)

三、 准备工作:认识你的“墙壁开关”

首先,你手里得有这款2路开关。它最核心的亮点是:可以独立控制2个回路(比如第1路接客厅灯,第2路接走廊灯)。

根据官方手册,它的控制指令非常简单,是标准的HTTP请求。我们需要知道:

  1. 设备ID: 每个开关在芯步后台的唯一编号。

  2. API地址https://api.thingboot.com/{AppId}/device/control/

  3. 鉴权方式: 签名(Sign) + 时间戳(ts)。虽然有点麻烦,但这是为了安全,防止谁都能开你家灯。

  4. 核心指令

    • 开第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里做联动很简单:

  1. 拉一个 HTTP Input 节点,用来接收墙壁开关按下的消息。

  2. 拉一个 Function 节点,写一行 msg.payload = {"power1":1};

  3. 拉一个 HTTP Request 节点,配置成芯步的API地址。

  4. 连线。

几分钟就能搞定一个简单的联动,而且全程局域网,不需要外网也能用,断网了灯照样能联动

七、 总结

对接芯步的墙壁开关做联动,其实就是 “命令转换” 的过程。

不管你前面接的是小米无线开关、苹果HomeKit、还是家里自己焊的一个人体传感器,只要最终你在你的服务器里拼出来这样一个命令发送出去,联动就完成了:

既然它支持HTTP,就几乎能接入任何现代的智能家居系统。只要你的“大脑”能发HTTP请求,它就能听话。