weekprofile und WeekDayTimer: wie funktioniert das?

Begonnen von Dr. Boris Neubert, 09 Oktober 2025, 20:51:18

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

vorweg, ich habe die Commandref und das Wiki gelesen, bin aber nicht zum Erfolg gekommen.

Ausgangssituation: ich habe einen Aqara Thermostat E1 (SRTS-A01), der über Zigbee2MQTT an FHEM angebunden ist. Der Thermostat kann zwar Zeitschaltprogramme, aber die Implementierung in Zigbee2MQTT ist nicht funktional. Daher will ich den Thermostat über ein Zeitschaltprogramm in FHEM steuern.

Meinem Verständnis nach dient ein WeekdayTimer-Gerät dazu, die Temperaturen am Thermostat nach einem Zeitplan einzustellen.

Ein weekprofile-Gerät verwaltet Zeitpläne, die von WeekdayTimer-Geräten genutzt werden können.

Ich habe ein Standard-Wochenprofil (Mo-Fr 18-21 20°C, Sa-So 8-21 20°C, sonst 17°C):

define weekprofile.standard weekprofile
attr weekprofile.standard room System
#   CFGFN     
#   CONFIGFILE ./log/weekprofile-weekprofile.standard.cfg
#   FUUID      68e2c2e3-f33f-4eef-7444-72db10f325030e5c
#   NAME       weekprofile.standard
#   NR         185
#   NTFY_ORDER 50-weekprofile.standard
#   STATE      created
#   TYPE       weekprofile
#   eventCount 7
#   .attraggr:
#   .attrminint:
#   PROFILES:
#     HASH(0x650954174ca8)
#   READINGS:
#     2025-10-05 21:16:21   profile_count   1
#     2025-10-05 21:11:31   state           created
#   SNDDEVLIST:
#     HASH(0x650954d79d28)
#     HASH(0x650955e99788)
#   TEMPMAP:
#   TOPICS:
#     default
#
setstate weekprofile.standard created
setstate weekprofile.standard 2025-10-05 21:16:21 profile_count 1
setstate weekprofile.standard 2025-10-05 21:11:31 state created


Meine Zeitsteuerung für den Thermostat sieht so aus:

define gs21_2_1_trv_1.weekdaytimer WeekdayTimer zigbee_0x54ef441000a5c7c weekprofile:weekprofile.standard:true
attr gs21_2_1_trv_1.weekdaytimer userattr weekprofile
attr gs21_2_1_trv_1.weekdaytimer commandTemplate set $NAME  $EVENT
attr gs21_2_1_trv_1.weekdaytimer room System
#   .triggerUsed 1
#   CFGFN     
#   COMMAND   
#   CONDITION 
#   DEF        zigbee_0x54ef441000a5c7c weekprofile:weekprofile.standard:true
#   DEVICE     zigbee_0x54ef441000a5c7c
#   FUUID      68e2c4b6-f33f-4eef-b10e-b5aab14fd93a3b0f
#   GlobalDaylistSpec
#   LANGUAGE   en
#   NAME       gs21_2_1_trv_1.weekdaytimer
#   NR         186
#   Profil 0: Sunday 00:10:00 17.0, 08:00:00 20.0, 21:00:00 17.0,
#   Profil 1: Monday 00:10:00 17.0, 18:00:00 20.0, 21:00:00 17.0,
#   Profil 2: Tuesday 00:10:00 17.0, 18:00:00 20.0, 21:00:00 17.0,
#   Profil 3: Wednesday 00:10:00 17.0, 18:00:00 20.0, 21:00:00 17.0,
#   Profil 4: Thursday 00:10:00 17.0, 18:00:00 20.0, 21:00:00 17.0,
#   Profil 5: Friday 00:10:00 17.0, 18:00:00 20.0, 21:00:00 17.0,
#   Profil 6: Saturday 00:10:00 17.0, 08:00:00 20.0, 21:00:00 17.0,
#   Profil 7: weekend 00:10:00 17.0, 08:00:00 20.0, 21:00:00 17.0,
#   STATE      20.0
#   STILLDONETIME 0
#   TYPE       WeekdayTimer
#   eventCount 15
#   .attraggr:
#   .attrminint:
#   .dayNumber:
#     !$we       8
#     $we        7
#     fr         5
#     mo         1
#     sa         6
#     su         0
#     th         4
#     tu         2
#     we         3
#   .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
#   .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
#   READINGS:
#     2025-10-09 18:00:00   currValue       20.0
#     2025-10-09 18:00:00   nextUpdate      2025-10-09 21:00:00
#     2025-10-09 18:00:00   nextValue       17.0
#     2025-10-09 18:00:00   state           20.0
#     2025-10-06 20:34:09   weekprofiles    weekprofile.standard:default:default
#   SWITCHINGTIMES:
#     5|00:10|17.0|w
#     5|18:00|20.0|w
#     5|21:00|17.0|w
#     1|00:10|17.0|w
#     1|18:00|20.0|w
#     1|21:00|17.0|w
#     6|00:10|17.0|w
#     6|08:00|20.0|w
#     6|21:00|17.0|w
#     0|00:10|17.0|w
#     7|00:10|17.0
#     0|08:00|20.0|w
#     7|08:00|20.0
#     0|21:00|17.0|w
#     7|21:00|17.0
#     4|00:10|17.0|w
#     4|18:00|20.0|w
#     4|21:00|17.0|w
#     2|00:10|17.0|w
#     2|18:00|20.0|w
#     2|21:00|17.0|w
#     3|00:10|17.0|w
#     3|18:00|20.0|w
#     3|21:00|17.0|w
#   TIMER:
#     gs21_2_1_trv_1.weekdaytimer_18:
#       HASH       gs21_2_1_trv_1.weekdaytimer
#       MODIFIER   18
#       NAME       gs21_2_1_trv_1.weekdaytimer_18
#     gs21_2_1_trv_1.weekdaytimer_midnight:
#       HASH       gs21_2_1_trv_1.weekdaytimer
#       MODIFIER   midnight
#       NAME       gs21_2_1_trv_1.weekdaytimer_midnight
#       SETTIMERATMIDNIGHT 1
#   helper:
#     daysRegExp (su|mo|tu|we|th|fr|sa|\$we|\!\$we)
#     daysRegExpMessage (su|mo|tu|we|th|fr|sa|$we|!$we)
#     SWITCHINGTIME:
#       0:
#         00:10:00   17.0
#         08:00:00   20.0
#         21:00:00   17.0
#       1:
#         00:10:00   17.0
#         18:00:00   20.0
#         21:00:00   17.0
#       2:
#         00:10:00   17.0
#         18:00:00   20.0
#         21:00:00   17.0
#       3:
#         00:10:00   17.0
#         18:00:00   20.0
#         21:00:00   17.0
#       4:
#         00:10:00   17.0
#         18:00:00   20.0
#         21:00:00   17.0
#       5:
#         00:10:00   17.0
#         18:00:00   20.0
#         21:00:00   17.0
#       6:
#         00:10:00   17.0
#         08:00:00   20.0
#         21:00:00   17.0
#       7:
#         00:10:00   17.0
#         08:00:00   20.0
#         21:00:00   17.0
#     WEDAYS:
#       2          1
#       3          1
#   profil:
#     1:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         5
#     10:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         0
#     11:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override
#       DAYS:
#         7
#     12:
#       EPOCH      1759989600
#       PARA       20.0
#       TIME       08:00
#       WE_Override w
#       DAYS:
#         0
#     13:
#       EPOCH      1759989600
#       PARA       20.0
#       TIME       08:00
#       WE_Override
#       DAYS:
#         7
#     14:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         0
#     15:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override
#       DAYS:
#         7
#     16:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         4
#     17:
#       EPOCH      1760025600
#       PARA       20.0
#       TIME       18:00
#       WE_Override w
#       DAYS:
#         4
#     18:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         4
#     19:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         2
#     2:
#       EPOCH      1760025600
#       PARA       20.0
#       TIME       18:00
#       WE_Override w
#       DAYS:
#         5
#     20:
#       EPOCH      1760025600
#       PARA       20.0
#       TIME       18:00
#       WE_Override w
#       DAYS:
#         2
#     21:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         2
#     22:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         3
#     23:
#       EPOCH      1760025600
#       PARA       20.0
#       TIME       18:00
#       WE_Override w
#       DAYS:
#         3
#     24:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         3
#     3:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         5
#     4:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         1
#     5:
#       EPOCH      1760025600
#       PARA       20.0
#       TIME       18:00
#       WE_Override w
#       DAYS:
#         1
#     6:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         1
#     7:
#       EPOCH      1759961400
#       PARA       17.0
#       TIME       00:10
#       WE_Override w
#       DAYS:
#         6
#     8:
#       EPOCH      1759989600
#       PARA       20.0
#       TIME       08:00
#       WE_Override w
#       DAYS:
#         6
#     9:
#       EPOCH      1760036400
#       PARA       17.0
#       TIME       21:00
#       WE_Override w
#       DAYS:
#         6
#   profile_IDX:
#     0:
#       00:10:00   11
#       08:00:00   13
#       21:00:00   15
#     1:
#       00:10:00   4
#       18:00:00   5
#       21:00:00   6
#     2:
#       00:10:00   19
#       18:00:00   20
#       21:00:00   21
#     3:
#       00:10:00   22
#       18:00:00   23
#       21:00:00   24
#     4:
#       00:10:00   16
#       18:00:00   17
#       21:00:00   18
#     5:
#       00:10:00   1
#       18:00:00   2
#       21:00:00   3
#     6:
#       00:10:00   11
#       08:00:00   13
#       21:00:00   15
#     7:
#       00:10:00   11
#       08:00:00   13
#       21:00:00   15
#   weekprofiles:
#     weekprofile.standard:
#       PROFILE    default:default
#       PROFILE_JSON {"Wed":{"time":["18:00","21:00","24:00"],"temp":["17.0","20.0","17.0"]},"Sun":{"temp":["17.0","20.0","17.0"],"time":["08:00","21:00","24:00"]},"Sat":{"temp":["17.0","20.0","17.0"],"time":["08:00","21:00","24:00"]},"Tue":{"temp":["17.0","20.0","17.0"],"time":["18:00","21:00","24:00"]},"Fri":{"time":["18:00","21:00","24:00"],"temp":["17.0","20.0","17.0"]},"Thu":{"time":["18:00","21:00","24:00"],"temp":["17.0","20.0","17.0"]},"Mon":{"temp":["17.0","20.0","17.0"],"time":["18:00","21:00","24:00"]}}
#       SunAsWE    true
#       PROFILE_DATA:
#         Fri:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             18:00
#             21:00
#             24:00
#         Mon:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             18:00
#             21:00
#             24:00
#         Sat:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             08:00
#             21:00
#             24:00
#         Sun:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             08:00
#             21:00
#             24:00
#         Thu:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             18:00
#             21:00
#             24:00
#         Tue:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             18:00
#             21:00
#             24:00
#         Wed:
#           temp:
#             17.0
#             20.0
#             17.0
#           time:
#             18:00
#             21:00
#             24:00
#
setstate gs21_2_1_trv_1.weekdaytimer 20.0
setstate gs21_2_1_trv_1.weekdaytimer 2025-10-09 18:00:00 currValue 20.0
setstate gs21_2_1_trv_1.weekdaytimer 2025-10-09 18:00:00 nextUpdate 2025-10-09 21:00:00
setstate gs21_2_1_trv_1.weekdaytimer 2025-10-09 18:00:00 nextValue 17.0
setstate gs21_2_1_trv_1.weekdaytimer 2025-10-09 18:00:00 state 20.0
setstate gs21_2_1_trv_1.weekdaytimer 2025-10-06 20:34:09 weekprofiles weekprofile.standard:default:default


zigbee_0x54ef441000a5c7c ist dabei der Aqara-Thermostat.

Und da verließen sie ihn...

Ich dachte, dass das WeekdayTimer-Gerät nun zu den Umschaltzeiten jeweils die gewünschte Temperatur an den Thermostat sendet. Dort kommt aber nichts an. Die Temperatur wird in FHEM am Thermostat mit set zigbee_0x54ef441000a5c7c2 desired-temp 20.0 gesetzt und das funktioniert auch. Der Thermostat steht auf manuelle Steuerung.

Wer kann mir bitte auf die Sprünge helfen?
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Beta-User

Lösche mal das commandTemplate-Attribut.

Der Thermostat sollte automatisch als "Heizung" erkannt werden, da er als set desired-temp kennt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors