App for heat index / "comfort index" calculation?

I'm using Hubitat to manage my HVAC system (virtual thermostat and thermostat scheduler, tied to outlets right now). I'd like to include a calculation in my HVAC system to reflect "comfort" based on something like heat index.

Something like "Select a temperature sensor and a humidity sensor, and the app creates a virtual temperature sensor that it keeps updated with a 'heat index' or 'realfeel' temperature."

Are there any community apps that do this? My quick searches haven't turned anything up but I'm not great at these kinds of searches.

I'm planning on developing something myself if it doesn't exist, but don't want to reinvent the wheel.

I believe that this was going to support something like what you are looking for, but it's not there yet.. [RELEASE] Advanced vThermostat - Virtual Thermostat HVAC control - Code Share - Hubitat

1 Like

Thanks! That looks very promising, but as you say doesn't quite do what I'm looking for yet. I'll keep an eye on it for sure.

I may end up using it anyway - right now I'm just using RM and a native virtual thermostat to do the work this app would do for me much more cleanly.

@JohnRob has written an app that calculates the dewpoint (the best measure of comfort) using temperature and humidity as input.

I use a Node-RED sequence to calculate the dewpoint and use that number to control my HVAC system (99% of my automations are in Node-RED), and I'm happy to share those flows. I keep the indoor dewpoint between 55-58F when the house is occupied, and up to 63F when only the animals are at home.

1 Like

Thanks so much! @JohnRob's app looks nearly perfect! I'll give it a try!

I think I may still end up adding some stuff to it, but the dew-point looks really helpful. My research had somehow failed to turn up that as a good measure of comfort.

I hadn't heard of Node-Red. Some quick googling looks interesting but at this time I'm trying to avoid adding additional processors to my setup. I'd like to just develop apps and drivers for Hubitat so I can keep everything running on one box. It looks like Node-Red is essentially an alternate programming language you're running on a RasbPi or something similar, that is driving Hubitat over the Maker API?

1 Like

Yes. I like it for a few reasons:

  1. I like the interface to create automations (sequences).
  2. It has a great many integrations not available directly in Hubitat - so it lets me integrate devices that aren't supported by Hubitat with my Hubitat-paired devices.
  3. It is very easy to swap devices. For example, if for any reason, I decide in the future to use a different z-wave controller, I can keep my existing automations with minimal changes.
1 Like

I have never heard of using dew point instead of temperature with the HVAC. I need to Google.

1 Like

here is some groovey code that is part of the eccowitt weather station.. it would be easy to roll into a therm that has both temp and humidity, assuming you have a custom not built in driver.. but would you want it based on the heat index outdoors or indoors?
// Calculate heatIndex based on Heat index - Wikipedia
BigDecimal degrees;
String danger;
String color;

  if (temperature < 80)  {
    degrees = temperature;
    danger = "Safe";
    color = "ffffff";
  else {
    BigDecimal humidity = val.toBigDecimal();

    degrees = -42.379 +
             (  2.04901523 * temperature) +
             ( 10.14333127 * humidity) -
             (  0.22475541 * (temperature * humidity)) -
             (  0.00683783 * (temperature ** 2)) -
             (  0.05481717 * (humidity ** 2)) +
             (  0.00122874 * ((temperature ** 2) * humidity)) +
             (  0.00085282 * (temperature * (humidity ** 2))) -
             (  0.00000199 * ((temperature ** 2) * (humidity ** 2)));

    if      (degrees < 80)  { danger = "Safe";            color = "ffffff"; }
    else if (degrees < 91)  { danger = "Caution";         color = "ffff66"; }
    else if (degrees < 104) { danger = "Extreme Caution"; color = "ffd700"; }
    else if (degrees < 126) { danger = "Danger";          color = "ff8c00"; }
    else                    { danger = "Extreme Danger";  color = "ff0000"; }

  updated = attributeUpdateTemperature(degrees.toString(), attribHeatIndex);
  if (attributeUpdateString(danger, attribHeatDanger)) updated = true;
  if (attributeUpdateString(color, attribHeatColor)) updated = true;



Interesting! I will keep it in mind for if/when I need to branch out from what I can do in Hubitat! Thanks!

Same! I'm gonna have to give it a try and see how it works for my setup.

Thank you! I'll add this code to my references for this project!

1 Like

This is very interesting. I haven’t heard of using this for indoor comfort and as an HVAC setpoint.

Sounds like it works well for you?


Yes it has. I use dew-point to control my thermostat set-point in cool mode, and temperature in heat mode.

I calculate the dew-point using an average of 10 temperature/humidity sensors that are weighted differently in Home (when I'm upstairs) and Sleep (when I'm downstairs) modes.


Living in Texas makes it easy to find the comfort setting... You just set it to as cold as it will go.


I started looking at this recently and took a slightly different approach.

I use a derivation of GitHub - DeanCording/node-red-contrib-comfort: A Node Red node to calculate the thermal comfort level of an environment using ASHRAE Standard 55 which uses temperature and humidity to calculate a scale "sensation" from cold to hot.

It's pretty interesting as it lets you add weightings for activity levels, amounts of clothing worn, airflow, etc.

Now I know why family complain of feeling cold even though the thermostat is set at 22°C!

1 Like

Perhaps this one will work? [RELEASE] Thermostat Manager - Code Share - Hubitat

I indeed spent many years fine tuning this program to manage temperature in parallel with humidity levels. There's still work to be done on the automated comfort evaluation, but we use it at home and no one complains about the temperature being wrong. Also, there's the possibility to use a dimmer as a mean to send voice commands in order to get the proper temperature at a given time - the app then adjusts its automatic settings and comfort evaluation from there : it learns from your input (if you chose the "auto" option as a method of evaluation). Many other features to be explored too.

I was looking to give your app a try. I have some questions, but will ask in the thread.