Skip to content

Bluetooth

Igor edited this page Sep 20, 2021 · 7 revisions

Поскольку компонент общается с бризером по bluetooth, то многие проблемы возникают на этом уровне.

При возникновении проблем нужно проверить:

  • что в момент сопряжения к бризеру никто не подключен (приложение, пульт, какая-то следилка, про которую все давно забыли);
  • что сервер, на котором запущен Home Assistant, может подключиться к бризеру в режиме сопряжения через bluetoothctl;
  • если Home Assistant запущен не от root:
    1. убедиться что пользователь состоит в группе bluetooth
    2. выполнены setcap из описания bluetooth_le_tracker
    3. убедиться что сервис bluetooth запущен с опцией --compat и выставлены правильные права на /var/run/sdp. Подробнее здесь и здесь
    4. пользователю, от которого запущен 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 запущен в контейнере, убедитесь что выполнены рекомендации по установке и контейнер запущен с:
    1. --net=host
    2. --device=/PATH_TO_YOUR_USB_STICK (если адаптер подключен по USB)
    3. --privileged
    4. -v /dev/bus/usb:/dev/bus/usb
    5. -v /var/run/dbus:/var/run/dbus
  • Если используется Raspberry Pi, то помогает подключить внешний Bluetooth модуль через удлинитель (чтобы отнести его подальше от Малины)
  • По мотивам #41. Если у вас адаптер только для LE используется, то имеет смысл попробовать поправить настройки демона bluetooth /etc/bluetooth/main.conf чтобы включить быстрое подключение и оставить только LE стек:
ControllerMode = le
FastConnectable = true

Не получается добавить бризер

Причин может быть много. Чтобы понять с чем именно столкнулись нужно смотреть debug-логи.

проблемы при добавлении на Ubuntu

В #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 по следующему алгоритму:

  1. удалить бризер из HA
  2. удалить каталог /var/lib/bluetooth/МАС-адрес-адаптера/MAC-адрес-бризера
  3. перезапустить bluetooth (systemctl restatr bluetooth)
  4. перевести бризер в режим сопряжения
  5. запустить bluetoothctl: sudo bluetoothctl и выполнить:
    • power on
    • agent on
    • pair MAC-адрес бризера
  6. убедиться что в /var/lib/bluetooth/МАС-адрес-адаптера/MAC-адрес-бризера/info есть ключи
  7. добавить бризер в HA без сопряжения

Clone this wiki locally