WTH can't we have a more versatile generic thermostat

Hi!
The issue I’m facing is that I have a KNX AC system with heat function and also KNX gas heating system. I want to have only one thermostat for all of this so that I can configure how it behaves. Currently I have a MQTT HVAC to address it all but it involves a lot of automations and fiddling around in order to make it work correctly (and still I am having some issues with it).
Some problems I’m facing with generic thermostat:

  • It can only be used with a sensor, so if you have a thermostat, it does not receive feedback and cannot send other info than temperature (ie: if you change your target temperature or modes in the thermostat it does not refresh in HASS and viceversa).

  • I want to use the gas heater as default on heat mode and the AC as aux heater. I can do this with MQTT HVAC but not with generic thermostat. It only allows one device per thermostat, so I cannot combine both my heater and cooling systems either.

  • In my case, the temperature tolerances, the start/stop based on target temperature and air duct doors are already being controled by KNX. Generic Thermostat conflicts with this.

Generic thermostat was designed to control AC or heater systems by using an on/off switch and reading the temperature with a separate sensor, but this reduces significantly the use cases it can be used in.

In order to enhance generic thermostats, I have some suggestions based on my MQTT experience. Or maybe leave as it is and create a new component…
Keep on reading if you are interested:

  • About how to integrate a device’s themostat (only current and target temperature). We might be able to specify one or several thermostats instead of a sensor optionally. With one thermostat it’s easy, it should be able to just mirror its current and target temperatures. But you may come across the case in which you have several thermostats with different temperature readings (IE: you have a thermostat from a heater and another one from a cooler which are in different locations of the same room). Of course, you should be able to sync their target temperatures no problem. But which current temperature do we capture? I took two approaches to this issue:

    • You may assign each of them one AC mode, so that it picks the current temperature from the one assigned to the current operation mode.
    • Or you can just simply take one as dominant.
  • About how to handle operation and auxiliary modes, generic thermostat might be able to specify a list of main and auxiliary switches for any of the modes. Then you may create template switches if you want in order to turn on or off heaters, fans and coolers. Ie:

    • For heat mode, a template switch can set your heaters to on or off.
    • For auxiliary heat you can set another template switch that turns on AC on heat mode.
    • For cool mode you can switch between AC on cool mode and off mode.
    • For auxiliary cool mode, another switch that turns on and off the ceiling fans.
    • For fan mode you may want to switch BOTH ceiling fans and AC on fan mode at the same time.
    • For dry mode we may want our AC in dry mode and to shutdown our humidifiers in case they are on.

    This can be very powerful, as the user can configure generic thermostat to behave exactly the way he wants. Note that it’s in the template switches where we set the modes of the different devices, so if we have a dummy thermostat on the wall (one that is not connected to any device but Home Assistant) we’ll have to change its HVAC mode in the template switch’s actions.
    .

  • Maybe we have a dummy thermostat on a wall and still want to control the behavior (on/off) of our heaters/coolers from home assistant. Then it’s OK to let HASS manage the temperatures. But we may want just to combine two self-regulating devices and let them regulate themselves by only adjusting their target temperatures. Then we should be able to optionally disable generic thermostat’s temperature control functions. That way its only function will be to control whitch switches it turns on or off based on the mode and aux settings, and to pass its target temperature settings to the devices’ thermostats.
    This will work too if we have a dummy thermostat and a self regulating device. We can decide to use the device’s self regulating functions but mirror the thermostat’s settings on it or let home assistant control the device’s on/off status with its own temperature control system, which you can configure from the dummy thermostat. Note that in the first case we will provide generic thermostat both the dummy and device’s thermostats so that it can mirror the settings and in the second case we will set a very low target temperature on the device and provide generic thermostat only the dummy thermostat.

  • The last thing to control here is fan speeds. You can set here an input select linked to an automation that selects how we want them to behave (IE: set our AC fan speed and ceiling fan speeds)

Hopefully this whole thing is understandable and not too heavy to read, and it may help someone who wants to implement this. It has been very painful and time consuming make this using MQTT HVAC and YAML but in Python should be relatively simpler. I would do it myself if I was more confident on my python/HASS capabilities.
Thanks and happy automation!

Sorry for de edits. Just correcting some grammatical errors.

Don’t forget to vote for your own wth.

I was also disappointed to see the generic thermostat only supports one of heat or cool.

1 Like

you’d need a default offset (maybe 10 degrees) otherwise they would be instantly battling given inertial overshoot on the threasholds.
Generally if you are forced to do two thermostats you are aware of the issue and build in a sensible value

1 Like