USB dongle on Rpi5

Dobrý den,

snažím se nainstalovat USB dongle na novém Rpi5. Mqtt server mi běží v kontejneru a Node-Red spustím jako součást HA proto si myslím že není třeba instalovat node.js a pm2 (později bych spouštěl pomoci systemd služby ). Nainstaloval jsem pomocí pip vše potřebné
ale pokud chci spustit gw pomocí

/usr/bin/python3 /usr/local/bin/bcg --device /dev/bcUD0

vrací chybu

Exception ignored in: <function Client.del at 0x7ffee3094fe0>
Traceback (most recent call last):
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 874, in del
self._reset_sockets()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1133, in _reset_sockets
self._sock_close()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1119, in _sock_close
if not self._sock:
^^^^^^^^^^
AttributeError: ‘Client’ object has no attribute ‘_sock’

Zařízení v systému existuje

root@DietPi:~# ll /dev/bcUD0
lrwxrwxrwx 1 root root 7 Feb 27 21:57 /dev/bcUD0 → ttyUSB0
root@DietPi:~# lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 174c:225c ASMedia Technology Inc. Ugreen Storage Device
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Děkuji za pomoc.

Zdravím, takže bcg spouštíte přímo v RPI OS?

Vypadá to spíš na problém, že nenalezne MQTT brokera. Můžete ověřit zda se ze stejného systému kde spouštíte bcg dostanete na MQTT? Třeba spuštěním mosquitto_sub a mosquitto_pub, abyste ověřil, že MQTT funguje?

Nebo můžete použít i bct tool, který obsahuje pub/sub příkazy

Dobrý den,

ano bcg spouštím přímo v rpi OS. Mosquitto MQTT spouštím jako kontejner vy publikovaný na standardní port 1883

netstat -antp | grep 1883
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 2121/docker-proxy
tcp6 0 0 :::1883 :::* LISTEN 2130/docker-proxy

Zkusil jsem se na MQTT připojit z jiného stroje a spojení je OK stejně jako jsem to zkusil lokálně z přímo z RpiOS

root@DietPi:~# mosquitto_pub -h 127.0.0.1 -m “test mess” -t neco/nekde -d
Client (null) sending CONNECT
Client (null) received CONNACK (0)
Client (null) sending PUBLISH (d0, q0, r0, m1, ‘neco/nekde’, … (9 bytes))
Client (null) sending DISCONNECT
root@DietPi:~# mosquitto_pub -h localhost -m “test mess” -t neco/nekde -d
Client (null) sending CONNECT
Client (null) received CONNACK (0)
Client (null) sending PUBLISH (d0, q0, r0, m1, ‘neco/nekde’, … (9 bytes))
Client (null) sending DISCONNECT
root@DietPi:~# mosquitto_pub -h 192.168.1.137 -m “test mess” -t neco/nekde -d
Client (null) sending CONNECT
Client (null) received CONNACK (0)
Client (null) sending PUBLISH (d0, q0, r0, m1, ‘neco/nekde’, … (9 bytes))
Client (null) sending DISCONNECT

pokud spustím bcg tak se do logu MQTT nic nezaloguje ( první 3 záznamy jsou předešlé lokální pokusy )

root@DietPi:/opt/mqtt/log# tail mosquitto.log
1709583981: New client connected from 192.168.1.11:39634 as mqtt-explorer-bbd60e19 (p2, c1, k60).
1709584409: New connection from 172.17.0.1:37058 on port 1883.
1709584409: New client connected from 172.17.0.1:37058 as auto-A31359C3-696D-FC9B-ADC7-DCFABEA71371 (p2, c1, k60).
1709584409: Client auto-A31359C3-696D-FC9B-ADC7-DCFABEA71371 disconnected.
1709584451: New connection from 172.17.0.1:57458 on port 1883.
1709584451: New client connected from 172.17.0.1:57458 as auto-77D77F27-E8A0-E4D5-542A-9DB2FA594E16 (p2, c1, k60).
1709584451: Client auto-77D77F27-E8A0-E4D5-542A-9DB2FA594E16 disconnected.
1709584460: New connection from 192.168.1.137:54136 on port 1883.
1709584460: New client connected from 192.168.1.137:54136 as auto-10F32893-EFDD-443D-BB51-1A31ED8F0F68 (p2, c1, k60).
1709584460: Client auto-10F32893-EFDD-443D-BB51-1A31ED8F0F68 disconnected.

root@DietPi:/opt/mqtt/log# /usr/bin/python3 /usr/local/bin/bcg --device /dev/bcUD0
Exception ignored in: <function Client.del at 0x7fff8d9c4fe0>
Traceback (most recent call last):

  • File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 874, in del*
  • self._reset_sockets()*
  • File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1133, in _reset_sockets*
  • self._sock_close()*
  • File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1119, in _sock_close*
  • if not self._sock:*
  •       ^^^^^^^^^^*
    

AttributeError: ‘Client’ object has no attribute ‘_sock’
2024-03-04 20:43:22,828 ERROR: Client.init() missing 1 required positional argument: ‘callback_api_version’
root@DietPi:/opt/mqtt/log# tail mosquitto.log
1709583981: New client connected from 192.168.1.11:39634 as mqtt-explorer-bbd60e19 (p2, c1, k60).
1709584409: New connection from 172.17.0.1:37058 on port 1883.
1709584409: New client connected from 172.17.0.1:37058 as auto-A31359C3-696D-FC9B-ADC7-DCFABEA71371 (p2, c1, k60).
1709584409: Client auto-A31359C3-696D-FC9B-ADC7-DCFABEA71371 disconnected.
1709584451: New connection from 172.17.0.1:57458 on port 1883.
1709584451: New client connected from 172.17.0.1:57458 as auto-77D77F27-E8A0-E4D5-542A-9DB2FA594E16 (p2, c1, k60).
1709584451: Client auto-77D77F27-E8A0-E4D5-542A-9DB2FA594E16 disconnected.
1709584460: New connection from 192.168.1.137:54136 on port 1883.
1709584460: New client connected from 192.168.1.137:54136 as auto-10F32893-EFDD-443D-BB51-1A31ED8F0F68 (p2, c1, k60).
1709584460: Client auto-10F32893-EFDD-443D-BB51-1A31ED8F0F68 disconnected.

Jak je vidět po spuštění bcg se další záznam nevytvořil

Děkuji
Viktor

Můžete zkusit spustit bcg s parametrem --debug, jestli se tam nedozvíme něco více?

Pokud vám mosquitto_sub funguje, můžete prosím vyzkoušet i pub/sub chování toolu bch?

Zde jsou ukázky

Ověřili bysme si tím, zda je problém jen v bcg, nebo zda bcg i bch mají stejný problém. Pak bysme pátrali po chybě nejspíš v python knihovnách/verzích.

Tak --debug nic nového nepřinesl

oot@DietPi:~# /usr/bin/python3 /usr/local/bin/bcg --debug --device /dev/bcUD0
Exception ignored in: <function Client.del at 0x7fff28664fe0>
Traceback (most recent call last):
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 874, in del
self._reset_sockets()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1133, in _reset_sockets
self._sock_close()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1119, in _sock_close
if not self._sock:
^^^^^^^^^^
AttributeError: ‘Client’ object has no attribute ‘_sock’
2024-03-05 21:05:20,576 ERROR: Client.init() missing 1 required positional argument: ‘callback_api_version’

bch se chová podobně takže problém asi bude skutečně v těch knihovnách. Při instalaci hardwario toolů jsem musel zrušit nastavení EXTERNALLY-MANAGED abych tooly mohl pomocí pip3 vůbec nainstalovat. Možná se nedoinstalovaly závislosti ? . Po instalaci jsem toto nastavení zase zapnul aby se mi v sytému něco nerozbilo.

root@DietPi:~# /usr/bin/python3 /usr/local/bin/bch pub test/test1
Exception ignored in: <function Client.del at 0x7fff10322020>
Traceback (most recent call last):
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 874, in del
self._reset_sockets()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1133, in _reset_sockets
self._sock_close()
File “/usr/local/lib/python3.11/dist-packages/paho/mqtt/client.py”, line 1119, in _sock_close
if not self._sock:
^^^^^^^^^^
AttributeError: ‘Client’ object has no attribute ‘_sock’
error: Client.init() missing 1 required positional argument: ‘callback_api_version’

Děkuji za Váš čas
Viktor

Ten test co jste udělal s bch tam má novou hlášku s callback_api_version.

Narazil jsem na tohle

Možná tedy verze paho knihovny?

Zkuste ji odinstalovat a jak tam doporučují, použijte nižší verzi jak 2
pip install paho-mqtt<2.0.0

Pokud tam budou nějaké konflikty že jiné python programy chtějí novější verzi, zkuste použít venv, nebo pipx a v něm nainstalovat bcg, bch.

Můžete to prosím vyzkoušet, zda to vyřeší problém a potvrdit nám to? Na naší straně pak provedeme opravu.

Děkuji

Tak jsem dohledal nejvyšší verzi paho-mqtt < 2.0.0

nainstaloval

pip install paho-mqtt==1.6.1

A zdá se že bcg funguje :slight_smile:

root@DietPi:~# /usr/bin/python3 /usr/local/bin/bcg --debug --device /dev/bcUD0
2024-03-06 20:39:12,002 INFO: Start
2024-03-06 20:39:12,003 INFO: Serial port: /dev/bcUD0
2024-03-06 20:39:12,003 INFO: MQTT broker host: 127.0.0.1, port: 1883, use tls: False
2024-03-06 20:39:12,006 INFO: Opened serial port: /dev/bcUD0
2024-03-06 20:39:12,006 DEBUG: Exclusive lock on file descriptor: 3
2024-03-06 20:39:12,007 INFO: Connected to MQTT broker with code 0
2024-03-06 20:39:12,008 DEBUG: subscribe gateway/ping
2024-03-06 20:39:12,008 DEBUG: write b’[“/info/get”, null]\n’
2024-03-06 20:39:12,008 DEBUG: subscribe gateway/all/info/get
2024-03-06 20:39:12,032 DEBUG: read b’\x00\x00[“/info”, {“id”: “5613b3720e58”, “firmware”: “bcf-gateway-usb-dongle”, “version”: “v1.13.0”}]\n’
2024-03-06 20:39:12,032 DEBUG: data_dir=/root/.local/share/bcg-usb-dongle
2024-03-06 20:39:12,032 DEBUG: subscribe gateway/usb-dongle/+/+
2024-03-06 20:39:12,033 DEBUG: write b’[“$eeprom/alias/list”, 0]\n’
2024-03-06 20:39:12,048 DEBUG: read b’[“$eeprom/alias/list/0”, {“ef89d674d67a”: “Mobile_node”}]\n’
2024-03-06 20:39:12,048 DEBUG: alias_list: {‘ef89d674d67a’: ‘Mobile_node’}
2024-03-06 20:39:12,048 DEBUG: node_rename ef89d674d67a to Mobile_node
2024-03-06 20:39:12,048 DEBUG: write b’[“/nodes/get”, null]\n’
2024-03-06 20:39:12,063 DEBUG: read b’[“/nodes”, [“ef89d674d67a”]]\n’
2024-03-06 20:39:12,064 DEBUG: node_add ef89d674d67a
2024-03-06 20:39:12,064 DEBUG: subscribe node/ef89d674d67a/+/+/+/+
2024-03-06 20:39:12,064 DEBUG: subscribe node/Mobile_node/+/+/+/+

/usr/bin/python3 /usr/local/bin/bch pub test/test1

Už také nevrací chybu.

Pokud tedy utility upravíte pro verzi paho-mqtt 2.0.0 bude to super.

Děkuji
V.

Děkuji za ověření.

@Karel můžeš na to prosím kouknout jak to opravit? Díky moc.

Mohu se zeptat kdy bude oprava k dispozici ( nebo jen špatně hledám a už je opraveno ) ?

Díky

Není opraveno. Máme to v plánu aktualizovat jako celek aby to běželo i s novým Paho. Termín teď nejsem schopný říct.