Das hätte ich jetzt auch Mal gesagt. "Probier" doch Mal etwas rum mit +/- 1.
Ist der String wirklich 16bit? Könnte evtl. auch daran liegen?! 32bit werden bei Modbus m.W. nach auf zwei Register aufgeteilt. Bei mir trifft das zumindest bei einigen numerischen Parametern zu. Das könnte evtl. auch das Problem bei deinen nicht passenden Leistungen/Verbräuchen sein ... wenn du das noch hast. Laut Screenshot sind die ja 32bit.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Einbindung von Modbus TCP
Einklappen
X
-
Siehe #80 - das ist IMHO kein Problem des Plugins. Es macht einen Unterschied, ob der Hersteller die Register ab 0 oder 1 adressiert, das ist nicht 'genormt':
Ggf. musst Du also bei jedem dokumentierten Register 1 abziehen ...Zitat von Sipple Beitrag anzeigenDiese N+1 Problematik ist so alt wie ModBus selbst. Je nachdem, wie der Hersteller des Geräts das eben implementiert hat. Mal so, mal so. Leider. Manche fangen halt bei 0 an zu zählen, manche bei 1. Meistens besch... dokumentiert und wenn es dann auch noch gemischt ist, dann wird's unangenehm.
/tom
- Likes 1
Einen Kommentar schreiben:
-
Hi,Zitat von ooUrmeloo Beitrag anzeigen
Hast Du mal ein anderes Tool zum auslesen versucht? Ich habe z.B. qModMaster für Windows ausprobiert. Da kann man auch sehen, was "ankommt". Das hat bei mir auf Anhieb funkioniert. Fehlt bei den numerischen Werten evtl. ein Faktor? Bei mir muss ich mit "0.1" multiplizieren, um das richtige Ergebnis zu bekommen.
Bei den Strings weiß ich nicht, habe ich keine ...
vielen Dank für den Tipp! Ich habe nun festgestellt, dass irgendwas mit der Adressierung nicht richtig im Plugin funktioniert.
Wenn ich z.B. über den QModMaster die Adresse 40004 abfrage, kommt genau der richtige String "E3/DC GmbH" zurück wie in der Dokumentation beschrieben.
Mache ich das ganze über das modbus_tcp plugin kommt lediglch "/DC GmbH". Wenn ich allerdings als Adresse 40003 verwende kommt der ganze String. Hier stimmt doch irgendwas nicht?!?
modbus_tcp.pngAngehängte Dateien
Einen Kommentar schreiben:
-
Hi ivande,Zitat von ivande Beitrag anzeigenV1.0.6 nun auch zum Schreiben von Register (HoldingRegister, Coil)
ich habe auch aktualisiert, die Schreib-Funktion aber noch nicht ausprobiert.
Kleiner Verbesserungsvorschlag für eine zukünftige Version?!
Könnte man gleich noch eine Rundungs-Funktion mit einbauen, damit man solche Temperaturen vermeiden kann (bzw. nicht mit einem Extra-Item (per eval) korrigieren muss - oder geht das einfacher?)?
Kommt bei mir immer wieder vor:num -3.4000000000000004 Zuletzt geändert von ooUrmeloo; 12.02.2022, 23:20.
Einen Kommentar schreiben:
-
Hast Du mal ein anderes Tool zum auslesen versucht? Ich habe z.B. qModMaster für Windows ausprobiert. Da kann man auch sehen, was "ankommt". Das hat bei mir auf Anhieb funkioniert. Fehlt bei den numerischen Werten evtl. ein Faktor? Bei mir muss ich mit "0.1" multiplizieren, um das richtige Ergebnis zu bekommen.Zitat von teddytornado Beitrag anzeigenBeim "Hausverbrauch" kann auch etwas nicht stimmen. Es würde sonst bedeuten, dass ich aktuell 65kW beziehe :-) Irgendeine Idee?
Bei den Strings weiß ich nicht, habe ich keine ...
Einen Kommentar schreiben:
-
ok! Vielen Dank für den Hinweis. Ich habe den Code entsprechend formatiert! Ich hänge hier auch noch den Screenshot an.Zitat von Msinn Beitrag anzeigenSchau mal in diesen Thread. Dort ist beschrieben, wie Du Konfigurationen mit den Einrückungen posten kannst. Das hilft Leuten, die Dir helfen wollen deutlich beim lesen.
Webinterface1.png
Einen Kommentar schreiben:
-
Schau mal in diesen Thread. Dort ist beschrieben, wie Du Konfigurationen mit den Einrückungen posten kannst. Das hilft Leuten, die Dir helfen wollen deutlich beim lesen.
Einen Kommentar schreiben:
-
Hi zusammen,
vielen Dank erstmal für dieses Tolle Plugin! Ich versuche gerade meinen E3DC Wechselrichter einzubinden. Die Kommunikation scheint zu funktionieren aber die Daten sind teilweise sehr komisch. Ich habe mir natürlich die letzte Dev. V1.06 vom Plugin gezogen.
Im Webinterface werden mir zwar Daten angezeigt aber irgendwie werden bei den Strings die ersten zwei Zeichen abgeschnitten
Beim "Hersteller" z.B. wird als Wert "/DC GmbH" zurückgegeben. Da sollte eigentlich "E3/DC GmbH" zurückkommen. Bei den anderen Strings fehlen ebenfalls die ersten zwei Zeichen. Beim "Hausverbrauch" kann auch etwas nicht stimmen. Es würde sonst bedeuten, dass ich aktuell 65kW beziehe :-) Irgendeine Idee?
Vielen Dank!
Kai
Einstellung plugin.yaml:
Code:modbus_tcp: plugin_name: modbus_tcp cycle: '300' host: 192.168.77.161 port: '502'Code:e3dc: Hersteller: type: str name: Hersteller modBusAddress: 40004 modBusDataType: string16 Modell: type: str name: Modell modBusAddress: 40020 modBusDataType: string16 Seriennummer: type: str name: Seriennummer modBusAddress: 40036 modBusDataType: string16 Firmware: type: str name: Firmeware modBusAddress: 40052 modBusDataType: string16 Photovoltaikleistung: type: num name: Photovoltaikleistung enforce_updates: True modBusAddress: 40068 modBusDataType: int32 Batterieleistung: type: num name: Batterieleistung enforce_updates: True modBusAddress: 40070 modBusDataType: int32 Hausverbrauch: type: num name: Hausverbrauch enforce_updates: True modBusAddress: 40072 modBusDataType: int32 Netzuebergabepunkt: type: num name: Netzuebergabepunkt enforce_updates: True modBusAddress: 40074 modBusDataType: int32Zuletzt geändert von teddytornado; 12.02.2022, 14:29.
Einen Kommentar schreiben:
-
fein dass das Plugin für das Gröbste nun läuft.
Danke auch für's durchschauen,.. hast ja ein Adlerauge wie damals mein Deutschlehrer. Da haben sich doch noch einige Fehler eingeschlichen,..Zitat von ooUrmeloo Beitrag anzeigenein paar kleine Fehler gefunden bzw. Verbesserungsvorschläge:Zuletzt geändert von ivande; 04.02.2022, 19:21.
Einen Kommentar schreiben:
-
So, ich habe jetzt mal noch ca. 40 weitere Register von Interesse eingetragen. Scheint alles soweit zu funktionieren!

Das "N+1 Problem" scheint bei meiner Paradigma nur bei den Coils aufzutreten. Und wenn man's weiß, ist's ja auch kein Problem. Da ich die Coils nicht nutze, für mich eh nicht relevant.
Im ersten Schritt werde ich sowieso die Parameter loggen und visualisieren. Mit der aktiven Steuerung warte ich mal noch, und beobachte
Beim Durchlesen der Dateien habe ich noch ein paar kleine Fehler gefunden bzw. Verbesserungsvorschläge:
- In der "user_doc.rst" steht "modBusByteOrder: 'Endian.Little' #(optional) default: 'Endian.Big'"
Laut yaml ist es aber 'Endian.Big or Endial.Little' ... und im *.py steht's dann wieder anders ...
- Ein möglicher modBusDataType ist "uint32", in der yaml steht aber "unit32" (nur in der Description) --> Typo?
- In der example.yaml: Wenn ich das richtig sehe, verweist Du auf Werte "photovoltaik.xxx", die 'Überschrift' ist aber "solaredge_SE6000" --> passt nicht zusammen, oder verstehe ich das falsch?
PS: wenn ich noch was anderes testen kann/soll, gerne Bescheid geben. Ich bin im Moment erstmal zufrieden.
Danke nochmal!
Einen Kommentar schreiben:
-
Diese N+1 Problematik ist so alt wie ModBus selbst. Je nachdem, wie der Hersteller des Geräts das eben implementiert hat. Mal so, mal so. Leider. Manche fangen halt bei 0 an zu zählen, manche bei 1. Meistens besch... dokumentiert und wenn es dann auch noch gemischt ist, dann wird's unangenehm.
Einen Kommentar schreiben:
-
Ich habe als Plugin-Testobjekt eine Siemens LOGO und den Solaredge Wechselrichter genommen, und auch mal Multi-Instanz probiert.
Mit der LOGO kann ich auch die verschiedene Typen (Coil, DiscreteInput, InputRegister, HoldingRegister) auslesen. Komischerweise sind die Addressen dort um 1 zu hoch,..
bei den InputRegistern scheint dann die Addresse wiederum zu stimmen,.. (0-Außentemp, 1 Vorlauftemp.)Zitat von ooUrmeloo Beitrag anzeigendie Außentemperatur und eine weitere Vorlauftemperatur funktioniert
mit der LOGO kann ich dann auch das Schreiben von Register angehen/testen kann, (da kann zumindest nicht viel schief gehen, wenn ich das falsche Register schreibe). Das wird aber noch ein bisschen dauern.
Einen Kommentar schreiben:
-
Sieht gut aus. Das könnte es gewesen sein.Zitat von ivande Beitrag anzeigen
Du könntest bitte versuchen die Coil Adressen um 1 zu erhöhen also TestC0-Addresse:9996 + TestC1-Addresse:9997
2022-02-03_23h04_04.png
Ich versuche morgen mal noch ein paar andere Register.
Vielen Dank nochmal für Deine Hilfe!!
Einen Kommentar schreiben:
-
👍Zitat von ooUrmeloo Beitrag anzeigenJetzt geht's (wieder). Auch die Außentemperatur und eine weitere Vorlauftemperatur funktioniert.
es scheint die Adresse 9995 nicht zu geben:Zitat von ooUrmeloo Beitrag anzeigenIllegalAddress) register:9995
Du könntest bitte versuchen die Coil Adressen um 1 zu erhöhen also TestC0-Addresse:9996 + TestC1-Addresse:9997
- Likes 1
Einen Kommentar schreiben:


Einen Kommentar schreiben: