Danke.
Ich wollte nur sicher gehen, dass man für SunSpec keine speziellen Anpassungen braucht, die das Modbus TCP Plugin nicht bereitstellt.
Offensichtlich ist das aber kein Problem.
Die SunSpec Spezifikation ist da wohl viel Rauch um nichts.
Ich bekomme demnächst einen Kaco Blueplanet NX3. Deren Anleitungen zum Thema Modbus TCP sind schwammig, unvollständig, nichtssagend und manchmal schlichtweg falsch. Ich hoffe, ich bekomme den mit dem Plugin abgefragt.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Einbindung von Modbus TCP
Einklappen
X
-
Was meinst Du denn mit "ausschließlich"?Zitat von Sipple Beitrag anzeigenKann man mit dem Plugin auch Geräte abfragen, die ausschließlich SunSpec verwenden?
Ich lese mit dem Plugin sowohl meine Paradigma Heizung /Solarthermie als auch meinen Solaredge Wechselrichter aus.
Ob die genau nach SunSpec spezifiziert sind, weiß ich ehrlich gesagt gar nicht.
Wenn man die Register hat, klappt das alles hervorragend.
Einen Kommentar schreiben:
-
Hi
Kann man mit dem Plugin auch Geräte abfragen, die ausschließlich SunSpec verwenden?
Gruß, Martin
EDIT: Anscheinend ja, zumindest schließe ich das aus der example.yaml im Plugin Verzeichnis. Und warum auch nicht? Modbus ist Modbus.Zuletzt geändert von Sipple; 29.03.2023, 11:08.
Einen Kommentar schreiben:
-
Das allein ist ja kein Indiz dafür, dass das Plugin komplett fehlerfrei und -resistent ist. Selbst bei meinem deutlich älteren Samson-Modbus-Plugin (das in großen Teilen offensichtlich Vorlage für ivande's universelles Modbus-Plugin war), kommen bis heute immer mal wieder irgendwelche Meldungen mit Fehlern rein, die ich vorher gar nicht auf Sicht hatte - und da geht es um die Anbindung eines konkreten Gerätes.Zitat von tsb2001 Beitrag anzeigenBis heute hat es keinerlei Datenprobleme gegeben - die sind nach wie vor konsistent.
Ich halte es nach erneutem Nachdenken für gar nicht für so unwahrscheinlich, dass die Modbus-Implementierung im Endgerät fehlerhaft ist. pymodbus reicht ja im Grunde nur Anfragen und die zugehörigen Antworten durch. Dito das Dongle. Vermutlich ist dort keine Plausibilitätsprüfung hinsichtlich der Länge der Antwort implementiert. Und vermutlich ist Simply Modbus einfach 'resistenter' programmiert - z.B. 'frage 2 Register an - werte 2 Register aus'.Zitat von ivande Beitrag anzeigenhier sollten 2 Register gelesen werden, und es kommen viel zu viele Register an, ohne dass pymodbus einen Fehler signalisiert...
Ohne das jetzt in den Quellen weiter geprüft zu haben, kann eine einzelne fehlerhafte Antwort des Endgerätes bzw. die daraus resultierende Exception durchaus einen unerwarteten Abbruch von Abfrageschleifen im Plugin bzw. der darauf folgenden Auswertung zur Folge haben. Hatte ich im Samson-Plugin auch mal; daraufhin wurden dann ganze Registerbereiche auf bestimmten Trovis-Modellen nicht mehr ausgelesen. Abgefangen hab ich das dann am Ende mit einem kompletten try/except um die Abfrage der Register herum, so dass die Auswerteroutine dann gar nicht mehr aufgerufen wurde.
Aus diesem Grunde auch mein obiger Hinweis auf erweitertes Logging - manchmal geht es nicht ohne.
Viel Erfolg!Zitat von fuppy Beitrag anzeigenIch halte euch auf dem Laufenden!
/tomZuletzt geändert von Tom Bombadil; 06.03.2023, 23:30.
Einen Kommentar schreiben:
-
Zunächst mal vielen Dank an alle für euren Input!Zitat von ivande Beitrag anzeigengreifst du dabei parallel auf den Converter mit Simply Modbus oder anderen zu?
nach welcher Zeit tritt der Fehler ca. auf?
hier sollten 2 Register gelesen werden, und es kommen viel zu viele Register an, ohne dass pymodbus einen Fehler signalisiert...Code:2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:03 ERROR plugins.modbus_tcp count of read registers is incorrect regCount:2 len(result.registers):62
du kannst Dir evtl. auch den Log vom pymodbus ausgeben (in etc/logging.yaml)
Code:handlers: fileModBus: (): lib.log.ShngTimedRotatingFileHandler level: DEBUG formatter: shng_detail1 when: midnight backupCount: 3 filename: ./var/log/modBusTCP.log loggers: plugins.modbus_tcp: handlers: [fileModBus] level: DEBUG pymodbus: handlers: [fileModBus] level: DEBUG
Ich versuche, auf die einzelnen Fragen/Anmerkungen einzugehen:
Aktuell greift SmarthomeNG exklusiv auf den Converter zu. Abfragen über Simply Modbus werden nur bei Bedarf gemacht.
Ich bin gerade dabei, über Node-RED parallel eine dauerhafte Abfrage der Modbus Werte über den gleichen Converter aufzusetzen, um eine Referenz zu haben.
Auch werde ich das Logging für pymodbus aktivieren. Danke ivande für den Tipp.
Ich hab trotzdem das Gefühl, dass der Converter da irgendwie mit reinspielt...
Ich halte euch auf dem Laufenden!
Danke nochmals an alle für euren Support!
Einen Kommentar schreiben:
-
Mal zur kurzen Info:
das Plugin läuft bei mir seit Januar 2022 (also nun 14 Monate) zwischen dem Smarthome NG und dem Fronius Wechselrichter GEN24 mit 2 Units (Wechselrichter und Zähler) in Kommunikation mit dem Modbus-TCP vom Wechselrichter absolut fehlerfrei.
Bis heute hat es keinerlei Datenprobleme gegeben - die sind nach wie vor konsistent.
Die Abfrage läuft im 15-Sekunden-Rhythmus mit 59 Variablen. Man kann sich also vorstellen, was da eine Datenmenge über die Zeit zusammengekommen ist.
Und alles Updates der Plugins sind seit dem installiert worden.
Alles ohne Fehler…
…was bedeutet; das Plugin läuft bei mir sauber ohne irgendwelche Vertauschungen von Werten o.ä.; aber bezieht sich nur auf eine Kommunikation mit dem WR. Eastron-Zähler hab ich keine, aber die Kommunikaion sollte ja genauso ablaufen.Zuletzt geändert von tsb2001; 06.03.2023, 14:54.
Einen Kommentar schreiben:
-
greifst du dabei parallel auf den Converter mit Simply Modbus oder anderen zu?Zitat von fuppy Beitrag anzeigenAb einem bestimmten Zeitpunkt vertauscht modbus_tcp plötzlich die Werte.
nach welcher Zeit tritt der Fehler ca. auf?
hier sollten 2 Register gelesen werden, und es kommen viel zu viele Register an, ohne dass pymodbus einen Fehler signalisiert...Code:2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:03 ERROR plugins.modbus_tcp count of read registers is incorrect regCount:2 len(result.registers):62
du kannst Dir evtl. auch den Log vom pymodbus ausgeben (in etc/logging.yaml)
Code:handlers: fileModBus: (): lib.log.ShngTimedRotatingFileHandler level: DEBUG formatter: shng_detail1 when: midnight backupCount: 3 filename: ./var/log/modBusTCP.log loggers: plugins.modbus_tcp: handlers: [fileModBus] level: DEBUG pymodbus: handlers: [fileModBus] level: DEBUGZuletzt geändert von ivande; 06.03.2023, 14:49.
Einen Kommentar schreiben:
-
Hast du die Möglichkeit, mit node-red oder einem ESP / Tasmota den RS485 to ETH Converter auszulesen? Vermutlich wird das keine Fehler aufzeigen und immer korrekte Werte liefern.
welche Baudrate verwendest du? 9600 oder?
Einen Kommentar schreiben:
-
Meiner Meinung nach wirst Du so die Ursache nicht weiter eingrenzen können. Gerät und Dongle scheinen ja zu funktionieren, sonst würde Simply Modbus denselben Fehler liefern.
Die wahrscheinlichsten Kandidaten sind für mich das Plugin (z.B. dass sich nach einem fehlerhaften Lesezugriff die Ausleseschleife bzw. deren Index verändert - die Register werden ja nicht wirklich 'vertauscht', sondern dauerhaft 'verschoben' - das ID-Mapping ist also hinterher falsch) oder das vom Plugin benutzte pymodbus.
Ohne ein detaillierteres Logging (idealerweise durch zusätzliche Logeinträge der an pymodbus übergebenen Kommandos sowie der daraus resultierenden Empfangswerte PLUS ein separates Hex-Trace des Bus-Traffics zum Fehlerzeitpunkt) wirst Du hier vermutlich nicht weiterkommen.
/tom
Einen Kommentar schreiben:
-
ivande
Ein weiteres Update von mir:
Das Plugin hat den Fehler bemerkt und auch abgebrochen. Jedoch sind alle darauffolgenden Abfragen leider wieder falsch...Code:2023-03-04 08:47:33 INFO plugins.modbus_tcp connected to ModbusTcpClient(192.168.0.181:502) 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 registers:0x43ba 0x874c 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp value readed: 373.0570068359375 type: <class 'float'> 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 registers:0x4385 0x17ae 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp value readed: 266.18499755859375 type: <class 'float'> 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 registers:0x43dd 0x1ea3 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp value readed: 442.2393493652344 type: <class 'float'> 2023-03-04 08:47:33 DEBUG plugins.modbus_tcp poll_device: 3 register readed requed-time: 0:00:00.224361 2023-03-04 08:48:03 INFO plugins.modbus_tcp connected to ModbusTcpClient(192.168.0.181:502) 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:03 ERROR plugins.modbus_tcp count of read registers is incorrect regCount:2 len(result.registers):62 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp value readed: None type: <class 'NoneType'> 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 registers:0x43ba 0x87f0 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp value readed: 373.06201171875 type: <class 'float'> 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 registers:0x4385 0x17ae 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp value readed: 266.18499755859375 type: <class 'float'> 2023-03-04 08:48:03 DEBUG plugins.modbus_tcp poll_device: 2 register readed requed-time: 0:00:00.238538 2023-03-04 08:48:34 INFO plugins.modbus_tcp connected to ModbusTcpClient(192.168.0.181:502) 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 registers:0x43e6 0xdfa 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp value readed: 460.10919189453125 type: <class 'float'> 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 registers:0x43ba 0x8893 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp value readed: 373.0669860839844 type: <class 'float'> 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 registers:0x4385 0x17ae 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp value readed: 266.18499755859375 type: <class 'float'> 2023-03-04 08:48:34 DEBUG plugins.modbus_tcp poll_device: 3 register readed requed-time: 0:00:00.164241
Ich hab dann wie angekündigt mal den RS485 to ETH Converter neu gestartet. Der erste Versuch scheitere dann bzw. es wurden wieder falsche Werte gelesen:
Allerdings beim zweiten Versuch klappte es dann wieder:Code:2023-03-04 12:51:43 INFO plugins.modbus_tcp connected to ModbusTcpClient(192.168.0.181:502) 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 registers:0x4500 0x253e 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp value readed: 2050.32763671875 type: <class 'float'> 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 12:51:43 ERROR plugins.modbus_tcp read error: Modbus Error: [Input/Output] [Errno 32] Broken pipe InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp value readed: None type: <class 'NoneType'> 2023-03-04 12:51:43 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 2023-03-04 12:51:46 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 registers:0x44f1 0x8f6b 2023-03-04 12:51:46 DEBUG plugins.modbus_tcp value readed: 1932.4818115234375 type: <class 'float'> 2023-03-04 12:51:46 DEBUG plugins.modbus_tcp poll_device: 2 register readed requed-time: 0:00:03.057195
Kann aber auch sein, dass das Gerät noch nicht komplett hochgefahren war beim ersten Versuch nach dem Restart...Code:2023-03-04 12:52:14 INFO plugins.modbus_tcp connected to ModbusTcpClient(192.168.0.181:502) 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.72.1 (address.slaveUnit) regCount:2 registers:0x43be 0x947b 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp value readed: 381.1600036621094 type: <class 'float'> 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.74.1 (address.slaveUnit) regCount:2 registers:0x4385 0x17cf 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp value readed: 266.1860046386719 type: <class 'float'> 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp read InputRegister.52.1 (address.slaveUnit) regCount:2 registers:0x4506 0xd2bb 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp value readed: 2157.170654296875 type: <class 'float'> 2023-03-04 12:52:14 DEBUG plugins.modbus_tcp poll_device: 3 register readed requed-time: 0:00:00.170237
Einen Kommentar schreiben:
-
Korrekt.Zitat von ivande Beitrag anzeigenund mit dem plugin erst wieder nach einem Neustart von SH?
Was ich aber auch mal probieren werde ist, den RS485 to ETH Converter neu zu starten.
Bin mal gespannt, was dabei dann raus kommt.
Einen Kommentar schreiben:
-
und mit dem plugin erst wieder nach einem Neustart von SH?Zitat von fuppy Beitrag anzeigenFrag ich im Anschluss per Simply Modbus ab, kommen die Werte richtig zurück…
Einen Kommentar schreiben:
-
Bisher habe ich das immer so beobachtet.Zitat von Sipple Beitrag anzeigenIst ja erstmal egal, welches Gerät das ist. Wenn Simply Modbus wirklich 100%ig sicher immer die richtigen Werte liefert, dann hast du natürlich recht, dann kann es das Gerät nicht sein.
Ab einem bestimmten Zeitpunkt vertauscht modbus_tcp plötzlich die Werte.
Frag ich im Anschluss per Simply Modbus ab, kommen die Werte richtig zurück…
Einen Kommentar schreiben:
-
Ist ja erstmal egal, welches Gerät das ist. Wenn Simply Modbus wirklich 100%ig sicher immer die richtigen Werte liefert, dann hast du natürlich recht, dann kann es das Gerät nicht sein.
Einen Kommentar schreiben:
-
Ich lese keinen Wechselrichter aus, sondern ein Smartmeter, um genau zu sein ein EASTRON SDM72D-M. Bin mir jetzt nicht sicher ob V1 oder V2.Zitat von Sipple Beitrag anzeigenMoin
Jetzt werfe ich doch mal nen Firmwarefehler des Wechselrichters in die Runde.
Mal beim Hersteller anfragen?
Ich schließe ein direktes Problem damit erstmal aus, da die Abfrage via Simply Modbus richtige Werte liefert…
Einen Kommentar schreiben:


Einen Kommentar schreiben: