Hallo,
hin und wieder, natürlich sehr unregelmäßig, stürzt mein FHEM komplett ab, wenn über 98_WeekdayTimer und weekprofile ein Thermostat umgestellt werden soll.
Im Log stehen dann jedesmal folgende Einträge:
2020.03.11 12:00:00 1: PERL WARNING: Use of uninitialized value $epoch in subtraction (-) at ./FHEM/98_WeekdayTimer.pm line 981.
2020.03.11 12:00:00 1: PERL WARNING: Use of uninitialized value $epoch in addition (+) at ./FHEM/98_WeekdayTimer.pm line 983.
2020.03.11 12:00:00 1: PERL WARNING: Use of uninitialized value $epoch in concatenation (.) or string at ./FHEM/98_WeekdayTimer.pm line 984.
2020.03.11 12:00:00 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_WeekdayTimer.pm line 984.
Can't use an undefined value as an ARRAY reference at ./FHEM/98_WeekdayTimer.pm line 1146.
2020.03.11 12:01:32 1: Including fhem.cfg
2020.03.11 12:01:33 3: WEB: port 8083 opened
2020.03.11 12:01:33 2: eventTypes: loaded 3926 events from ./log/eventTypes.txt
2020.03.11 12:30:00 1: PERL WARNING: Use of uninitialized value $epoch in subtraction (-) at ./FHEM/98_WeekdayTimer.pm line 981.
2020.03.11 12:30:00 1: PERL WARNING: Use of uninitialized value $epoch in addition (+) at ./FHEM/98_WeekdayTimer.pm line 983.
2020.03.11 12:30:00 1: PERL WARNING: Use of uninitialized value $epoch in concatenation (.) or string at ./FHEM/98_WeekdayTimer.pm line 984.
2020.03.11 12:30:00 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_WeekdayTimer.pm line 984.
Can't use an undefined value as an ARRAY reference at ./FHEM/98_WeekdayTimer.pm line 1146.
2020.03.11 12:31:32 1: Including fhem.cfg
2020.03.11 12:31:32 3: WEB: port 8083 opened
2020.03.11 12:31:32 2: eventTypes: loaded 3926 events from ./log/eventTypes.txt
Wie man sieht, ist es heute gleich zweimal passiert und darum schreibe ich jetzt hier.
'Normalerweise' passiert das alle paar Tage mal, damit könnte ich sogar leben, aber mehrmals pro Tag wäre zuviel für mich.
Es ist nicht immer derselbe WeekDayTimer, die Beispiel oben stammen von zwei verschiedenen Timern/Profilen/Thermostaten.
Es gibt insgesamt sechs Thermostate mit jeweils einem Weekdaytimer und einem weekprofile.
Nachfolgend jeweils die Definitionen für einen zusammenhängenden Satz WeekdayTimer, weekprofile und Thermostat:
defmod wt_TT_KUF WeekdayTimer TMT_KUF weekprofile:wp_TT_KUF
attr wt_TT_KUF alias Zeitschaltuhr Thermostat Küche
attr wt_TT_KUF commandTemplate set $NAME control $EVENT
attr wt_TT_KUF room RZ->Heizung,Räume->Küche
attr wt_TT_KUF switchInThePast 1
setstate wt_TT_KUF 16.0
setstate wt_TT_KUF 2020-03-11 18:45:02 currValue 16.0
setstate wt_TT_KUF 2020-03-11 18:45:02 nextUpdate 2020-03-12 00:10:00
setstate wt_TT_KUF 2020-03-11 18:45:02 nextValue 16.0
setstate wt_TT_KUF 2020-03-11 18:45:02 state 16.0
setstate wt_TT_KUF 2020-03-11 14:44:56 weekprofiles wp_TT_KUF:default:winter
defmod wp_TT_KUF weekprofile wt_TT_KUF
attr wp_TT_KUF group WeekProfile
attr wp_TT_KUF room RZ->Heizung
attr wp_TT_KUF tempOFF 4.0
setstate wp_TT_KUF created
setstate wp_TT_KUF 2020-03-11 18:45:02 profile_count 5
setstate wp_TT_KUF 2020-03-11 12:31:45 state created
defmod TMT_KUF HMCCUDEV HmIP-eTRV-2_KUF
attr TMT_KUF IODev myCCU3
attr TMT_KUF addLog voltage valve_position temperature_soll temperature_ist
attr TMT_KUF ccureadingfilter ^ACTUAL_TEMPERATURE|^BOOST_MODE|^SET_POINT_MODE|^SET_POINT_TEMPERATURE|^LEVEL|^WINDOW_STATE|^(LOW_?BAT|UNREACH)$|RSSI_DEVICE$|OPERATING_VOLTAGE$
attr TMT_KUF ccureadingname 1.LEVEL$:valve_position;;^(.+\.)?LOW_?BAT$:battery;;^(.+\.)?UNREACH$:activity;;^(.+\.)?OPERATING_VOLTAGE$:voltage;;^(.+\.)?ACTUAL_TEMPERATURE$:temperature_ist;;^(.+\.)?SET_POINT_TEMPERATURE:temperature_soll
attr TMT_KUF ccuscaleval LEVEL:0:1:0:100
attr TMT_KUF controldatapoint 1.SET_POINT_TEMPERATURE
attr TMT_KUF eventMap /datapoint 1.BOOST_MODE true:Boost/datapoint 1.CONTROL_MODE 0:Auto/datapoint 1.CONTROL_MODE 1:Manual/datapoint 1.CONTROL_MODE 2:Holiday/datapoint 1.CONTROL_MODE 1 1.SET_POINT_TEMPERATURE 4.5:off/datapoint 1.CONTROL_MODE 0 1.SET_POINT_TEMPERATURE 30.5:on/
attr TMT_KUF genericDeviceType thermostat
attr TMT_KUF group Thermostat
attr TMT_KUF room RZ->Heizung,Räume->Küche
attr TMT_KUF statedatapoint 1.SET_POINT_TEMPERATURE
attr TMT_KUF stripnumber 1
attr TMT_KUF substexcl control
attr TMT_KUF substitute WINDOW_STATE!(0|false):closed,(1|true):open
attr TMT_KUF webCmd control:Boost:Auto:Manual:Holiday:on:off
attr TMT_KUF widgetOverride control:slider,4.5,0.5,30.5,1
setstate TMT_KUF 16.0
setstate TMT_KUF 2020-03-11 19:34:22 0.RSSI_DEVICE -57
setstate TMT_KUF 2020-03-11 19:34:23 1.ACTUAL_TEMPERATURE_STATUS 0
setstate TMT_KUF 2020-03-11 19:34:23 1.BOOST_MODE 0
setstate TMT_KUF 2020-03-11 19:34:23 1.LEVEL_STATUS 0
setstate TMT_KUF 2020-03-11 19:34:23 1.SET_POINT_MODE 1
setstate TMT_KUF 2020-03-11 19:34:23 1.WINDOW_STATE closed
setstate TMT_KUF 2020-03-11 19:34:22 activity 0
setstate TMT_KUF 2020-03-11 19:34:22 battery 0
setstate TMT_KUF 2020-03-11 19:34:23 control 16.0
setstate TMT_KUF 2020-03-11 19:34:23 hmstate 16.0
setstate TMT_KUF 2020-03-11 19:34:23 state 16.0
setstate TMT_KUF 2020-03-11 19:34:23 temperature_ist 21.8
setstate TMT_KUF 2020-03-11 19:34:23 temperature_soll 16.0
setstate TMT_KUF 2020-03-11 19:34:23 valve_position 0
setstate TMT_KUF 2020-03-11 19:34:22 voltage 2.9
Besser wäre immer ein list der Devices statt der def
Hmm, in dem Fall wäre noch interessant, was das Profil ist. Das stünde zwar auch in dem list, aber evtl. nicht vollständig, falls weekprofile irgendwas unerwartetes liefert...
Was also liefert bitte
get wp_TT_KUF profile_data default:winter
Kannst du einen Zusammenhang zwischen einem bestimmten Profil und den Abstürzen erkennen?
Ggf: hast du die Profile über das widget erstellt oder manuell editiert?
Als Workaround dürfte es genügen, Zeile 980 so zu ergänzen (könnte aber andere Nebenwirkungen haben!):
my $epoch = $hash->{profil}{$time}{EPOCH}//int(time())-600;
Kannst du ggf. mal bitte die angehängte pm verwenden?
Da ist eine etwas längere Version des fixes von gestern drin, die ggf. eine Warnung ins log schreibt.
@CoolTux sorry 8)
So dann zunächst mal der WeekdayTimer:
Internals:
COMMAND
CONDITION
DEF TMT_KUF weekprofile:wp_TT_KUF
DEVICE TMT_KUF
FUUID 5dfce051-f33f-19fe-3f95-6574e505c4ecd348
GlobalDaylistSpec
LANGUAGE de
NAME wt_TT_KUF
NR 200
Profil 0: Sonntag 00:10:00 16.0, 08:30:00 20.0, 10:00:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 1: Montag 00:10:00 16.0, 06:10:00 20.0, 07:30:00 16.0, 12:30:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 2: Dienstag 00:10:00 16.0, 06:10:00 20.0, 07:30:00 16.0, 12:30:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 3: Mittwoch 00:10:00 16.0, 06:10:00 20.0, 07:30:00 16.0, 12:30:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 4: Donnerstag 00:10:00 16.0, 06:10:00 20.0, 07:30:00 16.0, 12:30:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 5: Freitag 00:10:00 16.0, 06:10:00 20.0, 07:30:00 16.0, 12:30:00 18.0, 17:30:00 20.0, 18:45:00 16.0
Profil 6: Samstag 00:10:00 16.0, 08:30:00 20.0, 10:00:00 18.0, 17:30:00 20.0, 18:45:00 16.0
STATE 18.0
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
state:
LogDB:
TIME 1584012603.92073
VALUE 18.0
READINGS:
2020-03-12 12:30:03 currValue 18.0
2020-03-12 12:30:03 nextUpdate 2020-03-12 17:30:00
2020-03-12 12:30:03 nextValue 20.0
2020-03-12 12:30:03 state 18.0
2020-03-12 12:23:52 weekprofiles wp_TT_KUF:default:winter
SWITCHINGTIMES:
5|00:10|16.0
5|06:10|20.0
5|07:30|16.0
5|12:30|18.0
5|17:30|20.0
5|18:45|16.0
1|00:10|16.0
1|06:10|20.0
1|07:30|16.0
1|12:30|18.0
1|17:30|20.0
1|18:45|16.0
6|00:10|16.0
6|08:30|20.0
6|10:00|18.0
6|17:30|20.0
6|18:45|16.0
0|00:10|16.0
0|08:30|20.0
0|10:00|18.0
0|17:30|20.0
0|18:45|16.0
4|00:10|16.0
4|06:10|20.0
4|07:30|16.0
4|12:30|18.0
4|17:30|20.0
4|18:45|16.0
2|00:10|16.0
2|06:10|20.0
2|07:30|16.0
2|12:30|18.0
2|17:30|20.0
2|18:45|16.0
3|00:10|16.0
3|06:10|20.0
3|07:30|16.0
3|12:30|18.0
3|17:30|20.0
3|18:45|16.0
TIMER:
wt_TT_KUF_26:
HASH wt_TT_KUF
MODIFIER 26
NAME wt_TT_KUF_26
wt_TT_KUF_27:
HASH wt_TT_KUF
MODIFIER 27
NAME wt_TT_KUF_27
wt_TT_KUF_28:
HASH wt_TT_KUF
MODIFIER 28
NAME wt_TT_KUF_28
wt_TT_KUF_SetTimerOfDay:
HASH wt_TT_KUF
MODIFIER SetTimerOfDay
NAME wt_TT_KUF_SetTimerOfDay
SETTIMERATMIDNIGHT 1
wt_TT_KUF_delayed:
HASH wt_TT_KUF
MODIFIER delayed
NAME wt_TT_KUF_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:
00:10:00 16.0
08:30:00 20.0
10:00:00 18.0
17:30:00 20.0
18:45:00 16.0
1:
00:10:00 16.0
06:10:00 20.0
07:30:00 16.0
12:30:00 18.0
17:30:00 20.0
18:45:00 16.0
2:
00:10:00 16.0
06:10:00 20.0
07:30:00 16.0
12:30:00 18.0
17:30:00 20.0
18:45:00 16.0
3:
00:10:00 16.0
06:10:00 20.0
07:30:00 16.0
12:30:00 18.0
17:30:00 20.0
18:45:00 16.0
4:
00:10:00 16.0
06:10:00 20.0
07:30:00 16.0
12:30:00 18.0
17:30:00 20.0
18:45:00 16.0
5:
00:10:00 16.0
06:10:00 20.0
07:30:00 16.0
12:30:00 18.0
17:30:00 20.0
18:45:00 16.0
6:
00:10:00 16.0
08:30:00 20.0
10:00:00 18.0
17:30:00 20.0
18:45:00 16.0
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
nl:
Zondag
Maandag
Dinsdag
Woensdag
Donderdag
Vrijdag
Zaterdag
weekend
werkdagen
profil:
1:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
5
10:
EPOCH 1584012600
PARA 18.0
TIME 12:30
WE_Override 0
TAGE:
1
11:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
1
12:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
1
13:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
6
14:
EPOCH 1583998200
PARA 20.0
TIME 08:30
WE_Override 0
TAGE:
6
15:
EPOCH 1584003600
PARA 18.0
TIME 10:00
WE_Override 0
TAGE:
6
16:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
6
17:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
6
18:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
0
19:
EPOCH 1583998200
PARA 20.0
TIME 08:30
WE_Override 0
TAGE:
0
2:
EPOCH 1583989800
PARA 20.0
TIME 06:10
WE_Override 0
TAGE:
5
20:
EPOCH 1584003600
PARA 18.0
TIME 10:00
WE_Override 0
TAGE:
0
21:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
0
22:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
0
23:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
4
24:
EPOCH 1583989800
PARA 20.0
TIME 06:10
WE_Override 0
TAGE:
4
25:
EPOCH 1583994600
PARA 16.0
TIME 07:30
WE_Override 0
TAGE:
4
26:
EPOCH 1584012600
PARA 18.0
TIME 12:30
WE_Override 0
TAGE:
4
27:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
4
28:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
4
29:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
2
3:
EPOCH 1583994600
PARA 16.0
TIME 07:30
WE_Override 0
TAGE:
5
30:
EPOCH 1583989800
PARA 20.0
TIME 06:10
WE_Override 0
TAGE:
2
31:
EPOCH 1583994600
PARA 16.0
TIME 07:30
WE_Override 0
TAGE:
2
32:
EPOCH 1584012600
PARA 18.0
TIME 12:30
WE_Override 0
TAGE:
2
33:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
2
34:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
2
35:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
3
36:
EPOCH 1583989800
PARA 20.0
TIME 06:10
WE_Override 0
TAGE:
3
37:
EPOCH 1583994600
PARA 16.0
TIME 07:30
WE_Override 0
TAGE:
3
38:
EPOCH 1584012600
PARA 18.0
TIME 12:30
WE_Override 0
TAGE:
3
39:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
3
4:
EPOCH 1584012600
PARA 18.0
TIME 12:30
WE_Override 0
TAGE:
5
40:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
3
5:
EPOCH 1584030600
PARA 20.0
TIME 17:30
WE_Override 0
TAGE:
5
6:
EPOCH 1584035100
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
5
7:
EPOCH 1583968200
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
1
8:
EPOCH 1583989800
PARA 20.0
TIME 06:10
WE_Override 0
TAGE:
1
9:
EPOCH 1583994600
PARA 16.0
TIME 07:30
WE_Override 0
TAGE:
1
profile_IDX:
0:
00:10:00 18
08:30:00 19
10:00:00 20
17:30:00 21
18:45:00 22
1:
00:10:00 7
06:10:00 8
07:30:00 9
12:30:00 10
17:30:00 11
18:45:00 12
2:
00:10:00 29
06:10:00 30
07:30:00 31
12:30:00 32
17:30:00 33
18:45:00 34
3:
00:10:00 35
06:10:00 36
07:30:00 37
12:30:00 38
17:30:00 39
18:45:00 40
4:
00:10:00 23
06:10:00 24
07:30:00 25
12:30:00 26
17:30:00 27
18:45:00 28
5:
00:10:00 1
06:10:00 2
07:30:00 3
12:30:00 4
17:30:00 5
18:45:00 6
6:
00:10:00 13
08:30:00 14
10:00:00 15
17:30:00 16
18:45:00 17
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
nl:
zo
ma
di
wo
do
vr
za
$we
!$we
weekprofiles:
wp_TT_KUF:
PROFILE default:winter
PROFILE_JSON {"Wed":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]},"Sun":{"time":["08:30","10:00","17:30","18:45","24:00"],"temp":["16.0","20.0","18.0","20.0","16.0"]},"Fri":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]},"Sat":{"temp":["16.0","20.0","18.0","20.0","16.0"],"time":["08:30","10:00","17:30","18:45","24:00"]},"Mon":{"temp":["16.0","20.0","16.0","18.0","20.0","16.0"],"time":["06:10","07:30","12:30","17:30","18:45","24:00"]},"Thu":{"temp":["16.0","20.0","16.0","18.0","20.0","16.0"],"time":["06:10","07:30","12:30","17:30","18:45","24:00"]},"Tue":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]}}
SunAsWE 0
PROFILE_DATA:
Fri:
temp:
16.0
20.0
16.0
18.0
20.0
16.0
time:
06:10
07:30
12:30
17:30
18:45
24:00
Mon:
temp:
16.0
20.0
16.0
18.0
20.0
16.0
time:
06:10
07:30
12:30
17:30
18:45
24:00
Sat:
temp:
16.0
20.0
18.0
20.0
16.0
time:
08:30
10:00
17:30
18:45
24:00
Sun:
temp:
16.0
20.0
18.0
20.0
16.0
time:
08:30
10:00
17:30
18:45
24:00
Thu:
temp:
16.0
20.0
16.0
18.0
20.0
16.0
time:
06:10
07:30
12:30
17:30
18:45
24:00
Tue:
temp:
16.0
20.0
16.0
18.0
20.0
16.0
time:
06:10
07:30
12:30
17:30
18:45
24:00
Wed:
temp:
16.0
20.0
16.0
18.0
20.0
16.0
time:
06:10
07:30
12:30
17:30
18:45
24:00
Attributes:
alias Zeitschaltuhr Thermostat Küche
commandTemplate set $NAME control $EVENT
room RZ->Heizung,Räume->Küche
switchInThePast 1
Dann das weekprofile:
Internals:
CONFIGFILE ./log/weekprofile-wp_TT_KUF.cfg
DEF wt_TT_KUF
FUUID 5dfce0d9-f33f-19fe-cb14-dd42b600791f3687
NAME wp_TT_KUF
NR 201
NTFY_ORDER 50-wp_TT_KUF
STATE created
TYPE weekprofile
MASTERDEV:
NAME wt_TT_KUF
PROFILES:
HASH(0x62a7e60)
HASH(0x62a7fb0)
HASH(0x62aaab8)
HASH(0x62ab088)
HASH(0x62b8580)
READINGS:
2020-03-12 12:30:03 profile_count 5
2020-03-11 12:31:45 state created
SNDDEVLIST:
HASH(0x62ab538)
HASH(0x62ab598)
HASH(0x62ab5f8)
HASH(0x62ab658)
HASH(0x62b7890)
HASH(0x62b78f0)
HASH(0x62b7950)
HASH(0x62b79b0)
HASH(0x62b7a10)
HASH(0x62b7a70)
HASH(0x62b7ad0)
HASH(0x62b7b30)
HASH(0x62b7b90)
HASH(0x62b7bf0)
HASH(0x62b7c50)
HASH(0x62b7cb0)
HASH(0x62b7d10)
HASH(0x62b7d70)
HASH(0x62b7dd0)
TOPICS:
default
Attributes:
group WeekProfile
room RZ->Heizung
tempOFF 4.0
Dann das Thermostat:
Internals:
DEF HmIP-eTRV-2_KUF
FUUID 5e5e62d6-f33f-19fe-e449-fea9e6634d0d9e53
IODev myCCU3
NAME TMT_KUF
NR 251
STATE 20.0
STILLDONETIME 0
TYPE HMCCUDEV
ccuaddr 000A18A996E1CD
ccudevstate active
ccuif HmIP-RF
ccuname HmIP-eTRV-2_KUF
ccutype HmIP-eTRV-2
channels 8
firmware 2.2.8
statevals devstate
Helper:
DBLOG:
state:
LogDB:
TIME 1584030608.60967
VALUE 20.0
temperature_ist:
LogDB:
TIME 1584030608.60967
VALUE 20.7
temperature_soll:
LogDB:
TIME 1584030608.60967
VALUE 20.0
valve_position:
LogDB:
TIME 1584030608.60967
VALUE 0
voltage:
LogDB:
TIME 1584030608.60967
VALUE 2.9
READINGS:
2020-03-12 17:30:08 0.RSSI_DEVICE -64
2020-03-12 17:30:08 1.ACTUAL_TEMPERATURE_STATUS 0
2020-03-12 17:30:08 1.BOOST_MODE 0
2020-03-12 17:30:08 1.LEVEL_STATUS 0
2020-03-12 17:30:08 1.SET_POINT_MODE 1
2020-03-12 17:30:08 1.WINDOW_STATE closed
2020-03-12 17:30:08 activity 0
2020-03-12 17:30:08 battery 0
2020-03-12 17:30:08 control 20.0
2020-03-12 17:30:08 hmstate 20.0
2020-03-12 17:30:08 state 20.0
2020-03-12 17:30:08 temperature_ist 20.7
2020-03-12 17:30:08 temperature_soll 20.0
2020-03-12 17:30:08 valve_position 0
2020-03-12 17:30:08 voltage 2.9
hmccu:
devspec HmIP-eTRV-2_KUF
dp:
0.CONFIG_PENDING:
OVAL 0
VAL 0
0.DUTY_CYCLE:
OVAL 0
VAL 0
0.INSTALL_TEST:
OVAL true
VAL true
0.LOW_BAT:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.OPERATING_VOLTAGE:
OSVAL 2.9
OVAL 2.9
SVAL 2.9
VAL 2.9
0.OPERATING_VOLTAGE_STATUS:
OVAL 0
VAL 0
0.RSSI_DEVICE:
OSVAL -62
OVAL -62
SVAL -64
VAL -64
0.RSSI_PEER:
OVAL -63
VAL -72
0.UNREACH:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.UPDATE_PENDING:
OVAL false
VAL false
1.ACTIVE_PROFILE:
OVAL 1
VAL 1
1.ACTUAL_TEMPERATURE:
OSVAL 20.6
OVAL 20.6
SVAL 20.7
VAL 20.7
1.ACTUAL_TEMPERATURE_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
1.BOOST_MODE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
1.BOOST_TIME:
OVAL 0
VAL 0
1.FROST_PROTECTION:
OVAL 0
VAL 0
1.LEVEL:
OSVAL 0
OVAL 0.0
SVAL 0
VAL 0.0
1.LEVEL_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
1.PARTY_MODE:
OVAL 0
VAL 0
1.PARTY_SET_POINT_TEMPERATURE:
OVAL 0.000000
VAL 0.000000
1.PARTY_TIME_END:
OVAL
VAL
1.PARTY_TIME_START:
OVAL
VAL
1.QUICK_VETO_TIME:
OVAL 0
VAL 0
1.SET_POINT_MODE:
OSVAL 1
OVAL 1
SVAL 1
VAL 1
1.SET_POINT_TEMPERATURE:
OSVAL 18.0
OVAL 18.0
SVAL 20.0
VAL 20.0
1.SWITCH_POINT_OCCURED:
OVAL 0
VAL 0
1.VALVE_ADAPTION:
OVAL false
VAL false
1.VALVE_STATE:
OVAL 4
VAL 4
1.WINDOW_STATE:
OSVAL closed
OVAL 0
SVAL closed
VAL 0
Attributes:
IODev myCCU3
addLog voltage valve_position temperature_soll temperature_ist
ccureadingfilter ^ACTUAL_TEMPERATURE|^BOOST_MODE|^SET_POINT_MODE|^SET_POINT_TEMPERATURE|^LEVEL|^WINDOW_STATE|^(LOW_?BAT|UNREACH)$|RSSI_DEVICE$|OPERATING_VOLTAGE$
ccureadingname 1.LEVEL$:valve_position;^(.+\.)?LOW_?BAT$:battery;^(.+\.)?UNREACH$:activity;^(.+\.)?OPERATING_VOLTAGE$:voltage;^(.+\.)?ACTUAL_TEMPERATURE$:temperature_ist;^(.+\.)?SET_POINT_TEMPERATURE:temperature_soll
ccuscaleval LEVEL:0:1:0:100
controldatapoint 1.SET_POINT_TEMPERATURE
eventMap /datapoint 1.BOOST_MODE true:Boost/datapoint 1.CONTROL_MODE 0:Auto/datapoint 1.CONTROL_MODE 1:Manual/datapoint 1.CONTROL_MODE 2:Holiday/datapoint 1.CONTROL_MODE 1 1.SET_POINT_TEMPERATURE 4.5:off/datapoint 1.CONTROL_MODE 0 1.SET_POINT_TEMPERATURE 30.5:on/
genericDeviceType thermostat
group Thermostat
room RZ->Heizung,Räume->Küche
statedatapoint 1.SET_POINT_TEMPERATURE
stripnumber 1
substexcl control
substitute WINDOW_STATE!(0|false):closed,(1|true):open
webCmd control:Boost:Auto:Manual:Holiday:on:off
widgetOverride control:slider,4.5,0.5,30.5,1
Und schließlich das Profil:
{"Wed":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]},"Sun":{"time":["08:30","10:00","17:30","18:45","24:00"],"temp":["16.0","20.0","18.0","20.0","16.0"]},"Fri":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]},"Sat":{"temp":["16.0","20.0","18.0","20.0","16.0"],"time":["08:30","10:00","17:30","18:45","24:00"]},"Mon":{"temp":["16.0","20.0","16.0","18.0","20.0","16.0"],"time":["06:10","07:30","12:30","17:30","18:45","24:00"]},"Thu":{"temp":["16.0","20.0","16.0","18.0","20.0","16.0"],"time":["06:10","07:30","12:30","17:30","18:45","24:00"]},"Tue":{"time":["06:10","07:30","12:30","17:30","18:45","24:00"],"temp":["16.0","20.0","16.0","18.0","20.0","16.0"]}}
Das Profil wurde mit dem Widget erstellt.
I.d.R ist das Profil winter aktiv, aber die Profile wurde alle mit dem Widget erstellt und dann über die Kopierfunktion zwischen den devices und Tagen und Profilen übertragen und angepasst.
Vielleicht sollte ich noch dazu sagen, dass das Profil default, also get wp_TT_KUF profile_data default:winter leer ist, das ergibt nur "".
Das Profile default wird von mir aber zu keiner Zeit aufgerufen.
Ich werde mal die angehängte pm versuchen, da der Fehler sich aber nicht provozieren lässt und zu den unterschiedlichsten Zeiten auftreten kann,
bzw. es ist immer eine Umschaltzeit eines beliebigen Thermostates, bliebt nur warten.
Edit:
Ich habe die Log-Meldung etwas vergrößert, jetzt sollte FHEM ja nicht mehr abstürzen und ich bekomme das nicht automatisch mit beim FHEM Neustart :)
Komme grade auch nicht dahinter, das betreffende Profil sieht ja ok aus.
Was "log-Meldung etwas vergrößert" heißt, wäre eventuell interessant, aber m.E. ist es ein schwerwiegender Fehler, wenn man Abstürze vermeiden muß, weil irgendwas nicht paßt, daher finde ich für's erste "0" eigentlich passend, kann ich ja ggf. immer noch anheben.
Die Erweiterung mit der logmeldung habe ich eben eingecheckt, es hatte vor einigen Tagen noch jemand über sowas ähnliches berichtet, und das ist schließlich nicht Sinn der Sache, dass man FHEM neu starten muß, lieber würde ich den tieferen Grund erfahren...
Nachtrag:
(Hmm, vielleicht dauert es sehr gelegentlich zu lange, bis eine Antwort kommt? Aber das sollte an anderer Stelle abgefangen sein..? Muß mal nachschauen.
Wenn Du andere Indizien haben solltest, dass FHEM gelegentlich hängt: her damit..)
Das bedeutet vergrößert:
unless ($epoch) { #prevent FHEM crashing when profile is somehow damaged or incomlete, forum #109164
Log3 $hash, 0, "#########################################################################################";
Log3 $hash, 0, "#########################################################################################";
Log3 $hash, 0, "[$name] profile $time seems to be somehow damaged or incomlete!";
Log3 $hash, 0, "#########################################################################################";
Log3 $hash, 0, "#########################################################################################";
$epoch = int(time()) - 10*MINUTESECONDS;
}
damit ich es sofort im Log erkenne.
Bitte nicht missverstehen, ich muss FHEM nicht neu starten, das hat selbstständig neu gestartet, wobei der pi weiter gelaufen ist.
Bis gerade eben ist noch nichts aufgetreten, aber ich beobachte.
Von gelegentlichen Hängern habe ich noch nichts mit bekommen.
Ah, I see ;D .
Via update gäbe es das nicht ganz so "vergrößert", dafür aber mit der Info, welches Profil grade aktiv war. Kannst diese Datei gerne "vergößern" oder die Meldung etwas erweitern, das wäre dann:
my $actual_wp_reading = ReadingsVal($name,"weekprofiles","none");
Log3 $hash, 0, "[$name] profile $actual_wp_reading, item $time seems to be somehow damaged or incomlete!"
(aber eigentich wäre das Suchen nach dem Fehlertext zum Wiederfinden doch ausreichend, oder?)
Was mich immer noch irritiert, ist dass das "get" einen Leerstring geliefert haben soll; das widerspricht dem list des WDT; und wenn kein entsprechendes Profil vorhanden ist, gibt es eine entsprechende Rückmeldung, die der WDT eigentlich auch passend auswerten sollte. Jedenfalls auf die Schnelle habe ich auch nichts gefunden, was darauf hindeuten könnte, dass weekprofile an der Stelle geändert worden wäre...
Bin etwas ratlos, aber wir werden sehen...
Zitat von: JamBay am 12 März 2020, 17:38:59
Vielleicht sollte ich noch dazu sagen, dass das Profil default, also get wp_TT_KUF profile_data default:winter leer ist, das ergibt nur "".
Argh, man liest es fünfmal durch, aber übersieht trotzdem was:
get wp_TT_KUF profile_data default:
default ergibt nur ""
get wp_TT_KUF profile_data default:
winter ergibt das oben im code-Tag.
Kann ich eigentlich auf einen Fehlertext im Log triggern, so, dass ich eine Benachrichtigung auslösen kann? Aber das ist wohl OT.
Ich mache dann mal eben ein UPDATE.
Es ist dein Thread, von daher: ja, man kann auf log-Einträge triggern, ich müßte aber auch suchen, wie es geht...
Vermutlich war das mit der leeren Rückgabe das Problem. Das muß ich mir dann auch nochmal ansehen, inwieweit man das evtl. abfangen muß, denn default:default könnte in der Tat in bestimmten Konstellationen automatisch abgefragt werden... Sollte jetzt jedenfalls im Log stehen, welches Profil ggf. verantwortlich war, damit sind wir dann vermutlich mind. einen Schritt weiter.
Zitat von: JamBay am 13 März 2020, 17:58:22
Argh, man liest es fünfmal durch, aber übersieht trotzdem was:
get wp_TT_KUF profile_data default:default ergibt nur ""
Hmmm. Mich würde mal interessieren, wie du das hinbekommen hast.
Ich bekomme das nicht nachgestellt!
Du kannst ja mal bitte das Loglevel von wp_TT_KUF hoch auf 4 oder 5 setzen.
Nachtrag:
wp_TT_KUF ist ja gar nicht das weekprofile device, sondern wt_TT_KUF.
Da bin ich wohl doch raus ;)
Gebt Bescheid, wenn ich unterstützen kann\soll.
defmod n_WDT_crash notify n_WDT_crash.*somehow.damaged.or.incomlete.* msgtelegram @@UxBxOxxx WDT Crash [$EVENT].
attr n_WDT_crash readLog 1
Habs gefunden https://forum.fhem.de/index.php?topic=94123.0
So bekomme ich den Fehler per Telegram, wenn er noch auftritt. Ist einfacher als jeden Tag das Log zu durchsuchen.
wp_* (oder wp_.*) sind bei mir die weekprofiles,
wt_* (odet wt_.*) sind bei mir die WeekdayTimer.
Juchu :o
der Fehler ist aufgetreten und FHEM ist dabei neu gestartet worden, der Trigger hat nicht anschlagen können (hatte wohl keine Chance), aber die Neustart Meldung kam dann.
2020.03.14 14:00:01 0: #####################################################################################################!
2020.03.14 14:00:01 0: #####################################################################################################!
2020.03.14 14:00:01 0: [wt_TT_YZF] profile wp_TT_YZF:default:summer, item 14 seems to be somehow damaged or incomlete!
2020.03.14 14:00:01 0: #####################################################################################################!
2020.03.14 14:00:01 0: #####################################################################################################!
2020.03.14 14:00:01 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_WeekdayTimer.pm line 993.
Can't use an undefined value as an ARRAY reference at ./FHEM/98_WeekdayTimer.pm line 1155.
2020.03.14 14:01:34 1: Including fhem.cfg
2020.03.14 14:01:34 3: WEB: port 8083 opened
Denke mal der Absturz findet in Zeile 1155 statt? Oder Folgefehler, aber kann ja nicht, da dieses EPOCH auch im Fehlerfall definiert wird.
Wie man sieht ist das ein anderes Thermostat/weekprofile/WeekdayTimer und ein anderes Profil (summer kommt im Sommer, oder wenn Fenster auf und ist sehr übersichtlich).
Als der Fehler auftrat, war das Fenster auch auf, braucht ihr die listings dann einmal mit Fenster auf auch noch?
Um 14:00 Uhr hätte das Profil winter eine Temperaturumschaltung durchführen sollen, aber das war ja gar nicht mehr aktiv (vordergründig).
Liegt es vielleicht daran, wie ich die Profile Umschalte? Das passiert über ein DoIf, habe es mal ganz unten gelistet.
Nachfolgend die listings:
{"Sun":{"temp":["4.5"],"time":["24:00"]},"Fri":{"temp":["4.5"],"time":["24:00"]},"Tue":{"temp":["4.5"],"time":["24:00"]},"Wed":{"time":["24:00"],"temp":["4.5"]},"Mon":{"temp":["4.5"],"time":["24:00"]},"Thu":{"time":["24:00"],"temp":["4.5"]},"Sat":{"time":["24:00"],"temp":["4.5"]}}
Internals:
COMMAND
CONDITION
DEF TMT_YZF weekprofile:wp_TT_YZF
DEVICE TMT_YZF
FUUID 5d8605ee-f33f-19fe-6212-f5c6bc3b3de8ccad
GlobalDaylistSpec
LANGUAGE de
NAME wt_TT_YZF
NR 167
Profil 0: Sonntag 00:10:00 16.0, 08:30:00 18.0, 12:30:00 16.0, 14:00:00 18.0, 17:45:00 16.0
Profil 1: Montag 00:10:00 16.0, 06:10:00 18.0, 07:15:00 16.0, 13:00:00 18.0, 18:45:00 16.0
Profil 2: Dienstag 00:10:00 16.0, 06:10:00 18.0, 07:15:00 16.0, 13:00:00 18.0, 18:45:00 16.0
Profil 3: Mittwoch 00:10:00 16.0, 06:10:00 18.0, 07:15:00 16.0, 13:00:00 18.0, 18:45:00 16.0
Profil 4: Donnerstag 00:10:00 16.0, 06:10:00 18.0, 07:15:00 16.0, 13:00:00 18.0, 18:45:00 16.0
Profil 5: Freitag 00:10:00 16.0, 06:10:00 18.0, 07:15:00 16.0, 13:00:00 18.0, 18:45:00 16.0
Profil 6: Samstag 00:10:00 16.0, 08:30:00 18.0, 12:30:00 16.0, 14:00:00 18.0, 17:45:00 16.0
STATE 18.0
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
state:
LogDB:
TIME 1584190930.50311
VALUE 18.0
READINGS:
2020-03-14 14:02:10 currValue 18.0
2020-03-14 14:02:10 nextUpdate 2020-03-14 17:45:00
2020-03-14 14:02:10 nextValue 16.0
2020-03-14 14:02:10 state 18.0
2020-03-13 13:59:08 weekprofiles wp_TT_YZF:default:winter
SWITCHINGTIMES:
5|00:10|16.0
5|06:10|18.0
5|07:15|16.0
5|13:00|18.0
5|18:45|16.0
1|00:10|16.0
1|06:10|18.0
1|07:15|16.0
1|13:00|18.0
1|18:45|16.0
6|00:10|16.0
6|08:30|18.0
6|12:30|16.0
6|14:00|18.0
6|17:45|16.0
0|00:10|16.0
0|08:30|18.0
0|12:30|16.0
0|14:00|18.0
0|17:45|16.0
4|00:10|16.0
4|06:10|18.0
4|07:15|16.0
4|13:00|18.0
4|18:45|16.0
2|00:10|16.0
2|06:10|18.0
2|07:15|16.0
2|13:00|18.0
2|18:45|16.0
3|00:10|16.0
3|06:10|18.0
3|07:15|16.0
3|13:00|18.0
3|18:45|16.0
TIMER:
wt_TT_YZF_15:
HASH wt_TT_YZF
MODIFIER 15
NAME wt_TT_YZF_15
wt_TT_YZF_SetTimerOfDay:
HASH wt_TT_YZF
MODIFIER SetTimerOfDay
NAME wt_TT_YZF_SetTimerOfDay
SETTIMERATMIDNIGHT 1
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:
00:10:00 16.0
08:30:00 18.0
12:30:00 16.0
14:00:00 18.0
17:45:00 16.0
1:
00:10:00 16.0
06:10:00 18.0
07:15:00 16.0
13:00:00 18.0
18:45:00 16.0
2:
00:10:00 16.0
06:10:00 18.0
07:15:00 16.0
13:00:00 18.0
18:45:00 16.0
3:
00:10:00 16.0
06:10:00 18.0
07:15:00 16.0
13:00:00 18.0
18:45:00 16.0
4:
00:10:00 16.0
06:10:00 18.0
07:15:00 16.0
13:00:00 18.0
18:45:00 16.0
5:
00:10:00 16.0
06:10:00 18.0
07:15:00 16.0
13:00:00 18.0
18:45:00 16.0
6:
00:10:00 16.0
08:30:00 18.0
12:30:00 16.0
14:00:00 18.0
17:45:00 16.0
WEDAYS:
0 1
1 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
nl:
Zondag
Maandag
Dinsdag
Woensdag
Donderdag
Vrijdag
Zaterdag
weekend
werkdagen
profil:
1:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
5
10:
EPOCH 1584207900
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
1
11:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
6
12:
EPOCH 1584171000
PARA 18.0
TIME 08:30
WE_Override 0
TAGE:
6
13:
EPOCH 1584185400
PARA 16.0
TIME 12:30
WE_Override 0
TAGE:
6
14:
EPOCH 1584190800
PARA 18.0
TIME 14:00
WE_Override 0
TAGE:
6
15:
EPOCH 1584204300
PARA 16.0
TIME 17:45
WE_Override 0
TAGE:
6
16:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
0
17:
EPOCH 1584171000
PARA 18.0
TIME 08:30
WE_Override 0
TAGE:
0
18:
EPOCH 1584185400
PARA 16.0
TIME 12:30
WE_Override 0
TAGE:
0
19:
EPOCH 1584190800
PARA 18.0
TIME 14:00
WE_Override 0
TAGE:
0
2:
EPOCH 1584162600
PARA 18.0
TIME 06:10
WE_Override 0
TAGE:
5
20:
EPOCH 1584204300
PARA 16.0
TIME 17:45
WE_Override 0
TAGE:
0
21:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
4
22:
EPOCH 1584162600
PARA 18.0
TIME 06:10
WE_Override 0
TAGE:
4
23:
EPOCH 1584166500
PARA 16.0
TIME 07:15
WE_Override 0
TAGE:
4
24:
EPOCH 1584187200
PARA 18.0
TIME 13:00
WE_Override 0
TAGE:
4
25:
EPOCH 1584207900
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
4
26:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
2
27:
EPOCH 1584162600
PARA 18.0
TIME 06:10
WE_Override 0
TAGE:
2
28:
EPOCH 1584166500
PARA 16.0
TIME 07:15
WE_Override 0
TAGE:
2
29:
EPOCH 1584187200
PARA 18.0
TIME 13:00
WE_Override 0
TAGE:
2
3:
EPOCH 1584166500
PARA 16.0
TIME 07:15
WE_Override 0
TAGE:
5
30:
EPOCH 1584207900
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
2
31:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
3
32:
EPOCH 1584162600
PARA 18.0
TIME 06:10
WE_Override 0
TAGE:
3
33:
EPOCH 1584166500
PARA 16.0
TIME 07:15
WE_Override 0
TAGE:
3
34:
EPOCH 1584187200
PARA 18.0
TIME 13:00
WE_Override 0
TAGE:
3
35:
EPOCH 1584207900
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
3
4:
EPOCH 1584187200
PARA 18.0
TIME 13:00
WE_Override 0
TAGE:
5
5:
EPOCH 1584207900
PARA 16.0
TIME 18:45
WE_Override 0
TAGE:
5
6:
EPOCH 1584141000
PARA 16.0
TIME 00:10
WE_Override 0
TAGE:
1
7:
EPOCH 1584162600
PARA 18.0
TIME 06:10
WE_Override 0
TAGE:
1
8:
EPOCH 1584166500
PARA 16.0
TIME 07:15
WE_Override 0
TAGE:
1
9:
EPOCH 1584187200
PARA 18.0
TIME 13:00
WE_Override 0
TAGE:
1
profile_IDX:
0:
00:10:00 16
08:30:00 17
12:30:00 18
14:00:00 19
17:45:00 20
1:
00:10:00 6
06:10:00 7
07:15:00 8
13:00:00 9
18:45:00 10
2:
00:10:00 26
06:10:00 27
07:15:00 28
13:00:00 29
18:45:00 30
3:
00:10:00 31
06:10:00 32
07:15:00 33
13:00:00 34
18:45:00 35
4:
00:10:00 21
06:10:00 22
07:15:00 23
13:00:00 24
18:45:00 25
5:
00:10:00 1
06:10:00 2
07:15:00 3
13:00:00 4
18:45:00 5
6:
00:10:00 11
08:30:00 12
12:30:00 13
14:00:00 14
17:45:00 15
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
nl:
zo
ma
di
wo
do
vr
za
$we
!$we
weekprofiles:
wp_TT_YZF:
PROFILE default:winter
PROFILE_JSON {"Mon":{"time":["06:10","07:15","13:00","18:45","24:00"],"temp":["16.0","18.0","16.0","18.0","16.0"]},"Thu":{"time":["06:10","07:15","13:00","18:45","24:00"],"temp":["16.0","18.0","16.0","18.0","16.0"]},"Tue":{"temp":["16.0","18.0","16.0","18.0","16.0"],"time":["06:10","07:15","13:00","18:45","24:00"]},"Wed":{"time":["06:10","07:15","13:00","18:45","24:00"],"temp":["16.0","18.0","16.0","18.0","16.0"]},"Sun":{"temp":["16.0","18.0","16.0","18.0","16.0"],"time":["08:30","12:30","14:00","17:45","24:00"]},"Fri":{"temp":["16.0","18.0","16.0","18.0","16.0"],"time":["06:10","07:15","13:00","18:45","24:00"]},"Sat":{"time":["08:30","12:30","14:00","17:45","24:00"],"temp":["16.0","18.0","16.0","18.0","16.0"]}}
SunAsWE 0
PROFILE_DATA:
Fri:
temp:
16.0
18.0
16.0
18.0
16.0
time:
06:10
07:15
13:00
18:45
24:00
Mon:
temp:
16.0
18.0
16.0
18.0
16.0
time:
06:10
07:15
13:00
18:45
24:00
Sat:
temp:
16.0
18.0
16.0
18.0
16.0
time:
08:30
12:30
14:00
17:45
24:00
Sun:
temp:
16.0
18.0
16.0
18.0
16.0
time:
08:30
12:30
14:00
17:45
24:00
Thu:
temp:
16.0
18.0
16.0
18.0
16.0
time:
06:10
07:15
13:00
18:45
24:00
Tue:
temp:
16.0
18.0
16.0
18.0
16.0
time:
06:10
07:15
13:00
18:45
24:00
Wed:
temp:
16.0
18.0
16.0
18.0
16.0
time:
06:10
07:15
13:00
18:45
24:00
Attributes:
alias Zeitschaltuhr Thermostat Yannick
commandTemplate set $NAME control $EVENT
room RZ->Heizung,Räume->Yannick
switchInThePast 1
Internals:
CONFIGFILE ./log/weekprofile-wp_TT_YZF.cfg
DEF wt_TT_YZF
FUUID 5dfd16d6-f33f-19fe-d4bf-8459cc32ab38149b
NAME wp_TT_YZF
NR 202
NTFY_ORDER 50-wp_TT_YZF
STATE created
TYPE weekprofile
MASTERDEV:
NAME wt_TT_YZF
PROFILES:
HASH(0x6e45ed8)
HASH(0x6e46028)
HASH(0x6e46658)
HASH(0x6e46c28)
HASH(0x6e4a780)
READINGS:
2020-03-14 14:02:10 profile_count 5
2020-03-14 14:01:52 state created
SNDDEVLIST:
HASH(0x6e47140)
HASH(0x6e471a0)
HASH(0x6e47200)
HASH(0x6e47260)
HASH(0x6e472c0)
HASH(0x6e47320)
HASH(0x6e47380)
HASH(0x6e473e0)
HASH(0x6e47440)
HASH(0x6e474a0)
HASH(0x6e47500)
HASH(0x6e47560)
HASH(0x6e475c0)
HASH(0x6e47620)
HASH(0x6e47680)
HASH(0x6e476e0)
HASH(0x6e47740)
HASH(0x6e477a0)
HASH(0x6e47800)
TOPICS:
default
Attributes:
group WeekProfile
room RZ->Heizung
tempOFF 4.0
DoIf
Internals:
DEF ([Heizperiode] eq "on" and [Ferien] eq "off" and [Anwesend] eq "on" and [d_YZHz] eq "closed") (set wp_TT_YZF send_to_device winter)
DOELSEIF ([Heizperiode] eq "on" and [Ferien] eq "on" and [Anwesend] eq "on" and [d_YZHz] eq "closed") (set wp_TT_YZF send_to_device holiday)
DOELSEIF ([Heizperiode] eq "on" and [Ferien] eq "off" and [Anwesend] eq "off" and [d_YZHz] eq "closed") (set wp_TT_YZF send_to_device absent)
DOELSEIF ([Heizperiode] eq "on" and [Ferien] eq "on" and [Anwesend] eq "off" and [d_YZHz] eq "closed") (set wp_TT_YZF send_to_device absent)
DOELSE (set wp_TT_YZF send_to_device summer)
FUUID 5d86063a-f33f-19fe-0025-5d1dae71714ef93f
MODEL FHEM
NAME di_HZ_YZ
NOTIFYDEV Heizperiode,Anwesend,d_YZHz,global,Ferien
NR 168
NTFY_ORDER 50-di_HZ_YZ
STATE cmd_1
TYPE DOIF
VERSION 21224 2020-02-18 18:45:49
Helper:
DBLOG:
state:
LogDB:
TIME 1584192492.31819
VALUE cmd_1
READINGS:
2020-03-14 14:28:12 Device d_YZHz
2020-03-14 14:28:12 cmd 1
2020-03-14 14:28:12 cmd_event d_YZHz
2020-03-14 14:28:12 cmd_nr 1
2020-02-23 11:54:49 e_Anwesend_STATE on
2020-03-10 12:44:41 e_Ferien_STATE off
2020-03-10 22:25:06 e_Heizperiode_STATE on
2020-03-14 14:28:12 e_d_YZHz_STATE closed
2019-12-23 12:24:24 mode enabled
2020-03-14 14:28:12 state cmd_1
Regex:
accu:
cond:
Anwesend:
0:
&STATE ^Anwesend$
1:
&STATE ^Anwesend$
2:
&STATE ^Anwesend$
3:
&STATE ^Anwesend$
Ferien:
0:
&STATE ^Ferien$
1:
&STATE ^Ferien$
2:
&STATE ^Ferien$
3:
&STATE ^Ferien$
Heizperiode:
0:
&STATE ^Heizperiode$
1:
&STATE ^Heizperiode$
2:
&STATE ^Heizperiode$
3:
&STATE ^Heizperiode$
d_YZHz:
0:
&STATE ^d_YZHz$
1:
&STATE ^d_YZHz$
2:
&STATE ^d_YZHz$
3:
&STATE ^d_YZHz$
attr:
cmdState:
wait:
waitdel:
condition:
0 ::InternalDoIf($hash,'Heizperiode','STATE') eq "on" and ::InternalDoIf($hash,'Ferien','STATE') eq "off" and ::InternalDoIf($hash,'Anwesend','STATE') eq "on" and ::InternalDoIf($hash,'d_YZHz','STATE') eq "closed"
1 ::InternalDoIf($hash,'Heizperiode','STATE') eq "on" and ::InternalDoIf($hash,'Ferien','STATE') eq "on" and ::InternalDoIf($hash,'Anwesend','STATE') eq "on" and ::InternalDoIf($hash,'d_YZHz','STATE') eq "closed"
2 ::InternalDoIf($hash,'Heizperiode','STATE') eq "on" and ::InternalDoIf($hash,'Ferien','STATE') eq "off" and ::InternalDoIf($hash,'Anwesend','STATE') eq "off" and ::InternalDoIf($hash,'d_YZHz','STATE') eq "closed"
3 ::InternalDoIf($hash,'Heizperiode','STATE') eq "on" and ::InternalDoIf($hash,'Ferien','STATE') eq "on" and ::InternalDoIf($hash,'Anwesend','STATE') eq "off" and ::InternalDoIf($hash,'d_YZHz','STATE') eq "closed"
do:
0:
0 set wp_TT_YZF send_to_device winter
1:
0 set wp_TT_YZF send_to_device holiday
2:
0 set wp_TT_YZF send_to_device absent
3:
0 set wp_TT_YZF send_to_device absent
4:
0 set wp_TT_YZF send_to_device summer
helper:
DEVFILTER ^global$|^Ferien$|^d_YZHz$|^Anwesend$|^Heizperiode$
NOTIFYDEV global|Ferien|d_YZHz|Anwesend|Heizperiode
event closed
globalinit 1
last_timer 0
sleeptimer -1
timerdev d_YZHz
timerevent closed
triggerDev d_YZHz
DOIF_eventa:
cmd_nr: 1
cmd: 1
cmd_event: d_YZHz
cmd_1
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: d_YZHz
state: cmd_1
timerevents:
closed
timereventsState:
state: closed
triggerEvents:
closed
triggerEventsState:
state: closed
internals:
all Heizperiode:STATE Ferien:STATE Anwesend:STATE d_YZHz:STATE
perlblock:
readings:
trigger:
uiState:
uiTable:
Attributes:
do always
room RZ->Heizung
startup set $SELF checkall
2020.03.14 13:38:40 3: Watchdog wd_YZHz1 triggered
2020.03.14 13:38:40 3: [wt_TT_YZF] set wt_TT_YZF weekprofile wp_TT_YZF:default:summer
Schon Juchu!
Ist zwar nicht schön, aber jetzt wird auch mir (hoffentlich) klarer, was da passiert...
Fix wird etwas dauern, da muß ich noch nachdenken, ist aber vermutlich nichts dramatisches.
@Risiko: Danke für's mit draufschauen, aber das ist m.E. ein WDT-Problem, und (@JamBay) es hat auch nichts mit dem Modul zu tun, das die Umschaltung macht.
Ich wäre wegen der window-open-Lösung nicht drauf gekommen, dass man ja auch das Profil wechseln kann... Hatte eigentlich vermutet, dass es ein "delayed" Timer war, aber es scheint eher so zu sein, dass die Interne Struktur nicht komplett geleert wird, was Probleme macht, wenn das neue Profil weniger Elemente enthält als das alte. Wäre nett, wenn du das mal prüfen könntest:
Kurz das Profil auf Sommer wecheln, list machen und wieder zurück. Das list dann hier reinstellen (es genügt das eine list vom "Sommer"-Profil).
OT: Die ganze Struktur der Devices erscheint mir sehr "hart" verkabelt, was ggf. schlecht wartbar ist, wenn man mal was ändern will. Hätte eher gedacht, dass man Topics nutzt, ein weekprofile-Device für alles (statt je Thermostat) und dann die Fenster-Offen-Sache über ein notify oä, das aus dem Fenster die betreffenden Thermostate ableitet und denen eine neue Soll-Temp verpaßt. Dazu sagt man den einzelnen WDT's, welche Fenster sie checken sollen.
Sollten wir aber bei Interesse an anderer Stelle vertiefen, und wenn du so klar kommst, soll es mir auch recht sein...
Vermutlich hilft es, wenn du eine neue Zeile 181 einfügst (es wäre besser, die Zeilennummern wären einheitlich bei uns beiden, btw.):
WeekdayTimer_DeleteTimer($hash);
Der Abschnitt sollte dann so aussehen:
} elsif ($v =~ /weekprofile ([^: ]+):([^:]+):([^: ]+)\b/) {
Log3 $hash, 3, "[$name] set $name $v";
return unless WeekdayTimer_UpdateWeekprofileReading($hash, $1, $2, $3);
WeekdayTimer_DeleteTimer($hash);
WeekdayTimer_Start($hash);
}
Kannst du das bitte testen, ansonsten bin ich geneigt, das präventiv einzuchecken.
WeekdayTimer
Internals:
COMMAND
CONDITION
DEF TMT_YZF weekprofile:wp_TT_YZF
DEVICE TMT_YZF
FUUID 5d8605ee-f33f-19fe-6212-f5c6bc3b3de8ccad
GlobalDaylistSpec
LANGUAGE de
NAME wt_TT_YZF
NR 167
Profil 0: Sonntag 00:10:00 4.5
Profil 1: Montag 00:10:00 4.5
Profil 2: Dienstag 00:10:00 4.5
Profil 3: Mittwoch 00:10:00 4.5
Profil 4: Donnerstag 00:10:00 4.5
Profil 5: Freitag 00:10:00 4.5
Profil 6: Samstag 00:10:00 4.5
STATE 4.5
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
state:
LogDB:
TIME 1584205423.99614
VALUE 4.5
READINGS:
2020-03-14 18:03:43 currValue 4.5
2020-03-14 18:03:43 nextUpdate 2020-03-15 00:10:00
2020-03-14 18:03:43 nextValue 4.5
2020-03-14 18:03:43 state 4.5
2020-03-14 18:03:36 weekprofiles wp_TT_YZF:default:summer
SWITCHINGTIMES:
5|00:10|4.5
1|00:10|4.5
6|00:10|4.5
0|00:10|4.5
4|00:10|4.5
2|00:10|4.5
3|00:10|4.5
TIMER:
wt_TT_YZF_15:
HASH wt_TT_YZF
MODIFIER 15
NAME wt_TT_YZF_15
wt_TT_YZF_SetTimerOfDay:
HASH wt_TT_YZF
MODIFIER SetTimerOfDay
NAME wt_TT_YZF_SetTimerOfDay
SETTIMERATMIDNIGHT 1
wt_TT_YZF_delayed:
HASH wt_TT_YZF
MODIFIER delayed
NAME wt_TT_YZF_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:
00:10:00 4.5
1:
00:10:00 4.5
2:
00:10:00 4.5
3:
00:10:00 4.5
4:
00:10:00 4.5
5:
00:10:00 4.5
6:
00:10:00 4.5
WEDAYS:
0 1
1 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
nl:
Zondag
Maandag
Dinsdag
Woensdag
Donderdag
Vrijdag
Zaterdag
weekend
werkdagen
profil:
1:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
5
2:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
1
3:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
6
4:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
0
5:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
4
6:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
2
7:
EPOCH 1584141000
PARA 4.5
TIME 00:10
WE_Override 0
TAGE:
3
profile_IDX:
0:
00:10:00 4
08:30:00 17
12:30:00 18
14:00:00 19
17:45:00 20
1:
00:10:00 2
06:10:00 7
07:15:00 8
13:00:00 9
18:45:00 10
2:
00:10:00 6
06:10:00 27
07:15:00 28
13:00:00 29
18:45:00 30
3:
00:10:00 7
06:10:00 32
07:15:00 33
13:00:00 34
18:45:00 35
4:
00:10:00 5
06:10:00 22
07:15:00 23
13:00:00 24
18:45:00 25
5:
00:10:00 1
06:10:00 2
07:15:00 3
13:00:00 4
18:45:00 5
6:
00:10:00 3
08:30:00 12
12:30:00 13
14:00:00 14
17:45:00 15
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
nl:
zo
ma
di
wo
do
vr
za
$we
!$we
weekprofiles:
wp_TT_YZF:
PROFILE default:summer
PROFILE_JSON {"Sun":{"temp":["4.5"],"time":["24:00"]},"Fri":{"temp":["4.5"],"time":["24:00"]},"Tue":{"temp":["4.5"],"time":["24:00"]},"Wed":{"time":["24:00"],"temp":["4.5"]},"Mon":{"temp":["4.5"],"time":["24:00"]},"Thu":{"time":["24:00"],"temp":["4.5"]},"Sat":{"time":["24:00"],"temp":["4.5"]}}
SunAsWE 0
PROFILE_DATA:
Fri:
temp:
4.5
time:
24:00
Mon:
temp:
4.5
time:
24:00
Sat:
temp:
4.5
time:
24:00
Sun:
temp:
4.5
time:
24:00
Thu:
temp:
4.5
time:
24:00
Tue:
temp:
4.5
time:
24:00
Wed:
temp:
4.5
time:
24:00
Attributes:
alias Zeitschaltuhr Thermostat Yannick
commandTemplate set $NAME control $EVENT
room RZ->Heizung,Räume->Yannick
switchInThePast 1
weekprofile:
Internals:
CONFIGFILE ./log/weekprofile-wp_TT_YZF.cfg
DEF wt_TT_YZF
FUUID 5dfd16d6-f33f-19fe-d4bf-8459cc32ab38149b
NAME wp_TT_YZF
NR 202
NTFY_ORDER 50-wp_TT_YZF
STATE created
TYPE weekprofile
MASTERDEV:
NAME wt_TT_YZF
PROFILES:
HASH(0x6e45ed8)
HASH(0x6e46028)
HASH(0x6e46658)
HASH(0x6e46c28)
HASH(0x6e4a780)
READINGS:
2020-03-14 18:03:44 profile_count 5
2020-03-14 14:01:52 state created
SNDDEVLIST:
HASH(0x6e47140)
HASH(0x6e471a0)
HASH(0x6e47200)
HASH(0x6e47260)
HASH(0x6e472c0)
HASH(0x6e47320)
HASH(0x6e47380)
HASH(0x6e473e0)
HASH(0x6e47440)
HASH(0x6e474a0)
HASH(0x6e47500)
HASH(0x6e47560)
HASH(0x6e475c0)
HASH(0x6e47620)
HASH(0x6e47680)
HASH(0x6e476e0)
HASH(0x6e47740)
HASH(0x6e477a0)
HASH(0x6e47800)
TOPICS:
default
Attributes:
group WeekProfile
room RZ->Heizung
tempOFF 4.0
Ich passe die Zeile mal an, die Zeilen sollten in dem Bereich noch gleich sein.
Ich habe mal versucht mich in das Konzept Topics einzulesen, aber es wollte nicht in meinen Kopf.
Ich kann es ja noch mal versuchen, und bei Bedarf nachfragen.
OK, wie vermutet weniger Schaltzeiten...
Hatte zwischenzeitlich auch den anderen Thread nochmal gegengelesen und bin einigermaßen sicher, dass dieser Fix Sinn macht.
@JamBay: Eigentlich ist das mit den Topics so gedacht: Du legst das Profil fest, das der WDT jeweils aus dem wp-Device nehmen soll, indem du a) (am WDT) ein userattr festlegst namens weekprofile, und b) dort den Namen des Profils einträgst (also quasi, wie der WDT (oder mehrere) in weekprofile heißen soll).
Dann kannst du mit restore_topic allen "Clienten" dieses weekprofile-Devices die entsprechende Kombination aus (ihrem) Profile:Topic (für alle) senden, also z.B. alle WDT von Sommer auf Winter umschalten, und eben auch - im Prinzip - alle Profile in einem weekprofile-Device halten (und dort z.B. einfacher für andere Devices kopieren).
(Am besten einfach mal bei einem WDT durchspielen und den Topic-Wechsel dann nicht mehr mit send-to-device machen, dann sollte das klarer werden).
Danke für deine Geduld!
Ich bekomme es aber nicht zu Laufen.
Ich habe folgenden WeekdayTimer erstellt:
Internals:
CFGFN
COMMAND
CONDITION
DEF TMT_KUF weekprofile:wp_HOME
DEVICE TMT_KUF
FUUID 5e6d3c6b-f33f-19fe-2a93-5f2d99b44e33e673
GlobalDaylistSpec
LANGUAGE de
NAME wt_TMT_KUF
NR 1829
Profil 0: Sonntag 00:10:00 18.0
Profil 1: Montag 00:10:00 18.0
Profil 2: Dienstag 00:10:00 18.0
Profil 3: Mittwoch 00:10:00 18.0
Profil 4: Donnerstag 00:10:00 18.0
Profil 5: Freitag 00:10:00 18.0
Profil 6: Samstag 00:10:00 18.0
STATE 18.0
STILLDONETIME 0
TYPE WeekdayTimer
Helper:
DBLOG:
state:
LogDB:
TIME 1584227414.40504
VALUE 18.0
READINGS:
2020-03-15 00:10:14 currValue 18.0
2020-03-15 00:10:14 nextUpdate 2020-03-16 00:10:00
2020-03-15 00:10:14 nextValue 18.0
2020-03-15 00:10:14 state 18.0
2020-03-14 21:21:08 weekprofiles wp_HOME:default:default
SWITCHINGTIMES:
5|00:10|18.0
1|00:10|18.0
6|00:10|18.0
0|00:10|18.0
4|00:10|18.0
2|00:10|18.0
3|00:10|18.0
TIMER:
wt_TMT_KUF_4:
HASH wt_TMT_KUF
MODIFIER 4
NAME wt_TMT_KUF_4
wt_TMT_KUF_SetTimerOfDay:
HASH wt_TMT_KUF
MODIFIER SetTimerOfDay
NAME wt_TMT_KUF_SetTimerOfDay
SETTIMERATMIDNIGHT 1
wt_TMT_KUF_delayed:
HASH wt_TMT_KUF
MODIFIER delayed
NAME wt_TMT_KUF_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:
00:10:00 18.0
1:
00:10:00 18.0
2:
00:10:00 18.0
3:
00:10:00 18.0
4:
00:10:00 18.0
5:
00:10:00 18.0
6:
00:10:00 18.0
WEDAYS:
0 1
6 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
nl:
Zondag
Maandag
Dinsdag
Woensdag
Donderdag
Vrijdag
Zaterdag
weekend
werkdagen
profil:
1:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
5
2:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
1
3:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
6
4:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
0
5:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
4
6:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
2
7:
EPOCH 1584227400
PARA 18.0
TIME 00:10
WE_Override 0
TAGE:
3
profile_IDX:
0:
00:10:00 4
1:
00:10:00 2
2:
00:10:00 6
3:
00:10:00 7
4:
00:10:00 5
5:
00:10:00 1
6:
00:10:00 3
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
nl:
zo
ma
di
wo
do
vr
za
$we
!$we
weekprofiles:
wp_HOME:
PROFILE default:default
PROFILE_JSON {"Sat":{"temp":["18.0"],"time":["24:00"]},"Fri":{"temp":["18.0"],"time":["24:00"]},"Sun":{"time":["24:00"],"temp":["18.0"]},"Wed":{"temp":["18.0"],"time":["24:00"]},"Tue":{"temp":["18.0"],"time":["24:00"]},"Thu":{"temp":["18.0"],"time":["24:00"]},"Mon":{"time":["24:00"],"temp":["18.0"]}}
SunAsWE 0
PROFILE_DATA:
Fri:
temp:
18.0
time:
24:00
Mon:
temp:
18.0
time:
24:00
Sat:
temp:
18.0
time:
24:00
Sun:
temp:
18.0
time:
24:00
Thu:
temp:
18.0
time:
24:00
Tue:
temp:
18.0
time:
24:00
Wed:
temp:
18.0
time:
24:00
Attributes:
alias Zeitschaltuhr Thermostat Küche neu
commandTemplate set $NAME control $EVENT
room RZ->Heizung,Räume->Küche
switchInThePast 1
userattr weekprofile
verbose 5
weekprofile wp_KUF
dazu das passende weekprofile:
Internals:
CFGFN
CONFIGFILE ./log/weekprofile-wp_HOME.cfg
FUUID 5e6d243a-f33f-19fe-d186-f17ee432c275cb63
NAME wp_HOME
NR 1432
NTFY_ORDER 50-wp_HOME
STATE created
TYPE weekprofile
Helper:
DBLOG:
state:
LogDB:
TIME 1584211002.63678
VALUE created
PROFILES:
HASH(0x7886880)
HASH(0x529e2c8)
HASH(0x7827900)
READINGS:
2020-03-15 11:48:14 active_topic default
2020-03-14 22:00:07 profile_count 3
2020-03-14 19:36:42 state created
2020-03-14 22:00:07 topics default:summer:winter
SNDDEVLIST:
HASH(0x6eb2260)
HASH(0x7756180)
HASH(0x746b458)
HASH(0x738e9d8)
HASH(0x7583f68)
HASH(0x70f4178)
HASH(0x6e34210)
HASH(0x7878760)
HASH(0x74115e8)
HASH(0x7463048)
HASH(0x70e3010)
HASH(0x6e27380)
HASH(0x73e6178)
HASH(0x73fb700)
HASH(0x740da00)
HASH(0x7124fe8)
HASH(0x73334a8)
HASH(0x787d2e0)
HASH(0x757a568)
HASH(0x6e47530)
TOPICS:
default
summer
winter
Attributes:
group WeekProfile
room RZ->Heizung
tempOFF 4.0
useTopics 1
Und folgende Profile:
default:default
{"Sat":{"temp":["18.0"],"time":["24:00"]},"Fri":{"temp":["18.0"],"time":["24:00"]},"Sun":{"time":["24:00"],"temp":["18.0"]},"Wed":{"temp":["18.0"],"time":["24:00"]},"Tue":{"temp":["18.0"],"time":["24:00"]},"Thu":{"temp":["18.0"],"time":["24:00"]},"Mon":{"time":["24:00"],"temp":["18.0"]}}
summer:wp_KUF
{"Wed":{"time":["24:00"],"temp":["8.0"]},"Tue":{"temp":["8.0"],"time":["24:00"]},"Thu":{"time":["24:00"],"temp":["8.0"]},"Mon":{"temp":["8.0"],"time":["24:00"]},"Sat":{"time":["24:00"],"temp":["8.0"]},"Fri":{"time":["24:00"],"temp":["8.0"]},"Sun":{"time":["24:00"],"temp":["8.0"]}}
und winter:wp_KUF
{"Mon":{"time":["24:00"],"temp":["20.0"]},"Thu":{"temp":["20.0"],"time":["24:00"]},"Tue":{"time":["24:00"],"temp":["20.0"]},"Wed":{"temp":["20.0"],"time":["24:00"]},"Sat":{"temp":["20.0"],"time":["24:00"]},"Sun":{"time":["24:00"],"temp":["20.0"]},"Fri":{"temp":["20.0"],"time":["24:00"]}}
Wenn ich nun im wp im Widget ein Profil auswähle, da T drücke für restore topic, passiert genau nichts.
Ich habe bestimmt irgendwas falsch gemacht, sicher auch nur eine Kleinigkeit, aber ich komme nicht drauf.
attr wt_TMT_KUF weekprofile wt_TMT_KUF
should do the trick ;) .
Habe eben den Fix ins svn eingecheckt und gleich weekprofile als "Zwangsuserattr" eingefügt samt ein paar Zeilen commandref dazu, falls man weekprofile nutzt. Hilft evtl. bei der Anwendung...
siehe auch hier: https://forum.fhem.de/index.php/topic,108820.0.html
Zitat von: Beta-User am 15 März 2020, 12:25:46
attr wt_TMT_KUF weekprofile wt_TMT_KUF
should do the trick ;) .
das verwiirt mich jetzt komplett, im Attribut weekprofile soll doch ein/das weekprofile hinterlegt sein, wt* ist bei mir aber ein WDT.
In meiner Konfig habe ich folgendes:
wp_HOME:summer:wp_KUF
^ ^ ^
weekprofile
topic
wie heißt das, ist für mich das Attribut weekprofile im WDT
Ich habe es trotz nichtverstehens mal versucht, es hat aber auch nicht funktioniert.
Was bei mir übrigens geht, ist
set wt_TMT_KUF weekprofile wp_HOME:winter:wp_KUF
mit den devices aus meinem letzten Post.
Also abholen geht, vom WDT aus, aber senden zum WDT nicht.
? Wer verwirrt wen...?
Also: Wenn du mit Topics arbeiten willst, muß folgendes zusammenpassen:
WDT: Verweist in der DEF auf den Namen des weekprofile-Devicesweekprofile:<weekprofile-device-name>
oder
weekprofile:<weekprofile-device-name>:true
"weekprofile" und "true" sind dabei genau so zu verwenden, das sind Schlüsselbegriffe, die ausgewertet werden. Damit "weiß" der WDT, a) dass er via weekprofile gesteuert wird, und b) wo er sein "erstes Profil" anfordern soll (danach könnte es evtl. auch von einem anderen wp-Device gehen...).
Als Attribut "weekprofile" ist anzugeben, welches "profil" weekprofile nutzen soll, wenn es via Topic-Wechsel mit dem WDT "reden will". Im Prinzip ist das beliebig, es muß nur auf beiden Seiten gleich sein (unten: test2).
Im weekprofile muß es für Topic-Nutzung daher ebenfalls ein Profil geben, das diesem Attribut-Wert vom WDT entspricht.
Beispiel (leider sieht man nicht, wie die einzelnen Profile aussehen, aber das ist der Status nach einem Topic-Wechsel in meinem Testsystem):defmod wp_test_wdt WeekdayTimer MYSENSOR_96 weekprofile:weekprof:true
attr wp_test_wdt userattr weekprofile
attr wp_test_wdt commandTemplate set $NAME $EVENT
attr wp_test_wdt weekprofile test2
defmod weekprof weekprofile
attr weekprof tempOFF 7
attr weekprof tempON 18
attr weekprof useTopics 1
setstate weekprof created
setstate weekprof 2020-03-16 16:30:08 active_topic winter
setstate weekprof 2020-03-15 20:27:43 profile_count 8
setstate weekprof 2020-03-15 20:27:43 state created
setstate weekprof 2020-03-15 20:27:43 topics default:winter
setstate wp_test_wdt active
setstate wp_test_wdt 2020-03-16 16:30:08 currValue 18.0
setstate wp_test_wdt 2020-03-16 16:30:08 nextUpdate 2020-03-17 00:10:00
setstate wp_test_wdt 2020-03-16 16:30:08 nextValue 18.0
setstate wp_test_wdt 2020-03-16 16:30:08 state active
setstate wp_test_wdt 2020-03-16 16:30:08 weekprofiles weekprof:winter:test2
OK, ich denke ich kann die Verwirrung 'auflösen', ich habe eigentlich alles richtig gemacht, ABER kann es sein, dass _ ein Umlaut/Sonderzeichen ist?
Wiki: Derzeit (Version: 10924) können keine Leerzeichen oder Umlaute verwendet werden. Leerzeichen werden bei der Eingabe abgefangen. Hat man versehentlich doch Umlaute verwendet, müssen in der Datei ./log/weekprofile-<name>.cfg die entsprechenden Zeilen manuell gelöscht/umbenennt werden und danach ein rereadcfg ausführt werden.
Versuch du es doch bitte mal mit wp_KUF statt test2 in deinem Beispiel...
Im Prinzip ist das beliebig, es muß nur auf beiden Seiten gleich sein (unten: test2).
Käfer oder Feature?
Schön, dass du das Problem lokalisieren konntest, war mir bisher unbekannt, dass weekprofile an der Stelle wählerisch ist (?)...
Wenn, dann könnte hier @Risiko was dazu sagen/das ggf. ändern.
Hallo.
Ich kann kann kein Problem mit '_' im Namen feststellen.
Risiko
Hmm, dann streiche ich das mal aus der Liste der (für mich) offenen Fragen...
Danke für's nachsehen!