[DEPRECATED] Free Ecobee Suite, Version 1.2.*

UPDATE: Ecobee Thermostat, v1.2.12

Changes:

  • Workaround for Google Home which sends setpoint changes in C even though it knows the thermostat is in F. Solves setpoint change errors primarily experienced when thermostat is in Auto mode, but also addresses some other cases.
  • Added the Alarm Clock program icon for programs named “Awake” and “Wakeup” (also for Hold: Awake and Hold: Wakeup)

You can install/publish this update on top of your existing installation of this Suite.

Hi,

This looks interesting!

Question: Does the DTH expose all the thermostat features on its own, such that I could use webcore to do as I wish without having to mess with the other stuff?

What I’d like is, for example, to be able to have webcore do things based on which comfort setting is currently in use.

Yes, this exposes all of the documented Thermostat attributes and capabilities.

For example, here are the current states from my installation:

temperature: 69.2
humidity: 23
motion: active
heatingSetpoint: 70.0
coolingSetpoint: 74.0
thermostatSetpoint: 72.0
thermostatMode: auto
thermostatFanMode: auto
thermostatOperatingState: heating
coolingSetpointRange: [65.0, 92.0]
heatingSetpointRange: [45.0, 78.0]
supportedThermostatFanModes: [on, auto, circulate, off]
supportedThermostatModes: [off, heat, auto, cool]
checkInterval: 960
temperatureScale: F
thermostatStatus: Heating to 70.0° (Auto)
apiConnected: full
ecobeeConnected: true
currentProgramName: Hold: Awake
currentProgramId: smart1
currentProgram: Awake
scheduledProgramName: Awake
scheduledProgramId: smart1
scheduledProgram: Awake
weatherSymbol: 101
debugEventFromParent: setProgram(Awake) for 311019854581 (EcoTherm: Downstairs)
timeOfDay: night
lastPoll: Succeeded
equipmentStatus: auxHeat1,fan
humiditySetpoint: 60
weatherTemperature: 20.4
decimalPrecision: 1
temperatureDisplay: 69.2°
equipmentOperatingState: heat 1
coolMode: true
heatMode: true
autoMode: true
heatStages: 2
coolStages: 1
hasHeatPump: false
hasForcedAir: true
hasElectric: false
hasBoiler: false
hasHumidifier: false
hasDehumidifier: true
auxHeatMode: false
heatRangeHigh: 78.0
heatRangeLow: 45.0
coolRangeHigh: 92.0
coolRangeLow: 65.0
heatingSetpointMin: 45.0
heatingSetpointMax: 78.0
coolingSetpointMin: 65.0
coolingSetpointMax: 92.0
heatRange: (45..78)
coolRange: (65..92)
thermostatHold: hold
holdStatus: Hold ends today at 8:30am
heatDifferential: 0.5
coolDifferential: 0.5
fanMinOnTime: 0
programsList: ["Away", "Home", "Sleep", "Awake"]
thermostatOperatingStateDisplay: heating
thermostatFanModeDisplay: auto
thermostatTime: 2017-11-12 06:18:45
statHoldAction: nextPeriod

And the commands that you can call are (some are unique to this implementation, so you’ll need to look at the device code for the arguments):

off
heat
auxHeatOnly
emergency
emergencyHeat
cool
auto
fanOn
fanOff
fanAuto
fanCirculate
resumeProgram
home
present
asleep
night
away
deleteVacation
cancelVacation
setHeatingSetpoint
setCoolingSetpoint
setThermostatMode
setThermostatFanMode
setThermostatProgram

So, you can pretty much totally automate the thermostat to your heart’s content!

I installed the new thermostat device driver (I have the E3 Lite, no external sensors).

I’m not getting anywhere near that list of current states in IDE.

Any idea why?

PS - I’m seeking to utilize the various program names in webcore.
I see the CurrentProgramName as an available item, but when I try to match it to what is actually running on the thermostat it fails.

Not sure why you don’t see all of them - they are all populated by my code, regardless of which version of Ecobee thermostat you are using. It may take a few minutes after installation for them all to get updated (unless you set the Polling Interval to 1 minute)…

If it still isn’t showing everything I listed, then my initial suspicion is that you haven’t properly/completely installed my Suite, and you are running (at the very least) the Ecobee Thermostat device from SmartThings.

Check the version reported by the running code on your mobile device - open the gear icon for the Ecobee Thermostat device, and it should show the version just below the Update Icon text, in the form “Ecobee Thermsotat Version 1.2.12”.

Also check the Ecobee (Connect) SmartApp version - scroll all the way to the bottom and find “Ecobee (Connect) version 1.2.7”.

Let me know…

I’m not sure what you are matching with, but you probably want to use currentProgram and not currentProgramName - the latter is the display name I use in the UI, the former is what the ecobee API says the thermostat is running.

Man… I hate to post and bother you but I’m having a hell of a time with this. I’ve gone through install twice and still can’t figure out the issue.

I don’t appear to be able to control the thermostat at all from within SmartThings. Any time I try to use any button at all when using your DTH or use any commands with a piston in webcore I get some form of the following error:

groovy.lang.MissingMethodException: No signature of method: script_app_Ecobee__Co_fcabcc79_899f_48ce_9c2b_f389e9674c28_ver_1_5.pollChildren() is applicable for argument types: (null, java.lang.Boolean) values: [null, false]
Possible solutions: pollChildren(), pollChildren(java.lang.Object), pollChild()

Any thoughts?

Hi Barry,

I try to use away method through webCoRE but seems Ecobee 3 doesn’t change the current program to Away. Also I try to do the same thing using smartApp, still not working. I have Ecobee Thermsotat Version 1.2.12 and Ecobee (Connect) version 1.2.7.

Log

Live Log

Do you know why? Thank you in advance.

No, I’m not sure why, but argument passing is a bit finicky. You may need to is a null string instead of null for that argument ("").

You’ll probably fare better calling the program-change commands directly (e.g., away(), home(), etc.).

No worries, I’m always happy to help…

First, it’s always helpful to tell me the version numbers, as reported inside the SmartApps and in the settings page for the devices. Finding these helps ensure you are indeed running 100% of your device using my Suite.

A couple of things to check:

  1. Make sure you aren’t using the SmartThings-supplied version of Ecobee (Connect) - you can’t install this one along side that you - you need to delete the ST version before installing my Suite.

  2. Ditto for the Ecobee Thermostat and Sensor devices, although you usually know you have the wrong ones because mine uses Ecobee-like icons and theirs uses stock ST UI components.

  3. It is imperative that you fully delete the old stuff before starting a new install, otherwise devices won’t be properly set up as children to the main app. Sometimes you may need assistance from SmartThings support to delete certain components (see elsewhere in this thread for instructions on the proper removal sequence).

  4. Make sure that you didn’t install the devices (or Helper SmartApps) manually - Ecobee (Connect) will create everything as you need it.

I would recommend not running any WebCoRe automations until you know the thermostat DTH is running properly. It may take a few minutes for the initial updates to start. Once running, verify that you can change the thermostat mode (heat to auto or cool) from the device on your mobile device. If not, please PM me the log for Ecobee (Connect) and the Thermostat device at the time of your attempted change…

And we’ll work from there.

I click the away button from the interface below, same error. seems parameters didn’t pass for setThermostatProgram in DTH execution properly.

Added: @12:01PM
I have tested using Ecobee app to set as hold away. I can see you are using sendEvent calling to change the program. But in the code of SetThermostat, I didn’t find the way to send Away to Ecobee.

All 3 buttons home, away, sleep have the same issue.

ac04735c-aaf5-477a-bd67-dd1257cd033f 9:14:54 AM: error groovy.lang.MissingMethodException: No signature of method: java.util.LinkedHashMap.null() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [LOG: setThermostatProgram(Away, null, 2)]
Possible solutions: dump(), plus(java.util.Map), plus(java.util.Collection), putAll(java.util.Map), putAll(java.util.Map), putAll(java.util.Collection)
ac04735c-aaf5-477a-bd67-dd1257cd033f 9:14:54 AM: trace LOG: away()

Hi,

With Ecobee now directly integrated with Google Home(Assistant), what should be the approach for voice controlling the Ecobee 3?

Something is wrong with your installation, since nobody else is reporting the problem (i just double-checked all 5 of my Ecobees running the latest code).

So, as I suggested before:

  1. Please send me the version numbers of the Ecobee (Connect) SmartApp and the Ecobee Thermostat devices
  2. You might want to re-install the source code for my Suite form the Github repository - it could be that one or more of the files got corrupted. Be sure that the SmartApps are installed as SmartApps, and the DTH’s are installed as device handlers.

When in doubt, backtrack and retry - I can assure you that once installed properly, it does all work - the fact that the Home/Away/Sleep buttons don’t work for you means that something is installed wrong…

Thank you for the reply. Actually I reinstalled twice today. still have the same issue. I follow all instructions step by step.
Tested fan auto,fan off, HVAC off, resume , Fan: circulate , all are ok.

My guess the issue is in the DTH, since I can run/show the error through webcore . and probably in the code for setThermostatProgram… just for your reference

2db582ae-f6f5-4c77-9624-bc2c6fb80f62 21:43:09: info LOG: Using holdType indefinite
2db582ae-f6f5-4c77-9624-bc2c6fb80f62 21:43:09: debug LOG: setThermostatFanMode(auto)
2db582ae-f6f5-4c77-9624-bc2c6fb80f62 21:43:09: trace LOG: fanAuto()
2db582ae-f6f5-4c77-9624-bc2c6fb80f62 21:41:49: error groovy.lang.MissingMethodException: No signature of method: java.util.LinkedHashMap.null() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [LOG: setThermostatProgram(Away, null, 2)]
Possible solutions: dump(), plus(java.util.Map), plus(java.util.Collection), putAll(java.util.Map), putAll(java.util.Map), putAll(java.util.Collection)
2db582ae-f6f5-4c77-9624-bc2c6fb80f62 21:41:49: trace LOG: away()

Grab ecobee Thermostat v 1.2.14 and Ecobee (Connect) v1.2.8 and let me know if these improve things…

I have update DTH to V1.2.14 and Ecobee(connect) to V1.2.8. See log below.

TEST from SmartApp

4186e57b-8f88-48d7-943a-4e2bfbdae733 9:15:22 AM: error groovy.lang.MissingMethodException: No signature of method: java.util.LinkedHashMap.null() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [setThermostatProgram(Away, , 2)]
Possible solutions: dump(), plus(java.util.Map), plus(java.util.Collection), putAll(java.util.Map), putAll(java.util.Map), putAll(java.util.Collection)

TEST from webcore

4186e57b-8f88-48d7-943a-4e2bfbdae733 9:11:26 AM: error groovy.lang.MissingMethodException: No signature of method: java.util.LinkedHashMap.null() is applicable for argument types: (org.codehaus.groovy.runtime.GStringImpl) values: [setThermostatProgram(Away, , 2)]
Possible solutions: dump(), plus(java.util.Collection), plus(java.util.Map), putAll(java.util.Map), putAll(java.util.Map), putAll(java.util.Collection)

Try a quick test - change your logging level to 3 and try again…

It works now!! I tested away & sleep button from webcore and smartapp. set debug level to 3…

how come? # change log level to 5, issue happened again… debug log issue?

4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:10 AM: info refresh() - calling pollChildren
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:14 AM: info Updated 12 objects (2449ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:04 AM: info Updated 2 objects (154ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:04 AM: info Thermostat Program is Hold: Sleep
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:04 AM: info Updated 4 objects (136ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:03 AM: info Updated 1 object (101ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:03 AM: info resumeProgram(true) - succeeded
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:03 AM: info Updated 2 objects (729ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:02 AM: info Updated 1 object (95ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:01 AM: info Updated 1 object (125ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:01 AM: info refresh() - calling pollChildren
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:01 AM: info Using holdType indefinite
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:03 AM: info Updated 1 object (99ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:31:02 AM: info Updated 1 object (89ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:29:43 AM: info refresh() - calling pollChildren
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:29:49 AM: info Updated 12 objects (2771ms)
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:29:36 AM: info resumeProgram() - No current hold
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:29:34 AM: info refresh() - calling pollChildren
4186e57b-8f88-48d7-943a-4e2bfbdae733 9:29:36 AM: info Updated 1 object (73ms)

Typo on a LOG statement was passing a null instead of a string. Fixed in Ecobee Thermostat 1.2.15

1 Like

Great. Happy to see fixed :slightly_smiling_face: