Author Topic: PLUGIN: Honeywell Total Connect Comfort Thermostats  (Read 160887 times)

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
PLUGIN: Honeywell Total Connect Comfort Thermostats
« on: January 18, 2015, 04:10:37 pm »
Version 1.2 of the Honeywell Total Connect Comfort ("TCC") app is now available from the MiOS marketplace.

Executive Summary: Control and automate your Honeywell WiFi enabled thermostats with this plug-in.  Any thermostat that you can access with My Total Connect Comfort shoud be accessible with this app.  Currently, the app supports up to 3 thermostats.
  • Important Caveat: Some programmable thermostats support what is known as "auto changeover mode".  That is, they can automatically change from heating to cooling mode based on the heat and cooling set-points.  This app has not been fully tested with thermostats in auto changeover mode.  Once the weather warms up here in the northeast U.S. and I can turn on my AC, this will be fully tested.  Furthermore, the Vera UI7 ui does not support setting separate heating and cooling points at the same time.  You can only set the heat point while your unit is in heating mode, and set the cool point while your unit is in cooling mode.  Unless Vera changes this, using the Vera UI will be limiting for users with auto changeover mode.  That being said, you will still be able to set the heat and cool points at any time by using luup call action commands in any scenes you may create.

Vera Compatibility:  Compatible with vera UI5 and UI7.  It also supports degrees F and degrees C.  (Your thermostats may or may not be set to the same temperature units that your Vera is set-up to display.)

Set-up:
  • Once installed (a serach for "Honeywell" from the app store will find it), you will find a new device named "Honeywell Total Connect Comfort" in your list of devices. 
  • Open the device and navigate to the "TCC Setup" tab.  Enter in your Total Connect Comfort ID and password where indicated, and press the "Login" button.  This is the ID and password you use to log into mytotalconnectcomfort.com
  • In a few moments you should see the thermostats thermosts appear in the "Thermostats Found" section, and vera will take a few minutes to restart and add the devices to your device list.  On UI5, you may not see the thermostats appear on your list unless you manually click on a different tab first, and then click back to Set-up.
  • You should see the refresh status of "OK [date and time]" next to the thermostat ids once a connection has been made.  On UI5 you may need to change tabs back and forth to see the message.
  • On the device's "TCC Defaults" tab, specify the default setpoint behavior.  On many Honeywell thermostats, when you change the set-point you can elect to make the set point either permanent (that is, it will not change unless you change it manually again), or you can make it temporary (the set-point will change again the next time your unit is scheduled to change it.)  This setting controls how the setpoint will be applied when you change it using Vera's UI.  By default, this setting is set to temporary.

Once vera reloads,  You may need to refresh your browser a couple times (F5) to see all of the data.

If there are thermostats in your mytotalconnectcomfort account that you don't want Vera to interact with, go to the TCC Setup tab and click on "D" next to that device and then click refresh at the bottom.  This disables that device and removes it from your Vera devices. You can re-enable it at any time by clicking "E".

Removing a device (click R and then Refresh) is only needed if you physically removed the thermostat from your mytotalconnectcomfort account.  (You no longer own the thermostat.)

Normal Operation:

The app adds a vera standard child thermostat device for each of your TCC thermostats.  This will be accessible through the web UI, the vera moibile app, and should be accessible through any other 3rd party apps that support thermostats.

You can use the UI to change the thermostat "switch mode" (off / heat / cool),  and change the fan operation (Auto, Continuously On, or Circulate).   If you're running UI7 you can change the set-point for the current mode (if you're heating, change the heat point, if you're cooling, change the cool point).   If you're running UI5 you can set the heating and cooling points independetly no matter which mode (heating or cooling) your unit is currently operating in.

When you change the set-points using the UI, they will be applied to your unit as either temporary or permanent, depending on how you set-up the default. (See set-up step 5 above.)

The plug-in polls Honeywell's TCC website / API every 5 minutes (or whenever you make a change) to keep up to date.

Known Issues / Enhancements to be addressed in Future Release:

4) Improve handling of set-points / data when in AutoChangeover mode.
5) Improve handling of data based on reported capabilities of the thermostat Does it have a fan, supports heating, cooling, changeover, etc.)

Special Thanks to the following forum members who assisted with development and testing: mikee, CudaNet, mvader, rayp, ServiceXp, and watou.  They all served to make this as robust an implementation as possible.

Changelog:

Version 1.0 : Jan 19, 2015 - Initial Release

Version 1.1 : Feb 3, 2015 - Set-up now automatically finds the thermostats associated with your account.  (No need to figure out your own thermostat ID numbers).  Number of thermostats supported increases from 3 to 8.  A few other minor fixes.

Version 1.2 : Feb 10, 2015 - Fixed an issue where the plug-in was not automatically trying to re-authenticate when authentication fails.  The plug-in will now try and authenticate every 5 minutes upon any kind of authentication failure.
« Last Edit: February 16, 2015, 11:20:55 pm by JoeyD »

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #1 on: January 18, 2015, 04:11:29 pm »
Documentation for Advanced Users:

This implementation supports the following standard thermostat services / actions for child thermostat devices:

Service      Action      Parameter = Values
------------------------------------------      ---------------------------      ------------------------------------------
urn:upnp-org:serviceId:HVAC_UserOperatingMode1      SetModeTarget      NewModeTarget = Off, HeatOn, CoolOn, AutoChangeOver
urn:upnp-org:serviceId:TemperatureSetpoint1      SetCurrentSetpoint      NewCurrentSetpoint = [Temperature]*
urn:upnp-org:serviceId:TemperatureSetpoint1_Heat      SetCurrentSetpoint      NewCurrentSetpoint = [Temperature]*
urn:upnp-org:serviceId:TemperatureSetpoint1_Cool      SetCurrentSetpoint      NewCurrentSetpoint = [Temperature]*
urn:upnp-org:serviceId:HVAC_FanOperatingMode1      SetMode      NewMode = Auto, PeriodicOn, ContinuousOn, FollowSchedule

* The temperature must be passed to the action in the display units of your vera (degrees F or C).  It doesn't matter what units your thermostat is set to.



This implementation supports (sets) the following standard thermostat variables for child thermostat devices:
Service      Variable      Supported Variable Values
------------------------------------------      ---------------------------      ------------------------------------------
urn:upnp-org:serviceId:HVAC_UserOperatingMode1      ModeStatus      HeatOn, CoolOn, Off, AutoChangeOver
urn:upnp-org:serviceId:HVAC_FanOperatingMode1      Mode      Auto*, ContinuousOn, PeriodicOn
urn:upnp-org:serviceId:TemperatureSetpoint1      CurrentSetpoint      [set-point for the current ModeStatus]**
urn:upnp-org:serviceId:TemperatureSetpoint1_Heat      CurrentSetpoint      [Temperature of heat setpoint]**
urn:upnp-org:serviceId:TemperatureSetpoint1_Cool      CurrentSetpoint      [Temperature of cool setpoint]**
urn:upnp-org:serviceId:TemperatureSensor1      CurrentTemperature      [Temperature Reading]**
urn:micasaverde-com:serviceId:HVAC_OperatingState1      ModeState      Idle, Heating, Cooling ***
urn:upnp-org:serviceId:HVAC_FanOperatingMode1      FanStatus      Off, On ****

*   If your Honeywell unit's fan is set to "Auto" or "Follow Schedule", the Fan Mode will be reported as "Auto"
** Values will be in the display units of your vera, regarless of the temperature unit setting of your thermostat.

*** Honeywell's API does not report the actual ModeState of your system.  The plug in will set the ModeState based on the CurrentTemperature, ModeStatus, and your CurrentSetpoint(s).  For example, if your unit is in HeatOn ModeStatus, and the temperature reading is less than your heating set-point, the plug-in will set the ModeState is "Heating".

**** Honeywell's API does not report the actual FanStatus of your system. The plug-in will set the FanStatus based on the ModeState and FanMode.  If the FanMode is "ContinuousOn", the FanStatus will be set on "On".  If the ModeState is "Heating" or "Cooling", then the FanStatus will be set to On.  Otherwise, it will be set to "Off".  There is no reasonable way to report the FanMode if your FanStatus is set to "PeriodicOn" (also known as "Circulate".)



The following additional Honeywell specific variables are available on the child thermostat devices.  The service for all of these is:
urn:honeywell-com:serviceId:ThermostatData1
  • ThermostatUnits - "F" or "C"
  • OutdoorHumidityAvailable - true / false
  • IndoorHumiditySensorAvailable - true / false
  • IndoorHumiditySensorNotFault - true / false
  • HeatSetpointHoldType -"Temporary", "Permanent", or "Following Schedule"
  • CoolSetpointHoldType -"Temporary", "Permanent", or "Following Schedule"
  • HeatSetpointUntilTime - (h:mm AM/PM format) - indicates the time the next heat set-point change is scheduled to occur
  • CoolSetpointUntilTime - (h:mm AM/PM format) - indicates the time the next cool set-point change is scheduled to occur
  • OutdoorTemperature - provided in the DISPLAY units of vera
  • OutdoorHumidity- as a percent (ex: 45)
  • IndoorHumidity - as a percent (ex: 45)
A note about Heat/CoolSetpopintUntilTime:  even if your thermostat is in a permanent hold, you will still see a time indicated here.  This is the time that the thermostat would change the set-point if it were not in a permanent hold.

The following actions are supported on the Parent Honeywell TCC device:
  • HoldSetpoint: Enables you to set a permanent or temporary set-point.  If temporary, allows you to set the expiration time as an option.
  • CancelSetpointHold:  Removes the permanent or temporary set-point hold, and reverts the thermostat to "follow schedule"


Action Name: CancelSetpointHold
Parameters:{ThermostatID=XXXXXX}

Sample luup call to remove the setpoint holds, for a thermostat with id 123456 and your plugin parent device ID of 10.  After the execution of this command, yout thermostat number 123456 will revert to "following schedule" for the set-points:
[/t]
Code: [Select]
local lul_arguments = {}
lul_arguments["ThermostatID"] = 123456
luup.call_action("urn:joeyd-com:serviceId:HoneywellTCC1","CancelSetpointHold",lul_arguments,10)



Action Name: HoldSetpoint
Parameters: {
                    ThermostatID=XXXXXX,
                    newSetpointValue=[Temperature in the DISPLAY UNITS of vera],
                    SetpointMode = ["COOL" or "HEAT"]
                    SetpointType = ["TEMPORARY" or "PERMANENT"]
                    SetpointEndtime = [Time in 24 hr format, eg: "15:25"]
                    }

You must supply the ThermostatID and the NewSetpointValue.  All other arguments are optional.  If you omit the SetpointMode, the action will determine which mode your thermostat is currently in (heating or cooling) and apply the setpoint accordingly.  If you omit SetpointType, the action will look to your default setting for the type, and apply that.

The SetpointEndtime parameter only applies as an option for the TEMPORARY SetpointType.  This is equivalent to going to your unit and selecting "hold until 5:30 PM."  After that time is reached, your thermostat reverts to "following schedule."  Note that the Honeywell thermostats support 15 minute increments only.  You can supply any time in the parameter, but the action will in effect round that to the nearest 15 minutes.  Example, if you enter in "15:50", your temporary set-point will be held until 4:00 PM.

Sample luup to set the heat-point to hold at 70 degrees until 11:00 PM:

Code: [Select]
local lul_arguments = {}
lul_arguments["ThermostatID"] = 123456
lul_arguments["newSetpointValue"] = 70
lul_arguments["SetpointMode"] = "HEAT"
lul_arguments["SetpointType"] = "TEMPORARY"
lul_arguments["SetpointEndtime"] = "23:00"

luup.call_action("urn:joeyd-com:serviceId:HoneywellTCC1","HoldSetpoint",lul_arguments,10)

« Last Edit: February 02, 2015, 07:52:51 am by JoeyD »

Offline Tank

  • Sr. Member
  • ****
  • Posts: 322
  • Karma: +11/-7
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #2 on: January 18, 2015, 10:26:54 pm »
Thanks, this is great! 

Any thoughts on supporting remote temperature sensors like the radio thermostat plugin?  Does Honeywell even provide support for this?  I know some of their higher end thermostats can have remote temp devices but I'm not sure if you can feed values to it from the API like the radio thermostat.

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #3 on: January 18, 2015, 11:14:09 pm »
Hi Joey,
That all depends on if those temperature sensors are made available to the API.  Basically, if you log into https://mytotalconnectcomfort.com/portal  and you can access the data from the temperature devices, then it should be possible.

Unfortunately, Honeywell has not made their API publicly available at this time (I have inquired again to try and become a partner in their API program), so much of what we're doing is based off of experience with actual devices. My thermostat does not support external sensors, but it is linked to a local weather station and it reports the "outside temperature" and "outside humidity" based on that data.  The plug-in exposes that outside temperature and humidity as variables on the thermostat device.

The "beauty" of a home automation server / ecosystem like Vera is of course that you don't need to actually have "Honeywell" supported external temperature sensors.   You can use any temperature sensor that Vera works with....or even use an additional plug-in like the Weather Underground App to get information on location conditions.  Then use scenes to make your thermostat respond based on the data from those devices / apps.
« Last Edit: January 18, 2015, 11:54:35 pm by JoeyD »

Offline rayp

  • Jr. Member
  • **
  • Posts: 63
  • Karma: +3/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #4 on: January 18, 2015, 11:52:17 pm »
Thank-you so much for this plug in JoeyD!  :)
Well done.

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #5 on: January 19, 2015, 08:47:10 am »
You're welcome, and thanks for the kind words. :)  I only hope that Honeywell grants me access to the API so that I can make this plug-in as good as it can possibly be, including potential support for any other Total Connect Comfort devices that they report on.

Offline awetsock

  • Newbie
  • *
  • Posts: 4
  • Karma: +0/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #6 on: January 19, 2015, 07:04:10 pm »
Joey,

This is absolutely awesome!  Up an running in a just a few minutes.  I had just about given up and sold my pair of Honeywell Prestige 2.0 stats so that I could move over to something that was supported with an existing plugin.

I remember seeing the announcement from Honeywell in September of 2013 stating that they would soon release an API.  Here we are in 2015 and I am still waiting for them.  I searched that APPS section for Honeywell just a bit ago and about fell out of my chair when I saw your plugin.

Thanks for all of the time, effort, and energy that you and everyone put into this.  I know that it will just get better from here...  ;D

Offline bconrey

  • Newbie
  • *
  • Posts: 11
  • Karma: +1/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #7 on: January 20, 2015, 02:33:48 am »
Great plugin - support for Honeywell wifi stats has been a long time coming!

Please note that this plugin doesn't appear to apply to the Lyric as it doesn't use TCC, but rather uses its own app for stat management. (If you have tips on getting a Lyric to work, please share them - bought one today to take advantage of this plugin, to no avail).

The Lyric got some rough reviews in the early days but apparently Honeywell stepped up their game and folks seem a lot more satisfied with recent updates than they were with the initial release. I'm pleased so far, enough so that I'll keep it even though I can't include it in my Vera.

Lyric is a great thermostat so far, just wish I could plumb it in with everything else!

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #8 on: January 20, 2015, 08:08:23 am »
Thanks, everyone...glad it seems to be working well!  All feedback is appreciated!

Unfortunately, Lyric (as far as I know) does not have a web interface that you can use to sign on to and manage / control your thermostat...it's strictly smartphone apps.  Without an API...I would need to utilize a web app so I could examine the network calls to potentially build support of Lyric.  This snooping could also potentially be done with smart-phone apps...though I just don't know how to do it, or if I could do it, if they use https calls / sockets like their Wifi thermostats do.

In Honeywell WiFi related news...

I'm looking into simplifying set-up even further by automatically determining your device numbers and names once you supply your log-in credentials.  (This won't help anyone already up and running, but would make things pretty much automatic for new users going forward.)  I've got it mostly figured out...just one more issue to work through.

Also, I have been in touch with Vera support (who has been great so far).   I will be lobbying to get auto-changeover thermostat support added to UI7.  This will require that the UI enable you to independently set the heat and cold points when your HVAC system is set to "auto changeover" mode.  No promises on if they can or will deliver, but at least we're having the conversation.


Offline bconrey

  • Newbie
  • *
  • Posts: 11
  • Karma: +1/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #9 on: January 20, 2015, 10:10:06 am »
When I set up my Lyric last night and realized TCC was independent of the Lyric app, I created a TCC account and attempted to add the Lyric's MAC address. TCC told me I couldn't add that thermostat because the MAC address was already assigned to another account. I then removed the Lyric from its app and attempted to add it to TCC, and was greeted by an error message that it was unable to register my thermostat on my TCC acount.

Just providing the additional info as an FYI. Hopefully someday they'll actually make their API available (seems odd they'd create a web page that talks about it but then not actually make it available).

Offline awenger

  • Newbie
  • *
  • Posts: 4
  • Karma: +0/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #10 on: January 21, 2015, 04:52:08 am »
Does this plugin also works in European setups? I have an Honeywell evohome thermostat which I would like to control.
To login to the portal I have to go to https://europe.mytotalconnectcomfort.com/

I found a python script which works on my unit. Can be found here: https://github.com/watchforstock/evohome-client
This script makes calls to the API on https://rs.alarmnet.com/TotalConnectComfort/WebAPI/api.
Is this plugin using the same API?

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #11 on: January 21, 2015, 07:46:10 am »
Does this plugin also works in European setups?

I have not explicitly coded any support for European setups.  If you can't access your device by going to http://mytotalconnectcomfort.com/ then I suspect it is not likely to work.  I did not look at the python script you linked to yet, but the API calls that I make look to be slightly different.  (Mine are generally to rs.alarmnet.com/TotalComfort).

Anyway I'll be sending you a PM and we can see if there is a possibility I could try and work in formal support.

Offline ilikelife

  • Full Member
  • ***
  • Posts: 129
  • Karma: +2/-0
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #12 on: January 21, 2015, 07:22:53 pm »
Awesome!

It took me just a few minutes to get this up and running.  The instructions at the start of this thread are very good.  No problems so far.

Comments:  I also have a Honeywell "Remote Control" but I have never found any readings (or controls) for it on  the mytotalconnectcomfort.com/portal.  But it seems that with this plugin to Vera, any remote temperature sensor can now effectively be used as a remote.

I find the Outside Temp and Humidity readings in the Advanced Tab of the thermostat child device, but they do not show on the UI7 device display screen.  Is that as intended, and if so, is it documented?  (I've read through several threads quickly so may have missed it.)  I can set those to display on HomeWave and others, so it's not a problem, just checking.

Thanks, JoeyD (and others that helped) to make this excellent addition to Vera's functionalit!

Offline JoeyD

  • Sr. Member
  • ****
  • Posts: 410
  • Karma: +36/-5
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #13 on: January 21, 2015, 07:40:29 pm »
I find the Outside Temp and Humidity readings in the Advanced Tab of the thermostat child device, but they do not show on the UI7 device display screen.  Is that as intended, and if so, is it documented?

It's only "intended" to the extent that there is no way to get the outside temperature or humidity to display on UI7 device screen. :)  The UI7 child device is a MCV standard so that if you use other 3rd party and mobile apps, they will automatically support your honeywell device as long as they support thermostats.

The second post in this thread documents the honeywell specific variables that I store with the child device, as well as the honeywell specific actions that are available to use.

Glad it's working well for you!  Let me know if you find any issues or have any suggestions.

Offline Tank

  • Sr. Member
  • ****
  • Posts: 322
  • Karma: +11/-7
Re: PLUGIN: Honeywell Total Connect Comfort Thermostats
« Reply #14 on: January 22, 2015, 09:51:47 am »
Thanks, everyone...glad it seems to be working well!  All feedback is appreciated!

Unfortunately, Lyric (as far as I know) does not have a web interface that you can use to sign on to and manage / control your thermostat...it's strictly smartphone apps.  Without an API...I would need to utilize a web app so I could examine the network calls to potentially build support of Lyric.  This snooping could also potentially be done with smart-phone apps...though I just don't know how to do it, or if I could do it, if they use https calls / sockets like their Wifi thermostats do.

In Honeywell WiFi related news...

I'm looking into simplifying set-up even further by automatically determining your device numbers and names once you supply your log-in credentials.  (This won't help anyone already up and running, but would make things pretty much automatic for new users going forward.)  I've got it mostly figured out...just one more issue to work through.

Also, I have been in touch with Vera support (who has been great so far).   I will be lobbying to get auto-changeover thermostat support added to UI7.  This will require that the UI enable you to independently set the heat and cold points when your HVAC system is set to "auto changeover" mode.  No promises on if they can or will deliver, but at least we're having the conversation.

In the past I've used VirtualBox with Android x86 to run mobile apps on my PC and sniff traffic.

https://www.virtualbox.org/wiki/Downloads

http://www.android-x86.org/download