[DEPRECATED] Universal Ecobee Suite, version 1.7.**

Hi All - Im am trying to figure out a way to modify the min fan runtime based on if the unit is in heat or a/c mode. I currently use the Mode Program Helper to set the ecobee mode based on the hub mode and leave the ecobee in auto heat/cool. When the a/c is running, i like the fan to run for a longer time to help circulate air (min runtime = 20 min/hr), but when the heat is running, i only want the blower to run when heating (min runtime = 0). Is there a way to add this conditionality to this helper or accomplish this in another way? I live on the Texas coast and our weather in the winter is unpredictable; I we frequently switch from heating to cooling what seems like on a weekly basis. So, currently I am changing the helper runtime whenever the mode changes. Any help would be appreciated. Thanks!

I’ve done an extensive search and can’t find what I think should be an easy answer :slight_smile:

I’d like to subscribe to polled events to capture and log temperature and setpoint changes as the temperatureMeasurement doesn’t seem to trigger an event. I’ve been using the following webhooks code for other devices - is there a quick fix?

section("Log devices...") {
    input "temperatures", "capability.temperatureMeasurement", title: "Temperatures", required: false, multiple: true
	input "thermostats", "capability.thermostat", title: "Thermostats", required: false, multiple: true
	input "ecobees", "device.\\devicename?\\", title: "Ecobees", required: false, multiple: true

Thanks in advance!

Maybe this will work for you?

 * fanMinOnTime by Thermostat Operating State
 *	Copyright 2019 Barry A. Burke
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *      http://www.apache.org/licenses/LICENSE-2.0  
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
String getVersionNum() { return "1.0.0" }
String getVersionLabel() { return "Ecobee Fan Circulation, version ${getVersionNum()}" }
import groovy.json.*

	name: 			"Ecobee Fan Circulation",
	namespace: 		"sandood",
	author: 		"Barry A. Burke (storageanarchy at gmail dot com)",
	description: 	"Change Ecobee fanMinOnTime based on Thermostat Operating State changes",
	category: 		"Convenience",
	iconUrl: 		"https://s3.amazonaws.com/smartapp-icons/Partner/ecobee.png",
	iconX2Url: 		"https://s3.amazonaws.com/smartapp-icons/Partner/ecobee@2x.png",
	singleInstance:	false,
    pausable: 		true

preferences {
	page(name: "mainPage")

// Preferences Pages
def mainPage() {
	dynamicPage(name: "mainPage", title: "${getVersionLabel()}", uninstall: true, install: true) {
		section(title: '') {
			String defaultLabel = app.name
        	label(title: "Name for this ${defaultLabel} instance", required: true, defaultValue: defaultLabel)
            input(name: "thermostats", type: "device.ecobeeSuiteThermostat", title: "Ecobee Thermostat(s)", required: true, multiple: true, submitOnChange: true)
			input(name: "coolFanOnTime", type: "number", title: "Cooling Fan On Time (0-55 minutes)", required: false, submitOnChange: true, range: "0..55")
            input(name: "heatFanOnTime", type: "number", title: "Heating Fan On Time (0-55 minutes)", required: false, submitOnChange: true, range: "0..55")
            input(name: "fanOnlyOnTime", type: "number", title: "Fan Only Fan On Time (0-55 minutes)", required: false, submitOnChange: true, range: "0..55")
            input(name: "theModes", type: "mode", title: "Change Fan On Time only when the Location Mode is", multiple: true, required: false)

def installed() {

def updated() {

def initialize() {
	subscribe(thermostats, 'thermostatOperatingState', operatingStateHandler)

def operatingStateHandler(evt) {
	log.info "Operating State changed to ${evt.value}"
    if (!settings.theModes || settings.theModes.contains(settings.theModes)) {
    // We're in the right mode
    	if (evt.value.contains('cool')) {
        	if (settings.coolFanOnTime) {
            	thermostats.each {
                	if (it.currentValue('fanMinOnTime') != settings.coolFanOnTime) {
                		log.info "Setting ${it.displayName}'s fanMinOnTime to ${settings.coolFanOnTime}"
        else if (evt.value.contains('heat')) {
        	if (settings.heatFanOnTime) {
            	thermostats.each {
                	if (it.currentValue('fanMinOnTime') != settings.heatFanOnTime) {
                		log.info "Setting ${it.displayName}'s fanMinOnTime to ${settings.heatFanOnTime}"
        else if (evt.value == 'fan only') {
        	if (settings.fanOnlyOnTime) {
            	thermostats.each {
                	if (it.currentValue('fanMinOnTime') != settings.fanOnlyOnTime) {
                		log.info "Setting ${it.displayName}'s fanMinOnTime to ${settings.fanOnlyOnTime}"

If you want to select Ecobee Suite Thermostats only, use “device.ecobeeSuiteThermostat”.

Then of course you will subscribe to “temperature”, “heatingSetpoint” and “coolingSetpoint” to get the values as they change.

That’s exactly what I needed, thank you very much!

Is there a way to get one of the helper apps to control a non-ecobee “thermostat”?

Here’s my situation and what I’d like to accomplish: I have a sunroom that is heated with a gas fireplace. There is a sliding glass door to which I’ve attached a ST multi sensor. I’m using a virtual thermostat ( [RELEASE] New Virtual Thermostat With Device ), to read the temperature from the multisensor and turn the fireplace on/off based on the room temperature. The settings for this virtual thermostat are controllable via Google Assistant, so I’m assuming there is some sort of standard control set being employed.

What I would like to be able to do is have the ecobee change the temperature set point of the virtual thermostat based on the ecobee’s set point (an offset value would be nice as well, since controlling the temp in that room via a blower-equipped fireplace is… coarse… and I usually set the temp in the sunroom a couple of degrees cooler than the main unit). I don’t need (or want) to control the mode, just the target temperature.

Is there a way to accomplish this currently?

I’ve looked through the helper apps, but they do not seem recognize the virtual thermostat as an option.

You could try using the Smart Vents/Dimmers/Switches helped, just set it up to leave the vent unchanged when it goes idle. I’m pretty sure it will turn off the switch once the temp is met.

Thank you for such a quick response! I’m afraid Smart Vents/Dimmers/Switches doesn’t quite accomplish what I’m attempting. I don’t want the heat in the sunroom to turn off/on when the ecobee is/isn’t heating (because the temps are pretty different between the ecobee and the sunroom, so their heating activities rarely coincide).

I don’t need UES to control the switch on the fireplace, but the temperature set point of the (virtual) thermostat.

I was thinking Smart Zones would be what I was looking for, but I may be misunderstanding what it’s doing. Now that I’m looking closer at it, it doesn’t mention temperature, just heating/cooling/fan.

I took a quick look through the helpers and didn’t see what I was looking for so figured I’d ask here. Is there a way to control my humidifier through this smartapp? Either the humidity level based on mode or just on/off?

Is there a way to base a If condition on Thermostat knowing if you are home/away?

Basically a status outside of Temperature or State (Cooling, Heating, Idle)

You should still try Smart Vents - it will track the Ecobee setpoints, and it changes the vents based on temperature reading, not the stat operating state if you tell it to leave the vent unchanged when the stat is idle.

If it doesn’t do what you want when you try it, I can probably tweak it for you.

The Smart Routines/Modes/Programs Switches Helper can change the stat’s Program (née Climate/Schedule) when your location mode changes, or when a specific SmartThings routine runs, or when a (virtual or real) switch turns on.

If that isn’t what you are looking for, please give me more explanation for what you are trying to accomplish.

There are commands you can call from WebCoRE to change the humidifierMode and humiditySetpoint.

I have recently had a few requests for a Smart Humidity Helper, but I haven’t started developing it yet.

Not exactly, I was looking on perhaps defining an action when the Thermostat goes into Home/Away/Sleep.

The same helper does that as well - it can change location mode, run a routine or turn on/off a switch based on stat program changes.

thanks for this, ill give it a shot. in this app, what is the “change fan on time only when the location mode is” and how does this relate to the runtime settings in the mode helpers? thanks again!

I’m having an issue where the “switches and contacts” will turn off my HVAC even when nobody is home to open a door/window. So I tried uninstalling the Ecobee Suite Manager and removing it from the IDE, but it keeps staying there. My IDE has nothing in SmartApps or Device Handlers, yet I can still install the old code from the Smartthings app under Marketplace --> My Apps. Any suggestions on how to remove it from My Apps so I can install the newest version? Thanks.

I have no idea how you could have nothing in SmartApps or Device Handlers, yet still be able to install the old code from the SmartThings mobile app. Shouldn’t be possible.

My suggestion would be to update/install the latest code into your IDE, save and publish. Then, from your mobile device:

  • Remove any installed Ecobee Suite Helpers (but not Ecobee Suite Manager)
  • Remove any other SmartApps that are listed under each of the devices’ (Thermostats and Sensors) SmartApps tabs
  • Remove each of the Sensors
  • Remove each of the Thermostats
  • Finally, remove Ecobee Suite Manager

When you are convinced that NONE of the Ecobee Suite Helper SmartApps, Devices or ES Manager are installed, then go back into the IDE for SMartApps and Device Handlers. Note that in the first column of the IDE there are2 or 3 icons - the second one looks like a pad of paper with a pen in it - click that one, and then click Delete - repeat for each of the ES SmartApps and Device Handlers.

1 Like

This allows you to use different settings for different Location Modes…like maybe you only want to adjust while in Home and Sleep Modes, but not when you are Away…

Ecobee Suite Updated on 30 December 2019 at 3:30pm EST

Happy New Year!

I found the time over the holidays to clean up a lot of my backlog of issues, optimizations and enhancements. For this update, every single file has been modified, so please be sure to update everything!

Highlights include:

  • Significant cleanup of labeling for ALL Helper SmartApps, with fixes for the “label doesn’t stick” issue recently reported on Hubitat.

  • Changed Ecobee Suite Manager to use HashMap for all working/state Map data on both platforms. Hubitat defaults its Maps to LazyMap, which is not optimal for the ES use case. This change fixes some issues, and speeds up the code a bit.

  • Added the HE importUrl definition for all the Helpers, even though I don’t think Hubitat uses it. At least it’s there in the code if you need it for a future import update on Hubitat.

  • Added more supported weather station devices to Smart Modes. These include:

    • Ambient Weather Device for Hubitat
    • DarkSky.net Weather Driver for Hubitat
    • Netatmo Outdoor Module for both SmartThings and Hubitat
  • Miscellaneous performance optimizations for both Ecobee Suite Thermostat and Ecobee Suite Sensor devices, including ornamentation for all the command parameters on Hubitat.

This update is recommended for EVERYONE!

And please be sure to update all 12 Helpers and both device Drivers/DTHs

1 Like