Newbie Code Q: Using Defer and two virtual outlets

mike550

Valuable Member
View Badges
Joined
Oct 13, 2019
Messages
2,269
Reaction score
2,328
Location
Chicago
Rating - 0%
0   0   0
Hello Apex gurus,

I’m trying to get my head around Apex programming and using the Defer statement. Right now, I’ve created (or shamelessly copied from @SuncrestReef — thank you) the following code for my return pump:

If Output Maintenance = ON then OFF
Defer 000:05 Then OFF


The use of the Defer statement is so that my ATO (Tunze) turns off before the pump so I don’t trip the ATO alarm as the sump fills with water. But here is my question, if I create another virtual outlet “Emergency” and want it to turn off the pump it would look like this.

If Output Maintenance = ON then OFF
Defer 000:05 Then OFF
If Output Emergency = ON then OFF


If I understand the Apex DEFER code correctly, it will be used regardless of where it lines up in the code. So basically even if Emergency = ON the pump will still wait 5 seconds before turning off. Is that correct? Is there a simple way around this?

Thanks in advance!
 

SuncrestReef

That Apex guy
View Badges
Joined
Jan 18, 2018
Messages
4,214
Reaction score
8,688
Location
Oregon
Rating - 0%
0   0   0
Yes, Defer is applied after all conditions have been evaluated. To get around this for your particular situation, create an additional virtual output for the return pump where you can place the Defer delay rather than on the pump itself:

[Pump_Maint] — virtual output
Set OFF
If Output Maintenance = ON Then ON
Defer 000:05 Then ON

[Pump]
Fallback ON
Set ON
If Output Pump_Maint = ON Then OFF
If Output Emergency = ON Then OFF
 
OP
OP
M

mike550

Valuable Member
View Badges
Joined
Oct 13, 2019
Messages
2,269
Reaction score
2,328
Location
Chicago
Rating - 0%
0   0   0
Yes, Defer is applied after all conditions have been evaluated. To get around this for your particular situation, create an additional virtual output for the return pump where you can place the Defer delay rather than on the pump itself:

[Pump_Maint] — virtual output
Set OFF
If Output Maintenance = ON Then ON
Defer 000:05 Then ON

[Pump]
Fallback ON
Set ON
If Output Pump_Maint = ON Then OFF
If Output Emergency = ON Then OFF
Thanks for this. So basically like a subroutine for the Defer code. Much appreciated.
 

TOP 10 Trending Threads

Back
Top