Ankündigung

Einklappen
Keine Ankündigung bisher.

Neues Plugin: SMAModbus (zu Auslesen eines SMA-Wechselrichters über speedwire/modbus)

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

    #31
    Ok, ich hatte bisher verstanden, dass pymodbus in mindestens Version 1.3.1 vorliegen muss. Das festlegen auf exakt eine Version führt gerne zu Problemen, weil evtl. im Gesamt Zusammenspiel aller Packages nicht lösbare Anforderungen entstehen. pymodbus==1.3.1 bedeutet aber genau Version 1.3.1 (und keine andere).

    Als Minimum ist Version ist das richtig, weil Python3 erst mit pymodbus 1.3.1 unterstützt wird.

    Außerdem ist v1.3.1 so wie ich das gelesen habe, recht alt. Aktuell ist v2.5.0. So supportet pymodbus offiziell erst ab Version 2.0.0 den Einsatz unter Python 3.7 (und wir sind inzwischen bei Python 3.9)

    Wir haben auch bereits andere Plugins, die pymodbus nutzen und die Anforderungen an die minimale pymodbus Version haben. Meistens ist es eine Version v2.3.0 oder größer. (Was zu einem Konflikt mit SMAModBus führen würde)

    Bei den Rückmeldungen, ob das Plugin in der aktuellen Version von SmarrtHomeNG läuft, hätte ich gerne auch die Info welche Python Version und welche pymodbus Version genutzt wurde.
    Zuletzt geändert von Msinn; 10.04.2021, 15:49.
    Viele Grüße
    Martin

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

    Kommentar


      #32
      Hallo

      Ich hab gerade nachgeschaut, bei mir ist die Pythonversion die 3.8.6 final, SmarthomeNG läuft als 1.8.2.master (5c3f6d20), und pymodbus als 1.3.1, und das Plugin macht genau das was es soll, die Modbusregister von meinem SMA Sunny Island auslesen.

      Wenn ich eine neuere pymodbus Version benutzte liest das Plugin keine Werte mehr ein, es läuft aber ganz normal.

      Warum das so ist weiß ich leider nicht.

      Viele Grüße

      Toby


      Das ist der Changelog von pymodbus von Version 1.3.1 nach 1.3.2, vielleicht hilft das irgenwie weiter

      Version 1.3.2
      • ModbusSerialServer could now be stopped when running on a seperate thread.
      • Fix issue with server and client where in the frame buffer had values from previous unsuccesful transaction
      • Fix response length calculation for ModbusASCII protocol
      • Fix response length calculation ReportSlaveIdResponse, DiagnosticStatusResponse
      • Fix never ending transaction case when response is recieved without header and CRC
      • Fix tests
      Version 1.3.1
      • Recall socket recv until get a complete response
      • Register_write_message.py: Observe skip_encode option when encoding a single register request
      • Fix wrong expected response length for coils and discrete inputs
      • Fix decode errors with ReadDeviceInformationRequest and ReportSlaveIdRequest on Python3
      • Move MaskWriteRegisterRequest/MaskWriteRegisterResponse to register_write_message.py from file_message.py
      • Python3 compatible examples [WIP]
      • Misc updates with examples

      Kommentar


        #33
        Nee, das hilft mir leider nicht, da ich keinen Modbus einsetze und das daher nicht nachvollziehen kann.

        In der jetzigen Form ist das Plugin dann inkompatibel mit anderen Plugin (kann nicht in der gleichen SmartHomeNG Installation eingesetzt werden):
        • kostalmodbus benötigt mindestens pymodbus v2.30
        • ksemmodbus benötigt mindestens pymodbus v2.30
        Nur mit helios_tcp würde sich das Plugin vertragen, da helios_tcp jede pymodbus Version ab v1.0.0 akzeptiert.

        Zitat von Smarthome Toby Beitrag anzeigen
        Wenn ich eine neuere pymodbus Version benutzte liest das Plugin keine Werte mehr ein
        Hast Du das nur mit der v1.3.2 probiert (die immerhin aus dem August 2017 stammt) oder auch mit neueren Versionen (>= 2.0.0)?
        Viele Grüße
        Martin

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

        Kommentar


          #34
          Ich hab's mit 2.3.0 und 2.5.0 getestet und hab mit diesen Versionen keine Werte bekommen, 1.3.1 funktioniert.

          Leider hab ich zu wenig Ahnung um nachvollziehen zu können warum das so ist :-(

          Kommentar


            #35
            Hallo Smarthome Toby,
            mal zum testen mit der aktuellen pymodbus und smarthome Version, habe z.Z. noch smarthome 1.7.2

            Code:
            decoder = BinaryPayloadDecoder.fromRegisters(result.registers, endian=Endian.Big)
            ändern in
            Code:
            decoder = BinaryPayloadDecoder.fromRegisters(result.registers, byteorder=Endian.Big)
            läuft auf Ubuntu 20.04.2 LTS mit

            Python 3.8.5
            pymodbus-2.5.1
            smarthome 1.7.2

            Gruß
            Klaus
            Zuletzt geändert von klab; 10.04.2021, 21:37.

            Kommentar


              #36
              Hallo Klaus

              Genau das hab ich auch gefunden und war am ausprobieren.

              Es funktioniert perfekt.

              Ich hab mit pymodbus 2.3.0, was die Mindestanforderung der anderen Plugins ist getestet und mit der aktuellsten, der 2.5.1.

              Getestet mit:

              Raspberry Pi 4
              Betriebssystem: Raspbian GNU/Linux 10 (buster)
              Python Version: 3.8.6 final
              pymodbus 2.3.0 und 2.5.1
              SmartHomeNG Version: 1.8.2.master

              Das Plugin läuft so momentan fehlerfrei und liefert konstant aktuelle Werte.

              Ich häng den Order mit dem überarbeiten Plugin wieder an (es hatte sich auch noch ein kleiner Fehler mit der IP Adresse eingeschlichen)

              Danke Klaus für deine tolle Arbeit, von Grund auf sowas alleine zu machen hätte ich nicht geschafft.

              Viele Grüße

              Toby
              Angehängte Dateien
              Zuletzt geändert von Smarthome Toby; 10.04.2021, 23:15.

              Kommentar


                #37
                klab und Smarthome Toby
                Super vielen Dank. Läuft auf Anhieb!
                Zapft ihr Narren der König hat Durst

                Kommentar


                  #38
                  So,

                  ich habe das Plugin mal leicht überarbeitet. Ich habe den Code in den Sample-Plugin Code der aktuellen SmartHomeNG Version geschmissen und dabei folgende Änderungen vorgenommen:
                  • Das Plugin heisst jetzt sma_mb
                  • Das Item Attribut heisst jetzt nicht mehr register, sondern smamb_register (um Nameneskollisionen auszuschließen)
                  • Ich habe das Polling optimiert:
                    • die Verbindung wird jetzt bei einem Poll Lauf nur einmal geöffnet und nicht wie bisher für jedes Register neu aufgebaut
                    • Wenn keine Verbindung aufgebaut werden kann, erfolgt eine WARNING und nicht wie bisher eine Exception im Log.
                  • Ich habe noch ein einfaches Webinterface dazu gepackt
                  • Die Version des Plugins ist auf v1.4.0 angepasst
                  • Die Readme ist angepasst. Konfigurieren kann man jetzt übrigens einfach mit plugin_name: sma_mb (statt class_name und class_pass zu verwenden)
                  • SmartHomeNG in den Versionen v1.7 und v1.8 kann die Requiremente (pymodbus) selbsttätig installieren. (Das funktioniert nur bei Python 3.9 noch nicht wg. Änderungen beim Python)


                  klab Kannst Du das Plugin nochmal testen bevor ich es ins Repo schiebe? Ich kann es in Ermangelung eines SMA Wechselrichters ja nicht testen.
                  Wenn ich eine positive Rückmeldung bekomme, committe ich das Plugin in den develop Branch auf Github. Hab dem kommenden Release steht es dann normal im master zur Verfügung und ist dann auch in der Dokumentation enthalten. (Dafür könnte sich noch jemand erbarmen und die Datei user_doc.rst "befüllen")


                  Angehängte Dateien
                  Viele Grüße
                  Martin

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

                  Kommentar


                    #39
                    Leute ihr seid spitze


                    Ich kann es zwar wie gesagt momentan nicht testen, gehe aber davon aus, dass das jetzt funktioniert.
                    Sobald ich wieder zuhause bin und das läuft, erstelle ich auch gerne die gewünschte Dokumentation, mit Beispielen zu konkreten Wechselrichtern.
                    Ich selber habe einen SB1.5, wenn mir dann jemand von anderen Wechselrichtern Beispiele schickt, pflege ich die mit ein.
                    Die SMA Beschreibung der Modbus Register ist auch nicht ganz ohne, weil es da den SMA und den Sunspec Modus gibt. Das ist recht verwirrend.

                    Edit:

                    Dieses Plugin liest die aktuellen Werte eines SMA-Wechselrichters per SMA Speedwire Feldbus aus.
                    Vorschlag: "Speedwire Feldbus" in Modbus ändern. Nicht noch eine proprietäre Bezeichnung.

                    Gruß und vielen Dank an alle

                    Martin
                    Zuletzt geändert von Sipple; 11.04.2021, 15:21.

                    Kommentar


                      #40
                      1.JPG

                      2.JPG


                      Hab jetzt mal getestet. Werte bekomme ich nicht mit dem "alten" Plugin geht es.

                      In der Readme steht #smamb_register die # gehört da vermutlich nicht hin.


                      Code:
                      2021-04-11 21:52:30 ERROR plugins.sma_mb_tp15000.poll_SMAModbus Method plugins.sma_mb_tp15000.poll_SMAModbus exception: fromRegisters() got an unexpected keyword argument 'endian'
                      Traceback (most recent call last):
                      File "/usr/local/smarthome/lib/scheduler.py", line 664, in _task
                      obj()
                      File "/usr/local/smarthome/plugins/sma_mb/__init__.py", line 182, in poll_device
                      decoder = BinaryPayloadDecoder.fromRegisters(result.register s, endian=Endian.Big)
                      TypeError: fromRegisters() got an unexpected keyword argument 'endian'
                      Zuletzt geändert von Hochpass; 11.04.2021, 20:54.
                      Zapft ihr Narren der König hat Durst

                      Kommentar


                        #41
                        Der Code ist an der Stelle aus dem Plugin, was ich hier aus dem Thread als funktionierend downgeloaded habe??? Da müsste klab reinschauen.

                        Btw: Hast Du. Ehrere Wechselrichter, oder wieso nutzt Du die Instance Einstellung?
                        Viele Grüße
                        Martin

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

                        Kommentar


                          #42
                          Schau mal in post #35 und mach diese Ersetzung in Zeile 182.
                          Viele Grüße
                          Martin

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

                          Kommentar


                            #43
                            Zitat von Hochpass Beitrag anzeigen
                            In der Readme steht #smamb_register die # gehört da vermutlich nicht hin
                            Doch, das gehört da hin

                            In der Zeile drüber steht smamb_register (nur ohne Instance) und weiter oben in der Doku steht, dass man die Instance in der Konfiguration nur angeben/verwenden soll, wenn man mehrere Instanzen des Plugins konfiguriert hat (also mehrere Wechselrichter hat).
                            Ich hatte übrigens irgendwie doch die alte Version hier aus dem Thread herunter geladen. Hier ist das aktualisierte Plugin zum testen:


                            Angehängte Dateien
                            Viele Grüße
                            Martin

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

                            Kommentar


                              #44
                              Jo, hast Recht hab ich falsch gelesen. Es ist entweder der odere oder der auskommentierte Untere zu nutzen. Ich hab den drüber ohne Instanz überlesenen. ->Schande über mich.

                              Und nu kann ich sagen, dass es funktioniert.
                              Zapft ihr Narren der König hat Durst

                              Kommentar


                                #45
                                Hallo,
                                erst mal vielen Dank an alle für die Mithilfe.

                                Insbesondere an Martin und Bernd für die unermüdliche Arbeit an SmartHomeNG (sieht sehr gut aus mit dem webif).

                                Habe noch ein paar Kleinigkeiten geändert.


                                Funktioniert prima mit Ubuntu 20.04.2 LTS

                                Python 3.8.5
                                pymodbus-2.5.1
                                smarthome 1.7.2

                                Gruß Klaus
                                Angehängte Dateien
                                Zuletzt geändert von klab; 12.04.2021, 18:33.

                                Kommentar

                                Lädt...
                                X