Ich habe über 20 Geräte im Netz, die über Modbus TCP angesprochen werden. Wärmepumpe, Stromzähler, Speicher, Steckdosen, Lüftungssteuerungen etc.
Wenn ich die direkt anspreche - über PC-Tools - habe ich quasi keine Aussetzer, auch wenn ich die Geräte mit Requests bombardiere.
In HA sind die Sensorwerte aber recht häufig “unavailable”, im Logfile steht dann meist eine pymodbus-Meldung, es bestehe keine Verbindung zu dem entsprechenden Gerät.
HA läuft bei mir auf einem Raspi 5, der über Kabel an meinem Router hängt - genau wie einige der Modbusgeräte. Damit würde ich Netzwerkprobleme ausschließen wollen, zumal der PC genauso verbunden ist und keine dieser Probleme hat.
Bei den Geräten, die selbst Modbusfehler tracken, ist die Fehlerrate 0, alle Requests, die ankommen, werden auch beantwortet.
Spricht also einiges dafür, dass der Grund in der Modbus-Integration steckt, aber ich habe keine Ahnung, wo ich da suchen sollte.
Schön das es mir nicht allein so geht.
Ich habe auch mehrere Geräte über Modbus angebunden. Die da wären: Siemens LOGO! direkt über Modbus, VictronGX mittels Integration über Modbus und den Energiemeter CarloGavazzi direkt über Modbus.
Bei mir habe ich komischerweise nur Aussetzer bei der LOGO!-Verbindung, dass ab und an einige Sensoren nicht erreichbar sein sollen. Bisher konnte ich nicht eingrenzen, wo der Fehler liegen könnte. Wäre auch an einer Lösung interessiert.
Alles über die interne Modbus Integration oder irgendwelchen Wahnsinn der auf bymodbus basiert und mittlerweile nahezu bei jedem HA update erst wieder hintergebastelt werden muss?
Ich kann komischerweise seit Jahren kein einziges modbus Problem feststellen denn die interne Integration ist bisher immer auf Stand gewesen bei den Updates.
Man kann das aber gut über github checken auf welcher Version die jeweils interne Integration ist und dann vergleichen ob das für andere Integrationen die auf pymodbus setzen ebenso der Fall ist oder ob die noch hinterher hinken.
EDIT: gibt aktuell mit der internen nur das Problem das message_wait_millisecond nicht funktioniert, aber ok, das hab ich erst gar nicht in meinen modbus yamls drin, wozu auch da brauch keiner warten, ist bei mir alles fix genug.
Bei mir nutze ich die Modbus-Integration. Wenn ich einen Befehl sende, geht das auch sofort. Nur die Abfrage hängt sporadisch. Es gibt Tage, da ist alles gut und dann gibt es Tage mit einem oder mehreren Aussetzern. Komischerweise nur bei der LOGO! und immer wieder bei unterschiedlichen Sensoren aber noch nie beim Energiemeter. Das macht die Fehlersuche insgesamt nicht leichter.
Ich benutze auch nur die Integration und kann bestätigen, dass es tageweise besser ist, unabhängig von mir bekannten äußeren Umständen. Der einzige Verdacht, den ich bisher habe, betrifft die Pollingrate. Ich habe sicher 100 verschiedene Register über die ganzen Geräte verteilt, die zyklisch abgefragt werden.
Das ist halt dummerweise auch die etwas sonderbare herangehensweise wie das in HA implementiert ist, zumindest mal wenn ich es direkt mit node-red vergleiche.
Deshalb hab ich mittlerweile auch vieles speziell modbus Dinge wieder re-migriert.
Bei HA definiert man was eingelesen werden soll und je nach Konstrukt sind das dann viele Adressen mit nem identischen Zyklus oder ganze Adressebereiche (type: custom + structure:) was allerdings auch nicht sinnvoll da das nicht änderbare Zeil ein state ist der in HA nun mal hinsichtlich seiner Länge limitiert ist, sprich mit den structures läuft man oft in einen modbus-Fehler der aber gar keiner ist sondern die Länge dessen was zurückkommt spengt die state-Länge der Entität.
Sprich in HA wird modbus in etwa so behandelt wie jeder normale Temperatursensor. Was natürlich doof ist speziell wenn es sich um Konfigurationsregister und keine Echtzeitwerte handelt.
Da ist node-red dann doch schlauer und bietet neben einem modbus.write_register auch ein modbus.read_register und damit kann ich Register die ich 2-3x pro Tag ändere entweder gar nicht erst einlesen weil ich in Node-red den Return auswerten kann ob das setzen der Adresse funktioniert hat oder nicht, oder bei viel Angst les ich halt 1x vor dem Schreiben (rausfinden ob ich überhaupt schreiben muss) und 1x danach um zu verifizieren das die Adresse den gewünschten Wert hat. Und dann muss ich da nix mehr einlesen denn es ändert sich ja nix von selbst.
Das spart dann ordentlich Last.
Ich hatte jetzt nochmal mein Log durchpflügt .. seit dre 2025.10.1 hatte ich 2 modbus Einträge die sich seit dem nicht mehr wiederholt haben.