FHEM Forum

FHEM - Hausautomations-Systeme => Zigbee => Thema gestartet von: grossmaggul am 19 Oktober 2025, 12:19:32

Titel: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 12:19:32
Hallo,

ich habe hier ein Zigbee Raumthermostat (Tuya ZWT198/ZWT100-BH (https://www.zigbee2mqtt.io/devices/ZWT198_ZWT100-BH.html)) 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
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 12:36:28
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).
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 14:09:02
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.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 16:15:11
Das Attribut sollte dann automatisch neu gesetzt werden - und das m2d auch als "Heizung" erkannt werden.

Anhand der "weekprofile"-Attribute erkennt jede weekprofile-Instanz, welche untergeordneten Devices es bei Topic-Wechseln beliefern soll. Das wäre hier wohl jeweils "wohnzimmer".

Vorteil der WDT-Methode: beliebig viele Schaltzeiten, alle Wochentage unterschiedlich möglich, $we-Umschaltung automatisch, wenn konfiguriert.
Vorteil der direkten Übergabe an die Hardware: läuft auch ohne FHEM.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 17:10:45
Danke Dir, scheint jetzt zu funktionieren.

Nur nochmal ob ich den Mechanismus richtig verstanden habe.

Ich setze bei WDT ein weekprofile Topic, z.B. Sommer:Wohnzimmer, dann sendet WDT zum jeweiligen Schaltpunkt des Profils an den RT, daß dieser eine entsprechende Temperatur einstellen soll.
Das heißt also, der RT "sieht" die weekprofile gar nicht, sondern bekommt nur die Schaltzeitpunkte übermittelt?
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 17:17:27
Zitat von: grossmaggul am 19 Oktober 2025, 17:10:45Danke Dir, scheint jetzt zu funktionieren.

Nur nochmal ob ich den Mechanismus richtig verstanden habe.

Ich setze bei WDT ein weekprofile Topic, z.B. Sommer:Wohnzimmer, dann sendet WDT zum jeweiligen Schaltpunkt des Profils an den RT, daß dieser eine entsprechende Temperatur einstellen soll.
Das heißt also, der RT "sieht" die weekprofile gar nicht, sondern bekommt nur die Schaltzeitpunkte übermittelt?
Halbwegs richtig, zumindest was der wdt->Thermostat-Teil betrifft.

"Eigentlich" ist es so gedacht, dass man den Topic am weekprofile setzt, und das dann die Info bzw. die Profile an seine "entities" verteilt.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 17:33:53
Ich habe manchmal wirklich Schwierigkeiten mit den Begrifflichkeiten, was ist denn genau mit "entities" gemeint.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 17:41:59
Zitat von: grossmaggul am 19 Oktober 2025, 17:33:53Ich habe manchmal wirklich Schwierigkeiten mit den Begrifflichkeiten, was ist denn genau mit "entities" gemeint.
Diejenigen Geräte (=FHEM-Devices), an die aus weekprofile heraus Profile verteilt werden sollen.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 17:47:41
O.K., das wäre also in dem Fall der Weekdaytimer, wenn ich das jetzt richtig verstanden habe.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 17:52:30
Zitat von: grossmaggul am 19 Oktober 2025, 17:47:41O.K., das wäre also in dem Fall der Weekdaytimer, wenn ich das jetzt richtig verstanden habe.
Korrekt.

Vielleicht zum besseren Gesamt-Verständnis: ich habe bei mir genau eine einzige weekprofile-Instanz. Wechselt dort das Topic, bekommen das Ergebnis ein gutes Dutzend CUL_HM-Thermostate, ein wdt (für einen zwave-Thermostat) und zwei "vitoconnect"-Instanzen mit (über die Heizungungstherme und Warmwasserbereitung laufen).
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: grossmaggul am 19 Oktober 2025, 18:11:09
O.K., danke für die Klarstellung.
Ich habe auch nur eine weekprofile Instanz, die ich bisher mittels eines MAX! Raumthermostat und eines Notify an verschiedenste Thermostate(MAX!, Homematic) entsprechend verteilt habe.
Ich konnte dann die Heizprofile für Sommer, Winter, Urlaub über die FTUI3 einfach einstellen, wie ich es gerade brauchte.
Ob das jetzt ein geschickter Weg war, weiß ich nicht, es hat zumindest gut funktioniert.
Ich habe jetzt fast alles auf zigbee umgestellt, bis auf ein paar MAX! Thermostate und muss das jetzt erstmal wieder zusammen fummeln.
Titel: Aw: Zigbee Raumthermostat und weekprofile
Beitrag von: Beta-User am 19 Oktober 2025, 18:20:40
An den MAX-Instanzen dürfte dann auch jeweils ein userAttr "weekprofile" vorhanden und gesetzt sein, so wie du das schilderst.

Bei den zigbee-Dingern kann man die Profile häufig auch - wie bei MAX und Homematic - auf der Hardware laufen lassen (via Code in MQTT2_DEVICE), nur gibt es da nicht für jeden (Wochen-) Tag ein individuelles Profil.

Welcher Weg dir lieber ist, musst du entscheiden...