Rule Machine to adjust Thermostat Scheduler based on Global Variable "Target Daytime Temp"

I've got a Honeywell T6 Pro for my physical thermostat, controlled by Thermostat Controller so I can use multiple sensors throughout the house. I also have a Thermostat Scheduler app to control the setpoints throughout the day (time periods instead of modes).

What I'm trying to do is have a Hub Variable, "Target Daytime Temp" that can be manipulated from a dashboard. Changes to that variable value would trigger a Rule Machine app to then adjust my scheduled setpoints.

I'll share screenshots.

The rule is "working", except that as soon as the rule actions finish, something is changing the setpoints back to what they were already configured for in the Thermostat Scheduler app.

The rule triggers when the TDT variable changes. The first dozen or so actions take that Hub Variable and calculate the heat/cool setpoints for the various time periods in my Scheduler configuration. These values are stored in Private Variables within the rule. Once the setpoint calculations are done, there's an IF-ELSE that I use to set either a "heat-only" scheduler configuration (if the temperature outside is <= 55) or a "heat-cool" configuration. Within each half of the IF-ELSE, the scheduler setpoints get set and then I "activate scheduled setpoints".

Like I said, something isn't working right, because as soon as the rule finishes running the setpoints that were calculated within the rule are reverted back to what's in the actual scheduler app.
I do know that the setpoint calculations within the Rule are being calculated as expected. That much, I can see within the live logs.

My Thermostat Controller app

My Thermostat Scheduler app

My Rule Machine app

Live Logs
As you can see from the screenshot here, the Rule is executing as expected, but something is causing the setpoints set from the Rule to be overwritten by what was previously configured in the Thermostat Scheduler app.

@bravenel - Sorry if you're the wrong person to tag here. I know you posted the original update when Thermo Scheduler control was built into Rule Machine. Any chance you can take a look at this and point me in the right direction?

That is all very complex. I'm wondering if you have a race condition going on.

Two suggestions:

  1. Re-think how you're doing this to simplify.
  2. Remove the action to Activate Scheduled Setpoints, or at least put a significant delay on it. You know what the setpoints should be in those contexts, so just set the thermostat directly instead of indirectly. If there are two instances of Thermostat Scheduler running, the second one could well be running before the first one has completed, thus overwriting the values.

I used to have two TS instances running, one for heat-only and one for heat+cool, but I was hoping to use RM to manage a single instance instead because another Rule I had running was hitting one or the other, but not always the one that was running. I'll try adding a 60-second delay and see what impact that has.

The whole goal was to be able to have a "target daytime temperature" in the house that we can set from a dashboard, and then have all of the setpoints in the day configured with our desired time period offsets.

I added a 1-minute delay, but that didn't change the behavior. It's behaving as though the Thermostat Scheduler app is not being updated by the Rule actions. I can see the action in the Logs, but when I go to the Thermostat Scheduler instance it still shows the values that were set before the Rule ran.

Is it possible that I'm misusing the "Set Days/Times Setpoints" action?
Also, I'm targeting the TS instance by App Name instead of by Thermostat.

I am not able to reproduce this problem.

The logs you posted above have a lot of extraneous information in them, making it hard to tell what's going on. Please filter to just the rule and Thermostat Scheduler.

I still think this is extraordinarily complex. Have you considered using a variable setpoints, and just setting the variables?

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.