极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关

科技布鲁布鲁泡 2024-07-09 20:52:38

之前和大家说过,在iN的家里是没有墙面开关的。

原因就是都到了二十一世纪二十年代,开关这种古老的事物已经完全没有必要出现在现代的家居生活中。

话不能说的太绝对,家里还有一个实体开关,也就是这个:

丢在卫生间的洗手台上,主要的功能其实就是利用了快速开关的切换功能来调节卫生间镜前灯的色温,在出门化妆的时候方便一些,但这个开关除此之外也就别无他用了。

下面进入吐槽阶段:

所有设计智能家居的人脑子里面都有小农意识。如果一个智能家居系统的满分是100分,那么现在的各家智能家居品牌/平台的体验分最多也就是20分。各个品牌和厂商都守着自己的一亩三分地,虽然口口声声的喊着拥抱开放,但革命的依然不彻底。

说个场景,大家就可以理解到这一个现象了。

iN的起居室会兼顾影音室和娱乐房。依靠一个投影机投射到屏幕上播放所有的视频内容。

如果使用过投影机的人都会有一个感受——环境亮度决定了画面的品质,因此在播放投影的过程中是要将灯光的亮度调低,并且拉上所有的窗帘的。这一点在智能设备的控制上我们可以做到——就是关个灯拉个窗帘嘛……

然而iN在这里就遇到了问题,由于灯光的控制是依靠传感器来实现的,因此即便是进入了“影院模式”,当有人在房间里走动的时候传感器会控制灯光,在一瞬间将室内的灯光调亮,这样一来要么你得忍受在观影的过程中时不时的来一下灯火辉煌,要不然你就得在观影的过程中一动不动。除非在进入观影模式的时候,我们将传感器关闭掉——是不是这个思路?但是不行!

究其原因就是Homekit对传感器的支持只有接受事件,但并不具备传感器的控制功能。

而HUE的传感器开关控制实际上只能在hue自己的应用中进行设定。

这其实就是之前说的智能厂商的“圈地”行为,并不会对外开放所有的接口导致如果只依靠智能家居的应用设置很难将智能家居系统的联动功能充分打通。

这时候就有聪明人得说了——你可以用HA或者HB来做一个中间体,让HA来处理传感器的工作状态。

依然很遗憾的是在第三方的智能家居平台上,对于一个传感器设备的启用和禁用仅仅局限于这个平台对传感器的可见性,传感器并不会真的被关闭,而是平台不会响应传感器的事件而已,这种“不响应”就是自欺欺人了。

怎么搞?——答案是我们可以设计一个传感器开关,让homekit控制这个开关,让开关控制传感器。和之前的观点是不是不同?有点精神分裂的嫌疑,且往下看:

事情分两步走,第一步我们先在Homekit网络中实现一个开关:

python有一个库叫做“pyhap”,写代码就超级无敌的简单了。

通过这一小段代码,我们就可以在家里的网络中生成一个Homekit可以查找到的开关。

在apple的Home应用中,我们可以通过添加配件来做下面的操作了:

首先选择刚刚我们生成的开关,这时候Home会提示这是一个未经认证的配件,无所谓,选择——“仍然添加”

输入配对码,这个配对码在python的运行命令行界面中会有显示。

然后设置一下开关的位置

设置完毕之后,我们就会在apple的控制界面上看到这只虚拟的开关:

我们可以在apple的home中点按几下这枚开关,这时候程序就捕获到了开关的状态变化信息。

第一步,我们就完成了,现在要做第二步——控制HUE的传感器。

飞利浦比较厚道的一点就是不断的升级自己网桥的应用接口。而且这个应用接口是对用户开放的。

当你按下hue网桥的中间按钮的时候(图中箭头所示)

hue网桥会进入注册模式。这时候在命令行中输入 curl -X POST -d '{"devicetype":"my_hue_app#python"}' http://【网桥IP】/api你就可以在网桥上注册一个开发者key。这个key会以username的形式进行返回,例如:

[{"success":{"username":"RKKCCuo9lGO019eoskdHFWT9THL7qcMxU2qniVPfAhmQ"}}]

返回的key就是你来控制hue设备的关键了。

通过代码我们可以列出hue网桥上所接的所有传感器信息,我们就可以得知起居室的传感器ID为4(当然了不想写死代码的时候我们也可以利用其他方式来获取这个ID)

知道ID后事情就相当简单了。在前面做的虚拟开关被按下的时候,发送指令让传感器关闭,在虚拟开关被关闭后,发送指令让传感器恢复。

所以,我们要改写前面虚拟开关的代码:

把控制指令写进去就可以了。这时候我们再运行程序的时候,传感器的开关状态就受到程序控制了。

在homekit的场景中设置进入这个场景,开关打开就可以了。

关于这个开关持久化的问题,实际上到/etc/systemd中,写成一个脚本service就可以在家庭网络中一直运行着这个虚拟开关。

写在后面:为什么不用HA或者HB反而要写段程序呢?一直在说的一个概念就是“只有傻子才用HA或者HB来控制智能家居”。十几分钟就可以写好的程序其实要比现在所谓的智能家居平台要靠谱的多,也要灵活的多。毕竟当一个智能家居的接口被暴露出来,作为会写程序的人能做的事情只能用为所欲为来形容了。

0 阅读:0