Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin 'helios_tcp' error importing Python package: No module named 'pymodbus3'

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

    Plugin 'helios_tcp' error importing Python package: No module named 'pymodbus3'

    Möchte gerne auf meinem neuen Testgerät das helios_tcp Plugin installieren und bekomme die obengenannte Fehlermeldung. Das Plugin lässt sich so nicht starten.
    Mein Testgerät wurde vor ca. 4 Wochen nach der Komplettanleitung mit Debian 11 und Python 3.9.2 installiert und erst SHNG 1.9.4 installiert und dann auf SHNG 1.9.5 aktualisiert.
    Einige Plugins konnten bereits eingebunden werden (avm, database, knx, mqtt, ow, shelly, simulation, uzsu) die soweit auch keine Probleme bereiten, keine Fehler im Log.
    Nur beim Aktivieren des helios_tcp Plugin kommt es zur genannten Fehlermeldung im Log.
    Durch die Anpassung in der ./etc/smarthome.yaml, das aktivieren der Zeile - pip_command: "python3 -m pip" - werden nun auch die Pakete per pip automatisch installiert. Es wurde auch das Paket pymodbus Version 3.2.2 installiert. Ein pymodbus3 gibt es in dieser Installation nicht.
    In meiner älteren, noch Produktiven Installation, von SHNG 1.7.2 mit Phyton 3.7.3 gibt es das Paket pymodbus3 in Version 1.0.0 und hier ist das Plugin helios_tcp auch im Einsatz.

    Wo ist mein Fehler bzw. wie kann ich den Fehler beheben?

    Schon mal Danke an alle die fleißigen Helfer für das Super Programm. Kenn mich mit Linux leider nicht so gut aus.


    Gruß
    Paul
    Zuletzt geändert von paul14; 16.04.2023, 17:54.

    #2
    Hallo,

    ich nutze auch pymodbus aber pymodbus3 habe ich noch nicht gehört…
    installiere doch ganz einfach via

    python3 -m pip install pymodbus==3.2.2

    Kommentar


      #3
      Hallo Hasenradball,

      danke für die schnelle Antwort die ich sofort getestet habe. Leider erhalte ich beim ausführen die Meldung "Requirement already satisfied: pymodbus==3.2.2 ..." und die Féhlermeldung im Log bleibt, nach einem Neustart, erhalten.

      Wenn ich mir die user_doc.rst des Plugins helios_tcp anschaue dann wird dort bei "Einichtung" geschrieben: "pymodbus3 muss installiert sein. ..."

      Welche SHNG und Python Version nutzt du?
      Kann es sein das irgendwo im Plugin die Anforderung nach pymodbus3 hinterlegt ist die es bei Python 3.9.2 nicht mehr gibt und ich deshalb die Fehlermeldung bekomme?
      Hatte alle Dateien des Plugins geprüft aber nichts gefunden, wenn ich das richtig gemacht habe.

      Danke an alle die mir helfen können.


      Gruß
      Paul

      Kommentar


        #4
        Paul, schau doch mal in die Datei plugins/helios_tcp/__init__.py mit einem Texteditor in Zeile 29: from pymodbus3.client.sync import ModbusTcpClient ​dort die "3" rauslöschen und nochmal probieren.

        Du kannst parallel auch mal unter https://github.com/smarthomeNG/plugi...cp/__init__.py schauen, dort wird auch pymodbus genutzt.

        Oder Du schaust ob dieses Plugin eventuell auch für Deine Anlage funktioniert. Dort hat Tom Bombadil wohl einiges an Arbeit reingesteckt...
        Zuletzt geändert von bmx; 15.04.2023, 07:53.

        Kommentar


          #5
          Hi bmx,

          danke für die Antworten. Das ändern in Zeile 29 von pymodbus3.client.sync ... in pymodbus.client.sync .... hat leider keine Änderung gebracht.
          Die beiden anderen Plugins werde ich testen und Rückmeldung geben. Das braucht aber etwas mehr Zeit.

          Danke.


          Gruß
          Paul

          Kommentar


            #6
            Es gab 'breaking changes' bei pymodbus Version 3. Vermutlich sind die im Plugin noch nicht eingearbeitet - oder sie sind eingearbeitet, und pymodbus2x wird nicht mehr berücksichtigt (und Deine Python-Version ist zu alt für pymodbus3):
            • die Import-Routinen mussten angepasst werden, da Bibliotheken jetzt anders heißen (für TCP siehe hier / erweiterte Fassung für RTU+TCP hier),
            • das Auslesen mussten angepasst werden (siehe hier, gleicher Thread - unit heisst jetzt slave).
            Ein reines 'pip install pymodbus' dürfte ohne Anpassungen automatisch pymodbus3 installieren, wenn Dein Python halbwegs aktuell ist (ab 3.8 oder 3.9 sind da keine separaten Anweisungen notwendig).

            /tom
            Zuletzt geändert von Tom Bombadil; 16.04.2023, 13:22.

            Kommentar


              #7
              Hi bmx,

              habe mir mal die __init__.py des Plugins modbus_tcp angeschaut und hier werden wohl ältere und neuere Versionen des pymodbus abgefragt.
              Siehe hier:
              if pymodbus_baseversion > 2:
              # for newer versions of pymodbus
              from pymodbus.client.tcp import ModbusTcpClient
              else:
              # for older versions of pymodbus
              from pymodbus.client.sync import ModbusTcpClient

              Also habe ich im Plugin helios_tcp die __init__.py die Zeile 29 von
              "from pymodbus3.client.sync import ModbusTcpClient"
              in
              "from pymodbus.client.tcp import ModbusTcpClient"
              geändert. Nach einem Neustart des Dienstes SmartHomeNG über die Admin oberfläche wird im Log kein Fehler mehr ausgegeben und das Plugin helios_tcp wird mir unter "Plugin Liste" auch angezeigt.

              Jetzt muss ich noch prüfen ob meine ITEMS aus meiner alten Version unter SHNG 1.9.5 funktionieren.
              Werde Rückmeldung geben ob es erfolgreich war.

              Danke für den Tipp wegen dem modbus_tcp Plugin.


              Gruß
              Paul

              Kommentar


                #8
                Hallo Tom,

                auch einen herzlichen Dank für deine Antwort.
                Durch die Änderung der Zeile 29 in der __init__.py konnte das Plugin geladen werden. Dann mussten noch die "unit" gegen "slave" in den Zeilen 192, 198 und 271 tauschen und nun bekomme ich wieder meine Daten.
                Leider habe ich noch ein riesen Probleme das Widget in meine Visu einzubinden, in der alten Umgebung geht ein teil und in meiner neuen Umgebung werden mir keine Daten angezeigt.
                Da es sich um die smartVISU handelt wird im dortigen Forum irgendwann eine neue Frage von mir auftauchen und dann hoff ich wieder auf so tolle Unterstützung wie hier.

                Danke an alle.


                Gruß
                Paul

                Kommentar


                  #9
                  Die letzten Änderungen an diesem Plugin scheinen also keinen 'Dual-Support' für pymodbus2/3 zu implementieren, sondern eine 'harte' Umstellung von 2 auf 3. Sollte vielleicht irgendwo vermerkt werden, da dann tatsächlich eine aktuelle Python-Version vorausgesetzt wird.

                  Der Aufwand für Dual-Support ist eigentlich nicht groß - Beispielimplementierung siehe hier. Ich bin mir nicht sicher, ob Python auch sowas wie ternary condition operators kennt (condition?yes:no) - falls ja, wäre die Umstellung wahrscheinlich sogar in einem Einzeiler statt einem klassischen if-Statement möglich, weil ja nur abhängig von der pymodbus-Version 'unit' oder 'slave' in die Lese-/Schreibkommandos einzusetzen ist.

                  /tom

                  Kommentar

                  Lädt...
                  X