Can you please capture the Live Logging for Ecobee Suite Manager when this happens and send it to me (via PM, preferably)?
You could also check your installed devices list for device names that start with "ecobee_suite " or “dummyThermDNI” or “dummySensorDNI”. If any of those exist (possibly from an earlier installation that failed), try deleting them. One or more may be in use by a SmartApp - these will be listed at the bottom of the device page in the IDE if you click on the device from the My Devices page. These will have to be disconnected from the SmartApps and then removed…
I want to use this from webcore to set my mode to away or resume program. I have it all setup and when I go to add a statement to change the thermostat to away i see the command as this “away(…)”. Does that mean there are some attributes that can be passed to it? Are those documented anywhere?
I just added contact sensors to my doors and windows and when I went to test the automatic shutoff, the sensor name was missing from the notification - “Contact/Switch Handler: left open for 5 minutes,…” Any configuration I’m missing or is this a bug?
Sounds good. I wasn’t sure if there were similiar options that could be leveraged from SmartThings similar to the Mode Change Helper App (such as hold type, fan duration, etc…).
If you look at the source code for the thermostat, you will find other entry points that support things like hold type/duration. away() is just a shortcut to making the full call to setThermostatProgram:
It would appear that your contact sensors don’t have a Label - the SmartApp is trying to display device.displayName for the contact sensors that are currently open…
They all have names that show up in “Things” - there isn’t anywhere else to apply a label, is there? Is there any issue with a character limit? The contact that was open was “Kitchen Sliding Door”.
Is the string that needs to be returned for holdType one of the following:
“Until I Change”, “Until Next Program”, “2 Hours”, “4 Hours”, “Specified Hours” or “Thermostat Setting”
That’s what I was able to find in the Service Manager SmartApp but wasn’t sure if that was just the human readable and there was something else that needed to be sent to the thermostat.
No, those are the “display names” for the user to select the default hold type.
When you call thermostat.setThermostatProgram, you need to specify holdType as defined by the Ecobee API (my code does not currently support the dateTime parameter defined by Ecobee):
program: (String) cap-init Program/Climate name (e.g., “Away”, “Home”, “Sleep”, “Awake”). This must be one of the values in the programsList List attribute for the thermostat
holdType: (String) one of:
‘indefinite’ - Permanent/Until I Change
‘nextTransition’ - Temporary/Until Next Program
‘holdHours’ - For a specified number of hours (starting now)
‘’ - Null/Empty String means use the default settings
holdHours: (String) Integer number of hours to hold (defaults to ‘2’ if not specified)
Let me know if you get this working with WebCoRE - others have asked how to do this but I haven’t built an example. If you could share yours, would make many people happy.
Just curious - what is your WebCoRE piston doing? Upon what conditions are you trying to change the thermostat’s program? Have you looked at the Smart Routine/Mode/Program helper to see if it can do what you want?
So, in order to place a command from WebCore, the first thing you have to do, after adding the t-stat as your device to command, is select the command “setThermostatProgram”. But before hitting save, in the bottom of that window, select “Parameter” then “Add a string parameter”. Do this two more times till your screen looks like this:
In the first parameter, you’ll add your program. Either Away, Home, or Sleep. Enter it with no quotes but with the correct capitalization.
In the second you’ll enter your hold parameter, if you want one. The options are: indefinite, nextTransition, or holdHours. Enter this without quotes but with the correct capitalization.
The third field is for your hours, if you want to use it but you can leave it blank. It should then look like this:
Supply only the desired program name, will set a hold using the default settings, as controlled by the thermostat device config parameters (defaults to use the Ecobee Suite Manager preference, which in turn defaults to use the thermostat setting).
If you specify holdHours as the 2nd parameter, the 3rd parameter is (optional) hours - default is 2 hours.
It’s the least I could do. I had this whole complicated setup where I would trigger a routine in WebCore which would then trigger one of your helper apps…it was a big 'ol mess. However, for simpler things, I’m still using your helper apps. The new suite is really wonderful.
WebCore would execute a routine that had nothing in it and then the Routine Helper SmartApp would change the Thermostat. But this is going to be a lot easier now.