室内定位的行业标准方法似乎是使用低功耗蓝牙信标的 RSSI。除非您的项目是特定于 Zigbee 的,否则我会选择这种方法并忘记尝试与 Zigbee 网络集成。
我玩过一些 BLE 信标。您可以根据需要更改其传输功率,最低设置会导致信标仅在几英尺外对手机可见。
每个房间都有一个信标,我不明白为什么这对你不起作用。如果房间之间没有门,那么每个房间里可能有一对信标会更可靠。
BLE 支持从 4.3 版开始融入 Android,它可以轻松测量信号强度、估计到信标的距离等。然后根据哪个信标离手机最近,只需对网桥进行 REST 调用即可。如果您有 Raspberry Pi 3,则可以在购买任何专用信标之前将其配置为 BLE 信标进行测试。
在色调集成方面,我可能会在每个房间的桥上设置一个新传感器,并让手机根据每个信标的信号强度修改这个传感器的值。然后在桥上,我会创建规则来对这些传感器值的变化做出反应。这将使部署包含最少代码的 Android 应用程序变得容易,并使用 Hue 桥创建更复杂的条件规则,例如如果有人快速进出房间该怎么办,处理同一个房间里的多人等。
编辑添加以下内容以回应您的评论,对冗长的帖子表示歉意!
在 Hue API 中,可用资源之一是传感器。如果您购买运动传感器、电灯开关等 Hue 产品,这些产品将作为单独的传感器添加到桥接器中。但是,您也可以使用 API 创建自己的通用传感器,并使用这些传感器存储您通过 REST 接口更新的值。您的自定义传感器的值可以在桥的规则中用作条件和触发器,您甚至可以通过 API 读取传感器值以在您自己的应用程序中使用。这是系统变得非常可定制的地方。
当您使用 Android 进行开发时,我建议您使用 Tasker 应用和 RESTasker 插件,因为这提供了一种与 Hue 桥集成并对 BLE 传感器做出反应的简单方法。
以下是我在设置中如何使用传感器的示例,这些传感器与树莓派配合使用:
- 电视状态 - 我的电视有 IP 控制,我有一个 python 脚本轮询
每秒检查一次它是打开还是关闭。当这个值
更改 python 脚本更新我的 Hue 上的电视状态传感器
桥。
- 每个家庭成员的家庭传感器 - 我有一个 433mhz 的门
打开我家的前门。每当门打开
这会触发一个延迟的 python 脚本,它会 ping (静态)IP
局域网上每个家庭成员的电话地址
确定谁在家。然后它将 Home 传感器值设置在
为在家中的每个人搭建通往 1 的桥梁。
- 一夜之间我们使用无线充电器,当每部手机都放在一个
无线充电器它会更新那个人的家庭传感器值
从 1 到 2。
因此,桥接器现在可以通过这几个自定义传感器触发基于谁在家、他们是否在床上以及电视是否开着的规则。我的一些规则是:
- 如果客厅灯亮着,电视也开着,调暗
灯,如果电视关闭,请再次增加亮度。如果
电视已打开,外面的亮度为 0(从 Hue 运动中读取
传感器外),然后慢慢将灯泡色调变为红色。
- 一旦屋子里的最后一个人放下所有灯,就关掉所有的灯
手机上的无线充电器。一个 python 脚本也可以关闭电视
关闭它一直打开。
- 当我将手机放在无线充电器上时,Tasker 任务会读取
从桥上为我女儿的家庭变量。然后它设置我的闹钟
如果她不在这里会比平时晚,因为我不必带她去
学校。
- 如果我连接到家庭 wifi 并且我的电话响了或我拨打了电话
Tasker 任务读取传感器变量。如果家里没人
并且电视已打开 Tasker 将 IP 命令发送到我的电视以静音
音量,一旦通话结束,它会再次取消静音。
就接近您的项目而言,我会在桥上创建一个传感器,以配合房屋中的每个房间,并将初始值设置为 0。然后在 Tasker 中,我将扫描最近的 BLE 传感器。假设最近的 BLE 传感器是客厅,我会让 Tasker 从网桥读取客厅传感器变量(值为 0),然后将值加 1 并将其写回网桥(现在值为 1)。我会让 Tasker 保存最后一次更新的传感器是客厅的变量,并继续扫描 BLE 信标。现在,如果 Tasker 发现一个比客厅更近的不同 BLE 信标,我会让它再次从桥上读取客厅传感器(仍然是 1),从值中减去 1 并将其写回(所以现在是 0)然后重复上面的过程,将手机现在最接近的房间的传感器值加 1。
在桥上,我会制定规则,如果房间的传感器值 = 0,则关闭该房间的灯,如果传感器值> 0,则打开该房间的灯。因为您正在读取现有值并在电话进入房间时对其进行添加或减去,所以系统可以处理房屋中的多个电话/人。如果两个人在一个房间里,那么房间传感器的值将是 2,所以灯只会在最后一个人离开时关闭,而不是在其中一个人去喝水或其他什么时关闭。
如您所知,我花了很长时间修补我的 Hue,但这是一个很棒的学习过程。我对编程知之甚少,发现 API 很容易理解,它的灵活性和易于与其他东西集成的特点启发了我精通多种语言并在此过程中制作了一些很酷的项目。