『瀚思彼岸』» 智能家居技术论坛

标题: 【小白专用】通过手机蓝牙判断人员是否在家(room-assistant) [打印本页]

作者: polisher    时间: 2024-8-16 15:57
标题: 【小白专用】通过手机蓝牙判断人员是否在家(room-assistant)
用过ESpresence和monitor等东东,皆不尽人意。论坛大神seon介绍的room-assistant,感觉很适合我的环境,特将此文分享给与我英文一样烂的小白。

简介
room-assistant可以通过经典蓝牙扫描手机(无需进行蓝牙配对),判断人员是否在家。为了便于我等小白复刻,这里只介绍通过加载项安装的单实体方式,同时您的HA主机里已安装有MQTT代理,您只需要花5分钟时间即可搞定。如有您有docker、集群、BLE等其它需求请阅读原文

安装
在HomeAssistant的加载项商店里,通过以下URL新增仓库,然后安装“room-assistant”加载项。:
https://github.com/mKeRix/hassio-repo
设置

以下为经典蓝牙的设置参数:
名称
类型
默认值
描述
addresses
Array
需要追踪的手机蓝牙MAC地址列表。(通常可以在手机设置中找到)
minRssi
Number
RSSI阀值。追踪的手机RSSI低于设定值时将视作“离家”。(RSSI用于表示接收到的无线信号的强度)
rssiFactor
Number
1
RSSI数值的乘数。再使用多个room-assistant时,使用它来微调测量值
hciDeviceId
Number
0
room-assistant用于扫描的蓝牙设备ID,例如 0 表示 hci0 。
interval
Number
10
扫描间隔时间,以秒为单位。
scanTimeLimit
Number
6
完成一次扫描的最时间限制(以秒为单位)。此值应设置为比扫描间隔时间更小。
timeoutCycles
Number
2
判定手机"离家”的扫描次数。当连续扫描X次均未发现该手机,则视为“离家”
preserveState
Boolean
false
在关闭“扫描开关”后,是否应该保留最后一次扫描结果。
inquireFromStart
Boolean
true
当启动 room-assistant 时,“扫描开关是否打开。
entityOverrides
属性设置
实体属性设置。可配置MAC地址对应实体的ID和名称
kalmanProcessNoise
Number
1.4
过程噪声的协方差,通过卡尔曼滤波器减少测量噪声。
kalmanMeasurementNoise
Number
1
测量噪声的协方差,通过卡尔曼滤波器减少测量噪声。
设置示例:
配置文件路径: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检测到手表后,您可以取消与外围设备的配对。



作者: sanwangxiang    时间: 2024-8-16 23:24
按照教程来了,但是MQTT里面没有出现设备,我用的是华为手机
作者: bugensui    时间: 2024-8-16 23:46
这个是利用ha的蓝牙,检测手机的蓝牙是否存在,来判断是否在家是吗
作者: polisher    时间: 2024-8-17 14:16
sanwangxiang 发表于 2024-8-16 23:24
按照教程来了,但是MQTT里面没有出现设备,我用的是华为手机

启动room-assistant,观察其日志,排查问题,确认是否已正常启动
作者: polisher    时间: 2024-8-17 14:18
bugensui 发表于 2024-8-16 23:46
这个是利用ha的蓝牙,检测手机的蓝牙是否存在,来判断是否在家是吗

是的。
作者: bugensui    时间: 2024-8-17 15:12
polisher 发表于 2024-8-17 14:18
是的。

可以用,但是有bug,如果蓝牙设备是被其他设备连接了(手机连接了蓝牙音响)。,这个时候好像扫描不到(蓝牙音响,因为他被连接了)。或者是蓝牙设备关了。ha重启后,就显示不可用
作者: sanwangxiang    时间: 2024-8-17 19:21
polisher 发表于 2024-8-17 14:16
启动room-assistant,观察其日志,排查问题,确认是否已正常启动

我HA装在虚拟机里 然后蓝牙适配器直通的HA这样行不行
作者: polisher    时间: 2024-8-18 14:58
sanwangxiang 发表于 2024-8-17 19:21
我HA装在虚拟机里 然后蓝牙适配器直通的HA这样行不行

我没用过虚拟机,需要您自行尝试了。我猜测可能是不行的,因为room-assistant依赖hcitool。
作者: polisher    时间: 2024-8-18 15:14
bugensui 发表于 2024-8-17 15:12
可以用,但是有bug,如果蓝牙设备是被其他设备连接了(手机连接了蓝牙音响)。,这个时候好像扫描不到( ...

没事儿把手机蓝牙关闭干嘛呢?非连接状态消耗不了多少电量。至于您提到的连接占用,通过自动化控制可以最大程度避免。
当然,您家人允许,也可以在手机装个APP来持续发送蓝牙广播,通过BLE来跟踪手机,缺点是APP被一键优化就失效了。
作者: bugensui    时间: 2024-8-18 15:44
sanwangxiang 发表于 2024-8-17 19:21
我HA装在虚拟机里 然后蓝牙适配器直通的HA这样行不行

可以的,虚拟机可以
作者: shaow    时间: 2024-8-18 20:18
这个判断是否在家,用nmap比较合适
作者: polisher    时间: 2024-8-18 20:28
shaow 发表于 2024-8-18 20:18
这个判断是否在家,用nmap比较合适

nmap也挺好,适合自己环境的就是最佳的选择。
这种方式也仅是为咱们小白们多一种选择而已。nmap我也同时在用,但很多手机会默认在熄屏后进入休眠状态,从而导致WIFI断开,nmap追踪就失效了。
作者: shaow    时间: 2024-8-18 20:32
奇怪,在我这里nmap没这个问题,ping才会有熄屏问题
作者: bugensui    时间: 2024-8-19 11:38
本帖最后由 bugensui 于 2024-8-19 11:40 编辑
sanwangxiang 发表于 2024-8-16 23:24
按照教程来了,但是MQTT里面没有出现设备,我用的是华为手机

看到你私信了。我这里回复你,首先你用排查法,换个其他的手机,或者蓝牙音响,或者其他蓝牙设备在测试下,我的是haos,加载项装的mqtt,你usb蓝牙适配器要直通给虚拟机的,虚拟机安装的一般都可以,我的usb蓝牙适配器是支持ha的,并且平时是利用这个读取小米的温湿度传感器,你先要确定下,你的usb蓝牙在ha里能不能用,我的local.yml配置,给你借鉴下,里面的mac地址,你替换成你需要追踪的地址:
  1. # You don't need to add the MQTT details for Home Assistant with the add-on installation, it will be auto-discovered!
  2. global:
  3.   instanceName: changeme
  4.   integrations:
  5.     - homeAssistant
  6.     - bluetoothClassic
  7. bluetoothClassic:
  8.   hciDeviceId: 0
  9.   scanTimeLimit: 6
  10.   timeoutCycles: 2
  11.   interval: 10
  12.   inquireFromStart: true
  13.   preserveState: true
  14.   minRssi:
  15.     'FC:E8:*******:E3': -10
  16.     default: -20
  17.   addresses:
  18.     - 'FC:E8:******:E3'
  19.   entityOverrides:
  20.     'FC:E8:*******:E3':
  21.         id: edifier_bluetooth
  22.         name: edifier bluetooth
复制代码


作者: sanwangxiang    时间: 2024-8-19 20:48
bugensui 发表于 2024-8-19 11:38
看到你私信了。我这里回复你,首先你用排查法,换个其他的手机,或者蓝牙音响,或者其他蓝牙设备在测试下 ...

用你的代码试了下 可以了

作者: 小人物123    时间: 2024-8-20 13:15
没有namp实用,用苹果手机的直接不要折腾了。
作者: lichao622    时间: 2024-8-22 17:48
我还是用的ESpresence,相对还是比较稳定的,部署了三个。稳定运行了半年多,但是突然这几天有一部手机2秒not home 然后又在家。
作者: HarlanChou    时间: 2024-8-23 13:58
多个设备呢,怎么判定哪些人在家,那些人不在家
作者: polisher    时间: 2024-8-23 19:12
HarlanChou 发表于 2024-8-23 13:58
多个设备呢,怎么判定哪些人在家,那些人不在家

如果您的HA主机有蓝牙功能,且HA系统支持加载项商店,您只需按照教程安装这个加载项,在MQTT里你就会看到代表你手机状态的设备。至于这个应用的原理,不了解也不影响使用。
作者: a1318321    时间: 2024-12-15 19:08
本帖最后由 a1318321 于 2024-12-20 14:41 编辑

我想问下两个人怎么设置,还有,设置了一个,150秒间隔,每次扫描15s,5次未扫到识别为离家,但是仍然总是提示离家。
[attach]66162[/attach]




作者: coldkevin    时间: 2024-12-16 17:58
bugensui 发表于 2024-8-19 11:38
看到你私信了。我这里回复你,首先你用排查法,换个其他的手机,或者蓝牙音响,或者其他蓝牙设备在测试下 ...

哪个品牌型号的usb蓝牙,群晖可以用吗
作者: jayshitou    时间: 2025-4-9 17:36
没蓝牙怎么办能用esp32么
作者: hoshea    时间: 2025-7-4 15:20
这个和IRK追踪相比 哪个更稳定?
作者: polisher    时间: 2025-7-9 10:21
hoshea 发表于 2025-7-4 15:20
这个和IRK追踪相比 哪个更稳定?

应该差不多,但有些手机无法用IRK,可替代
作者: x53520    时间: 2025-7-28 16:07
感谢分享 参考学习





欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5