蓝牙
集成作者的最佳实践
-
需要使用蓝牙适配器的集成应在其
manifest.json
的dependencies
中添加bluetooth_adapters
。此manifest.json
条目确保所有受支持的远程适配器在集成尝试使用它们之前已连接。 -
调用
bluetooth.async_get_scanner
API 获取BleakScanner
实例并将其传递给你的库。返回的扫描器避免了运行多个扫描器的开销,这非常重要。此外,如果用户更改蓝牙适配器设置,封装的扫描器将继续正常工作。 -
避免在连接之间重复使用
BleakClient
,因为这会使连接变得不可靠。 -
使用至少十(10)秒的连接超时,因为
BlueZ
必须在第一次连接到新设备或更新设备时解析服务。在连接时,临时连接错误很常见,并且连接并不总是在第一次尝试时成功。bleak-retry-connector
PyPI 包可以消除快速且可靠地与设备建 立连接时的猜测。
可连接和不可连接的蓝牙控制器
Home Assistant 支持远程蓝牙控制器。一些控制器仅支持监听广告数据,而不支持连接到设备。由于许多设备只需要接收广告,我们有可连接设备和不可连接设备的概念。假设设备不需要主动连接,那么 connectable
参数应设置为 False
,以选择接收来自不支持发起连接的控制器的数据。当 connectable
设置为 False
时,将提供来自可连接和不可连接控制器的数据。
connectable
的默认值为 True
。如果集成有一些需要连接的设备和一些不需要连接的设备,manifest.json
应该为设备适当地设置该标志。如果无法构建匹配器来区分相似的设备,请检查配置流发现中的 connectable
属性 BluetoothServiceInfoBleak
,并拒绝需要发起连接的设备的流。