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?
Lösche mal das commandTemplate-Attribut.
Der Thermostat sollte automatisch als "Heizung" erkannt werden, da er als set desired-temp kennt.
Danke. Beta-User, für Deinen Vorschlag!
Ich nehme die Behauptung zurück, dass ich den Aqara Thermostat E1 (SRTS-A01) mit dem genutzten AttrTemplate steuern kann. Ich muss erst ein passendes AttrTemplate schnitzen (der Soll-Wert heißt dort occupied_heating_setpoint und der Getter liefert Fehler bei zigbee2mqtt). Wenn das zuverlässig funktioniert, komme ich wieder hierauf zurück.
Zitat von: Dr. Boris Neubert am 11 Oktober 2025, 11:01:01Danke. Beta-User, für Deinen Vorschlag!
Ich nehme die Behauptung zurück, dass ich den Aqara Thermostat E1 (SRTS-A01) mit dem genutzten AttrTemplate steuern kann. Ich muss erst ein passendes AttrTemplate schnitzen (der Soll-Wert heißt dort occupied_heating_setpoint und der Getter liefert Fehler bei zigbee2mqtt). Wenn das zuverlässig funktioniert, komme ich wieder hierauf zurück.
Ein raw-list vom Thermostat könnte helfen + Link zur Detailseite bei z2m ;) .
Mein getester Patch, der das Template für den Aqara-Thermostat ergänzt, ist hier: https://forum.fhem.de/index.php?topic=94495.240.
Ich warte jetzt auf 18 Uhr, wenn der Timer die Temperatur hochdrehen soll, und melde mich dann wieder.
Ich habe es hinbekommen.
Das commandTemplate-Attribut am WeekdayTimer muss gelöscht werden. Sonst kommt die Meldung Unknown argument 17.0, choose one of desired-temp:slider,5.0,0... im globalen FHEM-Log.
Eine weitere Fehlerquelle war ein vergessenes Zeichen am Ende des Namens des Thermostaten in der Definition des WeekdayTimer (Fehler bei Copy & Paste).
Merke: die Logs vom Thermostaten und das globale FHEM-Log sind deine Freunde bei der Fehlersuche!