Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin, das auf mehrere Gruppenadressen hört

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [wiregate] Plugin, das auf mehrere Gruppenadressen hört

    Hallo,

    wenn ich den Perl-Code der Beispiel-Plugins richtig verstanden habe, wird der Wert einer Gruppenadresse, auf die das Plugin hört bzw. reagiert, eingelesen über subscribe und einer selbst definierten Variable übergeben. Ist es auch möglich, dass das Plugin auf mehrere Gruppenadressen hört, der subscribe-Befehl also mehrmals im Skript verwendet werden kann (natürlich mit unterschiedlichen Variablen)? Was ist dabei zu beachten bzw. welche Probleme könnten sich daraus ergeben?

    Anwendung: einfache ereignisgesteuerte logische Verknüpfung zweier Parameter (z.B. Helligkeit und Taster).

    Vielen Dank!

    Harald

    #2
    Hallo Harald

    Das ist problemlos möglich. Das sieht dann z.B. so aus:

    Code:
       $plugin_subscribe{$GA1}{$plugname} = 1;
       $plugin_subscribe{$GA2}{$plugname} = 1;
       $plugin_subscribe{$GA3}{$plugname} = 1;
       $plugin_subscribe{$GA4}{$plugname} = 1;
    
    oder
    
       $plugin_subscribe{'1/1/1'}{$plugname} = 1;
       $plugin_subscribe{'1/2/3'}{$plugname} = 1;
       $plugin_subscribe{'2/4/6'}{$plugname} = 1;
    
    usw...
    Gruss Patrik alias swiss

    Kommentar


      #3
      Gleiche Gruppenadresse für verschiedene Plugins?

      Super, danke für die schnelle Antwort!

      Und jetzt noch die schüchterne Nachfrage nach einer weiteren Konstellation: können mehrere verschiedene Plugins auf die gleiche Gruppenadresse hören und reagieren, oder gibt es da Konflikte?

      So könnte die Gruppenadresse, die beispielsweise einen Helligkeitswert der Wetterstation transportiert, für verschiedene Wiregate-Plugin-Logiken verwendet werden.

      Harald

      Kommentar


        #4
        Funktionieren tut es aber dann musst du eventuell mit kurzen Verzögerungen rechnen, da die Plugins AFAIK der Reihe nach abgearbeitet werden. Wenn du aber keine sonderlich zeitkritischen sachen hast wie z.B. Licht direkt über Taster schalten. Wir sprchen aber je nach anzahl der Plugins und der Ausführungszeit von ein paar millisekunden bis sekunden. Für eine Art konstantlichtregelung absolut ausreichend.

        Kleine Frage. Für was brauchst du die gleiche GA in mehreren Plugins? Kanst du das nicht in 1 grosses Plugin packen?
        Gruss Patrik alias swiss

        Kommentar


          #5
          Zitat von swiss Beitrag anzeigen
          Kleine Frage. Für was brauchst du die gleiche GA in mehreren Plugins? Kanst du das nicht in 1 grosses Plugin packen?
          Ich könnte das auch in ein einziges großes Plugin packen. Überhaupt könnte man sämtliche Funktionen eines Hauses (zumindest im privaten Bereich) mit einem einzigen Plugin abarbeiten, solange keine zeitintensiven Dinge dabei sind und die timeout-Zeit eines Plugins nicht überschritten wird. Das wäre aber sehr unübersichtlich. Beispielsweise liefert die Wetterstation auf eine Gruppenadresse den Helligkeitswert. Dieser Wert wird an verschiedenen Stellen des Hauses für ganz unterschiedliche Zwecke gebraucht (z.B. einmal für Verdunkelung im Wohnzimmer, ein anderes Mal für die Steuerung eines Tasters im Schlafzimmer oder für die automatische Beleuchtung der Außenanlage usw.) und entsprechend abgearbeitet. Im KNX-System hören ja auch oft mehrere verschiedene Aktoren auf die gleiche Gruppenadresse. Bei der Idee, eine Gruppenadresse in mehreren Plugins zu verwenden, wird somit ja die KNX-Struktur nachgebaut auf der Logik-Ebene.

          Herzlichen Dank für Deine Hilfe. Deine Antworten ermutigen mich, für die vielen kleinen Logiken, die ich benötige und nicht dezentral lösen kann, Plugins des Wiregate zu verwenden.

          Harald

          Kommentar


            #6
            Hmm..

            Ich sehe bei den Beispielen wirklich nichts zeitkritisches. Das sollte also eigentlich gehen (auch wenn in meinen Augen 10 Plugins die alle auf die Helligkeit der Wetterstation reagieren nicht unbedint übersichtlicher vor kommen).

            Falls man GA's nur auf einem Plugin anmelden kann aber trotz dem Jede funktion in ein eigenes Plugin packen möchte, kann man ja immer noch in einem Plugin dass eventuell nur über die Helligkeit getriggert wird die GA anmelden und in den übrigen Plugins ein KNX_read einbauen, dass den aktuellen Wert einliest. Ist dann aber nicht mehr über die Helligkeit getriggert.

            Wäre aber in gewissen Fällen auch egal. z.B.

            Umschalten der Tasterfunktion im Elternschlafzimmer...

            Taster-GA an Taster-Plugin anmelden. Im Plugin den aktuellen Wert der Wetterstation einlesen und dann entscheiden was geschieht.

            Damit kann man diese Funktion realisieren ohne die Helligkeits_GA der Wetterstation direkt am Plugin anzumelden.
            Gruss Patrik alias swiss

            Kommentar


              #7
              Ja, bei dem Beispiel mit dem Taster im Schlafzimmer hast Du natürlich völlig Recht, da ist Deine Lösung angesagt.

              Zur Anregung meiner grauen Hirnmasse habe ich noch eine andere Lösung geschaffen, frei nach dem Motto "viele Wege führen nach Rom":

              nur ein einziges Plugin reagiert auf z. B. die Helligkeit. Dieses Plugin dient aber als Verteiler/Vervielfältigungs-Plugin und schreibt mehrere Gruppenadressen, die alle diesen Helligkeitswert enthalten, auf den Bus. Danach können alle Aufgaben von nachfolgenden Plugins, die dann alle auf eine andere Gruppenadresse hören/reagieren können, abgearbeitet werden. Auch hierbei spielt die Zeit der Abarbeitung wahrscheinlich keine Rolle.

              Mal so eine Gedankenspielerei von mir, ich werde es mal ausprobieren.

              Harald

              Kommentar


                #8
                Ein Grundprinzip aus der Softwareentwicklung: KISS - Keep It Simple, Stupid. Lieber mehrere kleine Plugins die dafür nacheinander abgearbeitet werden, dann ist der Code jeweils übersichtlicher, und man tut sich beim debugging leichter. Grade wenn man sich irgendwann nicht mehr täglich mit dem Code beschäftigt hilft das ungemein.

                Man kann das Prinzip aber natürlich auch ignorieren

                Grüße,
                Julian

                Kommentar


                  #9
                  Naja ich hätte pro Funktion 1 Plugin erstellt. Nur wäre bei mir die Funktion z.B. Aktionen_Aussenhelligkeit.

                  Dort alles rein was mit der Aussenhelligkeit zusammmen hängt (Schwellwertschalter). Wenn dan bei mir was mit der Hellikeitsabhängigkeit nicht funktioniert, suche ich genau in diesem Plugin. Ist aber immer Geschmakssache und so individuell wie der Code jedes einzelnen Programmierers.
                  Gruss Patrik alias swiss

                  Kommentar


                    #10
                    Deswegen wird da ja auch dem Programmierer jegliche Freiheit gelassen, es führen bei SW immer mehrere Wege zum Ziel

                    Es soll beides gehen: ein Plugin mit vielen GA's oder viele Plugins pro GA;
                    dabei übrigens keine Performance-Sorgen machen.. Der eval(PLUGIN) klingt erstmal schlimm, aber solange das Plugin selbst nichts blockierendes anstellt sprechen wir hier von millisekunden im zweistelligen Bereich.

                    Makki
                    EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                    -> Bitte KEINE PNs!

                    Kommentar

                    Lädt...
                    X