Temp/humidity behavior for Thermostat Controller and Virtual Thermostat

I would like to request that the Thermostat Controller and the Virtual Thermostat driver present temperature and humidity information externally in the same way a real thermostat does. In the screenshot examples, all the devices are Hubitat devices shared through HomeKit integration to the iOS Home app on the phone.

Real thermostat:

Thermostat controller:

Virtual thermostat:

Not all real thermostats do this. It depends on the capabilities declared in the driver, which generally ultimately reflect the real-world functionality of the device. Apparently, whatever thermostat you're using does this, and whatever driver you are using reflects this.

Thermostat Controller does not care about humidity, and the Virtual Thermostat driver is strictly a thermostat without a humidity sensor. The latter could be changed, or more likely added to as another driver with the additional capability (it doesn't really make sense to add this to the existing driver; it's not part of any thermostat-related capability on Hubitat). A better approach might be to create or find a custom driver that does what you're looking for. Alternatively, you may be able to find another way to do whatever it is you're doing, such as using a Virtual Humidity Sensor driver along with another device that does what you want. If you share your actual automation goal, someone may have other ideas, too.

1 Like

I don't use that integration, but I'm just wondering what the Advance setting called "Show accessory classes and characteristics" does? On the off chance this might change what is displayed related to your question.

That can remove undesired "characteristics" from the device or export it as a different kind of device within its Hubitat capabilities (e.g., switch instead of dimmer). It cannot add something to a driver that does not have the underlying capabilities.

1 Like

Yeah, I knew it is not going to display humidity from the virtual driver that does not have it, but taking humidity out of it, there is still a difference in the displays posted, in that one shows current temperature (and humidity), and other just shows setpoint. That is what I thought it might change, adding current temperature as a characteristic.

My thought was that it may be like how the Amazon Echo App has problems with temperature on thermostats, unless you check the option for Advanced thermostat capabilities. I was just throwing it out there as a question since I do not use the integration.

That's interesting. I wonder if that's just an Apple Home thing. I've always been disappointed with the way it handles thermostats (Alexa is very good about being queried for the current temperature or current setpoint as distinct questions; Home just told me what the setpoint was, which I assumed was it naively thinking that should also be more or less the actual temperature, but this might play into it...).

My ask is that the in-built app incorporate/pass humidity information IF the chosen temperature sensor also has humidity information, and to do so in the same manner as a (some, like Nest & Honeywell) physical thermostat does. As for the in-built virtual driver, to have Humidity attributes added so they can also be set just like the temperature and to pass both of those externally in the same way.

I am already passing the humidity sensor information in other ways to HomeKit and Siri and Alexa. That's not the issue. My goal is to have a consistent display between physical and virtual thermostats.

TL;DR:

  1. Requesting that Hubitat include capability "RelativeHumidityMeasurement" into thermostats created by Thermostat Controller if/when the specified temperature sensor(s) have humidity capability.
  2. Requesting that Hubitat include capability "RelativeHumidityMeasurement" into the built-in Virtual Thermostat driver and include Humidity attribute and command. Or possibly a new driver Virtual Thermostat with Humidity. A new driver with just a few more lines seems like overkill. My request is for the functionality, and not the final method of implementation.

Long part

Here are the details of how I figured this out. Since I can't modify built-in app or driver, I had to do some hacking. For each attempt, the thermostat was removed from Homekit/Homebridge, hack applied, and then reshared.

  1. Thought: Homekit app presents or formats information differently. Hack: use tonesto's Homebridge to share the thermostat. :x:
  2. Thought: HomeKit displays thermostats based on Model. Hack: hard coded tonesto's Homebridge to present Model: Virtual Thermostat to Model: Google Nest Thermostat. :x:
  3. Thought: Third party thermostat driver would work. Hack: used Nelson Clark's Advanced Virtual Thermostat Device Driver to create a virtual thermostat. I'm going to call it AVT for convenience. This driver is a virtual thermostat that controls smart outlets that have heating or cooling device plugged in, so it is not a replacement for Virtual Thermostat. But its not built-in and is a driver that can be recoded for testing. :x:
  4. Thought: The thermostat from #3 isn't official or real so Apple rejects it. Hack: manually change model and serial number presented as Google Nest Thermostat and a cloned serial number. :x:
  5. Thought: There is no humidity data. Hack: hard coded humidity attribute with a value into the ATV driver. :x:
  6. Thought: Driver needs capability for humidity for hard coded humidity value to work. Hack: add capability to ATV driver. :white_check_mark:
  7. Thought: What happens if capability is defined, but no humidity value? Hack: add capability to ATV driver, and do not define an attribute or assign a value. :white_check_mark: Apple displays Current x Humidity: 0%

So my conclusion is that adding the capability is required. However, adding the capability but not having actual humidity data is misleading.