Gelöst - Steuerung Fußboden Moes BHT-002-GCLZB (zigbee)

Begonnen von Müller, 11 November 2023, 08:43:17

Vorheriges Thema - Nächstes Thema

Müller

Hallo,

ich habe zwei Thermostate Moes BHT-002-GCLZB die ich über zigbee2mqtt in FHEM eingebunden habe.
https://www.zigbee2mqtt.io/devices/BHT-002-GCLZB.html

Als attrTemplate nutze ich zigbee2mqtt_thermostat_without-weekprofile.
Das Template wurde mal für ein Batteriebetriebenen Termostaten geschrieben, funktioniert aber im Großen und Ganzen. Ich habe das ganze etwas auf meine Bedürfnisse abgeändert. Hier meine RawDefinition:

defmod MQTT2_zigbee_ThermoWoZi MQTT2_DEVICE zigbee_ThermoWoZi
attr MQTT2_zigbee_ThermoWoZi userattr weekprofile
attr MQTT2_zigbee_ThermoWoZi alias WoziThermostat
attr MQTT2_zigbee_ThermoWoZi comment For use with weekprofile, additional configuration is needed
attr MQTT2_zigbee_ThermoWoZi devStateIcon ON:sani_heating_level_100@red:off \
OFF:sani_heating_level_0@blue:on\
LOCK:secur_locked@red:btnLock+UNLOCK \
UNLOCK:secur_open@grey:btnLock+LOCK
attr MQTT2_zigbee_ThermoWoZi devicetopic zigbee2mqtt/ThermoWoZi
attr MQTT2_zigbee_ThermoWoZi getList desired-temp:noArg desired-temp $DEVICETOPIC/get {"current_heating_setpoint": ""}\
  temperature:noArg temperature $DEVICETOPIC/get {"local_temperature": ""}\
  preset:noArg preset $DEVICETOPIC/get {"preset": ""}
attr MQTT2_zigbee_ThermoWoZi group Wozi
attr MQTT2_zigbee_ThermoWoZi jsonMap current_heating_setpoint:desired-temp local_temperature:temperature Battery:batteryPercent system_mode:mode battery:batteryPercent voltage:batterymV
attr MQTT2_zigbee_ThermoWoZi model zigbee2mqtt_thermostat_with_weekrofile
attr MQTT2_zigbee_ThermoWoZi periodicCmd temperature:55
attr MQTT2_zigbee_ThermoWoZi readingList $DEVICETOPIC:.* { my %h;; my $temp = $EVENT;; $temp =~ s/,?("(holidays|workdays)":.([^]]+))./$h{$2}=$3/ge;; $EVENT =~ s/,?("(holidays|workdays)":.([^]]+)).//g;; my $h2 = json2nameValue($EVENT,'',$JSONMAP);; %h = (%h,%$h2);; \%h }
attr MQTT2_zigbee_ThermoWoZi room MQTT2_DEVICE,System->Heizung
attr MQTT2_zigbee_ThermoWoZi 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"}\
  preset:schedule,manual,boost,complex,comfort,eco $DEVICETOPIC/set {"preset": "$EVTPART1"}\
  mode:heat,auto,off $DEVICETOPIC/set {"system_mode": "$EVTPART1"}\
  holidays $DEVICETOPIC/set/schedule { "holidays":[$EVTPART1] }\
  workdays $DEVICETOPIC/set/schedule { "workdays":[$EVTPART1] }\
  week:5+2,6+1,7 $DEVICETOPIC/set $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_weekprofile($NAME, $EVTPART1, $EVTPART2) }\
  x_send_set_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //;; qq($DEVICETOPIC/set $payload)}
attr MQTT2_zigbee_ThermoWoZi setStateList on off
attr MQTT2_zigbee_ThermoWoZi stateFormat heat\
child_lock\
Ist temperature °C\

attr MQTT2_zigbee_ThermoWoZi userReadings batteryState:battery_low.* {ReadingsVal($name,'battery_low','false') eq 'false'?'ok':'low'}, batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}
attr MQTT2_zigbee_ThermoWoZi webCmd desired-temp
attr MQTT2_zigbee_ThermoWoZi weekprofile MQTT2_zigbee_ThermoWoZi

setstate MQTT2_zigbee_ThermoWoZi OFF\
UNLOCK\
Ist 22 °C\

setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:01:28 IODev MQTT2_FHEM_Server
setstate MQTT2_zigbee_ThermoWoZi 2023-10-23 20:56:50 associatedWith MQTT2_zigbee_pi
setstate MQTT2_zigbee_ThermoWoZi 2023-10-25 18:07:24 attrTemplateVersion 20220110
setstate MQTT2_zigbee_ThermoWoZi 2023-10-29 19:35:32 btnLock set btnLock UNLOCK
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 child_lock UNLOCK
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 deadzone_temperature 1
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 desired-temp 0
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 heat OFF
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 linkquality 33
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 max_temperature_limit 30
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 min_temperature_limit 5
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 mode heat
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 preset program
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 preset_mode program
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 running_state idle
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 sensor IN
setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:06:38 temperature 22


Leider habe ich ein Problem. Wenn ich die Slider benutze um die "desired-temp" einzustellen, springt der Slider zu einem anderen Wert und ich brauche einige Anläufe bevor das ganze den gewünschten Wert behält. In zigbee2mqtt existiert das Problem wohl nicht. Es sieht im Moment für mich so aus, als wäre das ein Problem zwischen zigbee2mqtt und FHEM oder nur in FHEM.

Hätte jemand eine Idee was das Problem sein könnte ?

Danke

Jochen

Danke & LG

Jochen
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

TomLee

Hallo,

kommen da evtl. nur Ganzzahlen von z2m zurück ?

Versuch mal dann so:
desired-temp:slider,0,1,30,0 ...

Gruß
Thomas

Müller

Hallo Thomas,

ja Zigbee2mqtt hat nur ganze Zahlen, Ich ändere es in FHEM mal ab und probiere was passiert

Vielen Dank & Gruß

Jochen
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

Müller

Hallo, die Thermostat funktionieren deutlich besser bei der Temperaturwahl.

hier nochmal meine korrigierten Einstellung, falls jeamdn die gleichen Thermostat nutzen möchte

defmod MQTT2_zigbee_ThermoWoZi MQTT2_DEVICE zigbee_ThermoWoZi
attr MQTT2_zigbee_ThermoWoZi userattr weekprofile
attr MQTT2_zigbee_ThermoWoZi alias WoziThermostat
attr MQTT2_zigbee_ThermoWoZi comment For use with weekprofile, additional configuration is needed
attr MQTT2_zigbee_ThermoWoZi devStateIcon ON:sani_heating_level_100@red:off \
OFF:sani_heating_level_0@blue:on\
LOCK:secur_locked@red:btnLock+UNLOCK \
UNLOCK:secur_open@grey:btnLock+LOCK
attr MQTT2_zigbee_ThermoWoZi devicetopic zigbee2mqtt/ThermoWoZi
attr MQTT2_zigbee_ThermoWoZi getList desired-temp:noArg desired-temp $DEVICETOPIC/get {"current_heating_setpoint": ""}\
  temperature:noArg temperature $DEVICETOPIC/get {"local_temperature": ""}\
  preset:noArg preset $DEVICETOPIC/get {"preset": ""}
attr MQTT2_zigbee_ThermoWoZi group Wozi
attr MQTT2_zigbee_ThermoWoZi jsonMap current_heating_setpoint:desired-temp local_temperature:temperature Battery:batteryPercent system_mode:mode battery:batteryPercent voltage:batterymV
attr MQTT2_zigbee_ThermoWoZi model zigbee2mqtt_thermostat_with_weekrofile
attr MQTT2_zigbee_ThermoWoZi periodicCmd temperature:55
attr MQTT2_zigbee_ThermoWoZi readingList $DEVICETOPIC:.* { my %h;; my $temp = $EVENT;; $temp =~ s/,?("(holidays|workdays)":.([^]]+))./$h{$2}=$3/ge;; $EVENT =~ s/,?("(holidays|workdays)":.([^]]+)).//g;; my $h2 = json2nameValue($EVENT,'',$JSONMAP);; %h = (%h,%$h2);; \%h }
attr MQTT2_zigbee_ThermoWoZi room MQTT2_DEVICE,System->Heizung
attr MQTT2_zigbee_ThermoWoZi setList desired-temp:slider,0,1,30.0,1 $DEVICETOPIC/set {"current_heating_setpoint": $EVTPART1 }\
  btnLock:LOCK,UNLOCK $DEVICETOPIC/set {"child_lock": "$EVTPART1"}\
  preset:schedule,manual,boost,complex,comfort,eco $DEVICETOPIC/set {"preset": "$EVTPART1"}\
  mode:heat,auto,off $DEVICETOPIC/set {"system_mode": "$EVTPART1"}\
  holidays $DEVICETOPIC/set/schedule { "holidays":[$EVTPART1] }\
  workdays $DEVICETOPIC/set/schedule { "workdays":[$EVTPART1] }\
  week:5+2,6+1,7 $DEVICETOPIC/set $EVTPART1\
  weekprofile { FHEM::attrT_z2m_thermostat_Utils::z2t_send_weekprofile($NAME, $EVTPART1, $EVTPART2) }\
  x_send_set_payload:textField { my $payload = $EVENT;;$payload =~ s/$EVTPART0 //;; qq($DEVICETOPIC/set $payload)}
attr MQTT2_zigbee_ThermoWoZi setStateList on off
attr MQTT2_zigbee_ThermoWoZi stateFormat heat\
child_lock\
Ist temperature °C\

attr MQTT2_zigbee_ThermoWoZi userReadings batteryState:battery_low.* {ReadingsVal($name,'battery_low','false') eq 'false'?'ok':'low'}, batteryVoltage:batterymV.* {ReadingsNum($name,'batterymV',0)/1000}
attr MQTT2_zigbee_ThermoWoZi webCmd desired-temp
attr MQTT2_zigbee_ThermoWoZi weekprofile MQTT2_zigbee_ThermoWoZi

setstate MQTT2_zigbee_ThermoWoZi ON\
UNLOCK\
Ist 22 °C\

setstate MQTT2_zigbee_ThermoWoZi 2023-11-11 09:01:28 IODev MQTT2_FHEM_Server
setstate MQTT2_zigbee_ThermoWoZi 2023-10-23 20:56:50 associatedWith MQTT2_zigbee_pi
setstate MQTT2_zigbee_ThermoWoZi 2023-10-25 18:07:24 attrTemplateVersion 20220110
setstate MQTT2_zigbee_ThermoWoZi 2023-10-29 19:35:32 btnLock set btnLock UNLOCK
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 child_lock UNLOCK
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 deadzone_temperature 1
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 desired-temp 23
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 heat ON
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 linkquality 27
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 max_temperature_limit 30
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 min_temperature_limit 5
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 mode heat
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 preset hold
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 preset_mode hold
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 running_state heat
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 sensor IN
setstate MQTT2_zigbee_ThermoWoZi 2023-11-12 09:36:57 temperature 22


Grüße
FHEM auf Raspberry, 433mHz & Zigbee für Rollläden, Gartenbewässerung, Beleuchtung, Fußbodenheizung

TomLee

OK, ich hab nochmal in der Bedienungsanleitung nachgeschaut, das letzte Argument von slider hab ich bisher falsch interpretiert, mein Vorschlag war nicht richtig.

Deine Umsetzung klappt zwar, ist aber auch nicht richtig umgesetzt.

Ich würd sagen korrekt wäre so:

desired-temp:slider,0,1,30,1 ...