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