Trouble with delayed start after water change.

Do you have a question on how to do something.
Ask in here.
Post Reply
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Trouble with delayed start after water change.

Post by Sacohen »

I put this line of code in thinking that it would keep my ATO port off for 10 min after a water change until I get the levels set just right.

Code: Select all

ReefAngel.Relay.DelayedOn( Port8,10 );
It didn't work.
Apparently the code for the Water Level Expansion Unit and the ATO override the code above.

Code: Select all

ReefAngel.WaterLevelATO(Port8,720,32,32); // Enable ATO the ATO
The delay comes before the Water Level code does it need to be reversed.

Current Code;

Code: Select all

void loop()
{
ReefAngel.StandardLights( Port1,12,0,22,0 );
ReefAngel.StandardLights( Port2,13,0,21,0 );
ReefAngel.Relay.Set( Port3, !ReefAngel.Relay.Status( Port1 ) );
ReefAngel.StandardLights( Port5,13,0,21,0 );
ReefAngel.Relay.Set(Port7,(now()-3600)%21600<1200); // Runs for 1200s every 21600 seconds
ReefAngel.Relay.Set(Port6,((now()-3600)-1200)%21600<1200); // Runs for 1200s every 21600 seconds with 1200s offset
ReefAngel.Relay.DelayedOn( Port8,10 );
ReefAngel.WaterLevelATO(Port8,720,32,32); // Enable ATO the ATO
if (ReefAngel.Relay.Status(Port7)) // Check to see if port 7 is on and update time is empty
{ 
ATOUpdate = now(); // If so, set the update time to now
} 

if (now() - ATOUpdate < 120) // If it hasnt been 120 seconds turn off the port
{ 
ReefAngel.WaterLevelATO(Port8,720,0,1);
}

  if (ReefAngel.DCPump.Mode==Custom)
  {
  ReefAngel.PWM.SetActinic( ElseMode(40,20,true ));// ElseMode on sync mode, 40 +/- 20%
  }
if( ReefAngel.DisplayedMenu==FEEDING_MODE ) ReefAngel.PWM.SetActinic(20);
if (hour()<12 || hour()>=22) ReefAngel.PWM.SetActinic(30);
Should it be this???

Code: Select all

void loop()
{
ReefAngel.StandardLights( Port1,12,0,22,0 );
ReefAngel.StandardLights( Port2,13,0,21,0 );
ReefAngel.Relay.Set( Port3, !ReefAngel.Relay.Status( Port1 ) );
ReefAngel.StandardLights( Port5,13,0,21,0 );
ReefAngel.Relay.Set(Port7,(now()-3600)%21600<1200); // Runs for 1200s every 21600 seconds
ReefAngel.Relay.Set(Port6,((now()-3600)-1200)%21600<1200); // Runs for 1200s every 21600 seconds with 1200s offset
ReefAngel.WaterLevelATO(Port8,720,32,32); // Enable ATO the ATO
if (ReefAngel.Relay.Status(Port7)) // Check to see if port 7 is on and update time is empty
{ 
ATOUpdate = now(); // If so, set the update time to now
} 

if (now() - ATOUpdate < 120) // If it hasnt been 120 seconds turn off the port
{ 
ReefAngel.WaterLevelATO(Port8,720,0,1);
}
ReefAngel.Relay.DelayedOn( Port8,10 );

  if (ReefAngel.DCPump.Mode==Custom)
  {
  ReefAngel.PWM.SetActinic( ElseMode(40,20,true ));// ElseMode on sync mode, 40 +/- 20%
  }
if( ReefAngel.DisplayedMenu==FEEDING_MODE ) ReefAngel.PWM.SetActinic(20);
if (hour()<12 || hour()>=22) ReefAngel.PWM.SetActinic(30);
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Trouble with delayed start after water change.

Post by lnevo »

You can't do that. You'll have to wrap the WaterLevelATO with an if statement. You can do something similar to how we time things after feeding modes...

Code: Select all

static time_t wcTimer;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
if (now()-wcTimer > 0 && now()-wcTimer < 600) {
 ReefAngel.Relay.Off(Port8);
} else {
  ReefAngel.WaterLevelATO(Port8,720,0,1);
}
You definitely do NOT want to use DelayedOn... That is an ALWAYS on port definition. (Except for the delay..)
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

Thank you. I'll try that and see how it works.
I may not get to it until the weekend.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

lnevo wrote:

Code: Select all

static time_t wcTimer;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
if (now()-wcTimer > 0 && now()-wcTimer < 600) {
 ReefAngel.Relay.Off(Port8);
} else {
  ReefAngel.WaterLevelATO(Port8,720,0,1);
}
This code didn't work.
I put it in here...

Code: Select all

void loop()
{
ReefAngel.StandardLights( Port1,12,0,22,0 );
ReefAngel.StandardLights( Port2,13,0,21,0 );
ReefAngel.Relay.Set( Port3, !ReefAngel.Relay.Status( Port1 ) );
ReefAngel.StandardLights( Port5,13,0,21,0 );
ReefAngel.Relay.Set(Port7,(now()-3600)%21600<1200); // Runs for 1200s every 21600 seconds
ReefAngel.Relay.Set(Port6,((now()-3600)-1200)%21600<1200); // Runs for 1200s every 21600 seconds with 1200s offset
ReefAngel.Relay.DelayedOn( Port8,10 );
ReefAngel.WaterLevelATO(Port8,720,32,32); // Enable ATO the ATO
if (ReefAngel.Relay.Status(Port7)) // Check to see if port 7 is on and update time is empty
{ 
ATOUpdate = now(); // If so, set the update time to now
} 

if (now() - ATOUpdate < 120) // If it hasnt been 120 seconds turn off the port
{ 
static time_t wcTimer;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
if (now()-wcTimer > 0 && now()-wcTimer < 600) {
 ReefAngel.Relay.Off(Port8);
} else {
  ReefAngel.WaterLevelATO(Port8,720,0,1);
}

  if (ReefAngel.DCPump.Mode==Custom)
  {
  ReefAngel.PWM.SetActinic( ElseMode(40,20,true ));// ElseMode on sync mode, 40 +/- 20%
  }
if( ReefAngel.DisplayedMenu==FEEDING_MODE ) ReefAngel.PWM.SetActinic(20);
if (hour()<12 || hour()>=22) ReefAngel.PWM.SetActinic(30);
Should it actually be

Code: Select all

static time_t wcTimer;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
if (now()-wcTimer > 0 && now()-wcTimer < 600) {
 ReefAngel.Relay.Off(Port8);
} else {
  ReefAngel.WaterLevelATO(Port8,720,32,32);
}
The Water level is at 29 now and the ATO has not kicked in since Saturday around 11am.
I think I inserted the code Sunday morning.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Trouble with delayed start after water change.

Post by lnevo »

It should not be wrapped in any other if statement. The previous DelayedOn and WaterLevel ATO need to be taken out. Please try again and post your whole code.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Trouble with delayed start after water change.

Post by lnevo »

Try this:

void loop()
{
ReefAngel.StandardLights( Port1,12,0,22,0 );
ReefAngel.StandardLights( Port2,13,0,21,0 );
ReefAngel.Relay.Set( Port3, !ReefAngel.Relay.Status( Port1 ) );
ReefAngel.StandardLights( Port5,13,0,21,0 );
ReefAngel.Relay.Set(Port7,(now()-3600)%21600<1200); // Runs for 1200s every 21600 seconds
ReefAngel.Relay.Set(Port6,((now()-3600)-1200)%21600<1200); // Runs for 1200s every 21600 seconds with 1200s offset
// ReefAngel.Relay.DelayedOn( Port8,10 );
// ReefAngel.WaterLevelATO(Port8,720,32,32); // Enable ATO the ATO

// Delay WL ATO after water change.
static time_t wcTimer;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
if (now()-wcTimer > 0 && now()-wcTimer < 600) {
ReefAngel.WaterLevelATO(Port8,720,0,1);
} else {
ReefAngel.WaterLevelATO(Port8,720,32,32);
}

if (ReefAngel.Relay.Status(Port7)) // Check to see if port 7 is on and update time is empty
{
ATOUpdate = now(); // If so, set the update time to now
}

if (now() - ATOUpdate < 120) // If it hasnt been 120 seconds turn off the port
{
ReefAngel.WaterLevelATO(Port8,720,0,1);
}

if (ReefAngel.DCPump.Mode==Custom)
{
ReefAngel.PWM.SetActinic( ElseMode(40,20,true ));// ElseMode on sync mode, 40 +/- 20%
}
if( ReefAngel.DisplayedMenu==FEEDING_MODE ) ReefAngel.PWM.SetActinic(20);
if (hour()<12 || hour()>=22) ReefAngel.PWM.SetActinic(30);
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

Thanks Lee. I Will try to get to it tonight, but I usually like to do this on the weekend so I can be home to watch was is happening or not happening when it is supposed to.

Thanks again for all your help.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Trouble with delayed start after water change.

Post by lnevo »

Yeah, I saw your code and remembered the complex setup we had for you :)

I changed the Relay.Off line also to be like we did for your other stuff...
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

Thanks again. I'll try to test it tonight.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

I have not put the new code you gave me in. I went home last night and the water level is where it should be and there is water being removed from the ATO container so it apparently is working correctly, but the time the ATO pump is on is so short that it is not registering on the Portal Relay Activity.

I actually heard the ATO pump kick in this morning, so that confirms that it is adding water when needed.
User avatar
lnevo
Posts: 5430
Joined: Fri Jul 20, 2012 9:42 am

Re: Trouble with delayed start after water change.

Post by lnevo »

Cool.
User avatar
Sacohen
Posts: 1833
Joined: Sun Apr 21, 2013 6:25 am
Location: Davie, FL

Re: Trouble with delayed start after water change.

Post by Sacohen »

Thanks again, man.
I really appreciate your help.
Post Reply