Ankündigung

Einklappen
Keine Ankündigung bisher.

Einbindung von Modbus TCP

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

    #76
    Zitat von ivande Beitrag anzeigen

    ich hab gerade noch mal diese Version von git heruntergeladen, bei mir startet das Plugin.. die plugin.yaml sollte nur 113 Zeilen haben:
    Sorry, mein Fehler ... da hab ich was beim Download verbockt ...
    Jetzt geht's (wieder). Auch die Außentemperatur und eine weitere Vorlauftemperatur funktioniert.

    Auch der zweite Coil Wert wird ausgelesen wobei der m.E. "True" sein sollte?! Der erste aber bringt noch eine Fehlermeldung:

    Code:
    2022-02-03  21:40:49 ERROR    plugins.modbus_tcp  read error: Exception Response(129, 1, IllegalAddress) register:9995 registerCount:1 slaveUnit:1
    und Webinterface:

    2022-02-03_21h45_05.png

    Kommentar


      #77
      Zitat von ooUrmeloo Beitrag anzeigen
      Jetzt geht's (wieder). Auch die Außentemperatur und eine weitere Vorlauftemperatur funktioniert.
      👍


      Zitat von ooUrmeloo Beitrag anzeigen
      IllegalAddress) register:9995
      es scheint die Adresse 9995 nicht zu geben:

      Du könntest bitte versuchen die Coil Adressen um 1 zu erhöhen also TestC0-Addresse:9996 + TestC1-Addresse:9997


      Kommentar


        #78
        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
        Sieht gut aus. Das könnte es gewesen sein.

        2022-02-03_23h04_04.png

        Ich versuche morgen mal noch ein paar andere Register.

        Vielen Dank nochmal für Deine Hilfe!!

        Kommentar


          #79
          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,..

          Zitat von ooUrmeloo Beitrag anzeigen
          die Außentemperatur und eine weitere Vorlauftemperatur funktioniert
          bei den InputRegistern scheint dann die Addresse wiederum zu stimmen,.. (0-Außentemp, 1 Vorlauftemp.)

          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.

          Kommentar


            #80
            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.

            Kommentar


              #81
              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!

              Kommentar


                #82
                fein dass das Plugin für das Gröbste nun läuft.

                Zitat von ooUrmeloo Beitrag anzeigen
                ein paar kleine Fehler gefunden bzw. Verbesserungsvorschläge:
                Danke auch für's durchschauen,.. hast ja ein Adlerauge wie damals mein Deutschlehrer. Da haben sich doch noch einige Fehler eingeschlichen,..
                Zuletzt geändert von ivande; 04.02.2022, 19:21.

                Kommentar


                  #83
                  V1.0.6 nun auch zum Schreiben von Register (HoldingRegister, Coil)
                  Zuletzt geändert von ivande; 13.02.2022, 19:11.

                  Kommentar


                    #84
                    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: int32
                    Zuletzt geändert von teddytornado; 12.02.2022, 14:29.

                    Kommentar


                      #85
                      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.
                      Viele Grüße
                      Martin

                      There is no cloud. It's only someone else's computer.

                      Kommentar


                        #86
                        Zitat von Msinn Beitrag anzeigen
                        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.
                        ok! Vielen Dank für den Hinweis. Ich habe den Code entsprechend formatiert! Ich hänge hier auch noch den Screenshot an.

                        Webinterface1.png

                        Kommentar


                          #87
                          Zitat von teddytornado Beitrag anzeigen
                          Beim "Hausverbrauch" kann auch etwas nicht stimmen. Es würde sonst bedeuten, dass ich aktuell 65kW beziehe :-) Irgendeine Idee?
                          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 ...

                          Kommentar


                            #88
                            Zitat von ivande Beitrag anzeigen
                            V1.0.6 nun auch zum Schreiben von Register (HoldingRegister, Coil)
                            Hi ivande,

                            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:
                            Zuletzt geändert von ooUrmeloo; 12.02.2022, 23:20.

                            Kommentar


                              #89
                              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 ...
                              Hi,

                              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.png
                              Angehängte Dateien

                              Kommentar


                                #90
                                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':

                                Zitat von Sipple Beitrag anzeigen
                                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.
                                Ggf. musst Du also bei jedem dokumentierten Register 1 abziehen ...

                                /tom

                                Kommentar

                                Lädt...
                                X