zewelor / bt-mqtt-gateway

A simple Python script which provides a Bluetooth to MQTT gateway, easily extensible via custom workers. See https://github.com/zewelor/bt-mqtt-gateway/wiki for more information.
MIT License
549 stars 116 forks source link

Anyway to setup on qnap? #263

Open wieluk opened 1 year ago

wieluk commented 1 year ago

Hey, I am trying to use the gateway on mqtt-gateway on qnap but I am kind of stuck. I want to use it for my eq3bt thermostats. I installed it in docker but I only get exceptions.WorkerTimeoutError: Execution of command ThermostatWorker.status_update timed out after 35 seconds.

I also tried to install bluez from source but I get this error on configure. checking for glib-2.0 >= 2.28... no configure: error: GLib >= 2.28 is required

but I installed glib with opkg install glib2 Package glib2 (2.70.5-4) installed in root is up to date.

Here a full faillog:

2022-10-10 12:57:54,518 ERROR bt-mqtt-gw logger.py:50:log_exception - Execution of command ThermostatWorker.status_update timed out after 35 seconds

Traceback (most recent call last):

  File "./gateway.py", line 90, in <module>

    mqtt.publish(_WORKERS_QUEUE.get(timeout=10).execute())

  File "/application/workers_manager.py", line 55, in execute

    raise e

  File "/application/workers_manager.py", line 45, in execute

    for message in self._callback(*self._args):

  File "/application/workers/thermostat.py", line 200, in status_update

    retry(thermostat.update, retries=self.update_retries, exception_type=btle.BTLEException)()

  File "/application/workers/base.py", line 113, in wrapped_retry

    return retryer(func, *args, **kwargs)

  File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 406, in __call__

    do = self.iter(retry_state=retry_state)

  File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 351, in iter

    return fut.result()

  File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 437, in result

    return self.__get_result()

  File "/usr/local/lib/python3.8/concurrent/futures/_base.py", line 389, in __get_result

    raise self._exception

  File "/usr/local/lib/python3.8/site-packages/tenacity/__init__.py", line 409, in __call__

    result = fn(*args, **kwargs)

  File "/usr/local/lib/python3.8/site-packages/eq3bt/eq3btsmart.py", line 205, in update

    self._conn.make_request(PROP_WRITE_HANDLE, value)

  File "/usr/local/lib/python3.8/site-packages/eq3bt/connection.py", line 71, in make_request

    with self:

  File "/usr/local/lib/python3.8/site-packages/eq3bt/connection.py", line 36, in __enter__

    self._conn.connect(self._mac)

  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 436, in _connect

    rsp = self._getResp('stat')

  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()

  File "/usr/local/lib/python3.8/site-packages/interruptingcow/__init__.py", line 74, in handler

    raise exception

exceptions.WorkerTimeoutError: Execution of command ThermostatWorker.status_update timed out after 35 seconds