Ankündigung

Einklappen
Keine Ankündigung bisher.

Feiertage im Misterhouse

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

    #16
    Also habe ich hiermit
    Code:
    # Dachfensterlüftungstellung Logik
    if (state $Temperatur_Aussen > 23 && state $Helligkeit_Sued > 45000) {
    set $Lueftungsfreigabe ON;
    }
    eine ständig durchlaufende Schleife festgelegt!

    Um dieses zu umgehen und auf einen Zeitintervall zu kommen sollte ich das dan so machen?:
    Code:
    # Dachfensterlüftungstellung Logik
    if (new_minute 10 && state $Temperatur_Aussen > 23 && state $Helligkeit_Sued > 45000) {
    set $Lueftungsfreigabe ON;# every 10 minutes
    }

    Kommentar


      #17
      Wie schon gesagt, am Besten die Schleife um diverse Logiken setzten, die dann alle nur im 10 Minuten Rhythmus (oder was auch immer adäquat ist) abgefragt werden.
      Ansonsten wird zwar der set-Befehl nur alle 10 Minuten durchgeführt, aber die Abfrage ob es Draussen wärmer als 23° ist etc. wird x-mal pro Sekunde durchgeführt.
      Gruß,
      Marc

      Kommentar


        #18
        Hi,

        ich dann mal ein wenig im I-Net gesucht und ein Perl-Script zur Berechnung der Feiertage gefunden (Dann muß man nicht jedes Jahr neu dran).

        Leider funtzt das nicht so richtig und ich habe dann mal versucht Zeile für Zeile zu testen. Einiges geht, einiges nicht??

        Dies z.B. geht
        PHP-Code:
        use vars ('$jahr''$feiertage''$ostersonntag''$sekundenjetag'$advent);
        if (
        $Startup) {
        $sekundenjetag 24 60 60
        open(FT,">>$config_parms{data_dir}/weather/Feiertage.txt");
        print 
        FT "$sekundenjetag\n";
        close(FT);

        Dies geht dann nicht ...
        PHP-Code:
        use vars ('$jahr''$feiertage''$ostersonntag''$sekundenjetag'$advent);
        if (
        $Startup) {
        $sekundenjetag 24 60 60
        $advent gmmktime(00011262011)
        open(FT,">>$config_parms{data_dir}/weather/Feiertage.txt");
        print 
        FT "$advent und $sekundenjetag\n";
        close(FT);

        ... und es kommt die Fehlermeldung
        06/18/11 02:09:28 PM: Global symbol "$advent" requires explicit package name at (eval 438) line 364.
        Originalscript!
        PHP-Code:
        function Feiertage($jahr) { 
            
        $sekundenjetag 24 60 60
            
        $ostersonntag gmmktime(000321$jahr) + easter_days($jahr) * (24 3600); //Ostersonntag als UNIX-Zeitstempel 
        ODER $ostersonntag gmmktime(1200321$jahr) + easter_days($jahr) * (24 3600); //Ostersonntag als UNIX-Zeitstempel  
         
            
        global $feiertag
            if(!
        $ostersonntag) { 
                return 
        false
            } else { 
                
        $advday date('w'gmmktime(0001126$jahr)); 
                
        $advent gmmktime(0001126$jahr) + (($advday == $advday) * $sekundenjetag); 
                
        $feiertag['Neujahr']                   = gmmktime(000,  1,  1$jahr); 
                
        $feiertag['Heilige Drei Könige']       = gmmktime(000,  1,  6$jahr); 
                
        $feiertag['Rosenmontag']               = $ostersonntag - (48 $sekundenjetag); 
                
        $feiertag['Fastnacht']                 = $ostersonntag - (47 $sekundenjetag); 
                
        $feiertag['Aschermittwoch']            = $ostersonntag - (46 $sekundenjetag); 
                
        $feiertag['Karfreitag']                = $ostersonntag - ($sekundenjetag); 
                
        $feiertag['Ostersonntag']              = $ostersonntag
                
        $feiertag['Ostermontag']               = $ostersonntag + ($sekundenjetag); 
                
        $feiertag['Tag der Arbeit']            = gmmktime(000,  5,  1$jahr); 
                
        $feiertag['Christi Himmelfahrt']       = $ostersonntag + (39 $sekundenjetag); 
                
        $feiertag['Pfingstsonntag']            = $ostersonntag + (49 $sekundenjetag); 
                
        $feiertag['Pfingstmontag']             = $ostersonntag + (50 $sekundenjetag); 
                
        $feiertag['Fronleichnam']              = $ostersonntag + (60 $sekundenjetag); 
                
        $feiertag['Mariä Himmelfahrt']         = gmmktime(000,  815$jahr); 
                
        $feiertag['Tag der deutschen Einheit'] = gmmktime(00010,  3$jahr); 
                
        $feiertag['Reformationstag']           = gmmktime(0001031$jahr); 
                
        $feiertag['Allerheiligen']             = gmmktime(00011,  1$jahr); 
                
        $feiertag['Buß- und Bettag']           = $advent - (11 $sekundenjetag); 
                
        $feiertag['1. Advent']                 = $advent
                
        $feiertag['2. Advent']                 = $advent + ($sekundenjetag); 
                
        $feiertag['3. Advent']                 = $advent + (14 $sekundenjetag); 
                
        $feiertag['4. Advent']                 = $advent + (21 $sekundenjetag); 
                
        $feiertag['Heiligabend']               = gmmktime(0001224$jahr); 
                
        $feiertag['1. Weihnachtsfeiertag']     = gmmktime(0001225$jahr); 
                
        $feiertag['2. Weihnachtsfeiertag']     = gmmktime(0001226$jahr); 
                
        $feiertag['Silvester']                 = gmmktime(0001231$jahr); 
                return 
        $feiertag
            } 

        Hat evtl jemand einen Tip?? Die Variable habe ich doch definiert?!

        VG
        Joerg

        Kommentar


          #19
          Zitat von JoergA Beitrag anzeigen
          PHP-Code:
          use vars ('$jahr''$feiertage''$ostersonntag''$sekundenjetag'$advent); 
          Hoi Joerg

          Fehlen da nicht zwei Hochkomma?
          PHP-Code:
          use vars ('$jahr''$feiertage''$ostersonntag''$sekundenjetag''$advent'); 
          Grüsse Bodo
          Fragen gehören ins Forum, und nicht in mein Postfach;
          EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

          Kommentar


            #20
            Hallo Bodo,

            japp

            Mist, der Texteditor zeigt dies nicht so schön farblich an, muß wohl doch mal einen anderen Editor suchen.

            Nun kommt jedoch ...
            06/18/11 02:36:20 PM: syntax error at (eval 438) line 3462, near ")
            Fehlt für gmmktime(0, 0, 0, 11, 26, 2011)evtl. noch etwas?? Ist dies evtl. kein Standardbefehl?

            VG
            Joerg

            Kommentar


              #21
              Hoi
              PHP-Code:
              $advent gmmktime(00011262011
              fehlt ein Semikolon.
              Grüsse Bodo
              Fragen gehören ins Forum, und nicht in mein Postfach;
              EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

              Kommentar


                #22
                Olla,

                mühsam nährt sich das Eichhörnchen :-/

                Undefined subroutine: main::gmmktime
                bei
                PHP-Code:
                $advent gmmktime(00011262011); 

                Kommentar


                  #23
                  Tja nach
                  PHP-Code:
                  sub gmmktime() {
                    
                  bla;

                  suchen und reinkopieren...
                  Grüsse Bodo
                  Fragen gehören ins Forum, und nicht in mein Postfach;
                  EibPC-Fan; Wiregate-Fan; Timberwolf-Fan mit 30x 1-Wire Sensoren;

                  Kommentar


                    #24
                    Zitat von JoergA Beitrag anzeigen
                    PHP-Code:
                    $advent gmmktime(00011262011); 
                    gmmktime gibt es vermutlich nur in php, warum verwendest du nicht mktime stattdessen?
                    Gruß,
                    Marc

                    Kommentar


                      #25
                      Zitat von aggie89go Beitrag anzeigen
                      gmmktime gibt es vermutlich nur in php, warum verwendest du nicht mktime stattdessen?
                      Da ich leider keine große Ahnung von Perl habe, versuche ich mit existierenden Scripten zu lernen und diese an meine Umgebung anzupassen.

                      Das o.g Script hatte ich im I-Net gefunden und versuchte dies nun in MH zu integrieren.

                      Leider bringt auch mktime einen Fehler
                      Undefined subroutine: main::mktime

                      Kommentar


                        #26
                        Hi,

                        neues Script, neues Glück :-)

                        PHP-Code:
                        use vars ('$ostersonntag');
                        if (
                        $Startup) {
                        sub now {
                         
                        my $FORMAT=$_[0];
                        my $NOW=timelocal(localtime);
                        my $y=sprintf("%02d",(localtime($NOW))[5]-100);
                        my $Y=sprintf("%04d",(localtime($NOW))[5]+1900);
                        my $m=sprintf("%02d",(localtime($NOW))[4]+1);
                        my $d=sprintf("%02d",(localtime($NOW))[3]);
                        my $H=sprintf("%02d",(localtime($NOW))[2]);
                        my $M=sprintf("%02d",(localtime($NOW))[1]);
                        my $S=sprintf("%02d",(localtime($NOW))[0]);
                        $FORMAT =~ s/%y/$y/;
                        $FORMAT =~ s/%Y/$Y/;
                        $FORMAT =~ s/%m/$m/;
                        $FORMAT =~ s/%d/$d/;
                        $FORMAT =~ s/%H/$H/;
                        $FORMAT =~ s/%M/$M/;
                        $FORMAT =~ s/%S/$S/;
                        return 
                        $FORMAT;
                        }
                         
                        sub ostern
                        {
                        my $X $_[0];
                        my $mon 3;
                        my $K int$X 100 ); 
                        my $M 15 int(( 3*$K+) / ) - int(( 8*$K+13 ) / 25 ); 
                        my $S int(( 3*$K+) / ); 
                        my $A $X 19 
                        my $D = (19*$A+$M) % 30 
                        my $R int$D 29 ) + ( int$D 28 ) - int$D 29 )) * int$A 11 ); 
                        my $OG 21 $D $R
                        my $SZ - ( $X int$X ) + $S) % 
                        my $OE - ( $OG $SZ ) % 7
                        my $OS $OG $OE;
                        $mon if $OS 31;
                        $OS $OS 31 if $OS 31;
                        return 
                        "$OS.$mon.$X";
                        }
                        $ostersonntag ostern(now("%Y"));
                        open(FT,">>$config_parms{data_dir}/weather/Feiertage.txt");
                        print 
                        FT "Ostersonntag $ostersonntag\n";
                        close(FT);

                        liefert mir nun den Ostersonntag zurück

                        Dann mal schauen wie wir dies nun nutzen um die anderen Feiertage berechnen.

                        VG
                        Joerg



                        PS:

                        now kennt folgende Parameter (die sehr eng an das Unix-date-Kommando angelehnt sind):
                        • %Y: Jahreszahl vierstellig
                        • %y: Jahreszahl zweistellig
                        • %m: Monatsnummer (1-12)
                        • %d: Tag (1-31)
                        • %H: Stunde (0-23)
                        • %M: Minute (0-59)
                        • %S: Sekunde (0-59)

                        Kommentar


                          #27
                          Hallo und guten Morgen ;-)

                          Leider hänge ich nun an dem Vergleich mit dem aktuellen Datum um dann den $Holiday zu setzen.

                          Meine Idee war

                          If date_now = $Ostersonntag $Holiday = 'Ostersonntag'

                          oder

                          If date_now = $Ostersonntag+1 $Holiday = 'Ostermontag'

                          aber das mir zurück gelieferte Datum ist im folgenden Format "24.4.2011" wobei date_now "Sun, Jun 19" ausgibt.

                          Wer könnte mit einen Tip geben wie ich das Datum umformatiere und vergleiche?

                          Das ganze würde ich dann in eine $new_Day Schleife packen, oder gibt es hier eine andere Variante?

                          Viele Grüße und Dank,
                          Joerg

                          Kommentar


                            #28
                            Hallo zusammen,

                            leider klappt die Logik doch nicht so ganz

                            Ich habe folgenden Code
                            PHP-Code:
                            if (($Startup) || ($New_Day)) {
                            open(FT,">>$config_parms{data_dir}/weather/Feiertage.txt");
                            print 
                            FT "Wochentag ??: $Weekday\n";
                            print 
                            FT "Wochenende ??: $Weekend\n";
                            use 
                            POSIX qwstrftime );
                            my $mmddyyyy strftime('%d-%m-%Y',localtime);
                            print 
                            FT "Heute ist: $mmddyyyy\n";
                             
                            if (
                            $Holiday) {
                            print 
                            FT "Heute ist ein Feiertag: $Holiday\n";
                            } else {
                            print 
                            FT "Heute ist KEIN Feiertag\n";
                            }
                            close(FT); 
                            Somit sollte eigentlich zu Beginn eines neuen Tages mit $New_Day ins LogFiles geschrieben werden, ob denn ein Feiertag ist oder auch nicht.

                            Folgende Feiertage habe ich in der mh.ini angegeben

                            holiday_dates =

                            1/1 Neujahr,
                            5/1 Tag der Arbeit,
                            6/12 Pfingstsonntag, 6/13 Pfingstmontag, 6/23 Fronleichnam,
                            10/3 Tag der Deutschen Einheit,
                            11/1 Allerheiligen,
                            12/25 1. Weihnachtstag, 12/26 2. Weihnachtstag,
                            Somit ist der heutige Feiertag angegeben.

                            Aber im Log steht

                            Wochentag ??: 1
                            Wochenende ??: 0
                            Heute ist: 22-06-2011
                            Heute ist KEIN Feiertag


                            Nach einem Neustart steht von MH steht dann auf einmal ein anderes Datum?! Aber immer noch kein Feiertag

                            Wochentag ??: 1
                            Wochenende ??: 0
                            Heute ist: 23-06-2011
                            Heute ist KEIN Feiertag


                            Viele Grüße
                            Joerg

                            Kommentar


                              #29
                              Zitat von JoergA Beitrag anzeigen
                              leider klappt die Logik doch nicht so ganz
                              Schreibe auch mal den Status von $Date_Now 'raus, vielleicht ist ja eine falsche Zeitzone o.ä. eingestellt.
                              Gruß,
                              Marc

                              Kommentar


                                #30
                                Hallo Marc,

                                ich habe nun noch wie geraten den Code
                                PHP-Code:
                                if (($Startup) || ($New_Day)) {
                                open(FT,">>$config_parms{data_dir}/weather/Feiertage.txt");
                                print 
                                FT "Wochentag ??: $Weekday\n";
                                print 
                                FT "Wochenende ??: $Weekend\n";
                                print 
                                FT "DateNow : $Date_Now\n";
                                print 
                                FT "TimeNow : $Time_Now\n";
                                use 
                                POSIX qwstrftime );
                                my $mmddyyyy strftime('%d-%m-%Y',localtime);
                                print 
                                FT "Heute ist: $mmddyyyy\n";
                                if (
                                $Holiday) {
                                print 
                                FT "Heute ist ein Feiertag: $Holiday\n";
                                } else {
                                print 
                                FT "Heute ist KEIN Feiertag, oder $Holiday\n";
                                }
                                close(FT);

                                Ergänzt.

                                mh.ini
                                6/12 Pfingstsonntag, 6/13 Pfingstmontag, 6/24 Fronleichnam,
                                24/6 Falsch,

                                Output:
                                Wochentag ??: 1
                                Wochenende ??: 0
                                DateNow : Fri, Jun 24
                                TimeNow : 0:26
                                Heute ist: 24-06-2011
                                Heute ist KEIN Feiertag, oder

                                Ich habe auch bereits in der mh.ini mal mmddyy durch ddmmyy und 12 oder 24 h Anzeige getauscht?!


                                VG
                                Joerg

                                Kommentar

                                Lädt...
                                X