Ankündigung

Einklappen
Keine Ankündigung bisher.

Smarthome libs connection/network, connection monitoring, plugins, ...

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

    Smarthome libs connection/network, connection monitoring, plugins, ...

    Hallo zusammen,

    ich habe eine Verständnisfrage bzgl. der Libs "connection" und "network": Wenn ich das soweit richtig interpretiere, dann soll in absehbarer Zeit die lib "connection" durch die lib "network" ersetzt werden. In "connection" gibt es derzeit einen Mechanismus zum Überwachen bzw. Neuverbinden von Verbindungen.
    Dieser Mechanismus wurde zB. im Plugin "Comfoair" verwendet, indem sich das Plugin beim Monitoring angemeldet hat (smarthome.connections.monitor(self)).
    Dieser Aufruf wurde aber vor einer Weile entfernt, woraus ich schließe, dass dieser Mechanismus nicht mehr funktionieren wird, ist das korrekt?
    Es wird evtl. sogar gar keine Verbindung mehr zustande kommen, da soweit ich gesehen habe im Plugin selbst kein "connect" Aufruf vorhanden ist?
    Wie müsste zB. dieses Plugin korriert werden, damit die aus meiner Sicht sehr nützliche Verbinungsüberwachung wieder funktioniert?

    Ich versuche die Zusammenhänge zu verstehen, vielleicht kann jemand etwas Licht ins Dunkel bringen.

    Vielen Dank bereits im Voraus

    Franz

    #2
    Die Umstellung auf die lib.network sollte - wenn ich das richtig im Kopf habe - auch bei comfoair schon erfolgt sein. In der aktuellen Version der lib.network läuft das - konfigurierbare - autoconnect (bei Senden) und autoreconnect (bei Trennung) automatisch, dafür muss kein Monitoring mehr aktiviert werden.

    In einigen "wichtigen" Plugins (z.B. knx) wird die lib.network schon seit längerer Zeit eingesetzt, die lib.connection soll mit einer der nächsten Versionen von shng entfernt werden.

    Reicht dir das schon als Antwort, oder sind noch Fragen offen? -> dann bitte einfach weiterfragen

    Kommentar


      #3
      Vielen Dank für Deine Antwort, ich nehme Dein Angebot gerne an und frag weiter ;-)

      Wenn eine Umstellung auf lib.network beim Plugin "comfoair" bereits erfolgt wäre, dann müsste doch diese lib innerhalb des Plugins irgendwie verwendet werden, bzw. zB. ein "Tcp_client" instanziert sein, oder? (Wobei das alleine nicht ausreichend sein dürfte, da das Plugin auch mit einer seriellen Verbindung verwendet werden kann)
      Oder gibt er hier noch irgend einen anderen Mechanismus?

      Ich benutze die aktuelle Version (1.9.1) und finde keinerlei Hinweise auf "lib.network" in dem besagten Plugin.
      Dazu passen würde auch meine Beobachtung, dass aktuell keine Verbindung zustande kommt, erst wenn ich die Zeilen:
      Code:
      smarthome.connections.monitor(self)
      self.connect()
      in die __init__ Funktion einfüge (wobei die zweite nicht nötig sein dürfte, da das ja vom monitoring erledigt werden dürfte) klappt es wieder.

      Freue mich auf weitere Antworten

      Kommentar


        #4
        Ich habe jetzt nochmal in comfoair reingeschaut - das nutzt weder lib.connection noch lib.network, sondern hat eigenen Netzwerkcode. Wenn da also was nicht läuft, müsstest du mit dem Pluginautor sprechen (oder selber machen)...

        Die lib.connection ist genauso wenig eingebunden wie die lib.network (oder ich habe es überlesen...).

        Kommentar


          #5
          Vielen Dank für Deine Antwort!

          Ok, die lib.connection wurde nicht für den Aufbau der Verbindung genutzt, wohl aber für die Überwachung bzw. Neuverbindung dieser.
          Diese Möglichkeit wird es zukünftig (nach dem Ersatz der lib.connection durch lib.network) ja aber nicht mehr geben, richtig?
          Oder ist eine ähnliche Funkion auch in lib.network vorhanden/geplant?

          Ansonsten bliebe ja nur den "Connect" direkt im Plugin selbst auszuführen und zu hoffen, dass diese nie neuverbunden werden muss, oder?

          Viele Grüße

          Kommentar


            #6
            Oder umstellen auf lib.network

            Kommentar


              #7
              Das wird eben nicht so einfach gehen, befürchte ich, da das Plugin entweder eine Netzwerk Verbinung oder je nach Konfiguration eine serielle Verbindung (wie in meinem Fall) aufbaut.

              Kommentar


                #8
                Ich weiß ja nicht, wie du darauf kommst, dass das Plugin die Verbindung überwachen "lassen" würde, oder dass dafür die lib.connection verwendet wird - die lib.connection ist nichtmal eingebunden. Wo findest du das im Code?

                Du kannst problemlos die lib.network für den Netzwerkanteil und ggf. selbst geschriebenen Code für die serielle Verbindung nutzen, da spricht doch nichts gegen...? Das ist im multidevice-Plugin bzw. zukünftig in der smartdeviceplugin-Klasse genau so umgesetzt...

                Der "connect" wird direkt im Plugin umgesetzt, Zeilen 70-130 - ich finde allerdings auch nicht, wo das aufgerufen wird. Ich kann das hier allerdings auch nicht testen...

                Kommentar


                  #9
                  Vielen Dank für die Antwort!

                  Auf welchem Wege die lib.connection eingebunden wird kann ich nicht sagen (bin da zu wenig Python Experte), evtl. irgendwie über SmartPlugin?
                  In der aktuellen Version ist diese Überwachung ja eben nicht mehr drin, diese wurde vor etwa einem Jahr entfernt, vorher erledigte das der Aufruf:
                  Code:
                  smarthome.connections.monitor(self)
                  Da der Aufruf in der aktuellen Version fehlt und, wie Du richtig festegestellt hast, der "connect" auch nicht direkt aufgerufen wird, funktioniert es ja aktuell auch nicht, zumindest nicht bei mir (warum sonst Niemand Probleme damit hat, weiß ich nicht, evtl. bin ich der einzige Nutzer??)
                  Ich habe mir damit beholfen, den Aufruf eben wieder reinzumachen, was allerdings nur noch solange funktioniert, wie es lib.connection noch gibt.
                  Diese Überwachung finde ich sehr praktisch, weil, unabhängig von der Verbindungsart (Netzwerk oder seriell) ein Reconnect erfolgt, falls nötig.
                  Könnte man das evtl. durch eine Logik lösen? Dazu müsse "connected" und "connect" irgendwie "exportiert" werden, so dass diese über eine Logik "zugänglich" wären, wäre das ein möglicher Ansatz?

                  Kommentar

                  Lädt...
                  X