mavrikkk/ha_kettler

Смена Bluetooth интерфейса

SemperPeritus opened this issue · 6 comments

В какой-то момент после нескольких недель стабильной работы в Home Assistant через Docker по каким-то причинам сменился интерфейс с hci1 на hci0 (физически устройство то же самое и никих манипуляций с ним не производилось, сменилось только название). Все остальные интеграции/плагины завязанные на работу с Bluetooth либо продолжили работу без проблем, либо заработали после перезагрузки Home Assistant, но эта интеграция отвалилась и стала писать следующую ошибку: Connect to [mac] through device hci1 failed.

Проверив устройство и посмотрев где сыпется ошибка (74 строка __init__.py) удалось завести интеграцию без удаления устройства.

В Python особо не разбираюсь, в подноготной Home Assistant тем более. На сколько я понял, в 57-ой строке __init__.py мы получем через homeassistant.const сохранённое интеграцией значение.
device = config.get(CONF_DEVICE)
При беглом поиске не нашёл где хранится это значение в БД или файле, так что просто переопределил переменную device на строку "hci0", после перезагрузки HA интеграция без проблем завелась.

Было бы неплохо иметь возможность изменять данные значения после настройки интеграции без удаления и повторного добавления устройства:

from homeassistant.const import (
    CONF_DEVICE,
    CONF_MAC,
    CONF_PASSWORD,
    CONF_SCAN_INTERVAL
)

интерфейс сам по себе не меняется. тому должны быть причины.

А вообще, аппаратный номер блютус-модуля есть в настройках при подключении интеграции. Этот номер, как и другие параметры подключения, задается 1 раз при подключении и меняться не должен в обычной повседневной жизни.

В вашем случае не надо ничего переопределять и прибивать гвоздями (а если опять изменится?). Нужно просто отключить старое и добавить новое, выбрав правильный модуль при подключении.

Случилось что-то похожее, после очередного обновления HA OS, интеграция перестала подключаться к чайнику. Переустановка не помогала, устройства bt просто не ищутся, причем из терминала через bluetoothctl устройства видны и к чайнику можно подключиться. Помогло добавление в config.txt строчки dtoverlay=disable-bt. Это отключило встроенный bt в rpi4, остался только свисток и интеграция заработала корректно.

со встроенным блютусом в любом случае не рекомендую связываться в части общения с чайником

со встроенным блютусом в любом случае не рекомендую связываться в части общения с чайником

Это да, поэтому и свисток в малинке установлен. Просто такое впечатление, что поиск начал идти только через hci0, а когда отключил встроенный модуль в config.txt, соответственно свисток стал hci0 и все заработало.

Да, я сейчас глянул, и там действительно БАГ был. Сканирование и поиск произодится с выбранного в настройках интерфейса, а непосредственное подключение/работа с непонятно какого...жестко не указано...видимо с первого попавшегося. Добавил в подключение блютус жесткое указание того модуля, который указан в настройках. Проверьте, пожалуйста, что хотя бы работает )) мне вообще не на чем, исправлял вслепую. Только переподключите чайник заново

Протестил, включил встроенный модуль, переустановил интеграцию - всё корректно ищет, устанавливает и работает, после перезагрузки не сбивается.