FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Otto123 am 15 November 2017, 08:05:40

Titel: [gelöst] Macht 95_holiday was falsch?
Beitrag von: Otto123 am 15 November 2017, 08:05:40
Guten Morgen,

bei meinem FHEM ist offenbar heute Buss und Bettag  :o

Zumindest steht $we auf 1
Konfiguration:
holiday2we ist aktiv und in meiner holiday Datei steht# Siehe auch
# http://de.wikipedia.org/wiki/Feiertage_in_Deutschland

1 01-01 Neujahr
1 05-01 Tag der Arbeit
1 10-03 Tag der deutschen Einheit
1 10-31 Reformationstag
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag

2 -2 Karfreitag
2  1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingsten
# 2 60 Fronleichnam

# (1 Mittwoch vor dem Nov, 23rd)
5 -1 Wed 11 23 Buss und Bettag


Kann ich der Sache irgendwie auf den Grund gehen?

Gruß Otto
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: pte am 15 November 2017, 08:33:49
kann ich bestätigen, bei mir auch
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: pte am 15 November 2017, 09:36:28
Fehler liegt wohl im Modul 95_holiday.pm

Ich glaube, die Annahme, dass mktime auch für den Tag des Monates mit 0 zu zählen beginnt ist falsch.

    } elsif($l =~ m/^5/) { # nth weekday since MM-DD / before MM-DD
      my @a = split(" +", $l, 6);
      # arguments: 5 <distance> <weekday> <month> <day> <name>
      my %wd = ("Sun"=>0, "Mon"=>1, "Tue"=>2, "Wed"=>3,
                "Thu"=>4, "Fri"=>5, "Sat"=>6);
      my $wd = $wd{$a[2]};
      if(!defined($wd)) {
        Log 1, "Wrong weekday spec: $l";
        next;
      }
      next if $wd != $fd[6]; # check wether weekday matches today
      my $yday=$fd[7];
      # create time object of target date - mktime counts months and their
      # days from 0 instead of 1, so subtract 1 from each
      my $tgt=mktime(0,0,1,$a[4]-1,$a[3]-1,$fd[5],0,0,-1);                            <------ hier sollte stehen:      mktime(0,0,1,$a[4],$a[3]-1,$fd[5],0,0,-1)
      my $tgtmin=$tgt;
      my $tgtmax=$tgt;
      my $weeksecs=7*24*60*60; # 7 days, 24 hours, 60 minutes, 60seconds each
      my $cd=mktime(0,0,1,$fd[3],$fd[4],$fd[5],0,0,-1);
      if ( $a[1] =~ /^-([0-9])*$/ ) {
        $tgtmin -= $1*$weeksecs; # Minimum: target date minus $1 weeks
        $tgtmax = $tgtmin+$weeksecs; # Maximum: one week after minimum
# needs to be lower than max and greater than or equal to min
        if( ($cd ge $tgtmin) && ( $cd lt $tgtmax) ) {
          $found=$a[5];
}
      } elsif ( $a[1] =~ /^\+?([0-9])*$/ ) {
        $tgtmin += ($1-1)*$weeksecs; # Minimum: target date plus $1-1 weeks
        $tgtmax = $tgtmin+$weeksecs; # Maximum: one week after minimum
# needs to be lower than or equal to max and greater min
        if( ($cd gt $tgtmin) && ( $cd le $tgtmax) ) {
          $found=$a[5];
}
      } else {
        Log 1, "Wrong distance spec: $l";
        next;
      }
    }
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: nils_ am 15 November 2017, 09:37:35
da ist fhem wohl eine woche zu früh.
in 2017 ist er am 22.11., oder?
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: Otto123 am 15 November 2017, 09:53:02
Exakt. Und pte bestätigt meine Vermutung, dass FHEM einen Tag falsch rechnet weil der 1. Mittwoch vor dem 23.11. dieses Jahr nur einen Tag davor liegt.  ;)
Danke für die Aufklärung.

Mal schauen was Rudi dazu sagt  8)

Gruß Otto
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: Elektrolurch am 15 November 2017, 10:45:17
Kann ich auch bestätigen, denn meine Rollos fahren auf Feiertagsmodus.
Ok. Dann brauche ich nicht weiter suchen und warte auf den Patch.

Elektrolurch
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: rudolfkoenig am 15 November 2017, 10:53:09
ZitatMal schauen was Rudi dazu sagt
Rudi sagt, dass pte Recht hat.
Der Bug ist 8 Jahre alt, statistisch gesehen haette es schon frueher auffallen muessen.
Habs gefixt und eingecheckt.
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: pte am 15 November 2017, 11:25:53
mit der Statistik ist das so eine Sache.
Feiertage nach Regel "5" sind ja eh nicht viele und für den Buss und Bettag war das kritische Datum nach meiner Recherche letztmalig 2006.
Und wer hatte da in Sachsen schon ein SmartHome.  ;D
Der Rest Deutschlands muss doch da sowieso arbeiten. :)
Danke für die schnelle Reparatur.
Titel: Antw:Macht 95_holiday was falsch?
Beitrag von: nils_ am 15 November 2017, 13:02:12
Zitat von: pte am 15 November 2017, 11:25:53
Feiertage nach Regel "5" sind ja eh nicht viele und für den Buss und Bettag war das kritische Datum nach meiner Recherche letztmalig 2006.
Und wer hatte da in Sachsen schon ein SmartHome.  ;D

evtl. Otto :D
Titel: Antw:[gelöst] Macht 95_holiday was falsch?
Beitrag von: Otto123 am 15 November 2017, 13:06:27
In Sachsen sind 117 Installationen "gemeldet"  8)
https://fhem.de/stats/statistics.html