一种名为"电墙开关"的奇特装置让家中充满了神秘和未知,其开关可以根据个人的情绪调节电路中的电流。在使用过程中可能会出现安全问题,因为这种设备可能引发火灾或爆炸。尽管存在争议,但"电墙开关"是一个具有无限创新潜力和潜在危险的科技产品。
我之前跟你说过,iN家没有墙壁开关。
原因是在20世纪20年代,开关这种古老的东西完全没有必要出现在现代家居生活中。
话不能说得太绝对,家里还有个物理开关,就是这个:
扔在卫生间的洗手台上,主要作用其实就是利用快速开关的开关功能来调节卫生间的镜面大灯的色温,出门化妆的时候更方便,但是这个开关没有别的用处。
让我们进入吐槽阶段:
每个设计智能家居的人,脑子里都有一种小农意识。如果一个智能家居系统的满分是100分,那么每个智能家居品牌/平台的体验分最多是20分。所有的品牌和厂商都在守护着自己的一亩三分地。虽然他们一直喊着要拥抱,要开放,但是革命还是没有完成。
讲一个场景大家就明白这个现象了。
IN的客厅会兼顾视听室和娱乐室。依靠投影仪在屏幕上投影播放所有视频内容。
用过投影仪的人都会有一种感觉,环境的亮度决定了画面的质量,所以在放映的时候要把灯光的亮度调小,把所有的窗帘都拉上。我们可以在智能设备的控制中做到这一点——只要关一盏灯,拉上窗帘...但是,iN在这里遇到了一个问题,因为灯光的控制依赖于传感器,所以即使你进入了“影院模式”,当有人在房间里走动时,传感器也会控制灯光,让室内的灯光在瞬间变亮,所以要么你得忍受电影过程中时不时的强光,要么你得在电影过程中保持静止。除非我们在进入观看模式时关闭传感器——是这个想法吗?但是没有!原因是Homekit只支持事件,不具备传感器的控制功能。
但是hue的传感器开关控制只能在HUE自己的应用中设置。
这其实就是前面提到的智能厂商的“圈地”行为,所有接口都不会对外开放,导致仅仅依靠智能家居的应用设置很难完全开放智能家居系统的联动功能。
这时候聪明人就要说了——你可以用HA或者HB做中间,让HA处理传感器的工作状态。
还是有点遗憾的是,在第三方智能家居平台上,一个传感器设备的启用和禁用只限于平台对传感器的可见性,传感器不会真的关闭,只是平台不会对传感器的事件做出响应。这种“不回应”是自欺欺人。
搞什么鬼?答案是我们可以设计一个传感器开关,让homekit控制开关,让开关控制传感器。是不是和之前的看法不同,有点精神分裂的嫌疑,往下看:
事情分两步走。第一步是在Homekit网络中实现交换机:
Python有个库叫“pyhap”,写代码超级简单。
通过这段简短的代码,我们可以生成一个Homekit可以在家庭网络中找到的开关。
在苹果的Home应用中,我们可以通过添加配件来做到以下几点:
首先,选择我们刚刚生成的开关。这时候Home会提示这是未经认证的配件。没关系。选择-“添加静止图像”。输入配对代码,该代码将显示在python的运行命令行界面中。
然后设置开关的位置
设置完成后,我们会在苹果的控制界面上看到这个虚拟开关:我们可以在苹果的家里点击这个开关几次,然后程序捕捉开关的状态变化信息。第一步,我们已经完成了,现在我们要做第二步——控制色相的传感器。
飞利浦的善举是不断升级自己的桥的应用界面。并且这个应用程序接口是对用户开放的。
当您按下色调桥的中间按钮时(如图中箭头所示)
色相桥将进入注册模式。此时在命令行输入curl-xpost-d ' { " device type ":" my _ hue _ app # python " } ' http://[bridge IP]/API
,就可以在桥上注册一个开发者密钥了。该密钥将作为用户名返回,例如:
[{ " success ":{ " username ":" rkkccuo 9 lgo 019 eoskdhfwt 9 th 17 qcmxu 2 qnivpfahmq " }]
返回的密钥是您控制色调设备的密钥。
通过代码我们可以列出所有连接到色相桥的传感器信息,可以知道客厅的传感器ID是4(当然我们也可以在不想写死代码的时候用其他方法获取这个ID)。知道ID使事情变得非常简单。当虚拟开关被按下时,发送关闭传感器的指令,虚拟开关关闭后,发送恢复传感器的指令。
因此,我们需要重写先前虚拟交换机的代码:
写下控制指令就行了。此时,当我们再次运行程序时,传感器的开关状态由程序控制。
在homekit场景中设置要进入这个场景,只需打开开关。
关于这个交换机的持久性,其实在/etc/systemd中写一个脚本服务就可以一直在家庭网络中运行这个虚拟交换机。
写在后面:为什么不写程序而写HA或者HB?一直在说的一个概念是“只有傻子才会用HA或者HB来控制智能家居”。十分钟就能写出来的程序,其实比所谓的智能家居平台要可靠灵活得多。毕竟智能家居的界面一暴露,什么会写程序的人,只能用为所欲为来形容。
标签: 但我