WeekdayTimer - wertet nicht mehr die CONDITION aus

Begonnen von sz_wolfi, 22 Dezember 2021, 11:20:04

Vorheriges Thema - Nächstes Thema

sz_wolfi

Hallo,
seit dem letzten Update (so um 19.12.2021) fiel mir auf, dass die WeekdayTimer zwar gehen, aber nicht mehr die CONDITION auswerten, wann sie aktiv sein sollen.
Sie sind praktisch ohne Bedingung - IMMER (und ALLE) aktiv.
Ein RESTORE auf einen Stand vor ~2021.12.05 --- und sie gehen wieder wie erwartet.
(d.h. es werden nur die WDTs aktiv, deren Bedingung wahr ist.)

...dies war natürlich ein quick+dirty Test - d.h. ich habe einfach einen älteren Snapshot aktiviert.
Passiert dies jemand anderem auch  ?  Falls nein - muss ich wohl einen detailierteren Testcase bauen ....

Beta-User

https://svn.fhem.de/trac/browser/trunk/fhem/CHANGED#L30: 98_WeekdayTimer: CONDITION now is checked at each switching time

Will sagen: das Verhalten ist absichtlich gändert, effektiv sollte sich aber (abgesehen von den zusätzlichen laufenden Timern, die dann auch "abgearbeitet" (im Sinne von: CONDITON geprüft) werden) keine Änderung des Schaltverhaltens ergeben.

Oder ist das bei dir anders?

Hintergrund ist der: Das Verhalten war bis vor kurzem anders beschrieben gewesen (muss mal schauen, ob ich die cref dann auch wieder geändert habe), und es sind einige Leute über diese etwas seltsame Logik gestolpert...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

sz_wolfi

ZitatWill sagen: das Verhalten ist absichtlich gändert, effektiv sollte sich aber (abgesehen von den zusätzlichen laufenden Timern,
die dann auch "abgearbeitet" (im Sinne von: CONDITON geprüft) werden) keine Änderung des Schaltverhaltens ergeben.

hmmm ... das ist natürlich (für mich) etwas ärgerlich.
Ich habe eine ReadingsGroup - die mir detailiert sagt, welcher Heizplan gerade aktiv ist, und wann das nächste Event ansteht.


defmod rg_Heizplan readingsGroup <%sani_heating_calendar>,< Status >,< Now >,< Next >,< Next Active >\
Heizplan_.*:state,currValue,nextValue,nextUpdate


und dann in ValueStyle etc. - werte ich 'state' aus - ob es 'active'/'inactive' ist usw.
Das geht jetzt nicht mehr - weil jeder WDT immer 'active' ist :-(
Und wenn ich dann 'nextValue,nextUpdate' ansehe - sind die auch aktiv....
Ob sie auch wirklich schalten - kann sein, dass sie wegen der nicht erfüllten CONDITION das nicht tun....

Aber wie genau kann ich jetzt darstellen - ob ein WDT schalten wird oder nicht ? - und wann ?

ZitatOder ist das bei dir anders?

Vielleicht nicht. :-)
Die Anzeige in der ReadingsGroup - dass sie alle aktiv sind, und ein 'nextValue,nextUpdate' haben, verwirrt mich ...

ZitatHintergrund ist der: Das Verhalten war bis vor kurzem anders beschrieben gewesen (muss mal schauen, ob ich die cref dann auch wieder geändert habe),  und es sind einige Leute über diese etwas seltsame Logik gestolpert...

hmmm ... kein Problem - works as designed :-)
Nur - hat jetzt jemand einen Tip - wie ich wieder erkennen kann, ob ein WDT wirklich aktiv ist oder nicht ?

Meine WDTs sehen z.B. so aus:


Heizung.Bad2.Slider  0123456|06:42|22 0123456|07:12|12 0123456|08:22|11 0123456|19:02|20 0123456|19:22|12 0123456|21:42|10 (ReadingsVal("HCAutomatik", "state", "off") eq "on" and ReadingsVal("HeizAutomatik_Bad2", "state", "off") eq "on" and ReadingsVal("BY_Feiertag", "state", "invalid") eq "1"  )



...d.h. f. Feiertage/Ferien/Schule - gibt es unterschiedliche Heizpläne - und welcher gerade aktiv ist - war mit dem alten WDT-Code relative übersichtlich darstellbar.  Jetzt geht's halt nicht :-(

Beta-User

Zitat von: sz_wolfi am 22 Dezember 2021, 13:44:02
hmmm ... kein Problem - works as designed :-)
Nur - hat jetzt jemand einen Tip - wie ich wieder erkennen kann, ob ein WDT wirklich aktiv ist oder nicht ?
Hmm, mal schauen...

Grundsätzlich dürfte es kein Problem sein, bei WDT's, die mit CONDITION arbeiten auch irgendwo (in einem Reading? oder (mir eigentlich lieber:) einem Internal) zu hinterlegen, was jeweils die letzte Evaluierung der CONDITION ergeben hat. Das könnte man dann auch z.B. in einer readingsGroup abfragen (geht afaik auch mit Internal).

z.B. als Zeile 1262 neu einfügen:
$hash->{ConditionResult} = $ret;

Zitat
Meine WDTs sehen z.B. so aus:


Heizung.Bad2.Slider  0123456|06:42|22 0123456|07:12|12 0123456|08:22|11 0123456|19:02|20 0123456|19:22|12 0123456|21:42|10 (ReadingsVal("HCAutomatik", "state", "off") eq "on" and ReadingsVal("HeizAutomatik_Bad2", "state", "off") eq "on" and ReadingsVal("BY_Feiertag", "state", "invalid") eq "1"  )



...d.h. f. Feiertage/Ferien/Schule - gibt es unterschiedliche Heizpläne - und welcher gerade aktiv ist - war mit dem alten WDT-Code relative übersichtlich darstellbar.  Jetzt geht's halt nicht :-(
Na ja, vielleicht ist das auch die Gelegenheit, dass du dich mal mit den neuen Optionen rund um weekprofile+WeekdayTimer befasst :) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors