Skip to content

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

# increase the cool setpoint by 5 degrees
indigo.thermostat.decreaseCoolSetpoint(123, delta=5)

# set the thermostat mode to auto
indigo.thermostat.setHvacMode(123,
    value=indigo.kHvacMode.HeatCool)

# set the heat setpoint to 78
indigo.thermostat.setHeatSetpoint(123, value=78)