# Venstar Thermostat Binding

The Venstar Thermostat binding supports an interface to WiFi enabled ColorTouch and Explorer thermostats manufactured by Venstar (opens new window).

Venstar WiFi enabled thermostats provide a local API that this binding uses to communicate with the thermostat. This binding does not require "cloud" access and may be used independently of Venstar's Skyport cloud services.

The Local API is not enabled by default, so you will need to set up your thermostat by configuring its WiFi connection and enabling the Local API. In order for the binding to connect, you will need to enable HTTPS support and set a username and password. While it is possible to enable the Local API without HTTPS and authentication, the binding doesn't support it, in an effort to provide as secure an installation as possible.

When you've set the username and password, make a note of these, as you'll need to enter them in the thermostat configuration in openHAB.

# Supported Things

Thing Type Description
colorTouchThermostat A Venstar ColorTouch (opens new window) thermostat

# Discovery

Once the binding is installed it will attempt to auto discover Venstar thermostats located on the local network. These will appear as Things in the system Inbox. After adding the Inbox item, enter the user name and password from the physical thermostat in the Thing's configuration.

# Thing Configuration

# ColorTouch Thermostat

Parameter Description Required
username The username set on the thermostats configuration screen (typically 'admin') yes
password The password set set on the thermostats configuration screen yes
url URL of the thermostat in the format 'proto://host' yes
refresh The frequency in which the binding will pool for update information no

# Channels

Channel Type Description Notes
awayMode String Home or Away Mode
awayModeRaw Number Away Mode Raw (Read Only) 0 (Home) 1 (Away)
systemMode String System Mode
systemModeRaw Number System Mode Raw (Read Only) 0 (Off) 1 (Heat) 2 (Cool) 3 (Auto)
systemState String System State (Read Only)
systemStateRaw Number System State Raw (Read Only) 0 (Idle) 1 (Heating) 2 (Cooling) 3 (Lockout) 4 (Error)
heatingSetpoint Number:Temperature Heating Set Point
coolingSetpoint Number:Temperature Cooling Set Point
temperature Number:Temperature Current Temperature
outdoorTemperature Number:Temperature Outdoor Temperature
humidity Number Humidity
fanMode String Fan Mode
fanModeRaw Number Fan Mode Raw (Read Only) 0 (Auto) 1 (On)
fanState Switch Fan State (Read Only)
fanStateRaw Number Fan State Raw (Read Only) 0 (Off) 1 (On)
scheduleMode String Current Schedule Mode
scheduleModeRaw Number Current Schedule mode Raw (Read Only) 0(Disabled) 1(Enabled)
schedulePart String Current Schedule Part
schedulePartRaw Number Schedule Part Raw (Read Only) 0(Morning) 1(Day) 2(Evening) 3 (Night) 255 (Inactive)

# Runtime data

The Venstar thermostat provides data about how many minutes the system has been running in each of the different modes (heat1, heat2, cool1, cool2, aux1, aux2, free cool) every day for the last 7 days. A time stamp is provided with each runtime data set which represents the end of each day. The binding reads the runtime data and time stamps and provides them all as separate channels.

Channel Type Description Notes
timestampDay0 DateTime Time Stamp of last runtime update This is always the current time today
timestampDay1 DateTime Time Stamp of 00:00, end of yesterday This represents the end of 1 day ago
timestampDay2 DateTime Time Stamp of 00:00 end of 2 days ago This represents the end of 2 days ago
timestampDay3 DateTime Time Stamp of 00:00, end of 3 days ago This represents the end of 3 days ago
timestampDay4 DateTime Time Stamp of 00:00, end of 4 days ago This represents the end of 4 days ago
timestampDay5 DateTime Time Stamp of 00:00, end of 5 days ago This represents the end of 5 days ago
timestampDay6 DateTime Time Stamp of 00:00, end of 6 days ago This represents the end of 6 days ago
heat1RuntimeDay0 Number:Dimensionless Runtime in heat1 mode (minutes) today This is the runtime between the Day 1 and Day 0 timestamps
heat1RuntimeDay1 Number:Dimensionless Runtime in heat1 mode (minutes) yesterday This is the runtime between the Day 2 and Day 1 timestamps
heat1RuntimeDay2 Number:Dimensionless Runtime in heat1 mode (minutes) 2 days ago This is the runtime between the Day 3 and Day 2 timestamps
heat1RuntimeDay3 Number:Dimensionless Runtime in heat1 mode (minutes) 3 days ago This is the runtime between the Day 4 and Day 3 timestamps
heat1RuntimeDay4 Number:Dimensionless Runtime in heat1 mode (minutes) 4 days ago This is the runtime between the Day 5 and Day 4 timestamps
heat1RuntimeDay5 Number:Dimensionless Runtime in heat1 mode (minutes) 5 days ago This is the runtime between the Day 6 and Day 5 timestamps
heat1RuntimeDay6 Number:Dimensionless Runtime in heat1 mode (minutes) 6 days ago This is the runtime in the 24hrs up to the Day 6 timestamp
heat2RuntimeDay0..6 Number:Dimensionless Similar Runtimes in heat2 mode (minutes)
cool1RuntimeDay0..6 Number:Dimensionless Similar Runtimes in cool1 mode (minutes)
cool2RuntimeDay0..6 Number:Dimensionless Similar Runtimes in cool2 mode (minutes)
aux1RuntimeDay0..6 Number:Dimensionless Similar Runtimes in aux1 mode (minutes)
aux2RuntimeDay0..6 Number:Dimensionless Similar Runtimes in aux2 mode (minutes)
freeCoolRuntimeDay0..6 Number:Dimensionless Similar Runtimes in free cool mode (minutes)

# Example

# thermostat.things

Thing venstarthermostat:colorTouchThermostat:001122334455 "Venstar Thermostat (Guest)" [ username="admin", password="secret", url="https://192.168.1.100", refresh=30 ]

# thermostat.items

Number:Temperature Guest_HVAC_Temperature   "Temperature [%d °F]"   {channel="venstarthermostat:colorTouchThermostat:001122334455:temperature"}
Number:Temperature Guest_HVAC_HeatSetpoint  "Heat Setpoint [%d °F]" {channel="venstarthermostat:colorTouchThermostat:001122334455:heatingSetpoint"}
Number:Temperature Guest_HVAC_CoolSetpoint  "Cool Setpoint [%d °F]" {channel="venstarthermostat:colorTouchThermostat:001122334455:coolingSetpoint"}
String Guest_HVAC_Mode                      "System Mode [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:systemMode"}
Number Guest_HVAC_Humidity                  "Humidity [%d %%]"      {channel="venstarthermostat:colorTouchThermostat:001122334455:humidity"}
String Guest_HVAC_State                     "State [%s]"            {channel="venstarthermostat:colorTouchThermostat:001122334455:systemState"}
String Guest_Away_Mode                      "Away Mode [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:awayMode"}
String Guest_Fan_Mode                      "Fan Mode [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:fanMode"}
Switch Guest_Fan_State                      "Fan State"             {channel="venstarthermostat:colorTouchThermostat:001122334455:fanState"}
String Guest_Schedule_Mode                      "Schedule Mode [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:scheduleMode"}
String Guest_Schedule_Part                      "Schedule Part [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:schedulePart"}
DateTime Guest_timestampDay0                 "Date/Time Last Update [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:timestampDay0"}
Number Guest_heat1RuntimeDay0                      "Heat1 Day0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:heat1RuntimeDay0"}
Number Guest_heat2RuntimeDay0                      "Heat2 Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:heat2RuntimeDay0"}
Number Guest_cool1RuntimeDay0                      "Cool1 Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:cool1RuntimeDay0"}
Number Guest_cool2RuntimeDay0                      "Cool2 Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:cool2RuntimeDay0"}
Number Guest_aux1RuntimeDay0                      "Aux1 Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:aux1RuntimeDay0"}
Number Guest_aux2RuntimeDay0                      "Aux2 Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:aux2RuntimeDay0"}
Number Guest_freeCoolRuntimeDay0                      "Free Cool Day 0 Run Time [%s]"             {channel="venstarthermostat:colorTouchThermostat:001122334455:freeCoolRuntimeDay0"}

# thermostat.sitemap

sitemap demo label="Venstar Color Thermostat Demo"
{
   Frame {
    Setpoint item=Guest_HVAC_HeatSetpoint minValue=50 maxValue=99
    Setpoint item=Guest_HVAC_CoolSetpoint minValue=50 maxValue=99
    Switch item=Guest_HVAC_Mode mappings=[off=Off,heat=Heat,cool=Cool,auto=Auto]
    Switch item=Guest_Away_Mode mappings=[home=Home,away=Away]
    Text item=Guest_HVAC_State
    Switch item=Guest_Fan_Mode mappings=[auto=Auto, on=On]
    Switch item=Guest_Fan_State mappings=[on=On,off=Off]
    Switch item=Guest_Schedule_Mode mappings=[enabled=Enabled,disabled=Disabled]
    Text item=Guest_Schedule_Part
    Text item=Guest_timestampDay0
    Text item=Guest_heat1RuntimeDay0
    Text item=Guest_heat2RuntimeDay0
    Text item=Guest_cool1RuntimeDay0
    Text item=Guest_cool2RuntimeDay0
    Text item=Guest_aux1RuntimeDay0
    Text item=Guest_aux2RuntimeDay0
    Text item=Guest_freeCoolRuntimeDay0
    
   }
}