Hier ein Codeschnipsel für jeden, der gerne seinen Adventskranz mit der richtigen Anzahl Kerzen beleuchten will.
Die Sub Advent() gibt positive Werte für die Zeit vom 1. Advent bis zum 6. Januar zurück. Für die übrige Zeit negative Wert (Anzahl Tage bis zum 1. Advent).
Für die Zeit bis zum 24.12. ergibt Advent() die Anzahl Kerzen. Danach erhöht sich der Wert bis auf 6.
Time::Local wird benötigt.
#~~~~~~~~~~~~~~~~~~~Adventszeit~~~~~~~~~~~~~~~~~~~~~~~
# Rückgabewert:
# ...
# Freitag vor dem 1. Advent = -1
# Samstag vor dem 1. Advent = -2
# von Sonntag, 1. Advent bis zum Samstag vor dem 2. Advent = 1
# ...
# von Sonntag, 4. Advent bis zum nächsten Samstag = 4
# ...
# 31. Dezember = 5
# 1 bis 6. Januar = 6
# 7. Januar = - 327
# ...
#
sub Advent()
{
my $K;
my ($nowSek, $nowMin, $nowStunden, $nowMTag, $nowMonat,$nowJahr, $nowWTag, $nowJTag)=localtime(time());
if( $nowJTag < 6 ) {$K=6;}
else {
my ($Sek, $Min, $Stunden, $MTag, $Monat, $Jahr, $WTag, $JTag)=localtime(timelocal(0,0,0,24,11,$nowJahr));
$K=$nowJTag - ($JTag - 21 - $WTag);
if ($K >= 0) {$K += 7; $K = int($K/7);}
}
return($K);
}
Danke!
Hab es geklaut :D
was hast du in deiner .cfg definiert?
Gruß Markus
Zitat von: Markus am 08 Dezember 2015, 11:46:23
was hast du in deiner .cfg definiert?
Mangels passender Hardware habe ich noch nichts realisiert.
Wir haben jetzt einen Adventskranz mit echten Kerzen.
Ja wir auch :-(
Aber ich möchte es für die Weihnachtsbeleuchtung verwenden hab zur zeit eine eigene .holliday Datei aber deine Lösung gefällt mir besser!
Gruß Markus
Hi
erstmal danke für den Code.
ich bräuchte etwas hilfe beim übergeben des Wertes an einem dummy. Hab etz schon viel probiert aber irgendwie mags nicht hinhauen.
könnte mir da evtl jemand unter die arme greifen?
Zum Ausprobieren, hier eine einfache Umsetzung der Adventskranzbeleuchtung. Das Notify wird vom Dämmerungssensor getriggert.
define nAdventskranz notify M_Daemmerung.* {my $K=Advent();
if ($EVENT eq "off") {$K=4;}
if ($K<5)
{
if ($K>0){fhem "set Kerze_1 $EVENT";}
if ($K>1){fhem "set Kerze_2 $EVENT";}
if ($K>2){fhem "set Kerze_3 $EVENT";}
if ($K>3){fhem "set Kerze_4 $EVENT";}
}
}
Danke dafür, aber ich bräuchte den wert von $K in einem dummy das ich im floorplan den entsprechenden kranz anzeigen kann.
Du kannst doch aus Kerze_1 bis 4 dummys machen müssen ja keine Aktoren sein.
oder willst du nur einen Dummy haben der 4 states haben kann dann probier doch sowas
{
if ($K>0){fhem "set Kranz 1";}
if ($K>1){fhem "set Kranz 2";}
if ($K>2){fhem "set Kranz 3";}
if ($K>3){fhem "set Kranz 4";}
}
}
Gruß Markus
Hi
hat so wunderbar geklappt! Danke nochmal.
Aber der dummy liefert mir komischerweise immer noch 5 müsste er nicht schon im minus sein?
Die Sub Advent() liefert bei mir aktuell -324.
Wie sieht dein Dummy aus?
Hi
danke für die antwort aber habs grad hinbekommen.
Hatte nie definiert was er machen soll wenn die adventszeit rum ist. er hatte immer im dummy den letzten wert.
nun gehts