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


Based on your answers, I assume that your are an iOS user, Please be sure to enter
the value exactly as shown below.

Ok, for your use case, you’d need to set this parameter to true:

	section("Enable temp adjustment based on indoor/outdoor temp sensors [optional, default=false]") {
		input (name:"setAdjustmentTempFlag", title: "Enable temp adjustment set in rooms based on sensors?", type:"Boolean",
			description:"optional", metadata: [values: ["true", "false"]],required:false)

And, as you did not enter any motion sensors in rooms setup, you do not want any adjustments based on
your presence, so make sure that this parameter is empty or set to false:

	section("Set your main thermostat to [Away,Present] based on all Room Motion Sensors [default=false] ") {
		input (name:"setAwayOrPresentFlag", title: "Set Main thermostat to [Away,Present]?", type:"Boolean",
			description:"optional", metadata: [values: ["true", "false"]],required:false)

I just added additonal tracing in the smartapp to see what’s going on your side… Please update the code
and publish it in the IDE (v1.9.6).

And, PM me the logs related to ScheduleTstatZones after.


Hello to all,

Quick update: I’ve been testing my ecobeeSetZoneWithSchedule and ScheduleTstatZones (for other types of thermostats if you don’t own an ecobee) smartapps with my smart vents and they work beautifully…

The smartapps automatically ajust the smart vents’ level settings every 5 minutes based on an avg temp collected from all temp sensors in the zones that are part of a given schedule…

Really cool stuff!!


P.S. I will post some pictures later.

I moved over to this thread since my conversation is pretty much centered around this app now. So I went through a basic (:smirk:) configuration of this smart app and I think it has some amazing features. I have a couple questions but maybe first I need to be asking how much you would charge to walk me through configuring this app since I know you do this for a living and there’s only so much one could expect for free… I’m not a real doctor by the way, I’m a poor 34 year old with 3 kids :slight_smile:

I only have 1 tstat (ecobee3) for the entire house, and my downstairs is consistently 10 degrees cooler than upstairs. Basically we set the tstat to keep the upstairs at a comfortable level, and it’s expected that downstairs will be cooler. As such, I have never wanted to average out the house temperature between my downstairs sensors and upstairs sensors because my default cooling set-point on the ecobee is at the maximum comfortable level for upstairs (79 degrees in the summer). So if the house is occupied, when downstairs gets factored in, suddenly upstairs becomes way too hot as it bumps the cooling point up.

The same holds true for winter. I set my heating set-point to a comfortable level for upstairs. If downstairs gets factored in, it raises the upstairs heating point and then upstairs becomes unnecessarily warm.

This is also why I never hooked up the mini sensor on my ecobee3. Maybe if the system detected that the downstairs was significantly cooler than the upstairs in the summer, it could just circulate air instead of running the A/C. That would be useful… but it seems your app wants to circulate based on outside temp and not inside differential?

Anyways, I did a basic setup of 3 rooms (only the rooms with sensors for now), 2 zones (upstairs and downstairs), and I did 3 schedules. But the schedules seem to be where I’m most confused.

I wasn’t sure what a “schedule” meant so I just created 3 to match the ecobee schedules of Home, Away and Sleep. I set each schedule to respectively align to it’s matching ecobee mode. Home Schedule matches the ecobee program “Home”, Sleep lines up with the Sleep program, etc… Then I set the same thresholds on each schedule:
Extra heating at 10
Extra cooling at 85
Less heating at 50
Less cooling at 70

Left Fan Mode settings at blank, max temp at default, and made the Home schedule only take affect when the house is in Home Mode, Sleep to only run in “Night” mode, and Away to run in “Errand (custom mode for me) and Away”.

I set it up send me detailed notifications. When the home mode is in Away or Errand, I get “No schedule applicable at this time”. When I switch to Home mode, it says “running schedule home, about to set zone settings as requested”. “Home avg ttemp=72, main tstat temp = 77.4, temp adjustment = 5.4. Cooling set-point is now 84 (adjusted by avg temp diff of -5.0).”

I guess for starters, if I want to do temp adjustments based on outdoor temps, I also have to average my indoor temp sensors (which I explained earlier posing a problem).

And I don’t know why the other home modes don’t trigger the other schedules to run.

Does it make sense to “circulate” my fan based on downstairs being colder than upstairs? Does that help upstairs cool off in the summer?

If it helps:

8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug ecobeeSetZoneWithSchedule>No schedule applicable at this time 2015-09-09 17:14
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug sending text message
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug setZoneSettings>schedule=Sleep does not apply,location.mode= Errand, selectedModes=[Night],foundMode=false, continue
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug setZoneSettings>found schedule=Sleep, scheduled program at ecobee=Home...
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug setZoneSettings>found schedule=Away, scheduled program at ecobee=Home...
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug setZoneSettings>schedule=Home does not apply,location.mode= Errand, selectedModes=[Home],foundMode=false, continue
8d5e1297-2daf-4910-ade8-c57e270751b0 5:14:49 PM: debug setZoneSettings>found schedule=Home, scheduled program at ecobee=Home...

@drshaw, I will PM you my hourly rate as I need to study your use case and come up
with the best solution.


Any thoughts of adding in “auto-off” when specific window/door sensors are opened? Very likely a global setting and wouldn’t need to be done for specific zones.

Hi @bmmiller

Please refer to this other smartapp (WindowOrDoorOpen) for this use case:


Great, thanks. That’ll work. I had been using @tslagle13 Thermostat Mode Director, but there are some quirks I don’t like and of course, no schedules or zones (even though I won’t be using zones yet).

Just an FYI, the forums didn’t like the ! at the end of the link which result in “clicking” a broken link.

I’m not sure what happened, but the ScheduleTstatZones app stopped controlling the thermostat. I’m using version 3.0.3 of the app. It polls the thermostat every 5 minutes, but it never adjusts the temperature regardless of the temperature sensor settings or the desired temperature. It DOES NOT seem to poll any of the temperature sensors (should it?). The thermostat only works manually now. I’ve tried turning the option to average all the temp sensors on and off. I’ve tried turning off the option to only consider the temperature in a room if motion is detected. I was experimenting with using a master switch to turn processing on and off, but I deactivated that option.

I recently migrated to the V2 Hub, but the app was still working after I reinstalled it. I had been tweaking settings, so I’m not sure if I did something wrong that caused it to fail permanently.

Hi @DreamPunk,

(1) Could you update to the latest version (v.3.1.1) at my github?

(2) Also, according to your requirements that you posted earlier in this thread, please make sure to set the following parameters to ‘true’:

section("Enable temp adjustment based on outdoor temp sensor [optional, default=false]") {
		input (name:"setAdjustmentOutdoorTempFlag", title: "Enable temp adjustment based on outdoor sensor?", type:"Boolean",
			metadata: [values: ["true", "false"]],required:false)
	section("Enable temp adjustment based on indoor temp sensor(s) [optional, default=false]") {
		input (name:"setAdjustmentTempFlag", title: "Enable temp adjustment based on avg temp collected at indoor sensor(s)?", type:"Boolean",
			metadata: [values: ["true", "false"]],required:false)

(3) And, if you are using a master switch, please set it to on (using the IDE or the ST app) or, if not needed anymore, remove the master switch from the following input parameter:

	section("What do I use for the Master on/off switch to enable/disable smartapp processing? [optional]") {
		input (name:"powerSwitch", type:"capability.switch", required: false,description: "Optional")

P.S.I’m currently making a lot of changes to the smartapp in order to better support smart vents as I’m currently beta testing the Keen Home vents.

I published the 3.1.1 code, but it is still showing 3.0.3 in the app. Usually it updates pretty quickly, but it has been about ten minutes now.

My usage case might be different than what I previously posted, so let me update it here:

I basically just have one schedule right now, from 7AM to 1AM, where I want to keep the entire house at a temperature of 76 degrees. I have two zones (upstairs and downstairs) with several temperature sensors in rooms in each zone. I want the app to make adjustments based on the average temperature of all the sensors throughout the house, but I only want it to consider sensors in rooms where there has been motion. I also want to be able to override the app’s calculations when I am in a room that currently does not have any sensors (it gets too hot because the app doesn’t detect any motion and sets the thermostat too high).

P.S. I can’t wait to get my Keen vents!


So basically, you need to configure all your rooms with the following parameters populated:

a) Set this one to ‘true’

		section("Room ${indiceRoom}-Do temp adjustment when occupied room only [optional]") {
			input "needOccupiedFlag${indiceRoom}", title: "Will do temp adjustement only when Occupied [default=false]", "Boolean", metadata: [values: ["true", "false"]], 
				required: false


b) Specify the number of minutes here

		section("Room ${indiceRoom}-Do temp adjustment with this occupied's threshold [optional]") {
			input "residentsQuietThreshold${indiceRoom}", title: "Threshold in minutes for motion detection [default=15 min]", "number", 
				required: false, description: "Optional"


except the one(s) where you do not have any motion sensors.

Probably, those rooms should not be part of your zone(s) affected by the 7AM to 1AM schedule.

My app will not be able to do the following requirement:


P.S. Make sure to publish the new version of the smartapp in the IDE.

FYI, I’ve tested the smartapp v3.1.1 and it works fine on my end…

I was able to update the app to 3.1.1. I made all the changes you recommended and only included rooms with motion sensors in the zones. The thermostat has not changed from 74 degrees which I had set manually yesterday. How can I make sure the app is working? It doesn’t send any push notifications. I only see the polling messages it sends to the thermostat every five minutes.

Please try first to set detailed tracing to true at the last page (Notications & other settings)…

Also, if you are familiar with the IDE, you can use live logging…


I activated the app manually and checked the live logging. One of the lines says “setZoneSettings>No schedule applicable at this time”. Does that mean it isn’t running at all?

I also noticed this line: setZoneSettings>found schedule Constant Temp, startTime=2015-10-10T07:00:06.000-0500,endTime=2015-10-13T02:00:15.000-0500,nowInLocalTime= 2015-10-13 13:41,startInLocalTime=2015-10-12 07:00,endInLocalTime=2015-10-13 02:00,currTime=1444761690268,begintime=1444651200000,endTime=1444719600000,lastScheduleName=Constant Temp, lastStartTime=null

Does that mean that the schedule isn’t triggering because it thinks it is outside of the set time? Why does the start time include the date 10/10/15?

You may want to verify the time slots for you schedule(s): make sure that the time of the week and the start & end times are set properly. For example, 7h00am to 1h00 am should be divided into 2 schedules: 1h00am to 7h00 am, and 7h00 to 12h00 am.

Bye for now

Yep, that fixed it. So basically you can’t have a schedule that runs overnight? It needs to stop at 11:59PM and the next schedule needs to start at 12:00AM.

Yes, it is actually based on time slots during the day… If your schedule spills over to the next day, the smartapp does not handle it at the moment…

@DreamPunk, I made a change in the new version (v3.1.2) at my github that should fix schedules that run overnight…

Please test it and let me know,