HA Modbus in Proxmox VM wird mit RS485toUSB-Adapter abgewürgt

Servus,

kurz zum Setup:
Ich lese bis dato den Zähler vom Batteriespeicher (EcoFlow PowerOcean) mittels eines Waveshare RS485toETH aus, was auch so weit funktioniert.

Inzwischen ist der Server (Mini-PC mit Core i5) physisch in die Nähe des Zählerschranks umgezogen - was den inneren Monk dazu verleitet hat, statt dem Waveshare gleich einen RS485toUSB zu verwenden, konkret diesen hier.

Derzeit hängt der schon auf der Bus-Leitung mit drauf, wird korrekt im HA unter Hardware angezeigt und im Terminal tut sich auch fortlaufend etwas:

➜  / cat /dev/ttyUSB0
+hh4737hhhh꒲hh3265Euu7"7h"W8Zh&hh3265bݨ)qn*onhhjhhMMM
4hh
hhDt(+'Qh737hd!MӦ'QNڋh4737d737JG;D9hh"2!MӦhhhh
4737JGhhRul"hhh
hh4737"2!MӦ'QNڋhhhBD
4737JG;
4737JGhh
hRul"hh47Dt(+'Qhժh4737'QNڋh4737JG;hhh"2!MӦ'QNhCE"hh4737"2!MӦ'QNڋD9h+hh4737h
4hhh2!MӦ'QNڋhh4h"2!MӦ'QNڋhh
4737JG;D9h4737Rul"hh473h
hӦhh47"2!MӦ'QNڋhhh+'QNڋh꺚h
^C
➜  / 

Meine modbus.yaml schaut derzeit so aus:

- name: "smartmeter_grid"

  type: tcp
  host: 192.168.0.204
  port: 502

  # type: serial
  # port: /dev/ttyUSB0
  # baudrate: 9600
  # bytesize: 8
  # method: rtu
  # parity: N
  # stopbits: 1

  # delay: 0
  # message_wait_milliseconds: 30
  # timeout: 10

  sensors:

  # 006AH Total active power 
  - name: power grid total active
    unique_id: "e98ca958-66af-c0bb-a7e2-26d5e8670cc9"
    slave: 103
    address: 106
#    precision: 2
    data_type: int16
    unit_of_measurement: W
    input_type: holding
    device_class: power
    scan_interval: 1

Wenn ich nun von tcp auf serial “switche”

- name: "smartmeter_grid"

  # type: tcp
  # host: 192.168.0.204
  # port: 502

  type: serial
  port: /dev/ttyUSB0
  baudrate: 9600
  bytesize: 8
  method: rtu
  parity: N
  stopbits: 1

  delay: 0
  message_wait_milliseconds: 30
  timeout: 10

  sensors:
...

kommt HA beim anschließenden Neustart nicht mehr auf die Füße (=nicht erreichbar) während die CPU-Last auf über 50% steigt. Es hilft dann nur noch ein Restart der ganzen VM (zum Glück funktioniert Samba share trotzdem, sodass ich die modbus.yaml zuvor wieder auf tcp umstellen kann)

Im Logfile1 ist danach außer solchen Einträgen nichts weiter ersichtlich:

  File "/usr/local/lib/python3.13/site-packages/pymodbus/transaction/transaction.py", line 183, in callback_data
    self.response_future.set_result(pdu)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
asyncio.exceptions.InvalidStateError: invalid state
2025-05-16 11:35:35.823 ERROR (MainThread) [pymodbus.logging] Exception response 136 / 0
2025-05-16 11:35:38.772 ERROR (MainThread) [pymodbus.logging] Exception response 170 / 0
2025-05-16 11:35:38.772 ERROR (MainThread) [homeassistant] Error doing job: Exception in callback SerialTransport.intern_read_ready() (None)
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)

Ich versuche jetzt seit geschlagenen 3 Wochen herauszufinden, warum das nicht klappen mag bzw. wo der Fehler in meiner Konfiguration liegen könnte, auch einen anderen RS485toUSB-Konverter hatte ich schon probiert mit dem gleichen Ergebnis.

Hat jemand einen Tip wo ich da jetzt noch ansetzen könnte? :weary:

Gruß
Rudi

Das Problem wird beim Durchreichen der USB Verbindung liegen.
Bleibe einfach bei der TCP Verbindung, eine solche ist ja eh zeitgemäßer.

Naja, ich würde mir halt das extra Hutschienen-Netzteil + den Waveshare RS485toETH im Zählerschrank sparen. Kein triftiger Grund, ich weiß.

Im www habe ich unzählige Seiten zum Thema gefunden und demnach muss es auch gehen.
Mich nervt es halt total, dass ich das ums verr… nicht zum Laufen bringe :sweat_smile: