Hallo ,
ich hätte eine Bitte für ein Feature-Request. Wäre es möglich ein Reading "nextUpdate" zu integrieren. Ich habe in mehreren DOIF´s Zeitangaben, die dadurch entstandenen Readings wie zb. timer_1_c1,timer_2_c1,usw möchte ich nun weiterverwenden bzw auswerten um zb die nächste Schaltzeit zu bestimmen. Das geht auch wunderbar solange man keine Wochentage ins Spiel bringt.
Ein Beispiel
timer_1_c1 19.11.2016 05:14:00
timer_2_c1 18.11.2016 16:46:04|7
Wenn man sich den Code ansieht fällt auf damit timer_2_c1 ja nicht am dargestellten Datum schalten dürfte da die 7 ja das Wochenende darstellt aber der 18.11.2016 ein Freitag ist. Geschaltet wird natürlich nur am Wochenende. Aber das Reading zeigt den 18.11.2016 (Freitag) an, damit kann ich das Reading nicht verwenden. Wenn es so wie beim WeekdayTimer ist (da gibt es das Reading nextUpdate was immer den nächsten schaltzeitpunkt darstellt) wäre es genau das was ich als reading bräuchte.
Ich hoffe ich konnte mich verständlich ausdrücken.
Gruß BlasterX
Ob der Timer zu seinem Zeitpunkt auch wirklich schaltet, kannst du aber mit "nextUpdate" aber nicht erkennen. Es wäre halt nur der nächste Timer.
richtig, genau das reicht mir ja
Gruß BlasterX
Die Bezeichnung der Timer-Readings ändert sich mit dem nächsten Update. https://forum.fhem.de/index.php/topic,58556.msg522313.html#msg522313
Du könntest Dir ein userReading erstellen, das nextUpdate berechnet., Wenn die Bedingung nicht interessiert, dann kannst Du |x vom Timerwert abtrennen, denn [16:46:04|7] ist ja nur eine kurze Schreibweise für [16:46:04] and $we.
Danke für die Antwort. Damit es mit userReading gehen könnte dachte ich auch, doch leider fehlt mir der Ansatz zum userReading. Ich habe vier Timer timer_1_c1,timer_2_c1,timer_3_c2,timer_4_c2 von denen der nächste Schaltzeitpunkt ermittelt werden muss.
Gruß BlasterX
Gesendet von meinem SM-G935F mit Tapatalk
ZitatDas geht auch wunderbar solange man keine Wochentage ins Spiel bringt.
Wie machst Du das hier?
Ich wandle das Datum in einem timestamp um und lasse es der Größe nach sortieren und in ein Dummy schreiben.
Gesendet von meinem SM-G935F mit Tapatalk
Da das Datum ja folgendes Format hat 18.11.2016 16:46:04|7 kann es nicht in einen timestamp konvertiert werden.
Gesendet von meinem SM-G935F mit Tapatalk
Dann kannst Du den timer aus dem String herausnehmen mit
$timer=substr($timer,0,19)
falls ich mich nicht verzählt habe.
Danke ich werde es heute Abend testen.
Gesendet von meinem SM-G935F mit Tapatalk
Ich bin auf Arbeit und konnte es noch nicht testen, aber das was du mir geschrieben hast extrahiert mir doch das Datum ohne |7 Das habe ich schon gemacht. Doch das Datum stimmt ja nicht, da der 18.11.2016 ja nicht am Wochenende ist. Der eigentliche Schaltzeitpunkt ist ja bei |7 19.11.2016 und 20.11.2016. Sollte ich falsch liegen berichtige mich bitte.
Gesendet von meinem SM-G935F mit Tapatalk
Ich hatte Dich so verstanden, dass Dir egal ist, ob die Bedingung schaltet. Und |7 gehört zur Bedingung, da es die Kurzform für "and $we" ist.
Wenn Du in die 98_WeekdayTimer.pm schaust, dann findest Du eine Funktion "WeekdayTimer_searchAktNext($$)", vielleicht kannst Du dort finden, wie nextUpdate ($nextTime) ermittelt wird und es für Dich anpassen.
Ja Missverständnis ich habe mich vielleicht nicht genau ausgedrückt. Hast du trotzdem eine Idee wie ich das hin bekomme?
Gesendet von meinem SM-G935F mit Tapatalk
Ok ich habe mir das mit der 98_WeekdayTimer.pm mal angesehen, aber leider kann ich mir daraus nichts nehmen bzw. für mein Problem etwas daraus basteln. Wenn noch jemand einen Tipp hat wie ich die Sache lösen kann dann wäre ich sehr dankbar.
Gruß BlasterX
Was wird in nextUpdate berücksichtigt?
1. Nehmen wir an es ist 13 Uhr am 1.10.2016 und Du hast einen Timer [12:00|8].
2. Du hast eine Zeitspanne [10:00-18:00] und es ist 13 Uhr.
Welche Zeit und Datum sollte nextUpdate beinhalten?
3. Sollte immer von allen Timern eines DOIF der nächste Schalttermin gebildet werden oder nur von selbstbestimmten Timer?
zu 1. nextUpdate sollte sollte das tatsächliche Datum un die Uhrzeit beinhalten . In Deinem Beispiel 01.10.2016 13:00 und der Timer ist [12:00|8], so müsste eigentlich bei nextUpdate 03.10.2016 12:00 stehen da |8 ja Werktags beschreibt.
zu 2. da wird es schwierig da ja beim DOIF die Timer Readings timer_1_c1 und timer_2_c1 erst aktualisiert werden wenn timer_2_c1 vorbei ist. Bei Deinem Beispiel ist ja die eigentliche Startzeit überschritten, und der Timer ja nur zwischen [10:00-18:00] aktiv ist sollte das nextUpdate ja am Folgetag sein wenn es eine DOELSE Anweisung gibt.
Schalte zwischen [10:00-18:00] auf on sonst schalte auf off.
zu 3. schwer zu sagen mir würde es zur Zeit reichen die selbstbestimmten Timer anzuzeigen.
Danke das Du die Sache mit dem nextUpdate ins DOIF einbinden willst.
Der 3.10. ist ein Feiertag, müsste das nicht auch berücksichtigt werden, wenn es ein holiday2we gibt, wie ist das beim Weekdaytimer?
Oh mein Fehler habe ich nicht dran gedacht, dann muss es der 04.11.2016 weil ja Feiertage wie Wochenenden behandelt werden. Beim Weekdaytimer muss ich schauen.
Gesendet von meinem SM-G935F mit Tapatalk
Vielleicht hilft das weiter https://forum.fhem.de/index.php/topic,61024.msg526298.html#msg526298
Habe es gerade getestet, funktioniert super. Ich Danke Dir für die schnelle Unterstützung bei meinem Problem.
Gesendet von meinem SM-G935F mit Tapatalk
Ja, danke ich hatte zu spät gesehen, dass Du in dem anderen Thred schon geantwortet hast.