PaulTurner911 Code
Re: PaulTurner911 Code
Patch submitted. There's now functions for StandardHeater2 and StandardHeater3 same for StandardFan. And if you pass a temp param less than 100 it will be multiplied by 10.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
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 <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
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit ;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit | Port7Bit ;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port7Bit | Port3Bit ;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port1Bit |Port2Bit | Port3Bit | Port5Bit| Port6Bit | Port7Bit| Port8Bit ;
// 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
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.Relay.DelayedOn( Port1,1 ); // Return Pump
ReefAngel.Relay.DelayedOn( Port2,90 );// Skimmer
ReefAngel.ActinicLights( Port3 ); // Actinic LEDS
ReefAngel.StandardFan(Port4,790,800);//Chiller 79-80
ReefAngel.StandardHeater(Port5,750,760);//Heater 75-76
//Port6 Kalk/ATO
ReefAngel.DayLights( Port7 ); // White LEDS
//Port 8 Empty
//Moonlight Phase 9pm-10am (CH4-CH5)
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 4,(0) );
else
ReefAngel.PWM.SetChannel( 4, MoonPhase() );
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 5,(0) );
else
ReefAngel.PWM.SetChannel( 5, MoonPhase() );
//Over Flow Protection
if (ReefAngel.HighATO.IsActive())
ReefAngel.Relay.On(Port1);
else
ReefAngel.Relay.Off(Port1);
//ATO Protection
if (ReefAngel.LowATO.IsActive())
ReefAngel.Relay.On(Port6);
else
ReefAngel.Relay.Off(Port6);
//Kalk Dose 10pm-11pm
if (hour() >=22 || hour() < 23)
ReefAngel.Relay.On(Port6);
else
ReefAngel.Relay.Off(Port6);
ReefAngel.DCPump.UseMemory = true;
ReefAngel.DCPump.DaylightChannel = Sync;
ReefAngel.DCPump.ActinicChannel = AntiSync;
////// Place your custom code below here
///// Place your custom code below here
// Add random mode if we set to Mode to Custom in portal
static int rmode;
static boolean changeMode=true;
// These are the modes we can cycle through. You can add more and even repeat...
byte modes[] = { Else, Lagoon, ReefCrest, ShortPulse, LongPulse, Gyre, NutrientTransport };
if (now()%SECS_PER_DAY==0 || changeMode==true) { // Change at midnight or if controller rebooted
rmode=random(100)%sizeof(modes); // Change the mode once per day to pick from our array
changeMode=false;
}
// Set timer when in feeding mode
static unsigned long feeding;
if (ReefAngel.DisplayedMenu==FEEDING_MODE) feeding=now();
if (now()-feeding<900) {
// First 15 minutes after feeding mode stops. Return Pump is off
ReefAngel.Relay.Off(Port1);
// First 15 minutes after feeding mode stops. Smart_NTM
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
} else if (now()-feeding<4500) { // 15 minutes plus 1 hour
// Continue NTM for the next 60 minutes (75 minutes total)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=NutrientTransport;
} else if (now()%SECS_PER_DAY<30600 || now()%SECS_PER_DAY>=81000) { // 8:30am / 10:30pm
// Night mode (go to 30%)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=Constant;
ReefAngel.DCPump.Speed=30;
} else if (InternalMemory.DCPumpMode_read()==11) {
// Custom Mode and nothing else going on
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Duration=InternalMemory.DCPumpDuration_read();
if (modes[rmode]==Else) {
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Mode=Constant;
ReefAngel.DCPump.Speed=ElseMode(InternalMemory.DCPumpSpeed_read(),25,true ); // ElseMode on sync mode, Portal Speed Setting +/- 25%
} else {
ReefAngel.DCPump.Mode=modes[rmode]; // Put the mode to the random mode :)
ReefAngel.DCPump.Speed=InternalMemory.DCPumpSpeed_read(); // Set speed from portal
}
} else {
ReefAngel.DCPump.UseMemory=true; // Will reset all values from memory
}
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "paulturner911" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
int x,y;
char text[10];
// Dimming Expansion
x = 15;
y = 2;
for ( int a=0;a<6;a++ )
{
if ( a>2 ) x = 75;
if ( a==3 ) y = 2;
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x,y,"Ch :" );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+12,y,a );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+24,y,ReefAngel.PWM.GetChannelValue(a) );
y += 10;
}
pingSerial();
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 80, TempRelay );
pingSerial();
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
void DrawCustomGraph()
{
}
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Any idea what kind of run time I should get with two pumps on the Jeabo battery backup kit...??
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Hi guys! Its been ages since Ive messed with the tank and/or this program. My skimmer is returning very light product. I think I want it to run every other day.
Skimmer is Port 2. How could I code that?
Thank you in advance!
Skimmer is Port 2. How could I code that?
Thank you in advance!
Re: PaulTurner911 Code
Replace this:
with this:
Code: Select all
//Over Flow Protection
if (ReefAngel.HighATO.IsActive())
ReefAngel.Relay.On(Port1);
else
ReefAngel.Relay.Off(Port1);
Code: Select all
//Over Flow Protection
if (ReefAngel.HighATO.IsActive())
{
if (day()%2==0)
{
ReefAngel.Relay.On(Port1);
}
else
{
ReefAngel.Relay.Off(Port1);
}
}
else
{
ReefAngel.Relay.Off(Port1);
}
Roberto.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Thanks for the reply Roberto. Im not sure that will do what I want. Pump 1 is my return pump, I would like my skimmer to run for 24hr on and 24hr off, but still turn off when I use the feed mode.
Re: PaulTurner911 Code
Duh... Misread the post. I read Port 1
I'll send code later. Typing on phone....
I'll send code later. Typing on phone....
Roberto.
Re: PaulTurner911 Code
Replace this:
With this:
Code: Select all
ReefAngel.Relay.DelayedOn( Port2,90 );// Skimmer
Code: Select all
if (day()%2==0)
{
ReefAngel.Relay.DelayedOn( Port2,90 );// Skimmer
}
else
{
ReefAngel.Relay.Off(Port2);
}
Roberto.
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
Does anyone have a display menu that is capable of togging the main relay board ports?
New streamlined code
New streamlined code
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
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port2Bit;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 896 );
// Ports that are always on
ReefAngel.Relay.On( Port1 );
ReefAngel.Relay.On( Port4 );
ReefAngel.Relay.On( Port6 );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.Relay.DelayedOn( Port2,90 );
ReefAngel.Relay.DelayedOn( Port5,5 );
ReefAngel.PWM.SetChannel( 4, MoonPhase() );
ReefAngel.PWM.SetChannel( 5, MoonPhase() );
////// Place your custom code below here
//Moonlight Phase 9pm-10am (CH4-CH5)
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 4,(0) );
else
ReefAngel.PWM.SetChannel( 4, MoonPhase() );
if ( (hour() >=10) && (hour() <21) )
ReefAngel.PWM.SetChannel( 5,(0) );
else
ReefAngel.PWM.SetChannel( 5, MoonPhase() );
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "Paulturner911" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
int x,y;
char text[10];
// Dimming Expansion
x = 15;
y = 2;
for ( int a=0;a<6;a++ )
{
if ( a>2 ) x = 75;
if ( a==3 ) y = 2;
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x,y,"Ch :" );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+12,y,a );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+24,y,ReefAngel.PWM.GetChannelValue(a) );
y += 10;
}
pingSerial();
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 80, TempRelay );
pingSerial();
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
void DrawCustomGraph()
{
}
-
- Posts: 245
- Joined: Tue Jan 28, 2014 11:10 am
- Location: Northern VA
Re: PaulTurner911 Code
Do you mean naming the ports? My code does that:Paulturner911 wrote:Does anyone have a display menu that is capable of togging the main relay board ports?
New streamlined codeCode: 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 // Ports toggled in Feeding Mode ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit; // Ports toggled in Water Change Mode ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit; // Ports toggled when Lights On / Off menu entry selected ReefAngel.LightsOnPorts = 0; // Ports turned off when Overheat temperature exceeded ReefAngel.OverheatShutoffPorts = Port2Bit; // Use T1 probe as temperature and overheat functions ReefAngel.TempProbe = T1_PROBE; ReefAngel.OverheatProbe = T1_PROBE; // Set the Overheat temperature setting InternalMemory.OverheatTemp_write( 896 ); // Ports that are always on ReefAngel.Relay.On( Port1 ); ReefAngel.Relay.On( Port4 ); ReefAngel.Relay.On( Port6 ); ////// Place additional initialization code below here ////// Place additional initialization code above here } void loop() { ReefAngel.Relay.DelayedOn( Port2,90 ); ReefAngel.Relay.DelayedOn( Port5,5 ); ReefAngel.PWM.SetChannel( 4, MoonPhase() ); ReefAngel.PWM.SetChannel( 5, MoonPhase() ); ////// Place your custom code below here //Moonlight Phase 9pm-10am (CH4-CH5) if ( (hour() >=10) && (hour() <21) ) ReefAngel.PWM.SetChannel( 4,(0) ); else ReefAngel.PWM.SetChannel( 4, MoonPhase() ); if ( (hour() >=10) && (hour() <21) ) ReefAngel.PWM.SetChannel( 5,(0) ); else ReefAngel.PWM.SetChannel( 5, MoonPhase() ); ////// Place your custom code above here // This should always be the last line ReefAngel.Portal( "Paulturner911" ); ReefAngel.ShowInterface(); } void DrawCustomMain() { int x,y; char text[10]; // Dimming Expansion x = 15; y = 2; for ( int a=0;a<6;a++ ) { if ( a>2 ) x = 75; if ( a==3 ) y = 2; ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x,y,"Ch :" ); ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+12,y,a ); ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,x+24,y,ReefAngel.PWM.GetChannelValue(a) ); y += 10; } pingSerial(); // Parameters #if defined DisplayLEDPWM && ! defined RemoveAllLights ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params, ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() ); #else // defined DisplayLEDPWM && ! defined RemoveAllLights ReefAngel.LCD.DrawMonitor( 15, 43, ReefAngel.Params ); #endif // defined DisplayLEDPWM && ! defined RemoveAllLights pingSerial(); // Main Relay Box byte TempRelay = ReefAngel.Relay.RelayData; TempRelay &= ReefAngel.Relay.RelayMaskOff; TempRelay |= ReefAngel.Relay.RelayMaskOn; ReefAngel.LCD.DrawOutletBox( 12, 80, TempRelay ); pingSerial(); // Date and Time ReefAngel.LCD.DrawDate( 6, 122 ); pingSerial(); } void DrawCustomGraph() { }
https://forum.reefangel.com/viewtopic.php?f=11&t=4662
Jack
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
I want to be able to turn them on and off from the actual controller joystick.
I also want a fail safe that if the PORT 1 is OFF, it turns off PORT 2 and PORT 5.
Long story short, my app doesn't work reliably, and I don't want to have to sign in to the portal to turn something off or on. I can see the controller anytime on the portal, but the app is random and will not connect if I want it to, but hours later it will toggle the ports I've fiddled with in the app. Then you come home to a pump turned off and a overflowed skimmer and a filter roller that wasted 20' of roll. SUCKS
Any help would be great. Thank you
I also want a fail safe that if the PORT 1 is OFF, it turns off PORT 2 and PORT 5.
Long story short, my app doesn't work reliably, and I don't want to have to sign in to the portal to turn something off or on. I can see the controller anytime on the portal, but the app is random and will not connect if I want it to, but hours later it will toggle the ports I've fiddled with in the app. Then you come home to a pump turned off and a overflowed skimmer and a filter roller that wasted 20' of roll. SUCKS
Any help would be great. Thank you
-
- Posts: 288
- Joined: Wed Jan 23, 2013 12:36 pm
Re: PaulTurner911 Code
I created this with the cloud wizard.
I'm having an issue where my skimmer is overflowing because the return pump is off. I made a if/then to turn off the skimmer and filter roller off if the return pump is ever off. This doesn't seem to work.
Any help would be great.
I'm having an issue where my skimmer is overflowing because the return pump is off. I made a if/then to turn off the skimmer and filter roller off if the return pump is ever off. This doesn't seem to work.
Any help would be great.
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.AddStandardMenu(); // Add Standard Menu
ReefAngel.Use2014Screen(); // Let's use 2014 Screen
// Ports toggled in Feeding Mode
ReefAngel.FeedingModePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port1Bit | Port2Bit | Port4Bit | Port5Bit | Port6Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = 0;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = 0;
// Use T1 probe as temperature and overheat functions
ReefAngel.TempProbe = T1_PROBE;
ReefAngel.OverheatProbe = T1_PROBE;
// Set the Overheat temperature setting
InternalMemory.OverheatTemp_write( 830 );
// Ports that are always on
ReefAngel.Relay.On( Port1 );
ReefAngel.Relay.On( Port4 );
ReefAngel.Relay.On( Port6 );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.Relay.DelayedOn( Port2,10 );
ReefAngel.Relay.DelayedOn( Port5,10 );
ReefAngel.PWM.SetChannel( 4,MoonPhase() );
if ( ReefAngel.Relay.Status( Port1 ) ) ReefAngel.Relay.Off( Port2 );
if ( ReefAngel.Relay.Status( Port1 ) ) ReefAngel.Relay.Off( Port5 );
if ( ReefAngel.Relay.Status( Port1 ) ) ReefAngel.Relay.DelayedOn( Port2,10 );
if ( ReefAngel.Relay.Status( Port1 ) ) ReefAngel.Relay.DelayedOn( Port5,10 );
////// Place your custom code below here
////// Place your custom code above here
ReefAngel.CloudPortal();
// This should always be the last line
ReefAngel.ShowInterface();
}
// RA_STRING1=U2FsdGVkX1+wzokeKHQCk87w7JvvcOREK6+LjmUjNMc=
// RA_STRING2=U2FsdGVkX19g+eSJzWd3/2eYdbXZT5v3evtlYFIGeqE=
// RA_STRING3=Nacho Network
// RA_LABEL LABEL_DAYLIGHT=Not Used
// RA_LABEL LABEL_ACTINIC=Not Used