私有BLE设备

一些BLE设备使用名为可解析私有地址的隐私功能,以防止企业在您使用智能设备时跟踪您。此设备的蓝牙地址会频繁更改,而不是使用单一静态地址进行跟踪。如果您启用了蓝牙并且知道设备的身份解析密钥,您可以将其添加到Home Assistant作为私有BLE设备。然后,我们可以确定与IRK相关的随机MAC地址并追踪它们。

除了告诉您设备是否在家或外出外,它还可以告知您与最近的蓝牙适配器或代理之间的估计距离以及信号强度。

配置

要将 私有BLE设备 integration 添加到您的 Home Assistant 实例中,请使用此 My 按钮:

手动配置步骤

如果上述 My 按钮不起作用,您也可以手动执行以下步骤:

在将设备添加到Home Assistant之前,设备必须开启并在范围内广播 - 我们会检查它是否可见以验证您的IRK是否正确。

IRK有两种常见的表示方式 - base64编码或十六进制编码。此集成支持两者。

获取身份解析密钥(IRK)

在macOS上

如果您想获取iPhone或Apple Watch的IRK,您必须在Mac上使用与这些设备相同的iCloud帐户登录。此过程也适用于与macOS配对的设备。

  1. 启动钥匙串访问应用程序。
  2. 在左侧边栏中,确保选择了iCloud。
  3. 在右上角的搜索框中,输入蓝牙。
  4. 将显示一个GUID列表。
  5. 双击一条记录。在帐户字段中,将显示Public: XX:XX:XX:XX:XX:XX。该MAC地址应与您要操作的设备匹配。
  6. 点击显示密码
  7. 您需要输入您的密码,然后输入您的用户名和密码。
  8. macOS将显示一些XML。您需要查找“远程IRK”字段。在字段后面有一个数据字段,其中包含您的身份解析密钥的base64编码版本。

在Windows上 / 对于Android设备

如果您有一部已根植的Android手机,可以在/data/misc/bluedroid/bt_config.conf文件中查看IRK(和LTK)。LE_LOCAL_KEY_IRK指定Android设备自己的IRK,而文件中每个配对设备的前16个字节LE_KEY_PID表示配对设备的IRK。请注意,存储在此文件中的密钥是小端格式,因此此文件中的密钥的字节顺序需要反转。例如,小端IRK 22BC0E3F2EACF08EE36B865553EA0B4E需要更改为4E0BEA5355866BE38EF0AC2E3F0EBC22。

另外,Android手机和/或次要设备的IRK可以通过Wireshark获取:

  1. 在Android手机的开发者设置中,启用“USB调试”和“启用蓝牙HCI嗅探日志”选项。
  2. 确保第二个蓝牙设备(例如智能手表或耳机)未配对。
  3. 禁用再启用手机上的蓝牙,然后重新配对次要设备。
  4. 将Android手机连接到安装了adb的计算机。
  5. 建立adb连接(adb connect...),然后运行命令:adb bugreport scanwatch
  6. 在生成的scanwatch.zip文件中,找到并提取FS\data\misc\bluetooth\logs\btsnoop_hci.log
  7. Wireshark中打开btsnoop_hci.log并搜索btsmp.id_resolving_key
  8. 选择其中一个帧并展开“蓝牙安全管理协议”。十六进制转储将显示发送或接收设备的IRK。
  9. 反转显示的值。例如,如果它是763af6c7f7d94ad6c262158e2320544e,要使用的IRK将是:4e5420238e1562c2d64ad9f7c7f63a76

在Windows上 - 对于任何将连接到计算机的设备

  1. 从Microsoft获取PsExec工具。它可以在Sysinternals Suite中找到。下载并提取PsExec.exePsExec64.exe
  2. 以管理员身份打开命令提示符:按Windows键,输入cmd,右键单击命令提示符,选择以管理员身份运行
  3. 运行PsExec:导航到PsExec所在的文件夹并运行psexec -i -s cmdpsexec64 -i -s cmd。此命令将以SYSTEM权限打开新的命令提示符窗口。
  4. 验证SYSTEM权限:在新的命令提示符窗口中,输入whoami以确认您具有SYSTEM权限。
  5. 以SYSTEM权限打开注册表编辑器:在新的命令提示符窗口中输入regedit以打开带有SYSTEM权限的注册表编辑器。
  6. 定位IRK:导航到HKLM\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Keys。这里可能有一个子文件夹,保存着计算机蓝牙无线电的MAC地址,查看其中与您的蓝牙设备的MAC地址对应的文件夹。
  7. 右键单击密钥(文件夹)并选择导出。将.reg文件保存到某个地方。
  8. 在记事本中打开.reg文件。按Ctrl+H打开替换窗口。查找内容: “,“和替换为 “”。选择全部替换。这将从十六进制值中删除所有逗号。
  9. 复制IRK值(仅复制hex:后面的部分),可以直接使用。无需反转字节顺序。

ESPresense

如果您已经使用ESPresence进行身份解析密钥跟踪,那么您已经拥有您的身份解析密钥的十六进制编码版本。Home Assistant可以直接使用此格式的密钥。