Jump to content

Capture up down 2441TH thermostat buttons for if condition?


johnstonf

Recommended Posts

I'm looking to add a condition when up or down is pressed on my Insteon 2441TH Thermostat so i can override control of my motion sensors when the temperature is manually overridden, for a period of 60minutes.

 

I can't see a condition for it... am i missing it?

 

See attached screenshot...

(What is ON/OFF and how would that be used in a condition?)

 

 

 

 

 

 

 

 

 

post-7355-0-61406800-1510843382_thumb.png

Link to comment

There are two modes that have that option, Heat Ctl and Cool Ctl that send an Insteon On whenever heating and/or cooling is called for, respectively. When the set point is met, that is, heating or cooling is turned off, then an Insteon Off is sent. You can use both in the same program, if desired, and totally automate the process, for example, disable and/or re-enable your motion sensor programs.

Link to comment

There is no "control" output from the thermostats when you change the temp manually like there is with a light switch when you manual press the up/down paddle.  In fact, all changes to a thermostat look the same to ISY regardless of how they came to be.  

 

There will be a status change reported to ISY when the temp is changed (no matter how).  In other words, the built-in program on the thermostat changing the temp will look the same to ISY as a manual push.  Even if ISY itself changes the temp, it will report back to ISY a status change that looks the same as any other way of doing it.

 

You would neeed to have a program that 

1) looks for a status change in the thermostat from one temp to another and 

2) Excludes your motion sensor as the cause of that change.

 

That would be tricky.  I'm not sure it is really possible, I guess it mostly depends on how you have implemented the motion sensor.

 

It would be far easier to have another Insteon device that you use to shut down the motion sensor for a period of 60 minutes.

Link to comment

That will work!  i'm good with a "Status Change"!

Where do i find that?
 
(I have my Tstat completely dumbed down so ISY does all setting)
(Other that forcing up/down with the keys on it from current setpoint)
 
I see a "then" where i can set up/down 1 degree.
But i'm missing where to "if" a "Status Change"
 
see attached...

post-7355-0-56373200-1510935064_thumb.png

Link to comment

This is an example from a thermostat at my church.  It triggers on every change of the thermostat set point.  You can use any temp you want. Really, having "is x" is not necessary since "is not y" where y is an absurd number would work all by itself.    But keep in mind, it doesn't matter what changed the temp, it will still run the program.  So if your motion sensor triggers an ISY program which then changes the temp, it will run this program the same as if you manually change the temp.

Notify Sanc Alter N - [ID 0020][Parent 0065]

If
        'HVAC Sanctuary / Altar North' Cool Setpoint is 10°
     Or 'HVAC Sanctuary / Altar North' Cool Setpoint is not 10°
     Or 'HVAC Sanctuary / Altar North' Heat Setpoint is 0°
     Or 'HVAC Sanctuary / Altar North' Heat Setpoint is not 0°
 
Then
        Wait  10 seconds
        Send Notification to 'Lou and Stuart' content 'Altar North'
 
Else
   - No Actions - (To add one, press 'Action')
 


Link to comment

Brilliant! Thanks!

 

Here is a simple 'if" then flash light couple of times...

working!

Fred. I like to use a less definitive logic. In this case it (99) would not likely ever happen but...

 

If

....stat.temp <= 99

Then

.....whatever

 

 

 

The other thing that can combine a bit of a check filter into it

 

If

....stat.temp > 60

AND

...stat.temp < 85

Then

.....do what I want

Else

....notify me something is wrong with stat.

Link to comment

I do believe that 99 is actually out of range (meaning that it is impossible to set the thermostat to 99).  So in this particular situation, I think he is 100% covered.

 

But to be 100% covered in other situations, I like the 

if

is x

and

is not x

 

No matter what, that runs true on every status change.

 

Alternatively, if you don't need a "false" outcome, you can just put the same thing in both the true and false clause.

 

if

temp is x

then

do thing y

else

do thing y

 

Thing y will happen on every change of x

Link to comment

just reporting back, this didn't work for me...

 

As mentioned above, "ANY" change to the Tstat triggers the if condition... so it creates circular logic, because, say i have the Tstat change to 20c at 6am, that in turn unintentionally fires off the "if button pushed" logic i currently have, disables the motion, waits for x minutes, then enables, then when motion sensed, it triggers the Tstat to change, which then disables the motions for x time again,  blah blah.

 

So, is the problem that the Tstat up/down does not report that to the ISY, or is it that the ISY is currently not capturing that activity?

It sure would be nice if that up/down could trigger a condition!! (could even do things like "if pressed up 3 times in 5 seconds" type logic, etc.)

 

I guess for now, i'll have to put a couple of big wads of DUCT TAPE over the buttons on the Tstat, so nobody uses them.

 

Won't my wife and friends be impressed!

 

/f

Link to comment

Basically:

*=Currently working

!!=Not working

 

-*If away_from_home var set, tstat 16c

 

-*Else, if home...

 

-*Timed: sets temp to 16c at night, 20c at 5am

 

-*Motion: sets temp to 21c between 6am and 9pm

  -*If no motion for 1 hour, set Tstat to 16c

 

-If any of my mini remotes, Mobilinc/Tasker OR !!TstatUP/DOWN, manually modifies temp...

  (they have a 23c button, and a +1 and -1 button)

  ...then obey that override for 30 minutes, then fall back to Motion set

  (above is done by setting/resetting a variable)

 

The only condition i need to fix is when the Tstat UP/DOWN is pressed

  (that is ALSO an override to obey for 30 minutes, in addition to above)

 

This would be VERY EASY if the Tstat up/down were captured for conditions to use!

 

/f

Link to comment

Basically:

*=Currently working

!!=Not working

 

-*If away_from_home var set, tstat 16c

 

-*Else, if home...

 

-*Timed: sets temp to 16c at night, 20c at 5am

 

-*Motion: sets temp to 21c between 6am and 9pm

  -*If no motion for 1 hour, set Tstat to 16c

 

-If any of my mini remotes, Mobilinc/Tasker OR !!TstatUP/DOWN, manually modifies temp...

  (they have a 23c button, and a +1 and -1 button)

  ...then obey that override for 30 minutes, then fall back to Motion set

  (above is done by setting/resetting a variable)

 

The only condition i need to fix is when the Tstat UP/DOWN is pressed

  (that is ALSO an override to obey for 30 minutes, in addition to above)

 

This would be VERY EASY if the Tstat up/down were captured for conditions to use!

 

/f

 

Sorry, but it just isn't a doable thing as the hardware is setup.  The closest I can come to making this happen would be to hack your thermostat and an Insteon remote on/off switch and wire it up such that a manual press of the up/down on the thermostat not only changes the thermostat per the usual contact closure inside the thermostat, but also it would have some wires that come off of those contacts and into your hacked Insteon switch.  Now pushing the up/down buttons will simultaneously send a "control on/off" from the remote switch for use in your programs.

Link to comment

This would be VERY EASY if the Tstat up/down were captured for conditions to use!

 

 

Basically:

*=Currently working

!!=Not working

 

-*If away_from_home var set, tstat 16c

 

-*Else, if home...

 

-*Timed: sets temp to 16c at night, 20c at 5am

 

-*Motion: sets temp to 21c between 6am and 9pm

  -*If no motion for 1 hour, set Tstat to 16c

 

-If any of my mini remotes, Mobilinc/Tasker OR !!TstatUP/DOWN, manually modifies temp...

  (they have a 23c button, and a +1 and -1 button)

  ...then obey that override for 30 minutes, then fall back to Motion set

  (above is done by setting/resetting a variable)

 

The only condition i need to fix is when the Tstat UP/DOWN is pressed

  (that is ALSO an override to obey for 30 minutes, in addition to above)

 

This would be VERY EASY if the Tstat up/down were captured for conditions to use!

 

/f

 

I don't quite get it -- it seems to me you have the tools here:

 

1) You know when the thermostat changes by using the If X or if Not X

 

2) You CAN know when anything OTHER than the T-Stat changes the setting because each of those other methods can be tracked or modified to self-report as the actions involve a program or scene that you can either reprogram or watch externally.  What you may need is an intermediary for those other options, like a program for up, and a program for down, or a variable that represents current set point and programed responses to a change to said variable.

 

3)  Any status change that is not made by another method must be a tstat button press.

Link to comment

I don't quite get it -- it seems to me you have the tools here:

 

1) You know when the thermostat changes by using the If X or if Not X

 

2) You CAN know when anything OTHER than the T-Stat changes the setting because each of those other methods can be tracked or modified to self-report as the actions involve a program or scene that you can either reprogram or watch externally.  What you may need is an intermediary for those other options, like a program for up, and a program for down, or a variable that represents current set point and programed responses to a change to said variable.

 

3)  Any status change that is not made by another method must be a tstat button press.

 

Yes, that is what I suggested in my first post.  You will need to look at every way the thermostat can be changed (excluding a manual button press) and figure out how to programmatically rule all of them out as the current change.  How doable that is will depend on all the various things controlling the thermostat.  

 

If, the only way the thermostat changs is via 

1) manual button press

2) ISY programs

 

Then you only need to rule out ISY programs.  That is not impossible.  but there will be some slop in there because you will need to put delays in there.  When an ISY program runs that changes the thermostat, you can have it set a varialbe indicating a recent program change to the thermostat.  That variable being set could be part of the "if" clause of any program you want to run/not run during that time out.  The variable could be set to 1 and then after maybe 10 seconds go back to zero.  But, that doesn't rule out the possibility that someone manually changes the thermostat during those 10 seconds.

 

You must have a delay, becauese a program changing the the thermostat will take a second or two to register on the thermostat and then a couple seconds to register that change back to ISY status.

Link to comment

Yes, that is what I suggested in my first post.  You will need to look at every way the thermostat can be changed (excluding a manual button press) and figure out how to programmatically rule all of them out as the current change.  How doable that is will depend on all the various things controlling the thermostat.  

 

If, the only way the thermostat changs is via 

1) manual button press

2) ISY programs

 

Then you only need to rule out ISY programs.  That is not impossible.  but there will be some slop in there because you will need to put delays in there.  When an ISY program runs that changes the thermostat, you can have it set a varialbe indicating a recent program change to the thermostat.  That variable being set could be part of the "if" clause of any program you want to run/not run during that time out.  The variable could be set to 1 and then after maybe 10 seconds go back to zero.  But, that doesn't rule out the possibility that someone manually changes the thermostat during those 10 seconds.

 

You must have a delay, becauese a program changing the the thermostat will take a second or two to register on the thermostat and then a couple seconds to register that change back to ISY status.

Well the one monkey in the wrench is changing the device status directly through mobilinc, which would need to be changed to modifying a variable or tempUp/TempDown programs.

 

 

That said, I don't follow the logic of the usage.  Where are the motion detectors?  Do they see someone at the thermostat?

 

If you are home and there is motion between 6 and 9 the temp goes from 20 to 21, then after an hour it drops to 16.  If there was no motion it would stay 20 all day. If someone manually changes it, it only stays changed for 30 minutes?  Then goes back to what?  What if the change was by mobilinc and there had been no motion?

 

I think the key here will be modifying the motion detector responses to be more complex.

Link to comment

Well the one monkey in the wrench is changing the device status directly through mobilinc, which would need to be changed to modifying a variable or tempUp/TempDown programs.

 

 

That said, I don't follow the logic of the usage.  Where are the motion detectors?  Do they see someone at the thermostat?

 

If you are home and there is motion between 6 and 9 the temp goes from 20 to 21, then after an hour it drops to 16.  If there was no motion it would stay 20 all day. If someone manually changes it, it only stays changed for 30 minutes?  Then goes back to what?  What if the change was by mobilinc and there had been no motion?

 

I think the key here will be modifying the motion detector responses to be more complex.

 

Yes.  When you come out of that 30 minute or 60 minute "holding" pattern after a manual change, what then?  You may need to do some "run if" or "run thens" to other programs that would have been blocked from running during the time out.

 

And if indeed you are changing from mobile linc (or the admin console, or any other non-isy program), then you have issues.  It would be hard to streamline that for the user.  You could use v5 of ISY firmware and instead of setting the thermostat, set a variable, that then triggers a program to run setting the temp to the variable, but now the user has to change a variable, not a thermostat.  There would be a low WAF in that (wife acceptance factor).

Link to comment
I have a manual set to 16c at 5:55am. (should have been in the orig post)

I normally don't use Mobilinc directly, but use its plug to Tasker, and runs program via icon for 23c and +1 and -1.

 

The motion drive program; (complimentary separated right now for troubleshooting)...

(If we head out for a few hours, it drops to 16c till we are back)

 

We have ONE (of 3)  motion sensor that covers a big area with frequent traffic.

 

 

 

===== ===== ===== =====


Motion3-A-If-OFF - [iD 00A4][Parent 0001]

 

If

        Status  'ZZZ1-DO-NOT-USE / MOTION-SENSORS / Motion3-Sensor' is Off

    And $s.AwayFromHome is 0

    And From     6:00:00AM

        To       9:00:00PM (same day)

 

Then

        Stop program 'Motion3-A-If-ON'

        $s.Motion3CounterOFF += 1

        Set 'Tstat-Main' 21° (Heat Setpoint)

        Wait  60 minutes 

        Set 'Tstat-Main' 16° (Heat Setpoint)

 

Else

   - No Actions - (To add one, press 'Action')

 

Stop Program is to stop the OTHER 'Motion3-A-If" from running, so BOTH are not running at same time

 


===== ===== ===== =====


Motion3-A-If-ON - [iD 00A5][Parent 0001]

 

If

        Status  'ZZZ1-DO-NOT-USE / MOTION-SENSORS / Motion3-Sensor' is On

    And $s.AwayFromHome is 0

    And From     6:00:00AM

        To       9:00:00PM (same day)

 

Then

        Stop program 'Motion3-A-If-OFF'

        $s.Motion3CounterON += 1

        Set 'Tstat-Main' 21° (Heat Setpoint)

        Wait  60 minutes 

        Set 'Tstat-Main' 16° (Heat Setpoint)

 

Else

   - No Actions - (To add one, press 'Action')

 

Stop Program is to stop the OTHER 'Motion3-A-If" from running, so BOTH are not running at same time

 


===== ===== ===== =====
 

Link to comment

What are you using the motionCounters for? Something in another set of programs?

 

Why do you set to 20c at 5am and back to 16 at 5:55?

 

Can you describe without code what you want to have happen when the temp changes manually? Are you trying to catch people fiddling with temp or trying to allow and persist a manual change beyond the normal time out?

Link to comment

just reporting back, this didn't work for me...

 

As mentioned above, "ANY" change to the Tstat triggers the if condition... so it creates circular logic, because, say i have the Tstat change to 20c at 6am, that in turn unintentionally fires off the "if button pushed" logic i currently have, disables the motion, waits for x minutes, then enables, then when motion sensed, it triggers the Tstat to change, which then disables the motions for x time again,  blah blah.

 

So, is the problem that the Tstat up/down does not report that to the ISY, or is it that the ISY is currently not capturing that activity?

It sure would be nice if that up/down could trigger a condition!! (could even do things like "if pressed up 3 times in 5 seconds" type logic, etc.)

 

I guess for now, i'll have to put a couple of big wads of DUCT TAPE over the buttons on the Tstat, so nobody uses them.

 

Won't my wife and friends be impressed!

 

/f

Fred.

 

For what I am thinking you are trying to accomplish and IF you have v5.0.10....we told you incorrectly in the logic of the first few suggestions.

 

You could set a variable at the desired stat setpoint. 

Then in program logic set a condition NOT equal to that setpoint variable.

Now you shouldn't get the program retriggering every time the stat setpoint gets reset back to what you want.

 

This could be done with a separate program for each temperature and enabled for which is desired, if not v5.x

 

You would have to watch out for your Else section, and not use it.

 

If

....stat.temp is NOT $setpoint

 

Then

....set it to the $setpoint again

 

Else

....this is going to trigger after correction each time = avoid coding here.

 

 

Now Then section (correcting it) will run ONLY when the stat doesn't match the $setpoint variable.

Link to comment

Archived

This topic is now archived and is closed to further replies.


×
×
  • Create New...