Hallo,
ich habe ein einfaches at, welches um 20:00 was ausschaltet.
Ich würde gern dynamisch 5 Minuten vorher ein zweites at schalten. Mit dynamisch meine ich, dass die Zeit angepasst wird wenn sich das erste at ändert.
[at1:TIMESPEC]-00:05:00
Das scheint mir zu einfach gedacht, funktioniert leider nicht.
Irgendwelche Tipps?
Viele Grüße
defmod erstes_at at *19:55 {}
defmod zweites_at at *20:00 {}
defmod at_notify notify global:MODIFIED.zweites_at {my $t=InternalVal("zweites_at","TRIGGERTIME",0)-300;; fhem("defmod erstes_at at *$t ".InternalVal("erstes_at","COMMAND","{}"));;}
Aber wäre es nicht logischer, das zweite at fünf Minuten nach dem ersten auszuführen?
Hoppala, das muss ich erst verstehen 🥴 danke dir.
In dem Fall nicht. Es geht um eine Dosierung.
Zitat von: xeenon am 24 Juli 2023, 19:32:28Hoppala, das muss ich erst verstehen
und, hast Du das Prinzip durchschaut?
- Lege die drei devices an wie beschrieben.
- Dann mache ein "defmod zweites_at at *21:17 {}"
- Dadurch wird "erstes_at" auf 21:12 geändert
Zum Verstehen des Ganzen am besten das notify von rechts nach links anschauen.
- Das notify ändert die Uhrzeit von "erstes_at" und übernimmt dabei den bestehenden Befehl des at
- Die neue Uhrzeit wird aus "zweites_at" gebildet, indem 300 Sekunden von dessen Ausführungszeitpunkt abgezogen wird
- Das Ganze wird ausgeführt, wenn "zweites_at" mittels defmod geändert wird und der entsprechende event erzeugt wird