The current Generic Thermostat integration supports a min_temp and max_temp. This works well for heating-only or cooling-only units but when a unit can heat and cool, there typically needs to be a “heating range” and a “cooling range” to properly limit the temperature settings of each mode.
An example of this feature implemented the ecobee Heating Range and Cooling Range: Help Centre
In my specific case, the heat pump in my house has a heating range of 50 deg F to 83 deg F (10 deg C to 28 deg C) and a cooling range of 67 deg F to 87 deg F (19 deg C to 31 deg C).
Feature to be added: allow an option 2nd set of min/max temperature settings to be (optionally) specified in the Generic Thermostat integration such that it limits the temperature settings appropriately when in heating or cooling mode.
I believe what you’ve raised is a different use case. In your case, you’ve got your thermostat set in ‘auto’ mode and it will changeover between heating and cooling as needed to maintain a temperature between your heating and cooling temperature settings.
What I posted about is that I want Home Assistant to be aware of the limits of what valid temperature settings are in heating and cooling. When the UI gives me a slider to adjust the cooling temperature setting, it should not allow me to set anything less than the minimum value or above the maximum value that the integration is configured for in that mode. Cooling has a different range than heating.
In your use case, what’s stopping a user from logging into Home Assistant and setting the heating temperature setting to 50 deg F and the cooling temperature setting to 53 deg F (assuming your min_temp is 50 deg F)? Your unit should never be set that way as it would cool non-stop but I don’t believe there’s any way for Home Assistant’s Generic Thermostat integration to know that it’s breaking any “rules”.
In my use case, during the current season I set my unit into heating mode at night with a temperature setting of 64 deg F. In the morning I warm up the house to 68 deg F. I then wait until 8pm to switch the unit into cooling mode with a temperature setting of 67 deg F. During the night, I have the unit switch back into heating mode at 64 deg F.
My unit cannot be set below 67 deg F in cooling mode, per the manufacturer (Mitsubishi). I can’t limit the min_temp to 67 deg F because I routinely set heating mode to 64 deg F. Because of this (and maybe I’m missing something here), the current integration allows me to tell the integrated thermostat to use an invalid cooling temperature setting.
I have spent hours troubleshooting this issue. Thanks for explaining it accurately. Your suggestion of two sets of limits is the best solution. In some implementations such as Sensi thermostat there are only two limits- but only one of these is enforced in heat mode and the other enforced in cool mode. Meaning that you can’t heat higher than max_heat and you can’t cool below min_cool. But Sensi doesn’t have any low limit for heat and no high limit for cooling. There becomes a serious problem when you try to map Sensi’s two limits directly into HA’s two limits when writing an integration in HA. The problem is that now HA enforces a low limit on heating when Sensi itself does not. Likewise HA enforces a high limit on cooling when native Sensi app does not. This means there is a mismatch between native Sensi app and HA integration. When this is represented in the front end gui the slider doesn’t allow adjustment of temperature in ha when native Sensi app allows adjustment. This behavior cost me hours to troubleshoot. All this would work correctly if the two Sensi limits mapped to two of the four new HA limits and left the other two HA limits undefined. Then the sliders in the front end HA could match the limits in the native app. And the world would be a better place.
The maximum heat and minimum cool settings are in my hardware. And, really, this is where I feel it should be done. I set them when I setup the thermostat.
They can be changed in HA if needed. But, I don’t see that need really.
As a test, I just tried to set the heat setting above 72 in HA. After a second or two, it dropped down to the max in the UI. The thermostat prevented it from going above and reported back to HA what the setting is.