-
Notifications
You must be signed in to change notification settings - Fork 10
Bluetooth
Поскольку компонент общается с бризером по bluetooth, то многие проблемы возникают на этом уровне.
При возникновении проблем нужно проверить:
- что в момент сопряжения к бризеру никто не подключен (приложение, пульт, какая-то следилка, про которую все давно забыли);
- что сервер, на котором запущен Home Assistant, может подключиться к бризеру в режиме сопряжения через
bluetoothctl; - если Home Assistant запущен не от
root:- убедиться что пользователь состоит в группе bluetooth
- выполнены
setcapиз описания bluetooth_le_tracker - убедиться что сервис bluetooth запущен с опцией
--compatи выставлены правильные права на/var/run/sdp. Подробнее здесь и здесь - пользователю, от которого запущен HomeAssistant выданы соответствующие разрешения в
/etc/dbus-1/system.d/bluetooth.conf
<policy user="homeassist">
<allow send_destination="org.bluez"/>
<allow send_interface="org.bluez.Agent1"/>
<allow send_interface="org.bluez.GattCharacteristic1"/>
<allow send_interface="org.bluez.GattDescriptor1"/>
<allow send_interface="org.freedesktop.DBus.ObjectManager"/>
<allow send_interface="org.freedesktop.DBus.Properties"/>
</policy>
- если Home Assistnat запущен в контейнере, убедитесь что выполнены рекомендации по установке и контейнер запущен с:
--net=host-
--device=/PATH_TO_YOUR_USB_STICK(если адаптер подключен по USB) --privileged-v /dev/bus/usb:/dev/bus/usb-v /var/run/dbus:/var/run/dbus
- Если используется Raspberry Pi, то помогает подключить внешний Bluetooth модуль через удлинитель (чтобы отнести его подальше от Малины)
- По мотивам #41. Если у вас адаптер только для LE используется, то имеет смысл попробовать поправить настройки демона bluetooth /etc/bluetooth/main.conf чтобы включить быстрое подключение и оставить только LE стек:
ControllerMode = le
FastConnectable = true
Причин может быть много. Чтобы понять с чем именно столкнулись нужно смотреть debug-логи.
В #30 наблюдалась следующая проблема: до перезагрузки модуля btusb компонент отказывался работать.
В итоге помогала перезагрузка этого модуля
sudo modprobe -r btusb
sudo modprobe btusb
и
Если с первого раза не срабатывает pair выбивает с ошибкой, то нужно на бризере повторно активировать режим сопряжения, а в плагине убрать галку need pair.
Выглядит это так: бризер успешно добавляется, но через некоторое время данные перестают обновляться.
Чтобы понять что это ваш случай нужно заглянуть в файл /var/lib/bluetooth/МАС-адрес-адаптера/MAC-адрес-бризера/info
Пользователям HomeAssistant OS нужно воспользоваться инструкцией, поскольу по умолчанию SSH сессия открывается в контейнер, в котором запущен HomeAssistant, а ключи находятся на хосте.
Если сопряжение прошло правильно, то там будет:
- секция
[General]с общей информацией вида:
[General]
Name=Tion Breezer 3S
AddressType=static
SupportedTechnologies=LE;
Trusted=false
Blocked=false
Services=00001800-0000-1000-8000-00805f9b34fb;00001801-0000-1000-8000-00805f9b34fb;6e400001-b5a3-f393-e0a9-e50e24dcca9e;
- секции
[IdentityResolvingKey]и[LongTermKey]с ключами сопряжения
но, скорее всего, ключей не будет.
В этом случае сопряжение нужно повторить в ручную, через bluetoothctl по следующему алгоритму:
- удалить бризер из HA
- удалить каталог
/var/lib/bluetooth/МАС-адрес-адаптера/MAC-адрес-бризера - перезапустить bluetooth (systemctl restatr bluetooth)
- перевести бризер в режим сопряжения
- запустить bluetoothctl:
sudo bluetoothctlи выполнить:- power on
- agent on
- pair MAC-адрес бризера
- убедиться что в
/var/lib/bluetooth/МАС-адрес-адаптера/MAC-адрес-бризера/infoесть ключи - добавить бризер в HA без сопряжения