[gefixt] Sporadischer Absturz durch ./FHEM/98_WeekdayTimer.pm

Begonnen von JamBay, 11 März 2020, 19:57:38

Vorheriges Thema - Nächstes Thema

JamBay

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



CoolTux

Besser wäre immer ein list der Devices statt der def
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

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;
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

#3
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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JamBay

#4
@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 :)

Beta-User

#5
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..)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JamBay

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.

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JamBay

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.

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Risiko

#10
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.

JamBay

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.

JamBay

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

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files