Git Product home page Git Product logo

Comments (25)

undera avatar undera commented on July 28, 2024 1

Bleak is not installed.by default because pylgbst works with several variants of BLE backends. you need to decide which you use and install it

In your case things are more complex: bricknil has installed its own patched bleak, and pylgbst uses it and fails. You should uninstall bricknil and bricknil-bleak, then install official bleak and then try again.

from pylgbst.

undera avatar undera commented on July 28, 2024

Hello,
I am very excited to hear about your task, would love to help.
With RPi, I saw that there are various behaviors from device to device, probably due to hardware and software differences.

What you should try is to experiment around version of bleak Python library. Which version do you use at the moment? It should be something recent from this list: https://pypi.org/project/bleak/#history

Also, I can see that bricknil uses a patched version of Bleak: https://github.com/virantha/bleak that is installable as bricknil-bleak (https://pypi.org/project/bricknil-bleak/#history). This may be worth trying, to uninstall official bleak library and install bricknil-bleak instead. The author made it to clash with official bleak, so you need to be extra careful with what is installed first and second. THis may also explain why bricknil works and others don't. I'll be happy to help you through the process.

I understand the urgency, let's see if there can be some progress from bleak library variants.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Hm - did some more troubleshooting, and lo and behold, now something works.

I was foolish enough to assume that the bleak library had been installed, but even though BrickNil uses Bleak, apparently it doesn't use the Python library. pip install bleak changed a lot.

But now I wonder: If pylgbst depends on bleak, how come it doesn't complain when the package isn't installed?

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Sorry - my last comment was posted just after you posted yours.

I'll try some troubleshooting along the lines you suggest and report back.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

I've now done it properly and created a virtual environment. Installing pylgbst and bleak and running demo.py I get this debug output:

6109	DEBUG	comms-bleak	Connection status: True
6149	DEBUG	hub	Waiting for builtin devices to appear: (None, None, None)
6250	DEBUG	hub	Waiting for builtin devices to appear: (None, None, None)
6351	DEBUG	hub	Waiting for builtin devices to appear: (None, None, None)
6353	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8): ['org.bluez.Device1', {'Appearance': <dbus_fast.signature.Variant ('q', 6144)>}, []]
6451	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Notifying': <dbus_fast.signature.Variant ('b', True)>}, []]
6452	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
6453	DEBUG	hub	Waiting for builtin devices to appear: (None, None, None)
6454	DEBUG	comms-bleak	Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x0', '0x1', '0x2', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
6455	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x01\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
6456	DEBUG	comms-bleak	Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x1', '0x1', '0x8', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
6457	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x042\x01\x17\x00\x00\x00\x00\x10\x00\x00\x00\x10'))>}, []]
6458	DEBUG	comms-bleak	Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x32', '0x1', '0x17', '0x0', '0x0', '0x0', '0x0', '0x10', '0x0', '0x0', '0x0', '0x10']
6460	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04;\x01\x15\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
6461	DEBUG	comms-bleak	Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x3b', '0x1', '0x15', '0x0', '0x2', '0x0', '0x0', '0x0', '0x2', '0x0', '0x0', '0x0']
6461	DEBUG	hub	Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004000102000000000000000000'
6463	DEBUG	hub	Decoded message: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
6465	DEBUG	hub	Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7654c5b0>>: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
6468	WARNING	hub	Have no dedicated class for peripheral type 0x2 (SYSTEM_TRAIN_MOTOR) on port 0x0
6472	INFO	hub	Attached peripheral: Peripheral on port 0x0
6484	DEBUG	hub	Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004010108000000000000000000'
6484	DEBUG	hub	Decoded message: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
6485	DEBUG	hub	Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7654c5b0>>: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
6487	WARNING	hub	Have no dedicated class for peripheral type 0x8 (LED_LIGHT) on port 0x1
6489	INFO	hub	Attached peripheral: Peripheral on port 0x1
6499	DEBUG	bleak.backends.bluezdbus.manager	received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04<\x01\x14\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
6500	DEBUG	comms-bleak	Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x3c', '0x1', '0x14', '0x0', '0x2', '0x0', '0x0', '0x0', '0x2', '0x0', '0x0', '0x0']
6501	DEBUG	hub	Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004320117000000001000000010'
6502	DEBUG	hub	Decoded message: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
6503	DEBUG	hub	Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7654c5b0>>: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
6506	INFO	hub	Attached peripheral: LEDRGB on port 0x32
6517	DEBUG	hub	Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043b0115000200000002000000'
6518	DEBUG	hub	Decoded message: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
6518	DEBUG	hub	Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7654c5b0>>: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
6521	INFO	hub	Attached peripheral: Current on port 0x3b
6533	DEBUG	hub	Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043c0114000200000002000000'
6533	DEBUG	hub	Decoded message: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
6534	DEBUG	hub	Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7654c5b0>>: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
6537	INFO	hub	Attached peripheral: Voltage on port 0x3c
6555	DEBUG	hub	All devices are present: (LEDRGB on port 0x32, Current on port 0x3b, Voltage on port 0x3c)
6556	INFO	demo	Motors movement demo: timed
6557	INFO	demo	Speed level: 0.0%
6558	DEBUG	hub	Send message: MsgHubAction({'payload': b'', 'needs_reply': False, 'action': 2})
6559	DEBUG	hub	Waiting for sync reply to MsgHubAction({'payload': b'02', 'needs_reply': True, 'action': 2})...
6574	DEBUG	comms-bleak	Request: 14 ['0x4', '0x0', '0x2', '0x2']
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/home/lars/venv/lib/python3.9/site-packages/pylgbst/comms/cbleak.py", line 50, in <lambda>
    self._connection_thread = threading.Thread(target=lambda: asyncio.run(self._bleak_thread()))
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/home/lars/venv/lib/python3.9/site-packages/pylgbst/comms/cbleak.py", line 69, in _bleak_thread
    await bleak.write(data[0], data[1])
  File "/home/lars/venv/lib/python3.9/site-packages/pylgbst/comms/cbleak.py", line 180, in write
    await self._client.write_gatt_char(MOVE_HUB_HW_UUID_CHAR, data)
  File "/home/lars/venv/lib/python3.9/site-packages/bleak/__init__.py", line 593, in write_gatt_char
    await self._backend.write_gatt_char(char_specifier, data, response)
  File "/home/lars/venv/lib/python3.9/site-packages/bleak/backends/bluezdbus/client.py", line 801, in write_gatt_char
    assert_reply(reply)
  File "/home/lars/venv/lib/python3.9/site-packages/bleak/backends/bluezdbus/utils.py", line 20, in assert_reply
    raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.bluez.Error.Failed] Not connected

Then pressing Ctrl-C I get:

^CTraceback (most recent call last):
  File "/home/lars/./sporvogn.py", line 265, in <module>
    demo(hub)
  File "/home/lars/./sporvogn.py", line 177, in demo_all
    demo_motors_timed(movehub)
  File "/home/lars/./sporvogn.py", line 33, in demo_motors_timed
    movehub.motor_A.timed(0.2, level)
AttributeError: 'SmartHub' object has no attribute 'motor_A'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/lars/./sporvogn.py", line 267, in <module>
    hub.disconnect()
  File "/home/lars/venv/lib/python3.9/site-packages/pylgbst/hub.py", line 190, in disconnect
    self.send(MsgHubAction(MsgHubAction.DISCONNECT))
  File "/home/lars/venv/lib/python3.9/site-packages/pylgbst/hub.py", line 96, in send
    resp = self._sync_replies.get()
  File "/usr/lib/python3.9/queue.py", line 171, in get
    self.not_empty.wait()
  File "/usr/lib/python3.9/threading.py", line 312, in wait
    waiter.acquire()
KeyboardInterrupt

Interesting to learn that it complains about a motor that it cannot find - but only after i press Ctrl-C.

I have modified demo.py to create a SmartHub object instead of a MoveHub.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024
Package       Version
------------- -------
async-timeout 4.0.2
bleak         0.19.4
dbus-fast     1.74.0
pip           22.3.1
pkg_resources 0.0.0
pylgbst       1.2.2
setuptools    44.1.1

from pylgbst.

undera avatar undera commented on July 28, 2024

SmartHub object will have different capabilities, so you can't run demo with that type of hub. Demo script is designed to be used with MoveHub.

"All devices are present" in log is a very good sign, seems your SmartHub is up and ready. Now, you need to work with it properly.

from pylgbst.

undera avatar undera commented on July 28, 2024

There are couple of important messages in the log:

6468 WARNING hub Have no dedicated class for peripheral type 0x2 (SYSTEM_TRAIN_MOTOR) on port 0x0
6487 WARNING hub Have no dedicated class for peripheral type 0x8 (LED_LIGHT) on port 0x1

Those mean that pylgbst does not have specialized handling for those devices. That's OK, you can still interact with them.

The interaction can happen on lower level, via message sending/receiving, or by optimistic peripheral enablement. We can even figure out the exact device capabilities and write nice peripheral handling for those.

from pylgbst.

undera avatar undera commented on July 28, 2024

Here's a snippet of initializing your own objects bindings:

hub = SmartHub()

# create objects
motor = pylgbst.peripherals.EncodedMotor(hub, 0x0)
led = pylgbst.peripherals.LEDLight(hub, 0x1)

# optionally, assign it into hub class
hub.peripherals[0x0] = motor
hub.peripherals[0x1] = led

# also the shorthand ports
hub.port_A = motor
hub.port_B = led

# use it!
led.brightness = 1.0
motor.timed(1.0, 1.0)

After that, your can do commands to those peripherals. The code can be arranged slightly differently. If EncodedMotor class does not work well, try using Motor class instead.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Back again after surgery - and on to the project!

Thank you very much for your example: But whilst it most likely will work with the current code on Github, it doesn't work with the latest release and hence it won't work with the latest package on PyPi. Your latest release is 1.2.2, that's the latest package on PyPi as well - but it doesn't include the peripheral LEDLight.

Perhaps time for a new release?

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Having removed the LED and concentrating on the motor for now, I do get a bit further, but your code snippet still fails:

DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004010108000000000000000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x764a7d00>>: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
WARNING:hub:Have no dedicated class for peripheral type 0x8 (LED_LIGHT) on port 0x1
INFO:hub:Attached peripheral: Peripheral on port 0x1
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004320117000000001000000010'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x764a7d00>>: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
INFO:hub:Attached peripheral: LEDRGB on port 0x32
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043b0115000200000002000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x764a7d00>>: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
INFO:hub:Attached peripheral: Current on port 0x3b
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043c0114000200000002000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x764a7d00>>: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
INFO:hub:Attached peripheral: Voltage on port 0x3c
DEBUG:hub:All devices are present: (LEDRGB on port 0x32, Current on port 0x3b, Voltage on port 0x3c)
DEBUG:hub:Send message: MsgPortOutput({'payload': b'', 'needs_reply': False, 'port': 0, 'is_buffered': False, 'do_feedback': True, 'subcommand': 9, 'params': b'e80364647f03'})
DEBUG:hub:Waiting for sync reply to MsgPortOutput({'payload': b'001109e80364647f03', 'needs_reply': True, 'port': 0, 'is_buffered': False, 'do_feedback': True, 'subcommand': 9, 'params': b'e80364647f03'})...
DEBUG:comms-bleak:Request: 14 ['0xc', '0x0', '0x81', '0x0', '0x11', '0x9', '0xe8', '0x3', '0x64', '0x64', '0x7f', '0x3']
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 50, in <lambda>
    self._connection_thread = threading.Thread(target=lambda: asyncio.run(self._bleak_thread()))
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 69, in _bleak_thread
    await bleak.write(data[0], data[1])
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 180, in write
    await self._client.write_gatt_char(MOVE_HUB_HW_UUID_CHAR, data)
  File "/usr/local/lib/python3.9/dist-packages/bleak/__init__.py", line 593, in write_gatt_char
    await self._backend.write_gatt_char(char_specifier, data, response)
  File "/usr/local/lib/python3.9/dist-packages/bleak/backends/bluezdbus/client.py", line 801, in write_gatt_char
    assert_reply(reply)
  File "/usr/local/lib/python3.9/dist-packages/bleak/backends/bluezdbus/utils.py", line 20, in assert_reply
    raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.bluez.Error.Failed] Not connected

from pylgbst.

undera avatar undera commented on July 28, 2024

Hey, welcome back. Hope nothing serious with your surgery.

I would love to validate that the source code works before doing a release. It is easily possible by running pip install https://github.com/undera/pylgbst/archive/refs/heads/master.zip, which will install latest source code from GitHub.

Regarding "Not connected" error - it's something very specific to bluez, not something that we control on the pylgbst level. Their docs (https://bleak.readthedocs.io/en/latest/backends/linux.html?highlight=dbus) mention that https://github.com/Bluetooth-Devices/dbus-fast library is used. I would look if latest version of Bleak is installed and also that dbus-fast library.

From reading the log above, I don't see the motor is attached. It rather reports attaching the LED with INFO:hub:Attached peripheral: Peripheral on port 0x1. I see no corresponding message for the motor on port 0, thus I'd not expect it to function.

Let's continue troubleshooting it.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

No, nothing too bad about surgery - just a toe with osteoarthritis. But bad enough when you suffer from it.

Anyway, the motor is there - my snippet was just too short. The lines immediately before the ones above:

DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Notifying': <dbus_fast.signature.Variant ('b', True)>}, []]
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x0', '0x1', '0x2', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004000102000000000000000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x7656dd00>>: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
WARNING:hub:Have no dedicated class for peripheral type 0x2 (SYSTEM_TRAIN_MOTOR) on port 0x0
INFO:hub:Attached peripheral: Peripheral on port 0x0
DEBUG:hub:Waiting for builtin devices to appear: (None, None, None)
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x01\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x1', '0x1', '0x8', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x042\x01\x17\x00\x00\x00\x00\x10\x00\x00\x00\x10'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x32', '0x1', '0x17', '0x0', '0x0', '0x0', '0x0', '0x10', '0x0', '0x0', '0x0', '0x10']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04;\x01\x15\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x3b', '0x1', '0x15', '0x0', '0x2', '0x0', '0x0', '0x0', '0x2', '0x0', '0x0', '0x0']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04<\x01\x14\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004010108000000000000000000'

Will try to install from Github instead of PyPi.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Unfortunately, same result after installing latest master.

In general, everything should be up to date: The RPi was installed from scratch only three weeks ago, and I've uninstalled all Python packages related to this project for my venv, my personal home, and the overall root account. Sigh. There was a mixture of packages, there isn't anymore.

If everything else fails, we can try wiping out the RPi and start over again with a fresh Raspbian. This RPi will only be used for Lego - at least for now.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

But the debug log isn't completely the same after the upgrade:

DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8): ['org.bluez.Device1', {'Appearance': <dbus_fast.signature.Variant ('q', 6144)>}, []]
DEBUG:hub:Waiting for builtin devices to appear: (None, None, None)
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Notifying': <dbus_fast.signature.Variant ('b', True)>}, []]
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x00\x01\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x0', '0x1', '0x2', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04\x01\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x1', '0x1', '0x8', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x042\x01\x17\x00\x00\x00\x00\x10\x00\x00\x00\x10'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x32', '0x1', '0x17', '0x0', '0x0', '0x0', '0x0', '0x10', '0x0', '0x0', '0x0', '0x10']
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04;\x01\x15\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004000102000000000000000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x3b', '0x1', '0x15', '0x0', '0x2', '0x0', '0x0', '0x0', '0x2', '0x0', '0x0', '0x0']
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x765370b8>>: MsgHubAttachedIO({'payload': b'02000000000000000000', 'port': 0, 'event': 1})
INFO:hub:Attached peripheral SYSTEM_TRAIN_MOTOR => EncodedMotor on port 0x0
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004010108000000000000000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x765370b8>>: MsgHubAttachedIO({'payload': b'08000000000000000000', 'port': 1, 'event': 1})
INFO:hub:Attached peripheral LED_LIGHT => LEDLight on port 0x1
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f0004320117000000001000000010'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x765370b8>>: MsgHubAttachedIO({'payload': b'17000000001000000010', 'port': 50, 'event': 1})
INFO:hub:Attached peripheral RGB_LIGHT => LEDRGB on port 0x32
DEBUG:bleak.backends.bluezdbus.manager:received D-Bus signal: org.freedesktop.DBus.Properties.PropertiesChanged (/org/bluez/hci0/dev_90_84_2B_C6_9A_F8/service000c/char000d): ['org.bluez.GattCharacteristic1', {'Value': <dbus_fast.signature.Variant ('ay', bytearray(b'\x0f\x00\x04<\x01\x14\x00\x02\x00\x00\x00\x02\x00\x00\x00'))>}, []]
DEBUG:comms-bleak:Response: 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic ['0xf', '0x0', '0x4', '0x3c', '0x1', '0x14', '0x0', '0x2', '0x0', '0x0', '0x0', '0x2', '0x0', '0x0', '0x0']
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043b0115000200000002000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x765370b8>>: MsgHubAttachedIO({'payload': b'15000200000002000000', 'port': 59, 'event': 1})
INFO:hub:Attached peripheral CURRENT => Current on port 0x3b
DEBUG:hub:Notification on 00001624-1212-efde-1623-785feabcd123 (Handle: 13): LEGO Wireless Protocol v3 Hub Characteristic: b'0f00043c0114000200000002000000'
DEBUG:hub:Decoded message: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
DEBUG:hub:Handling msg with <bound method SmartHub._handle_device_change of <pylgbst.hub.SmartHub object at 0x765370b8>>: MsgHubAttachedIO({'payload': b'14000200000002000000', 'port': 60, 'event': 1})
INFO:hub:Attached peripheral VOLTAGE => Voltage on port 0x3c
DEBUG:hub:All devices are present: (LEDRGB on port 0x32, Current on port 0x3b, Voltage on port 0x3c)
DEBUG:peripherals:Implied update is enabled=False
DEBUG:peripherals:Implied update delta=1
DEBUG:hub:Send message: MsgPortInputFmtSetupSingle({'payload': b'01000100000000', 'needs_reply': True, 'port': 1, 'mode': 0, 'updates_enabled': False, 'update_delta': 1})
DEBUG:hub:Waiting for sync reply to MsgPortInputFmtSetupSingle({'payload': b'01000100000000', 'needs_reply': True, 'port': 1, 'mode': 0, 'updates_enabled': False, 'update_delta': 1})...
DEBUG:comms-bleak:Request: 14 ['0xa', '0x0', '0x41', '0x1', '0x0', '0x1', '0x0', '0x0', '0x0', '0x0']
Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.9/threading.py", line 954, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.9/threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 51, in <lambda>
    self._connection_thread = threading.Thread(target=lambda: asyncio.run(self._bleak_thread()))
  File "/usr/lib/python3.9/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/usr/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 74, in _bleak_thread
    await bleak.write(data[0], data[1])
  File "/usr/local/lib/python3.9/dist-packages/pylgbst/comms/cbleak.py", line 188, in write
    await self._client.write_gatt_char(MOVE_HUB_HW_UUID_CHAR, data)
  File "/usr/local/lib/python3.9/dist-packages/bleak/__init__.py", line 593, in write_gatt_char
    await self._backend.write_gatt_char(char_specifier, data, response)
  File "/usr/local/lib/python3.9/dist-packages/bleak/backends/bluezdbus/client.py", line 801, in write_gatt_char
    assert_reply(reply)
  File "/usr/local/lib/python3.9/dist-packages/bleak/backends/bluezdbus/utils.py", line 20, in assert_reply
    raise BleakDBusError(reply.error_name, reply.body)
bleak.exc.BleakDBusError: [org.bluez.Error.Failed] Not connected

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Upgraded dbus-fast from 1.74.0 to 1.75.1 - no change.

from pylgbst.

undera avatar undera commented on July 28, 2024

What is the exact Bleak version you have? I have no other ideas than asking on Bleak issue tracker for possible help.

The difficult part is the fact that the code works on other machines. It must be something with that specific combination of OS, hardware and software.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

I'm using Bleak version 0.19.5 - the latest and greatest just about two weeks old.

I'll try opening a ticket with the Bleak project as well.

from pylgbst.

undera avatar undera commented on July 28, 2024

@larsskj Can you try patching the library right on RPi, by searching for file like find / -name "cbleak.py" and modifying the line according to @lorenzofelletti advice?

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

Sorry for being away for a long time: I've been ill, and then we've had all the usual celebrations.

But here we go and I've found the time to test some of the suggestions: I first downloaded the latest BlueZ from kernel.org (version 5.66) and compiled it for my Raspberry Pi - a suggestion from the Bleak project. I then patched the Python code according to the suggestion as well - but all of it to no avail: Same disappointing result.

from pylgbst.

undera avatar undera commented on July 28, 2024

@larsskj Did you try patching cbleak.py ?

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

@undera Yes, that's what I meant by writing "I then patched the Python code according to the suggestion as well..."

Did you see the comment from dlech in the Bleak issue about a bug in the Lego implementation? And that the simple patch of cbleak.py wouldn't be enough?

from pylgbst.

undera avatar undera commented on July 28, 2024

So, looks like we are unable to find the solution for this particular problem. Something is broken there in BLE communications.

from pylgbst.

cuernodegazpacho avatar cuernodegazpacho commented on July 28, 2024

@larsskj we were able to include support for the train motor. It is available in the latest master.

from pylgbst.

larsskj avatar larsskj commented on July 28, 2024

This sounds amazing: I'll give it a try in the weekend.

from pylgbst.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.