Advent / Weihnachtszeit

Begonnen von mi.ke, 03 November 2015, 09:15:54

Vorheriges Thema - Nächstes Thema

mi.ke

Tach.

Es gibt zwar schon Lösungen hierfür, aber ich dachte mir, da es ein anderer Weg ist, stell ich's mal zur Verfügung.

Also, Ihr braucht ein at für den Tageswechsel (Vermutlich schon vorhanden)

define Tageswechsel_at at *00:00:01 . . .

einen dummy für die Ausgabe

define Weihnachtszeit dummy

und ein notify zur "Berechnung"


define Weihnachtszeit_n notify Tageswechsel_at {
my $count = ReadingsVal("Weihnachtszeit","count",0);
if ($wday == 0 && ($month == 11 && $mday > 26)||($month == 12 && $mday <= 3)) {fhem("setreading Weihnachtszeit count 1;set Weihnachtszeit 1;attr Weihnachtszeit stateFormat state . Advent")};

if ($wday == 0 && $count > 0 && $count <=4 && $month == 12) {$count = $count + 1}; {fhem("setreading Weihnachtszeit count $count;set Weihnachtszeit $count")};

if ($count == 4 && $month == 1 && $mday > 6) {fhem("deletereading Weihnachtszeit .*;deleteattr Weihnachtszeit stateFormat")};
}



Erläuterung:
erstes WENN : Der 1.Advent ist immer Sonntags und immer nach dem 26.November und vor dem 4.Dezember.
zweites WENN: Die restliche Adventtage (bei 5 habt Ihr Weihnachten verpennt)
drittes WENN: zurücksetzen

Wer es brauchen kann, bitte schön.

Cheers

mi.ke
FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

betateilchen

Zitat von: mi.ke am 03 November 2015, 09:15:54
Erläuterung:
erstes WENN : Der 1.Advent ist immer Sonntags und immer nach dem 26.November und vor dem 4.Dezember.
zweites WENN: Die restliche Adventtage (bei 5 habt Ihr Weihnachten verpennt)
drittes WENN: zurücksetzen


  • der 4. Advent ist immer am Sonntag vor dem 25.12.
  • der 4. Advent ergibt sich somit aus 25.12. - wochentag(25.12.) (Mo=1 So=7)
  • der 1. Advent ergibt sich aus 4. Advent - 21 Tage
  • => der Timestamp des 1. Advent ergibt sich somit aus timestamp(25.12.) - (21+wochentag(25.12.))*86400

8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!