FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: deathworm am 03 April 2023, 21:10:08

Titel: Sleep aber doch nicht sleep ist hier die Frage
Beitrag von: deathworm am 03 April 2023, 21:10:08
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?
Titel: Aw: Sleep aber doch nicht sleep ist hier die Frage
Beitrag von: betateilchen am 03 April 2023, 21:28:59
Du könntest Dir auf Knopfdruck ein at definieren, das in 96 Stunden eine Benachrichtigung auslöst.
Titel: Aw: Sleep aber doch nicht sleep ist hier die Frage
Beitrag von: deathworm am 03 April 2023, 21:43:44
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.
Titel: Aw: Sleep aber doch nicht sleep ist hier die Frage
Beitrag von: betateilchen am 03 April 2023, 22:18:10
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 }
Titel: Aw: Sleep aber doch nicht sleep ist hier die Frage
Beitrag von: deathworm am 07 April 2023, 09:46:39
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.