zigbee2mqtt
zigbee2mqtt copied to clipboard
Moes Thermostat can only set whole degrees
What happened?
Temperature target value for the BHT-002-GCLZB is reported in whole degrees and can only be set as whole degrees, whereas the device reports and changes in .5 degree steps.
What did you expect to happen?
I'd like to see and set current_heating_setpoint in .5 degree steps via mqtt like it is possible at the device itself.
How to reproduce it (minimal and precise)
Try to set a temperature for current_heating_setpoint with .5 degrees.
Zigbee2MQTT version
1.28.2
Adapter firmware version
20210708
Adapter
SONOFF Zigbee 3.0 USB Dongle Plus,TI CC2652P
Debug log
No response
Same problem with MOES BRT-100-TRV
I have a few of these and I can confirm. I think it is an issue with the definition of the MQTT climate entity. Both precision and temp step should be: 0.5
precision: 0.5
temp_step: 0.5
Right now, the MQTT definition that Z2M sends to HomeAssistant looks like this, with temp_step defined as 1 and precision missing.
action_template: >-
{% set values =
{None:None,'idle':'off','heat':'heating','cool':'cooling','fan_only':'fan'}
%}{{ values[value_json.running_state] }}
action_topic: zigbee2mqtt/TRV Living
availability:
- topic: zigbee2mqtt/bridge/state
value_template: '{{ value_json.state }}'
- topic: zigbee2mqtt/TRV Living/availability
value_template: '{{ value_json.state }}'
availability_mode: all
current_temperature_template: '{{ value_json.local_temperature }}'
current_temperature_topic: zigbee2mqtt/TRV Living
device:
identifiers:
- zigbee2mqtt_0xaaccc84fffecc3384
manufacturer: Moes
model: Thermostatic radiator valve (BRT-100-TRV)
name: TRV Living
max_temp: '35'
min_temp: '5'
mode_state_template: '{{ value_json.system_mode }}'
mode_state_topic: zigbee2mqtt/TRV Living
modes:
- heat
name: TRV Living
preset_mode_command_topic: zigbee2mqtt/TRV Living/set/preset
preset_mode_state_topic: zigbee2mqtt/TRV Living
preset_mode_value_template: '{{ value_json.preset }}'
preset_modes:
- programming
- manual
- temporary_manual
- holiday
temp_step: 1
temperature_command_topic: zigbee2mqtt/TRV Living/set/current_heating_setpoint
temperature_state_template: '{{ value_json.current_heating_setpoint }}'
temperature_state_topic: zigbee2mqtt/TRV Living
temperature_unit: C
unique_id: 0xaaccc84fffecc3384_climate_zigbee2mqtt
platform: mqtt
Is there a way to test it with a different definition? In z2m gui I can also set only whole degrees. Does it ise the same definition?
Same problem with MOES [BHT-002-GCLZB]
I also confirm that we cannot step by 0.5 degree for MOES BRT-100-TRV.
So I started digging around and found this:
my model starts here: https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/devices/moes.js#L98
and states:
fromZigbee: [fz.moes_thermostat],
which is:
const fz = require('../converters/fromZigbee');
this is where the settings for moes_thermostat starts: https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/fromZigbee.js#L3896 relevant snippet for local temp:
case tuya.dataPoints.moesLocalTemp:
temperature = value & 1<<15 ? value - (1<<16) + 1 : value;
if (!['_TZE200_ztvwu4nk', '_TZE200_ye5jkfsb'].includes(meta.device.manufacturerName)) {
// https://github.com/Koenkk/zigbee2mqtt/issues/11980
temperature = temperature / 10;
}
return {local_temperature: parseFloat(temperature.toFixed(1))};
relevant snippet for heating setpoint:
case tuya.dataPoints.moesHeatingSetpoint:
return {current_heating_setpoint: value};
my question is:
- is fromZigbee.js right to convert heatingSetpoint as non-float?
- is there a way to see the raw zigbee message from the thermostat to verify incoming data?
has anyone tested this thermostat with the smartlife/tuya/moes app if .5°C is possible there? MOES support wants me to show them with their app, that I can only set 1C steps...
On MOES BRT-100-TRV With physical input on the device the step is 0.5 °C, I don't use app
Yes, that's why I contacted support, as the display accepts .5C steps whereas zigbee can only set 1C steps. The question is: is it a zigbee2mqtt issue or a general issue with the device?
Moes support states, that the thermostat can be set in .5C steps via Smartlife or their app.
Anyone has Tuya app to verify? I have no Tuya hub yet, so can't try myself. Perhaps, this TRV has firmware update, but it isn't shown in Z2M. Maybe it will work with original Tuya app, and after update we would have better position reporting and proper setpoint option?..
I bought the moes wireless zigbee hub and connected it with one of my thermostats. Guess what: smartlife app only allows to set whole degrees, too. >:-( The thermostat reports these versions: zigbee module 1.0.8 mcu model: 2.0.1
Sad...
I've sent a Video to moes support and got this response:
"I checked with TUYA team,zigbee thermostat can only set the temperature according to 1 C at present. Wifi thermostat can set 0.5C,hope you understand. I will apply for TUYA engineer to improve this function in the future."
Let's hope they get this fixed. For now there is nothing z2m can do to improve the implementation.
Very strage, because via program e.g. "weekdays_pX_temperature" it is possible to set .5 Degrees values...why not for setpoint ?!
A year later, I asked again (also with the hint, that the program schedule can set .5 degrees) and got this reply from support : "This is indeed a fixed specification parameter of graffiti technology at present. We have also submitted an application, and hope that they can revise this problem as soon as possible after reviewing it. Thank you for your feedback again."
Honestly, I don't understand what they are trying to say :-D
@ all subscribers: please see #19991 and check your device code