*** No longer supported *** [OBSOLETE] Introducing ScheduleTstatZones: multi zoned heating/cooling solution for your home

Hello there,

** UPDATE **

My smartapp is now officially approved by Keen Home:

This is the ultimate flexible smartapp for anyone who wants to better control her/his thermostat(s), and creates heating/cooling zones using Smart Vents like Econet, Keen Home vents or Ecovents.

With this smartapp, you can also create “virtual zones” (without any vents) where you can then adjust the thermostat’s heating/cooling setpoints based on the avg temp calculated from different room sensors with the ‘occupied’ option or not.

Actually, it should be the only smartapp that controls your thermostat(s) at home!!

Latest versions:

ScheduleTstatZonesV9: new major version with added custom capability in MyVirtualZone DTH for Setting Zone setpoint under the new Samsung connect app!

V8.8.9 EcobeeSetZoneWithSchedule & v8.8.9 ScheduleTstatZones added some defensive coding to avoid conflict when the master tstat is also included in rooms (as a slave tstat) for the scheduled zones

V8.8.7 Removed some roomTstatEvtHandler() logic to avoid conflict with related Virtual Zone’s setpoints

v8.8.4 ScheduleTstatZones: corrected set_fan_mode() to apply the fan settings overrides when conditions or no conditions are met

V8.8: [RELEASE] New versions of my zoned Heating/Cooling Solutions for SmartThings -Optimized to avoid sending multiple setLevel command to the vents if their current level is already within range of the target level ( to reduce noise).

v8.76 Optimized to avoid sending the same fanOn() or fanOff() commands if the HVAC fan is already in the correct fan mode.


  • Support of all ST connected thermostats (zigbee, z-wave, wi-fi,etc.) including Nest, Honeywell Lyric, etc.

  • Ability to set your smart thermostat (ex. ecobee, Nest, Honewell) to ‘Away’ or ‘Present’ based on all rooms’ motion sensors

  • Flexible schedule definition: you can define up to 12 schedules for your zones (mornings, weekdays, evenings, nights, weekends, etc.)

  • For each schedule, ST users can define the start & end times, the thermostat’s heating/cooling setpoints (or climates for ecobee), the max temp adjustment based on avg temp calculation

  • You can **set your schedules to run only for some ST hello modes (ex. **‘Away’, ‘Home’, ‘Night’, or your own customized hello modes)

  • For each schedule, you can assign the included zone(s) according to your own requirements (ex. Upstairs bedrooms, 1st level, basement, etc)

  • You can define up to 8 zones for your home which can include up to 16 rooms

  • Option to control zone/room thermostats for eTRVs, fireplaces, electric baseboards, or others

  • For each room, you can indicate not only the vent switches (up to 5 per room) to be controlled, but also any ST connected temp sensor, motion sensor, room thermostat that can help you better control the temp settings inside the zoned rooms

  • For each room, the occupied threshold (in minutes) can be customized based on your own needs

  • Support of any ST connected thermostats (Nest, ecobee, honewell, z-wave or zigbee thermostats)

  • Ability to set the thermostat’s fanMode (‘on’, ‘auto’, ‘circulate’) during a specific schedule

  • **Ability to adjust your main thermostat’s settings (every 5 minutes) based on an outdoor temp sensor (optional)

    • coolModeThreshold: set the thermostat to ‘cool’ mode according to a given outdoor temp threshold
    • heatModeThreshold: set the thermostat to ‘heat’ mode according to a given outdoor temp threshold
    • moreHeatThreshold: increase the heating setpoint according to a given outdoor temp threshold
    • moreCoolThreshold: increase the cooling setpoint according to a given outdoor temp threshold
    • moreFanThreshold: set the thermostat’s fanMode (‘on’, ‘auto’, ‘circulate’) according to a given outdoor temp threshold
  • Support of ecobee climate settings for temp&fan settings

  • Average temp calculation based on all room temp sensors inside the zone so that heat/cool settings are adjusted at the main thermostat even if your rooms are far away from it

  • Virtual zones definition even if your actual home setup does not include vents

  • Automatic adjustments of the vent settings based on your thermostat setpoints so that your occupied rooms (based on motion detection) will get the most heating/cooling during a schedule run

  • The smartapp will adjust the vents only if the main thermostat’s Operating State is not ‘Idle’ (so your HVAC is either ‘Heating’ or ‘Cooling’ or the fan is running).

  • If you want to control your smart vents with this smartapp, the following safeguards have been implemented:

    • It checks each vent’s temperature and makes sure that it’s within the minimum and maximum range to provide safe operation
    • It checks the ratio of closed vents/total connected vents and will ensure that the ratio is not higher than 50%
    • It ensures that there is a minimum open level for any vents inside the zone(s) scheduled at a given time

The smartapp was initially designed for ecobee thermostats, but it can now handle any thermostat connected to ST. You just need to ignore climate settings and define your cooling/heating setpoints.

EDIT: Some configuration use cases are described under the ST community wiki at:


P.S. For those of you who are interested in purchasing some smart vents, I’ve tested my smartapps with the Keen Home smart vents ( I was part of the Beta testing)… Here is the referral link to save 10% on the regular price (they sell for $80 at Lowe’s):

Following some testing that Keen Home executed with my smartapps in their own lab, they’ve decided to promote my work on their SmartThings landing page:


EDIT: The smartapp is now available for download at

A new release is available, for more details, refer to this thread:

FYI, here are some screenshots of the smartapp:


I added a dashboard to all my zoned cooling/heating smartapps today, so that
users can visualize more easily their active zone(s) and a summary of close/open vents
in their zone(s).

The new version is available for download at my store:


See picture below:



This is awesome. I think you’ll really enjoy working with the sensors in the Smart Vent. You can do a lot more than just open and close them.

1 Like

@NateKeenHome, sure! I’d be interested in knowing more… What about a partnership? PM me.


Other than a temp sensor and an on/off switch what type of functionality do these units have? I am about to pre-order mine, what a great idea!

Can you explain a little more how the vents will work. For example if I have two rooms I rarely use (unoccupied based on motion) and set the temp to a wide range to save energy (let’s say 60-80 is acceptable) will the app then close the vents in those rooms?

Also, can it get more detailed? If one room is 76, another 72, and a third 68 with my ecobee set to 70 and cooling, will it then fully open vents in the first room, half open in the second, and closed in the third?

Hello @Jonathan_McGuire,

The smartapp is actually using a logic similar to ecobee3 with its remote sensors (i.e., the temp at the main thermostat is adjusted according to the avg temp calculated from temp sensors data in each room), but it applies this logic inside the zone(s) that you define as part of your own schedule setup.

The smartapp then activates the vents to create the zones by turning on the vents inside the zoned rooms in order to attain the desired temp settings (cooling/heating setpoints).

So, in your second use case, if your 3 rooms are part of the same zone (for example, for the night schedule, let’s say that these rooms are your upstairs bedrooms), it will calculate the avg temp (which is 72 based on the rooms data that you provided) and make a temp adjustment based on ecobee’s current temperature in order to compensate for the temp differential between the bedrooms and ecobee.

The smartapp will then activate the vents inside the zone to turn them on (open) for your night’s schedule and turn off (close) all the other vents in your house (1st level and basement).

In your 1st use case, if the rooms are rarely occupied, then their temp’s sensor data will be excluded from the avg temp calculation as they will likely not be occupied at the time when my smartapp does the avg temp calculation.

Their vents will stay open if they are part of the zone. If you don’t want them in the zone(s) associated to your schedule (ex, night), then their vents will be closed.

My smartapp will command the ecobee thermostat (or any other thermostats) to reach a desired setpoint for the zone(s) that you selected in your schedule, not a range of values.

This is the smartapp’s behavior now, your ideas are food for thoughts on future smartapp improvements/developments.


Hello @Jonathan McGuire,

Good news, I was able to integrate the logic for use case no 2… Actually, what I’m doing is the following:

a) calculate the avg temp based on any given zone’s rooms where there are temp sensors (with the occupied or not option)
b) calculate the avg temp diff between the avg temp in the zone and the desired temp
c) for each room, calculate the temp diff between the room temp sensor and the desired temp
d) adjust the vent set level (in %) based on temp_diff_at_sensor / zone_avg_temp_diff

The setLevel will then be more precise than just open, close, or half close.

FYI, please note that the vent settings are adjusted every 5 minutes within a given schedule.

As I don’t have my keen home vents yet, I was able to test it with my light dimmers and the logic
seems to be working fine.

As for the 1st use case, I’m not sure at the moment if it’s really safe to potentially close
all vents inside a given zone… I need to do some testing beforehand as closing too many vents can damage your HVAC.

Also, based on the logic that I described for the 2nd use case, I think that most of the 1st use case is covered.


That is awesome! I know that Keen vents are supposed to have a pressure sensor for safety in case too many are closed so hopefully that won’t be affected by or can be added to your code. I just got my Ecobee3 yesterday and got it working with your app/device type, still playing around with it to figure everything out.

Off topic: The top right tile for Ecobee that shows heating, cooling, or off doesn’t seem to have an “auto” setting. If auto is selected on the Ecobee itself then that tile just displays the last known state. If it that tile gets tapped and set to heat, the only way to get back to auto is through the Ecobee. Is it possible to add an auto setting to that tile?

@Jonathan_McGuire, ok, I think that I found the issue here. Please grab the My ecobee device at github latest code and test it on your end, as there is no way for me to check if it really works or not.

Let me know.

I updated and published your code from a few hours ago without any luck, even deleted the init app and re-paired the Ecobee 3. Its not a big deal though since I leave it on auto all the time, pm me if you want me to keep testing without getting this thread off topic.

Hello @Jonathan_McGuire, you probably need to kill the SmartThings app and reload it to view the results, at least on Android.

If you have upgraded to Android V1.17, I would recommend to also clean your cache before restarting the SmartThings app.

Bye for now/

on iOS 8.2, killed app without any changes and verified that the new code was published with line 246 changed.

Hi Chuck! The vents also have integrated pressure sensors to keep track of static pressure build up in the ductwork. This helps us keep track of pressure levels while the vents are closed, so if they exceed safe levels the vents will open automatically to relieve stress. Think of our Smart Vents as not just remote control vents, but devices that help you know more about and regulate the health of your HVAC system.

Hey everyone. Our founders are doing an AMA on Reddit right now. If you have any questions you can ask them directly: http://bit.ly/1OVyIEw


Today, I added new features to deliver an even smarter app:

  • Ability to set your smart thermostat (ex. ecobee, Nest) to Away or Present based on all rooms’ motion sensors

  • Ability to set fanMode (‘on’, ‘auto’, ‘circulate’) during a specific schedule

  • Added some new input parameters in schedule page to adjust main thermostat’s settings based on outdoor temp sensor (optional)
    ** coolModeThreshold: set the thermostat to ‘cool’ mode according to a given outdoor temp threshold
    ** heatModeThreshold: set the thermostat to ‘heat’ mode according to a given outdoor temp threshold
    ** moreHeatThreshold: increase the heat setpoint according to an outdoor temp threshold
    ** moreCoolThreshold: increase the cool setpoint according to an outdoor temp threshold


This is great Yves! What other apps have you developed for the smart home?

@NateKeenHome, I PM you some of the smartapps I’ve developed…

This app used to work great and run at the times scheduled within the app. But now it will only run if I manually press the app button. Why is that? I have notifications set up to send push notifications when it runs, but there is nothing in the activity log except when I manually run the app.

Hi @DreamPunk,

  1. First, could you update to the last version at github as I’ve made some significant changes recently to this smartapp.

Go to

grab the code, save & publish in the IDE.

Also, please note that there are a lot of ST scheduling issues due to the progressive introduction of a new scheduler for ST users.

  1. To make sure that your smartapp has been scheduled properly, please do the following:

a) Click on https://graph.api.smartthings.com/location/list

And, then click on “smartapps” at the right for your location.

b) Scroll down to ScheduleTstatZones, and click on it. You should see something like this:

c) Under scheduled jobs, if you don’t see the smartapp being rescheduled within the next 5 minutes, then it
means that the ST platform didn’t reschedule your job properly.

  1. If your smartapp is not rescheduled by the ST scheduler.

a) On your device, you then need to go to My Apps under the main Dashboard,
b) Click on the ScheduleTstatZones smartapp
c) Press the “next” button at the right top corner several times till “done” to reschedule the smartapp.
d) Check that the smartapp has been rescheduled properly by doing step 2) again.


I followed all of your instructions including step 3 because ST had not scheduled the job.

Here is what the scheduled jobs section looks like now: