zurück zur Startseite

zurück zur Übersicht der Heimautomatisierung

38. Die Geburtstage (Stand 07.12.2018)

Eine kleine Spielerei ist die Anzeige der Geburtstagskinder der Familie. Am betreffenden Tag wird ein kleines Bild von der Person angezeigt und dazu ein symbolischer Geburtstagskuchen. So ist sichergestellt, dass wir unsere Lieben auch immer anrufen und ihren Jubeltag nicht vergessen.

Für jede Person wird wieder eine Variable benötigt und dazu dann noch ein Bild.

define geburtstagtermin dummy
attr geburtstagtermin room Geburtstag

define geburtstagJuergen dummy
attr geburtstagJuergen devStateIcon 0:UhrLeer 1:Juergen
attr geburtstagJuergen fp_zw_anfang 450,1300,0
attr geburtstagJuergen room Geburtstag

define geburtstagUrsula dummy
attr geburtstagUrsula devStateIcon 0:UhrLeer 1:Ursula
attr geburtstagUrsula fp_zw_anfang 450,1300,0
attr geburtstagUrsula room Geburtstag

Natürlich nicht nur von mir und meiner lieben Ehefrau, sondern von allen anderen genauso - es sollen ja alle gleich behandelt werden. Die Auswertung macht dann wieder ein Makro.

define geburtstagsanzeige notify geburtstagsanzeige {\
my @termin = split /\s+/, Value("geburtstagtermin");;\
my $anzahl = $#termin+1;;\
fhem("set geburtstagheute 0");;\
while ($anzahl > 0){\
$anzahl -=1;;\
my $datum = shift(@termin);;\
push(@termin, $datum);;\
my @tagmonatname = split /\./, $datum;;\
my $name = "geburtstag".$tagmonatname[2];;\
if ($tagmonatname[0] == $mday && $tagmonatname[1] == $month) {\
fhem("set $name 1;; set geburtstagheute 1")\
} else {\
fhem("set $name 0")\
}\
}\
}

Jetzt muss nur noch einmalig die Variable mit den Geburtstagsterminen gefüllt werden. Das ist einfach eine Liste Tag.Monat.Name und die Listenelemnte sind durch ein Leerzeichen getrennt. Die Reihenfolge spielt keine Rolle.

weiter zu: 39. Der Technikraum