用过ESpresence和monitor等东东,皆不尽人意。论坛大神seon介绍的room-assistant,感觉很适合我的环境,特将此文分享给与我英文一样烂的小白。
简介
room-assistant可以通过经典蓝牙扫描手机(无需进行蓝牙配对),判断人员是否在家。为了便于我等小白复刻,这里只介绍通过加载项安装的单实体方式,同时您的HA主机里已安装有MQTT代理,您只需要花5分钟时间即可搞定。如有您有docker、集群、BLE等其它需求请阅读原文。
安装
在HomeAssistant的加载项商店里,通过以下URL新增仓库,然后安装“room-assistant”加载项。:
https://github.com/mKeRix/hassio-repo
设置
以下为经典蓝牙的设置参数:
| | | | | | | 需要追踪的手机蓝牙MAC地址列表。(通常可以在手机设置中找到) | | | | RSSI阀值。追踪的手机RSSI低于设定值时将视作“离家”。(RSSI用于表示接收到的无线信号的强度) | | | | RSSI数值的乘数。再使用多个room-assistant时,使用它来微调测量值 | | | | room-assistant用于扫描的蓝牙设备ID,例如 0 表示 hci0 。 | | | | | | | | 完成一次扫描的最长时间限制(以秒为单位)。此值应设置为比扫描间隔时间更小。 | | | | 判定手机"离家”的扫描次数。当连续扫描X次均未发现该手机,则视为“离家” | | | | 在关闭“扫描开关”后,是否应该保留最后一次扫描结果。 | | | | 当启动 room-assistant 时,“扫描开关”是否打开。 | | | | 实体属性设置。可配置MAC地址对应实体的ID和名称 | | | | | | | | | 设置示例:
配置文件路径:homeassistant\room_assistant\local.yml,您只需要代开配置文件,复制该示例,并修改成您需要追踪的手机蓝牙MAC即可。
global: integrations: - bluetoothClassic bluetoothClassic: timeoutCycles: 2.5 minRssi: '08:05:90:ed:3b:60': -10 default: -20 addresses: - '08:05:90:ed:3b:60' - '77:50:fb:4d:ab:70' entityOverrides: '08:05:90:ed:3b:60': id: my-phone name: My Phone
使用
启用home-assistant加载项。这时查看MQTT集成,你会看到新增了一个名为“xxxx-room-assistant”的设备,该设备有个开关实体,这个实体将控制room-assistant是否进行周期性蓝牙扫描。我创建了一个自动化,在每次开门时,开启该开关通过蓝牙扫描手机,5分钟后关闭该开关,以减少room-assistant在扫描时造成的蓝牙频段干扰。
当扫描到您设置的手机蓝牙MAC地址后,MQTT集成将会新增一个您在“entityOverrides”中设定的名称的设备,该设备的device_tracker.xxxxxx_tracker实体,该实体可以与人员绑定,以判断该名家庭成员是否在家。
常见问题
随机出现错误的“离家”状态 当设备最近没有进行任何追踪时,就会出现这种情况。为了使超时时间稍微宽松一些,并消除这些错误状态,可以将 timeoutCycles 值提高。请注意,这将导致设备在真正离开时被报告为 “离家” 的时间延长。 WiFi/蓝牙干扰 蓝牙使用2.4 GHz频段,这可能与您的其他WiFi设备使用的频段相同。这可能会导致干扰。一些蓝牙设备可能无法很好地处理过于频繁的刷新间隔。如果您注意到任何问题(例如WiFi设备从网络断开连接,蓝牙耳机随机断开连接),请尝试将 interval 稍微提高一些。请注意,这将使状态更新速度稍微变慢。
通过SSH连接的设备反应慢或无响应在一些主机上,比如集成了Wifi/BT的树莓派,蓝牙和WiFi共用一块芯片和天线。如果正在进行蓝牙通信,芯片会暂时关闭WiFi数据包,直到通信完成,然后再切换回来。同时只有一个协议可以处于活动状态,这可能导致请求超时和数据包延迟:如果在错误的时间对设备进行ping测试,它将不接受连接,因此会超时。这也会偶尔导致SSH会话变得缓慢。为什么会这样?用于轮询的命令总共需要大约5.5秒,其中大部分时间用于蓝牙通信。如果所有的白名单设备都不在附近,那么主机基本上只有6秒间隔中的大约1秒可用于WiFi通信。如果设备在附近,影响就不太明显,因为轮询会很快完成,并进行WiFi通信。如果主机上没有其他运行的东西,这应该不会造成影响 - room-assistant可以处理恶劣的网络条件。如果您希望主机具有更好的响应性或希望在主机上同时运行更多使用蓝牙/WIFI的其他应用程序,目前只有一个可以解决问题的方法:增加轮询间隔。当然,这也会稍微减慢检测速度。 苹果手表未被检测到 尝试先将 Apple Watch 与其它蓝牙设备(如耳机/扬声器)配对,然后再将其添加到房间助手中进行检测。在room-assistant检测到手表后,您可以取消与外围设备的配对。
|