Issue with [device in state for] less than [time] condition

i am trying to create a condition that is valid for less than 60 minutes
for testing purposes i am using less than 60 seconds

i would like a wall switch to activate the condition if “off” for less than 60 seconds
the expected outcome is that when the switch is off
the condition is active, but after 60 seconds
the condition is no longer active, even though the switch is off

when i set the condition to activate on light switch off and additional condition of less than 60
it states the trigger is active but never activates “turn green”, it stays grey
after 60 seconds it stays gray

i’m pretty certain this is a bug

if i set it to more than 60 seconds
and set the condition to not =
it works but wont give what i am looking for
also when you change it from at least to less than and save
it simply will not change
you must delete the condition and start over

Logic Summary?

ok so i was oversiplifying the contition because i was focusing on just the component that did not work
below is the full logic summary

essentially i auto control the fan based on occupancy and temp
but if manually turned off
i want to ignore the auto conditions for 1 hour
i am currently using 60 seconds for testing
so right now i have a group set to not and
in the group i have the fan set true if status is 0 for less than 60 seconds
you would expect that condition to be true the first 60 seconds its off
then not be true
the group would then be opposite as its “not and”
however the second the fan is off, the condition is true but grey “not active”
and never changes

*************************************************** REACTOR LOGIC SUMMARY REPORT ***************************************************
   Version: 3.2 config 301 cdata 19082 ui 19143 pluginDevice 409
    System: Vera version 1.7.4454 on Sercomm G550; loadtime 1563033049; systemReady 1563033122; Lua 5.1
Local time: 2019-07-13T16:32:31-0400; DST=1
House mode: plugin 1; system 1; tracking on
  Sun data: {}
  Geofence: running in quick mode, last update 07-12.15:15:00, data version 2
            User 1460821 ishome=1 inlist= since=07-05.17:19:00
            |    1 "286 Tulip Crescent" type="home" status="in" since=05-06.17:18:00
            User 1197612 ishome=1 inlist= since=07-12.15:15:00
            |130048 "286 Tulip Crescent" type="home" status="in" since=05-06.16:43:00
            |130049 "Work" type="other" status="out" since=05-06.16:43:00
            User 2440042 ishome=0 inlist= since=04-24.15:01:00
            |    1 "286 Tulip Crescent" type="home" status="in" since=03-24.21:00:00
            User 2440032 ishome=0 inlist= since=04-24.15:01:00
            |    1 "286 Tulip Crescent" type="home" status="in" since=04-21.22:15:00
            Raw: { "updated": 1563049920, "users_settings": [ { "id": 1197612, "ishome": 1 }, { "id": 1460821, "ishome": 1 } ], "mode": 1 }
     Power: utility, battery level 92
====================================================================================================================================
Reactor Sensor 21 (#481) tripped
    Version 19082.53 07/13/19 16:32:01
    Message/status: Tripped
    Condition group "Reactor Sensor 21" (AND) TRUE as of 16:32:03 <root>
      &-T-group "Manual Off" (NOT AND) TRUE as of 16:32:03 <grpfhxcrxg>
      |     &-F-service Dining Fan (313) urn:upnp-org:serviceId:SwitchPower1/Status = 0 for lt 60s [1 => 0 at 16:31:49; T/F as of 16:31:49/16:31:49] <condfi6jxyn>
      &-T-group "grpfhx6sgm" (AND) TRUE as of 12:01:48 <grpfhx6sgm>
      |     &-T-housemode in 1,3 [1 at 12:01:48; T/T as of 12:01:48/12:01:48] <condfhx7dfb>
      &-T-group "grpfhx8a9r" (AND) TRUE as of 15:15:11 <grpfhx8a9r>
      |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature > 23 [24.6 => 24.5 at 16:31:59; T/T as of 12:44:53/12:44:53] <condfhx8hpw>
      |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 25 [24.6 => 24.5 at 16:31:59; T/T as of 15:15:11/15:15:11] <condfhxascu>
    Events
        07/13/19 16:28:01 devicewatch: device=313, old="100", name=Dining Fan, var=urn:upnp-org:serviceId:Dimming1/LoadLevelStatus, new="0"
        07/13/19 16:28:02 condchange: newState=false, cond=condfi6jxyn, oldState=true
        07/13/19 16:28:02 evalchange: newState=true, cond=condfi6jxyn, oldState=false
        07/13/19 16:28:02 condchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:28:02 evalchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:28:02 condchange: newState=false, cond=root, oldState=true
        07/13/19 16:28:02 evalchange: newState=false, cond=root, oldState=true
        07/13/19 16:28:02 sensorstate: state=false
        07/13/19 16:28:58 devicewatch: device=361, old="24.7", name=Dining Temp, var=urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature, new="24.6"
        07/13/19 16:29:44 configchange: 
        07/13/19 16:29:45 condchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:29:45 evalchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:29:45 condchange: newState=true, cond=root, oldState=false
        07/13/19 16:29:45 evalchange: newState=true, cond=root, oldState=false
        07/13/19 16:29:45 sensorstate: state=true
        07/13/19 16:30:04 configchange: 
        07/13/19 16:30:38 configchange: 
        07/13/19 16:30:39 condchange: newState=true, cond=condfi6jxyn, oldState=false
        07/13/19 16:31:09 configchange: 
        07/13/19 16:31:10 evalchange: newState=false, cond=condfi6jxyn, oldState=true
        07/13/19 16:31:10 condchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:31:10 evalchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:31:10 condchange: newState=false, cond=root, oldState=true
        07/13/19 16:31:10 evalchange: newState=false, cond=root, oldState=true
        07/13/19 16:31:10 sensorstate: state=false
        07/13/19 16:31:26 devicewatch: device=313, old="0", name=Dining Fan, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="1"
        07/13/19 16:31:26 devicewatch: device=313, old="0", name=Dining Fan, var=urn:upnp-org:serviceId:Dimming1/LoadLevelStatus, new="100"
        07/13/19 16:31:27 condchange: newState=false, cond=condfi6jxyn, oldState=true
        07/13/19 16:31:27 evalchange: newState=true, cond=condfi6jxyn, oldState=false
        07/13/19 16:31:27 condchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:31:27 evalchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:31:27 condchange: newState=true, cond=root, oldState=false
        07/13/19 16:31:27 evalchange: newState=true, cond=root, oldState=false
        07/13/19 16:31:27 sensorstate: state=true
        07/13/19 16:31:48 devicewatch: device=313, old="1", name=Dining Fan, var=urn:upnp-org:serviceId:SwitchPower1/Status, new="0"
        07/13/19 16:31:48 devicewatch: device=313, old="100", name=Dining Fan, var=urn:upnp-org:serviceId:Dimming1/LoadLevelStatus, new="0"
        07/13/19 16:31:49 condchange: newState=true, cond=condfi6jxyn, oldState=false
        07/13/19 16:31:49 evalchange: newState=false, cond=condfi6jxyn, oldState=true
        07/13/19 16:31:49 condchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:31:49 evalchange: newState=false, cond=grpfhxcrxg, oldState=true
        07/13/19 16:31:49 condchange: newState=false, cond=root, oldState=true
        07/13/19 16:31:49 evalchange: newState=false, cond=root, oldState=true
        07/13/19 16:31:49 sensorstate: state=false
        07/13/19 16:31:58 devicewatch: device=361, old="24.6", name=Dining Temp, var=urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature, new="24.5"
        07/13/19 16:32:02 configchange: 
        07/13/19 16:32:03 condchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:32:03 evalchange: newState=true, cond=grpfhxcrxg, oldState=false
        07/13/19 16:32:03 condchange: newState=true, cond=root, oldState=false
        07/13/19 16:32:03 evalchange: newState=true, cond=root, oldState=false
        07/13/19 16:32:03 sensorstate: state=true

i just tried to purposely enter incorrect info
as i remembered an issue elsewhere that 0 is interpreted as 1 and vise versa
off is on and on is off

the condition then reports false but turns green
very odd

if it helps i can remove all other object and proceed with only the manual off group for testing

OK. So the first thing is that the “sustained for” with “less than” does not mean the condition will be true until the specified period expires. If you specify “sustained for less than 60 seconds”, that does not mean the condition will be true for 60 seconds when matched and then go false. It means that if the condition matches for less than 60 seconds, the condition will then go true. This would be used to detect a short transition on a device, like a switch that is turned on and then back off for less than 15 seconds to (for example) trigger an action to turn off all the lights in a room. That’s not a bug, that’s the way it’s intended to work.

I think your bigger challenge here is differentiating manual control of the fan from the automatic on/off by the unit’s own controls. I’d assert that checking fan state alone isn’t going to get you there. But, if that’s the oversimplification you are talking about, you’re well aware of this.

Unfortunately, I have guests about to walk through the door and I’ll be tied up the rest of the night, so I don’t have time to give you guidance on another method to get your delay. Let’s see if you come up with something before morning, and if not, I’ll chime in then.

thank you
will try other things
i think there is something else wrong though as i removed everything else
and the logic summary is still monitoring other objects

in the end i am trying to make group X false for 1hour when the off button is presses
after 1 hour, even if the switch is still of the group should return to true
i think the issue is that you have a delayed true but not a delayed false

i have come up with a solution
that works

an OR group
with 2 nested groups
1- not and
1- and

OR
|
- not and (fan off)
- and (fan off more than 1 hour)

the not and looks for the fan state to be 0
the and looks for the not and group to be true for more than 1 hour

the result is that the or group is valid if the fan is on (not and group false)
or the fan is off more than 1 hour (not and group more than 1 hour)
plus all other conditions

i do realize that its not a true manual off as if the automation turns it off, it will count as a manual off
but this is good enough for my needs, as if the room got cold enough to turn it off then it will take about an hour to get back to a temp requiring on anyways

i now have a single very elaborate reactor that replaces the 4 i had
plus accomodates for manual off periods

i’d be glad to share the logic summary if you want it
also, the dining room is slightly different from the 3 bedrooms

I think you’re on the right track. The simple timing part could look something like this:

Here I’m using a switch called “Door Control 1” but it can be any device, any test. In this case, I want the group to be true for 15 seconds when the switch is first turned on. In this AND group, the first condition looks at the state of the switch and tests if it is on. The second condition tests if it is off. Now, on its face, it would seem this group can never be true, because the switch can’t be on and off at the same time, so both conditions can never be true. But notice that the second condition has a delay reset of 15 seconds. The effect of this is that when the switch is turned on, instead of the second condition going false immediately because the switch is no longer off, it waits for 15 seconds before going false. For this 15 second period, both conditions are true, so the group state is true for that 15 second period. After the time period elapses, the second condition goes false and the group state follows, and everything remains steady state until the switch is turned off and the cycle begins again.

Yes, please share your logic. I think others would find it informative as well. I’m also going word-smith your post topic to make it a little more clear what the subject really is.

thanks for the info
i will try again
its funny, i did a delayed reset @ 60 seconds and it did not stop being active
perhaps it turned gray and i did not notice

do you want me to post the complete summary with geofence at top and change details at the bottom
or just the layout portion?

For illustrative purposes, and clarity for other readers, this is one of those cases where screen shots are probably preferable to the Logic Summary. But an LS redacted to just the conditions section would also work.

the screenshot is quite long
it would not fit on the screen

i will post the redacted summary in a moment

i just tried a delayed reset again
for the test i set the reset to 10 seconds
unfortunately it never stops being true

here is my redacted summary

DR Fan Detect (#481) tripped
    Version 19082.474 07/14/19 10:12:42
    Message/status: Tripped
    Condition group "DR Fan Detect" (AND) TRUE as of 01:23:04 <root>
      &-T-group "Not Manual Off" (OR) TRUE as of 01:16:54 <grpfiarsfv>
      |     |-T-group "Fan Off" (NOT AND) TRUE as of 01:26:13 <grpfiis1u8>
      |     |     &-F-service Dining Fan (313) urn:upnp-org:serviceId:SwitchPower1/Status = 0 [0 => 1 at 01:26:13; F/F as of 01:26:13/01:26:13] <condfigcryh>
      |     |-F-group "Delay" (AND) false as of 01:26:13 <grpfiixijz>
      |     |     &-F-grpstate DR Fan Detect (481) Fan Off (grpfiis1u8) isfalse [true at 01:26:13; F/F as of 01:26:13/01:26:13] <condfiixli8>
      &-T-group "Conditions" (AND) TRUE as of 01:23:04 <grpfib2syi>
      |     &-T-housemode in 1,3 [1 at 18:27:43; T/T as of 18:27:43/18:27:43] <condfib3lz6>
      |     &-T-group "Occupancy" (OR) TRUE as of 01:23:04 <grpfic4ozi>
      |     |     |-T-service Dining Occupancy (363) urn:micasaverde-com:serviceId:SecuritySensor1/Tripped = 1 [0 => 1 at 08:50:46; T/T as of 08:50:46/08:50:46] <condfib41y5>
      |     |     |-T-service Dining LR Occupancy (365) urn:micasaverde-com:serviceId:SecuritySensor1/Tripped = 1 [0 => 1 at 09:09:06; T/T as of 09:09:06/09:09:06] <condfinsuro>
      |     |     |-T-service LivingRoom Occupancy (367) urn:micasaverde-com:serviceId:SecuritySensor1/Tripped = 1 [0 => 1 at 09:09:06; T/T as of 09:09:06/09:09:06] <condfinu4td>
      |     |     |-T-service Kitchen Occupancy (455) urn:micasaverde-com:serviceId:SecuritySensor1/Tripped = 1 [0 => 1 at 08:35:27; T/T as of 08:35:27/08:35:27] <condfinu63w>
      |     |     |-T-group "Room and Fan Status" (AND) TRUE as of 01:26:13 <grpfiklez2>
      |     |     |     &-T-service Dining Fan (313) urn:upnp-org:serviceId:Dimming1/LoadLevelStatus > 0 [30 => 60 at 09:06:06; T/T as of 01:26:13/01:26:13] <condfid3wvk>
      |     |     |     &-T-group "ecobee Home State" (OR) TRUE as of 01:10:43 <grpfikm261>
      |     |     |     |     |-T-service ecobee home state (360) urn:ecobee-com:serviceId:Ecobee1/currentClimateRef = home [sleep => home at 08:02:03; T/T as of 08:02:03/08:02:03] <condfiddre6>
      |     |     |     |     |-F-service ecobee home state (360) urn:ecobee-com:serviceId:Ecobee1/currentClimateRef = sleep [sleep => home at 08:02:03; F/F as of 08:02:03/08:02:03] <condfibymha>
      |     |     |     |     |-F-service ecobee home state (360) urn:ecobee-com:serviceId:Ecobee1/currentClimateRef = smart1 [sleep => home at 08:02:03; F/F as of 22:53:16/22:53:16] <condfikjkyg>
      |     |     |     |     |-F-service ecobee home state (360) urn:ecobee-com:serviceId:Ecobee1/currentClimateRef = smart2 [sleep => home at 08:02:03; F/F as of 01:00:02/01:00:02] <condfikjm08>
      &-T-group "Temp" (OR) TRUE as of 01:23:04 <grpfibalrg>
      |     |-F-group "Minimum" (AND) false as of 08:14:15 <grpfik0pvx>
      |     |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 22 [23.7 => 23.8 at 10:10:09; T/T as of 00:57:02/00:57:02] <condfik1guh>
      |     |     &-F-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 22.5 [23.7 => 23.8 at 10:10:09; F/F as of 08:14:15/08:14:15] <condfikaswy>
      |     |     &-T-grpstate DR Fan Detect (481) Conditions (grpfib2syi) istrue [true at 01:23:04; T/T as of 01:23:04/01:23:04] <condfik1hq3>
      |     |     &-T-grpstate DR Fan Detect (481) Not Manual Off (grpfiarsfv) istrue [true at 01:16:54; T/T as of 01:16:54/01:16:54] <condfik1jy6>
      |     |-F-group "Low" (AND) false as of 09:06:02 <grpfibb4bw>
      |     |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 22.5 [23.7 => 23.8 at 10:10:09; T/T as of 08:14:15/08:14:15] <condfibbcb3>
      |     |     &-F-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 23 [23.7 => 23.8 at 10:10:09; F/F as of 09:06:02/09:06:02] <condfibcn5m>
      |     |     &-T-grpstate DR Fan Detect (481) Conditions (grpfib2syi) istrue [true at 01:23:04; T/T as of 01:23:04/01:23:04] <condficjs1d>
      |     |     &-T-grpstate DR Fan Detect (481) Not Manual Off (grpfiarsfv) istrue [true at 01:16:54; T/T as of 01:16:54/01:16:54] <condfijtzg8>
      |     |-T-group "Medium" (AND) TRUE as of 09:06:02 <grpfibc2z2>
      |     |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 23 [23.7 => 23.8 at 10:10:09; T/T as of 09:06:02/09:06:02] <condfibdwxj>
      |     |     &-T-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature < 24.5 [23.7 => 23.8 at 10:10:09; T/T as of 18:36:30/18:36:30] <condfibev06>
      |     |     &-T-grpstate DR Fan Detect (481) Conditions (grpfib2syi) istrue [true at 01:23:04; T/T as of 01:23:04/01:23:04] <condficic0t>
      |     |     &-T-grpstate DR Fan Detect (481) Not Manual Off (grpfiarsfv) istrue [true at 01:16:54; T/T as of 01:16:54/01:16:54] <condfiju9ss>
      |     |-F-group "High" (AND) false as of 18:36:30 <grpfibg18s>
      |     |     &-F-service Dining Temp (361) urn:upnp-org:serviceId:TemperatureSensor1/CurrentTemperature >= 24.5 [23.7 => 23.8 at 10:10:09; F/F as of 18:36:30/18:36:30] <condfibg80s>
      |     |     &-T-grpstate DR Fan Detect (481) Conditions (grpfib2syi) istrue [true at 01:23:04; T/T as of 01:23:04/01:23:04] <condficfo23>
      |     |     &-T-grpstate DR Fan Detect (481) Not Manual Off (grpfiarsfv) istrue [true at 01:16:54; T/T as of 01:16:54/01:16:54] <condfijugi1>

here is a screenshot at 33% zoom to see it all