mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

For devices supporting the Auto Discovery feature. Like ZWaveJS2MQTT, Zigbee2MQTT.

Moderator: leecollings

Post Reply
hansdeh
Posts: 7
Joined: Friday 03 January 2025 23:05
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

mismatch with zigbee2mqtt (payload zigbee thermostate) and domoticz

Post 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
User avatar
jvdz
Posts: 2441
Joined: Tuesday 30 December 2014 19:25
Target OS: Raspberry Pi / ODroid
Domoticz version: 4.107
Location: Netherlands
Contact:

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

Post 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?
TheHelma
Posts: 8
Joined: Tuesday 27 February 2024 20:19
Target OS: Raspberry Pi / ODroid
Domoticz version: 2025.2
Location: Germany
Contact:

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

Post 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
}
User avatar
jvdz
Posts: 2441
Joined: Tuesday 30 December 2014 19:25
Target OS: Raspberry Pi / ODroid
Domoticz version: 4.107
Location: Netherlands
Contact:

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

Post by jvdz »

Again: please show the ad mqtt messages content for this device!
User avatar
waltervl
Posts: 6677
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2025.1
Location: NL
Contact:

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

Post 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
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
TheHelma
Posts: 8
Joined: Tuesday 27 February 2024 20:19
Target OS: Raspberry Pi / ODroid
Domoticz version: 2025.2
Location: Germany
Contact:

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

Post 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.
User avatar
waltervl
Posts: 6677
Joined: Monday 28 January 2019 18:48
Target OS: Linux
Domoticz version: 2025.1
Location: NL
Contact:

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

Post by waltervl »

These discussions have no use of you do not give the contents of the config topic........
Domoticz running on Udoo X86 (on Ubuntu)
Devices/plugins: ZigbeeforDomoticz (with Xiaomi, Ikea, Tuya devices), Nefit Easy, Midea Airco, Omnik Solar, Goodwe Solar
TheHelma
Posts: 8
Joined: Tuesday 27 February 2024 20:19
Target OS: Raspberry Pi / ODroid
Domoticz version: 2025.2
Location: Germany
Contact:

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

Post 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?
Attachments
Screenshot 2025-11-21 001252.png
Screenshot 2025-11-21 001252.png (27.91 KiB) Viewed 191 times
User avatar
jvdz
Posts: 2441
Joined: Tuesday 30 December 2014 19:25
Target OS: Raspberry Pi / ODroid
Domoticz version: 4.107
Location: Netherlands
Contact:

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

Post 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.
TheHelma
Posts: 8
Joined: Tuesday 27 February 2024 20:19
Target OS: Raspberry Pi / ODroid
Domoticz version: 2025.2
Location: Germany
Contact:

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

Post 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?
User avatar
jvdz
Posts: 2441
Joined: Tuesday 30 December 2014 19:25
Target OS: Raspberry Pi / ODroid
Domoticz version: 4.107
Location: Netherlands
Contact:

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

Post 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.
hansdeh
Posts: 7
Joined: Friday 03 January 2025 23:05
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

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

Post 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
TheHelma
Posts: 8
Joined: Tuesday 27 February 2024 20:19
Target OS: Raspberry Pi / ODroid
Domoticz version: 2025.2
Location: Germany
Contact:

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

Post 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.
User avatar
jvdz
Posts: 2441
Joined: Tuesday 30 December 2014 19:25
Target OS: Raspberry Pi / ODroid
Domoticz version: 4.107
Location: Netherlands
Contact:

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

Post 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.
hansdeh
Posts: 7
Joined: Friday 03 January 2025 23:05
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

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

Post 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
hansdeh
Posts: 7
Joined: Friday 03 January 2025 23:05
Target OS: Raspberry Pi / ODroid
Domoticz version:
Contact:

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

Post by hansdeh »

Fixed in build 16929
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest