core: Unreliable Bluetooth performance with August Smart Lock with Orica BTA-403

The problem

Intermittently the August Smart Lock via the Yale Bluetooth integration doesn’t respond instantly, and can take up to a few minutes to respond. I’ve included some errors I’ve found in the logs, and also a debug log of when the issue actually happened.

I’m using the Orica BTA-403 which I specifically purchased as it was on the high performance adapters list. The lock is 3.491m from the Bluetooth adapter with direct line of sight

Given I ran into this issue I suspect perhaps it’s something to do with the Bluetooth adapter itself being reset.

What version of Home Assistant Core has the issue?

core-2023.9.2

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Yale Access Bluetooth

Link to integration documentation on our website

https://www.home-assistant.io/integrations/yalexs_ble/

Diagnostics information

This captures me unlocking from Homekit at 18:43:39, which takes to 18:43:48 to actually respond, and then locking it again, which happens instantly. home-assistant_yalexs_ble_2023-09-13T08-43-55.898Z.pruned.log

This logbook is a screenshot of what was happening. Basically I hit unlock (6:43:39 PM) , and then you can see the Lock actually responds at 6:43:48 PM, a delay of 9 seconds. I also don’t know why there are duplicated events. I only hit lock and unlock once, and the lock only locked and unlocked once.

image

Example YAML snippet

No response

Anything in the logs that might be useful for us?

I’ve also seen both of these errors:

2023-09-13 18:35:17.300 DEBUG (MainThread) [homeassistant.components.bluetooth.wrappers] 78:9C:85:21:48:F8 - L5000F5 -> /org/bluez/hci0: Connecting (last rssi: -79)
2023-09-13 18:35:28.141 DEBUG (MainThread) [homeassistant.components.bluetooth.manager] hci0 (00:1A:7D:DA:71:13) [connectable]: 78:9C:85:21:48:F8 AdvertisementData(local_name='L5000F5', manufacturer_data={465: b'\x00\x00}\x1c\xb6C\x8cvN4\x82\x9dy\xf5\x13lq\xb6', 76: b'\x061\x01\xe1\xac\xeb\xbadd\x06\x00\xa9\x15\x01\x02\x17\xf5\x9d\x9a'}, service_uuids=['0000003e-0000-1000-8000-0026bb765291', '00000044-0000-1000-8000-0026bb765291', '00000045-0000-1000-8000-0026bb765291', '00000055-0000-1000-8000-0026bb765291', '000000a2-0000-1000-8000-0026bb765291', '00001800-0000-1000-8000-00805f9b34fb', '00001801-0000-1000-8000-00805f9b34fb', '0000180a-0000-1000-8000-00805f9b34fb', '0000fe24-0000-1000-8000-00805f9b34fb'], rssi=-81) match: set()
2023-09-13 18:35:33.076 DEBUG (MainThread) [homeassistant.components.bluetooth.base_scanner] hci0 (00:1A:7D:DA:71:13): Scanner watchdog time_since_last_detection: 3.999923994007986
2023-09-13 18:35:34.343 DEBUG (MainThread) [homeassistant.components.bluetooth.wrappers] 78:9C:85:21:48:F8 - L5000F5 -> /org/bluez/hci0: Connected (last rssi: -79)
2023-09-13 18:35:34.344 DEBUG (MainThread) [bleak_retry_connector] Front Door (L5000F5) - 78:9C:85:21:48:F8: Connected after 1 attempts
2023-09-13 18:35:38.044 ERROR (MainThread) [yalexs_ble.push] Front Door (L5000F5): Disconnected while updating
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 999, in _execute_deferred_update
    await self._update()
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 109, in _async_wrap_operation_lock
    return await func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 153, in _async_wrap_retry_bluetooth_connection_error
    return await func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 696, in _update
    battery_state = await lock.battery()
                    ^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/lock.py", line 81, in _async_wrap_connected_operation
    raise DisconnectedError("Lock is not connected")
yalexs_ble.session.DisconnectedError: Lock is not connected
Logger: yalexs_ble.push
Source: /usr/local/lib/python3.11/site-packages/yalexs_ble/push.py:1020
First occurred: 6:16:30 PM (1 occurrences)
Last logged: 6:16:30 PM

Front Door (L5000F5): Bluetooth error updating
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 999, in _execute_deferred_update
    await self._update()
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 109, in _async_wrap_operation_lock
    return await func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 153, in _async_wrap_retry_bluetooth_connection_error
    return await func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 686, in _update
    lock = await self._ensure_connected()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/push.py", line 559, in _ensure_connected
    await self._client.connect()
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/lock.py", line 184, in connect
    await self.secure_session.start_notify()
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/session.py", line 211, in start_notify
    await self._start_notify(self._notify)
  File "/usr/local/lib/python3.11/site-packages/yalexs_ble/session.py", line 224, in _start_notify
    await self.client.start_notify(self.read_characteristic, callback)
  File "/usr/local/lib/python3.11/site-packages/bleak/__init__.py", line 834, in start_notify
    await self._backend.start_notify(characteristic, wrapped_callback, **kwargs)
  File "/usr/local/lib/python3.11/site-packages/bleak/backends/bluezdbus/client.py", line 958, in start_notify
    assert_reply(reply)
  File "/usr/local/lib/python3.11/site-packages/bleak/backends/bluezdbus/utils.py", line 22, in assert_reply
    raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.freedesktop.DBus.Error.UnknownObject] Method "StartNotify" with signature "" on interface "org.bluez.GattCharacteristic1" doesn't exist

Additional information

No response

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Comments: 20 (10 by maintainers)

Most upvoted comments

Thanks. Looks like a completely different issue but the net effect is the same