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?
Gruß
Rudi