Controlling Thermostats

Hi all,

Looking for some suggestions on an approach to a problem. (Home Assistant 2022.4.5)

I have recently converted from zha to zigbee2mqtt (1.25.0-1) and the interface on my Centralite thermostat(s) have changed. They used to expose a temperature attribute for the setpoint, but now they expose a occupied_heating_setpoint and occupied_cooling_setpoint under zigbee2mqtt.

The problem is that the thermostat(s) only control electric baseboard heaters, so the cooling interface doesn’t make sense and seems incompatible with Simple Thermostat and Scheduler Integration. These components aren’t able to control the setpoint and issue errors or don’t change the setpoint

I had thoughts around reshaping the zigbee2mqtt message to only expose temperature attribute, however didn’t find too much documentation.

Any suggestions on how to approach this?

Thanks for your help!

One option to solve this would be to define an mqtt climate entity yourself and map the correct topics for setpoint and current temperature.
Under configuration > devices > mqtt you should be able to find the z2m device and click ‘mqtt info’ for finding the topics.

or perhaps a generic themostat. Generic Thermostat - Home Assistant

@nickrout

I think the generic thermostat was presenting a cooling and heating setpoint that wasn’t really ideal.

@neliss

Thanks for the help, that was what I was thinking. This link was helpful.

I am very impressed with the configurability of zigbee2mqtt!! This link was also helpful

I was able to reconfigure the thermostat and after a couple of days of testing I believe that it is working with just one setpoint. This seems to allow both the Simple Thermostat and Scheduler Integration to function properly.

For those coming after you need to add similar to your home assistant configuration.yaml

climate:
- platform: "mqtt"
  unique_id: "0x000d6f000ad9a2ff_climate_zigbee2mqtt"
  name: "master_bedroom_thermostat_heat"
  availability_topic: "zigbee2mqtt/bridge/state"
  min_temp: "13"
  max_temp: "25"
  modes:
    - "off"
    - "heat"
  mode_state_topic: "zigbee2mqtt/master_bedroom_thermostat_heat"
  mode_state_template: "{{ value_json.system_mode }}"
  mode_command_topic: "zigbee2mqtt/master_bedroom_thermostat_heat/set/system_mode"

  current_temperature_topic: "zigbee2mqtt/master_bedroom_thermostat_heat"
  current_temperature_template: "{{ value_json.local_temperature }}"

  temperature_state_topic: "zigbee2mqtt/master_bedroom_thermostat_heat"
  temperature_state_template: "{{ value_json.occupied_heating_setpoint }}"
  temperature_command_topic: "zigbee2mqtt/master_bedroom_thermostat_heat/set/occupied_heating_setpoint"

  temp_step: 0.5

  action_topic: "zigbee2mqtt/master_bedroom_thermostat_heat"
  action_template: "{% set values = {'idle':'off','heat':'heating'} %}{{ values[value_json.running_state] }}"

Thanks for the help.