Honeywell TCC Total Connect Comfort Drivers

The code to check the versions run once a week,

29%20PM

You can go into your device Info page and click:

25%20PM

Save Preferences, running updated() in the driver, which does the check too, if you're looking to speed it up.

Anyone else having problems with Honeywell TCC driver? As soon as I try to actuate any state changes to the thermostat I see authentication errors in the logs.

Mine doesn't work from the dashboard either. It does work from the devices page.

I don't know if this is recent, or an ongoing issue. I don't think I ever got it working right from the dashboard. It has always worked in the devices page.

Is this the error you are getting?

{warn} Something went wrong: groovyx.net.http.HttpResponseException: Unauthorized

Honeywell rate limits their API. Some form of modified ramp. You get quite a few attempts at the beginning then it starts denying, eventually shutting off for a while. Cut the polling way back so that your commands go through.

I have been using 10 minute polling for weeks now. Is that too rapid?

Why does it work from the device page and not from the dashboard if I am rate limited?

I couldn't get in via my Phone App (incorrect pw) and so I tried my computer and browser...

I tried to login to "my" Honeywell acct.

https://www.mytotalconnectcomfort.com/portal/

Maybe I am not understanding.

  • It fails from the Hubitat dashboard. The button presses there seem to do nothing. I can't change modes, temperatures, or fan.
  • When I use the Hubitat devices setting page, it works fine. It will change any setting I want.

What is the difference between these two methods? If it fails one way, shouldn't it fail both ways???

OK, I did manage to get it working, but the implications are.. this driver is no longer functional with the current version of Honeywell's TCC.

In very simple terms, the existing driver sends commands such as: "SystemSwitch:heat"

The current TCC works when: "SystemSwitch:1"

That means every command has to be re-evaluated for what is sent.

I decided to 'fork' the code in case the existing driver is still working for some.

I would suggest you consider this Alpha Test at best... all I tested was the Dashboard buttons.

I'd like to rework the entire driver and a first goal would be to change to AsyncHttp. The communications with Honeywell is flakey and slow. Probably making this driver a candidate for slowing the hub depending on how rapidly you're polling.

Hello,

I finally got a chance to try this new driver. I am getting an error upon import.
expecting '}', found '-' @ line 447, column 18.

Not sure how to fix this.

Try an Import again....

https://raw.githubusercontent.com/HubitatCommunity/HoneywellThermo-TCC/master/HoneywellThermo-TCC_C.groovy

That did import. Not sure if it was something I was doing or did you change something?

Now to see if it works.

Ok, new error when I try to use the buttons on the dashboard OR from the device page commands. (changed actual IP to (my hub IP), but it gave the correct Hubitat IP.

[dev:129](http://(my hub IP)/logs#dev129)2019-06-17 04:22:53.209 pm [error](http://(my hub IP)/device/edit/129)groovy.lang.MissingMethodException: No signature of method: user_driver_Total_Comfort_API_Total_Comfort_API_C_295.asyncHttpPost() is applicable for argument types: (java.util.LinkedHashMap) values: [[uri:https://www.mytotalconnectcomfort.com/portal/Device/SubmitControlScreenChanges, ...]] on line 390 (setCoolingSetpoint)

[dev:129](http://(my hub IP)/logs#dev129)2019-06-17 04:22:52.657 pm [info](http://(my hub IP)/device/edit/129)Executing 'login'

It gives the same error number with different messages for each button I push (setThermostatFanMode instead of setCoolingSetpoint etc.)

I created, from scratch, a new instance.

I imported the code from that link, I created a new Virtual Device to use that code and then filled in my ID/PW and Thermo ID, and clicked save Preferences. Live logs show:

dev:2 2019-06-17 01:35:48.606 pm info  You are using the current version of this driver
dev:2 2019-06-17 01:35:48.059 pm info  Set Operating State to: Idle
dev:2 2019-06-17 01:35:48.051 pm debug Sending following schedule
dev:2 2019-06-17 01:35:48.036 pm debug got Vacation Hold = false
dev:2 2019-06-17 01:35:48.032 pm debug got holdTime = 0
dev:2 2019-06-17 01:35:48.028 pm debug ld = [uiData:[DispTemperature:73, HeatSetpoint:67, CoolSetpoint:75, DisplayUnits:F, StatusHeat:0, StatusCool:0, HoldUntilCapable:true, ScheduleCapable:true, VacationHold:0, DualSetpointStatus:false, HeatNextPeriod:92, CoolNextPeriod:92, HeatLowerSetptLimit:40, HeatUpperSetptLimit:90, CoolLowerSetptLimit:50, CoolUpperSetptLimit:99, ScheduleHeatSp:67, ScheduleCoolSp:75, SwitchAutoAllowed:false, SwitchCoolAllowed:true, SwitchOffAllowed:true, SwitchHeatAllowed:true, SwitchEmergencyHeatAllowed:false, SystemSwitchPosition:3, Deadband:0, IndoorHumidity:128, Commercial:false, DispTemperatureAvailable:true, IndoorHumiditySensorAvailable:false, IndoorHumiditySensorNotFault:true, VacationHoldUntilTime:0, TemporaryHoldUntilTime:0, IsInVacationHoldMode:false, VacationHoldCancelable:false, SetpointChangeAllowed:true, OutdoorTemperature:128, OutdoorHumidity:128, OutdoorHumidityAvailable:false, OutdoorTemperatureAvailable:false, DispTemperatureStatus:0, IndoorHumidStatus:128, OutdoorTempStatus:128, OutdoorHumidStatus:128, OutdoorTemperatureSensorNotFault:true, OutdoorHumiditySensorNotFault:true, CurrentSetpointStatus:0, EquipmentOutputStatus:0], fanData:[fanMode:0, fanModeAutoAllowed:true, fanModeOnAllowed:true, fanModeCirculateAllowed:false, fanModeFollowScheduleAllowed:false, fanIsRunning:false], hasFan:true, canControlHumidification:false, drData:[CoolSetpLimit:null, HeatSetpLimit:null, Phase:-1, OptOutable:false, DeltaCoolSP:null, DeltaHeatSP:null, Load:null]]
dev:2 2019-06-17 01:35:47.946 pm debug Request was successful, 200
dev:2 2019-06-17 01:35:47.189 pm debug sending getStatus request
dev:2 2019-06-17 01:35:47.185 pm debug https://www.mytotalconnectcomfort.com/portal/Device/CheckDataSession/xxxx?_=tccToken
dev:2 2019-06-17 01:35:47.181 pm debug enable outside temps = No
dev:2 2019-06-17 01:35:47.177 pm debug Executing getStatus
dev:2 2019-06-17 01:35:47.173 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.170 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.166 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.163 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.159 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.152 pm debug Adding cookie to collection
dev:2 2019-06-17 01:35:47.121 pm debug Request was successful, 302
dev:2 2019-06-17 01:35:46.112 pm info  Executing 'login'
dev:2 2019-06-17 01:35:46.109 pm debug pollInterval: 600, units: = F
dev:2 2019-06-17 01:35:46.106 pm debug Executing 'refresh'
dev:2 2019-06-17 01:35:46.102 pm info  in poll: (every 600 seconds)
dev:2 2019-06-17 01:35:46.077 pm debug PermHold now = 1
dev:2 2019-06-17 01:35:45.912 pm warn  description logging is: true
dev:2 2019-06-17 01:35:45.907 pm debug debug logging is: true
dev:2 2019-06-17 01:35:45.904 pm debug display units now = F
dev:2 2019-06-17 01:35:45.891 pm debug in updated
dev:2 2019-06-17 01:35:05.958 pm debug display units now = F

Which looks right to me.

Ok, I found the problem, but it's way worse (for me) than I ever expected. :frowning:

I "released" partially completed code that I was building for the Next Version. I need to review for a few more minutes...

1 Like

Making progress, I think.

  • I deleted all driver code, dashboard button, and virtual driver for this thermostat.
  • I rebooted the hub.
  • I reinstalled the beta driver.
  • I rebooted the hub again.
  • I made a new virtual device. Saved.
  • I went into the device and entered name, password, and Device ID. Saved preferences.
  • I made a new dashboard button.

Seems to work from device page, but a new error in the logs when I try the dashboard.

[app:3](http://192.168.0.115/logs#app3)2019-06-17 04:56:55.010 pm [error](http://192.168.0.115/installedapp/configure/3)java.lang.NullPointerException: Cannot invoke method setThermostatMode() on null object (dashboardCmd)

[app:3](http://192.168.0.115/logs#app3)2019-06-17 04:56:01.630 pm [error](http://192.168.0.115/installedapp/configure/3)java.lang.NullPointerException: Cannot invoke method setThermostatMode() on null object (dashboardCmd)

EDIT Oops, we were posting at same time.

Hi,

I am new to the Hubitat environment (coming from Wink)....

I have a Honeywell TCC capable Thermostat and have successfully connected using your driver code. I noticed that there was an option to enable the outdoor sensors which I have chosen and when looking at the virtual device screen I can see the outdoor data returned. What I can't seem to do is access the outdoor data on a Dashboard or get it sent to InfluxDB.

As I mentioned, I am new to Hubitat so I assume I am missing something glaringly obvious but I can't seem to figure it out.

Any help would be appreciated.

Thanks !

I don't have an Outdoor Sensor, and even when I tell it Yes, it doesn't populate an attibute...

However, look at your Device Info page (I think you called it: virtual device screen) and look on the right under "Current States"

Any of those items can be a Tile on a Dashboard. Just pick the Device and then pick Attribute. The list of Attributes will populate and you can pick "outdoorTemperature", for example. (I can't.)

Awesome, Thanks !... I knew it would be glaringly obvious

@csteele Hi ! I've been using your device for a couple of months but it seems to not work today, at least for me.

I tried a couple of tests from the device page to raise the cooling setpoint. One is from "Cool Up" and another is "Set Cooling SetPoint" Here are the logs:

Is there anything else I can provide? Thank you.

1 Like

Download the Hubitat app