iprak / sensi

HomeAssistant integration for Sensi thermostat
MIT License
43 stars 9 forks source link

Heating max setpoint is enforced for cooling #24

Open neilbrookins opened 10 months ago

neilbrookins commented 10 months ago

The purpose of the heating max setpoint is to prevent wasting money by not allowing heating to a higher temperature than appropriate. This limit should not be applied to the cooling mode. There is nothing wrong with (and no energy is wasted) setting the thermostat warmer when in cooling mode. But this integration incorrectly prevents the cooling mode from being set warmer than this limit.
The reverse is also the same: The purpose of the cooling min setpoint is to prevent wasting energy by not allowing the operator to set the air conditioning to an unreasonable cold temperature. But this limit should not be enforced in heating mode. The operator should be allowed to heat to a colder temperature- the low limit for heating should be 45 degrees F. But this integration is preventing the operator from setting the heating temperature to below this higher limit. Meaning you can’t heat to 50 degrees F. But this should be allowed. The cooling min setpoint should have no impact on heating.

The heating max setpoint should have no impact on cooling.

Please test this inside the Sensi app and you will see what I’m describing is accurate.

iprak commented 10 months ago

I think I am missing something here. I can set heat target to something below 50F.

image

sjbarkey commented 9 months ago

@iprak For starters, I love the integration and find it very useful every day. Thank you for your recent work to get the integration working.

As for this issue, I've encountered the same issue as well.

During the summer months, when the Sensi Thermostat is in Cooling mode, I have the "Cooling Min Setpoint" configured at 75 in the Sensi app to prevent others in the house from setting the thermostat too low, resulting in the system running continuously and wasting energy.

Similarly, during the winter months, when the Sensi Thermostat is in Heating mode, I have the "Heating Max Setpoint" configured at 80 in the Sensi app to prevent others in the house from setting the thermostat too high, resulting in the system running continuously and wasting energy.

When managing the thermostat via the Home Assistant integration, regardless of the thermostat being in the heating or cooling mode, I'm confined to the range of 75 - 80. If I change the "Cooling Min Setpoint" or "Heating Max Setpoint" in the Sensi app, the range I'm confined to in the Home Assistant integration changes accordingly.

This is rarely an issue in the Summer months, but in the winter months, it ultimately means I can't set the Sensi thermostat to anything below 75, which is often desired.

Basically, the "Cooling Min Setpoint" should only be applied to the thermostat when in Cooling mode and the "Heating Max Setpoint" should only be applied to the thermostat when in Heating mode.

neilbrookins commented 9 months ago

I agree with sjbarkey. However there is a problem. Home assistant just has min and max temperatures for the setpoint. There is no way in HA to designate one of them as applicable only based on the mode being heating or cooling. These limits in HA always apply to BOTH modes. This is in stark contrast to the Sensi app behavior where the max and min each apply to only one mode. Personally I prefer the Sensi design over the HA design as my preferences differ between summer and winter. The Sensi way lets me set it once for year round happiness. The HA way forces me to change it twice a year.

Long term, the best solution would be to enhance HA and implement two sets of max/min - one pair for heating and a second pair for cooling. But that doesn’t mean you HAVE to set 4 numbers. You could just set two of these four and leave the other two as unlimited defaults. Then you could have a solution where the Sensi and HA values can behave the same compatible way.

Another short term option- based on the mode you are in have the integration apply only one of the two limits from Sensi app into HA and leave the other limit unset. Then when the mode switches between heat and cool do the reverse and set the other limit in HA and clear the first limit. This solution only requires an integration update and allows the two apps to work more comparably.

The fact that these limits are defined differently between ha and Sensi is causing much confusion.

iprak commented 8 months ago

The integration is operating within the constraints of HomeAssistant framework. The heat_max_temp and heat_max_temp properties of Sensi thermostat should be respected while defining target temperature. These 2 properties are exposed as min_temp and max_temp on the climate entity. Both of these are tagged as cached_property and as I understand that means that they are not recomputed. Proper and continued support for this would need some implementation changes at HA end, it probably would also need some matching changes in the entity card.

neilbrookins commented 7 months ago

please vote for this to be fixed in ha here:

https://community.home-assistant.io/t/generic-thermostat-heating-range-and-cooling-range/703169/5?u=neilbrookins