NAV
lua

License, Copyright, and Trademark

The content contained in this repository is the intellectual property of Snap One, LLC, (formerly known as Wirepath Home Systems, LLC), and use without a valid license from Snap One is strictly prohibited. The user of this repository shall keep all content contained herein confidential and shall protect this content in whole or in part from disclosure to any and all third parties except as specifically authorized in writing by Snap One.

License and Intellectual Property Disclaimer

The content in this repository is provided in connection with Snap One products. No license, express or implied, by estoppal or otherwise, to any intellectual property rights is granted by this document or in this repository. Except as provided in Snap Oneʼs terms and conditions for the license of such products, Snap One and its affiliates assume no liability whatsoever and disclaim any express or implied warranty, relating to the sale and/or use of Snap One products including liability or warranties relating to fitness for a particular purpose, merchantability, or infringement of any patent, copyright or other intellectual property right. Snap One products are not intended for use in medical, lifesaving, or life sustaining applications.

Information regarding third-party products is provided solely for educational purposes. Snap One is not responsible for the performance or support of third-party products and does not make any representations or warranties whatsoever regarding the quality, reliability, functionality or compatibility of these products. The reader is advised that third parties can have intellectual property rights that can be relevant to this repository and the technologies discussed herein, and is advised to seek the advice of competent legal counsel regarding the intellectual property rights of third parties, without obligation of Snap One.

Snap One retains the right make changes to this repository or related product specifications and descriptions in this repository, at any time, without notice. Snap One makes no warranty for the use of this repository and assumes no responsibility for any errors that can appear in the repository nor does it make a commitment to update the content contained herein.

Copyright

Copyright 2024 Snap One, LLC. All rights reserved.

The above copyright notice applies to all content in this repository unless otherwise stated explicitly herein that a third-party’s copyright applies.

No part of this publication may be reproduced, photocopied, stored on a retrieval system, or transmitted without the express written consent of the publisher.

Trademarks

Snap One and Snap One Logo, Control4 and the Control4 logo, and DriverWorks are trademarks or registered trademarks of Snap One, LLC. Other product and company names mentioned in this repository may be the trademarks or registered trademarks of their respective owners.

 Derivative Works

To the extent that you create any “Derivative Work” (meaning any work that is based upon one or more preexisting versions of the work provided to you in this repository, such as an enhancement or modification, revision, translation, abridgement, condensation, expansion, collection, compilation or any other form in which such preexisting works may be recast, modified, transformed or adapted, explicitly including without limitation, any updates or changes to Snap One, LLC’s software code or intellectual property) such Derivative Work shall be owned by Snap One, LLC and all right, title and interest in and to each such Derivative Work shall automatically vest in Snap One, LLC. To the extent any Derivative Work does not automatically vest in Snap One, LLC by operation of law, you hereby assign such Derivative Work to Snap One, LLC with full title guarantee. Snap One, LLC shall have no obligation to grant you any right in any such Derivative Work.

Contact Us

Snap One, LLC 11734 S. Election Road Salt Lake City, UT 84020 USA

http://www.control4.com

Introduction

This documentation includes content that details the functions that make up the Thermostat Control Proxy which is supported in the DriverWorks Software Development Kit.

Proxies (Commands)

A proxy driver is an interface to the Control4 system for a set of devices that share common functionality. For instance, most Thermostats have common controls such as INCREASE SET POINT, DECREASE SET POINT and SET PRESET.  The Thermostat proxy allows for a common user interface to control all Thermostats.  The Control4 system (Director) sends information to and receives information from the proxy drivers.  The proxy drivers send information to and receives information from the protocol drivers. Remember, your DriverWorks driver interacts with the proxy driver which then interacts with the system.  As a driver developer you will be relying on this proxy to provide status (notification) to the Control4 system for the device you are controlling.  You will also receive commands from the system that you will act on to control the device.  These commands and notifications are at the heart of what you will be implementing in your driver.  Essentially your driver is becoming the go-between from the Control4 system and your device with the proxy driver giving structure to the commands and notifications which you will be implementing. Your driver can facilitate communications with multiple types of proxies for a single device. As an example, a Security System driver will utilize both the Security proxy and the Contacts proxy. These additional proxies are configured in the <connections> section of the .c4z.

Protocol (Notifications)

Two similar devices may have the same functionality but utilize a very different command set.  A protocol driver provides the device-specific information needed to communicate with the Control4 system.  In the case of DriverWorks, the DriverWorks driver is the protocol driver.  When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver. In the case of DriverWorks, the DriverWorks driver is the protocol driver. When combined with the device-specific.c4Z file it provides the custom code necessary to implement the 2-way device driver.

What’s New

What’s New in 3.4.2

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.4.2

What’s New in 3.4.1

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.4.1

What’s New in 3.4.0

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.4.0.

What’s New in 3.3.2

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.3.2.

What’s New in 3.3.1

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.3.1.

What’s New in 3.3.0

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.3.0.

What’s New in 3.2.3

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.2.3.

What’s New in 3.2.2

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.2.2.

What’s New in 3.2.1

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.2.1.

What’s New in 3.2.0

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.2.0.

What was New in 3.1.2

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.1.2.

What was New in 3.1.0

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.1.0.

What was New in O.S.3

There were no modifications to the Thermostat Proxy in conjunction with O.S. Release 3.0.0.

Thermostat Capabilities

THERMOSTAT CAPABILITIES

The following Capabilities are supported with the Thermostat Proxy. Please see the Samples folder delivered in this SDK for additional Thermostat (V2) code examples.

<can_calibrate></can_calibrate> Indicates if the device is capable of calibrating itself. Enables SET_CALIBRATION command. Valid values: True/False.

<can_change_scale></can_change_scale> Boolean to enable/disable Navigator UIs and ComposerPro from being able to change the scale of the hardware. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<can_cool></can_cool> Indicates if this thermostat supports cooling. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_dehumidify></can_dehumidify> Boolean to enable/disable can_dehumidity capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_do_auto></can_do_auto> Indicates if this thermostat can automatically switch from heat to cool. If the device can deadband enforcement, it will be done on the UIs as specified with the deadband capabilities. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_heat></can_heat> Indicates if this thermostat supports heating. Valid values: True/False. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_humidify></can_humidify> Boolean to enable/disable can_humidity capability, if the device supports this feature, default is True. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<can_inc_dec_setpoints></can_inc_dec_setpoints> Boolean indicating if the device has internal commands to increment and decrement both heat and cool setpoints independently. If false the proxy will take the current setpoint and +/i 1 (or the resolution) and send a DYNAMIC_CAPABILITIES_CHANGED  command with the new setpoint value, which could potentially send 81 three times if someone did programming of Increment Setpoint and the current setpoint was 80, rather than sending 83 as someone might expect from Composer Programming of 3 increment commands without a sleep between that provides enough time for the hardware to set each increment and return the new setpoint to director before the next Increment occurs.

<can_lock_buttons></can_lock_buttons> Indicates if the buttons on the TSTAT can be locked out to prevent changes. Valid values: True/False.

<can_preset></can_preset> Boolean indicating if the device supports the preset functionality including custom_fields. This does not including scheduling as preset_scheduling is a feature that is currently not supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<can_preset_schedule></can_preset_schedule> Boolean indicating if the thermostat will support the SET_EVENTS commands for running presets based on scheduling created in Navigators.

<current_temperature_max_c></current_temperature_max_c> Double indicating the maximum temperature that the thermostat will report in C. Default is 48.

<current_temperature_min_c></current_temperature_min_c> Double indicating the minimum temperature that the thermostat will report in C. Default is -40.

<current_temperature_max_f></current_temperature_max_f> Double indicating the maximum temperature that the thermostat will report in F. Default is 120.

<current_temperature_min_f></current_temperature_min_f> Double indicating the minimum temperature that the thermostat will report in F. Default is -40.

<current_temperature_resolution_c></current_temperature_resolution_c> Double indicating the increments that the temperature will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPBILITIES_CHANGED notification.

<current_temperature_resolution_f></current_temperature_resolution_f> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<fan_modes></fan_modes> This is a comma delimited list of possible fan modes this thermostat supports. For example: Auto, Low, Medium, High with no spaces after the comma. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<fan_states></fan_states> This is a comma delimited list of all the possible states that the HVAC system fan supports. For example: Off, On, Low, Med, Circulate with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_humidity></has_humidity> Boolean indicating if the device can report the current humidity. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_extras></has_extras> Boolean indicating if the device has extras commands support. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_connection_status></has_connection_status> Boolean indicating if the device reports online/offline status of the hardware device, this is often forgotten about but very important to implement in new protocol drivers drivers.

<has_outdoor_temperature></has_outdoor_temperature> Boolean indicating if the device can provide an outdoor temperature. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_remote_sensor></has_remote_sensor> Indicates if this thermostat has a remote sensor. Valid values: True/False.

<has_single_setpoint></has_single_setpoint> Boolean indicating if the device is single setpoint.  can_heat, can_cool and can_auto should be set to false if this option is used. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification. This is older functionality that indicated to UI's and Programming that the device could execute this functionality.  However, their limitation is that they do not take into account if the current HVAC mode supported them.  HVAC Modes replaced their functionality, but older drivers still use them and they do work. Control4 recommends the use of HVAC Modes now and that this capability be set to false in the driver's configuration file.

<has_temperature></has_temperature> Boolean indicating if the device can provide a temperature of the thermostat/room. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<has_vacation_mode></has_vacation_mode> Indicates if this thermostat supports vacation mode Valid values: True/False The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed. Preset Scheduling and Vacation Mode are mutually exclusive and drivers should really use Preset Scheduling to accomplish what Vacation Mode has done in the past.

<hold_modes></hold_modes> This is a comma delimited list of the possible hold modes this thermostat supports. Valid values include: Off, 2 Hours, Until Next, Permanent with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<humidity_modes></humidity_modes> A comma separated list of all the modes the device supports. For example: "Off,Humidify,Dehumidify,Auto" with no spaces after the commas. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<humidity_states></humidity_states> A comma separated list of all the modes the device supports. Usually something like "Off,Humidifying,Dehumidifying", with no spaces after the commas.

<hvac_modes></hvac_modes> A comma separated list of all the modes the device supports. For example: "Off,Heat,Cool", with no spaces after the commas.

<hvac_states></hvac_states> This is a comma delimited list that represents all of the possible states that the HVAC system supports. For example: Off, Heat, Cool, Heating, Stage 1 Cool, etc with no spaces after the commas

<outdoor_temperature_resolution_c></outdoor_temperature_resolution_c> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note that .2 is the lowest C resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<outdoor_temperature_resolution_f></outdoor_temperature_resolution_f> Double indicating the increments that the temperature will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<preset_fields></preset_fields> XML of fields for settings that are potentially unique to the protocol driver, yet will be displayed in the UI during the creation or modification of presets for scheduling. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<scheduling></scheduling> A boolean indicating if the device supports a programmed schedule. If it is true, it should have a schedule_default entry in its c4z file. Also mutually exclusive to Preset Scheduling and use of this is discouraged.

<schedule_default></schedule_default> An XML block indicating the default schedule for the device. Mutually exclusive to Preset Scheduling and use of this is discouraged.

<schedule_entry></schedule_entry> There is one of these entries for each schedule entry during the day. In the example used here, there are six of them. Name indicates the name of the entry that will show up in composer and navigator. Time indicates what time during the day this entry will become active. The time units are minutes since midnight, so 360 means 6:00AM. Enabled indicates whether or not this entry is initially enabled or not. Valid values: True/False. See example to the right.

<schedule_day_info>
   <schedule_entry Name="Awake" Time="360" Enabled="True" />
   <schedule_entry Name="Leave" Time="480" Enabled="True" />
   <schedule_entry Name="Return" Time="1080" Enabled="True"/>
   <schedule_entry Name="Sleep" Time="1320" Enabled="True" />
   <schedule_entry Name="Custom 1" Time="1380" Enabled="False" />
   <schedule_entry Name="Custom 2" Time="1380" Enabled="False" />
</schedule_day_info>

<setpoint_cool_max></setpoint_cool_max> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. If used,_f and _c do not need to be set but since this value is Celsius x 10, it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_max_c></setpoint_cool_max_c> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_max_c></setpoint_cool_max_c> Integer indicating the highest temperature the cool setpoint can be configured as. Default is 89. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min></setpoint_cool_min> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 39. If used,_f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min_c></setpoint_cool_min_c> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. If used, _f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_min_f></setpoint_cool_min_f> Integer indicating the lowest temperature the cool setpoint can be configured as. Default is 42. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_cool_resolution_c></setpoint_cool_resolution_c> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a C notification.

<setpoint_cool_resolution_f></setpoint_cool_resolution_f> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heatcool_deadband_c></setpoint_heatcool_deadband_c> Double indicating the deadband range in Celcius that the hardware requires between heat and cool. Default is 2. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.

<setpoint_heatcool_deadband_f></setpoint_heatcool_deadband_f> Double indicating the deadband range in Fahrenheit that the hardware requires between heat and cool. Default is 2. Post operating system 2.7.0, UI's will show both heat and cool setpoints moving if in Auto and the movement will be based on this deadband value. If a user tries to move heat above cool or cool below heat, the UI's will only send the setpoint command for the primarily moving setpoint. A protocol driver will need to send two notifies back, one for heat and one for cool if in fact both setpoints were changed on the hardware.

<setpoint_heat_max></setpoint_heat_max> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 88. If used, _f and_c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_max_c></setpoint_heat_max_c> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 31. Best to use _f and _c and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_max_f></setpoint_heat_max_f> Integer indicating the highest temperature the heat setpoint can be configured as. Default is 89. Best to use _f and _c and not the older celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min></setpoint_heat_min> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 40. If used, _f and _c do not need to be set but since this value is Celsius x 10 it will result in a potentially undesired Fahrenheit conversion. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min_c></setpoint_heat_min_c> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 4. Best to use _f and _c and not the older Celsius x 10 capability. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_min_f></setpoint_heat_min_f> Integer indicating the lowest temperature the heat setpoint can be configured as. Default is 38. Best to use _f and _c and not the older celsius x 10 capability.

<setpoint_heat_resolution_c></setpoint_heat_resolution_c> Double indicating the increments that the setpoint will follow, such as .1, .5, 1, 2, 5, etc. Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_max></setpoint_dehumidify_max> Integer indicating the highest dehumidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_min></setpoint_dehumidify_min> Integer indicating the lowest dehumidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_min></setpoint_humidify_min> Integer indicating the lowest humidify setpoint, default 0. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_max></setpoint_humidify_max> Integer indicating the highest humidify setpoint, default 100. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_humidify_resolution></setpoint_humidify_resolution> Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_dehumidify_resolution></setpoint_dehumidify_resolution> Integer indicating the increments that the setpoint will follow, Default is 1. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_max_c></setpoint_single_max_c> Integer indicating the highest temperature the single setpoint can be configured as. Default is 32. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_max_f></setpoint_single_max_f> Integer indicating the highest temperature the single setpoint can be configured as. Default is 90. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_min_c></setpoint_single_min_c> Integer indicating the lowest temperature the single setpoint can be configured as. Default is 4. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_single_min_f></setpoint_single_min_f> Integer indicating the lowest temperature the single setpoint can be configured as. Default is 38. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

<setpoint_heat_resolution_f></setpoint_heat_resolution_f> Double indicating the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Default is 1. Note .2 is the lowest F resolution supported. This capability can be changed through a DYNAMIC_CAPABILITIES_CHANGED  notification.

Thermostat Conditionals

THERMOSTAT CONDITIONALS

The following Conditionals are supported with the Thermostat Proxy and can be used in ComposerPro Programming. Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.

IF_TEMPERATURE - simple integer test to see if the current temperature is a supplied value. No manipulation is done on the units for the temperature. If the thermostat is configured to be celsius, the value to compare it with should be in Celsius as well.

IF_HEAT_SETPOINT - simple integer test against the current heat setpoint.

IF_COOL_SETPOINT - simple integer test against the current cool setpoint.

IF_HVAC_MODE - simple boolean test to see if the HVAC is in a given mode.

IF_FAN_MODE - simple boolean test to see if the fan is in a given mode.

IF_HOLD_MODE - simple boolean test to see if the hold mode is in a given mode.

IF_HVAC_STATE - simple boolean test to see if the HVAC is in a given state.

IF_FAN_STATE - simple boolean test to see if the fan is in a given state.

IF_VACATION_MODE - simple boolean test to see if the vacation mode is on/off.

IF_OUTDOOR_TEMPERATURE - simple integer test to see if the current temperature is a supplied value. Not manipulation is done on the units for the temperature. If the thermostat is configured to be Celsius, the value to compare it with should be in Celsius as well.

IF_HEAT_SETPOINT - simple integer test against the current heat setpoint.

IF_COOL_SETPOINT - simple integer test against the current cool setpoint.

IF_HVAC_MODE - simple boolean test to see if the HVAC is in a given mode.

IF_FAN_MODE - simple boolean test to see if the fan is in a given mode.

IF_HOLD_MODE - simple boolean test to see if the hold mode is in a given mode.

IF_HVAC_STATE - simple boolean test to see if the HVAC is in a given state.

IF_FAN_STATE - simple boolean test to see if the fan is in a given state.

IF_VACATION_MODE - simple boolean test to see if the vacation mode is on/off.

IF_OUTDOOR_TEMPERATURE - simple integer test to see if the current temperature is a supplied value.

IF_HUMIDITY_MODE - simple boolean test on a string to see if the humidity mode is in a given mode.

IF_HUMIDITY_STATE - simple boolean test on a string to see if the humidity state is in a given mode.

IF_HUMIDIFY_SETPOINT - simple integer test on an int number to see if the current humidify setpoint is a supplied value.

IF_HUMIDITY_MODE - simple boolean test on a string to see if the humidity mode is in a given mode.

IF_HUMIDITY_STATE - simple boolean test on a string to see if the humidity state is in a given mode.

IF_HUMIDIFY_SETPOINT - simple integer test on an int number to see if the current humidify setpoint is a supplied value.

IF_MESSAGE - simple boolean test to see if the HVAC is in a given mode.

IF_PRESET - simple boolean test to see if the preset is in a given name.

Thermostat Connections

THERMOSTAT CONNECTION CLASSES

The Thermostat Proxy has three output connections. These include:

  1. Temperature (Class: TEMPERATURE_VALUE) - Used to send temperature received from the proxy driver to other driver(s)
  2. Outdoor Temperature (Class: TEMPERATURE_VALUE) - Used to send temperature received from the proxy driver to other driver(s)
  3. Humidity (Class: HUMIDITY_VALUE) - Used to send humidity received from the proxy driver to other driver(s)

TEMPERATURE AND OUTDOOR VALUE CONNECTION CLASS COMMANDS

GET_SENSOR_VALUE

Used to require remote temperature sensor data via the control input connection binding. Note that command handling is not implemented in some drivers with a temperature control output connection. Sensor data cannot be be requested from these drivers.

Signature

GET_SENSOR_VALUE ()

| Parameter |

None

VALUE_INITIALIZED

The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.

Signature

VALUE_INITIALIZED ()

Parameter Description
str STATUS : Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot.
int TIMESTAMP: Timestamp of when the last value was received.

VALUE_CHANGED

The value has changed.

Signature

VALUE_CHANGED ()

Parameter Description
int CELSIUS - Float - Celsius temperature value.
int FAHRENHEIT - Float - Fahrenheit temperature value.
int TIMESTAMP - Timestamp When the change occurred.

VALUE_UNAVAILABLE

The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc

Signature

VALUE_CHANGED ()

Parameter Description
str STATUS: offline - Device went offline or was unbound

HUMIDITY VALUE CONNECTION CLASS COMMANDS

Please see the Samples folder delivered in this SDK for Thermostat (V2) code examples.

VALUE_INITIALIZED

The value has been initialized. OnBindingChanged will cause this command to be sent automatically when the sending device goes Online.

Signature

VALUE_INITIALIZED ()

Parameter Description
str STATUS: Default is the status after first loading a driver and the value has never been set. active - Status if the value is active. last_known - The Last value received. The device either went offline or it has not been heard from since a reboot.
int TIMESTAMP: Timestamp of when the change occurred.

VALUE_CHANGED

The value has changed.

Signature

VALUE_CHANGED ()

Parameter Description
int VALUE
int TIMESTAMP: Timestamp of when the change occurred.

VALUE_UNAVAILABLE

The value is possibly no longer accurate. OnBindingChanged, device went Offline, etc

Signature

VALUE_UNAVAILABLE ()

Parameter Description
str STATUS: offline - Device went offline or was unbound.

Thermostat Events

THERMOSTAT EVENTS

The Thermostat Proxy fires the following events. If any of the registered variables change value, an event is fired; however those events are generated by the Variable Manager, and the proxy doesn't concern itself with those. Like most old proxies, events could be eliminated by just having programming use the registered variables.

In the past some UI's listened for variables not DataToUI calls. In 2.7.0 all UI's no longer listen to variable changed events, but it's worth noting that old UI's did.

Temperature Change (Event=100)

Heat Setpoint Changed (Event=101)

Cool Setpoint Changed (Event=102)

HVAC Mode Changed (Event=103)

Fan Mode Changed (Event=104)

Hold Mode Changed (Event=105)

HVAC State Changed (Event=106)

Fan State Changed (Event=107)

Vacation Mode Changed (Event=108)

Outdoor Temperature Changed (Event=109)

Humidity Changed (Event=110)

Humidity Mode Changed (Event=111)

Humidity State Changed (Event=112)

Humidify Setpoint Changed (Event=113)

Dehumidify Setpoint Changed (Event=114)

Message Changed (Event=115)

Preset Changed (Event=116)

Single Setpoint Changed (Event=117)

Thermostat Notifications

ALLOWED_FAN_MODES _CHANGED

Changes the value of the variable FAN_MODES_LIST.

Name

ALLOWED_FAN_MODES_CHANGED ()

Parameter Type Description
Modes LIST. A comma delimited list of available modes.

Returns

None

ALLOWED_HUMIDITY_MODES_CHANGED

Changes the value of the variable HUMIDITY_MODES_LIST

Name

ALLOWED_HUMIDITY_MODES_CHANGED ()

Parameter Type Description
Modes LIST A comma delimited list of available modes. Will do the same thing as humidity_modes capability

Returns

None

ALLOWED HVAC MODES CHANGED

Changes the value of the variable HVAC_MODES_LIST

Name

ALLOWED_HVAC_MODES_CHANGED ()

Parameter Type Description
Modes LIST A comma delimited list of available modes.
BOOL Option parameters: CAN_HEAT, CAN_COOL, CAN_AUTO. These modify the capabilities: can_heat, can_cool, can_do_auto.

Returns

None

BUTTONS_LOCK_CHANGED

Used to inform the proxy if the buttons on the device should be locked or not.

Name

ALLOWED_HVAC_MODES_CHNAGED ()

Parameter Type Description
LOCK BOOL If the buttons on the device should be locked or not.

Returns

None

CAN_COOL

Boolean to enable/disable can_cool capability. If the device supports this feature, default is False.

Name

CAN_COOL ()

Parameter Type Description
BOOL True/False. Supports cooling.

Returns

None

CAN_HEAT

Boolean to enable/disable can_heat capability. If the device supports this feature, default is False.

Name

CAN_HEAT ()

Parameter Type Description
BOOL True/False. enable/disable can_heat capability.

Returns

None

CAN_HUMIDIFY

Boolean to enable/disable can_humidify capability. If the device supports this feature, default is False.

Name

CAN_HUMIDIFY ()

Parameter Type Description
BOOL True/False. Enable/disable can_humidify capability

Returns

None

CAN_DEHUMIDIFY

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Name

CAN_DEHUMIDIFY ()

Parameter Type Description
BOOL True/False. Enable/disable can_dehumidify capability.

Returns

None

CONNECTION

Boolean to enable/disable can_dehumidify capability. If the device supports this feature, default is False.

Name

CONNECTION ()

Parameter Description Description
CONNECTED BOOL true/false.
DataToUI name If is_connected and is a boolean value. If IS_CONNECTED is false, the UI will show "–" where the temperature would be, indicating the device is off line. Also, sending a false will prevent any of the Control Buttons from appearing on the UI.

Returns

None

COOL_SETPOINT_CHANGED

Notification that should be sent to the proxy when the cooling setpoint has changed.

Name

COOL_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM New cooling setpoint temperature.
SCALE STR The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

COOL_SETPOINT_RESOLUTION C

Name

COOL_SETPOINT_RESOLUTION_C ()

Parameter Type Description
SETPOINT INT What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1

Returns

None

COOL_SETPOINT_RESOLUTION_F

Name

COOL_SETPOINT_RESOLUTION_F ()

Parameter Type Description
SETPOINT INT What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_cool_resolution capability, default 1

Returns

None

CUSTOM_FIELDS_CHANGED

Update the template Custom Fields that UI's display for a new Preset Event.

Name

CUSTOM FIELDS CHANGED ()

Parameter Type Description
XML Text string of XML matching the Preset Schedule schema. To UI comes through as preset_custom_fields.

Returns

`None `

Example

<preset_custom_fields>
 <field id="TemperatureSensor" type="list" label="Temperature Sensor:" default="Primary: Built-In Sensor, Secondary: None">
   <list>
    <item text="Primary: Built In Sensor Alias" value="Primary: Built-In Sensor, Secondary: None"/>                    
    <item text="Primary: Wired Remote Sensor Alias, Secondary: None" value="Primary: Wired Remote Sensor, Secondary: None"/>
    <item text="Primary: Built In Sensor Alias, Secondary: Wired Remote Sensor Alias" value="Primary: Built-In Sensor, Secondary:           Wired Remote Sensor"/<item text="Primary: Wired Remote Sensor Alias, Secondary: Built In Sensor Alias" value="Primary: Wired           Remote Sensor, Secondary: Built-In Sensor"/>
   </list>
 </field>
</preset_custom_fields>

COOL_SETPOINT_MAX_C

Name

COOL_SETPOINT_ MAX_C ()

Parameter Type Description
Minimum Setpoint INT 0-100 that will do the same thing as the setpoint_cool_max capability, default 100

Returns

`None `

COOL_SETPOINT_MAX_F

Name

COOL_SETPOINT_ MAX_F ()

Parameter Type Description
Minimum Setpoint INT 0-100 that will do the same thing as the setpoint_cool_max capability, default 100

Returns

`None `

COOL_SETPOINT_MIN_C

Name

COOL_SETPOINT_ MIN_C ()

Parameter Type Description
Minimum Setpoint INT 0-100 that will do the same thing as the setpoint_cool_min capability, default 100

Returns

None

COOL_SETPOINT_MIN_F

Name

COOL_SETPOINT_ MIN_F ()

Parameter Type Description
Minimum Setpoint INT 0-100 that will do the same thing as the setpoint_cool_min capability, default 100

Returns

None

DEHUMIDIFY_SETPOINT_CHANGE

The dehumidify setpoint has changed.

Name

DEHUMIDIFY_SETPOINT_CHANGE ()

Parameter Description
int SETPOINT: (0-100). To UI comes through as dehumidify_setpoint

Returns

None

DEHUMIDIFY_SETPOINT_MIN

The minimum dehumidify setpoint has changed.

Name

DEHUMIDIFY_SETPOINT_MIN ()

Parameter Description
int MINIMUM SETPOINT: (0-100). To UI comes through as setpointdehumidifymin` capability. Defaults to 0.

`

Returns

None

DEHUMIDIFY_SETPOINT_MAX

The maximun dehumidify setpoint has changed.

Name

DEHUMIDIFY_SETPOINT_MAX ()

Parameter Description
int MAXIMUM SETPOINT: (0-100). To UI comes through as setpoint_dehumidify_max capability. Defaults to 100.

Returns

None

DEHUMIDIFY_SETPOINT _RESOLUTION

The dehumidify setpoint resolution has changed.

Name

DEHUMIDIFY_SETPOINT_RESOLUTION ()

Parameter Description
int What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpointdehumidifyresolution\` capability, default 1

Returns

None

DYNAMIC_CAPABILITIES_CHANGED TSTAT

Dynamic Capabilities is a way for a protocol driver to send updates about some capabilities that can be changed when settings change on the hardware.  An example would be a thermostat that has a humidifier added would need to tell the proxy it can now do humidification as well as what the min, max and resolution of changes are for the setpoint. 

Name

DYNAMIC_CAPABILITIES_CHANGED ()

Parameter Type Description
HAS_OUTDOOR_TEMPERATURE BOOL boolean to enable/disable hasoutdoortemperature capability, if the device supports this feature, default is false.
CAN_CHANGE_SCALE BOOL boolean to enable/disable Navigators UI's and composer from being able to change the scale of the hardware.
HAS_HUMIDITY BOOL boolean to enable/disable has_humidity capability, if the device supports this feature, default is false
HAS_SINGLE_SETPOINT BOOL Boolean used to turn single setpoint mode to on or off. Defaults to false (off).
HUMIDIFY_SETPOINT_MIN INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability, default 0
HUMIDIFY_SETPOINT_MAX INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability, default 100
HUMIDIFY_SETPOINT_RESOLUTION INT What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability, default 1
HUMIDITY_SETPOINT_DEADBAND INT What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability, default 10
DEHUMIDIFY_SETPOINT_MIN: INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_min capability, default 0
DEHUMIDIFY_SETPOINT_MAX INT Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_dehumidify_max capability, default 100
DEHUMIDIFY_SETPOINT_RESOLUTION INT What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_dehumidify_resolution capability, default 1

Returns

None

EXTRAS_SETUP_CHANGED

Update the Extras Setup, displayed in the UI 

Name

EXTRAS_SETUP_CHANGED ()

Parameter Description Description
XML XML XML text string of XML matching the Preset Schedule schema. Comes through to the UI as extras_setup. Note that as of OS 3, sending only a singular XML string is supported. For example, sending an array of Extras can result in Navigator performance issues.

Returns

None

EXTRAS_STATE_CHANGED

Update the Extras Setup, displayed in the UI 

Name

EXTRAS_STATE_CHANGED ()

Parameter Type Description
XML XML XML text string of XML matching the Preset Schedule schema. To UI comes through as extras_state.

Returns

None

FAN_MODE_CHANGED

Notification that should be sent to the proxy when Fan mode has changed. Changes the variables: FAN_MODE, V1 FANMODE, .

Name

FAN_MODE_CHANGED ()

Parameter Type Description
MODE STR One of the supported modes for example: Auto, On.

Returns

None

FAN_STATE_CHANGE

Notification that should be sent to the proxy when the fan state has changed.

Name

FAN_STATE_CHANGE ()

Parameter Type Description
STATE STR One of the following Off, On.

Returns

None

HAS_EXTRAS

Boolean to enable/disable has_extras capability. If the device supports this feature, default is false Updates the XML that will be consumed by the Navigator UI’s.

Name

HAS_EXTRAS ()

Parameter Type Description
XML STR Text string of XML that matches the Preset Schedule A.

Returns

None

HAS_EXTRAS - boolean to enable/disable has_extras capability, if the device supports this feature, default is false Updates the XML that will be consumed by the Navigator UI's

Parameters XML text string of XML that matches the Preset Schedule API.

HAS_HEAT_PUMP

Boolean to enable/disable has_heat_pump. If the device supports this feature, default is false.

Name

HAS_HEAT_PUMP ()

Parameter Description Description
BOOL True/False. enable/disable has_heat_pump

Returns

None

HAS_HUMIDITY

Boolean to enable/disable has_humidity capability. If the device supports this feature, default is false

Name

HAS_ HUMIDITY ()

Parameter Type Description
BOOL True/False. enable/disable has_humidity capability.

Returns

None

HAS_OUTDOOR_TEMPERATURE

Boolean to enable/disable has_outdoor_temperature capability, if the device supports this feature, default is false

Name

HAS_OUTDOOR_TEMPERATURE ()

Parameter Type Description
BOOL True/False. enable/disable has_outdoor_temperature capability.

Returns

None

HEAT_SETPOINT

Fires event: Heat_Setpoint_Changed.

Name

HEAT_SETPOINT ()

Parameters

None

Returns

None

HEAT_SETPOINT_CHANGED

Notification that should be sent to the proxy when the heating setpoint has changed.

Name

HEAT_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM New heating setpoint temperature.
SCALE STR The scale being used for the setpoint. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

HEATCOOL_SETPOINTS_DEADBAND_C

Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband.

Name

HEATCOOL_SETPOINTS_DEADBAND_C

Parameter Description
num Default 2

Returns

None

HEATCOOL_SETPOINTS_DEADBAND_F

Minimum Setpoint difference between heat and will do the same thing as setpoint_heatcool_deadband.

Name

HEATCOOL_SETPOINTS_DEADBAND_F

Parameter Description
num Default 2

Returns

None

HEAT_SETPOINT_RESOLUTION_C

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution capability.

Name

HEAT_SETPOINT_RESOLUTION_C ()

Parameter Description
num Default 1

Returns

None

HEAT_SETPOINT_RESOLUTION_F

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_heat_resolution capability.

Name

HEAT_SETPOINT_RESOLUTION_F ()

Parameter Description
num Default 1

Returns

None

HEAT_SETPOINT_MAX_C

Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max capability.

Name

HEAT_SETPOINT_MAX_C ()

Parameter Description
int Default 100

Returns

None

HEAT_SETPOINT_MAX_F

Maximum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_max capability.

Name

HEAT_SETPOINT_MAX_F ()

Parameter Description
int Default 100

Returns

None

HEAT_SETPOINT_MIN_C

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min capability.

Name

HEAT_SETPOINT_MIN_C ()

Parameter Description
int Default 100

Returns

None

HEAT_SETPOINT_MIN_F

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_heat_min capability.

Name

HEAT_SETPOINT_MIN_F ()

Parameter Description
int Default 100

Returns

None

HOLD_MODE_CHANGED

Notification that should be sent to the proxy when hold mode has changed. Changes the variables HOLD_MODE, ANA_HOLDMODE. Fires event HOLD_MODE_CHANGED.

Name

HOLD_MODE_CHANGED ()

Parameter Type Description
MODE STR One of the supported hold modes for example: Off, 2 Hours, Permanent. Required parameter options if Hold Mode is "Hold Until" : YEAR - integer 2000+, MONTH - integer 0-11, DAY - integer 0-31, HOUR - integer 0-23, MINUTE - integer 0-60.

Returns

None

HUMIDITY_CHANGED

The actual humidity percent (integer 0-100) value detected by the thermostat has changed. To UI comes through as humidity.

Name

HUMIDITY_CHANGED ()

Parameter Description Description
HUMIDITY INT HUMIDITY: (0-100)

Returns

None

HUMIDITY_MODE_CHANGED

MODE, typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto). To UI comes through as humidity_mode

Name

HUMIDITY_MODE_CHANGED ()

Parameter Type Description
MODE STR Typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto).

Returns

None

HUMIDIFY_SETPOINT_CHANGED

The humidity setpoint has changed. To UI comes through as humidify_setpoint

Name

HUMIDIFY_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT NUM (0-100)

Returns

None

HUMIDITY_SETPOINT_DEADBAND

What the deadband between humidify and dehumidify is, will do the same thing as the setpoint_humidity_deadband capability.

Name

HUMIDITY_SETPOINT_DEADBAND ()

Parameter Description
num Default 10

Returns

None

HUMIDITY_SETPOINT_MAX

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_max capability,

Name

HUMIDITY_SETPOINT_MAX ()

Parameter Description
num Default 100

Returns

None

HUMIDITY_SETPOINT_MIN

Minimum Setpoint, int 0-100 that will do the same thing as the setpoint_humidify_min capability,

Name

HUMIDITY_SETPOINT_MIN ()

Parameter Description
num Default 0

Returns

None

HUMIDITY_SETPOINT_RESOLUTION

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_humidify_resolution capability.

Name

HUMIDITY_SETPOINT_RESOLUTION ()

Parameter Description
num Default 1

Returns

None

HUMIDITY_STATE_CHANGED

State has changed on the thermostat. To UI comes through as humidity_state.

Name

HUMIDITY_STATE_CHANGED ()

Parameter Type Description
STATE STR Typically: humidify, humidifyAuto (aggressiveness), dehumidify or auto

Returns

None

HVAC_MODE_CHANGED

Notification sent when the mode of the HVAC system has changed. Changes the variable HVAC_MODE.

Name

HVAC_MODE_CHANGED ()

Parameter Type Description
MODE STR One of the supported modes for example: Off, Heat,Cool, Auto, Emergency

Returns

None

HVAC_STATE_CHANGED

Notification that should be sent to the proxy when the HVAC state has changed. Changes the variable HVAC_STATE.

Name

HVAC_STATE_CHANGED ()

Parameter Type Description
STATE: STR One of the supported HVAC states for example: Off, Heat, Cool

Returns

None

MESSAGE_CHANGED

Update the text message displayed in the UI.  Multiple lines can be specified by using \n to separate lines, although UI's will display each line in its own way. Could be a paragraph, ticker scrolling, cycling, etc. To UI comes through as message.

Name

MESSAGE_CHANGED ()

Parameter Type Description
MESSAGE STR Text string, max length of the string is not set, though driver developers need to keep in mind that this information shows up in Navigators in a ticker or similar scrolling text display and should not be cluttered but kept to key things like HVAC system errors, and CRITICAL information.

Returns

None

Usage Note

This string may or may not have multiple message segments. If it does, the message segments are delimited by a \n (newlines). Some protocol drivers such as the c4-therm support up to 4 lines of messages. Most UI's scroll these \n delimited messages right to left in a marquee style.

PRESET_CHANGED

Updates the current Preset State displayed in the UI. Sent to the UI as preset.

Name

PRESET_CHANGED ()

Parameter Description
str Name of Preset.

Returns

None

PRESET_FIELDS_CHANGED

Updates the Preset FIELDS TEMPLATE that UIs display for a Preset Event. To UI comes through as preset_fields. If this is modified, it is possible that existing presets will have data that is not in compliance. However, a protocol driver can modify this to have new preset_fields which are compatible. Do not delete this as Events are erased when presets are deleted.

Name

PRESET_FIELDS_CHANGED ()

Parameter Type Description
XML XML XML text string of XML matching the Preset Schedule schema

Returns

None

SCALE_CHANGED

Changes the scale the proxy tracks for the temperature.  This is primarily important for Composer Pro when programming as it will use this scale for setting temperatures.  Navigators also use this scale.

Name

SCALE_CHANGED ()

Parameter Type Description
SCALE STR CELSIUS, FAHRENHEIT, C, c, F, f

Returns

None

SCHEDULE_ENTRY_CHANGED

Notification that should be sent to the proxy when a change is made to the HVAC schedules. Every entry that is changed will send one protocol notification.

Name

SCHEDULE_ENTRY_CHANGED ()

Parameter Type Description
DayIndex NUM Number representing day of week: 0= Sunday, 1=Monday
EntryIndex NUM 0 to the number of entries the day can support. 0 = the first entry, 1 = the second entry.
TimeMinutes NUM Number of minutes past midnight for the entry change. For example 360= 6:00AM.
EnabledFlag BOOL Enables or disables a schedule. By default, the first four schedules are enabled.
HeatSetpoint NUM Temperature designated to start the heating system.
CoolSetpoint: NUM Temperature designated to start the cooling system.
Units STR F or C – Fahrenheit or Celsius.

Returns

None

SINGLE_SETPOINT_CHANGED

Used to inform the proxy that the single setpoint has changed. This notification changes variables SINGLE_SETPOINT_F and SINGLE_SETPOINT_C. It fires the event Single Setpoint Changed.

Name

SINGLE_SETPOINT_CHANGED ()

Parameter Type Description
SETPOINT INT The new temperature setpoint value.
SCALE STR The scale being used for the setpoint. The values allowed are CELSIUS, C, FAHRENHEIT, or F

Returns

None

SINGLE_SETPOINT_MAX_C

Maximum Setpoint. Will do the same thing as the setpoint_single_max capability.

Name

SINGLE_SETPOINT_MAX_C ()

Parameter Type Description
SETPOINT INT 0-100 default 100

Returns

None

SINGLE_SETPOINT_MAX_ F

Maximum Setpoint. Will do the same thing as the setpoint_single_max capability.

Name

SINGLE_SETPOINT_MAX_F ()

Parameter Type Description
SETPOINT INT 0-100 default 100

Returns

None

SINGLE_SETPOINT_MIN_ C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Name

SINGLE_SETPOINT_MIN_C ()

Parameter Type Description
SETPOINT: INT 0-100 default 0

Returns

None

SINGLE_SETPOINT_MIN_C

Minimum Setpoint. Will do the same thing as the setpoint_single_min capability.

Name

SINGLE_SETPOINT_MIN_F ()

Parameter Type Description
SETPOINT: INT 0-100 default 0

Returns

None

SINGLE_SETPOINT_RESOLUTION_C

What increment to use (ie 1,3,5,10,etc), will do the same thing as the setpoint_single_resolution capability.

Name

SINGLE_SETPOINT_RESOLUTION_C ()

Parameter Description
num Default 1

Returns

None

SINGLE_SETPOINT_RESOLUTION_F

Indicates the increments that the setpoint will follow, such as .2, .5, 1, 2, 5, etc. Note that .2 is the lowest F resolution supported.

Name

SINGLE_SETPOINT_RESOLUTION_F ()

Parameter Description
num Default 1

Returns

None

TEMPERATURE_CHANGED

Notification that should be sent to the proxy when the temperature has changed.

Name

TEMPERATURE_CHANGED ()

Parameter Type Description
TEMPERATURE NUM New temperature value.
SCALE: STR The scale being used for the temperature. The values allowed are KELVIN, K, CELSIUS, C, FAHRENHEIT, or F.

Returns

None

TEMPERATURE_RESOLUTION

What increment to use (ie .1,.5,1,3,5,10,etc), will do the same thing as the temperature_resolution capability, default 1

Name

TEMPERATURE_RESOLUTION ()

Parameter Description
int Default 1.

Returns

None

VACATION_MODE

Notification that should be sent to the proxy when vacation mode is turned on or off.

Name

VACATION_MODE ()

Parameter Type Description
ON VACATION STR True or False

Returns

None

Usage Note

The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed. Not to be used with Preset Scheduling.

VACATION_SETPOINTS

Notification that should be sent to the proxy when setpoints have been changed for vacation mode. This Notification is not to be used with Preset Scheduling. The capability has_vacation_mode must be set to true for the vacation commands and notifications to be executed.

Name

VACATION_ SETPOINTS ()

Parameter Type Description
VAC HEAT SETPOINT NUM New temperature for the heating setpoint while in vacation mode.
VAC COOL SETPOINT: NUM New temperature for the cooling setpoint while in vacation mode.
UNITS STR F or C – Fahrenheit or Celsius.

Returns

None

OUTDOOR_TEMPERATURE_CHANGED

Used to inform the proxy that the outdoor temperature has changed.

Name

OUTDOOR_TEMPERATURE_CHANGED ()

Parameter Description
int Default 1.

Returns

None

OUTDOOR_TEMPERATURE_RESOLUTION

What increment to use (ie .1, .5, 1, 3, 5, 10, etc), will do the same thing as the outdoor_temperature_resolution capability.

Name

OUTDOOR_TEMPERATURE_RESOLUTION ()

Parameter Description
int Default 1.

Returns

None

Thermostat Proxy Commands

DEC_SETPOINT_COOL

Used to decrease the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Name

DEC_SETPOINT_COOL ()

Parameter

None

Returns

None

SET_PRESET

Runs a Preset regardless if there is an event scheduled for it.

Name

SET_PRESET ()

Parameter Type Description
NAME STR Preset Name

Returns

None

DEC_SETPOINT_HEAT

Used to decrease the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true

Name

DEC_SETPOINT_HEAT ()

Parameter

None

Returns

None

INC_SETPOINT_COOL

Used to increase the cool set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_COOL command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Name

INC_SETPOINT_COOL ()

Parameter

None

Returns

None

INC_SETPOINT_HEAT

Used to increase the heat set point by 1. This command is handled by the proxy, and ends up creating a SET_SETPOINT_HEAT command to send to the protocol driver, unless the capability can_inc_dec_setpoints is set to true.

Name

INC_SETPOINT_HEAT ()

Parameter

None

Returns

None

PRESET_ADD

Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule capability)

Name

PRESET_ADD ()

Parameter Type Description
NAME STR Preset Name. Required.
PRESET FIELDS XML If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c.  For example: heat_setpoint_f, cool_setpoint_f, heat_setpoint_c, cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale.  However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature.

Returns

None

Example

<preset_fields>
  <field id="heat_setpoint_f" value="65">
  <field id="cool_setpoint_f" value="75">
  <field id="humidify_setpoint" value="50">
  <field id="fan_mode" value="On">
</preset_fields>

PRESET_DELETE

Adds a new Preset Schedule Preset (If protocol driver has the can_preset_schedule capability)

Name

PRESET_DELETE ()

Parameter Type Description
NAME STR Preset Name. Required.
PRESET FIELDS XML If a UI or Driver sends a bound call with a string that has invalid XML syntax, this field will be set to <preset_field/> and an error message will be logged to director.log when this occurs. Note that only a driver OR UI should specify the _f or c.  For example: heat_setpoint_f, cool_setpoint_f, heat_setpoint_c, cool_setpoint_c but not both. The proxy will auto insert the missing _f or _c based on the scales resolution if it detects one side is not supplied. This makes it so UI's and drivers do not need to calculate the correct value for the scale.  However, if a driver or UI does want to calculate it, the proxy will leave the value alone. In the same manner the proxy will not correct or anything if the _f and _c do not resolve to the equivalent temperature.

Returns

None

PRESET_EVENT_ADD

Adds a Preset Schedule Preset Event to be run at the specified day/time (If protocol driver has the can_preset_schedule capability.

Name

PRESET_EVENT_ADD ()

Parameter Description Description
NAME STR Event Name
WEEKDAY INT 0-6 with Sunday being 0
HOUR INT 0-23
MINUTE INT 0-60

Returns

None

Usage Note

Adding an event at the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.

PRESET_EVENT_DELETE

Deletes a Preset Schedule Preset if the protocol driver has the can_preset_schedule capability.

Name

PRESET_EVENT_DELETE ()

Parameter Type Description
NAME STR Using "" (an empty string) will match all presets to make deleting all events of a given preset name easier.
WEEKDAY INT 0-6 with Sunday being 0. Using -1 will match any weekday.
HOUR INT 0-23 Using -1 Will match any Hour.
MINUTE INT 0-60 Using -1 will match any Minute.

Returns

None

Usage Note

Usage Note:

Using "" for the Preset or -1 for the weekday, hour or minute might be useful for UI's, Agents or Protocol Drivers as when a matching parameter is used you can delete multiple events at once AND only one Notify of the changes that were made are sent rather than causing a notify for each and every modification if they were done one at a time.

PRESET_EVENT_MODIFY

Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule capability)

Name

PRESET_EVENT_MODIFY ()

Parameter Type Description
NAME STR Event Name
WEEKDAY: INT 0-6 with Sunday being 0.
HOUR INT 0-23
MINUTE INT 0-60
NEW WEEKDAY INT 0-6 with Sunday being 0
NEW HOUR INT 0-23
NEW MINUTE INT 0-60

Returns

None

Usage Note

Modifying an event to the same time as a different preset event will result in the different preset event being deleted and the new one being put in at that time.

PRESET_MODIFY

Modifies an existing Preset Schedule Event (If protocol driver has the can_preset_schedule capability)

Name

PRESET_MODIFY ()

Parameter Type Description
NAME STR Preset Name
PRESET FIELDS XML XML DATA
NEW NAME STR New Preset Name

Returns

None

Example

<preset_fields>
  <field id="heat_setpoint_f" value="65">
  <field id="cool_setpoint_f" value="75">
  <field id="humidify_setpoint" value="50">
  <field id="fan_mode" value="On">
</preset_fields>

QUERY_SCHEDULE

Used for the old .ccz and a few older thermostats for scheduling purposes.

Name

QUERY_SCHEDULE ()

QUERY_SCHEDULE_EVENTS

Used for the old .ccz and a few older thermostats for scheduling purposes.

Name

QUERY_SCHEDULE_EVENTS ()

SET_BUTTONS_LOCK

Used to indicate if the buttons on the thermostat should be locked out from controlling the temperature.

Name

SET_BUTTONS_LOCK ()

Parameter Type Description
LOCK BOOL 1 or 0 indicating if the buttons should be locked out or not.

Thermostat Unhandled Commands

Unhandled Commands

This section includes Commands supported by many protocol drivers but are not directly handled by the Thermostat proxy:

DEC_SETPOINT_HUMIDIFY Used to Decrement the Setpoint by one step.

DEC_SETPOINT_DEHUMIDIFY Used to Decrement the Setpoint by one step.

INC_SETPOINT_DEHUMIDIFY Used to increment the Setpoint by one step.

INC_SETPOINT_HUMIDIFY Used to increment the Setpoint by one step.

SET_CALIBRATION Used to set the calibration value.

SET_EVENT Occurs when the scheduler determines it's time for a new event to be run for Preset Scheduling

SET_EVENTS XML that is provided from the proxy in the case that a protocol driver wants to push the Preset Schedule to hardware

SET_REMOTE_SENSOR Used to indicate if the remote sensor on the thermostat is in use.

SET_SCALE Used to set the temperature scale the thermostat should use.

SET_MODE_FAN Used to set the current fan mode of the thermostat.

SET_MODE_HOLD Used to set the current hold mode of the thermostat.

SET_MODE_HUMIDITY Used to set the humidification mode in a protocol driver.

SET_MODE_HVAC Used to set the HVAC mode in a protocol driver.

SET_OUTDOOR_TEMPERATURE Set the outdoor temperature which is used by some thermostats for the purpose of humidity balancing, fresh air venting, air quality venting, and other HVAC functionality.

SET_PRESET Occurs when someone selects to run a preset OUTSIDE of its regular schedule. 

SET_PRESETS XML that the Proxy sends down to a protocol driver that contains information about presets. If preset scheduling is a capability of the protocol driver.

SET_SETPOINT_DEHUMIDIFY Used to set the dehumidify setpoint.

SET_SETPOINT_COOL Used to set the cool setpoint. 

SET_SETPOINT_HEAT Used to set the heat setpoint. 

SET_SETPOINT_HUMIDIFY Used to set the humidify setpoint.

SET_SETPOINT_SINGLE Used to set the single setpoint value.

SET_VAC_SETPOINT_COOL Used to set the cool setpoint when it vacation mode

SET_VAC_SETPOINT_HEAT Used to set the heat setpoint when it vacation mode

SET_VACATION_MODE Used to indicate if the thermostat is in vacation mode or not

Thermostat Proxy Variables

THERMOSTAT PROXY VARIABLES

Thermostats that use this proxy have the following registered variables that can be manipulated: Note: Temperature Units are stored and processed in the proxy as Current Units, Kelvin * 10, or Celsius * 10 depending on V1, V2 and programming.

CALIBRATION (ID=1129) - int - Set to the value given with the Notify CALIBRATION_CHANGED

CoolSetPoint_C (ID=1135) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint

CoolSetPoint_F (ID=1134) - Read only - Double representing the cool setpoint. Replaces CoolSetpoint

PRESET (ID=1144) - Read Only - Name of the currently Active Preset in Preset Scheduling.

DEHUMIDIFY_SETPOINT (ID=1143) - Read Only - Percent 0-100. (Note: The range and resolutions are set via capabilities)

FAN_MODE (ID=1105) - string - Current Fan Mode

HEATCOOL_SETPOINTS_DEADBAND_C (ID=1147) - Read Only - string - Setpoint different between heat and cool

HEATCOOL_SETPOINTS_DEADBAND_F (ID=1146) - Read Only - string - Setpoint different between heat and cool

HeatSetPoint_F (ID=1132) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint

HeatSetPoint_C (ID=1133) - Read only - Double representing the heat setpoint. Replaces HeatSetpoint

HEATPUMP (ID=1124) - bool - Whether or not a heat pump exists.

HOLD_MODE (ID=1106) - string - Current Hold Mode

HOLD_MODES_LIST (ID=1122) - string - comma separated list of hold modes that can be selected for the thermostat.

HEATCOOL_SETPOINTS_DEADBAND_C (ID=1147) - Read Only - string - Setpoint different between heat and cool

HUMIDITY_STATE (ID=1141) - Read Only - Currently state. Typically Humidify, Humidify Auto or Dehumidify.

HVAC_MODES_LIST (ID=1120) - string - comma separated list of hvac modes that can be selected for the thermostat.

HVAC STATE (ID=1107) - string - Current HVAC State (Could be Heat, Heating, Cool, Cooling, 1st Stage Heat, or any other phrase passed in by the protocol driver for the HVAC_STATE notify.

HVAC_MODE (ID=1104) - string - Current HVAC Mode

IS_CONNECTED (ID=1112) - bool - Indicator if the hardware is online/available.  This will be set to 'true' on startup UNLESS a protocol driver has the has_connection_status capability set to true.  If this value is false, UI's will display "–" for temperature when the device is offline.

MESSAGE (ID=1145) - Read Only - Status message that a protocol driver can send to the UI

REVERSING_VALVE (ID=1128) - string - Name of reversing valve.

SINGLE_SETPOINT_F (ID=1149) - Read only - Double representing the single setpoint.

SINGLE_SETPOINT_F (ID=1149) - Read only - Double representing the single setpoint.

OUTDOOR_TEMPERATURE_C (ID=1137) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.

OUTDOOR_TEMPERATURE_F (ID=1136) - Can be read and written. Read is for providing info to UI/Navigator or other thermostats and write is for allowing programming and other devices to set this value, which can be read by some devices (Including the C4 AAT Thermostat) so they do not have to be hard wired to outside to perform some calculations.

SCALE (ID=1100) - String - the current scale that was passed in on the SCALE_CHANGED notify.

SCHEDULE (ID=1113) - string - XML of the entire schedule

TEMPERATURE_C (ID=1131) - Read only - Double representing the temperature. Replaces TEMPERATURE

TEMPERATURE_F (ID=1130) - Read only - Double representing the temperature. Replaces TEMPERATURE

VACATION_MODE (ID=1109) - bool - Will be set to the value passed in for the VACATION_MODE's ON_VACATION parameter. This variable will be deprecated when the traditional scheduling model is deprecated. No date has been set at this time for this deprecation.

lua