TionAPI / HA-tion

Home assistant integration for Tion breezers
Apache License 2.0
72 stars 6 forks source link

Не удается добавить интеграцию tion breezer в supervised вариант установки Home Assistant #36

Closed tiggaTIG closed 3 years ago

tiggaTIG commented 3 years ago

При попытке добавить интеграцию, получаю такую ошибку

command: /usr/local/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/setup.py'"'"'; __file__='"'"'/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-qo5j5kcx
cwd: /tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/
Complete output (11 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/setup.py", line 4, in <module>
import tion_btle.const
File "/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/tion_btle/__init__.py", line 1, in <module>
from .s3 import S3
File "/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/tion_btle/s3.py", line 6, in <module>
from .tion import tion, TionException
File "/tmp/pip-install-5zbnm3x1/tion-btle_3fcc2bf6cb35491899b0f7277238d1b7/tion_btle/tion.py", line 7, in <module>
from bluepy import btle
ModuleNotFoundError: No module named 'bluepy'
----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/bf/54/8a3b63fce2a536bea9b8d599b3ea8e5b18c4ec96ec89dad45bfe320b449a/tion_btle-1.1.2.tar.gz#sha256=ac118a67fb857f893778602c56a29fe2805c1e013243c0a03db3d2a7419ed724 (from https://pypi.org/simple/tion-btle/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement tion-btle==1.1.2
ERROR: No matching distribution found for tion-btle==1.1.2
2021-01-26 23:16:21 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/security_filter.py", line 56, in security_filter_middleware
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 136, in post
return await super().post(request)
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 69, in post
result = await self._flow_mgr.async_init(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 119, in async_init
flow = await self.async_create_flow(handler, context=context, data=data)
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 532, in async_create_flow
await async_process_deps_reqs(self.hass, self._hass_config, integration)
File "/usr/src/homeassistant/homeassistant/setup.py", line 343, in async_process_deps_reqs
await requirements.async_get_integration_with_requirements(
File "/usr/src/homeassistant/homeassistant/requirements.py", line 76, in async_get_integration_with_requirements
await async_process_requirements(
File "/usr/src/homeassistant/homeassistant/requirements.py", line 133, in async_process_requirements
raise RequirementsNotFound(name, [req])
homeassistant.requirements.RequirementsNotFound: Requirements for tion not found: ['tion-btle==1.1.2'].

запуск в контейнере python3 -m pip install tion-btle==1.1.2 приводит к тому же результату - нет bluepy

IATkachenko commented 3 years ago

А если ему в контейнере bluepy сказать поставить? Вообще странно это все: blupy в зависимостях tion-blte прописан и он должен его по цепочке зависимостей тянуть.

tiggaTIG commented 3 years ago
bash-5.0# /usr/local/bin/python3 -m pip install bluepy
Collecting bluepy
  Using cached bluepy-1.3.0.tar.gz (217 kB)
Building wheels for collected packages: bluepy
  Building wheel for bluepy (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-v9tws8t8
       cwd: /tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/
  Complete output (6 lines):
  running bdist_wheel
  running build
  running build_py
  Working dir is /tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc
  execute make -C ./bluepy clean
  error: [Errno 2] No such file or directory: 'make'
  ----------------------------------------
  ERROR: Failed building wheel for bluepy
  Running setup.py clean for bluepy
Failed to build bluepy
Installing collected packages: bluepy
    Running setup.py install for bluepy ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-hwmffc41/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/bluepy
         cwd: /tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/
    Complete output (6 lines):
    running install
    running build
    running build_py
    Working dir is /tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc
    execute make -C ./bluepy clean
    error: [Errno 2] No such file or directory: 'make'
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"'; __file__='"'"'/tmp/pip-install-9hwffvgs/bluepy_11d33d45ae8f4a77a50f88b863e79acc/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-hwmffc41/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/bluepy Check the logs for full command output.

тут я немного теряюсь уже, как глубока кроличья нора?:) ставить пакет make ?

tiggaTIG commented 3 years ago

Установка make тоже не помогла, к сожалению((

bash-5.0# /usr/local/bin/python3 -m pip install bluepy
Collecting bluepy
  Using cached bluepy-1.3.0.tar.gz (217 kB)
Building wheels for collected packages: bluepy
  Building wheel for bluepy (setup.py) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"'; __file__='"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-kyu2t0da
       cwd: /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/
  Complete output (11 lines):
  running bdist_wheel
  running build
  running build_py
  Working dir is /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691
  execute make -C ./bluepy clean
  execute make -C bluepy -j1
  Failed to compile bluepy-helper. Exiting install.
  Command was 'make -C bluepy -j1' in /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691
  Return code was 2
  Output was:
  b"make: Entering directory '/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/bluepy'\ntar xzf bluez-src.tgz\ntouch ./bluez-5.47/lib/bluetooth.c ./bluez-5.47/lib/hci.c ./bluez-5.47/lib/sdp.c ./bluez-5.47/lib/uuid.c ./bluez-5.47/attrib/att.c ./bluez-5.47/attrib/gatt.c ./bluez-5.47/attrib/gattrib.c ./bluez-5.47/attrib/utils.c ./bluez-5.47/btio/btio.c ./bluez-5.47/src/log.c ./bluez-5.47/src/shared/mgmt.c ./bluez-5.47/src/shared/crypto.c ./bluez-5.47/src/shared/att.c ./bluez-5.47/src/shared/queue.c ./bluez-5.47/src/shared/util.c ./bluez-5.47/src/shared/io-glib.c ./bluez-5.47/src/shared/timeout-glib.c\nmake: pkg-config: No such file or directory\nmake: pkg-config: No such file or directory\ncc -L. -g -Wall  -Os -DHAVE_CONFIG_H -I./bluez-5.47/attrib -I./bluez-5.47 -I./bluez-5.47/lib -I./bluez-5.47/src -I./bluez-5.47/gdbus -I./bluez-5.47/btio -I./bluez-5.47/sys  -o bluepy-helper bluepy-helper.c ./bluez-5.47/lib/bluetooth.c ./bluez-5.47/lib/hci.c ./bluez-5.47/lib/sdp.c ./bluez-5.47/lib/uuid.c ./bluez-5.47/attrib/att.c ./bluez-5.47/attrib/gatt.c ./bluez-5.47/attrib/gattrib.c ./bluez-5.47/attrib/utils.c ./bluez-5.47/btio/btio.c ./bluez-5.47/src/log.c ./bluez-5.47/src/shared/mgmt.c ./bluez-5.47/src/shared/crypto.c ./bluez-5.47/src/shared/att.c ./bluez-5.47/src/shared/queue.c ./bluez-5.47/src/shared/util.c ./bluez-5.47/src/shared/io-glib.c ./bluez-5.47/src/shared/timeout-glib.c \nmake: cc: No such file or directory\nmake: *** [Makefile:30: bluepy-helper] Error 127\nmake: Leaving directory '/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/bluepy'\n"
  ----------------------------------------
  ERROR: Failed building wheel for bluepy
  Running setup.py clean for bluepy
Failed to build bluepy
Installing collected packages: bluepy
    Running setup.py install for bluepy ... error
    ERROR: Command errored out with exit status 1:
     command: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"'; __file__='"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-yhottht1/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/bluepy
         cwd: /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/
    Complete output (11 lines):
    running install
    running build
    running build_py
    Working dir is /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691
    execute make -C ./bluepy clean
    execute make -C bluepy -j1
    Failed to compile bluepy-helper. Exiting install.
    Command was 'make -C bluepy -j1' in /tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691
    Return code was 2
    Output was:
    b"make: Entering directory '/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/bluepy'\ntar xzf bluez-src.tgz\ntouch ./bluez-5.47/lib/bluetooth.c ./bluez-5.47/lib/hci.c ./bluez-5.47/lib/sdp.c ./bluez-5.47/lib/uuid.c ./bluez-5.47/attrib/att.c ./bluez-5.47/attrib/gatt.c ./bluez-5.47/attrib/gattrib.c ./bluez-5.47/attrib/utils.c ./bluez-5.47/btio/btio.c ./bluez-5.47/src/log.c ./bluez-5.47/src/shared/mgmt.c ./bluez-5.47/src/shared/crypto.c ./bluez-5.47/src/shared/att.c ./bluez-5.47/src/shared/queue.c ./bluez-5.47/src/shared/util.c ./bluez-5.47/src/shared/io-glib.c ./bluez-5.47/src/shared/timeout-glib.c\nmake: pkg-config: No such file or directory\nmake: pkg-config: No such file or directory\ncc -L. -g -Wall  -Os -DHAVE_CONFIG_H -I./bluez-5.47/attrib -I./bluez-5.47 -I./bluez-5.47/lib -I./bluez-5.47/src -I./bluez-5.47/gdbus -I./bluez-5.47/btio -I./bluez-5.47/sys  -o bluepy-helper bluepy-helper.c ./bluez-5.47/lib/bluetooth.c ./bluez-5.47/lib/hci.c ./bluez-5.47/lib/sdp.c ./bluez-5.47/lib/uuid.c ./bluez-5.47/attrib/att.c ./bluez-5.47/attrib/gatt.c ./bluez-5.47/attrib/gattrib.c ./bluez-5.47/attrib/utils.c ./bluez-5.47/btio/btio.c ./bluez-5.47/src/log.c ./bluez-5.47/src/shared/mgmt.c ./bluez-5.47/src/shared/crypto.c ./bluez-5.47/src/shared/att.c ./bluez-5.47/src/shared/queue.c ./bluez-5.47/src/shared/util.c ./bluez-5.47/src/shared/io-glib.c ./bluez-5.47/src/shared/timeout-glib.c \nmake: cc: No such file or directory\nmake: *** [Makefile:30: bluepy-helper] Error 127\nmake: Leaving directory '/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/bluepy'\n"
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python3 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"'; __file__='"'"'/tmp/pip-install-oef3ynw8/bluepy_10b81b64e2af494097fcea318bc58691/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-yhottht1/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/bluepy Check the logs for full command output.
crazymerg commented 3 years ago

А если ему в контейнере bluepy сказать поставить? Вообще странно это все: blupy в зависимостях tion-blte прописан и он должен его по цепочке зависимостей тянуть.

До установки зависимости не доходит, падает из-за этого импорта - https://github.com/TionAPI/tion_python/blob/master/setup.py#L4

tiggaTIG commented 3 years ago

Похоже supervised версия homeassistant так просто не позволит добавить интеграцию, либо я что-то не так сделал. Буду дальше копать

IATkachenko commented 3 years ago

@crazymerg, спасибо. Сразу не обратил внимание на это. Сейчас сделаем workaroud для tion_btle.const... Ну и будет выглядеть это все чуть более правильно.

IATkachenko commented 3 years ago

Нет, электронный мозг, закрывать еще рано.

IATkachenko commented 3 years ago

А вот теперь в самый раз.

Компонент обновил. Если проблема актуальна для версии 1.5.1 -- переоткройте, пожалуйста. Будем дальше ковырять.

Flaxing commented 3 years ago

image Актуально на 1.5.1 и 1.7.1

IATkachenko commented 3 years ago

Exec format error означает что bluepy-helper не удается запустить на вашей системе (собран, например, под другую архитектуру/процессор). Данная ошибка непосредственно с интеграцией или python-модулем не связана. Попробуйте в вашей системе запустить какой-нибудь bluepy пример. Например scanner из его репозитория .

Flaxing commented 3 years ago

Exec format error означает что bluepy-helper не удается запустить на вашей системе (собран, например, под другую архитектуру/процессор). Данная ошибка непосредственно с интеграцией или python-модулем не связана. Попробуйте в вашей системе запустить какой-нибудь bluepy пример. Например scanner из его репозитория .

image

IATkachenko commented 3 years ago

Будем думать что все это происходит в /config/deps/lib/python3.8, те там же где и лежит bluepy из сообщения об ошибке, и здесь все точно. И при этом всеравно exec format error при добавлении интеграции?

ps. Прикладывайте, пожалуйста, текст в виде текста, заключенного в ```, а не картиной.

Flaxing commented 3 years ago

Будем думать что все это происходит в /config/deps/lib/python3.8, те там же где и лежит bluepy из сообщения об ошибке, и здесь все точно. И при этом всеравно exec format error при добавлении интеграции?

ps. Прикладывайте, пожалуйста, текст в виде текста, заключенного в ```, а не картиной.

Да, это /config/deps/lib/python3.8 Всеравно exec format error при добавлении интеграции

IATkachenko commented 3 years ago

А что при этом говорит file /config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper? Чудес не бывает: или helper можно запустить, или нет. Одновременно и того и другого не бывает.

Flaxing commented 3 years ago

А что при этом говорит file /config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper? Чудес не бывает: или helper можно запустить, или нет. Одновременно и того и другого не бывает.

#file /config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper /config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper: ELF 32-bit LSB pie executable, ARM, EABIS version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-armhf.so.1, with debug_info, not stripped Понимаю, что чудес не бывает, есть мысль, что может это всё в другом контейнере надо делать, типа supervisor, вместо homeassistant, нет?

IATkachenko commented 3 years ago

Нет, supervisor используется чтобы была возможность использовать сторонние контейнеризированные приложения (вроде node-red или visual studio code) и больше ни для чего. Все итеграции попрежнему живут в контейнере HA. Более того, я у себя, на малине с расбианом это все запускал, чтобы посмотреть что вообще мне может дать supervisor.

Еще уточню: interpreter /lib/ld-musl-armhf.so.1. У вас хост -- ARM и архитектура armhf? uname -a в том же терминале это подтверждает?

Flaxing commented 3 years ago

консольно в docker exec -it homeassistant bash (всё хорошо)

Система amd64, устанавливает x86_64, устанавливается x86_64

bash-5.0# pip install bluepy
Processing /root/.cache/pip/wheels/ae/52/54/2b125a9bf67f82c81b99fa31f198d14a67b78304522c0a9ece/bluepy-1.3.0-cp38-cp38-linux_x86_64.whl
Installing collected packages: bluepy
Successfully installed bluepy-1.3.0
WARNING: You are using pip version 20.2.4; however, version 21.0.1 is available.
You should consider upgrading via the '/usr/local/bin/python -m pip install --upgrade pip' command.
bash-5.0# file /usr/local/lib/python3.8/site-packages/bluepy/bluepy-helper
/usr/local/lib/python3.8/site-packages/bluepy/bluepy-helper: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, with debug_info, not stripped
bash-5.0# uname -a
Linux homeassistant 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 Linux

Через HA в WebTerminal

Система amd64, устанавливает x86_64, устанавливается armhf image PS: нет возможности скопировать листинг, там HTML5 Canvas

IATkachenko commented 3 years ago

Вот и докапались где архитектуры не соответствуют. Я пока затрудняюсь объяснить почему HA собирает bluepy под armhf архитектуру, но проблема явно в этом.

Flaxing commented 3 years ago

Помогло это:

docker exec -it homeassistant bash
mv /config/deps/lib/python3.8/site-packages/bluepy /config/deps/lib/python3.8/site-packages/bluepy_4del
ln -s /usr/local/lib/python3.8/site-packages/bluepy /config/deps/lib/python3.8/site-packages/

Получена нужная архитектура:

bash-5.0# file /config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper
/config/deps/lib/python3.8/site-packages/bluepy/bluepy-helper: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-x86_64.so.1, with debug_info, not stripped

Разбираться что произошло и почему не компетентен, вероятно разные пути установки разных версий bluepy. Интеграция 1.7.1 установилась и Tion 3S управляем из Home Assistant 2021.4.6 Supervised Docker на Debian 10(Buster).