Emergency Water Level Routine

Do you have a question on how to do something.
Ask in here.
Post Reply
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Emergency Water Level Routine

Post by Smotz »

All,

Got some flawed code here I was hoping I can get some insight on.

Code: Select all

// EMERGENCY SUMP WATER LEVEL BELOW 20%
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 )
    {
    ReefAngel.Relay.Off(Return);
    ReefAngel.Relay.Off(Skimmer);
    ReefAngel.Relay.Off(UVlight);
    ReefAngel.Relay.Off(Feeder);
    ReefAngel.Relay.On(Fugelight);
    }
This code works by design but what happens is the return turns off and the sump fills up making the condition not true anymore - restarting the system. Is there a flag I can set that says "Stay Off" ?
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Emergency Water Level Routine

Post by rimai »

declare a new variable above setup()

Code: Select all

boolean LowSump=false;
then, in loop, check for wl<20 and assign true to LowSump and then check is LowSump is true to turn off stuf

Code: Select all

if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 ) LowSump=true;
if (LowSump)
{
    ReefAngel.Relay.Off(Return);
    ReefAngel.Relay.Off(Skimmer);
    ReefAngel.Relay.Off(UVlight);
    ReefAngel.Relay.Off(Feeder);
    ReefAngel.Relay.On(Fugelight);
}
You will need to come up with a solution to put LowSump back to false or reboot the controller.

One other way to do it is to mask the ports off, instead of turning them off.

Code: Select all

  // EMERGENCY SUMP WATER LEVEL BELOW 20%
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 )
    {
    ReefAngel.Relay.Override(Return,0);
    ReefAngel.Relay.Override(Skimmer,0);
    ReefAngel.Relay.Override(UVlight,0);
    ReefAngel.Relay.Override(Feeder,0);
    ReefAngel.Relay.Override(Fugelight,1);
    }
Roberto.
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: Emergency Water Level Routine

Post by Smotz »

rimai wrote:declare a new variable above setup()

Code: Select all

boolean LowSump=false;
then, in loop, check for wl<20 and assign true to LowSump and then check is LowSump is true to turn off stuf

Code: Select all

if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 ) LowSump=true;
if (LowSump)
{
    ReefAngel.Relay.Off(Return);
    ReefAngel.Relay.Off(Skimmer);
    ReefAngel.Relay.Off(UVlight);
    ReefAngel.Relay.Off(Feeder);
    ReefAngel.Relay.On(Fugelight);
}
You will need to come up with a solution to put LowSump back to false or reboot the controller.

One other way to do it is to mask the ports off, instead of turning them off.

Code: Select all

  // EMERGENCY SUMP WATER LEVEL BELOW 20%
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 )
    {
    ReefAngel.Relay.Override(Return,0);
    ReefAngel.Relay.Override(Skimmer,0);
    ReefAngel.Relay.Override(UVlight,0);
    ReefAngel.Relay.Override(Feeder,0);
    ReefAngel.Relay.Override(Fugelight,1);
    }

Thanks dude. I think I like the override method.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Emergency Water Level Routine

Post by lnevo »

The nice thing about the override instead of off is that the boolean can return to false (or as in robertos example, eliminated) when the pump shuts off but the pumps stay off until you can intervene.
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: Emergency Water Level Routine

Post by Smotz »

Looks like the override is happening when I do a water change and the level gets low. Can someone help me skip this routine in water change mode?

Code: Select all

// EMERGENCY SUMP WATER LEVEL BELOW 20%
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 )
    {
    ReefAngel.Relay.Override(Return,0);
    ReefAngel.Relay.Override(Skimmer,0);
    ReefAngel.Relay.Override(UVlight,0);
    ReefAngel.Relay.Override(Feeder,0);
    ReefAngel.Relay.Override(Fugelight,1);
    }
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Emergency Water Level Routine

Post by lnevo »

and this as a condition to your if statement

Code: Select all

ReefAngel.DisplayedMenu!=WATERCHANGE_MODE
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: Emergency Water Level Routine

Post by Smotz »

Sorry dude. Can you explain like I'm 5? What do you mean add a condition? am I doing && or something like that?
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Emergency Water Level Routine

Post by lnevo »

Yep

Code: Select all

    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 && ReefAngel.DisplayedMenu!=WATERCHANGE_MODE)
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: Emergency Water Level Routine

Post by Smotz »

lnevo wrote:Yep

Code: Select all

    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 && ReefAngel.DisplayedMenu!=WATERCHANGE_MODE)
You rock, as always - thanks!
Smotz
Posts: 412
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: Emergency Water Level Routine

Post by Smotz »

lnevo wrote:Yep

Code: Select all

    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 && ReefAngel.DisplayedMenu!=WATERCHANGE_MODE)
A follow up - After this code, I noticed that these port go in to override when the RA reboots. I think I know why - I read on another post that when booting the water level sensor is set to 0 for a split second.

I adjusted the code like this - what do you think?

Code: Select all

// EMERGENCY SUMP WATER LEVEL BELOW 20% AND WATERCHANGE MODE IS NOT ON AND WAIT FOR CONTROLLER TO BE ON FOR 1 SECOND
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 20 && ReefAngel.DisplayedMenu!=WATERCHANGE_MODE && millis() > 1000)
    {
    ReefAngel.Relay.Override(Return,0);
    ReefAngel.Relay.Override(Skimmer,0);
    ReefAngel.Relay.Override(UVlight,0);
    ReefAngel.Relay.Override(Feeder,0);
    ReefAngel.Relay.Override(Fugelight,1);
    ReefAngel.Relay.Override (Vacation_Topoff,0);
    }
// END EMERGENCY WATER LEVEL ROUTINE
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Emergency Water Level Routine

Post by lnevo »

That's fine. You could still get it if the sensor blinks at all though. This way you're running it a little less frequently and so the chances are greatly reduced...
rimai
Posts: 12881
Joined: Fri Mar 18, 2011 6:47 pm

Re: Emergency Water Level Routine

Post by rimai »

That's what I was going to recommend, but looks like you got it :)
Roberto.
Post Reply