ThermostatDevice¶
Thermostats have a wide variety of capabilities that we’ve tried to boil down to some specifics. They can have multiple temperature and humidity sensors and--depending on the device capabilities and region--may have a fan mode, an HVAC mode (heating, cooling, etc.) and associated setpoints. Note: some thermostats don’t support getting the equipment state values: coolIsOn, fanIsOn, heatIsOn, dehumidifierIsOn, and humidifierIsOn. For those thermostats those properties will always be False.
Class Properties¶
| Property | Type | Writable | Min API | Description |
|---|---|---|---|---|
coolIsOn |
boolean | No | 1.0 | is the cooling system (compressor) currently running - shortcut for dev.states['hvacCoolerIsOn']. This property is always present and will be False if the corresponding state dev.states['hvacCoolerIsOn'] is not present. |
coolSetpoint |
float | No | 1.0 | current cool setpoint value - shortcut for dev.states['setpointCool'] |
dehumidifierIsOn |
boolean | No | 1.7 | is the dehumidifier currently turned ON - shortcut for dev.states['hvacDehumidifierIsOn'] |
fanMode |
kFanMode | No | 1.0 | the operating mode for the fan attached to the thermostat - shortcut for dev.states['hvacFanMode'] |
fanIsOn |
boolean | No | 1.0 | is the fan currently running - shortcut for dev.states['hvacFanIsOn'] |
heatIsOn |
boolean | No | 1.0 | is the heater currently running - shortcut for dev.states['hvacHeaterIsOn']. This property is always present and will be False if the corresponding state dev.states['hvacHeaterIsOn'] is not present. |
heatSetpoint |
float | No | 1.0 | current heat setpoint value - shortcut for dev.states['setpointHeat'] |
humidities |
list of float | No | 1.0 | a list of floating point values representing the current values of all humidity sensors connected to the thermostat |
humiditySensorCount |
integer | No | 1.0 | number of humidity sensors this thermostat supports |
humidifierIsOn |
boolean | No | 1.7 | is the humidifier currently turned ON - shortcut for dev.states['hvacHumidifierIsOn'] |
hvacMode |
kHvacMode | No | 1.0 | the operating mode for the HVAC system attached to the thermostat - shortcut for dev.states['hvacOperationMode'] |
temperatureSensorCount |
integer | No | 1.0 | number of temperature sensors this thermostat supports |
temperatures |
list of float | No | 1.0 | a list of floating point values representing the current values of all temperature sensors connected to the thermostat |
To check whether the thermostat device actually supports the coolIsOn and heatIsOn properties, one can check: support_heat_and_cool = dev.pluginProps.get("ShowCoolHeatEquipmentStateUI", False)
Plugin Capabilities¶
These pluginProps can be updated by a plugin to describe the capabilities for a particular thermostat instance. Some of these are useful to provide a higher-level abstraction for accessing/changing thermostat properties or states.
| Property | Type | Writeable | Description |
|---|---|---|---|
NumTemperatureInputs |
Integer | Yes | should range between 1 and 3 |
NumHumidityInputs |
Integer | Yes | should range between 0 and 3 |
SupportsHeatSetpoint |
Boolean | Yes | True or False |
SupportsCoolSetpoint |
Boolean | Yes | True or False |
SupportsHvacOperationMode |
Boolean | Yes | True or False |
SupportsHvacFanMode |
Boolean | Yes | True or False |
ShowCoolHeatEquipmentStateUI |
Boolean | Yes | True or False |
Some of these are reflected as attributes in the device instance as well:
| Attribute | Read-Only |
|---|---|
dev.hvacMode |
Yes |
dev.fanMode |
Yes |
dev.coolSetpoint |
Yes |
dev.heatSetpoint |
Yes |
dev.temperatureSensorCount |
Yes |
dev.temperatures |
Yes |
dev.humiditySensorCount |
Yes |
dev.humidities |
Yes |
dev.coolIsOn |
Yes |
dev.heatIsOn |
Yes |
dev.fanIsOn |
Yes |
dev.dehumidifierIsOn |
Yes |
dev.humidifierIsOn |
Yes |
dev.supportsHvacFanMode |
Yes |
dev.supportsHvacOperationMode |
Yes |
dev.supportsCoolSetpoint |
Yes |
dev.supportsHeatSetpoint |
Yes |
More information on how to use these Thermostat properties and attributes can be found in the Example Device - Thermostat.indigoPlugin in the Indigo Plugin SDK.
Fan Mode Enumeration¶
indigo.kFanMode |
|
|---|---|
| Value | Description |
AlwaysOn |
signal the fan that it should be running continuously |
Auto |
signal the fan that it should only run when the HVAC system needs it to be running |
HVAC Mode Enumeration¶
indigo.kHvacMode |
|
|---|---|
| Value | Description |
Cool |
the hvac system is only reacting to cool setpoints |
HeatCool |
the hvac system is reacting to both cool and heat setpoints |
Heat |
the hvac system is only reacting to and heat setpoints |
Off |
the hvac system is turned off |
ProgramHeatCool |
the hvac system is executing it’s built-in automatic program, which usually responds to both heat and cool setpoints |
ProgramCool |
the hvac system is executing it’s built-in cooling program |
ProgramHeat |
the hvac system is executing it’s built-in heating program |
Device States¶
These are the states provided by this device type and accessible through the dev.states dictionary. They are read-only, but if you're a plugin developer you can use the updateStateOnServer() class method to update most of these states for devices owned by your plugin (exceptions are noted below).
| State ID | Type | Property Name | Notes |
|---|---|---|---|
humidityInput# |
float | N/A | replace the # with the humidity sensor # (up to humiditySensorCount) to directly access the humidity value for that input |
humidityInputsAll |
string | N/A | a comma separated list of all humidity values |
hvacCoolerIsOn |
boolean | coolIsOn |
True if the cooling system currently running |
hvacDehumidifierIsOn |
boolean | dehumidifierIsOn |
True if the dehumidifier is currently running |
hvacFanIsOn |
boolean | fanIsOn |
True if the fan currently running |
hvacFanMode |
kFanMode | fanMode |
operating mode for the fan attached to the thermostat |
hvacFanIsAlwaysOn |
boolean | N/A | True if the fan mode is set to AlwaysOn. Note: this state can't be directly updated but rather will be updated automatically when you update hvacFanMode. |
hvacFanIsAuto |
boolean | N/A | True if the fan mode is set to Auto. Note: this state can't be directly updated but rather will be updated automatically when you update hvacFanMode. |
hvacHeaterIsOn |
boolean | heatIsOn |
True if the heating system currently running |
hvacHumidifierIsOn |
boolean | humidifierIsOn |
True if the humidifier is currently running |
hvacOperationMode |
kHvacMode | hvacMode |
operating mode for the HVAC system attached to the thermostat |
hvacOperationModeIsAuto |
boolean | N/A | True if the HVAC is set to HeatCool. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsCool |
boolean | N/A | True if the HVAC is set to Cool. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsHeat |
boolean | N/A | True if the HVAC is set to Heat. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsOff |
boolean | N/A | True if the HVAC is set to Off. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsProgramAuto |
boolean | N/A | True if the HVAC is set to ProgramHeatCool. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsProgramCool |
boolean | N/A | True if the HVAC is set to ProgramCool. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
hvacOperationModeIsProgramHeat |
boolean | N/A | True if the HVAC is set to ProgramHeat. Note: this state can't be directly updated but rather will be updated automatically when you update hvacOperationMode. |
setpointCool |
float | coolSetpoint |
the cool setpoint |
setpointHeat |
float | heatSetpoint |
the heat setpoint |
temperatureInput# |
float | N/A | replace the # with the temperature sensor # (up to temperatureSensorCount) to directly access the humidity value for that input |
temperatureInputsAll |
string | N/A | a comma separated list of all temperature values |
Commands (indigo.thermostat.*)¶
Decrease Cool Setpoint¶
Decrease the cool setpoint by a delta value.
Command Syntax Examples
indigo.thermostat.decreaseCoolSetpoint(123)
indigo.thermostat.decreaseCoolSetpoint(123, delta=5)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
delta |
No | float | Number of degrees to decrease the cool setpoint. If unspecified, the change will be equal to one degree. |
Decrease Heat Setpoint¶
Decrease the heat setpoint by a delta value.
Command Syntax Examples
indigo.thermostat.decreaseHeatSetpoint(123)
indigo.thermostat.decreaseHeatSetpoint(123, delta=5)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
delta |
No | float | Number of degrees to decrease the heat setpoint. If unspecified, the change will be equal to one degree. |
Increase Cool Setpoint¶
Increase the cool setpoint by a delta value.
Command Syntax Examples
indigo.thermostat.increaseCoolSetpoint(123)
indigo.thermostat.increaseCoolSetpoint(123, delta=5)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
delta |
No | float | Number of degrees to increase the cool setpoint. If unspecified, the change will be equal to one degree. |
Increase Heat Setpoint¶
Increase the heat setpoint by a delta value.
Command Syntax Examples
indigo.thermostat.increaseHeatSetpoint(123)
indigo.thermostat.increaseHeatSetpoint(123, delta=5)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
delta |
No | float | Number of degrees to increase the heat setpoint. If unspecified, the change will be equal to one degree. |
Set Cool Setpoint¶
Set the cool setpoint to an absolute temperature.
Command Syntax Examples
indigo.thermostat.setCoolSetpoint(123, value=78)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
value |
Yes | integer | the absolute temperature of the setpoint |
Set Fan Mode¶
Adjust the fan mode.
Command Syntax Examples
indigo.thermostat.setFanMode(123, value=indigo.kFanMode.AlwaysOn)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
value |
Yes | kFanMode | the operating mode for the fan |
Set Heat Setpoint¶
Set the heat setpoint to an absolute temperature.
Command Syntax Examples
indigo.thermostat.setHeatSetpoint(123, value=78)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
value |
Yes | integer | the absolute temperature of the setpoint |
Set HVAC Mode¶
Adjust the HVAC mode.
Command Syntax Examples
indigo.thermostat.setHvacMode(123, value=indigo.kHvacMode.HeatCool)
Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
| direct parameter | Yes | integer | id or instance of the device |
value |
Yes | kHvacMode | HVAC mode identifier |
Examples