Geburtstagskalender, Alter berechnen

Begonnen von Pankratius, 04 Dezember 2016, 20:39:21

Vorheriges Thema - Nächstes Thema

LaserBrenner

Hallo,
genau diese Frage stelle ich mir auch gerade....

So wie ich das verstehe:
- Google Kontakte Geburtstagskalender kann man nicht verwenden da es kein Ical Unterstützer
- Daher alle Geburtstage als Ferienterminen in einen se beraten google Kalender übernehmen
-> hier kann man aber nicht das Geburtsjahr z.B.1978 eingeben

Aber wie/wo bekomme ich die Info den eingegeben??

gruß
Matthias

LaserBrenner

oder habe ich die Antwort irgendwo überlesen?

chris1284

Zitat von: LaserBrenner am 01 April 2019, 14:54:21
oder habe ich die Antwort irgendwo überlesen?

du setzt das Attribut isbirthday = 1 - dann wird gerechnet.
das Geburtsjahr kannst du dort hin schreiben wo das Attribut yobfield hin zeigt (wenn nicht gesetzt --> Jahr in Terminbeschreibung)
http://fhem.de/commandref_DE.html#CALVIEW
Zitat
yobfield
_description - (der Standard) Geburtsjahr wird aus der Terminbechreibung gelesen
_location - Geburtsjahr wird aus dem Terminort gelesen
_summary - Geburtsjahr wird aus dem Termintiele gelesen (verwendet wird die erste folge von 4 Ziffern im String))


chris1284

Zitat von: elmer am 30 Januar 2018, 04:44:07
Wo muss das Geburtsjahr beim Google Kalender eingegeben werden
siehe einen Post vor diesem

Zitat von: elmer am 30 Januar 2018, 04:44:07
Kann man das ganze auch per Pushover versenden, also immer den Termin von heute?
Ja, wenn du dir entsprechend ein notify baust welches die entsprechenden Readings per pushover sendet.
Ich denke aus der Hüfte geschossen würde ich es auf calview:today_.*._age.* triggern lassen und wenn age != "" dann push diesen Termin aufs Handy

yersinia

Ich krame den Thread nochmal hoch weil ich das zufällig gesehen hab:
Zitat von: chris1284 am 11 April 2019, 06:30:13Ja, wenn du dir entsprechend ein notify baust welches die entsprechenden Readings per pushover sendet.
Ich denke aus der Hüfte geschossen würde ich es auf calview:today_.*._age.* triggern lassen und wenn age != "" dann push diesen Termin aufs Handy
Ich löse die Geburtstagserinnerung mit dem CALVIEW Device, ein bisschen perl und dem TelegramBot.

In der 99_myUtils.pm habe ich diese sub hinzugefügt:
sub BirthdayNotification($$$) {
my ($TelegramDevice, $peers, $BirthdayDevice) = @_;

## retrieve number of todays birthday
my $BdatesNum = ReadingsNum($BirthdayDevice,"c-today",0);

if($BdatesNum gt 0)
{
## texts for message
my $preTxt = "Für heute steht im Geburtstagskalender:\n";
my $midTxt = " wird ";
my $endTxt = "\n";

## prepare command
my $command = "set ".$TelegramDevice." message ".$peers." ";

$command .= $preTxt;

for(my $i = 1; $i <= $BdatesNum; $i++)
{
my $bdcount = sprintf "%03d", $i;
$command .= ReadingsVal($BirthdayDevice,"t_".$bdcount."_summary","-");
$command .= $midTxt;
$command .= ReadingsNum($BirthdayDevice,"t_".$bdcount."_age","");
$command .= $endTxt;
}
fhem($command);
}
else {
Log 3,"BirthdayNotification called but there are no entries for today.";
}
}


Die sub BirthdayNotification erwartet folgende Daten:

  • Das TelegramBot Device (im Beispiel unten TelegramBot)
  • Die peers an die es geschickt werden soll (im Beispiel unten \@000000000 \@000000000); die Syntax folgt dabei den Optionen für peers laut commandref:
    ZitatEach peer given needs to be always prefixed with a '@'. Peers can be specified as contact ids, full names (with underscore instead of space), usernames (prefixed with another @) or chat names (also known as groups in telegram groups must be prefixed with #). Multiple peers are to be separated by space
    peer-ids beginnend mit einem @ müssen durch ein\ maskiert werden (ob dies für # ebenso zutrifft, kann ich nicht sagen - habe ich nicht getestet). Siehe Beispiel unten.
  • Das CALVIEW Device (im Beispiel unten Geburtstage)

Der Aufruf erfolgt bei mir über ein DOIF welches jeden Tag um 8:00Uhr auf Einträge (Reading c-today > 0) im Geburtstagskalender prüft.
defmod DOIF_Geburtstage_Telegram DOIF ([08:00:00]\
and [Geburtstage:c-today] ne "0")\
({BirthdayNotification("TelegramBot","\@000000000 \@000000000","Geburtstage")})\
DOELSE ()\


Der TelegramBot verschickt dann eine Nachricht wie diese (wenn es für heute zwei Einträge gibt - c-today=2):
Für heute steht im Geburtstagskalender:
Peter Pan (1962) wird 57
Michaela Musterfrau (1985) wird 34


Vielleicht kann es jemand gebrauchen - oder hat Tipps was man optimieren könnte.
viele Grüße, yersinia
----
FHEM 6.3 (SVN) on RPi 4B with RasPi OS Bullseye (perl 5.32.1) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl