Ankündigung

Einklappen
Keine Ankündigung bisher.

Generischer MOD-Bus TCP-Connector

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Generischer MOD-Bus TCP-Connector

    Ich hab einen generischen Mod-Bus connector erstellt, der das lesen und schreiben erlaubt. In der admin werden die Live-Werte anzeigt und auch Test-Writes können getätigt werden.

    http://service.knx-user-forum.de/?co...ad&id=19002762

    Das ganze erstmal für den Fronius-Wechselrichter. Durch entsprechende Json-Dateien lässt sich der LBS auch für x-beliebige Modbus-Anbindungen verwenden.
    Die JSON-Dateien für den Fronius hab ich bei mir im Git hochgeladen:

    https://github.com/sipiyou/fronius_sunspec

    Im Fronius-WR muss die Fernsteuerung aktiviert sein, wenn auch geschrieben werden soll. Das ist dann z.B. der Fall, wenn ihr das Laden der Batterie beeinflussen wollt.

    Die Konfiguration ist in der Admin des Wechselrichters unter "Kommunikation / Modbus"

    image.png

    Ich hab die Einstellung Int+SF, d.h. die Konfigurations-Dateien, die benötigt werden sind die mit "Inf&SF" aus dem Git.

    Da ich einen WR mit Batterie habe, wird die json-Datei mit "storage" benötigt. Diese beiden Dateien werden über die Admin in den LBS geladen:
    Gen24_Primo_Symo_Inverter_Int&SF_storage_ROW 192.168.1.180 502 1 big 8
    Smart_Meter_Int&SF


    Über dem Menüpunkt json importieren kann das jeweilige Gerät konfiguriert werden:

    image.png

    Bei mir hat der Wechselrichter die Unit-ID 1 und der Smart-Meter die 4.

    image.png


    Nachdem alles hochgeladen und konfiguriert wurde, sieht das ganze in der Admin dann so aus:


    image.png

    image.png


    Dann können hier auch die Werte direkt an Edomi KO's / KNX-KO's gesendet werden.
    Zuletzt geändert von sipiyou; 02.05.2026, 15:06.

    #2
    Was ich noch vergessen habe zu erwähnen ist, dass die polling Intervall sich pro Gruppe einstellen lassen, default sind 30 Sekunden. So kann man unwichtige Gruppen seltener Pollen. Gruppen, die keine Zuweisungen haben, werden im LBS nicht gepollt - nur in der Admin, wenn man die jewilige Gruppe zur Ansicht auf hat.

    Alle KO-writes sind send by change, sprich werden nur gesetzt, wenn sich die Werte tatsächlich verändern. Die Umrechnung der Blöcke findet automatisch im Hintergrund statt, d.h. der Wert des jeweiligen Eintrags ist auch beim Schreiben als Endwert anzugeben.

    In der Admin ist ganz links beschrieben, wie der Wert sich zusammensetzt.
    Zuletzt geändert von sipiyou; 02.05.2026, 15:03.

    Kommentar


      #3
      Ich hab noch einen dicken Fehler gefunden, der Fronius scheint die SF-Register dynamisch zu ändern. Bitte die 1.01 herunterladen

      Und hier nochmal die Registerübersicht für die relevanten Daten für die Visu.

      Für die aktuell erzeuge Energiemenge nimmt man am besten String1 (40275) +String2 (40295) (module/1/DCW​ + module/2/DCV​)

      Der Hausverbrauch ist dann 40084 (W) + 40088 (Total Real Power aus dem SmartMeter)

      Anbei meine Zuweisungsübersicht, sonst in der Admin einfach die Livewerte anschauen, der Rest ist eigentlich selbsterklärend.


      image.png

      Kommentar


        #4
        Moin Nima,

        Ich versuche mit dem LBS meine BWWP und Stromzähler auszulesen.
        Die .json files habe ich mir (nach bestem Wissen) erstellt.


        Hier mal als Bsp. das .json für des Stromzähler der BWWP.

        Code:
        [
            {
                "device": "Eastron_SDM120_Slave_101",
                "protocol": "TCP",
                "elements": [
                    {
                        "firstID": 13,
                        "group": "Input_Register",
                        "elements": {
                            "2": {
                                "start": 13,
                                "size": 4,
                                "rw": "R",
                                "function": "0x03",
                                "name": "Phase_1_active_power",
                                "desc": "Momentanverbrauch BWWP",
                                "type": "float32",
                                "unit": "W",
                                "scaleFactor": "",
                                "notsupported": 0
                            },
                            "3": {
                                "start": 73,
                                "size": 4,
                                "rw": "R",
                                "function": "0x03",
                                "name": "Import_active_energy",
                                "desc": "Gesamtverbrauch BWWP",
                                "type": "float32",
                                "unit": "kWh",
                                "scaleFactor": "",
                                "notsupported": 0
                            }
                        }
                    },
                    {
                        "firstID": 21,
                        "group": "Holding_Register",
                        "elements": {
                            "2": {
                                "start": 21,
                                "size": 4,
                                "rw": "R",
                                "function": "0x04",
                                "name": "slave_id",
                                "desc": "Slave ID",
                                "type": "float32",
                                "unit": "",
                                "scaleFactor": "",
                                "notsupported": 0
                            }
                        }
                    }
                ]
            }
        ]​
        Problem ist das ich nichts aus den 0x03 Registern bekomme. Er liest immer die Daten aus den 0x04 Registern aus.
        Was mache ich hier falsch?

        Ebenfalls bekomme ich (je nach json) in der Admin Seite rechts oben in der Ecke den Fehler: "Modbus: incomplete MBAP header from 192.168.20.xx" angezeigt.
        Fehler ist auf beiden GW (Waveshare) aufgetreten.

        Aktuell lese ich beide GW mit HA und zum Test mit QModMaster aus was auch funktioniert. ​

        Danke

        Gruß
        Zuletzt geändert von toddler; 03.05.2026, 15:22.

        Kommentar


          #5
          Ich hab jetzt die 1.06 veröffentlicht, da sind noch Änderungen, die ich für toddler eingepflegt hab. Die wichtigste Änderung ist, dass FC04 unterstützt wird und ein Fehler beim json-Import gefixed ist, was bei FC04-Funktionen zu Fehlern geführt hat.

          Ich glaube aber, dass die Fehlermeldung "incomplete MBAP"-Header davon kommt, wenn mehere Anfrage auf einem Gerät laufen. Wenn MBAP-Headerfehler auftreten kann man jetzt noch pro Gerät die Timeouts konfigurieren.

          toddler: konntest du das jetzt weiter prüfen ?
          Zuletzt geändert von sipiyou; 06.05.2026, 23:50.

          Kommentar


            #6
            Ich hab jetzt nochmal anhand dieser pdf https://www.eastroneurope.com/images...S_Protocol.pdf
            die json-Datei für den SDM120 erstellt. Wär cool, wenn du das nochmal testen könntest, ob das jetzt die richtigen Register bei Dir ausliest.

            Hat jemand zufällig eine Stibel/Tecalor- ISG mit Modbus laufen ? Ich hab hier noch die KNX-Version, werde demnächst anfragen, ob die meine auf Modbus umstellen können.

            Falls jemand die Modbus-Variante hat und lust auf testen hat, bitte bescheid geben, dann stell ich die json-Datei zur Verfügung. Kann die selbst nur aktuell nicht testen.
            Zuletzt geändert von sipiyou; 06.05.2026, 21:18.

            Kommentar


              #7
              Sehr spannend, ich frage einige Datenpunkte meiner Janitza UMGs sowie Woodward Easygen via Esenet, Generex USV Adapter etc. ab.
              Das ganze ist über einzelscripts gelöst.
              Dann muss ich mir also bald die Arbeit machen und das sauber auf deinen LBS umziehen.
              Danke für deine Arbeit, freue mich drauf.

              Kommentar


                #8
                sipiyou Ich lese bzw. steuere meine Stiebel Eltron LWZ404 via ISG-Web über ModBus; das läuft ein wandfrei. Die ModBus-Komponente musste auch nicht extra frei geschaltet werden.

                Kommentar


                  #9
                  Moin,

                  sipiyou, ich hatte gestern Abend nochmal mit der v1.05 ohne Erfolg getestet...

                  Mit der v1.06 haben die BWWP und die Eastron direkt plausible Werte ausgegeben.

                  Der timeout Fehler kommt aber immer noch. Auslesen von HA habe ich gestern abgeschalten, es hängt also nur noch der LBS auf dem GW der Eastron.

                  Vielleicht wird aber trotzdem zuviel abgefragt. Im Handbuch steht:

                  "Each request for data must be restricted to 30 parameters or less. Exceeding the 30 parameter limit will cause a Modbus Protocol exception code to be returned."

                  Werden die Register den gleichzeitig abgefragt?


                  Schon mal vielen Dank für deine Mühe...

                  Gruß

                  Kommentar


                    #10
                    @toddler:
                    Danke für's testen Bitte die 1.07 herunterladen. Du hast dann in der Config für das Gerät die maximale Register/Request. Stell dort dann 30 ein.

                    Es kommt immer drauf an, wieviele Werte von der Gruppe du in Edomi zugewiesen hast. Wenn du alles zugewiesen hast, dann wirst du jenachdem, wieviele Register in der Gruppe sind, dann über 30 kommen.

                    Normalerweise kann man bei modbus bis zu 125 Register pro Abruf holen. Bitte einmal testen.

                    Ihr müsst natürlich nicht alle Register in Edomi zuweisen, was nicht zugewiesen ist, wird auch nicht abgefragt - ausser in der Admin, das Admin-Interface ist sozusagen die Debug-Konsole und die holt natürlich alles.

                    Ich hab auch gestern Nacht auch die json für den Vestel EVC04 Wallbox eingebunden. Die Vestel kann aber nur eine Verbindung, d.h. wenn ihr EVCC laufen habt, müsst ihr in EVCC modbus proxy aktivieren, dann könnt ihr dadrüber die Vestel auslesen.

                    Hier für die Vestel:
                    https://github.com/sipiyou/fronius_s...tel_EVC04.json

                    und hier der Link zur geänderten SDM120, die Max Register gleich in der json als default dabei.

                    https://github.com/sipiyou/fronius_s...Slave_101.json

                    @mcjameson: Jein. Du kannst das ISG mit knx bestellen - ich war einer der ersten, der das von Tecalor bekommen hat. Wenn du die KNX-Firmware drauf hast, geht kein modbus.

                    Wenn du Lust und Zeit hast, wär es cool, wenn du mit meinem lbs testen könntest, ob du die LWZ404 bei dir ausgelesen bekommst. Die Json hab ich hier abgelegt:

                    https://github.com/sipiyou/fronius_s...ISG_WPM3i.json

                    Ich bin ab morgen erstmal im Urlaub und erst wieder ab dem 18 zurück - also nicht wundern, wenn ich hier nicht reagiere

                    Ich glaub ich werde künftig alle Json-Dateien im git veröffentlichen, ist wahrscheinlich übersichtlicher. Wäre übrigens cool, wenn ihr eure Json-Dateien dann auch teilt, dann haben alle was davon.
                    Zuletzt geändert von sipiyou; Gestern, 18:04.

                    Kommentar


                      #11
                      sipiyou, wir haben zu danken... wenn der LBS läuft kann ich endlich den Teil von HA wieder abschalten...:-)))

                      Noch zwei weitere Fragen hätte ich...

                      -Wo werden den die Fehler angezeigt wenn die Admin nicht offen ist? Log?

                      -Kann der "scaleFactor" genutz werden um auf z.B. 548 > 54,8 zu machen? oder ist das etwas Fronius spezifisches?


                      Wünsche dir schon mal einen schönen Urlaub

                      Gruß

                      Kommentar


                        #12
                        Danke!

                        Musst du -1 eintragen, das hab ich im git aber auch in der readme beschrieben:

                        https://github.com/sipiyou/fronius_sunspec

                        scaleFactor: "-1" → value × 10^(-1) = value × 0.1 (ISG Typ 2: raw 203 → 20.3 °C)
                        scaleFactor: "-2" → value × 10^(-2) = value × 0.01 (ISG Typ 7: raw 175 → 1.75 bar)
                        scaleFactor: "" → no scaling (ISG Typ 6/8: raw value used as-is)​

                        Fehler usw. Sind in der Edomi log. Die Admin ist komplett entkoppelt, sprich: eigene Instanz.

                        Falls was in der log fehlt, bitte Bescheid geben. Wie üblich muss so ein Projekt erstmal mit den Anforderungen wachsen

                        Kommentar

                        Lädt...
                        X