【发布时间】:2018-11-08 15:18:50
【问题描述】:
一段时间以来,我一直在开发自己的“虚拟” HomeKit 配件——有一个软件桥,其中包含几个用 Scala 实现的配件(使用 Java HomeKit 配件库)。有了这个,我可以打开/关闭电视或条形音箱(使用一些不同的 API)。作为一个具体的例子,我已经实现了一个 HomeKit 电源开关设备,它允许我(通过 HomeKit)打开/关闭电视。
我的问题是:我的配件可以直接从我家读取另一个配件的状态(并监听变化)吗?
愚蠢的例子:我在客厅里有一盏飞利浦 Hue 灯。如果我关了灯,我想让电视知道灯现在已经关了,并决定它是否也应该关掉。
如果我只想在任何时候灯关闭时关闭电视,这很容易:我会设置一个自动化家庭应用程序,它会随时将“电视开关”设置为关闭灯熄灭。但这太简单了。想象一下,您想要决定不同设备的多个参数和多个状态。
目前,我正在通过在我的网桥上安装一些人工开关来模拟这一点,并在真实设备上使用自动化来设置它们的开启和关闭。再举一个例子:我有一个名为“Living room light state”的程序开关,并且有两个自动化 - 每当 Hue 灯打开时,打开状态;每当 Hue 灯关闭时,关闭状态。有了这个,我将了解 Hue 灯的当前状态到我的应用程序(虚拟桥)。
我可以直接读取状态并监听 Hue 灯的变化吗?或者 HomeKit 协议是否真的只用于配件/桥接器和知道家庭设置的 iOS 应用程序之间的通信?
我有时会读到“HomeKit 是配件之间通信的协议”,但老实说,我从未见过任何示例,我还没有找到一种方法,如何让我的配件/桥接器在我的配件中找到其他配件回家听听它的变化。
编辑: 为什么我需要这个更好的例子:我有一个温度计和一个光照水平传感器,它们没有一些二进制或枚举状态——它们的当前状态“状态”基本上是数字(分别为摄氏度和勒克斯)。我还没有找到如何阅读这些数字的方法。对于这个用例,与上述情况相比,我什至没有任何解决方法。
【问题讨论】:
标签: architecture homekit