einfaches DOIF wird nicht ausgeführt?

Begonnen von Steffen, 25 April 2020, 06:20:02

Vorheriges Thema - Nächstes Thema

fast-eddy

Zitat von: Otto123 am 29 April 2020, 21:44:56
Ich verstehe es nicht. Und Frank sicher auch nicht. Wenn es Gestern ausgelöst hat und du einen Tag cmdpause hast, dann ist es doch richtig, dass er Heute nicht ausgelöst hat. Er sollte erst morgen wieder auslösen?!

...zugegeben durch die verschiedenen Threads in einem Thema ging es etwas durcheinander:

Gestern hat das DOIF ausgelöst weil zum Zeitpunkt sunrise das attribut cmdpause die Werte 0:0:0:0:0 hatte.
Wie weiter oben geschrieben habe ich das vorgestern testhalber so gesetzt! D.h. cmdpause konnte also gestern gar nicht greifen (und somit heute eine Pause auslösen) weil nicht gesetzt!

Im zweiten Schritt habe ich das attribut cmdpause dann gestern (nach sunrise) auf 87000:87000:0:0:0 gesetzt, um zu prüfen ob meine Fehlerbeobachtung reproduzierbar ist. Das hat sich ja auch bestätigt, denn heute Morgen zu sunrise hat das DOIF ja eben nicht ausgelöst.

Da sich der Zustand des DOIF von gestern auf heute nicht geändert hat, ist der Wert auf cmd_2 stehen geblieben.

Selbst wenn cmdpause 0:0:0:0:0 gestern eine Verzögerung ausgelöst haben sollte, müsste das DOIF spätestens morgen früh wieder getriggert werden da timer_02_c02 30.04.2020 05:30:39
Ich bin gespannt!

Ich halte Euch auf dem Laufenden - Danke für Eure Geduld!
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Damian

#61
ZitatGestern hat das DOIF ausgelöst weil zum Zeitpunkt sunrise das attribut cmdpause die Werte 0:0:0:0:0 hatte.
Wie weiter oben geschrieben habe ich das vorgestern testhalber so gesetzt! D.h. cmdpause konnte also gestern gar nicht greifen (und somit heute eine Pause auslösen) weil nicht gesetzt!

Im zweiten Schritt habe ich das attribut cmdpause dann gestern (nach sunrise) auf 87000:87000:0:0:0 gesetzt, um zu prüfen ob meine Fehlerbeobachtung reproduzierbar ist. Das hat sich ja auch bestätigt, denn heute Morgen zu sunrise hat das DOIF ja eben nicht ausgelöst.

Es funktioniert alles, wie programmiert.

Du kannst auch morgen paar Sekunden vor sunrise 87000:87000:0:0:0 setzen und es wird nicht funktionieren.

Das Modul schaut erst beim Trigger nach dem Datum des Status, errechnet dann die Zeitdifferenz und vergleicht sie mit cmdpause. Da die Tage z. Zt. unter 600 Sekunden länger werden (87000-86400=600), ist die Zeitdifferenz unter 87000 und dadurch wird das Modul nur jeden zweiten Tag auslösen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

fast-eddy

Hallo zusammen,

ich wollte mich ja mit einem Status zurückmelden.
Um nicht noch mehr Verwirrung zu stiften habe ich das DOIF jetzt mal drei Tage "untouched" gelassen, so dass ein kompletter Zyklus duchlaufen konnte.

Und was soll ich sagen: MEA CULPA!!! Es funktioniert!

Anscheinend hatte ich vor meinem ersten Post ein generelles Problem mit meinem FHEM da verschiedene "Regeln", ob mit oder ohne DOIF, nicht sauber funktioniert haben. Und in meinem Debugging Wahn habe ich dann zu viele Dinge in zu kurzer Zeit ausprobiert - Geduld ist nicht unbedingt meine Stärke  ::)

RETRO:
Der entscheidende Tipp kam m.E. von Frank und zwar der Hinweis auf die z.Z. schnell länger werdenden Tage!
Ich habe es nicht auf Anhieb kapiert aber nachdem ich die Verzögerung über cmdpause nun auf 87000 Sekunden (d.h. 24 Stunden und 10 Minuten) gesetzt habe, sollte es auch dauerhaft klappen, da in meinen Breitengraden das maximale tägliche Delta der Tageslänge etwa 5 Minuten beträgt.

Mein Tipp an alle: Bei der Fehlersuche im Zusammenhang mit sunrise triggern hilft nur Geduld!  8)

Sorry wenn ich da etwas Chaos verursacht habe. Vielen Dank an alle Mitdenker und Fehlersucher und vor allem vielen Dank für EURE Geduld!   ;)
Raspberry Pi | HMUART | HMLAN | JeeLink | HUE | Z-WAVE.ME | HM-LC-Bl1PBU-FM | HM-PB-2-WM55 HM-CC-RT-DN | HM-LC-SW4-SM | HM-WDS10-TH-O HM-WDS30-T-O | HM-LC-SW4-DR | HM-Sen-MDIR-O-2 | HM-SEC-SCo |  Technoline TX 29 DT-HT|

Damian

Hier mal zur Information:

Bei Angaben der Art [{meineZeitFunktion}] braucht man sich beim DOIF keine Gedanken zum doppelten Triggern am gleichen Tag machen. DOIF erkennt den Triggertag und verschiebt den nächsten Trigger auf den nächsten Tag, auch wenn die neu errechnete Zeit noch am gleichen Tag liegen sollte. Das gilt allerdings nur für DOIF und nicht für at, dort muss die Funktion selbst dafür Sorge tragen, die Zeit auf den nächsten Tag zu verschieben.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF