Ankündigung

Einklappen
Keine Ankündigung bisher.

Zyklisches Senden bei Plugin

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

    [wiregate] Zyklisches Senden bei Plugin

    Hallo,

    ich habe eine Frage zu diesem Plugin.
    Code:
    ###################################################################################### 
    # 
    # Außenlicht HWR
    # V0.1 2012-11-01 
    # by Manu241 - [URL="http://www.knx-user-forum.de"]www.knx-user-forum.de[/URL]
    #
    ###################################################################################### 
    ######################### 
    ### BEGINN DEFINITION ### 
    ######################### 
    # Aufruf-Zyklus auf 300 Sekunden setzen
    $plugin_info{$plugname.'_cycle'} = 86400;
    #GA´s
    my $daemmerung_an_ga = '0/1/6';
    my $door_HWR_ga = '2/3/1';
    my $Aussenleuchte_an_ga = '15/0/28';
    ######################### 
    ###  ENDE DEFINITION  ### 
    ######################### 
    my $daemmerung = knx_read($daemmerung_an_ga,0,1); #1=hängt, 0=weg
    my $door_hwr = knx_read($door_HWR_ga,0,1); #1=offen,0=zu
    #Plugin auf GAs anmelden, wir brauchen nur die Tuer..
    $plugin_subscribe{$door_HWR_ga}{$plugname} = 1;
    if (%msg)  
    { # Telegramm vom KNX
    plugin_log($plugname,"GA hat Plugin ausgelöst"); #später löschen oder auskommentieren
      if ($daemmerung == 0 && $door_hwr == 0)
      {
    plugin_log($plugname,"Alle GAs sagen 0"); #später löschen oder auskommentieren
            knx_write($Aussenleuchte_an_ga,1,1); # Wert 1 auf die GA, DPT1 (dritter parameter)
    plugin_log($plugname,"Nun sollte das Telegramm gesendet worden sein"); #später löschen oder auskommentieren
      }
    else {
    plugin_log($plugname,"GAs sind nicht alle 0: daemmerung->$daemmerung und Tür->$door_hwr "); #später löschen oder auskommentieren
    }
    }
    return;
    Mit diesem Plugin möchte ich eine Außenleuchte einschalten, wenn es draußen dunkel ist und wenn die Außentür aufgeschlossen wird.

    Nun habe ich das Problem, dass das Plugin bei offener Tür zyklische auf den Bus sendet. Kann ich das irgendwie stoppen, sodass der Befehl nur einmal ausgeführt wird ?
    Ich glaube es liegt daran, dass das Plugin die Zustände der Ga´s zu oft abfragt.

    Gruß Manuel

    #2
    Hallo Manuel

    Rein vom Plugin her hätte ich gesagt, dass das Plugin von Extern her mehrere male getriggert wird. Wie ist die Zykluszeit des Dämmerungswertes?

    Wenn du wüsstest wodurch das zyklische sendenverursacht wird, kannst du es programmtechnisch auch abfangen. Doch du musst zuerst die Ursache dafür finden.

    Was natürlich auch immer ein Problem ist...

    Die Plugins werden in einem grossen Hauptprozess abgearbeitet. Quasi in einer Endlosschleife! Also wird das Plugin wohl alle paar Sekunden abgearbeitet. Das Problem könntest du lösen, in dem du prüfst, ob wirklich ein Schreibbefehl auf die GA statt gefunden hat. Beispiele dazu findest du zuhauf hier im Forum
    Gruss Patrik alias swiss

    Kommentar


      #3
      Hallo Patrick,

      danke für deine Antwort. Dann werde ich morgen Abend mich auf die Suche begeben.

      Sobald ich was gefunden habe, melde ich mich zurück.

      .... ob wirklich ein Schreibbefehl auf die GA statt gefunden hat. Beispiele dazu findest du zuhauf hier im Forum
      Hast du ein Stickwort wonach ich da suchen muss ?

      Gruß Manuel

      Kommentar


        #4
        EDIT: Das war Quatsch

        Generell passen Deine Kommentare aber schlecht zum Code und der Beschreibung der Aufgabenstellung, ich gehe jetzt mal davon aus dass bei
        Dämmerung: 0 = dunkel / 1 = hell
        Türöffnung: 0 = zu / 1 = offen

        Aufrufzyklus kann 0 sein.

        Code:
        ### Außenlicht HWR
        
        ### BEGINN DEFINITION ###  
        
        $plugin_info{$plugname.'_cycle'} = 0; # Aufruf-Zyklus auf 0 Sekunden setzen
        
        my $daemmerung_an_ga = '0/1/6';     #GA Dämmerung
        my $door_HWR_ga = '2/3/1';          #GA Tür HWR
        my $Aussenleuchte_an_ga = '15/0/28';#GA Aussenleuchte
        
        ###  ENDE DEFINITION  ### 
        
        my $daemmerung = knx_read($daemmerung_an_ga,300,1); #1=hell, 0=dunkel - hier reicht ein Wert aus dem Cache falls zyklisch gesendet wird
        $plugin_subscribe{$door_HWR_ga}{$plugname} = 1;     #Tür abonnieren
        
        if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $door_HWR_ga and $msg{'value'} == 1) #Nur bei Telegramm mit 1 von Tür reagieren
            {
                plugin_log($plugname,"Tür offen"); #später löschen oder auskommentieren
                if ($daemmerung == 0) #bitte prüfe nochmal Deine Kommentare/Werte 
                    {
                        plugin_log($plugname,"Dunkel ist es auch"); #später löschen oder auskommentieren
                        knx_write($Aussenleuchte_an_ga,1,1); # Wert 1 auf die GA, DPT1 (dritter parameter)
                        plugin_log($plugname,"Nun sollte das Telegramm gesendet worden sein"); #später löschen oder auskommentieren
                    }
                else
                    {
                        plugin_log($plugname,"Ist aber noch hell"); #später löschen oder auskommentieren
                    }
            }
        else
            {
                plugin_log($plugname,"Tür geschlossen"); #später löschen oder auskommentieren
            }
        Ungetestet !
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Wiso quatsch?

          Es gibt mehrere Möglichkeiten für so ein Verhalten:

          - Plugin wird sehr schnell zyklisch aufgerufen (schneller als die eingestellte Zykluszeit) weil nur wehnige Plugins laufen. -> habe ich selbst mehrfach erlebt und z.B. mit einem Zeitstempel händisch umgangen.

          - Plugin wird zyklisch durch eine abonierte GA aufgerufen. Dabei hat man das Probelm, wenn man mal eine GA an einen "Pluginnamen" angemeldet hat, die Anmeldung der alte GA selbst bei änderung aktiv bleibt! (wir wissen ja nicht mit wie vielen GA's getestet wurde und ob auch mal die Dämmerungs GA aboniert wurde. (Desshalb habe ich empfohlen explizit zu prüfen ob auf die Tür-GA geschrieben wurde -> Damit fängt man auch künftige Probleme ab).

          Also würde ich meinen Post nicht unbedingt als Quatsch abtun. Auch wenn es vieleicht das Problem nicht direkt löst, so kann man mit den Vorkehrungen gleich noch den Code stabieler gegen weitere bekannte Probleme machen...
          Gruss Patrik alias swiss

          Kommentar


            #6
            btw meinte ich mit Quatsch das was ICH Vorher geschrieben hatte. Da steht auch dick und fett ein EDIT davor. Also komm mal runter!
            Wenn jemand Unsinn schreibt zitiere ich das dann auch
            Umgezogen? Ja! ... Fertig? Nein!
            Baustelle 2.0 !

            Kommentar


              #7
              Hi,

              Wie sieht es denn aus, wenn ich z.b. Door_ga in mehren Plugins verwende. Gibt es da Probleme oder muss ich sie immer anders nennen?
              Z.B. Wenn ich für mehrer Aktionen das gleiche Plugin nutze ?

              Gruß Manuel.

              Kommentar


                #8
                Ui. Sorry Jumi. Das habe ich total falsch verstanden.

                @Manuel: Das sollte kein Problem sein. Du kannst das gleiche Plugin problemlos mehrere male (unter verschiedenen Pluginnamen) laufenlassen.
                Gruss Patrik alias swiss

                Kommentar

                Lädt...
                X