Mein WeekdayTimer, der monatelang einwandfrei funktioniert hat, macht plötzlich (nach einem Update vor einigen Tagen ??) Probleme.
Hier ein List (um 22:10 Uhr gezogen):
Internals:
COMMAND { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
CONDITION
DEF ZWave_THERMOSTAT_2 06:15|28 08:45|20 21:45|28 22:55|20 { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
DEVICE ZWave_THERMOSTAT_2
FUUID 5c447ba1-f33f-c1fa-ad2b-49e10c535265c659
GlobalDaylistSpec
LANGUAGE de
NAME Timer_Fussbodenheizung
NR 215
Profil 0: Sonntag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 1: Montag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 2: Dienstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 3: Mittwoch 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 4: Donnerstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 5: Freitag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 6: Samstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
STATE 28
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
currValue:
myDbLog:
TIME 1569959100.03821
VALUE 28
disabled:
myDbLog:
TIME 1569574064.55683
VALUE 0
nextUpdate:
myDbLog:
TIME 1569959100.03821
VALUE 2019-10-01 22:55:00
nextValue:
myDbLog:
TIME 1569959100.03821
VALUE 20
state:
myDbLog:
TIME 1569959100.03821
VALUE 28
READINGS:
2019-10-01 21:45:00 currValue 28
2019-09-27 10:47:44 disabled 0
2019-10-01 21:45:00 nextUpdate 2019-10-01 22:55:00
2019-10-01 21:45:00 nextValue 20
2019-10-01 21:45:00 state 28
SWITCHINGTIMES:
06:15|28
08:45|20
21:45|28
22:55|20
TIMER:
Timer_Fussbodenheizung_1:
HASH Timer_Fussbodenheizung
MODIFIER 1
NAME Timer_Fussbodenheizung_1
Timer_Fussbodenheizung_2:
HASH Timer_Fussbodenheizung
MODIFIER 2
NAME Timer_Fussbodenheizung_2
Timer_Fussbodenheizung_3:
HASH Timer_Fussbodenheizung
MODIFIER 3
NAME Timer_Fussbodenheizung_3
Timer_Fussbodenheizung_4:
HASH Timer_Fussbodenheizung
MODIFIER 4
NAME Timer_Fussbodenheizung_4
immerSchalten 1
Timer_Fussbodenheizung_SetTimerOfDay:
HASH Timer_Fussbodenheizung
MODIFIER SetTimerOfDay
NAME Timer_Fussbodenheizung_SetTimerOfDay
SETTIMERATMIDNIGHT 1
Timer_Fussbodenheizung_delayed:
HASH Timer_Fussbodenheizung
MODIFIER delayed
NAME Timer_Fussbodenheizung_delayed
dayNumber:
!$we 8
$we 7
di 2
do 4
fr 5
mi 3
mo 1
sa 6
so 0
helper:
daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
SWITCHINGTIME:
0:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
1:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
2:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
3:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
4:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
5:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
6:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
longDays:
de:
Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Wochenende
Werktags
en:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
weekend
weekdays
fr:
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
weekend
jours de la semaine
profil:
1:
EPOCH 1569903300
PARA 28
TIME 06:15
TAGE:
0
1
2
3
4
5
6
2:
EPOCH 1569912300
PARA 20
TIME 08:45
TAGE:
0
1
2
3
4
5
6
3:
EPOCH 1569959100
PARA 28
TIME 21:45
TAGE:
0
1
2
3
4
5
6
4:
EPOCH 1569963300
PARA 20
TIME 22:55
TAGE:
0
1
2
3
4
5
6
profile_IDX:
0:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
1:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
2:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
3:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
4:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
5:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
6:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
shortDays:
de:
so
mo
di
mi
do
fr
sa
$we
!$we
en:
su
mo
tu
we
th
fr
sa
$we
!$we
fr:
di
lu
ma
me
je
ve
sa
$we
!$we
Attributes:
commandTemplate set $NAME desired-temp $EVENT
disable 0
room Badezimmer
verbose 5
Die ersten drei Schaltungen um 6:15, 8:45 und 21:45 Uhr werden einwandfrei ausgeführt, die von 22:55 Uhr aber nicht. Trotz verbose 5 taucht im Log zu dieser Zeit nichts auf.
Im Reading nextUpdate steht danach immer noch 2019-10-01 22:55:00.
Hier ist ein List, das um 23:10 Uhr gezogen wurde:
Internals:
COMMAND { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
CONDITION
DEF ZWave_THERMOSTAT_2 06:15|28 08:45|20 21:45|28 22:55|20 { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
DEVICE ZWave_THERMOSTAT_2
FUUID 5c447ba1-f33f-c1fa-ad2b-49e10c535265c659
GlobalDaylistSpec
LANGUAGE de
NAME Timer_Fussbodenheizung
NR 215
Profil 0: Sonntag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 1: Montag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 2: Dienstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 3: Mittwoch 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 4: Donnerstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 5: Freitag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 6: Samstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
STATE 28
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
currValue:
myDbLog:
TIME 1569959100.03821
VALUE 28
disabled:
myDbLog:
TIME 1569574064.55683
VALUE 0
nextUpdate:
myDbLog:
TIME 1569959100.03821
VALUE 2019-10-01 22:55:00
nextValue:
myDbLog:
TIME 1569959100.03821
VALUE 20
state:
myDbLog:
TIME 1569959100.03821
VALUE 28
READINGS:
2019-10-01 21:45:00 currValue 28
2019-09-27 10:47:44 disabled 0
2019-10-01 21:45:00 nextUpdate 2019-10-01 22:55:00
2019-10-01 21:45:00 nextValue 20
2019-10-01 21:45:00 state 28
SWITCHINGTIMES:
06:15|28
08:45|20
21:45|28
22:55|20
TIMER:
Timer_Fussbodenheizung_1:
HASH Timer_Fussbodenheizung
MODIFIER 1
NAME Timer_Fussbodenheizung_1
Timer_Fussbodenheizung_2:
HASH Timer_Fussbodenheizung
MODIFIER 2
NAME Timer_Fussbodenheizung_2
Timer_Fussbodenheizung_3:
HASH Timer_Fussbodenheizung
MODIFIER 3
NAME Timer_Fussbodenheizung_3
Timer_Fussbodenheizung_4:
HASH Timer_Fussbodenheizung
MODIFIER 4
NAME Timer_Fussbodenheizung_4
immerSchalten 1
Timer_Fussbodenheizung_SetTimerOfDay:
HASH Timer_Fussbodenheizung
MODIFIER SetTimerOfDay
NAME Timer_Fussbodenheizung_SetTimerOfDay
SETTIMERATMIDNIGHT 1
Timer_Fussbodenheizung_delayed:
HASH Timer_Fussbodenheizung
MODIFIER delayed
NAME Timer_Fussbodenheizung_delayed
dayNumber:
!$we 8
$we 7
di 2
do 4
fr 5
mi 3
mo 1
sa 6
so 0
helper:
daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
SWITCHINGTIME:
0:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
1:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
2:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
3:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
4:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
5:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
6:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
longDays:
de:
Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Wochenende
Werktags
en:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
weekend
weekdays
fr:
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
weekend
jours de la semaine
profil:
1:
EPOCH 1569903300
PARA 28
TIME 06:15
TAGE:
0
1
2
3
4
5
6
2:
EPOCH 1569912300
PARA 20
TIME 08:45
TAGE:
0
1
2
3
4
5
6
3:
EPOCH 1569959100
PARA 28
TIME 21:45
TAGE:
0
1
2
3
4
5
6
4:
EPOCH 1569963300
PARA 20
TIME 22:55
TAGE:
0
1
2
3
4
5
6
profile_IDX:
0:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
1:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
2:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
3:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
4:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
5:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
6:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
shortDays:
de:
so
mo
di
mi
do
fr
sa
$we
!$we
en:
su
mo
tu
we
th
fr
sa
$we
!$we
fr:
di
lu
ma
me
je
ve
sa
$we
!$we
Attributes:
commandTemplate set $NAME desired-temp $EVENT
disable 0
room Badezimmer
verbose 5
Die Systemzeit stimmt übrigens genau.
Welche Version ist das?
Ich habe eben (@StrawberryPerl) einen Test mit folgenden Parametern gemacht, wie du an den Zeitstempeln sehen kannst, lief der auch am Ende sauber durch:
defmod testWDT WeekdayTimer sz_deckenlicht 10:05|on 10:06|off 10:07|on 10:08|off 10:09|on 10:10|off
attr testWDT commandTemplate set $NAME $EVENT
setstate testWDT off
setstate testWDT 2019-10-02 10:10:00 currValue off
setstate testWDT 2019-10-02 10:10:00 nextUpdate 2019-10-03 10:05:00
setstate testWDT 2019-10-02 10:10:00 nextValue on
setstate testWDT 2019-10-02 10:10:00 state off
So einen richtigen Anpack sehe ich nicht, version lieferte Rev. 19806. Auch sonst gab es bisher keine Beschwerden in diese Richtung (und ich bin mir auch recht sicher, nichts geändert zu haben, was solche Auswirkungen haben könnte).
98_WeekdayTimer.pm 19806 2019-07-09 16:52:45Z Beta-User
Hmm, dann sollte das passen. Was ist denn der Status von Value("Status_Fussbodenheizung")?
Bei mir kommt in dem list nichts, was nach "delayed" klingt, vielleicht macht das den Unterschied. Das müßte dann aber aus dem Perl-Code kommen, was dann aber im Log stehten müßte. (Du sprichst doch vom FHEM-Log oder ist das Logfile des Devices gemeint?)
Sonst bin ich im Moment ratlos und würde das mal bei Gelegenheit auf einer Linux-Kiste nachstellen wollen (auch mit "if")...
Es handelt sich um den FHEM-Log.
Status_Fussbodenheizung ist ein Dummy, der um 6:00 Uhr über ein at abhängig von Außentemperatur gesetzt wird. Der Status war am entsprechenden Tag "on".
Selbst wenn er "off" gewesen wäre, hätte doch irgendetwas im Log auftauchen müssen.
So sieht ein erfolgreicher Schaltvorgang im Log aus (verbose 5):
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] time=08:45/1569998700 delay=0, nextDelay=60, nextRetry=1569998760
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.02 08:45:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.02 08:45:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] Update - timer seems to be active today: 0123456|08:45|20
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] aktParam: newParam:20.0 - is not disabled
2019.10.02 08:45:00 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %EVENT=>20.0,%NAME=>ZWave_THERMOSTAT_2
2019.10.02 08:45:00 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 20
Ich habe jetzt mal die Vorversion von 98_WeekdayTimer.pm eingespielt (19567) und schaue mal, was heute Abend passiert.
Puh, das ist vermutlich nicht weit genug zurück. Wann war denn davor das letzte update?
Würde sagen, du müßtest vor/wenigstens auf 19043 (eher noch weiter) zurück - das war im März nach der Änderung rund um $we... Dazwischen gab es nichts, was irgendwie mit der Timererstellung/Verarbeitung zu tun gehabt hätte.
Ok. Die Fußbodenheizung lief den Sommer über nicht, deshalb habe ich wohl nichts bemerkt.
Ich habe mal in ../restoreDir/update.. nachgeschaut: Ich habe 19567, 19043, 18591, 16005 ...
Mit 18591 ist es sicher noch gelaufen - das war im Februar.
Mit 19567 hat's geklappt:
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] time=22:55/1570049700 delay=0, nextDelay=60, nextRetry=1570049760
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond:0
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.02 22:55:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.02 22:55:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] Update - timer seems to be active today: 0123456|22:55|20
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] aktParam: newParam:20.0 - is not disabled
2019.10.02 22:55:00 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %NAME=>ZWave_THERMOSTAT_2,%EVENT=>20.0
2019.10.02 22:55:00 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 20
Seit dem Rückgang auf Version 19567 läuft bei mir wieder alles ohne Probleme. Das Problem hängt anscheinend an Version 19806.
Hmm,
sieht mir nach einem Problem mit dem letzten Wert aus, da scheint die Auswertung aus irgendeinem Grund nicht zu klappen, hier wurde was ähnliches berichtet: https://forum.fhem.de/index.php/topic,104272.0.html.
Kannst du die aktuelle Version nochmal nehmen und als workaround mal einen "gedoppelten" Schaltzeitpunkt einfügen, nämlich 23:59 Uhr - 20°C?
Läuft - weitere Infos morgen.
Mit 19806 hat jetzt alles geklappt, auch die letzte Schaltung um 23:59 Uhr. Ich versteh's auch nicht mehr.
Hmm, kannst du dann einfach nochmal den letzten Schaltzeitpunkt löschen?
(Wie geschrieben: mit meinem "normalen" Testdevice ging das auch reibungslos durch, dieses Problem konnte ich nicht so einfach nachstellen).
Mach ich.
Hat geklappt. ???
Danke für die Rückmeldung.
Kannst du das noch einige Zeit im Auge behalten? Wäre schon interessant, wie das list neulich zustande gekommen ist. Wie in dem anderen Thread berichtet, konnte ich auch bei intensiverer Analyse im Code bzw. beim Vergleich der Versionen nichts feststellen, das "sowas" verursacht haben könnte; allerdings ist der Code für mich auch etwas "undurchsichtig". Gerade deswegen beschränken sich die zwischenzeitlichen Änderungen auch auf das notwendigste (v.a. im Zusammenhang mit holiday2we).
(Wenn erst mal kein Handlungsbedarf mehr bestehen sollte, darfst du den Thread auch gerne als "vorläufig gelöst" kennzeichnen).
Gruß, Beta-User
Heute hat die letzte Schaltung nicht geklappt. im Reading nextUpdate steht jetzt (um 23:00 Uhr) immer noch 22:55:00.
:(
Wenn ich deine Symptome richtig deute, scheint das Problem erst am 2. Tag aufzutreten, richtig?
Ich werde mir mal den Code dahingehend nochmal ansehen, aber so einen richtigen Anpack habe ich nach wie vor nicht. Zwei Testszenarien sind denkbar:
1. zurück auf 19567 und da auch mal den 2. Tag abwarten (müßte eigentlich genauso _nicht_ funktionieren);
2. mit der aktuellen den weiteren Schaltzeitpunkt einbauen und dann mal schauen, ob das eine Änderung (ab dem 2. Tag) bewirkt...
Das vermute ich auch.
Anscheinend muss WeekdayTimer einmal über die Aktion laufen, die um 00:00:05 Uhr passiert.
Im Log ist allerdings nichts Auffälliges zu sehen:
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_2
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_3
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_1
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 07:03:54 19:21:06 Mittwoch
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 0: Sonntag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 1: Montag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 2: Dienstag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 3: Mittwoch)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 4: Donnerstag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 5: Freitag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 6: Samstag)
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] Heating recognized - switch in the past activated
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|06:15|28
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_1 2019-10-09 06:15:00
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|08:45|20
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_2 2019-10-09 08:45:00
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|21:45|28
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_3 2019-10-09 21:45:00
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.09 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|22:55|20
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-10-09 22:55:00
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_SetTimerOfDay
2019.10.09 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_SetTimerOfDay 2019-10-10 00:00:05
Ich teste jetzt mal Option 2 und melde mich am Freitag.
In dem Parallelthread habe ich eine Testversion gepostet. Bitte die mal austesten, und den Timer gleich auch mit "enable" zur Neuberechnung der Timer "ermuntern", dann brauchen wir nicht immer einen Tag zuzuwarten.
Allerdings habe ich da vorrangig das andere Thema im Auge gehabt, "dein" Problem könnte aber ein Seiteneffekt gewesen sein, wir werden sehen...
Test mit 19806 und zusätzlichem Schaltzeitpunkt um 23:59 Uhr ist jetzt gelaufen:
Am Tag der Änderung der Definition wird die letzte Schaltung um 23:59 Uhr ausgeführt, am darauffolgenden Tag nicht.
Ich teste jetzt mal die Testversion - Ergebnis am Sonntag.
Thx.
Eine Anmerkung evtl. noch: zur Doku sind bei einem WDT lists wirklich hilfreich. Wir werden allerdings mit der neuen Fassung gleich "am 2. Tag" starten, da dort das "enable" direkt ausgeführt wird. Eventuell wäre es eine Idee, die beiden Zeilen am Ende von "Start" noch auszukommentieren, ich bin da noch etwas unsicher, was die richtige Vorgehensweise an der Stelle ist...
Das ist das aktuelle List mit 19806:
Internals:
COMMAND { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
CONDITION
DEF ZWave_THERMOSTAT_2 06:15|28 08:45|20 21:45|28 22:55|20 23:59|20 { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
DEVICE ZWave_THERMOSTAT_2
FUUID 5c447ba1-f33f-c1fa-ad2b-49e10c535265c659
GlobalDaylistSpec
LANGUAGE de
NAME Timer_Fussbodenheizung
NR 215
Profil 0: Sonntag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 1: Montag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 2: Dienstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 3: Mittwoch 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 4: Donnerstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 5: Freitag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
Profil 6: Samstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20, 23:59:00 20
STATE 28
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
currValue:
myDbLog:
TIME 1570767300.03917
VALUE 28
nextUpdate:
myDbLog:
TIME 1570767300.03917
VALUE 2019-10-11 08:45:00
nextValue:
myDbLog:
TIME 1570767300.03917
VALUE 20
state:
myDbLog:
TIME 1570767300.03917
VALUE 28
READINGS:
2019-10-11 06:15:00 currValue 28
2019-10-06 09:34:11 disabled 0
2019-10-11 06:15:00 nextUpdate 2019-10-11 08:45:00
2019-10-11 06:15:00 nextValue 20
2019-10-11 06:15:00 state 28
SWITCHINGTIMES:
06:15|28
08:45|20
21:45|28
22:55|20
23:59|20
TIMER:
Timer_Fussbodenheizung_1:
HASH Timer_Fussbodenheizung
MODIFIER 1
NAME Timer_Fussbodenheizung_1
Timer_Fussbodenheizung_2:
HASH Timer_Fussbodenheizung
MODIFIER 2
NAME Timer_Fussbodenheizung_2
Timer_Fussbodenheizung_3:
HASH Timer_Fussbodenheizung
MODIFIER 3
NAME Timer_Fussbodenheizung_3
Timer_Fussbodenheizung_4:
HASH Timer_Fussbodenheizung
MODIFIER 4
NAME Timer_Fussbodenheizung_4
Timer_Fussbodenheizung_5:
HASH Timer_Fussbodenheizung
MODIFIER 5
NAME Timer_Fussbodenheizung_5
immerSchalten 1
Timer_Fussbodenheizung_SetTimerOfDay:
HASH Timer_Fussbodenheizung
MODIFIER SetTimerOfDay
NAME Timer_Fussbodenheizung_SetTimerOfDay
SETTIMERATMIDNIGHT 1
Timer_Fussbodenheizung_delayed:
HASH Timer_Fussbodenheizung
MODIFIER delayed
NAME Timer_Fussbodenheizung_delayed
dayNumber:
!$we 8
$we 7
di 2
do 4
fr 5
mi 3
mo 1
sa 6
so 0
helper:
daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
SWITCHINGTIME:
0:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
1:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
2:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
3:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
4:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
5:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
6:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
23:59:00 20
longDays:
de:
Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Wochenende
Werktags
en:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
weekend
weekdays
fr:
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
weekend
jours de la semaine
profil:
1:
EPOCH 1570767300
PARA 28
TIME 06:15
TAGE:
0
1
2
3
4
5
6
2:
EPOCH 1570776300
PARA 20
TIME 08:45
TAGE:
0
1
2
3
4
5
6
3:
EPOCH 1570823100
PARA 28
TIME 21:45
TAGE:
0
1
2
3
4
5
6
4:
EPOCH 1570827300
PARA 20
TIME 22:55
TAGE:
0
1
2
3
4
5
6
5:
EPOCH 1570831140
PARA 20
TIME 23:59
TAGE:
0
1
2
3
4
5
6
profile_IDX:
0:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
1:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
2:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
3:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
4:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
5:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
6:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
23:59:00 5
shortDays:
de:
so
mo
di
mi
do
fr
sa
$we
!$we
en:
su
mo
tu
we
th
fr
sa
$we
!$we
fr:
di
lu
ma
me
je
ve
sa
$we
!$we
Attributes:
commandTemplate set $NAME desired-temp $EVENT
disable 0
room Badezimmer
verbose 5
Wirklich mysteriös. Unterstellt, das ist das list ohne Neustart am 3. Tag, steht der Schaltzeitpunkt ordnungsgemäß da... Und es ist kein Grund ersichtlich, warum der nicht ausgeführt werden sollte.
Dann glaube ich auch nicht recht daran, dass die neue Fassung an dem Befund was ändert. (*Kopfkratz*)
Dann gehe ich mal sukzessive auf die älteren Versionen zurück und teste die mal.
Ich war schon erfolgreich: Mit 19567 hat es auch am zweiten Tag geklappt.
Ich habe den Log mal durchgeschaut, wo es Unterschiede zwischen 19567 und 19806 gibt, und bin fündig geworden.
Dazu muss ich etwas ausholen:
Bei mir wird morgens um 6:00 Uhr über ein at abhängig von der aktuellen Außentemperatur und der Wettervorhersage der Dummy Status_Fussbodenheizung gesetzt:
Internals:
COMMAND { if ((Value("Urlaub") eq "off") && (ReadingsNum("Wettervorhersage","fc0_tempMax",0) < 25) && (ReadingsNum("Klima_aussen","temperature",0) < 17))
{ fhem("set Status_Fussbodenheizung on") } else { fhem("set Status_Fussbodenheizung off") } }
DEF *06:00 { if ((Value("Urlaub") eq "off") && (ReadingsNum("Wettervorhersage","fc0_tempMax",0) < 25) && (ReadingsNum("Klima_aussen","temperature",0) < 17))
{ fhem("set Status_Fussbodenheizung on") } else { fhem("set Status_Fussbodenheizung off") } }
FUUID 5c447ba1-f33f-c1fa-cd2c-c8e90c3ff5ed3047
NAME Fussbodenheizung_set_status
NR 153
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 06:00:00
TIMESPEC 06:00
TRIGGERTIME 1571025600
TRIGGERTIME_FMT 2019-10-14 06:00:00
TYPE at
READINGS:
2019-10-13 06:00:00 state Next: 06:00:00
Attributes:
room Badezimmer
Das löst ein notify aus, das Timer_Fussbodenheizung auf "enable" oder "disable" setzt:
Internals:
DEF Status_Fussbodenheizung.* { if ($EVENT eq "off") {
fhem("set ZWave_THERMOSTAT_2 tmOff; set Timer_Fussbodenheizung disable"); }
if (($EVENT eq "on") && (Value("Urlaub") eq "off")) {
fhem("set ZWave_THERMOSTAT_2 tmHeating; set Timer_Fussbodenheizung enable") }
}
FUUID 5c447ba1-f33f-c1fa-369b-36d2dbfff7346bf9
NAME notify_Fussbodenheizung
NOTIFYDEV Status_Fussbodenheizung.*
NR 202
NTFY_ORDER 50-notify_Fussbodenheizung
REGEXP Status_Fussbodenheizung.*
STATE 2019-10-13 06:00:00
TRIGGERTIME 1570939200.01378
TYPE notify
READINGS:
2019-10-11 09:25:15 state active
Attributes:
room Badezimmer
Während der ganzen Tests waren übrigens die Bedingungen so, dass Timer_Fussbodenheizung immer auf "enable" gesetzt wurde:
In der Version 19806 sieht dieser Vorgang im Log so aus:
2019.10.08 06:00:00 3: [Timer_Fussbodenheizung] set Timer_Fussbodenheizung enable
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_2
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_1
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_3
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 07:02:24 19:23:09 Dienstag
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 0: Sonntag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 1: Montag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 2: Dienstag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 3: Mittwoch)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 4: Donnerstag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 5: Freitag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 6: Samstag)
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] Heating recognized - switch in the past activated
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|06:15|28
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_1 2019-10-08 06:15:00
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|08:45|20
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_2 2019-10-08 08:45:00
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|21:45|28
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_3 2019-10-08 21:45:00
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|22:55|20
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-10-08 22:55:00
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] time=22:55/1570568100 delay=-60900, nextDelay=-60780, nextRetry=1570507320
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.10.08 06:00:00 4: [Timer_Fussbodenheizung] past timer on ZWave_THERMOSTAT_2 at 2019-10-07 22:55:00 with 20 activated
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_delayed
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_delayed 2019-10-08 06:00:05
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_SetTimerOfDay
2019.10.08 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_SetTimerOfDay 2019-10-09 00:00:05
2019.10.08 06:00:05 4: ZWave_THERMOSTAT_2 2019-10-07 22:55:00 25505.1071169376s
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-10-07 22:55:00
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] time=22:55/1570568100 delay=-60895, nextDelay=-60780, nextRetry=1570507320
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:7,8
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}();;;;( 1 && (defined $days->{$wday} || $we || !$we))}
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.10.08 06:00:05 5: [Timer_Fussbodenheizung] result of condition:1
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] Update - past timer activated
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] aktParam: newParam:20.0 - is not disabled
2019.10.08 06:00:05 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %NAME=>ZWave_THERMOSTAT_2,%EVENT=>20.0
2019.10.08 06:00:05 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 20
in der Version 19567 so:
2019.10.12 06:00:00 3: [Timer_Fussbodenheizung] set Timer_Fussbodenheizung enable
Danke für die umfangreiche Fehleranalyse.
Ich versuche grade, den Code wieder in diese Richtung zu ändern, dabei aber die deutlich komplexere Auswertung, ob bzw. wann denn jetzt $we ist, (die mit 19806 kam) auf eine andere, zentrale Stelle zu verlagern (die dann auch nur einmal am Tag/auf Anforderung erneuert wird). Mal sehen, ob wir das damit dann in den Griff bekommen. Bis dahin habe ich weiter keine wirkliche Idee, warum diese Änderung diese Auswirkung hat ??? . Aber vielleicht komme ich noch drauf, es hilft mir jedenfalls schon mal deutlich weiter.
Lass dir Zeit - ich komme bis Ende nächster Woche eh nicht zum Testen.
Gibt's schon eine neue Version? Ich bin jetzt wieder da und könnte was testen.
Es gibt zwar eine Testversion im Parallelthread, aber die dürfte dein Problem auch nicht beseitigen, die ist nur insofern besser, als die Auswertung, welche "relativen" Tage Wochenende sind, nur noch einmal am Tag bzw. bei "enable" gemacht werden und der Code auch gleich für den Tag initialisiert wird.
Tendenziell muß ich da nochmal grundlegender an den Code ran, hatte aber bisher nicht die mentale Ruhe für so eine "große Aktion". Ich melde mich, wenn es was wirklich neues gibt...
alles klar
Thx. Auch hier die Info:
Durch den update, den ich eben ins svn geschubst habe, ist das ausdrücklich nicht behoben; der bringt nur etwas mehr Transparenz dahingehend, was das IsWe()-Umfeld so an Ergebnis liefert, verstetigt das intern für den einzelnen Tag und initialisiert die Timer etwas anders als bisher (das waren die Änderungen im Parallelthread) und ergänzt HMCCUDEV als FK-Typ (das war der eigentliche Anlaß).
Hallo,
zur Info: Bei mir habe ich das gleiche Problem. Die WeekdayTimer Devices initialisieren nach einem Restart korrekt und setzen die Timer. (Den Restart habe ich jeden Nacht geplant.) Die ersten Timer funktionieren auch problemlos. Mir scheint, dass dann der aber der letzte Timer am Tag nicht mehr funktioniert. Keine Einträge im FHEM Log - als ob der Timer gelöscht wurde. Allerdings ist dies auch nicht immer durchgängig so. Ich habe trotz intensiver Beobachtung noch nicht herausgefunden, wann es für welches Device funktioniert und wann nicht. Mehrheitlich geht es aber nicht.
Hmm, irgendwie habe ich weiter keinen richtigen Anpack zu dem ganzen...
Lelle:
Irgendein Anhaltspunkt wäre hilfreich (ich nehme auch wilde Spekulationen entgegen...).
Leider scheint es auch nicht mit Zeilenumbrüchen in der DEF zu tun zu haben (siehe https://forum.fhem.de/index.php/topic,105272.msg992401.html#msg992401 (https://forum.fhem.de/index.php/topic,105272.msg992401.html#msg992401)). Dafür kommt vermutlich demnächst auch wieder ein update (das euer Problem hier aber leider wieder nicht lösen wird).
Grundsätzlich aber die Frage: Muß ein Restart jede Nacht sein? Mein Server läuft in der Regel durch, wenn ich nicht grade irgendwas teste, und das mit dem Memory leak (da gab es einen Mega-Thread zu) scheint auch einigermaßen gelöst zu sein...
Mein Server läuft durch. Ich habe den Eindruck, dass wenn man einen Timer definiert oder die Definition ändert (z.B. die Zeiten) dieser an diesem Tag einwandfrei funktioniert. Erst an den darauffolgenden Tagen wird die letzte Schaltung nicht mehr ausgeführt.
Das ist echt irritierend, denn eigentlich sehe ich keinen wirklichen Unterschied, auf welchem Weg man die Timer generiert (ob durch die Mitternachtsroutine oder durch das Laden oder durch "set enable". Aber ich schau's mir nochmal an, irgendwo muß das ja herkommen.
Völlig doof ist, dass u.a. Lelle sporadische Ausfälle von einzelnen Timern zu haben scheint. Da ist es noch schwerer, das zu lokalisieren (jedenfalls für mich, aber evtl. hat ja jemand anders eine Idee?).
Es ist etwa 19:30 Uhr und ich habe mir einen der WeekdayTimer angeschaut. Dieser hätte eigentlich um 17:00 Uhr den Thermostat auf 12 Grad runtersetzen sollen. Aktueller Status des Devices ist Folgender. Bitte die Readings in rot beachten:
defmod Heizung.AZ.Profil.Arbeiten WeekdayTimer AZ.Thermostat 12345|06:45|21 12345|17:00|12
attr Heizung.AZ.Profil.Arbeiten WDT_Group former_HC
attr Heizung.AZ.Profil.Arbeiten WDT_delayedExecutionDevices 1
attr Heizung.AZ.Profil.Arbeiten commandTemplate set $NAME thermostatSetpointSet $EVENT
attr Heizung.AZ.Profil.Arbeiten devStateIcon aktiv:10px-kreis-gruen undef:10px-kreis-gelb inaktiv:10px-kreis-grau
attr Heizung.AZ.Profil.Arbeiten disable 0
attr Heizung.AZ.Profil.Arbeiten group Heizung
attr Heizung.AZ.Profil.Arbeiten icon sani_heating_timer
attr Heizung.AZ.Profil.Arbeiten room Arbeitszimmer,Heizung,ZWave
attr Heizung.AZ.Profil.Arbeiten stateFormat { my $curVal = ReadingsVal("Heizung.AZ.Profil.Arbeiten", "disabled", "undef");;;;;;;; $curVal =~ s/.*0.*/aktiv/;;;;;;;; $curVal =~ s/.*1.*/inaktiv/;;;;;;;; return $curVal }
attr Heizung.AZ.Profil.Arbeiten verbose 1
setstate Heizung.AZ.Profil.Arbeiten aktiv
setstate Heizung.AZ.Profil.Arbeiten 2019-11-13 06:45:00 currValue 21
setstate Heizung.AZ.Profil.Arbeiten 2019-11-13 00:01:30 disabled 0
setstate Heizung.AZ.Profil.Arbeiten 2019-11-13 06:45:00 nextUpdate 2019-11-13 17:00:00
setstate Heizung.AZ.Profil.Arbeiten 2019-11-13 06:45:00 nextValue 12
setstate Heizung.AZ.Profil.Arbeiten 2019-11-13 06:45:00 state 21
Für mich sieht das genau danach aus, was auch passiert ist - nämlich nichts. Der Timer hat schlicht seinen Einsatz um 17:00 verpennt. Auch im Log ist für den Zeitpunkt nichts zu sehen (wobei aktuell keinen debug mode fahre).
Hmm, hast du auch noch ein list? (Da stehen auch die Profile usw. drin).
FHEM-uptime ist > 20h? (Also "Mitternachts-Aktualisierung" ist durch?)
Hast du noch (je) einen Timer, der entweder
- noch eine Schaltung hat oder
- einen ausdrücklichen Schaltbefehl hinten angefügt hat?
Ich habe die Murmel "leider" heute morgen neu gestartet, das könnte das Ergebnis verfälschen. Jetzt habe ich mir mal alle Timer anzeigen lassen und zu meiner Überraschung festgestellt, dass nur einer der WDT einen laufenden "midnight-update-timer" hat (es sollten nach meinem Verständnis eigentlich alle sein, mindestens aber die, deren letzte Schaltzeit durch ist). Könnte darauf deuten, dass es evtl. Wechselwirkungen gibt, die mir bisher verborgen waren. Eventuell könnt ihr aber auch mal versuchen, etwas tiefer mit zu graben:
Befehl für die Kommandozeile - gibt alle laufenden InternalTimer aus, geordnet nach Schaltzeitpunkt:
{listInternalTimer("t")}
{listInternalTimer("f")}
Dazu braucht man eine passende myUtils-Routine aus dem Anhang (am einfachsten den Anhang nehmen und ins Modul-Verzeichnis mit den richtigen Rechten legen, da ist auch eine cref drin, Anzeige ohne commandref-Aktualisierung mit help.).
Muss ich auf morgen verschieben. Sorry.
Zitat von: Lelle am 13 November 2019, 20:22:00
Muss ich auf morgen verschieben. Sorry.
Kein Ding...
Habe übrigens festgestellt, dass der "listInternalTimer"-Code schuld war, dass nicht alles zu sehen war >:( : Mit dem "t"-Argument wird nur der letzte Timer gelistet, der zu einem bestimmten Zeitpunkt ausgeführt werden soll... Besser "f" verwenden (oder gar nichts), da (mit "f" kommen dann auch alle zu einem Gerät gehörenden Timer nacheinander).
(Sorry, habe den Code auch nur woanders geklaut, Quelle ist angegeben...)
(Damit bin ich jetzt leider wieder kein Schrittchen weiter).
Frage: Kann es sein, dass die nicht funktionierenden WDT alle solche sind, die in der Vergangenheit schalten sollten (also entweder als Heizung erkannt werden oder das entsprechende Attribut aktiviert? (Dann müßte der Fehler tendenziell in Zeilen 702ff entstehen?)
So, anbei eine aktualisierte Version mit der Bitte um Test...
Kann aber sein, dass da gewaltig was schiefgeht und/oder das nur das Problem der "doppelten timer" aus dem anderen Thread löst, bitte zur Sicherheit Kopie der aktuellen update-Version bereithalten.
Gruß, Beta-User
Erstmal anbei nochmals - aktuell - die Device Definition und das List. Ist die selbe Situation wie gestern: Die Schaltung wurde nicht vollzogen. Bei diesem Profile ist das fast immer der Fall ...
Zweitens habe ich das 99_myAdvancedUtils.pm in das FHEM Verzeichis kopiert und die Permissions/Owner entsprechend gesetzt. Leider bekomme ich die Routine listInternalTimer nicht zum Laufen. Fehler: Undefined subroutine &main::listInternalTimer called at (eval 10590) line 1.
Vermutlich habe ich etwas nicht beachtet ... :-[ Bin leider nicht so tief drin ...
Drittens habe ich das neue WeekdayTimer Modul mal noch nicht eingespielt, weil ich erstmal die listInternalTimer Routine laufen lassen wollte.
Und zuletzt versuche ich noch ein Teil deiner Fragen zu beantworten :-) Meine WeekdayTimer Devices sind alle auf Thermostate bezogen. Sie sind alle wie Heizung.AZ.Profil.Arbeiten zusammengebaut, also [Wochentage]|[Uhrzeit]|[Temperatur] und ggf. weitere solche Einträge. Es gibt Profile, die mehrfach am Tag schalten. Z.B. Heizung.Kueche.Profil.Schule (siehe Anhang). Aber auch für dieses Profil gilt, dass der letzte Eintrag ***oft*** nicht schaltet. (Aktuell ist dieses Profil disabled, kann ich aber wieder einschalten.)
Weiß nicht, ob das nun weiterhilft ....
Dass das mit dem InternaltTimer-list-Code nicht wollte, hat vermutlich damit zu tun, dass FHEM die erst laden muss. Dazu am einfachsten entweder via FHEMWEB editieren (oder FHEM neu starten was wir aber grade nicht wollten...).
Habe grade die Testversion auch im Produktivsystem eingespielt, das sieht erst mal plausibel aus, was man da an timern sieht (nach "... WDT_parms all"). Offen ist aber noch, ob das auch am WE paßt. Wenn ja, kommt bald ein update :) .
Kann es sein, dass die die schalten alle "einfache" WDT sind, die kein WE kennen (oder zumindest an allen Wochentagen (mit !$we usw.) durchlaufen)?
anbei erstmal der ListInternalTimer Output
So, habe nun das aktualisierte WDT Modul aktiviert und den dazu noch den nächtlichen Restart mal deaktiviert. Nun mal warten und hoffen :-)
Hallo zusammen,
seit eben ist eine neue Version im svn (die hier gepostete mit aktualisierter Formatierung, entfernten Kommentaren usw.).
Bitte um Rückmeldung, wenn es damit Probleme geben sollte bzw. das Problem weiter besteht.
Gruß, Beta-User
Kriege ich die per "update"?
Ja.
Ablauf ist immer: Maintainer checkt was ins svn ein, jeden Morgen kurz vor 8:00 Uhr läuft ein Automatismus, der den Stand zu diesem Zeitpunkt dann für "update"-Anfragen aus FHEM bereitstellt.
Der Hinweis auf svn war bzw. ist jeweils nur für die gedacht, die gleich testen wollen; von da kann man es gleich nach dem Einchecken holen (bzw. in der Regel wenige Sekunden später).
Ok, ich fange morgen mal mit dem Test an.
Hi,
bei mir hat das Update definitiv eine Besserung gebracht. Von 5 Timern klappt es nun bei 4. Der 5. hatt noch keinen Log Eintrag (also vermutlich keinen Timer). Ich hab den nun einfach einmal gelöscht und nochmal angelegt - vielleicht bringt das ja was.
BG Tobias
Ich habe gestern ein Update gemacht (Version zeigt 20533).
Leider hat heute Abend die letzte Schaltung wieder nicht geklappt.
Hier ein List (um 23:02 Uhr gezogen):
Internals:
COMMAND { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
CONDITION
DEF ZWave_THERMOSTAT_2 06:15|28 08:45|20 21:45|28 22:55|20 { if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2); fhem("set $NAME setpointHeating $Value") } }
DEVICE ZWave_THERMOSTAT_2
FUUID 5c447ba1-f33f-c1fa-ad2b-49e10c535265c659
GlobalDaylistSpec
LANGUAGE de
NAME Timer_Fussbodenheizung
NR 213
Profil 0: Sonntag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 1: Montag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 2: Dienstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 3: Mittwoch 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 4: Donnerstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 5: Freitag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
Profil 6: Samstag 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20
STATE 28
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
currValue:
myDbLog:
TIME 1574369100.0426
VALUE 28
nextUpdate:
myDbLog:
TIME 1574369100.0426
VALUE 2019-11-21 22:55:00
nextValue:
myDbLog:
TIME 1574369100.0426
VALUE 20
state:
myDbLog:
TIME 1574369100.0426
VALUE 28
READINGS:
2019-11-21 21:45:00 currValue 28
2019-11-20 23:05:06 disabled 0
2019-11-21 21:45:00 nextUpdate 2019-11-21 22:55:00
2019-11-21 21:45:00 nextValue 20
2019-11-21 21:45:00 state 28
SWITCHINGTIMES:
06:15|28
08:45|20
21:45|28
22:55|20
TIMER:
Timer_Fussbodenheizung_1:
HASH Timer_Fussbodenheizung
MODIFIER 1
NAME Timer_Fussbodenheizung_1
Timer_Fussbodenheizung_2:
HASH Timer_Fussbodenheizung
MODIFIER 2
NAME Timer_Fussbodenheizung_2
Timer_Fussbodenheizung_3:
HASH Timer_Fussbodenheizung
MODIFIER 3
NAME Timer_Fussbodenheizung_3
Timer_Fussbodenheizung_4:
HASH Timer_Fussbodenheizung
MODIFIER 4
NAME Timer_Fussbodenheizung_4
immerSchalten 1
Timer_Fussbodenheizung_SetTimerOfDay:
HASH Timer_Fussbodenheizung
MODIFIER SetTimerOfDay
NAME Timer_Fussbodenheizung_SetTimerOfDay
SETTIMERATMIDNIGHT 1
Timer_Fussbodenheizung_delayed:
HASH Timer_Fussbodenheizung
MODIFIER delayed
NAME Timer_Fussbodenheizung_delayed
dayNumber:
!$we 8
$we 7
di 2
do 4
fr 5
mi 3
mo 1
sa 6
so 0
helper:
daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
SWITCHINGTIME:
0:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
1:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
2:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
3:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
4:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
5:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
6:
06:15:00 28
08:45:00 20
21:45:00 28
22:55:00 20
WEDAYS:
2 1
3 1
longDays:
de:
Sonntag
Montag
Dienstag
Mittwoch
Donnerstag
Freitag
Samstag
Wochenende
Werktags
en:
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
weekend
weekdays
fr:
Dimanche
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Samedi
weekend
jours de la semaine
profil:
1:
EPOCH 1574313300
PARA 28
TIME 06:15
TAGE:
0
1
2
3
4
5
6
2:
EPOCH 1574322300
PARA 20
TIME 08:45
TAGE:
0
1
2
3
4
5
6
3:
EPOCH 1574369100
PARA 28
TIME 21:45
TAGE:
0
1
2
3
4
5
6
4:
EPOCH 1574373300
PARA 20
TIME 22:55
TAGE:
0
1
2
3
4
5
6
profile_IDX:
0:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
1:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
2:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
3:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
4:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
5:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
6:
06:15:00 1
08:45:00 2
21:45:00 3
22:55:00 4
shortDays:
de:
so
mo
di
mi
do
fr
sa
$we
!$we
en:
su
mo
tu
we
th
fr
sa
$we
!$we
fr:
di
lu
ma
me
je
ve
sa
$we
!$we
Attributes:
commandTemplate set $NAME desired-temp $EVENT
disable 0
room Badezimmer
verbose 5
Man sieht, dass nextUpdate immer noch auf 22:55:00 steht.
Auch im Log ist nichts zu finden.
Nicht gut...
Habe mal versucht, das nachzustellen, allerdings mit der "weekprofile"-Version (die aber dieselben Probleme aufweisen müßte). Jedenfalls für Tag 1 konnte ich keine Probleme mit identischen Schaltzeitpunkten mehrerer WDT feststellen, die auf switchInThePast eingestellt waren.
Ist das bei euch auch so und das Problem tritt wieder nur ab Tag 2 auf?
Trotzdem mal noch ein paar weitere Fragen an euch, die ich vor dem Test mal gesammelt hatte:
- gibt es weitere WDT, die genau zur gleichen Zeit schalten sollen (und Heizungs-Devices bzw. timerInThePast aktiviert haben)? (also bei @butsify 1-3 unterschiedlich/kein TiP, 4+5 identische letzte Zeit und TiP); (@JWRu: hast du da evtl. einen anderen/weitere WDT definiert bzw. so geändert?) @Lelle: Schalten die 22:30-Uhr WDT's bei dir jetzt mit der aktuellen Version alle oder auch (nur einer?) nicht?
- Was die laufenden Timer angeht: lt. dem list von @JWRu sollten eigentlich delayed-Timer aktiv sein. Die Frage wäre, auf welcher Zeit der steht (er sollte eigentlich auf die kommende ganze Minute nach Aufruf der Funktion zur Timer-Abfrage gestellt sein). Meine Vermutung: der wird immer wieder aktualisiert, aber er führt die Schaltung nicht aus (die mit dem "immerSchalten"-Kenner). Wäre gut zu wissen, ob das so ist.
Außerdem wäre es hilfreich, wenn ihr die Timer mal zu Tagesbeginn bzw. jedenfalls vor der letzten Schaltung ansehen könntet. Das list deutet darauf hin, dass die timer alle gesetzt werden und bis zum letzten Schaltzeitpunkt auch alles ok ist.
Gruß, Beta-User
Ich habe nur einen einzigen WDT.
Ich poste hier nochmal alle Log-Einträge des WDT von gestern (verbose 5).
Die Mitternachtsroutine:
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 07:08:37 17:13:07 Donnerstag
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 0: Sonntag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 1: Montag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 2: Dienstag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 3: Mittwoch)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 4: Donnerstag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 5: Freitag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 6: Samstag)
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] Heating recognized - switch in the past activated
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|06:15|28
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_1 2019-11-21 06:15:00
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|08:45|20
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_2 2019-11-21 08:45:00
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|21:45|28
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_3 2019-11-21 21:45:00
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 00:00:05 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|22:55|20
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-11-21 22:55:00
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_SetTimerOfDay
2019.11.21 00:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_SetTimerOfDay 2019-11-22 00:00:05
um 6:00 Uhr wird über ein at der WDT auf enable gesetzt:
2019.11.21 06:00:00 3: [Timer_Fussbodenheizung] set Timer_Fussbodenheizung enable
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_3
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_2
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_1
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 07:08:37 17:13:07 Donnerstag
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 0: Sonntag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 1: Montag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 2: Dienstag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 3: Mittwoch)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 4: Donnerstag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 5: Freitag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] 06:15:00 28, 08:45:00 20, 21:45:00 28, 22:55:00 20 (Profil 6: Samstag)
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] Heating recognized - switch in the past activated
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|06:15|28
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_1 2019-11-21 06:15:00
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|08:45|20
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_2 2019-11-21 08:45:00
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|21:45|28
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_3 2019-11-21 21:45:00
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] setTimer - timer seems to be active today: 0123456|22:55|20
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-11-21 22:55:00
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] time=22:55/1574373300 delay=-60900, nextDelay=-60780, nextRetry=1574312520
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] past timer on ZWave_THERMOSTAT_2 at 2019-11-20 22:55:00 with 20 activated
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_delayed
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_delayed 2019-11-21 06:00:05
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_SetTimerOfDay
2019.11.21 06:00:00 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_SetTimerOfDay 2019-11-22 00:00:05
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] ZWave_THERMOSTAT_2 2019-11-20 22:55:00 25505.0851130486s
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] removing Timer: Timer_Fussbodenheizung_4
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] setting Timer: Timer_Fussbodenheizung_4 2019-11-20 22:55:00
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] time=22:55/1574373300 delay=-60895, nextDelay=-60780, nextRetry=1574312520
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:8
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}();;;;( 1 && (defined $days->{$wday} || !$we))}
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:00:05 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] Update - past timer activated
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] aktParam: newParam:20.0 - is not disabled
2019.11.21 06:00:05 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %NAME=>ZWave_THERMOSTAT_2,%EVENT=>20.0
2019.11.21 06:00:05 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 20
um 6:15 Uhr ist der erste Schaltzeitpunkt:
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] time=06:15/1574313300 delay=0, nextDelay=60, nextRetry=1574313360
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 06:15:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 06:15:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] Update - timer seems to be active today: 0123456|06:15|28
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] aktParam: newParam:28.0 - is not disabled
2019.11.21 06:15:00 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %EVENT=>28.0,%NAME=>ZWave_THERMOSTAT_2
2019.11.21 06:15:00 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 28
um 8:45 Uhr der zweite:
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] time=08:45/1574322300 delay=0, nextDelay=60, nextRetry=1574322360
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 08:45:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 08:45:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] Update - timer seems to be active today: 0123456|08:45|20
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] aktParam: newParam:20.0 - is not disabled
2019.11.21 08:45:00 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %EVENT=>20.0,%NAME=>ZWave_THERMOSTAT_2
2019.11.21 08:45:00 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 20
um 21:45 Uhr der dritte:
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] time=21:45/1574369100 delay=0, nextDelay=60, nextRetry=1574369160
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] delayedExecutionCond:0
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] result of delayedExecutionCond: 0
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] list of window sensors found: 'Timer_Fussbodenheizung'
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] condition: - Tage:0,1,2,3,4,5,6
2019.11.21 21:45:00 5: [Timer_Fussbodenheizung] condition: {my $days={};;map{$days->{$_}=1}(0,1,2,3,4,5,6);;;;( 1 && (defined $days->{$wday}))}
2019.11.21 21:45:00 5: [Timer_Fussbodenheizung] result of condition: 1
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] Update - timer seems to be active today: 0123456|21:45|28
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] device type heating recognized, setModifier:desired-temp
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] aktParam: newParam:28.0 - is not disabled
2019.11.21 21:45:00 4: [Timer_Fussbodenheizung] command: '{ if (Value("Status_Fussbodenheizung") eq "on") { my $Value = substr($EVENT,0,2);; fhem("set $NAME setpointHeating $Value") } }' executed with %NAME=>ZWave_THERMOSTAT_2,%EVENT=>28.0
2019.11.21 21:45:00 3: ZWave set ZWave_THERMOSTAT_2 setpointHeating 28
Wie schon erwähnt taucht für den vierten Schaltzeitpunkt um 22:55 Uhr nichts im Log auf.
Hmmm,
das sieht danach aus, als würde der Timer sauber gesetzt, das ganze kommt sich aber ins Gehege mit einem nicht abgearbeiteten (?) Timer vom Vortag (?):
Zitat2019.11.21 06:00:00 4: [Timer_Fussbodenheizung] time=22:55/1574373300 delay=-60900, nextDelay=-60780, nextRetry=1574312520
{localtime(1574373300)} ist korrekt 21.11., 22:55 Uhr, aber nextRetry liegt auf 06:02 Uhr...?!?
Es liegt also möglicherweise an der Verzögerung; dann sollte man den Timer auch am ersten Tag nach Ablauf der eigentlichen Schaltzeit noch sehen (das war jedenfalls bei meinen im Testsystem wie gesagt nicht der Fall), oder eben in dem "enable"-Befehl. Im letzteren Fall hatten wir es ursprünglich mit zwei Problemen zu tun, von denen das eine - zu viele Timer - gelöst sein müßte.
Da ich das in meinem Testsystem nicht nachvollziehen konnte und auch Probleme, hatte, Dinge zu loggen, folgende Bitten (verbose auf 5 lassen):
- Schau erst mal nach, ob alle theoretisch noch anstehenden Timer vorhanden sind (vermutlich fehlt der letzte?).
- Gibt es einen verzögerten ("delay" im Namem)?
- Dann mal ein "set ... enable" ausführen
-> ist was bzgl. des letzten Timers im log, das aussieht wie die Zeile oben?
Evtl. muß ich bei "enable" noch was einbauen, das eventuelle verzögerte Timer auch noch löscht. "Präventiv" will ich das aber nicht machen, das könnte nämlich auch ungewollte Nebenwirkungen haben, wenn tatsächlich noch was "übrig" ist vom Vortag; weiß nicht sicher, ob der WDT für den letzten Befehl in den Vortag geht, wenn swip aktiviert/das eine Heizung ist.
EDIT:
Um die "präventive Lösung" zu testen, kannst du mal eine Zeile für "delayed" in die sub WeekdayTimer_SetTimerOfDay($) einfügen:
$hash->{SETTIMERATMIDNIGHT} = $myHash->{SETTIMERATMIDNIGHT};
WeekdayTimer_DeleteTimer($hash);
WeekdayTimer_RemoveInternalTimer("delayed", $hash);
WeekdayTimer_Profile ($hash);
WeekdayTimer_SetTimer ($hash);
Edit: Ich bin einen logischen Schritt weiter. Ursache ist tatsächlich, dass das Ding in der Vergangenheit schaltet, und zwar auch auf den Wert, der sich aus dem Vortag ergibt ;D .
Das ist an sich clever, nur geht dann der zukünftige Timer auch kaputt, weil er als abgearbeitet gilt. Das wiederum ist für Timer am denselben Tag clever, für Timer aus dem Vortag dagegen nicht sooo clever...
Muß das irgendwie abfangen, weiß aber noch nicht so recht wie.
Einstweilen der Hinweis: Diese Bedingung sollte sich auch anders lösen lassen wie über enable/disable (soll aber mittelfristig wieder funktionieren, das ist schon klar...).
Zitat von: JWRu am 21 November 2019, 23:05:24
Ich habe gestern ein Update gemacht (Version zeigt 20533).
Leider hat heute Abend die letzte Schaltung wieder nicht geklappt.
Kann ich nach dem 2. Tag auch bestätigen.
Zitat von: Beta-User am 22 November 2019, 16:20:14
Edit: Ich bin einen logischen Schritt weiter. Ursache ist tatsächlich, dass das Ding in der Vergangenheit schaltet, und zwar auch auf den Wert, der sich aus dem Vortag ergibt ;D .
Bin schon gespannt, ob es da eine Lösung geben wird :)
Wenn ich irgendwelche Infos liefern kann, die hier vielleicht weiterhelfen, dann gib mir einfach Bescheid!
LG
So, immerhin eine Verbesserung, ob es "die" Lösung ist, wird sich zeigen.
Würde mich freuen, wenn ihr so mutig wärt, die Testversion von hier (https://forum.fhem.de/index.php/topic,105521.msg995809.html#msg995809) zu verwenden, die kann auch mit weekprofile-Temperaturlisten umgehen, es erfordert aber einen FHEM-Restart nach der Ersetzung der pm, also nicht wundern, wenn ein reload nicht klappen sollte...
Ansonsten müßte ich ein diff aus den zwei dort geposteten Versionen machen und damit die aktuelle Version patchen, aber das lohnt m.E. fast nicht, die "weekprofile"-Sache ergänzt den bisherigen Code nur und sollte für "klassische" Definitionen keine großen Risiken bergen (und wenn, wäre es gut, das rechtzeitig zu wissen...).
Gruß, Beta-User
Hab's gerade installiert - ich geb dir dann Rückmeldung, sobald ich ein aussagekräftiges Ergebnis habe.
Danke und BG,
Tobias
Tag 4 nach dem letzten Update und alles schaltet korrekt! :)
Danke!
Auch bei mir hat am zweiten Tag nach der Installation der Testversion alles geklappt.
Danke für eure Rückmeldungen. (Erleichterung...!)
Es wäre super, wenn ihr die letzte Testversion (mit der speziellen $we-Behandlung, von gestern nachmittag) auch nochmal mit testen könntet, dann würde ich die nämlich asap einchecken, wenn auch sonst keine negativen Rückmeldungen dazu kommen.
(Da sollte es von der anderen Testversion her kommend reichen, die Datei zu tauschen und einen Reload auszuführen).
Danke vorab auch dafür!
Wo finde ich die neueste Version?
Derzeit immer in dem "Konzept"-Thread https://forum.fhem.de/index.php/topic,105521.0.html.
Wenn ihr da Rückmeldung gebt, bekommt ihr es auch mit, wenn sich was neues ergibt ;) .
Ok, ist installiert. Test läuft.
Kann ich leider erst am we - bin unterwegs.
Test war erfolgreich - die letzte Schaltung wurde auch am zweiten Tag ausgeführt!
Danke für eure Rückmeldungen bis dahin.
Dann warte ich mal, was Risiko in dem anderen Thread meint bzgl. des check-in-Termins.
Bitte melden, wenn noch was "seltsam" sein sollte, und wenn jemand das neue "|w"-Feature testen will/kann: Rückmeldung wäre super, wie ihr das findet?
Vielleicht zum Hintergrund: ich hatte bisher tendenziell nur $we/!$we-WDT im Einsatz und erst beim Testen mit weekprofile und der vorrangigen $we-Behandlung gemerkt, dass das uU. ein Thema sein könnte. Da die $we-Behandlung mit weekEnd und noWeekEnd zischenzeitlich sehr viel flexibler ist als früher, hatte ich den Verdacht, dass da irgendwann Ungereimtheiten und Probleme entstehen können. Kann aber auch sein, dass ich da was falsch interpretiert habe oder übersehe?
(Rückmeldungen dazu aber bitte im "Konzept"-Thread...)
Hi Beta-User,
mit den Updates scheinen bei mir die Probleme allesamt verflogen zu sein. Die WDTs schalten, wie definiert. War schon am Zweifeln, wie lange ich die Installation überhaupt noch behalten sollte. Nun läuft es um Einiges zuverlässiger und ich bleib dabei.
Viele Grüße
Mit Version 20634 läuft jetzt alles ohne Probleme. Ich setze den Thread auf "gelöst".
Bei mir auch alles gut! :)