Zigbee Raumthermostat und weekprofile

Begonnen von grossmaggul, 19 Oktober 2025, 12:19:32

Vorheriges Thema - Nächstes Thema

grossmaggul

Hallo,

ich habe hier ein Zigbee Raumthermostat (Tuya ZWT198/ZWT100-BH) per z2m in fhem angebunden.
Internals:
   .triggerUsed 1
   CID        zigbee_raumthermostat
   DEF        zigbee_raumthermostat
   FUUID      68f39d41-f33f-f310-6bbb-752578106f34ba21
   IODev      mqtt2_server
   LASTInputDev mqtt2_server
   MSGCNT     6605
   NAME       zigbee_raumthermostat
   NR         824
   STATE      UNLOCK
Measured: 18.5 °C | Desired: 5 °C | Preset: manual | Sensor: internal | Mode: heat
   STILLDONETIME 0
   TYPE       MQTT2_DEVICE
   eventCount 6633
   mqtt2_server_CONN mqtt2_server_192.168.1.12_49468
   mqtt2_server_MSGCNT 6605
   mqtt2_server_TIME 2025-10-19 12:08:43
   .DT:
     DEVICETOPIC zigbee2mqtt/zigbee_raumthermostat
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x55d4c80080c8)
     HASH(0x55d4c9316260)
   JSONMAP:
     Battery    batteryPercent
     child_lock btnLock
     current_heating_setpoint desired-temp
     local_temperature temperature
     system_mode mode
     voltage    batterymV
   OLDREADINGS:
   READINGS:
     2025-10-18 16:04:57   IODev           mqtt2_server
     2025-10-18 17:51:43   associatedWith  zigbee_massi
     2025-10-18 17:51:04   attrTemplateVersion 20240402
     2025-10-19 12:08:43   backlight_mode  medium
     2025-10-19 12:08:43   btnLock         UNLOCK
     2025-10-19 12:08:43   child_lock      UNLOCK
     2025-10-19 12:08:43   current_heating_setpoint 5
     2025-10-19 12:08:43   deadzone_temperature 1
     2025-10-19 12:08:43   desired-temp    5
     2025-10-19 12:08:43   factory_reset   OFF
     2025-10-19 12:08:43   frost_protection OFF
     2025-10-19 12:08:43   linkquality     255
     2025-10-19 12:08:43   local_temperature 18.5
     2025-10-19 12:08:43   local_temperature_calibration 0
     2025-10-19 12:08:43   max_temperature_limit 60
     2025-10-19 12:08:43   mode            heat
     2025-10-19 12:08:43   preset          manual
     2025-10-19 12:08:43   running_state   idle
     2025-10-19 12:08:43   schedule_holiday 08:00/22.0°C 23:00/16.0°C
     2025-10-19 12:08:43   schedule_weekday 06:00/20.0°C 08:00/16.0°C 11:30/16.0°C 12:30/16.0°C 17:00/22.0°C 22:00/16.0°C
     2025-10-19 12:08:43   sensor          internal
     2025-10-18 18:26:05   state           desired-temp
     2025-10-19 12:08:43   system_mode     heat
     2025-10-19 12:08:43   temperature     18.5
     2025-10-19 12:08:43   working_day     disabled
Attributes:
   DbLogExclude .*
   devStateIcon LOCKED:secur_lock:btnLock+UNLOCK UNLOCKED:secur_open:btnLock+LOCK
   devicetopic zigbee2mqtt/zigbee_raumthermostat
   genericDeviceType thermostat
   icon       temp_control
   jsonMap    current_heating_setpoint:desired-temp local_temperature:temperature Battery:batteryPercent system_mode:mode voltage:batterymV child_lock:btnLock
   model      zigbee2mqtt_thermostat_with_weekrofile_5_1_1
   readingList $DEVICETOPIC:.* { json2nameValue($EVENT,'',$JSONMAP) }
zigbee2mqtt/zigbee_raumthermostat:.* { json2nameValue($EVENT) }
   room       new-devices
   setList    desired-temp:slider,5.0,0.5,30.0,1 $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1}
  btnLock:LOCK,UNLOCK $DEVICETOPIC/set {"child_lock": "$EVTPART1"}
  mode:heat,off $DEVICETOPIC/set {"system_mode": "$EVTPART1"}
  preset:hold,program $DEVICETOPIC/set {"preset": "$EVTPART1"}
  saturday $DEVICETOPIC/set/schedule { "saturday":[$EVTPART1] }
  sunday $DEVICETOPIC/set/schedule { "sunday":[$EVTPART1] }
  weekdays $DEVICETOPIC/set/schedule { "weekdays":[$EVTPART1] }
  weekprofile { no strict 'vars';;  FHEM::attrT_z2m_thermostat_Utils::z2t_send_BHT($NAME, $EVTPART1, $EVTPART2) }
  x_send_set_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //;; qq($DEVICETOPIC/set $payload)}
   stateFormat child_lock
Measured: local_temperature °C | Desired: current_heating_setpoint °C | Preset: preset | Sensor: sensor | Mode: system_mode
   userReadings batteryState:battery_low.* {ReadingsVal($name,'battery_low','false') eq 'false'?'ok':'low'}, batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}
   webCmd     desired-temp

Als template habe ich das attrTemplate 'zigbee2mqtt_thermostat_with_weekprofile_5_1_1' benutzt. Das funktioniert auch soweit.

Nun habe ich einen Weekdaytimer angelegt, der meine weekprofile Topics an das Raumthermostat weiterleiten soll. Ich habe ein weekprofile wohnzimmer mit den Topics Sommer und Winter.

Das List des Weekdaytimers

Internals:
   COMMAND   
   CONDITION 
   DEF        zigbee_raumthermostat  weekprofile:heizprofile
   DEVICE     zigbee_raumthermostat
   FUUID      68f3934d-f33f-f310-0bbc-1ebed052abdcf8e1
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       WDT
   NR         821
   Profil 0: Sonntag 00:10:00 18.0, 02:00:00 16.0, 06:30:00 18.0,
   Profil 1: Montag 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   Profil 2: Dienstag 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   Profil 3: Mittwoch 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   Profil 4: Donnerstag 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   Profil 5: Freitag 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   Profil 6: Samstag 00:10:00 18.0, 01:00:00 16.0, 06:00:00 18.0,
   STATE      18.0
   STILLDONETIME 0
   TYPE       WeekdayTimer
   eventCount 161
   setModifier desired-temp
   .attraggr:
   .attrminint:
   .dayNumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   .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-19 06:30:00   currValue       18.0
     2025-10-19 06:30:00   nextUpdate      2025-10-20 00:10:00
     2025-10-19 06:30:00   nextValue       18.0
     2025-10-19 06:30:00   state           18.0
     2025-10-18 22:58:46   weekprofiles    heizprofile:Winter:wohnzimmer
   SWITCHINGTIMES:
     5|00:10|18.0
     5|01:00|16.0
     5|06:00|18.0
     1|00:10|18.0
     1|01:00|16.0
     1|06:00|18.0
     6|00:10|18.0
     6|01:00|16.0
     6|06:00|18.0
     0|00:10|18.0
     0|02:00|16.0
     0|06:30|18.0
     4|00:10|18.0
     4|01:00|16.0
     4|06:00|18.0
     2|00:10|18.0
     2|01:00|16.0
     2|06:00|18.0
     3|00:10|18.0
     3|01:00|16.0
     3|06:00|18.0
   TIMER:
     WDT_midnight:
       HASH       WDT
       MODIFIER   midnight
       NAME       WDT_midnight
       SETTIMERATMIDNIGHT 1
   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
         02:00:00   16.0
         06:30:00   18.0
       1:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
       2:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
       3:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
       4:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
       5:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
       6:
         00:10:00   18.0
         01:00:00   16.0
         06:00:00   18.0
     WEDAYS:
       0          1
       6          1
   profil:
     1:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         5
     10:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         0
     11:
       EPOCH      1760832000
       PARA       16.0
       TIME       02:00
       WE_Override
       DAYS:
         0
     12:
       EPOCH      1760848200
       PARA       18.0
       TIME       06:30
       WE_Override
       DAYS:
         0
     13:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         4
     14:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         4
     15:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         4
     16:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         2
     17:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         2
     18:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         2
     19:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         3
     2:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         5
     20:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         3
     21:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         3
     3:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         5
     4:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         1
     5:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         1
     6:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         1
     7:
       EPOCH      1760825400
       PARA       18.0
       TIME       00:10
       WE_Override
       DAYS:
         6
     8:
       EPOCH      1760828400
       PARA       16.0
       TIME       01:00
       WE_Override
       DAYS:
         6
     9:
       EPOCH      1760846400
       PARA       18.0
       TIME       06:00
       WE_Override
       DAYS:
         6
   profile_IDX:
     0:
       00:10:00   10
       02:00:00   11
       06:30:00   12
     1:
       00:10:00   4
       01:00:00   5
       06:00:00   6
     2:
       00:10:00   16
       01:00:00   17
       06:00:00   18
     3:
       00:10:00   19
       01:00:00   20
       06:00:00   21
     4:
       00:10:00   13
       01:00:00   14
       06:00:00   15
     5:
       00:10:00   1
       01:00:00   2
       06:00:00   3
     6:
       00:10:00   7
       01:00:00   8
       06:00:00   9
   weekprofiles:
     heizprofile:
       PROFILE    Winter:wohnzimmer
       PROFILE_JSON {"Mon":{"temp":["18.0","16.0","18.0"],"time":["01:00","06:00","24:00"]},"Fri":{"temp":["18.0","16.0","18.0"],"time":["01:00","06:00","24:00"]},"Tue":{"temp":["18.0","16.0","18.0"],"time":["01:00","06:00","24:00"]},"Wed":{"temp":["18.0","16.0","18.0"],"time":["01:00","06:00","24:00"]},"Sun":{"time":["02:00","06:30","24:00"],"temp":["18.0","16.0","18.0"]},"Thu":{"time":["01:00","06:00","24:00"],"temp":["18.0","16.0","18.0"]},"Sat":{"time":["01:00","06:00","24:00"],"temp":["18.0","16.0","18.0"]}}
       SunAsWE    0
       PROFILE_DATA:
         Fri:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
         Mon:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
         Sat:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
         Sun:
           temp:
             18.0
             16.0
             18.0
           time:
             02:00
             06:30
             24:00
         Thu:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
         Tue:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
         Wed:
           temp:
             18.0
             16.0
             18.0
           time:
             01:00
             06:00
             24:00
Attributes:
   DbLogExclude .*
   commandTemplate set $NAME  $EVENT
   userattr   weekprofile


Die Übergabe des weekprofile an WDT funktioniert auch, aber die Weitergabe an den Raumthermostaten nicht.
Habe ich da einen Verständnisfehler? Funktioniert das überhaupt so, wie ich das konfiguriert habe?

Oder ist da grundsätzlich etwas falsch?

gm
FHEM auf Debian 12 Bookworm Server, Supermicro XEON X5660, 2 TB HD RAID 1, 36GB RAM, 2 x nanoCUL868(MAX!, HM); Homematic, MAX, MiLight, HUE, WLED, diverse Zgibee und Tasmota Geräte

Beta-User

Lösche mal das Attribut commandTemplate.

Verständnisfrage meinerseits: was ist mit "weiterleiten" gemeint?

Entweder es wird das Profil vom Thermostat "überwacht", dann muss am MQTT2_DEVICE noch das weekprofile-Attribut sinnvoll gesetzt werden, oder FHEM überwacht die Timer (via WDT).
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

grossmaggul

ZitatLösche mal das Attribut commandTemplate.
Habe ich gemacht und was passiert dann oder was passiert dann nicht?

ZitatVerständnisfrage meinerseits: was ist mit "weiterleiten" gemeint?
O.K., das habe ich wohl falsch interpretiert, im Weekdaytimer gibt es beim define ja die Angabe eines "Zieldevices" und da bin ich wohl fälschlicherweise davon ausgegangen, daß der WDT dann das weekprofile an, in meinem Fall, den Thermostaten schickt.

Zitatdann muss am MQTT2_DEVICE noch das weekprofile-Attribut sinnvoll gesetzt werden
Und da habe ich das Problem, daß ich irgendwie nicht verstehe, was man da sinnvollerweise bzw. wie man da etwas setzen würde.
FHEM auf Debian 12 Bookworm Server, Supermicro XEON X5660, 2 TB HD RAID 1, 36GB RAM, 2 x nanoCUL868(MAX!, HM); Homematic, MAX, MiLight, HUE, WLED, diverse Zgibee und Tasmota Geräte