Ankündigung

Einklappen
Keine Ankündigung bisher.

I-Button Plugin

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

    #31
    kleiner Tipp noch....

    Mach das einlesen der Zustände erst nach der ersten If-Abfrage in der foreachschleife. damit werden die ganzen KNX read nur ausgelöst, wenn sich der Zuständ eines IButton durch ein WRITE telegramm geändert hat.

    Damit verkürzt du die ausfürungszeit des Plugin und es entsteht wehniger Traffic auf dem BUS wen der Status nicht aktuell auf dem eibd vorligt.
    Gruss Patrik alias swiss

    Kommentar


      #32
      Klingt vernünftig.
      Hab ich gleich mal umgesetzt.
      So richtig:
      Code:
      ##########################################################
      
      #################################################################
      # do not change anything below, all config stays above
      #################################################################
      
      my $schwarz= '13/2/1';
      my $blau= '13/2/2';
      my $gelb= '13/2/4';
      my $rot = '13/2/3';
      my $Anwesenheit = '13/2/0';
      my $begruessung = '13/2/5';
      my $status;
      my $rot_stat;
      my $schwarz_stat;
      my $gelb_stat;
      my $blau_stat;
      # subscribe plugin and call it only when necessary
      $plugin_subscribe{$schwarz}{$plugname} = 1;
      $plugin_subscribe{$gelb}{$plugname} = 1;
      $plugin_subscribe{$blau}{$plugname} = 1;
      $plugin_subscribe{$rot}{$plugname} = 1;
      $plugin_info{$plugname.'_cycle'} = 0;
      
      
      my @AlleButtons;
      push @AlleButtons, {besitzer => "Elisa", name => "rot", GA => "13/2/3"};
      push @AlleButtons, {besitzer => "Volker", name => "schwarz", GA => "13/2/1"};
      push @AlleButtons, {besitzer => "Samuel", name => "blau", GA => "13/2/2"};
      push @AlleButtons, {besitzer => "Christina", name => "gelb", GA => "13/2/4"};
      
       
      
      foreach my $element (@AlleButtons) {
           if ($msg{'dst'} eq ($element->{GA}) && ($msg{'apci'} eq 'A_GroupValue_Write') && knx_read($msg{'dst'},0,1) != $plugin_info{$plugname.'_' . ($element->{name}) })
           {
            
                if (($msg{'value'} == 01) && ($status == 00)) {
               knx_write($Anwesenheit ,1,1);
                knx_write($begruessung,1,1);
               plugin_log($plugname,"name: " . $status);
                }
               
                
                elsif (($msg{'value'} == 00) && ($rot_stat == 00) && ($gelb_stat == 00) && ($schwarz_stat == 00) && ($blau_stat == 00)) {               
                 knx_write($Anwesenheit ,0,1);
                 plugin_log($plugname,"name: " . $element->{name} . "; aus: ");
                }
          $plugin_info{$plugname.'_' . ($element->{name}) } = knx_read($element->{GA} ,0,1);
          $plugin_info{$plugname.'_' . ($Anwesenheit) } = knx_read($Anwesenheit ,0,1);
          }
            
         else {
                next;
           }
           my $status = knx_read($Anwesenheit ,0,1);
           my $rot_stat = knx_read($rot,0,1);
           my $schwarz_stat = knx_read($schwarz,0,1);
           my $gelb_stat = knx_read($gelb,0,1);
           my $blau_stat = knx_read($blau,0,1);
      }
      die Variablen muss ich ja am Anfang erstellen sonst findet er sie nicht?

      Gruß

      Edit: Nachtrag:
      Das war gar nicht so gut Auf einmal wars dunkel hier.
      Ich denke das es so nicht geht, da ich die Variablen ja verarbeite in dem Plugin. Anfangs sollten sie ja leer sein ohne knx_read. (Auch wenn über plugin_info zwischengespeichert wird findet die zuordnung erst weiter unten statt. So meine Theorie )

      Kommentar


        #33
        Nö ich meinte eigentlich dass das einlesen der Zustände gleich nach bzw. IN der ersten ifabfrage geschehen sollte also z.B. so:

        Code:
        foreach my $element (@AlleButtons) {
             if ($msg{'dst'} eq ($element->{GA}) && ($msg{'apci'} eq 'A_GroupValue_Write') && knx_read($msg{'dst'},0,1) != $plugin_info{$plugname.'_' . ($element->{name}) })
             {
             
             my $status = knx_read($Anwesenheit ,0,1);
             my $rot_stat = knx_read($rot,0,1);
             my $schwarz_stat = knx_read($schwarz,0,1);
             my $gelb_stat = knx_read($gelb,0,1);
             my $blau_stat = knx_read($blau,0,1);
              
                  if (($msg{'value'} == 01) && ($status == 00)) {
                 knx_write($Anwesenheit ,1,1);
                  knx_write($begruessung,1,1);
                 plugin_log($plugname,"name: " . $status);
                  }
                 
                  
                  elsif (($msg{'value'} == 00) && ($rot_stat == 00) && ($gelb_stat == 00) && ($schwarz_stat == 00) && ($blau_stat == 00)) {               
                   knx_write($Anwesenheit ,0,1);
                   plugin_log($plugname,"name: " . $element->{name} . "; aus: ");
                  }
            $plugin_info{$plugname.'_' . ($element->{name}) } = knx_read($element->{GA} ,0,1);
            $plugin_info{$plugname.'_' . ($Anwesenheit) } = knx_read($Anwesenheit ,0,1);
            }
              
           else {
                  next;
             }
        }
        Dann stehen die Werte in dem Augenblick zur verfügung in dem sie benötigt werden und nicht vorher
        Gruss Patrik alias swiss

        Kommentar


          #34
          Hmm is das nicht wurst da das Plugin sowieso nur ausgeführt wird wenn ein I-Button Telegramm versendet wird?
          Da ich kein plan hab mach ich das vorsichtshalber mal und beobachte den busverkehr!

          Dankeschön nochmals!

          Gruß

          Kommentar


            #35
            Jein. Wo dass die Daten eingelesen werden spielt schon ein bischen eine Rolle.

            Wenn du die Zustände am Anfang des Plugin abfragst, werden bei jedem Aufruf also auch alle 300s 4x IButton's die zustände eingelesen. Das bringt aber eigentlich nichts da die erste IF-Abfrage innerhalb der foreach schleife die überflüssigen Aktualisierungen herausfiltert.

            Wenn du wie in meinem Beispiel die daten erst nach der ersten IF-Abfrage einbaust, werden die Daten nur eingelesen, wenn sich WIRKLICH der Zustand eines IButton geändert hat. (Sollte zumindest so sein). Die Werte stehen dann aber auch sofort für die weitere Verarbeitung in den weiteren IF-Abfragen zur Verfügung.

            Wenn du die Zustände erst am Ende der IF-Abfrage einliest, kann es vorkommen, dass die Abfrage nicht funktioniert weil die IF-Abfragen vorher bereits die Werte brauchen. Die Variabeln sind aber zu diesem Zeitpunkt noch leer, bzw. existieren noch nicht.

            Desshalb ist es nicht ganz egal wo das einlesen geschieht.
            Gruss Patrik alias swiss

            Kommentar


              #36
              Ah auch wenn ich bei Plugin_cycle =0 schreib wird es trotzdem nach den globalen 300s ausgeführt... OK

              Das die abfrage danach nix bringt ist, wenn ich gleich nachgedacht hätte, auch logisch.


              Gruß

              Sent from my LG-P920 using Tapatalk

              Kommentar


                #37
                Ah auch wenn ich bei Plugin_cycle =0 schreib wird es trotzdem nach den globalen 300s ausgeführt... OK
                Nicht ganz

                Das Problem ist nicht das Plugin selbst. Wenn du da eine Zykluszeit von 0 einträgst, wird das Plugin wirklich nur dann ausgeführt wenn eine GA auslöst.

                ABER... Für den 1-Wire gilt ebenfalls ein globaler Sendezyklus von 300s. Das bedeutet, dass die aktuellen Werte der IButton alle 300s auf den BUS gesendet werden. Das hat widerum zur folge dass alle 300s, 4x das Plugin aufgerufen wird, da alle 4 GA's aktualisiert werden. Das ist aber nicht so schlimm. Man muss diese Eigenheit einfach bedenken und entsprechende Mechanismen im Plugin einbauen
                Gruss Patrik alias swiss

                Kommentar


                  #38
                  Ah OK danke für die erklärung!!

                  Noch eine Frage (vermutlich an makki)
                  Das eib.log sagt folgenndes:
                  Code:
                  07:23:41.462,A_GroupValue_Write,0.0.0,13/2/3,00,0,DPT_Bool,1.002,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:41.779,A_GroupValue_Write,0.0.0,13/2/2,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:41.929,A_GroupValue_Write,0.0.0,13/2/4,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.033,A_GroupValue_Write,0.0.0,13/2/1,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.124,A_GroupValue_Write,0.0.0,13/2/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.126,A_GroupValue_Write,0.0.0,13/2/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.133,A_GroupValue_Write,0.0.2,5/4/10,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.135,A_GroupValue_Write,0.0.4,3/3/1,00,0,DPT_Switch,1.001,0,low,6,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.138,A_GroupValue_Write,0.0.0,13/2/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.781,A_GroupValue_Write,0.0.0,13/2/3,01,1,DPT_Bool,1.002,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:42.923,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:43.164,A_GroupValue_Write,0.0.0,13/2/1,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:43.308,A_GroupValue_Write,0.0.0,13/2/4,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 07:23:43.415,A_GroupValue_Write,0.0.0,13/2/0,01,1,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19
                  von 13/2/1 bis 13/2/4 sind die I-buttons.
                  13/2/0 ist meine Anwesenheit

                  Warum werden die I-buttons alle auf 0 gesetzt und danach wieder auf 1? dann is klar dass die Anwesenheit ausgeht... Um die Uhrzeit war bei mir im Haus noch gar nix los. (8:00 aufgestanden)

                  Gruß

                  Edit:
                  auch hier kann man anhand von einem I-Button schön erkennen das da ab und zu ne 0 rein kommt. ist bei den 3 anderen genauso.
                  Code:
                  2011-09-19 06:27:13.898,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:32:14.537,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:36:03.993,A_GroupValue_Write,0.0.0,13/2/2,00,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:36:05.244,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:41:06.317,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:46:10.073,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:51:07.632,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 06:56:08.853,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:01:08.926,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:06:10.230,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:11:11.344,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:16:11.493,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:21:12.326,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:23:41.779,A_GroupValue_Write,0.0.0,13/2/2,00,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:23:42.923,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:28:44.034,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:33:46.551,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:38:44.576,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:43:44.842,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:48:45.718,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:53:46.402,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 07:58:46.410,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:03:47.776,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 08:08:48.464,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:13:49.025,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:18:49.094,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:23:49.652,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:28:49.945,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:33:51.091,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:38:51.938,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:43:52.335,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:48:53.150,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:51:53.299,A_GroupValue_Write,0.0.0,13/2/2,00,,,,0,low,7,T_DATA_XXX_REQ,0 
                  2011-09-19 08:53:12.460,A_GroupValue_Write,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  auch hier war keiner mehr wach:
                  Code:
                  01:11:05.112,A_GroupValue_Read,0.0.0,13/2/0,00,0,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.115,A_GroupValue_Response,0.0.0,13/2/0,01,1,DPT_Switch,1.001,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.117,A_GroupValue_Read,0.0.0,13/2/3,00,0,DPT_Bool,1.002,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.181,A_GroupValue_Response,0.0.0,13/2/3,01,1,DPT_Bool,1.002,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.226,A_GroupValue_Read,0.0.0,13/2/1,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.266,A_GroupValue_Response,0.0.0,13/2/1,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.304,A_GroupValue_Read,0.0.0,13/2/4,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.342,A_GroupValue_Response,0.0.0,13/2/4,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.382,A_GroupValue_Read,0.0.0,13/2/2,00,,,,0,low,7,T_DATA_XXX_REQ,0
                  2011-09-19 01:11:05.485,A_GroupValue_Response,0.0.0,13/2/2,01,,,,0,low,7,T_DATA_XXX_REQ,0
                  das könnte auch noch von bedeutung sein:
                  Code:
                  Sep 19 06:25:59 wiregate225 syslog-ng[1754]: Configuration reload request received, reloading configuration;
                  Sep 19 06:26:59 wiregate225 kernel: [140706.352196] hiddev96hidraw0: USB HID v1.01 Device [ALBRECHT JUNG GMBH & CO. KG KNX-USB Data Interface] on u$
                  Sep 19 06:27:02 wiregate225 kernel: [140708.601283] hiddev96hidraw0: USB HID v1.01 Device [ALBRECHT JUNG GMBH & CO. KG KNX-USB Data Interface] on u$
                  Sep 19 06:27:04 wiregate225 /usr/sbin/wiregated.pl: INFO - eibd connection lost - retrying
                  Sep 19 06:27:09 wiregate225 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib
                  Sep 19 06:27:48 wiregate225 /usr/sbin/wiregated.pl: WARN - Thread EIB-Plugins timed out - cause:normally
                  Sep 19 06:27:48 wiregate225 /usr/sbin/wiregated.pl: WARN - Thread EIB-Plugins caused main exit
                  Sep 19 06:27:49 wiregate225 /usr/sbin/wiregated.pl: INFO - Main caught SIGTERM, exiting
                  Sep 19 06:28:03 wiregate225 /usr/sbin/wiregated.pl: INFO - *** reading config
                  Sep 19 06:28:04 wiregate225 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib
                  Sep 19 06:28:06 wiregate225 /usr/sbin/wiregated.pl: INFO - No DS9490 found - owserver restart..
                  Sep 19 07:32:59 wiregate225 kernel: [144666.169943] hiddev96hidraw0: USB HID v1.01 Device [ALBRECHT JUNG GMBH & CO. KG KNX-USB Data Interface] on u$
                  Sep 19 07:33:01 wiregate225 kernel: [144668.374158] hiddev96hidraw0: USB HID v1.01 Device [ALBRECHT JUNG GMBH & CO. KG KNX-USB Data Interface] on u$
                  Sep 19 07:33:03 wiregate225 /usr/sbin/wiregated.pl: INFO - eibd connection lost - retrying
                  Sep 19 07:33:08 wiregate225 /usr/sbin/wiregated.pl: INFO - connected to eibd local:/tmp/eib
                  Sep 19 07:35:45 wiregate225 /usr/sbin/wiregated.pl: WARN - Thread EIB-Plugins timed out - cause:normally
                  Sep 19 07:35:46 wiregate225 /usr/sbin/wiregated.pl: WARN - Thread EIB-Plugins caused main exit
                  Sep 19 07:35:46 wiregate225 /usr/sbin/wiregated.pl: INFO - Main caught SIGTERM, exiting
                  Das geht laut log den ganzen Tag so dahin. ca alle 2h wiederholt sich dieser block

                  Kommentar


                    #39
                    Um die geschriebenen 0en zu übergehen, dachte ich man könnte einen timer mit einbauen, das die stati der buttons eine gewisse Zeitlang 0 sein müssen.
                    Emax hat mir ein paar tipps gegeben, die ich versuche umzusetzten.
                    Hier mein aktueller status ohne timer:

                    Code:
                    ##########################################################
                    
                    #################################################################
                    # do not change anything below, all config stays above
                    #################################################################
                    ## GA´s
                    my $schwarz= '13/2/1';
                    my $blau= '13/2/2';
                    my $gelb= '13/2/4';
                    my $rot = '13/2/3';
                    my $Anwesenheit = '13/2/0';
                    my $begruessung = '13/2/5';
                    
                    # subscribe plugin and call it only when necessary, script will be activated if telegrams to the deffined GA are send.
                    $plugin_subscribe{$schwarz}{$plugname} = 1;
                    $plugin_subscribe{$gelb}{$plugname} = 1;
                    $plugin_subscribe{$blau}{$plugname} = 1;
                    $plugin_subscribe{$rot}{$plugname} = 1;
                    $plugin_info{$plugname.'_cycle'} = 0;
                    
                    # ein Array der Objecte mit definierten namen, und den dazugehörigen GA´s
                    my @AlleButtons;
                    push @AlleButtons, {besitzer => "Elisa", name => "rot", GA => "13/2/3"};
                    push @AlleButtons, {besitzer => "Volker", name => "schwarz", GA => "13/2/1"};
                    push @AlleButtons, {besitzer => "Samuel", name => "blau", GA => "13/2/2"};
                    push @AlleButtons, {besitzer => "Christina", name => "gelb", GA => "13/2/4"};
                    
                     
                     
                     # Plugin für jedes oben definiertes Element ausführen
                    foreach my $element (@AlleButtons) {
                    #nur ausführen wenn das Ziel die definierte GA ist und das Telegram ein Write Telegram ist und kein Read oder Response Telegram. Der Status der Elemente wird unten im Plugin "gemerkt"
                         if ($msg{'dst'} eq ($element->{GA}) && ($msg{'apci'} eq 'A_GroupValue_Write') && knx_read($msg{'dst'},0,1) != $plugin_info{$plugname.'_' . ($element->{name}) })
                         {
                          ## Status der GA´s holen
                         my $status = knx_read($Anwesenheit ,0,1);
                         my $rot_stat = knx_read($rot,0,1);
                         my $schwarz_stat = knx_read($schwarz,0,1);
                         my $gelb_stat = knx_read($gelb,0,1);
                         my $blau_stat = knx_read($blau,0,1);
                         ## definierte if else anweisung die ausgeführt werden soll nach bestimmten zuständen
                              if (($msg{'value'} == 01) && ($status == 00)) {
                             knx_write($Anwesenheit ,1,1);
                              knx_write($begruessung,1,1);
                             plugin_log($plugname,"name: " . $status);
                              }
                             
                              
                              elsif (($msg{'value'} == 00) && ($rot_stat == 00) && ($gelb_stat == 00) && ($schwarz_stat == 00) && ($blau_stat == 00)) {                 
                               knx_write($Anwesenheit ,0,1);
                               plugin_log($plugname,"name: " . $element->{name} . "; aus: ");
                              }
                              
                        #merken der Zustände:
                        $plugin_info{$plugname.'_' . ($element->{name}) } = knx_read($element->{GA} ,0,1);
                        $plugin_info{$plugname.'_' . ($Anwesenheit) } = knx_read($Anwesenheit ,0,1);
                        }
                     # wenn keine der oben genannten bedingungen zutrifft dann das nächste Element abarbbeiten
                       else {
                              next;
                         }
                        
                    }
                    Wenn ich das richtig verstanden habe müsste ich aus der Zeile:
                    Code:
                     elsif (($msg{'value'} == 00) && ($rot_stat == 00) && ($gelb_stat == 00) && ($schwarz_stat == 00) && ($blau_stat == 00)) {                 
                               knx_write($Anwesenheit ,0,1);
                               plugin_log($plugname,"name: " . $element->{name} . "; aus: ");
                              }
                    ein:

                    ## nö das geht nicht habs gerade getestet

                    machen??
                    so müsste das 30sek später ausgeführt werden oder?

                    Gruß

                    Kommentar

                    Lädt...
                    X