Added some code using 2 memory slots so that I can adjust it remotely with the android app. Until the new function is available, this is how I did it...
/* Water level ATO
Using memory locations:
Location 258 (ATO Level Min Value)
Location 259 (ATO Level Max Value)
**NOTE: I am using the memory locations used on the PWM expansion module, so if you
are using the PWM expansin module, I recommend you use another memory location.
If the current water level is below the ATO Level Min Value, top off until
you reach ATO Level Max Value, else don't.
Also, if the current water level falls below the measureable amount (0) turn off
the return and skimmer.
*/
if (ReefAngel.WaterLevel.GetLevel()<topofflevel)
{
topofflevel=InternalMemory.read(259);
ReefAngel.Relay.On(Port5);
}
else
{
topofflevel=InternalMemory.read(258);
ReefAngel.Relay.Off(Port5);
}
// If water level equals 0, turn off return relay; else, keep it on
if (ReefAngel.WaterLevel.GetLevel()==0)
{
ReefAngel.Relay.Off(Port7);
ReefAngel.Relay.Off(Port8);
}
else
{
ReefAngel.Relay.On(Port8);
ReefAngel.Relay.DelayedOn( Port7 );
}
Last edited by alexwbush on Mon Sep 24, 2012 10:34 pm, edited 1 time in total.
Haha, thanks. I got a little lazy and used a float switch mount I wasn't using. It has been reborn a water level holder. Roberto, also something strange I found... I struggled using memory locations 1000 and 1001. They just wouldn't reflect in my unit when set. I had no problem when I decided to use the memory locations used on the dimming expansion. Not sure why.
I've been running about a week and a half so far. Only issues I've had:
10/3 Vortech wet side magnet disconnected from dry side
10/8 Water level expansion strayed a bit. I have my friend some over and jiggle it around, works great again.
I have a friend watching the tank who knows nothing about saltwater and I'll be home to check on it in a little less than 2 weeks now.
Ok, long overdue for an update. I'll try to post pics soon!
8/19 Added a BRS dual reactor for GFO and carbon
8/19 Added a BRS bio pellet reactor
8/19 Started messing with my RA dosing pumps. I also bought the dosing kit from BRS
I am trying to figure out how to get rid of small white particles in my water column. I think I might end up having to replace the substrate in the display. It might be too fine and I think it's being kicked up by the goby and other bottom dwellers.
You should first figure out what they are.
Could be coming from your 2 part too, which is a bad thing
Low mag would cause that precipitation. Google the chemical reaction that happens when those chemical hit the water.
Better last than never. Updating my code. I cannot get Radions to work at this time. It's a known issue with the latest firmware on Radions. If you have any suggestions, please let me know. I just coded an auto water change where I replace ~5 gallons automatically once setup. Also updated my entire code on the first page. There are still a lot of testing lines in there edited out.
/* Automatic water change
Trigger by Box2_Port3 (fake relay) that can be triggered by portal or RA app. Will turn on waste pump in sump is water
level is above low sump level (memory location 340) or if waste bucket is full. Then will turn off waste pump and turn on
fresh water pump to pump in water until sump water level is returned to normal. Meanwhile, return, skimmer, and heater
should continue to operate normally.
Utilized ports:
Port 4 ATO: toggled off in auto water change
Box1_Port5 Skimmer: will not exit mode unless skimmer is on (to account for lower water level when on)
Box1_Port6 Sump light: toggled on in auto water change
Box1_Port7 Waste water pump: Maxijet 1200 located in sump with drain hose to waste bucket
Box1_Port8 Fresh water pump:
Box2_Port3 Auto Water Change trigger: fake relay box used for setting various "modes"
Variables:
WaterLevel.GetLevel(0) Water level sensor in pump: Returns a value 0-100+
HighATO.IsActive() Float switch on waste bucket: Returns a value to indicate whether float switch is on bottom or floating
Memory locations:
Location 331 (ATO Level Low Value set @ 62)
Location 332 (ATO Level High Value) (NOT UTILIZED, but could be helpful for changes)
Location 340 (Water Level 1 Min Value -> Used for low water level in sump... set @ 25)
*/
byte topofflevel=InternalMemory.read(332);
byte sumplowlevel=InternalMemory.read(340);
if (ReefAngel.Relay.Status(Box2_Port3)==1)
{
ReefAngel.Relay.Override(Box1_Port6, 1); //turn on sump light
ReefAngel.Relay.Override(Port4, 0); //turn off ATO
/* Drain waste water from sump if:
1. Water level is above the low sump level (Location 340/"Water Level 1 Min Value")
2. AND the ATO high level is not met (waste bucket NOT full)
3. AND water fill is not on */
if (ReefAngel.WaterLevel.GetLevel(0) > sumplowlevel && ReefAngel.HighATO.IsActive() && ReefAngel.Relay.Status(Box1_Port8)==0)
{
ReefAngel.Relay.On(Box1_Port7); //turn on drain/waste pump
}
else ReefAngel.Relay.Off(Box1_Port7); //turn off drain/waste pump
/* End waste water */
/* Fill with fresh salt water if:
1. Water level is below normal high level of autotop off (Location 332/"ATO Level High Value")
2. AND waste pump is not on
3. AND skimmer is on (to account for water level difference) */
if (ReefAngel.WaterLevel.GetLevel(0) < topofflevel && ReefAngel.Relay.Status(Box1_Port7)==0 && ReefAngel.Relay.Status(Box1_Port5)==1)
{
ReefAngel.Relay.On(Box1_Port8); //turn on drain/waste pump
}
else ReefAngel.Relay.Off(Box1_Port8); //turn off fresh saltwater pump
/* End clean water fill */
/* Exit auto water change (make Box2_Port3 auto) if:
1. Waste pump is off
2. AND fresh water pump is off */
if (ReefAngel.Relay.Status(Box1_Port7)==0 && ReefAngel.Relay.Status(Box1_Port8)==0)
{
ReefAngel.Relay.Override(Box2_Port3, 2); //auto water change back to auto
}
}
else
{
ReefAngel.Relay.Override(Box1_Port6, 2); //auto sump light
ReefAngel.Relay.Override(Port4, 2); //auto ATO
}