FHEM Forum

FHEM => Automatisierung => Thema gestartet von: AyshaHM am 21 November 2020, 07:40:29

Titel: [Gelöst] Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: AyshaHM am 21 November 2020, 07:40:29
Hallo zusammen,
Ich möchte am Monatsende um 23:59 einen Dummy schalten.
Bei meiner Suche habe ich folgenden Code gefunden.

if ((strftime "%d",localtime time+86400) eq "01")}

Dieser Code sucht den nächsten 1. des Monats und soll dann um einen Tag zurückspringen.

Damit habe ich mir diesen AT erstellt.

*23:59:00 {fhem "set Test99 on" if (strftime "%d",localtime time+86400) eq "01")}

Test99 ist der Dummy

Ist das so richtig und wie testet man das ohne auf den letzten Tag im Monat zu warten???

Für Hilfe bin ich immer sehr dankbar!!



Gruß AyshaHM





Titel: Antw:Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: CoolTux am 21 November 2020, 07:47:27
Es gibt einige globale Variablen in FHEM. Gib mal
{ $mday }
in Deiner FHEMWEB Kommandozeile ein.

Siehe auch
https://fhem.de/commandref_DE.html#perl
Titel: Antw:Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: AyshaHM am 21 November 2020, 08:21:33
Guten Morgen CoolTux,
vielen Danke für deine Antwort!

Dieses { $mday } gibt mir den aktuellen Tag des Monats zurück.
Leider verstehe ich nicht was ich damit anfangen soll. Das im Commandref verstehe ich auch nicht.

Es müsste doch eine Funktion geben wo ich FHEM sage das heute der letzte Tage im Monat ist (z.B. 30.11.2020) und die Uhrzeit auf 23:58 Uhr steht. Wenn es dann 23:59 Uhr wird kann ich sehen ob mein AT funktioniert.

Ist den mein AT soweit richtig?

Vielleicht kannst du mir damit noch mal Helfen

Vielen Dank im Voraus!!

Titel: Antw:Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: Wzut am 21 November 2020, 08:30:53
Zitat von: AyshaHM am 21 November 2020, 08:21:33
Es müsste doch eine Funktion geben wo ich FHEM sage das heute der letzte Tage im Monat ist
Nein, Denkfehler : strftime "%d",localtime time+86400 gibt dir den aktuellen Montagstag in 24 Stunden aus und wenn der 01 ist muß heute der letzte Tag des Monats sein egal ob der aktuelle Monat 28,29,30 oder 31 Tage hat.
Prüf es heute Abend und setze statt der 01 die 22 ein :)
Titel: Antw:Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: AyshaHM am 21 November 2020, 08:46:55
Guten Morgen Wzut,
vielen Dank für die Lösung!!!
Ich habe einfach die Uhrzeit verändert und kann somit alles testen.
Der AT arbeitet einwandfrei!!

Danke Danke

Gruß
AyshaHM
Titel: Aw: [Gelöst] Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: Jamo am 31 März 2024, 10:01:42
Hallo,
Zitat von: Wzut am 21 November 2020, 08:30:53
Zitat von: AyshaHM am 21 November 2020, 08:21:33Es müsste doch eine Funktion geben wo ich FHEM sage das heute der letzte Tage im Monat ist
Nein, Denkfehler : strftime "%d",localtime time+86400 gibt dir den aktuellen Montagstag in 24 Stunden aus und wenn der 01 ist muß heute der letzte Tag des Monats sein egal ob der aktuelle Monat 28,29,30 oder 31 Tage hat.
Prüf es heute Abend und setze statt der 01 die 22 ein :)
das funktioniert nicht, falls ich um 23:59 abfrage, und der letzte Tag des Monats wegen der Zeitumstellung nicht 86400 Sekunden sondern nur 82800 Sekunden hat. Dann wird der vorletzte Tag zum letzten Tag :-)
Titel: Aw: [Gelöst] Dummy mit AT am Ende des Monat um 23:59 Uhr schalten
Beitrag von: betateilchen am 31 März 2024, 12:01:15
Abgesehen davon, dass es wenig Sinn macht, zu einer solchen Frage einen so alten Thread auszugraben, gibt es für die Aufgabenstellung

Zitat von: AyshaHM am 21 November 2020, 07:40:29Ich möchte am Monatsende um 23:59 einen Dummy schalten.

inzwischen eine sehr einfache Lösung:

define test_at at *{at_ultimo()} set TestDummy on
at_ultimo() berechnet automatisch den Zeitpunkt zum letzten Tag des Monats um 23:59:00.

Ein Blick in die commandref zu "at" hätte dabei helfen können, die Lösung zu finden.