Page 1 of 1

mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 10:23
by hansdeh
Hi,

I use a Tuya ZWT198/ZWT100-BH thermostate and for zigbee it uses TS0601 model

I want to use the value running_state' to act on idle of heat. The payload gives 'idle' of 'heat', while Domoticz expects 'idle' or 'heating' . This mismatch logs a error in the domoticz logfile
Error: mqtt: Climate device invalid/unknown action mode received!

The zigbee2mqtt log gives this payload
zigbee2mqtt/Thermostaat Vloerverwarming', payload '{"backlight_mode":"medium","child_lock":"UNLOCK","current_heating_setpoint":24.5,"deadzone_temperature":null,"factory_reset":null,"faultalarm":0,"frost_protection":"OFF","last_seen":"2025-11-20T06:33:52+01:00","linkquality":216,"local_temperature":19.9,"local_temperature_calibration":0,"max_temperature_limit":50,"preset":"manual","running_state":"heat","schedule_holiday":null,"schedule_weekday":null,"sensor":"external","system_mode":"heat","working_day":"disabled"}'

The device in Domoticz is a selector type
By 'idle' it gives 'idle' with level 10 and by 'heat' it gives 'undefined' with level -1. So I can uses this value but my errorlog is full of the error mentioned above.

Is anybody familiar with this bug and knows if it's solved in a beta release of else can someone puts this issue on the to do list?

Tnx
Hans

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 10:39
by jvdz
The device in Domoticz is a selector type
By 'idle' it gives 'idle' with level 10 and by 'heat' it gives 'undefined' with level -1. So I can use this value but my errorlog is full of the error mentioned above.
What options does the selector switch have?
According to the Zigbee2Mqtt definitions, it should be "Idle" or "heat", so would expect that in both the Device Selector options and AutoDiscovery package content.
What is the discovery MQTT message content as that should contain the option for the AutoDiscovery of this Selector Switch?

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 22:08
by TheHelma
Hello together,

I have the same problem with a SONOFF TRVZB thermostat.

The error log is full of:
Error: zigbee2mqtt: Climate device invalid/unknown action mode received! (0x0cae5ffffeca00b2_climate_zigbee2mqtt: heating)

Payload shows that the running_state is "heat" instead of the, by Domoticz expected, "heating".

{
"battery": null,
"child_lock": null,
"closing_steps": null,
"external_temperature_input": null,
"frost_protection_temperature": null,
"idle_steps": null,
"last_seen": "2025-11-20T21:03:01.518Z",
"linkquality": 162,
"local_temperature": 20.1,
"local_temperature_calibration": null,
"occupied_heating_setpoint": 23,
"open_window": null,
"running_state": "heat", <----------
"system_mode": "heat",
"temperature_accuracy": null,
"temperature_sensor_select": null,
"update": {
"installed_version": 4864,
"latest_version": 5120,
"state": "available"
},
"valve_closing_degree": null,
"valve_closing_limit_voltage": null,
"valve_motor_running_voltage": 1160,
"valve_opening_degree": null,
"valve_opening_limit_voltage": null,
"weekly_schedule": null
}

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 22:17
by jvdz
Again: please show the ad mqtt messages content for this device!

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 23:04
by waltervl
So the config topic is important here, that is the topic normally in the folder homeassistant and ending on config. See also the wiki for examples and instructions https://wiki.domoticz.com/MQTT_AD_Report_Problems

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 23:27
by TheHelma
My Selector Switch has 3 options:
0 -off
10 -auto
20 -heat

The MQTT Explorer shows, that the selector changes the "system_mode" of the thermostat to "off", "auto" or "heat".

So my selector switch is connected to the "system_mode" of the thermostat and not to the running_state as in Hans case.

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Thursday 20 November 2025 23:32
by waltervl
These discussions have no use of you do not give the contents of the config topic........

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Friday 21 November 2025 0:15
by TheHelma
I have no config topic for the devices in my zigbee2mqtt broker. Do I have to activate something specific to publish the config topic?

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Friday 21 November 2025 8:55
by jvdz
The discovery topic is always broadcasted a startup of ZIGBEE2MQTT and isn't under "/zigbee2mqtt"!
Default topic is /homeassist unless you have changed it to something else. Just check either your ZIGBEE2MQTT config, or the MQTT AD HArdware in Domoticz for the appropriate topic.

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 1:32
by TheHelma
Thank u so much for the hint! I think I´ve found the config:

{
"action_template": "{% set values = {None:None,'idle':'idle','heat':'heating','cool':'cooling','fan_only':'fan'} %}{{ values[value_json.running_state] }}",
"action_topic": "zigbee2mqtt/Kitchen",
"availability": [
{
"topic": "zigbee2mqtt/bridge/state",
"value_template": "{{ value_json.state }}"
},
{
"topic": "zigbee2mqtt/Kitchen/availability",
"value_template": "{{ value_json.state }}"
}
],
"availability_mode": "all",
"current_temperature_template": "{{ value_json.local_temperature }}",
"current_temperature_topic": "zigbee2mqtt/Kitchen",
"default_entity_id": "climate.kitchen",
"device": {
"identifiers": [
"zigbee2mqtt_0x38398ffffe1b2042"
],
"manufacturer": "SONOFF",
"model": "Zigbee thermostatic radiator valve",
"model_id": "TRVZB",
"name": "Kitchen",
"sw_version": "1.3.0",
"via_device": "zigbee2mqtt_bridge_0x00124b002e1e10c0"
},
"max_temp": "35",
"min_temp": "4",
"mode_command_topic": "zigbee2mqtt/Kitchen/set/system_mode",
"mode_state_template": "{{ value_json.system_mode }}",
"mode_state_topic": "zigbee2mqtt/Kitchen",
"modes": [
"off",
"auto",
"heat"
],
"name": null,
"object_id": "kitchen",
"origin": {
"name": "Zigbee2MQTT",
"sw": "2.6.2",
"url": "https://www.zigbee2mqtt.io"
},
"temp_step": 0.5,
"temperature_command_topic": "zigbee2mqtt/Kitchen/set/occupied_heating_setpoint",
"temperature_state_template": "{{ value_json.occupied_heating_setpoint }}",
"temperature_state_topic": "zigbee2mqtt/Kitchen",
"temperature_unit": "C",
"unique_id": "0x38398ffffe1b2042_climate_zigbee2mqtt"
}

Is this the correct info needed?

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 11:32
by jvdz
This part:
{
"action_template": "{% set values = {None:None,'idle':'idle','heat':'heating','cool':'cooling','fan_only':'fan'} %}{{ values[value_json.running_state] }}",
"action_topic": "zigbee2mqtt/Kitchen",
...defines how to "translate" the incoming state into the selector state.
Was the device created recently or in the past, and did this message start appearing after an update?
Does the device also contain the "wrong" heat option when it gets recreated?

EDIT:
Checking the sourcecode, It seems that the creation of the device doesn't use the "action_template" and simply loops through the option in:
"modes": ["off", "auto", "heat"],
This is something that @Gizmocuz needs to check if this another formatted discovery than supported.

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 14:27
by hansdeh
What you described above is what I also see in MQTT Explorer.

The running_state is what shows if the heater is really on, the system_mode sets if the heater is swithed on when local temperature is below setpoint.

The running_state is recently added to domoticz. I found a topic which mentioned an update van zigbee2mqtt and the latest stable version of Domoticz to get the running_state in DOmoticz.
The zigbee device was already known in Domoticz and the selector device xxxxx Action Mode was added which the values :
0 None
10 idle
20 heating
30 cooling
40 fan

This looks like an air conditioner device instead of an thermostat device.

I'm a long time user of Domoticz, but recently switch from Deconz to zigbee2mqtt so not that experienced with zigbee, so my apologies if my question was not so documented as it should have been.

Hans

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 14:42
by TheHelma
The device was created in the past and the errors appeared after updating to 2025.2 stable. I haven´t tried to recreate the device yet.

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 14:49
by jvdz
So it looks like we are talking 2 different cases here as the Domoticz Selector switch has different options, so are we really talking the same issue here?

@hansdeh:
We haven't seen your AD Config message yet so it remains hard to followup. The check things, it is always required to have the complete set of MQTT packages and Issue description.

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Saturday 22 November 2025 16:25
by hansdeh
Hi,

Like I wrote earlier I'm not zo familiar with zigbee2mqtt so I don't no what the AD Config Message is and where to find. I googled AD Config message so hopefully this is where you're looking for to help me.

{
"action_template": "{% set values = {None:None,'idle':'idle','heat':'heating','cool':'cooling','fan_only':'fan'} %}{{ values[value_json.running_state] }}",
"action_topic": "zigbee2mqtt/0xa4c13886744ea629",
"availability": [
{
"topic": "zigbee2mqtt/bridge/state",
"value_template": "{{ value_json.state }}"
},
{
"topic": "zigbee2mqtt/0xa4c13886744ea629/availability",
"value_template": "{{ value_json.state }}"
}
],
"availability_mode": "all",
"current_temperature_template": "{{ value_json.local_temperature }}",
"current_temperature_topic": "zigbee2mqtt/0xa4c13886744ea629",
"default_entity_id": "climate.0xa4c13886744ea629",
"device": {
"hw_version": 1,
"identifiers": [
"zigbee2mqtt_0xa4c13886744ea629"
],
"manufacturer": "Tuya",
"model": "Wall thermostat",
"model_id": "ZWT198/ZWT100-BH",
"name": "0xa4c13886744ea629",
"via_device": "zigbee2mqtt_bridge_0xe0798dfffe71980c"
},
"max_temp": "35",
"min_temp": "5",
"mode_command_topic": "zigbee2mqtt/0xa4c13886744ea629/set/system_mode",
"mode_state_template": "{{ value_json.system_mode }}",
"mode_state_topic": "zigbee2mqtt/0xa4c13886744ea629",
"modes": [
"off",
"heat"
],
"name": null,
"object_id": "0xa4c13886744ea629",
"origin": {
"name": "Zigbee2MQTT",
"sw": "2.6.3",
"url": "https://www.zigbee2mqtt.io"
},
"preset_mode_command_topic": "zigbee2mqtt/0xa4c13886744ea629/set/preset",
"preset_mode_state_topic": "zigbee2mqtt/0xa4c13886744ea629",
"preset_mode_value_template": "{{ value_json.preset }}",
"preset_modes": [
"manual",
"auto",
"temporary_manual"
],
"temp_step": 0.5,
"temperature_command_topic": "zigbee2mqtt/0xa4c13886744ea629/set/current_heating_setpoint",
"temperature_state_template": "{{ value_json.current_heating_setpoint }}",
"temperature_state_topic": "zigbee2mqtt/0xa4c13886744ea629",
"temperature_unit": "C",
"unique_id": "0xa4c13886744ea629_climate_zigbee2mqtt"
}

If not please help me to get it

Hans

Re: mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Posted: Monday 24 November 2025 13:07
by hansdeh
Fixed in build 16929