mavrikkk / ha_kettler

allows you to connect Redmond SkyKettle, SkyCooker and SkyHeat to your Home Assistant. see README to know further
131 stars 51 forks source link

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

Closed SemperPeritus closed 2 years ago

SemperPeritus commented 3 years ago

В какой-то момент после нескольких недель стабильной работы в 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
)
mavrikkk commented 3 years ago

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

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

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

Sensei8 commented 2 years ago

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

mavrikkk commented 2 years ago

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

Sensei8 commented 2 years ago

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

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

mavrikkk commented 2 years ago

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

Sensei8 commented 2 years ago

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