Page 1 of 1

Trouble with delayed start after water change.

Posted: Sat Jul 06, 2013 4:34 pm
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);

Re: Trouble with delayed start after water change.

Posted: Tue Jul 09, 2013 11:51 am
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..)

Re: Trouble with delayed start after water change.

Posted: Tue Jul 09, 2013 12:10 pm
by Sacohen
Thank you. I'll try that and see how it works.
I may not get to it until the weekend.

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 10:22 am
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.

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 10:26 am
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.

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 10:32 am
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);

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 10:47 am
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.

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 11:30 am
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...

Re: Trouble with delayed start after water change.

Posted: Mon Jul 15, 2013 11:39 am
by Sacohen
Thanks again. I'll try to test it tonight.

Re: Trouble with delayed start after water change.

Posted: Tue Jul 16, 2013 5:44 am
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.

Re: Trouble with delayed start after water change.

Posted: Tue Jul 16, 2013 7:40 am
by lnevo
Cool.

Re: Trouble with delayed start after water change.

Posted: Tue Jul 16, 2013 7:49 am
by Sacohen
Thanks again, man.
I really appreciate your help.