Ankündigung

Einklappen
Keine Ankündigung bisher.

neue Versionen pymodbus

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

    #16
    Zitat von SKraft Beitrag anzeigen
    das es einen Zusammenhang mit denn hier beschrieben Problemen gibt.
    welche Fehlermeldung hast du im Log?

    Kommentar


      #17
      hast Du die Direction auch in den items spezifiziert?
      Code:
                 current:
                      name: mAmpere
                      type: num
                      enforce_change: True
                      modBusObjectType@powerjames: HoldingRegister
                      modBusAddress@powerjames: 111
                      modBusDirection@powerjames: read_write

      Kommentar


        #18
        Im Log kommt das wenn ich versucht zu schreiben.
        Code:
        > Traceback (most recent call last):
        >   File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        >     method(self, caller, source, dest)
        >   File "/usr/local/smarthome/plugins/modbus_tcp/__init__.py", line 309, in update_item
        >     if item is self._pause_item:
        > AttributeError: 'modbus_tcp' object has no attribute '_pause_item'
        2025-02-06  10:28:25 ERROR    lib.item.item       Item Energie.Wallbox.LadeleistungEinstellung: problem running <bound method modbus_tcp.update_item of <plugins.modbus_tcp.modbus_tcp object at 0x7f3a3464ab80>>: 'modbus_tcp' object has no attribute '_pause_item'
        > Traceback (most recent call last):
        >   File "/usr/local/smarthome/lib/item/item.py", line 2265, in __update
        >     method(self, caller, source, dest)
        >   File "/usr/local/smarthome/plugins/modbus_tcp/__init__.py", line 309, in update_item
        >     if item is self._pause_item:
        > AttributeError: 'modbus_tcp' object has no attribute '_pause_item'​
        das item ist wie folgt angelegt
        Code:
        LadeleistungEinstellung:
                    type: num
                    visu_acl: rw
                    modBusAddress@wall: 1000
                    modBusDataType@wall: int16
                    modBusDirection@wall: read_write​

        Kommentar


          #19
          Das sieht aus, als hättest Du versucht das Plugin aus dem develop branch mit dem core aus dem master branch laufen zu lassen. im master branch gibt es noch kein _pause_item.
          Viele Grüße
          Martin

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

          Kommentar


            #20
            Da hast du recht, das Plugin kommt aus dem develop branch.
            Das hatte ich mal testweise versucht.

            Das aus dem Master ist die modbus_tcp v1.0.10
            Dort kommt überhaupt keine Meldung im LOG und schreiben ist dort auch nicht möglich.


            PROBLEM GELÖST

            habe einen Hinweis gefunden das die man beim Schreiben item das Register mit angeben sollte:
            Code:
            modBusObjectType@wall: HoldingRegister
            Jetzt geht es
            Danke für eure Unterstützung
            Zuletzt geändert von SKraft; 06.02.2025, 16:11.

            Kommentar


              #21
              Das Positional Argument count ist bereits in der Version pymodbus 3.5.2 enthalten (und was ich gesehen habe auch schon von Anfang an), es ist nun nur durch den Kunstgriff eines * in den Funktionsparametern explizit angefordert worden. Das bedeutet aber auch das es ein Bug im Code des Plugins ist.

              Zitat von ivande Beitrag anzeigen
              es bahnt sich jedoch ein weiteres Problem an:

              Code:
              deprecate ln:292 BinaryPayloadDecoder is deprecated and will be removed in v3.9.0 !
              Das scheint mittlerweile wohl wieder ad acta gelegt worden zu sein. Dieser PR zeigt das die deprecation warning erstmal rausgenommen worden ist.
              Zuletzt geändert von bmx; 08.02.2025, 09:14.

              Kommentar


                #22
                Nachdem ich jetzt SmartHomeNG 3.11 drauf habe, wollte ich mir das ganze noch mal anschauen. Das mit dem pymodbus lässt sich aber nicht "dauerhaft" lösen. Das wird immer wieder ein Thema sein. Es werden Änderungen vorgenommen, die in späteren Versionen wieder geändert werden usw. Aktueller Stand ist, dass die meisten Plugins mit pymodbus max. 3.6.9 klarkommen. Die aktuelle huawei-soloarlib braucht aber eine neuere Version, die aber nicht größer als 3.8.5 sein darf. 3.8.6 ist die letzte pymodbus Version. Es gibt aber schon in den Docs eine 4.0.0. Da wird es wieder schwerwiegende Änderungen geben.

                Deshalb stellt sich natürlich die Frage, wie wir das Problem lösen können? Ich möchte nicht jedes Mal alle Plugins bearbeiten. Gibt es ggf. eine Alternative zu pymodbus?

                Kommentar


                  #23
                  Naja es stellt sich die Frage ob man wirklich alle Plugins braucht oder ob man es als SDP Plugin aufbaut das nur anders konfiguriert. Eine andere Alternative wäre Modbus als Modul ähnlich zum MQTT Modul auszuführen.

                  Kommentar


                    #24
                    Zitat von bmx Beitrag anzeigen
                    Naja es stellt sich die Frage ob man wirklich alle Plugins braucht oder ob man es als SDP Plugin aufbaut das nur anders konfiguriert. Eine andere Alternative wäre Modbus als Modul ähnlich zum MQTT Modul auszuführen.
                    Ob man wirklich alle Plugins braucht, lässt sich, glaube ich, an dieser Stelle nicht beantworten. Eine/r wird mehrere brauchen, einer keine.

                    Die Idee mit dem Modbus-Modul fände ich gut. Der Beste Ansatz wäre dann nicht das pymodbus zu verwenden, sondern den Code direkt zu nutzen. Dann gibt es auch später keine Komplikationen mit der Kompatibilität. Und die huawei-solar-lib braucht ohnehin pymodbus und wäre dann davon unabhängig.

                    Kommentar


                      #25
                      Nur eine hypothetische Frage, da ich keine Geräte habe, die mit modbus gelesen werden:

                      Könnte eine modbus-Modul auch mit mehreren Geräten umgehen? Bei MQTT ist das Modul ja das "Gateway" zwischen einem Plugin und dem Broker, hier wären es ggf. mehrere Plugins und mehrere Geräte...?

                      Kommentar


                        #26
                        Auch wenn es vielleicht im einzelfall nichts bringt, aber ich denke man könnte auch den Damen und Herren von pymous mal Feedback geben.

                        Ich verstehe ja, dass mein alte Zeit für mal abschneiden muss, aber doch nicht in einer solchen Regelmäßigkeit

                        Kommentar


                          #27
                          Zitat von Morg Beitrag anzeigen
                          Könnte eine modbus-Modul auch mit mehreren Geräten umgehen?
                          Die Frage müsste jemand anders beantworten. Die Frage wäre allerdings, wenn dem nicht so ist, ob man das nicht als lib in den Kern einbauen könnte?

                          Zitat von henfri Beitrag anzeigen
                          Auch wenn es vielleicht im einzelfall nichts bringt, aber ich denke man könnte auch den Damen und Herren von pymous mal Feedback geben.
                          Erledigt! Wenn jemand das kommentieren möchte, dann hier: https://github.com/pymodbus-dev/pymo...scussions/2625
                          Zuletzt geändert von Cannon; 06.04.2025, 13:45.

                          Kommentar


                            #28
                            Hi Cannon,

                            es gäbe da noch andere Möglichkeiten siehe hier oder hier.

                            Ich habe das mit den unterschiedlichen Target-Ordnern für unterschiedliche Versionen und mit anhängen des Pfades an den PYTHONPATH getestet. Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.

                            Das wäre aber aus meiner Sicht ohne Anpassungen im Core zur Installation der Requirements nicht ohne weiteres machbar, ausser man stellt im Plugin in sicher, dass
                            kein pymodbus installiert ist (falls installiert dann deinstallieren von pymodbus im Plugin). Im Anchluss die benötigte Version im Plugin in einen separaten Ordner installieren und dann erst mit entsprechenden Pfad importieren. Das package muss dann aber aus den requirements raus da es sonst bei jedem Neustart wieder intallliert würde.

                            Man müsste dem modbus_tcp-Plugin dann entsprechende Parameter je Instanz mitgeben welche Version zu verwenden ist.

                            Als Idee und zur Diskussion, ich stehe ebenfalls vor dem Problem unterschiedlicher pymodbus-Versionen.

                            Viele Grüße

                            Andre

                            Kommentar


                              #29
                              Hi Andre,

                              Interessante Möglichkeit!
                              Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.
                              Das ist komisch. Diese Bedingung habe ich in beiden links von dir nicht lesen können.
                              Ansonsten wäre das ja eine mögliche Lösung, aber so ist es halt dann doch schon sehr umständlich

                              Kommentar


                                #30
                                Zitat von AndreK Beitrag anzeigen
                                Ich habe das mit den unterschiedlichen Target-Ordnern für unterschiedliche Versionen und mit anhängen des Pfades an den PYTHONPATH getestet. Das funktioniert wenn im Standard-path kein pymodbus installiert ist, ansonsten wird die Version von dort importiert.
                                Die Idee könnte wirklich eine Lösung sein. Das wäre aber wirklich eine Frage für SmartHomeNG, ob man es nicht ermöglicht, dass mehrere Versionen installiert werden können. Zumindest in SmartHomeNG wird ja beim Start erkannt, wenn es multiple requirements gibt. Vielleicht bestünde über den Weg die Möglichkeit mehrere Versionen einzubinden und das gar nicht auf plugin-Basis, sondern direkt über SmartHomeNG. Damit ist das Problem dann auch für künftige Änderungen von anderen Bibliotheken gelöst. Also quasi immer dann, wenn es ein multiples requirement gibt, wird das Package separat installiert und in irgendeiner Form, die noch zu überlegen wäre, direkt ans Plugin übergeben.

                                Was mir nicht klar ist, warum pymodbus im Standard-Path installiert werden darf. Zumindest unter den Links steht da nichts.

                                Kommentar

                                Lädt...
                                X