Hi!
Ich habe meine Angewohnheit, dass ich meist meine Jeans für 4 Tage an habe. Nun ist es jedoch so, dass ich oft froh bin, wenn ich mich noch dran erinnere was ich gestern zum Essen hatte. Ergo ist es immer wieder eine Tortur sich das zu merken. Ein Kalender zum eintragen war schon Mal ein guter Versuch, aber seit dem ich meinen Klamottenschrank getrennt von meinem Badschrank mit den benutzen Klamotten oben drauf habe, klappt das leider auch nicht mehr.
Darum würde ich mir gerne einen Shellyknopf in den Schrank legen, den ich einfach nett drücke und der dann das event speichert. Nun könnte ich natürlich einfach einen sleep reinmachen mit 345.600 Sekunden (4Tage), aber das is ja dann doof weil:
Mal zieh ich gleich morgens eine neue an, Mal mittags und Mal abends.
Somit brauche ich eigentlich ein Event, dass beim trigger einfach 4 Tage später um Uhrzeit X die Nachricht schickt.
z.B.: Hose wird am Montag um 6:12 angezogen. Donnerstag um 18Uhr bekomm ich die Nachricht
Ist das "simpel" möglich oder ist das höhere Programmierkunst?
Du könntest Dir auf Knopfdruck ein at definieren, das in 96 Stunden eine Benachrichtigung auslöst.
Nabend teilchen,
wenn ich aber simpel 96 Stunden angebe, dann ist ja die triggerzeit ausschlaggebend. Mir geht es mehr darum, dass es am Triggertag, egal zu welcher Uhrzeit, 4 Tage später zu einer bestimmten Uhrzeit mir ein event schickt.
Und da weiss ich nicht, ob das einfach machbar ist oder ob ich dafür meine Seele verkaufen müsste.
Du kannst ein at auch mit einer Zeitangabe definieren, die so aussieht
define test_at at 2023-04-07T18:00:00 { mache irgendwas }
Auf das heutige Datum 4 Tage draufrechnen, um so einen String zu basteln, ist wirklich nicht kompliziert:
my $string = strftime ("%Y-%m-%dT18:00:00", localtime(time+4*DAYSECONDS));
In Kombination ergibt sich daraus:
define test_at at {strftime("%Y-%m-%dT18:00:00",localtime(time+4*DAYSECONDS))} { mache irgendwas }
Moin
Eben reingemacht und per execnow getestet - funktioniert einwandfrei. Vielen lieben Dank!!
ALs Umsetzung habe ich folgendes gemacht:
DOIF:
([MQTT2_shellybutton1_3C6XXXXXXXXX:event] eq "S") (delete klamotten_hose_at, define klamotten_hose_at at {strftime("%Y-%m-%dT19:00:00",localtime(time+1*DAYSECONDS))} {fhem ("set Telegram _msg Hose in die Wäschetonne") })
Beim drücken des Shellybuttons wird das event S gesetzt. Das DOIF geht hin und macht bei S erstmal ein delete des at, weil dieses beim erneuten drücken nicht geändert werden kann, sondern erst gelöscht werden muss. Dann wird das AT neu definiert mit fester Uhrzeit 19Uhr + 1Tag. Wenn das Ereignis eintritt, wird eine Telegramnachricht verschickt.