Page 1 of 1
ATO Reservoir refill every few days
Posted: Mon Feb 15, 2016 8:47 pm
by Spotted
Is there a way to run an ATO reservoir fill cycle every few days instead of based on float switches? How can I run it like every 3 days? Is there a way to do that?
I currently run it manually with a 12V solenoid, but I want to automate it. I mean that is the purpose of my tank computer, right?
Re: ATO Reservoir refill every few days
Posted: Mon Feb 15, 2016 9:08 pm
by lnevo
Yes I just shared my function with someone else in this thread.
http://forum.reefangel.com/viewtopic.php?t=5896#p51479
It relies on the water level sensor to know when to fill and when to stop. Without float switches how will you know? You could rely on a float valve to stop your RO/DI and just go for a specific time. Let me know, we can modify that code pretty easily.
Re: ATO Reservoir refill every few days
Posted: Thu Feb 18, 2016 4:51 pm
by Spotted
Yes that's my current set up. I have a float valve on the feed line to my reservoir. Right now I turn on the RO/DI port ,it fills and after a few hours, or days, whenever I remember to shut it off,I shut it off.
I was just thinking fill the tank every 3 days. Just run the RO/DI for X hours then wait another 3 days and refill again.
ATO Reservoir refill every few days
Posted: Thu Feb 18, 2016 6:08 pm
by lnevo
Yeah that works. What time do you want it to kick in? You gonna manually turn it off still or do you want it to turn off after a set time?
Edit: nvm you said x hours.
Re: ATO Reservoir refill every few days
Posted: Fri Feb 19, 2016 6:55 pm
by Spotted
11PM would be a good time
Re: ATO Reservoir refill every few days
Posted: Sun Feb 21, 2016 8:46 am
by lnevo
This should do it.
Code: Select all
// Set this to the port your solenoid is on.
#define ROSolenoid Port5
void RefillATO() {
static boolean refillActive=false; // Flag to determine if we've initiated the refill.
static time_t startedAt=0;
byte startAt=23;
byte runFor=6;
byte runEvery=3;
if ( now()+(startAt*SECS_PER_HOUR) % (runEvery*SECS_PER_DAY)==0 ) {
ReefAngel.Relay.Override(ROSolenoid,1); // We turn on the solenoid port.
startedAt=now();
refillActive=true;
}
if ( now()-startedAt == runFor*SECS_PER_HOUR && refillActive) {
ReefAngel.Relay.Override(ROSolenoid,0); // Back to automatic mode
refillActive=true;
startedAt=0;
}
}
Let us know how it goes.
Re: ATO Reservoir refill every few days
Posted: Tue Feb 23, 2016 8:04 pm
by Spotted
Ok, I really appreciate the help, but I need a little bit more. I'm not sure where to put the code into my code.
So, here's my code.
Thanks in advance.
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <PAR.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port1Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On( Port3 ); //Sump Powerhead. Main Relay Port 3
ReefAngel.Relay.On( Port4 );//Display Lights
ReefAngel.Relay.On( Port5 ); //Display Tank Power Heads MaiRelay Port 5
ReefAngel.Relay.On( Port8 ); //Return Pump Relay 1 Port 8
ReefAngel.Relay.On( Box1_Port1 ); //ATS Air Pump. Relay 2 Port 1
ReefAngel.Relay.On( Box1_Port2 ); //Media Reactor. Relay 2 Port 2
ReefAngel.Relay.On( Box1_Port3 ); //Aqualifter. Relay 2 Port 3
ReefAngel.Relay.Off( Box2_Port8 );//Referencing Relay 3
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATOLow( Port1 );
ReefAngel.Relay.DelayedOn( Port7 ); //Skimmer Relay 1 Port 7
ReefAngel.MHLights( Box1_Port4 ); //ATS Light Relay 2 Port 4
ReefAngel.DCPump.UseMemory = true; //ignore programming and use memory locations
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
////// Place your custom code below here
if ((now()%SECS_PER_DAY==31320)) //if it is 8:42 AM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if ((now()%SECS_PER_DAY==67320)) //if it is 6:42 PM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if (hour()>=22 || hour()<9)
{ // Sleep mode - slow things down
ReefAngel.DCPump.SetMode( ReefCrest,25,10 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( ReefCrest,50,10 );
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "spotted" );
ReefAngel.DDNS( "7730.homeip.net:2000" ); // Your DDNS is spotted-7730.homeip.net:2000.myreefangel.com
ReefAngel.ShowInterface();
}
Re: ATO Reservoir refill every few days
Posted: Tue Feb 23, 2016 8:14 pm
by lnevo
Put all of it after the last } in your code. Then in the part at the current bottom where it says place your custom code below here put the following line to activate the function
RefillATO();
Re: ATO Reservoir refill every few days
Posted: Wed Feb 24, 2016 7:34 am
by Spotted
Is this correct?
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <PAR.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port1Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On( Port3 ); //Sump Powerhead. Main Relay Port 3
ReefAngel.Relay.On( Port4 );//Display Lights
ReefAngel.Relay.On( Port5 ); //Display Tank Power Heads MaiRelay Port 5
ReefAngel.Relay.On( Port8 ); //Return Pump Relay 1 Port 8
ReefAngel.Relay.On( Box1_Port1 ); //ATS Air Pump. Relay 2 Port 1
ReefAngel.Relay.On( Box1_Port2 ); //Media Reactor. Relay 2 Port 2
ReefAngel.Relay.On( Box1_Port3 ); //Aqualifter. Relay 2 Port 3
ReefAngel.Relay.Off( Box2_Port8 );//Referencing Relay 3
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATOLow( Port1 );
ReefAngel.Relay.DelayedOn( Port7 ); //Skimmer Relay 1 Port 7
ReefAngel.MHLights( Box1_Port4 ); //ATS Light Relay 2 Port 4
ReefAngel.DCPump.UseMemory = true; //ignore programming and use memory locations
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
////// Place your custom code below here
if ((now()%SECS_PER_DAY==31320)) //if it is 8:42 AM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if ((now()%SECS_PER_DAY==67320)) //if it is 6:42 PM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if (hour()>=22 || hour()<9)
{ // Sleep mode - slow things down
ReefAngel.DCPump.SetMode( ReefCrest,25,10 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( ReefCrest,50,10 );
}
RefillATO();
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "spotted" );
ReefAngel.DDNS( "7730.homeip.net:2000" ); // Your DDNS is spotted-7730.homeip.net:2000.myreefangel.com
ReefAngel.ShowInterface();
}
// Set this to the port your solenoid is on.
#define ROSolenoid Port5
void RefillATO() {
static boolean refillActive=false; // Flag to determine if we've initiated the refill.
static time_t startedAt=0;
byte startAt=23;
byte runFor=6;
byte runEvery=3;
if ( now()+(startAt*SECS_PER_HOUR) % (runEvery*SECS_PER_DAY)==0 ) {
ReefAngel.Relay.Override(ROSolenoid,1); // We turn on the solenoid port.
startedAt=now();
refillActive=true;
}
if ( now()-startedAt == runFor*SECS_PER_HOUR && refillActive) {
ReefAngel.Relay.Override(ROSolenoid,0); // Back to automatic mode
refillActive=true;
startedAt=0;
}
}
Re: ATO Reservoir refill every few days
Posted: Wed Feb 24, 2016 8:13 am
by lnevo
Yes should work
Re: ATO Reservoir refill every few days
Posted: Wed Jun 21, 2017 12:38 pm
by Spotted
Ok, so after a really long trip out of town, I have returned!
It would appear that the code for the ATO reservoir refill does not function as hoped. Actually it does nothing. Can someone please take a look at it and tell me what needs to be done to fix it?
I really appreciate all your help on this.
Re: ATO Reservoir refill every few days
Posted: Wed Jun 21, 2017 4:34 pm
by rimai
I think it would be easier to just do this:
Code: Select all
ReefAngel.Relay.Set(Port1,(now%129600)<10800));
I have not tested, but it may be worth a try.
129600=number of seconds in 3 days
10800=number of seconds in 3 hours
It will turn on for 10800 seconds every 129600 seconds.
It will always turn on starting at midnight.
Re: ATO Reservoir refill every few days
Posted: Thu Jun 22, 2017 4:05 pm
by Spotted
Ok, so remove this
Code: Select all
// Set this to the port your solenoid is on.
#define ROSolenoid Box2_Port6
void RefillATO() {
static boolean refillActive=false; // Flag to determine if we've initiated the refill.
static time_t startedAt=0;
byte startAt=23;
byte runFor=6;
byte runEvery=3;
if ( now()+(startAt*SECS_PER_HOUR) % (runEvery*SECS_PER_DAY)==0 ) {
ReefAngel.Relay.Override(ROSolenoid,1); // We turn on the solenoid port.
startedAt=now();
refillActive=true;
}
if ( now()-startedAt == runFor*SECS_PER_HOUR && refillActive) {
ReefAngel.Relay.Override(ROSolenoid,0); // Back to automatic mode
refillActive=true;
startedAt=0;
}
And make it look like this
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <PAR.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port1Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On( Port3 ); //Sump Powerhead. Main Relay Port 3
ReefAngel.Relay.On( Port4 );//Display Lights
ReefAngel.Relay.On( Port5 ); //Display Tank Power Heads MaiRelay Port 5
ReefAngel.Relay.On( Port8 ); //Return Pump Relay 1 Port 8
ReefAngel.Relay.On( Box1_Port1 ); //ATS Air Pump. Relay 2 Port 1
ReefAngel.Relay.On( Box1_Port2 ); //Media Reactor. Relay 2 Port 2
ReefAngel.Relay.On( Box1_Port3 ); //Aqualifter. Relay 2 Port 3
ReefAngel.Relay.Off( Box2_Port8 );//Referencing Relay 3
ReefAngel.Relay.Set(Box1_Port6,(now%129600)<10800));
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATOLow( Port1 );
ReefAngel.Relay.DelayedOn( Port7 ); //Skimmer Relay 1 Port 7
ReefAngel.MHLights( Box1_Port4 ); //ATS Light Relay 2 Port 4
ReefAngel.DCPump.UseMemory = false; //ignore programming and use memory locations if true
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
////// Place your custom code below here
if ((now()%SECS_PER_DAY==31320)) //if it is 8:42 AM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if ((now()%SECS_PER_DAY==67320)) //if it is 6:42 PM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if (hour()>=22 || hour()<9)
{ // Sleep mode - slow things down
ReefAngel.DCPump.SetMode( Lagoon,40,66 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( Constant,70,10 );
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "spotted" );
ReefAngel.DDNS( "7730.homeip.net:2000" ); // Your DDNS is spotted-7730.homeip.net:2000.myreefangel.com
ReefAngel.ShowInterface();
}
// Set this to the port your solenoid is on.
and is that new code in the right place? The line right above
////// Place additional initialization code below here
Or should it go above this line:
////// Place your custom code above here
Re: ATO Reservoir refill every few days
Posted: Thu Jun 22, 2017 5:23 pm
by rimai
It has to be on loop section or it will only work at boot and never again.
setup() section only happens on boot and loop() section happens all the time.
Re: ATO Reservoir refill every few days
Posted: Mon Jun 26, 2017 9:35 am
by Spotted
Ok I tried this and got an error mesage. Here's the code and I hope it's in the correct place.
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <PAR.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port1Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On( Port3 ); //Sump Powerhead. Main Relay Port 3
ReefAngel.Relay.On( Port4 );//Display Lights
ReefAngel.Relay.On( Port5 ); //Display Tank Power Heads MaiRelay Port 5
ReefAngel.Relay.On( Port8 ); //Return Pump Relay 1 Port 8
ReefAngel.Relay.On( Box1_Port1 ); //ATS Air Pump. Relay 2 Port 1
ReefAngel.Relay.On( Box1_Port2 ); //Media Reactor. Relay 2 Port 2
ReefAngel.Relay.On( Box1_Port3 ); //Aqualifter. Relay 2 Port 3
ReefAngel.Relay.Off( Box2_Port8 );//Referencing Relay 3
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATOLow( Port1 );
ReefAngel.Relay.DelayedOn( Port7 ); //Skimmer Relay 1 Port 7
ReefAngel.MHLights( Box1_Port4 ); //ATS Light Relay 2 Port 4
ReefAngel.DCPump.UseMemory = false; //ignore programming and use memory locations if true
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
ReefAngel.Relay.Set(Box2_Port6,(now%129600)<10800));
////// Place your custom code below here
if ((now()%SECS_PER_DAY==31320)) //if it is 8:42 AM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if ((now()%SECS_PER_DAY==67320)) //if it is 6:42 PM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if (hour()>=22 || hour()<9)
{ // Sleep mode - slow things down
ReefAngel.DCPump.SetMode( Lagoon,40,66 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( Constant,70,10 );
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "spotted" );
ReefAngel.DDNS( "7730.homeip.net:2000" ); // Your DDNS is spotted-7730.homeip.net:2000.myreefangel.com
ReefAngel.ShowInterface();
}
Here's my error:
The following features were automatically added:
Watchdog Timer
Version Menu
The following features were detected:
Wifi Attachment
Relay Expansion Module
DC Pump Control (Jebao/Tunze)
Dimming Signal
2014 Main Screen
Extra Font - Medium Size (8x8 pixels)
Metal Halide Setup
Number of Relay Expansion Modules: 2
Simple Menu
sketch_jun26.cpp: In function 'void loop()':
sketch_jun26:87: error: invalid operands of types 'time_t ()()' and 'long int' to binary 'operator%'
sketch_jun26:87: error: expected `;' before ')' token
Help please!
Re: ATO Reservoir refill every few days
Posted: Mon Jun 26, 2017 3:33 pm
by rimai
Sorry, I forgot the parenthesis.
Try this:
Code: Select all
ReefAngel.Relay.Set(Box2_Port6,((now()%129600)<10800));
Re: ATO Reservoir refill every few days
Posted: Fri Jul 07, 2017 10:46 am
by Spotted
Hi Roberto, I'm trying to check if this change is working, but I get no info on the relay activity in the portal. It says that there is no data.
The portal itself shows current data, but nothing in relay activity or in web chart.
Can you point me in the right direction?
Re: ATO Reservoir refill every few days
Posted: Fri Jul 07, 2017 10:48 am
by rimai
You may need to update the firmware of wifi attachment:
http://forum.reefangel.com/viewtopic.php?f=3&t=4601
Re: ATO Reservoir refill every few days
Posted: Sun Jul 09, 2017 3:12 pm
by Spotted
Ok, I ran the ttl file to make sure all was good, but I still cant get any data on the web portal for relay activity or for web chart.
Re: ATO Reservoir refill every few days
Posted: Sun Jul 09, 2017 4:39 pm
by rimai
Can you post the tera term result?
Re: ATO Reservoir refill every few days
Posted: Mon Jul 10, 2017 3:03 pm
by Spotted
Here they are:
CMD
get w
SSID=Fish
Chan=0
ExtAnt=0
Join=1
Auth=WPA2
Mask=0x1fff
Rate=12, 24 Mb
Linkmon-Infra=30
Linkmon-AP=3600
Passphrase=FishfisH
EAP_Id=userid
EAP_User=peap-user
<4.00>
get i
IF=UP
DHCP=ON
IP=192.168.1.200:2000
NM=255.255.255.0
GW=192.168.1.1
HOST=104.36.18.155:80
PROTO=TCP,
MTU=1524
FLAGS=0x6
TCPMODE=0x0
BACKUP=0.0.0.0
<4.00>
Re: ATO Reservoir refill every few days
Posted: Mon Jul 10, 2017 10:36 pm
by rimai
Looks correct.
Are you sure your code has the correct forum username?
Re: ATO Reservoir refill every few days
Posted: Tue Jul 11, 2017 6:39 am
by Spotted
It is. Does the forum name matter for the rest of the web portal? I am able to see all the items. I can control the relays and get updates on my parameters. The only 2 things I can't get are the relay activity and the web chart.
The Relay Activity says no data and the web chart is just blank..
Here's the code, is there a problem with it somewhere maybe?
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>
#include <RA_ATO.h>
#include <RA_Joystick.h>
#include <LED.h>
#include <RA_TempSensor.h>
#include <Relay.h>
#include <RA_PWM.h>
#include <Timer.h>
#include <Memory.h>
#include <InternalEEPROM.h>
#include <RA_Colors.h>
#include <RA_CustomColors.h>
#include <Salinity.h>
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <AI.h>
#include <PH.h>
#include <WaterLevel.h>
#include <Humidity.h>
#include <DCPump.h>
#include <PAR.h>
#include <ReefAngel.h>
////// Place global variable code below here
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.FeedingModePortsE[0] = Port3Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port3Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.WaterChangePortsE[0] = Port3Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
ReefAngel.LightsOnPortsE[0] = Port1Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port3Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit | Port8Bit;
ReefAngel.OverheatShutoffPortsE[0] = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
// Ports that are always on
ReefAngel.Relay.On( Port3 ); //Sump Powerhead. Main Relay Port 3
ReefAngel.Relay.On( Port4 );//Display Lights
ReefAngel.Relay.On( Port5 ); //Display Tank Power Heads MaiRelay Port 5
ReefAngel.Relay.On( Port8 ); //Return Pump Relay 1 Port 8
ReefAngel.Relay.On( Box1_Port1 ); //ATS Air Pump. Relay 2 Port 1
ReefAngel.Relay.On( Box1_Port2 ); //Media Reactor. Relay 2 Port 2
ReefAngel.Relay.On( Box1_Port3 ); //Aqualifter. Relay 2 Port 3
ReefAngel.Relay.Off( Box2_Port8 );//Referencing Relay 3
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.SingleATOLow( Port1 );
ReefAngel.Relay.DelayedOn( Port7 ); //Skimmer Relay 1 Port 7
ReefAngel.MHLights( Box1_Port4 ); //ATS Light Relay 2 Port 4
ReefAngel.DCPump.UseMemory = false; //ignore programming and use memory locations if true
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
ReefAngel.Relay.Set(Box1_Port6,((now()%259200)<3600));
////// Place your custom code below here
if ((now()%SECS_PER_DAY==31320)) //if it is 8:42 AM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if ((now()%SECS_PER_DAY==67320)) //if it is 6:42 PM
{ReefAngel.FeedingModeStart();} //START FEEDING MODE
if (hour()>=22 || hour()<9)
{ // Sleep mode - slow things down
ReefAngel.DCPump.SetMode( Lagoon,40,66 );
}
else
{
// Normal power
ReefAngel.DCPump.SetMode( Constant,70,10 );
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "Spotted" );
ReefAngel.DDNS( "7730.homeip.net:2000" ); // Your DDNS is spotted-7730.homeip.net:2000.myreefangel.com
ReefAngel.ShowInterface();
}
Re: ATO Reservoir refill every few days
Posted: Tue Jul 11, 2017 10:08 am
by rimai
It is probably the DDNS line.
Remove it and see if it works.
Re: ATO Reservoir refill every few days
Posted: Tue Jul 11, 2017 4:45 pm
by Spotted
Ok, that did it.
Thanks!
Another question. I am running both my Jebao pumps on one side of my tank now, kind of like a gyre configuration. They are of course run by my RA. There are a couple lines in the code that looks like they define Sync and AntiSync. I assume that on is for on channel ,the other is the opposite channel. Is it possible to change one line so both say Sync or AntiSync and they both act as one pump even though they are on different dimming channels?
Thanks again.