FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jupp am 11 Februar 2014, 22:21:01

Titel: (Gelöst) Feiertagsabfrage für beliebiges Datum ($WE)
Beitrag von: Jupp am 11 Februar 2014, 22:21:01
Hallo zusammen,
ich versuche gerade meineHeizungssteuerung zu automatisieren und möchte dabei immer eine Woche im voraus planen. In der Variable $WE kann ich abfragen, ob heute ein Wochentag ist oder nicht. Dazu habe ich mir einen eigene Feiertagskalender über holiday2we gebaut. Das klappt auch wunderbar. Gibt es eine Möglichkeit, diese Abfrage für ein beliebiges Datum durchzuführen?

Danke und viele Grüße
Jupp
Titel: Antw:Feiertagsabfrage für beliebiges Datum ($WE)
Beitrag von: Jupp am 11 Februar 2014, 22:32:32
...und weil es so schön ist gebe ich mir gerade selbst mal einen Lösungshinweis.
Ich denke, dass ich über meinen Feiertagskalender und ein entsprechendes GET <holiday2we> <MM-DD> schonmal die Auskunft bekomme, ob es ein Feiertag ist oder nicht. In einer eigenen Perl Subroutine könnte man dann eine Abfrage auf Samstag oder Sonntag machen, verknüpft die beiden Infos und gibt dann seine eigene $WE als Rückgabeparameter raus.
Das könnte doch so klappen, oder?

Grüße
Jupp
Titel: Antw:Feiertagsabfrage für beliebiges Datum ($WE)
Beitrag von: Groby am 12 Februar 2014, 07:04:53
Hallo Jupp,

ich denke was Du suchst ist das hier:

holiday2we
If this attribute is set, then the $we variable will be true, if the value of the holiday variable referenced by this attribute is not none.

Example:
attr global holiday2we hessen

MfGroby
Titel: Antw:Feiertagsabfrage für beliebiges Datum ($WE)
Beitrag von: Jupp am 12 Februar 2014, 19:37:13
Ja genau, das passt. Daraus kann ich mir eine passende perl-Funktion zusammen basteln  :)

Vielen Dank
Jupp
Titel: Antw:(Gelöst) Feiertagsabfrage für beliebiges Datum ($WE)
Beitrag von: Jupp am 12 Februar 2014, 23:14:08
Trotz meiner eher rudimentären Perl-Kenntnisse habe ich es tatsächlich geschafft eine Subroutine zu bauen, die mir für ein ebliebiges Datum ausgibt, ob es ein Feiertag bzw. Wochende ist/
# Prüfung auf Feiertag mit Offset
sub getFT {
my $Offset = shift;

# Datum berechnen
my $datum = time + ( $Offset * 60 * 60 * 24 );
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime($datum);
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
my $FT = fhem("get NRW ".$Monat."-".$Monatstag,1) eq "none" ? 0 : 1;
if ( ( $Wochentag == 0 || $Wochentag == 6 ) && $FT == 0 ) {
$FT = 1;
}
return($FT);
}


Viele Grüße und danke für die Anregung
Jupp