Issues I've seen in the current Dev Library.
Re: Issues I've seen in the current Dev Library.
Anyway, I've made the pull request for the above changes. I also changed the range for Sine mode the same way we did for Gyre. Otherwise pumps would be off for a lot longer than expected...
Re: Issues I've seen in the current Dev Library.
Good idea. So it just stays at the threshold all the way down to 0, and then briefly stops at 0 and right back up to threshold? I haven't pulled your branch to try it. I get periodic errors when using the bluetooth with timeouts or port in use problems and it makes me nervous, so I only load when I really need to.
Re: Issues I've seen in the current Dev Library.
Is this new behavior? I've had major problems this weekend with this. Usually I only see an occasional port in use error. The timeouts are new.AlanM wrote: I get periodic errors when using the bluetooth with timeouts or port in use problems and it makes me nervous, so I only load when I really need to.
--Colin
Re: Issues I've seen in the current Dev Library.
For which mode?AlanM wrote:Good idea. So it just stays at the threshold all the way down to 0, and then briefly stops at 0 and right back up to threshold?
Re: Issues I've seen in the current Dev Library.
Not sure. I have only had one for a couple of weeks. Is it possible that it times out when the wifi is being used already since they kind of preempt each other being on the same wires?cosmith71 wrote:Is this new behavior? I've had major problems this weekend with this. Usually I only see an occasional port in use error. The timeouts are new.AlanM wrote: I get periodic errors when using the bluetooth with timeouts or port in use problems and it makes me nervous, so I only load when I really need to.
--Colin
Re: Issues I've seen in the current Dev Library.
For the sine one that you said you changed.lnevo wrote:For which mode?AlanM wrote:Good idea. So it just stays at the threshold all the way down to 0, and then briefly stops at 0 and right back up to threshold?
Re: Issues I've seen in the current Dev Library.
No i think it will just travel between threshold and speed. Otherwise it would spend an inordinate amount of time at the threshold value.
Re: Issues I've seen in the current Dev Library.
In the last 3 days my random wave mode has choosen Gyre.
I don't think that is a random coincidence?
I can't see what (if any thing) in the threshold dev library that I've been running that would cause that.
And even though I'm the first to point towards my lack of coding knowledge. I don'tvsrr how adding ", Gyre" to my list of optional modes would have done it either.
Not a major thing. I pulled Gyre out of the options for nowz bit I thought I would mention it.
I don't think that is a random coincidence?
I can't see what (if any thing) in the threshold dev library that I've been running that would cause that.
And even though I'm the first to point towards my lack of coding knowledge. I don'tvsrr how adding ", Gyre" to my list of optional modes would have done it either.
Not a major thing. I pulled Gyre out of the options for nowz bit I thought I would mention it.
Re: Issues I've seen in the current Dev Library.
Didn't you just include that mode for testing? Can you post the code you've been using again so i can check it out. Try putting Gyre in a different slot in the array. The thing about random numbers is they don't always seem random... plus the arduino doesn't seed the random number so if you keep bouncing the controller it may end up being the same random result each day.
Re: Issues I've seen in the current Dev Library.
I'll try later today.
Right now I'm tearing apart a swing set.
Right now I'm tearing apart a swing set.
Re: Issues I've seen in the current Dev Library.
I was trying it for testing, but then I decided to leave it in and see how I like the mode.
I just uploaded it with Gyre in the middle of the options and it came up in Else mode after the Reboot, so it may be as you were saying about how the Arduino handles random numbers and reboots.
Here is the code I was testing with.
The code I have in there now is changed a little bit to narrow down the issue with the Muti WL sensor dropping.
I just uploaded it with Gyre in the middle of the options and it came up in Else mode after the Reboot, so it may be as you were saying about how the Arduino handles random numbers and reboots.
Here is the code I was testing with.
The code I have in there now is changed a little bit to narrow down the issue with the Muti WL sensor dropping.
Code: Select all
#include <ReefAngel_Features.h>
#include <Globals.h>
#include <RA_Wifi.h>
#include <Wire.h>fF
#include <OneWire.h>
#include <Time.h>
#include <DS1307RTC.h>
#include <InternalEEPROM.h>
#include <RA_NokiaLCD.h>f
#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>
// Define Relay Ports by Name
#define Actinic_Lights 1
#define Day_Lights 2
#define Kalkwasser 3
#define Pumps 4
#define Sump_Fan 5
#define DeNit_Doser 6
#define DeNit_Pump 7
#define ATO_Pump 8
#define Unused Box1_Port1
#define Feeder Box1_Port2
#define Unused Box1_Port3
#define Unused Box1_Port4
#define Unused Box1_Port5
#define Unused Box1_Port6
#define Unused Box1_Port7
#define Dummy Box1_Port8
////// Place global variable code below here
// Does not need to be global.
// unsigned long ATOUpdate=0;
////// 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 = 0;
// Ports toggled in Water Change Mode
ReefAngel.WaterChangePorts = Port4Bit;
ReefAngel.WaterChangePortsE[0] = Port1Bit;
// Ports toggled when Lights On / Off menu entry selected
ReefAngel.LightsOnPorts = Port1Bit | Port2Bit;
// Ports turned off when Overheat temperature exceeded
ReefAngel.OverheatShutoffPorts = Port1Bit | 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( 825 );
//Set Standard Menu
ReefAngel.AddStandardMenu();
//Water Level
ReefAngel.AddMultiChannelWaterLevelExpansion();
//Webserver Authentication
//ReefAngel.Network.WifiAuthentication("Sacohen:xxxxxxxx");
//DDNS Server
ReefAngel.DDNS("xxxxxxxx");
// Feeeding and Water Change mode speed
ReefAngel.DCPump.FeedingSpeed=0;
ReefAngel.DCPump.WaterChangeSpeed=0;
ReefAngel.DCPump.DaylightChannel=Sync; // Now you're pump will be affected by the portal settings.
ReefAngel.DCPump.ActinicChannel=AntiSync; // Now you're pump will be affected by the portal settings.
ReefAngel.DCPump.AntiSyncOffset=85;
// Ports that are always on
ReefAngel.Relay.On( Pumps );
ReefAngel.Relay.On( Dummy );
////// Place additional initialization code below here
////// Place additional initialization code above here
}
void loop()
{
ReefAngel.StandardLights( Actinic_Lights,12,0,22,0 );
ReefAngel.StandardLights( Day_Lights,13,0,21,0 );
ReefAngel.StandardLights( Sump_Fan,13,0,21,0 );
ReefAngel.WaterLevelATO(0,ATO_Pump,720,28,31);
if ( hour()>=13 && hour()<21 )
ReefAngel.PWM.SetChannel( 5, 0 );
else
ReefAngel.PWM.SetChannel( 5, PWMSlope(21,0,13,0,0,MoonPhase() ,60,0) );
////// Place your custom code below here
//Mix Kalkwasser
static unsigned long Kalk_Mixing = 0;
static unsigned long stopTime = 0;
static byte prevWL=0;
if (ReefAngel.WaterLevel.GetLevel(1)==100 && prevWL<100) {
stopTime=now()+3600; // Get time one hour from now.
}
prevWL = ReefAngel.WaterLevel.GetLevel(1); // Store the water level
if (now() < stopTime) { ReefAngel.Relay.On(Kalkwasser); } else { ReefAngel.Relay.Off(Kalkwasser); }
//AutoFeeder
static unsigned long autofeeding = 0;
if ((now()%SECS_PER_DAY==64800)) //if it is 6 pm
{
ReefAngel.FeedingModeStart(); //START FEEDING MODE
}
if (ReefAngel.DisplayedMenu==FEEDING_MODE)
{
if ( autofeeding == 0 ) {
autofeeding = now(); //set the time of the start of feeding to variable feeding
}
if ((now()-autofeeding>=60) && (now()-autofeeding<=61)) //if between 60 and 61 seconds has past
{
ReefAngel.Relay.On(Feeder); //TURN FEEDER RELAY ON
}
else
{
ReefAngel.Relay.Off(Feeder); //TURN FEEDER RELAY OFF
}
} else {
if ( autofeeding > 0 ) {
autofeeding = 0;
}
}
// DeNitrate Routine
int DeNit_Offset=3600;
int DeNit_Repeat=21600;
int DeNit_Doser_Offset=1200;
int DeNit_Doser_Runtime=600;
int DeNit_Pump_Runtime=1200;
int DeNit_ATO_Offtime=1500;
// Pump comes on first
ReefAngel.Relay.Set(DeNit_Pump,(now()-DeNit_Offset)%DeNit_Repeat<DeNit_Pump_Runtime); // Runs denitrator pump
// Doser comes on second
ReefAngel.Relay.Set(DeNit_Doser,((now()-DeNit_Offset)-DeNit_Doser_Offset)%DeNit_Repeat<DeNit_Doser_Runtime); // Runs denitrator doser
// Disable ATO
if ( (now()-3600)%21600<DeNit_ATO_Offtime) ReefAngel.WaterLevelATO(0,ATO_Pump,720,0,1);
// Delay WL ATO after water change and DeNit_Dosing
static time_t wcTimer=0;
if (ReefAngel.DisplayedMenu == WATERCHANGE_MODE) wcTimer=now();
// First 10 minutes after WC disable ATO
if (now()-wcTimer >= 0 && now()-wcTimer < 600)
ReefAngel.WaterLevelATO(0,ATO_Pump,720,0,1);
// Track Salinity low duration
static unsigned long lastGoodSal;
static boolean lowSalFlag;
// Salinity is good, update counter
if (ReefAngel.Params.Salinity>=335) lastGoodSal=now();
// Counter hasn't been updating in 300 seconds..
if (now()-lastGoodSal>300) {
lowSalFlag=true; // Salinity is definitely below 33.5
} else {
lowSalFlag=false; // Salinity back to normal
}
// Disable ATO if lowSalFlag is true
if (lowSalFlag) ReefAngel.WaterLevelATO(0,ATO_Pump,720,0,1);
// Disable ATO if ATO High IsActive()
if (ReefAngel.HighATO.IsActive())
ReefAngel.WaterLevelATO(0,ATO_Pump,720,0,1);
// 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[] = { ReefCrest, Lagoon, Constant, TidalSwell, ShortPulse, LongPulse, Else, Gyre };
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<3600) {
// Continue NTM for the 60 minutes
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Duration=InternalMemory.DCPumpDuration_read();
ReefAngel.DCPump.Mode=NutrientTransport;
} else if (now()%SECS_PER_DAY<43200 || now()%SECS_PER_DAY>=79200) { // 12pm / 10pm
// Night mode (go to 30%)
ReefAngel.DCPump.UseMemory=false;
ReefAngel.DCPump.Duration=InternalMemory.DCPumpDuration_read();
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();
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( "Sacohen","xxxxxxxx" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
int x,y;
char text[10];
// Parameters
#if defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 20, ReefAngel.Params,
ReefAngel.PWM.GetDaylightValue(), ReefAngel.PWM.GetActinicValue() );
#else // defined DisplayLEDPWM && ! defined RemoveAllLights
ReefAngel.LCD.DrawMonitor( 15, 20, ReefAngel.Params );
#endif // defined DisplayLEDPWM && ! defined RemoveAllLights
pingSerial();
// Water Level
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,75,57, "WL:" );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,99,57, ReefAngel.WaterLevel.GetLevel() );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,66,66, "WL 1:" );
ReefAngel.LCD.DrawText( COLOR_DARKGOLDENROD,DefaultBGColor,99,66, ReefAngel.WaterLevel.GetLevel(1) );
//Salinity
ConvertNumToString(text, ReefAngel.Params.Salinity, 10);
strcat(text," ");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,39,75,"Salinity:");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,99,75,text);
pingSerial();
// Main Relay Box
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 92, TempRelay );
pingSerial();
TempRelay = ReefAngel.Relay.RelayDataE[0];
TempRelay &= ReefAngel.Relay.RelayMaskOffE[0];
TempRelay |= ReefAngel.Relay.RelayMaskOnE[0];
ReefAngel.LCD.DrawOutletBox(12, 104, TempRelay);
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
void DrawCustomGraph()
{
}
Re: Issues I've seen in the current Dev Library.
Its because you've been rebooting every day. If you look in my setup() function you can see how the random function gets "seeded" so that each reboot would give a different random number. I believe I use the current time as the seed.
Issues I've seen in the current Dev Library.
Roberto, does setting Feeding_Start recognize the speed arg on the RF module, or does it follow the speed set by the driver?
In ReefAngel.cpp we set the speed to 0 when going into feeding mode and I was thinking of adding the WaterChange and FeedingMode speed to the RF class like we did with DCPump.
RF.SetMode(Feeding_Start,0,0);
In ReefAngel.cpp we set the speed to 0 when going into feeding mode and I was thinking of adding the WaterChange and FeedingMode speed to the RF class like we did with DCPump.
RF.SetMode(Feeding_Start,0,0);
Re: Issues I've seen in the current Dev Library.
Ok, I have a patch I will try and if it works, I have a pull request ready
Re: Issues I've seen in the current Dev Library.
The drivers will dictate the vortech speed on feeding.
You can adjust it directly on the driver itself. Check the vortech manual for more info.
You can adjust it directly on the driver itself. Check the vortech manual for more info.
Roberto.
Re: Issues I've seen in the current Dev Library.
Yeah, I know. I'm thinking though of having FeedingSpeed if set not have the RF go into feeding mode, but in constant whatever speed RF.FeedingSpeed is set to. This way the default is the current behavior, but if someone wanted to override, then it would go into Constant ReefAngel.RF.FeedingSpeed. Changing the drivers is a pain in the ass and then you have to do it on all of them. I'd rather do it in one place and be able to change it on the fly. About to try that now.
Re: Issues I've seen in the current Dev Library.
That worked exceedingly well. I tested with the value set and also with it cleared. The default works fine. I'll be making a pull request for this one shortly
Re: Issues I've seen in the current Dev Library.
Roberto, merge that patch it's awesome
Re: Issues I've seen in the current Dev Library.
It's my new favorite feature
Re: Issues I've seen in the current Dev Library.
For the record I like 3% is a perfect amount
Roberto,
What else is left for us to release 1.1.11? Are there still hardware support items that you're dependent on for release? I haven't seen any bugs at this point other than to confirm the ph/date&time issue I had.
I think we should add a Release_Notes.txt file in the repo so we can all start working on our contrib items in one place. That would taunt me to actually add things there.
I know a few people are testing but we should probably also make an official call for additional beta testers.
Is there portal support still pending for things (threshold settings?)
I know we talked about doing some redesign on some things like threshold and offsets per channel in the PWM library...lets get 1.1.11 out so we can start on those for 1.1.12
Anything I missed?
Roberto,
What else is left for us to release 1.1.11? Are there still hardware support items that you're dependent on for release? I haven't seen any bugs at this point other than to confirm the ph/date&time issue I had.
I think we should add a Release_Notes.txt file in the repo so we can all start working on our contrib items in one place. That would taunt me to actually add things there.
I know a few people are testing but we should probably also make an official call for additional beta testers.
Is there portal support still pending for things (threshold settings?)
I know we talked about doing some redesign on some things like threshold and offsets per channel in the PWM library...lets get 1.1.11 out so we can start on those for 1.1.12
Anything I missed?
Re: Issues I've seen in the current Dev Library.
The only thing I know about for the Portal was the server authentication. Roberto may already have that set up in then next version of the Portal.
We also need to get with Reeftronics to set up for that feature or else you lose connectivity with them.
We also need to get with Reeftronics to set up for that feature or else you lose connectivity with them.
Re: Issues I've seen in the current Dev Library.
I don't think there is anything pending except for making sure it is working.
Can you add the release notes file to the github?
Can you add the release notes file to the github?
Roberto.
Issues I've seen in the current Dev Library.
Cool. I'll add the file and review the commits to see what can start going in. I'll get that other stuff verified too.
Steve, for reeftronics you should be able to add http authentication in the URL for your controller. Its not a portal issue they poll you directly. Just ask them to change the URL to:
http://user:password@your.ip.address:2000/r99
Steve, for reeftronics you should be able to add http authentication in the URL for your controller. Its not a portal issue they poll you directly. Just ask them to change the URL to:
http://user:password@your.ip.address:2000/r99
Re: Issues I've seen in the current Dev Library.
I know it's not a Portal issue.
I was saying that according to Roberto, the current Portal is not set for the server authentication.
I was also saying that Reeftronics would need something similar, but I can email Russ and see if he can do that with the URL.
I was saying that according to Roberto, the current Portal is not set for the server authentication.
I was also saying that Reeftronics would need something similar, but I can email Russ and see if he can do that with the URL.
Re: Issues I've seen in the current Dev Library.
That should work you can test that too to make sure the URL pulls up properly. He might have a problem storing it but i doubt it. He just uses php so shouldn't be a big deal.
Re: Issues I've seen in the current Dev Library.
Any issue to use the README.md file for the release notes? Not sure if it's there for something like the mainpage.h
Re: Issues I've seen in the current Dev Library.
Whatever you have on readme, gets displayed on the main page of github.com
Sent from my Galaxy S5 with Tapatalk
Sent from my Galaxy S5 with Tapatalk
Roberto.
Re: Issues I've seen in the current Dev Library.
Well, I've created an initial stab at the release notes. I've made a pull request for it. You can track the branch "release" in my repo if you want to work on it until it's merged.
Ahh.. so I'll revert and move it to a separate file.
Edit: Updated. Also incremented version in ReefAngel.h to 1.1.1
Ahh.. so I'll revert and move it to a separate file.
Edit: Updated. Also incremented version in ReefAngel.h to 1.1.1
Re: Issues I've seen in the current Dev Library.
I had this in the Reef Angel Status thread, but it's more appropriate here.
--Colin
To which Lee replied:cosmith71 wrote:Possible bug? Library or programming issue?
On the dimming expansion screen:
Channel 0 is at 0%. I override to value x. Value changes to **x%. Clear override. Value changes to x% (not zero) and light stays on at x%. The only way to get it back to zero is to override to 0 and then clear.
I'm using this:
Code: Select all
ReefAngel.PWM.Channel0PWMSlope(30);
--Colin
I'm wondering if it would be better if this returned the min % in the off hours instead of the previous value?lnevo wrote:
Expected behavior
Right which only sets the channel during your StandardLights time otherwise it uses the channels previous value.
--Colin