8000 Ошибка при сопряжении с бризером S3 на прошивке 003C · Issue #23 · TionAPI/HA-tion · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Ошибка при сопряжении с бризером S3 на прошивке 003C #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mefodi opened this issue Nov 29, 2020 · 73 comments
Labels
Bluetooth BT related bug Something isn't working S3 Tion S3 wontfix This will not be worked on

Comments

@mefodi
Copy link
mefodi commented Nov 29, 2020

Добрый день,

Благодарю за фикс по #22, но продвинуться сильно не удалось.

Сетап: Synology+Docker+HA

После появления диалога и ввода MAC-адреса, интеграция переходит в окно подтверждения спаривания.

  1. Если сначала перевести Tion в режим спаривания, а потом нажать Confirm в окне, HA зависает, утилизация CPU вырастает до 30%, выводится только перезагрузкой контейнера.
  2. Если сначала нажать Confirm в окне, а потом включить спаривание на Tion, то ровно момент включения режима на Tion, выводится ошибка.

Screenshot 2020-11-29 at 16 55 56

Логи:

Logger: pygatt.backends.gatttool.gatttool
Source: /usr/local/lib/python3.8/site-packages/pygatt/backends/gatttool/gatttool.py:352 
First occurred: 5:11:23 PM (1 occurrences) 
Last logged: 5:11:23 PM

Unexpected error when scanning: LE Scan ...
 64:FE:1A:85:ХХ:ХХ (unknown)
 64:FE:1A:85:ХХ:ХХ (unknown)
 FF:22:F3:1E:F3:A6 Tion Breezer 3S
 FF:22:F3:1E:F3:A6 (unknown)
 63:6B:1C:C3:ХХ:ХХ (unknown)
...
FF:22:F3:1E:F3:A6 Tion Breezer 3S
Disable scan failed: I/O error
Logger: homeassistant.components.bluetooth_le_tracker.device_tracker
Source: components/bluetooth_le_tracker/device_tracker.py:114 
Integration: bluetooth_le_tracker (documentation, issues) 
First occurred: 5:11:23 PM (1 occurrences) 
Last logged: 5:11:23 PM

Error during Bluetooth LE scan: Unexpected error when scanning: LE Scan ...
 64:FE:1A:85:ХХ:ХХ (unknown)
 64:FE:1A:85:ХХ:ХХ (unknown)
 FF:22:F3:1E:F3:A6 Tion Breezer 3S
...
 FF:22:F3:1E:F3:A6 Tion Breezer 3S
 Disable scan failed: I/O error
Logger: tion_btle.tion
Source: /usr/local/lib/python3.8/site-packages/tion_btle/tion.py:147 
First occurred: 5:11:23 PM (3 occurrences) 
Last logged: 5:11:28 PM

Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
Logger: tion_btle.tion
Source: /usr/local/lib/python3.8/site-packages/tion_btle/tion.py:176 
First occurred: 5:11:25 PM (3 occurrences) 
Last logged: 5:11:30 PM

Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
Logger: custom_components.tion.config_flow
Source: custom_components/tion/config_flow.py:118 
Integration: Tion integration (documentation) 
First occurred: 5:11:30 PM (1 occurrences) 
Last logged: 5:11:30 PM

Cannot pair and get data. Result is {}, error: ('_connect', 'Could not connect to FF:22:F3:1E:F3:A6')

При этом, если в контейнере поднять bluetoothctl, то через него сканирование и спаривание вручную проходит успешно. На всякий случай переносил NAS на расстояние одного метра, без изменений.

@IATkachenko IATkachenko added bug Something isn't working documentation Improvements or additions to documentation need more info labels Nov 30, 2020
@IATkachenko
Copy link
Contributor

Оххх, опять этот pairing...
Переключите, пожалуйста, логи компонента в debug
configuration.yaml:

logger:
  default: warning
  logs:
    custom_components.tion: debug
    tion_btle.tion: debug
    tion_btle.s3: debug

И закиньте сюда фрагмент home-assistant.log и каталога с HA. По логам из web-интерфейса сложно понимать что происходит.

Правильный алгоритм такой:

  1. зажать кнопку;
  2. убедится что бризер перешел в режим сопряжения;
  3. нажать confirm.

(именно такой, какой у вас приводит к повышению load average. На самом деле CPU активно не используется, а система ждет возможности подключиться к бризеру. Очень похоже что кто-то цепляется к нему раньше).

@mefodi
Copy link
Author
mefodi commented Nov 30, 2020

Лог примера выше (если сначала нажимать submit в интеграции, а потом переводить Tion в режим pairing):

2020-11-29 17:11:21 DEBUG (MainThread) [custom_components.tion.config_flow] Showing pair info
2020-11-29 17:11:23 DEBUG (MainThread) [custom_components.tion.config_flow] Real pairing step
2020-11-29 17:11:23 DEBUG (MainThread) [tion_btle.s3] Pairing
2020-11-29 17:11:23 DEBUG (MainThread) [tion_btle.s3] Connecting
2020-11-29 17:11:23 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 1/3
2020-11-29 17:11:23 ERROR (SyncWorker_10) [pygatt.backends.gatttool.gatttool] Unexpected error when scanning: LE Scan ...

FF:22:F3:1E:F3:A6 Tion Breezer 3S
FF:22:F3:1E:F3:A6 (unknown)

... Здесь штук 100 записей по всем мак-адресам всех устройств в округе по многу раз, включая Тион.

FF:22:F3:1E:F3:A6 Tion Breezer 3S
Disable scan failed: I/O error

2020-11-29 17:11:23 ERROR (SyncWorker_10) [homeassistant.components.bluetooth_le_tracker.device_tracker] Error during Bluetooth LE scan: Unexpected error when scanning: LE Scan ...
FF:22:F3:1E:F3:A6 Tion Breezer 3S
FF:22:F3:1E:F3:A6 (unknown)

... Здесь штук 100 записей по всем мак-адресам всех устройств в округе по многу раз, включая Тион.

FF:22:F3:1E:F3:A6 Tion Breezer 3S
Disable scan failed: I/O error

2020-11-29 17:11:23 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-11-29 17:11:25 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-11-29 17:11:25 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 2/3
2020-11-29 17:11:26 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-11-29 17:11:28 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-11-29 17:11:28 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 3/3
2020-11-29 17:11:28 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-11-29 17:11:30 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-11-29 17:11:30 ERROR (MainThread) [custom_components.tion.config_flow] Cannot pair and get data. Result is {}, error: ('_connect', 'Could not connect to FF:22:F3:1E:F3:A6')
2020-11-29 17:11:33 DEBUG (MainThread) [custom_components.tion.config_flow] Pair failed. Returning to first step

@mefodi
Copy link
Author
mefodi commented Dec 1, 2020

Если попытаться инициировать pairing по алгоритму, описанному Вами выше, то лог следующий. После чего HA перестаёт отвечать.

  • зажать кнопку;
  • убедится что бризер перешел в режим сопряжения;
  • нажать submit.
2020-12-01 12:00:34 DEBUG (MainThread) [custom_components.tion.config_flow] Showing pair info
2020-12-01 12:00:57 DEBUG (MainThread) [custom_components.tion.config_flow] Real pairing step
2020-12-01 12:00:57 DEBUG (MainThread) [tion_btle.s3] Pairing
2020-12-01 12:00:57 DEBUG (MainThread) [tion_btle.s3] Connecting
2020-12-01 12:00:57 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 1/3
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.s3] Collecting characteristic
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.s3] Got characteristic Characteristic <6e400003-b5a3-f393-e0a9-e50e24dcca9e> for pairing
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.s3] Sending pair command 3d0501000000000000000000000000000000005a to Characteristic <6e400003-b5a3-f393-e0a9-e50e24dcca9e>
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.s3] Disconnecting
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.s3] Done!
2020-12-01 12:00:58 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 1/3
2020-12-01 12:00:59 DEBUG (MainThread) [tion_btle.tion] Enabling notification
2020-12-01 12:00:59 DEBUG (MainThread) [tion_btle.tion] Notify handler is 11
2020-12-01 12:00:59 DEBUG (MainThread) [tion_btle.tion] Will write b'\x01\x00' to 12 handle
2020-12-01 12:00:59 DEBUG (MainThread) [tion_btle.tion] Result is {'rsp': ['wr']}

@IATkachenko
Copy link
Contributor

Последний лог похож на правду: он успешно подключается к бризеру и отправляет pair команду.
Те тут все отрабатывает штатно.

А вот дальше фигня какая-то: он успешно подключается и подписывается на уведомления.
Следующим шагом должен быть запрос данных, но он не происходит...

@mefodi
Copy link
Author
mefodi commented Dec 1, 2020

Что-то я могу ещё со своей стороны сделать для локализации проблемы?

@IATkachenko
Copy link
Contributor

Я пока думаю.
Попробуйте добавить не ставя галочку pairing'a -- он уже прошел и в нем необходимости больше нет.

@mefodi
Copy link
Author
mefodi commented Dec 1, 2020

image

2020-12-01 23:43:37 DEBUG (MainThread) [custom_components.tion.config_flow] Going create entry with name Tion Breezer
2020-12-01 23:43:37 DEBUG (MainThread) [custom_components.tion.config_flow] {'name': 'Tion Breezer', 'keep_alive': 60, 'away_temp': 15, 'pair': False, 'mac': 'FF:22:F3:1E:F3:A6'}
2020-12-01 23:43:37 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 1/3
2020-12-01 23:43:37 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-12-01 23:43:39 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-12-01 23:43:39 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 2/3
2020-12-01 23:43:40 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-12-01 23:43:42 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-12-01 23:43:42 DEBUG (MainThread) [tion_btle.tion] Doing _connect. Attempt 3/3
2020-12-01 23:43:43 WARNING (MainThread) [tion_btle.tion] Got Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random exception
2020-12-01 23:43:45 WARNING (MainThread) [tion_btle.tion] Got exception while _connect: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
2020-12-01 23:43:45 ERROR (MainThread) [tion_btle.s3] ('_connect', 'Coul
8000
d not connect to FF:22:F3:1E:F3:A6')
2020-12-01 23:43:45 ERROR (MainThread) [custom_components.tion.config_flow] Could not get data from breezer. result is {'code': 400, 'error': "Got exception ('_connect', 'Could not connect to FF:22:F3:1E:F3:A6')"}, error: 'fw_version'
2020-12-01 23:44:23 DEBUG (MainThread) [custom_components.tion.config_flow] Add failed. Returning to first step

@mefodi
Copy link
Author
mefodi commented Dec 1, 2020

FW 003C.

@IATkachenko
Copy link
Contributor

Оп... 003С... Кстати это интересно. У меня 0033.
Может быть что-то поменялось в плане pairing пакета...

@IATkachenko IATkachenko pinned this issue Dec 3, 2020
@IATkachenko
Copy link
Contributor
IATkachenko commented Dec 3, 2020

Нет, в новых версиях механизм не изменился. Те у вас именно pairing не проходит...
Но я кажется понял в чем дело...
pair() неправильно определяет характеристику для отправки команды. Я изначально схалявил и полагался на то что она будет первая в списке, но в вашем случае это не так.
Придется немного подождать (до выходных).

@IATkachenko IATkachenko added this to the v1.3.4 milestone Dec 3, 2020
@IATkachenko IATkachenko added work in progress and removed documentation Improvements or additions to documentation need more info labels Dec 3, 2020
@mefodi
Copy link
Author
mefodi commented Dec 3, 2020

Спасибо, ждём-с.

@IATkachenko IATkachenko changed the title Ошибка при спаривании Ошибка при сопряжении с бризером Dec 4, 2020
IATkachenko added a commit that referenced this issue Dec 5, 2020
New version will fix:
  * negative temperature issue #24
  * pairing issue #23
  * will prepare component to support tion Lite #14
@IATkachenko IATkachenko unpinned this issue Dec 5, 2020
@IATkachenko
Copy link
Contributor

fixed in v1.3.4

@mefodi
Copy link
Author
mefodi commented Dec 5, 2020
2020-12-05 19:24:11 DEBUG (MainThread) [custom_components.tion.config_flow] Going create entry with name Tion Breezer
2020-12-05 19:24:11 DEBUG (MainThread) [custom_components.tion.config_flow] {'name': 'Tion Breezer', 'keep_alive': 60, 'away_temp': 15, 'pair': False, 'mac': 'FF:22:F3:1E:F3:A6'}
2020-12-05 19:24:11 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request
resp = await self._request_handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_app.py", line 499, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.8/site-packages/aiohttp/web_middlewares.py", line 118, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 18, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 72, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 127, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 129, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 169, in post
return await super().post(request, flow_id)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 60, in wrapper
result = await method(view, request, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 106, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 155, in async_configure
result = await self._async_handle_step(flow, cur_step["step_id"], user_input)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 213, in _async_handle_step
result: Dict = await getattr(flow, method)(user_input)
File "/config/custom_components/tion/config_flow.py", line 88, in async_step_user
from tion_btle.s3 import s3 as tion
ImportError: cannot import name 's3' from 'tion_btle.s3' (/usr/local/lib/python3.8/site-packages/tion_btle/s3.py)

@IATkachenko
Copy link
Contributor
IATkachenko commented Dec 5, 2020

В 88 строке /config/custom_components/tion/config_flow.py
нужно

from tion_btle.s3 import S3 as tion

fixed (again) in 1.3.5.

@mefodi
Copy link
Author
mefodi commented Dec 21, 2020

Подвисает, но лог чуть поменялся.

2020-12-21 19:02:05 DEBUG (MainThread) [custom_components.tion.config_flow] Showing pair info
2020-12-21 19:02:15 DEBUG (MainThread) [custom_components.tion.config_flow] Real pairing step
2020-12-21 19:02:15 DEBUG (MainThread) [custom_components.tion.config_flow] {'name': 'Tion Breezer', 'keep_alive': 60, 'away_temp': 15, 'pair': True, 'mac': 'FF:22:F3:1E:F3:A6', 'model': 'S3'}
2020-12-21 19:02:15 DEBUG (MainThread) [tion_btle.tion] Pairing
2020-12-21 19:02:15 DEBUG (MainThread) [tion_btle.tion] Connecting
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Notifications was not requested
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Connected. BT pairing ...
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Got response while sending pair command: {'rsp': ['mgmt'], 'code': ['success']}
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] success
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Device-specific pairing ...
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.s3] Sending pair command
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Doing _try_write. Attempt 1/3
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Writing 3d0501000000000000000000000000000000005a to 6e400002-b5a3-f393-e0a9-e50e24dcca9e
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.s3] Done!
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] Device pair is done
2020-12-21 19:02:16 DEBUG (MainThread) [tion_btle.tion] disconnected
2020-12-21 19:02:19 DEBUG (MainThread) [tion_btle.tion] Connecting
2020-12-21 19:02:20 DEBUG (MainThread) [tion_btle.tion] Enabling notification
2020-12-21 19:02:20 DEBUG (MainThread) [tion_btle.tion] Notify handler is 11
2020-12-21 19:02:20 DEBUG (MainThread) [tion_btle.tion] Will write b'\x01\x00' to 12 handle
2020-12-21 19:02:20 DEBUG (MainThread) [tion_btle.tion] Result is {'rsp': ['wr']}
2020-12-21 19:02:20 DEBUG (MainThread) [tion_btle.tion] Delegation enabled

@mefodi
Copy link
Author
mefodi commented Jan 7, 2021

@IATkachenko у Вас всё в порядке?

@IATkachenko
Copy link
Contributor

У меня пока ноль идей... я понимаю, где проблема, но не понимаю почему она есть и как ее системно избежать.

@mefodi
Copy link
Author
mefodi commented Jan 7, 2021

Ок, это хорошо, а то мало ли - времена сейчас тревожные.)

IATkachenko added a commit that referenced this issue Jan 15, 2021
@IATkachenko
Copy link
Contributor

@mefodi, попробуйте, пожалуйста, вот этот скрипт https://github.com/TionAPI/HA-tion/blob/i23/tests/s3-test.py запустить там, где работает HomeAssistant (внутри его контейнера).
Если скажет что-то разумное -- будем копать в сторону понимания вашего адаптера (на сколько я понимаю, проблема адаптер-специфичная, но это очень хочется подтвердить, прежде чем лезть в эти дебри).

@mefodi
Copy link
Author
mefodi commented Jan 18, 2021

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

Если ничего специально не делать на хосте и в контейнере, то вывод скрипта таков, ибо bluepy не установлен:

bash-5.0# python3 s3-test.py
Traceback (most recent call last):
  File "s3-test.py", line 6, in <module>
    from bluepy import btle
ModuleNotFoundError: No module named 'bluepy'

После того, как я поставил его вручную, вывод следующий:

bash-5.0# python3 s3-test.py
Got BTLEDisconnectError:Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
Got BTLEDisconnectError:Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random
Traceback (most recent call last):
  File "s3-test.py", line 216, in _connect
    self._btle.connect(self.mac, btle.ADDR_TYPE_RANDOM)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 445, in connect
    self._connect(addr, addrType, iface)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 439, in _connect
    raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "s3-test.py", line 375, in <module>
    _LOGGER.debug(test.get())
  File "s3-test.py", line 88, in get
    self._connect()
  File "s3-test.py", line 233, in _connect
    self._connect(need_notifications)
  File "s3-test.py", line 235, in _connect
    raise e
  File "s3-test.py", line 216, in _connect
    self._btle.connect(self.mac, btle.ADDR_TYPE_RANDOM)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 445, in connect
    self._connect(addr, addrType, iface)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 439, in _connect
    raise BTLEDisconnectError("Failed to connect to peripheral %s, addr type: %s" % (addr, addrType), rsp)
bluepy.btle.BTLEDisconnectError: Failed to connect to peripheral FF:22:F3:1E:F3:A6, addr type: random

Может, их спарить вручную через bluetoothctl или еще что-то такое сделать сперва?

@IATkachenko
Copy link
Contributor

@mefodi, извините, забыл что сопряжение еще не прошло.
В режиме сопряжения запустите, пожалуйста, скрипт.

Бризер в режиме сопряжения отвечает на любые запросы. А тестируем мы сейчас часть, не касающуюся протокола.

@mefodi
Copy link
Author
mefodi commented Jan 22, 2021
Traceback (most recent call last):
  File "s3-test.py", line 375, in <module>
    _LOGGER.debug(test.get())
  File "s3-test.py", line 88, in get
    self._connect()
  File "s3-test.py", line 223, in _connect
    self._enable_notifications()
  File "s3-test.py", line 244, in _enable_notifications
    _LOGGER.debug("Notify handler is %s", self.notify.getHandle())
AttributeError: 'TionTest' object has no attribute 'notify'

@re3lex
Copy link
re3lex commented Jan 24, 2021

Привет, наконец я добрался с ноутом до бризера.
По-порядку:

  1. Для соединения использовал адаптер ORICO BTA-403. Встроенный в ноутбук Bluetooth адаптер не смог увидеть бризер (вероятно он не умеет в BLE)
  2. Прошивка бризера 003C
  3. вот этот скрипт https://github.com/TionAPI/HA-tion/blob/i23/tests/s3-test.py у меня также выдает AttributeError: 'TionTest' object has no attribute 'notify'
  4. установил tion-btle модуль через pip3, запустил pair - сработало. Девайс спарился.
  5. запустил device.get(). Если бризер еще в pairing mode, то значения возвращаются, но если он не в нем, то значения не отдает, будто и не было паиринга до этого.

@IATkachenko
Copy link
Contributor

@re3lex, как вы определили что pairing сработал?
В тестовом скрипте есть ошибка (при переносе не определил uuid для характеристик -- поправлю в ближайшее время).

То что у вас работает с базовой версией модуля означает что ваша проблема отличается от проблемы @mefodi
И вам может помочь запуск pairing от root'a или дополнительный pairing через bluetoothctl.

@re3lex
Copy link
re3lex commented Jan 24, 2021
  1. после перезагрузки ноутбука вообще перестал pairing работать

@re3lex
Copy link
re3lex commented Jan 24, 2021

@IATkachenko, ну раз получилось прочитать данные, то подумал, что сработал.

Но теперь вообще не хочет никак работать, постоянно Failed to connect, хотя 5 минут назад работало хоть как-то

@re3lex
Copy link
re3lex commented Jan 24, 2021

@IATkachenko, думаю мне все таки удалось победить бризер и спарится с ним.
По крайней мере удается получить данные от бризера после перезапуска сервиса bluetooth.

Возможно в моих проблемах был модуль MagicAir: как только его отключил на время паиринга, так сразу все "взлетело" (ну или просто какой-то танец с бубном вокруг бризер бал наиболее эффективен :) ).
Хотя приложение в смартфоне подключается к бризеру стабильно всегда, не зависимо что к бризеру подключено...

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

Update:
Не а, не случилось чуда: после перезагрузки ОС данные получить не получается (Failed to connect...)

@IATkachenko
Copy link
Contributor

@re3lex, давайте с вашей проблемой а отдельном issue разбираться: у вас поведение системы в корне отличается от @mefodi и, следовательно, разный источник проблем (в вашем случае проблемы с настройкой bluetooth в системе или тем что MagicAir перехватывает соединение с бризером. Телефон, например, может работать через web и общаться с бризером при посредничестве web-гейта MagicAir и облака от Tion. Если не хочется ковыряться с BT, то могу посоветовать вот это проект https://github.com/airens/tion_home_assistant там все через MagicAir сделано).

@mefodi, скрипт поправил. Попробуйте еще раз, пожалуйста.

@mefodi
Copy link
Author
mefodi commented Jan 25, 2021
Traceback (most recent call last):
  File "s3-test.py", line 381, in <module>
    _LOGGER.debug(test.get())
  File "s3-test.py", line 95, in get
    response = self._get_data_from_breezer()
  File "s3-test.py", line 184, in _get_data_from_breezer
    self._try_write, request = self.get_status_command
ValueError: too many values to unpack (expected 2)

IATkachenko added a commit that referenced this issue Jan 26, 2021
this function was not defined. #23
@IATkachenko
Copy link
Contributor

Извините, еще один баг в тесте. Исправил.

@mefodi
Copy link
Author
mefodi commented Jan 26, 2021

Теперь скрипт ничего не выдает. Висит, завершаю по ^C.

Вручную через bluetoothctl по-прежнему сопряжение работает корректно:

[bluetooth]# pair FF:22:F3:1E:F3:A6
Attempting to pair with FF:22:F3:1E:F3:A6
[CHG] Device FF:22:F3:1E:F3:A6 Connected: yes
[NEW] Primary Service (Handle 0x3659)
	/org/bluez/hci0/dev_FF_22_F3_1E_F3_A6/service0008
	00001801-0000-1000-8000-00805f9b34fb
	Generic Attribute Profile
[NEW] Primary Service (Handle 0x3659)
	/org/bluez/hci0/dev_FF_22_F3_1E_F3_A6/service0009
	6e400001-b5a3-f393-e0a9-e50e24dcca9e
	Nordic UART Service
[NEW] Characteristic (Handle 0x3659)
	/org/bluez/hci0/dev_FF_22_F3_1E_F3_A6/service0009/char000a
	6e400003-b5a3-f393-e0a9-e50e24dcca9e
	Nordic UART RX
[NEW] Descriptor (Handle 0x91d0)
	/org/bluez/hci0/dev_FF_22_F3_1E_F3_A6/service0009/char000a/desc000c
	00002902-0000-1000-8000-00805f9b34fb
	Client Characteristic Configuration
[NEW] Characteristic (Handle 0x3659)
	/org/bluez/hci0/dev_FF_22_F3_1E_F3_A6/service0009/char000d
	6e400002-b5a3-f393-e0a9-e50e24dcca9e
	Nordic UART TX
[CHG] Device FF:22:F3:1E:F3:A6 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device FF:22:F3:1E:F3:A6 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device FF:22:F3:1E:F3:A6 UUIDs: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
[CHG] Device FF:22:F3:1E:F3:A6 ServicesResolved: yes

@IATkachenko
Copy link
Contributor

Видимо, последняя правка скприта.
Нужно добавить

_LOGGER.setLevel("DEBUG")

сразу после

_LOGGER = logging.getLogger(__name__)

Ну или обновленный скрипт стянуть. Извините еще раз.

@mefodi
Copy link
Author
mefodi commented Jan 27, 2021

Не, не работает.

^CTraceback (most recent call last):
  File "s3-test.py", line 386, in <module>
    _LOGGER.debug(test.get())
  File "s3-test.py", line 96, in get
    response = self._get_data_from_breezer()
  File "s3-test.py", line 198, in _get_data_from_breezer
    self.notify.read()
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 197, in read
    return self.peripheral.readCharacteristic(self.valHandle)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 530, in readCharacteristic
    resp = self._getResp('rd')
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 407, in _getResp
    resp = self._waitResp(wantType + ['ntfy', 'ind'], timeout)
  File "/usr/local/lib/python3.8/site-packages/bluepy/btle.py", line 347, in _waitResp
    rv = self._helper.stdout.readline()
KeyboardInterrupt

@IATkachenko
Copy link
Contributor

Странно что нет debug сообщений, но по этому трэйсу стало понятнее где у вас подвисает все: у вас просто не проходит read, ни под каким соусом. При этом write проходит корректно.
Идеи снова закончились.

@mefodi
Copy link
Author
mefodi commented Apr 6, 2021

Добрый день, новостей нет? Покупать всё-таки MagicAir?

@IATkachenko
Copy link
Contributor

У меня идей нет:

  • проблема не связана с версий прошивки (у людей на 003C работает)
  • проблема не связана с модулем (эта версия работает много у кого)

У вас не работает от слова "совсем". Если нет возможности потестировать на вообще отдельной конфигурации (на малине лежащей рядом с бризером, например, чтобы полностью исключить аппаратную часть), то да, лучше смотреть в сторону MagicAir.

@IATkachenko IATkachenko unpinned this issue Jul 20, 2021
@IATkachenko
Copy link
Contributor

Не пробовали последние версии? Проблема сохраняется?

@mefodi
Copy link
Author
mefodi commented Oct 29, 2021

Я, в итоге, решил проблему, задавив жабу и купив Magic Air. Он безбожно врет по температуре и влажности, но с управлением справляется.

@IATkachenko IATkachenko added Bluetooth BT related wontfix This will not be worked on labels Oct 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bluetooth BT related bug Something isn't working S3 Tion S3 wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

3 participants
0