water level below % help

Basic / Standard Reef Angel hardware
Post Reply
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

water level below % help

Post by Smotz »

Can someone tell me why this isn't working?

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.On(Fugelight);
    } 
The return doesn't go on with this code. However, the skimmer does, and the Fugelight doesn't.
User avatar
lnevo
Posts: 5422
Joined: Fri Jul 20, 2012 9:42 am

Re: water level below % help

Post by lnevo »

You should put it as the last bit of custom code...otherwise other functions may override it..
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: water level below % help

Post by Smotz »

doesn't it not even look at the statements if the 'if' statement isn't true?
User avatar
lnevo
Posts: 5422
Joined: Fri Jul 20, 2012 9:42 am

Re: water level below % help

Post by lnevo »

If this if isnt true it wont execute any of the code in the {} but you were talking about the return not being on which isnt in any of that code...
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: water level below % help

Post by Smotz »

lnevo wrote:If this if isnt true it wont execute any of the code in the {} but you were talking about the return not being on which isnt in any of that code...
with the code, the return doesn't go on. when i comment out the code, the return goes on as normal.

this is in the code..
ReefAngel.Relay.Off(Return);
User avatar
lnevo
Posts: 5422
Joined: Fri Jul 20, 2012 9:42 am

Re: water level below % help

Post by lnevo »

Whats the water level at?
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: water level below % help

Post by Smotz »

98%
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: water level below % help

Post by Smotz »

here's the whole code

Code: Select all

////  Port 1			Heater
////  Port 2			ATO pump
////  Port 3			NOT USED
////  Port 4			Protein Skimmer
////  Port 5			Return Pump
////  Port 6			Wavemaker
////  Port 7                    UV Sterilizer
////  Port 8                    Fan
////  BOX 1 PORT 8              Fuge Light
#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 <ReefAngel.h>

////// Place global variable code below here

#define Heater Port1
#define Topoff Port2
// #define Reactor Port3
#define Skimmer Port4
#define Return Port5
#define Wave Port6
#define UVlight Port7
#define Fugelight Port8
#define Fan  Box1_Port8
#define FugelightBit   1<<7
#define UVlightBit   1<<6
#define WaveBit   1<<5
#define ReturnBit   1<<4
#define SkimmerBit   1<<3
// #define ReactorBit   1<<2
#define TopoffBit   1<<1
#define HeaterBit   1<<0

static byte wpMode;
static byte wpWavStr;
static byte wpWavOff;


////// Place global variable code above here

void setup()
{
// This must be the first line
  ReefAngel.Init();  //Initialize controller
// Ports toggled in Feeding Mode
  ReefAngel.FeedingModePorts = SkimmerBit | ReturnBit | TopoffBit;
// Ports toggled in Water Change Mode
  ReefAngel.WaterChangePorts = HeaterBit | SkimmerBit | ReturnBit | TopoffBit | WaveBit;
// Ports toggled when Lights On / Off menu entry selected
  ReefAngel.LightsOnPorts = FugelightBit;
// Ports turned off when Overheat temperature exceeded
  ReefAngel.OverheatShutoffPorts = HeaterBit | TopoffBit | SkimmerBit | ReturnBit | WaveBit;

// Use T1 (SUMP) probe as temperature and overheat functions
  ReefAngel.TempProbe = T1_PROBE;
  ReefAngel.OverheatProbe = T1_PROBE;
  
// Ports that are always on
  ReefAngel.Relay.On( Return );
  ReefAngel.Relay.On( Wave );
  ReefAngel.Relay.On( Box1_Port1 );
  ReefAngel.Relay.On( Box1_Port2 );
  ReefAngel.Relay.On( Box1_Port3 );
  ReefAngel.Relay.On( Box1_Port4 );
  ReefAngel.Relay.On( Box1_Port5 );
  ReefAngel.Relay.On( Box1_Port6 );
  ReefAngel.Relay.On( Box1_Port7 );

  ////// Place additional initialization code below here


  ////// Place additional initialization code above here
}
void loop()
{
  ReefAngel.StandardHeater( Heater );
  ReefAngel.MoonLights( Fugelight );
  ReefAngel.StandardFan( Fan );
  
  ////// Place your custom code below here
  ReefAngel.SalMax=InternalMemory.SalMax_read();  // this allows salinity internal memory changes made one the mobile app to be instant - no reboot needed.
  ReefAngel.Relay.DelayedOn(Skimmer,3); 
  
// Water Levels
// ReefAngel.WaterLevel.GetLevel

// 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.On(Fugelight);
    }

// Main Top Off
    if ( ReefAngel.WaterLevel.GetLevel(2) >= 10 )    // Ensure there is 10% of water in the Top Off reservoir 
    {      
    if ( ReefAngel.WaterLevel.GetLevel(1) <= 78 )  ReefAngel.Relay.On(Topoff);
    if ( ReefAngel.WaterLevel.GetLevel(1) >= 100 ) ReefAngel.Relay.Off(Topoff);
    }
    if ( ReefAngel.Params.PH>850) ReefAngel.Relay.Off(Topoff);  // Turn off top off if PH is greater than 8.5 
    
// if the hour is 6a and minute is 58 and seconds is 0 start the feeding mode
    if ( ((hour() == 6)) && 
    (minute() == 58) && 
    (second() == 0) ) {
    ReefAngel.FeedingModeStart(); }
// end feeding mode

// Custom Wave Routine 
// set the wpMode based on what time it is
    if ( (hour() >= 2) && (hour() < 5) ) wpMode=2;       // from 2am - 5am  
    if ( (hour() >= 5) && (hour() < 8) )  wpMode=1;     // from 5am - 8am
    if ( (hour() >= 8) && (hour() < 11) ) wpMode=2;      // from 8am - 11am
    if ( (hour() >= 11) && (hour() < 14) ) wpMode=3;     // from 11a - 2pm
    if ( (hour() >= 14) && (hour() < 17) ) wpMode=2;     // from 2pm - 5pm
    if ( (hour() >= 17) && (hour() < 20) ) wpMode=1;     // from 5pm - 8pm
    if ( (hour() >= 20) && (hour() < 23) ) wpMode=2;     // from 8pm - 11p
    if (hour() >= 23) wpMode=3;                          // from 11pm - midnight 
    if (hour() < 2) wpMode=3;                            // from midnight - 2am
        
// set the Wave Strength based on wpMode
    if (wpMode==1) wpWavStr=45;
    if (wpMode==2) wpWavStr=50;
    if (wpMode==3) wpWavStr=55;
//Set the Wave OffSet
    wpWavOff=15;  

    ReefAngel.PWM.SetDaylight( ReefCrestMode(wpWavStr,wpWavOff,true) );
    ReefAngel.PWM.SetActinic(wpWavStr);    
// end Custom Wave Routine   

    if (ReefAngel.DisplayedMenu==FEEDING_MODE)
    {
    ReefAngel.PWM.SetActinic(30);
    ReefAngel.PWM.SetDaylight(30);
    ReefAngel.Relay.On(Fugelight);
    }
    
    if (ReefAngel.DisplayedMenu==WATERCHANGE_MODE)
    {
    ReefAngel.PWM.SetActinic(0);
    ReefAngel.PWM.SetDaylight(0);
    ReefAngel.Relay.On(Fugelight);
    }
    
// DC Return Pump using internal memory
    pinMode(lowATOPin,OUTPUT);
    analogWrite(lowATOPin,InternalMemory.LEDPWMActinic_read()*2.55);
// END DC Return Pump

//  Only turn on UV Sterilizer between 11pm and 4am
    if ( (hour() >= 4) && (hour() < 23) )  // from 4a - 11p
    ReefAngel.Relay.Off(UVlight);
    else ReefAngel.Relay.On(UVlight);

////// Place your custom code above here
 
// This should always be the last line
    ReefAngel.Portal( "Smotz","148497" );
    ReefAngel.ShowInterface();
}

void DrawCustomMain()
{

// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
    ReefAngel.LCD.DrawMonitor( 15, 5, ReefAngel.Params,
    ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
    ReefAngel.LCD.DrawMonitor( 15, 5, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
    pingSerial();

// Salinity
    ReefAngel.LCD.DrawText( COLOR_DARKKHAKI,DefaultBGColor,20,80, "SAL:" );
    ReefAngel.LCD.DrawText( COLOR_DARKKHAKI,DefaultBGColor,44,80, ReefAngel.Params.Salinity );
    pingSerial();

// Main Relay Box
    byte TempRelay = ReefAngel.Relay.RelayData;
    TempRelay &= ReefAngel.Relay.RelayMaskOff;
    TempRelay |= ReefAngel.Relay.RelayMaskOn;
    ReefAngel.LCD.DrawOutletBox( 12, 95, TempRelay );
    pingSerial();

// Relay Expansion
    TempRelay = ReefAngel.Relay.RelayDataE[0];
    TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
    TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
    ReefAngel.LCD.DrawOutletBox( 12, 105, TempRelay );
    pingSerial();

// Date and Time
    ReefAngel.LCD.DrawDate( 6, 122 );
    pingSerial();

//draw the mode on the screen
    char buf[16];
    char buf2[16];
    char buf3[32];
    sprintf(buf,"RC %d%% +/- %d%%",wpWavStr,wpWavOff);
    sprintf(buf2,"Wave Mode = %d%",wpMode);
    sprintf(buf3,"Return Power = %d%",InternalMemory.LEDPWMActinic_read());
    ReefAngel.LCD.DrawText(0,255,10,40,buf3);
    ReefAngel.LCD.DrawText(0,255,20,60,buf);
    ReefAngel.LCD.DrawText(0,255,20,50,buf2);
}

void DrawCustomGraph()
{
}
rimai
Posts: 12857
Joined: Fri Mar 18, 2011 6:47 pm

Re: water level below % help

Post by rimai »

You have nothing to turn the return port back on.
Your Relay.On is on setup().
Move it to loop and it should work.
Roberto.
Smotz
Posts: 401
Joined: Sat Mar 30, 2013 5:02 pm
Location: CT, USA

Re: water level below % help

Post by Smotz »

That did it. Thanks Guys.
Post Reply