Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Schaltzeiten im Plugin

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

    [wiregate] - √ - Schaltzeiten im Plugin

    Hallo
    Ich habe in einem Plugin Schaltzeiten festgelegt.
    Die Schaltzeiten sollen aber auch von 09:00 - 21:00 zu jeder vollen viertel Stunde stattfinden.
    Code:
    $plugin_info{$plugname.'_cycle'} = 60;
    my ($sek,$min,$std) = localtime(time);
     if($std == 9 or $std == 10 or $std == 11 or $std == 12 or $std == 13 or $std == 14 or $std == 15 or $std == 16 or $std == 17 or $std == 18 or $std == 19 or $std == 20 or $std == 21){
       if($min == 00 or $min == 15 or $min == 30 or $min == 45){
          # mach was
       } 
    }
    Es kommt immer wieder mal vor das das Plugin zu der angegebenen Schaltzeit gar nicht aufgerufen wird.
    Kann man auch in der Plugin Logdatei sehen.

    Setze ich "$plugin_info{$plugname.'_cycle'} = 20;" so wird das Plugin mehrmals in der Minute augerufen.

    Ich habe auch schon im Plugin "Schaltuhr" geschaut , das ja alle 20sec. aufgerufen wird.
    Habe da aber keine Lösung gefunden.

    Wie löst man das am besten?

    Gruß NetFritz
    KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
    WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
    PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

    #2
    Das einfachste wäre, sich den Zeitstempel meim auslösen der Schalthandlung zwischen zu speichern und beim nächsten ausführen des Plugins zu prüfen ob mindestens 1 Minute vergangen ist.
    Gruss Patrik alias swiss

    Kommentar


      #3
      Hallo
      Daran habe ich auch schon gedacht.
      Wie wird den das im Schaltuhr Plugin gelöst?
      Gruß NetFritz
      KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
      WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
      PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

      Kommentar


        #4
        Zitat von NetFritz Beitrag anzeigen
        $plugin_info{$plugname.'_cycle'} = 60;
        Schaltzeit gar nicht aufgerufen wird.
        Dann aktiviere im Wirgegate das Senden der Uhrzeit auf den Bus alle 60s und subscribe das Plugin auf die GA (Default "0/7/101").
        Code:
        my $knxtime_ga = "0/7/101";
        my @actionhours = (9..21);
        my @actionminutes = (0,15,30,45);
        
        $plugin_subscribe{$knxtime_ga}{$plugname} = 1;
        if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $knxtime_ga){
          my ($sek,$min,$std) = localtime(time);
          if(grep $_ eq $std, @actionhours){
            if(grep $_ eq $min, @actionminutes){
              return localtime(time);
            }
          }
        }
        Gruß
        Karsten

        Kommentar


          #5
          Im Schaltuhr Plugin von mir wird einfach überprüft, ob die GA schon den Sollzustand hat. Wenn nicht, wird der neue Schaltzustand gesendet. Das funktioniert aber bei deiner Anforderung nicht.

          Da ist es einfacher die zeit des letzten sendens zu prüfen.
          Gruss Patrik alias swiss

          Kommentar


            #6
            Oder du machst es mit einem Trick...

            Code:
            $plugin_info{$plugname.'_cycle'} = 40;
            Dann wird das Plugin auch nur 1 mal pro Minute aufgerufen. Die Gefahr ist dabei Wenn du ein Plugin hast, dass blockiert.

            Desshalb lieber 20 sekunden und über Plugin_last und time() vergleichen
            Gruss Patrik alias swiss

            Kommentar


              #7
              z.B. so:

              Code:
              $plugin_info{$plugname.'_cycle'} = 20;
              
              my ($sek,$min,$std) = localtime(time);
              if(($plugin_info{$plugname.'_time'}+60) >= $plugin_info{$plugname.'_last'}){
                  if($std == 9 or $std == 10 or $std == 11 or $std == 12 or $std == 13 or $std == 14 or $std == 15 or $std == 16 or $std == 17 or $std == 18 or $std == 19 or $std == 20 or $std == 21){
                     $plugin_info{$plugname.'_time'} = time();
                     if($min == 00 or $min == 15 or $min == 30 or $min == 45){
                       # mach was
                     }
                  }
              }
              Ungetestet
              Gruss Patrik alias swiss

              Kommentar


                #8
                Hallo
                Werde das mal Testen.
                Vielen Dank.
                Gruß NetFritz
                KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
                WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
                PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

                Kommentar


                  #9
                  Hatte noch einen kleinen Fehler...

                  Der sollte nun behoben sein. Ist aber noch nicht getestet.
                  Gruss Patrik alias swiss

                  Kommentar


                    #10
                    Hallo
                    @swiss
                    Geht so nicht.
                    Das Plugin wird 3mal pro Minute ausgeführt.
                    Code:
                    2012-06-09 17:27:25.668,viertel_std_werte.pl, 2012-06-09  ,0s,
                    2012-06-09 17:27:46.640,viertel_std_werte.pl, 2012-06-09  ,0s,
                    2012-06-09 17:28:07.323,viertel_std_werte.pl, 2012-06-09  ,0s,
                    Gruß NetFritz
                    KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
                    WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
                    PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

                    Kommentar


                      #11
                      Hallo

                      Das solles es ja auch. Es soll NUR nach dem auslösen des Befehls so lange verzögern, dass eine zweite Auslösung nicht möglich ist. Die 20sekunden Zyklus sind, damit das Plugin auch wirklich sicher ausgeführt wird, auch wenn man Plugins hat, die etwas klemmen.

                      Trozdem hatte das Plugin noch einen kleinen Fehler. Der ist nun behoben. Bei mir in der Testumgebung funktioniert das so:

                      Code:
                      $plugin_info{$plugname.'_cycle'} = 20;
                      
                      my ($sek,$min,$std) = localtime(time);
                      if(($plugin_info{$plugname.'_time'}+60) <= $plugin_info{$plugname.'_last'}){
                          if($std == 9 or $std == 10 or $std == 11 or $std == 12 or $std == 13 or $std == 14 or $std == 15 or $std == 16 or $std == 17 or $std == 18 or $std == 19 or $std == 20 or $std == 21){
                             if($min == 00 or $min == 15 or $min == 30 or $min == 45){
                               # mach was
                               $plugin_info{$plugname.'_time'} = time();
                             }
                          }
                      }
                      Gruss Patrik alias swiss

                      Kommentar


                        #12
                        Hallo
                        So geht es. Danke
                        Gruß NetFritz
                        KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
                        WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
                        PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

                        Kommentar


                          #13
                          Nachfrage

                          Hallo zusammen,

                          ich versuche gerad dieses ganze Plug-In Gedönse irgendwie mal wieder zu verstehen und daher die Frage, kann ich mir das hier angeführte Plug-In leichter umbauen, oder ist es einfacher ein neues Schaltuhr Plug-In zu bauen, wenn man keine andere Anforderung hat, außer:

                          Zu einem Zeitpunkt A (der im Plug-In fest vorgegeben wird) soll der Wert 1 an die GA XX/YY/ZZ gesendet werden und zu einem Zeitpunkt B (ebenfalls fest vorgegeben) soll der Wert 0 an die selbe GA gesendet werden.

                          Eigentlich müßte das doch ein 2 Zeiler sein, ich hab nur keinen blassen Dunst wie der aussehen muss.

                          Danke für Euere hilfe!

                          René

                          Kommentar


                            #14
                            Nö mit 2 Zeilen kommst du nicht durch

                            Aber es führen wie immer viele Wege nach Rom

                            - Du kannst es entweder direkt als Crontab lösen (ganz ohne Plugin gebastel)
                            - Du kannst mein oder das Schaltuhrplugin von emax verwenden (kann genau dass was du wilst und ist leicht zu bedienen)
                            - Du kannst das Rad nochmal ganz neu erfinden. Dann würde ich aber bei den bestehenden "Schaltuhr-Plugins" spicken
                            Gruss Patrik alias swiss

                            Kommentar


                              #15
                              Zitat von swiss Beitrag anzeigen
                              Nö mit 2 Zeilen kommst du nicht durch
                              OK,OK, aber mit vieren, oder ;-)


                              Zitat von swiss Beitrag anzeigen
                              Aber es führen wie immer viele Wege nach Rom

                              - Du kannst es entweder direkt als Crontab lösen (ganz ohne Plugin gebastel)
                              Crontab?????????

                              Zitat von swiss Beitrag anzeigen
                              - Du kannst mein oder das Schaltuhrplugin von emax verwenden (kann genau dass was du wilst und ist leicht zu bedienen)
                              Wo find ich denn da den letzten Stand? Weil das aus diesem Thread hier sagt mir bisher noch gar nix.

                              Zitat von swiss Beitrag anzeigen
                              - Du kannst das Rad nochmal ganz neu erfinden. Dann würde ich aber bei den bestehenden "Schaltuhr-Plugins" spicken
                              Ääääääh, ok, aber neu erfinden will ichs nicht, verstehen aber schon, irgendwann will ich ja auch selbst mal was machen können.

                              Danke schonmal für Deine schnelle Hilfe!

                              René

                              Kommentar

                              Lädt...
                              X