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
kann ich bestätigen, bei mir auch
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;
}
}
da ist fhem wohl eine woche zu früh.
in 2017 ist er am 22.11., oder?
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
Kann ich auch bestätigen, denn meine Rollos fahren auf Feiertagsmodus.
Ok. Dann brauche ich nicht weiter suchen und warte auf den Patch.
Elektrolurch
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.
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.
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
In Sachsen sind 117 Installationen "gemeldet" 8)
https://fhem.de/stats/statistics.html