The part with include files was easy, but I'm not sure where to go next.
I have PDE with custom screen and simple menu. I'd like to keep screen but menu can change if it is simpler to do.
I also have some email alerts, that looks like can be removed and moved to be handled by portal.
I do not have any expansions, only controller itself with WiFi attachment.
Does anyone has an example of the code that works with v0.9 libraries or can translate my PDE to new version?
I would try myself, but I'm afraid to loose controller for several days if something goes wrong (it is powering my tank now). And looks like there is no easy way to have v0.8 installed with v0.9 for quick upload of older version.
Code: Select all
// RAMenus.pde
//
// This version designed for v0.8.5 Beta 10 and later
#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_Colors.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 <ReefAngel.h>
// Port1 - Single ATO
// Port2 - Heater
// Port3 - Daylight LED
// Port4 - Actinic LED
// Port5 - Wavemaker 1
// Port6 - Wawemaker 2
// Port7 - Return Pump
// Port8 - Skimmer
void DrawCustomMain()
{
byte x = 6;
byte y = 2;
byte t;
char text[7];
ReefAngel.LCD.DrawDate(6, 2);
ReefAngel.LCD.Clear(COLOR_BLACK, 1, 11, 132, 11);
pingSerial();
x = 4;
y += 12;
ReefAngel.LCD.DrawText(COLOR_BLACK, COLOR_WHITE, x, y, "Temperature:");
y += 10;
ConvertNumToString(text, ReefAngel.Params.Temp[T1_PROBE], 10);
pingSerial();
ReefAngel.LCD.DrawHugeNumbers(COLOR_BLUE, COLOR_WHITE, x, y, text);
x = 76;
ReefAngel.LCD.DrawText(COLOR_BLUE,COLOR_WHITE,x,y,"LED");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T2_PROBE], COLOR_BLUE, x+28, y, 10);
ReefAngel.LCD.DrawText(COLOR_BLUE,COLOR_WHITE,x,y+9,"ROOM");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.Temp[T3_PROBE], COLOR_BLUE, x+28, y+9, 10);
pingSerial();
ReefAngel.LCD.Clear(COLOR_BLACK, 1, 42, 132, 42);
x = 4;
y = 45;
ReefAngel.LCD.DrawText(COLOR_BLUE,COLOR_WHITE,x,y,"pH");
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.Params.PH, COLOR_BLUE, x+28, y, 100);
y = 55;
// ReefAngel.LCD.DrawText(COLOR_BLACK,DefaultBGColor,x,y,"ATO");
// atoH = "Off";
// if (ReefAngel.HighATO.IsActive()) atoH = "On";
// atoL = "Off";
// if (ReefAngel.LowATO.IsActive()) atoL = "On";
// ReefAngel.LCD.DrawText(COLOR_BLACK,DefaultBGColor,x+28,y,"Hi "+atoH+" Low "+atoL);
x = 76;
y = 45;
ReefAngel.LCD.DrawText(COLOR_BLUE,COLOR_WHITE,x,y,"DayL");
x=104;
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.PWM.GetDaylightValue(),COLOR_BLUE, x, y, 1);
t = intlength(ReefAngel.PWM.GetDaylightValue()) + 1;
t *= 5;
ReefAngel.LCD.DrawText(COLOR_BLUE, COLOR_WHITE, x+t, y, "%");
x = 76;
y = 55;
ReefAngel.LCD.DrawText(COLOR_BLUE, COLOR_WHITE,x,y,"ActL");
x=104;
ReefAngel.LCD.DrawSingleMonitor(ReefAngel.PWM.GetActinicValue(),COLOR_BLUE, x, y, 1);
t = intlength(ReefAngel.PWM.GetActinicValue()) + 1;
t *= 5;
ReefAngel.LCD.DrawText(COLOR_BLUE, COLOR_WHITE, x+t, y, "%");
pingSerial();
x = 12;
y = 118;
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox(x, y, TempRelay);
}
void DrawCustomGraph()
{
// ReefAngel.LCD.DrawGraph(5,50);
}
void setup()
{
ReefAngel.Init(); //Initialize controller
ReefAngel.SetTemperatureUnit(0);
ReefAngel.PWM.SetActinic(0);
ReefAngel.PWM.SetDaylight(0);
// Set the ports that get toggled on & off during the following modes
// To enable a port to be toggled, place a 1 in the appropriate position
// Uncomment and update as needed
// Port 87654321
ReefAngel.FeedingModePorts = B11110000;
ReefAngel.WaterChangePorts = B11110000;
ReefAngel.OverheatShutoffPorts = B01011100;
ReefAngel.LightsOnPorts = B00001110;
ReefAngel.Relay.On(Port7); // Return Pump
ReefAngel.Relay.On(Port8); // Skimmer
}
void loop()
{
ReefAngel.Portal("serhiyi", "xxx");
// ATO
ReefAngel.SingleATOLow(Port1);
if (ReefAngel.HighATO.IsActive()) { // Overwrite ATO OFF - no fresh water
ReefAngel.Relay.Off(Port1);
if (ReefAngel.LowATO.IsActive()) { // ATO low and high ON - no water
ReefAngel.Relay.Off(Port7); // Return Pump OFF
ReefAngel.Relay.Off(Port8); // Skimmer OFF
}
}
ReefAngel.StandardHeater(Port2);
ReefAngel.MHLights(Port3);
ReefAngel.StandardLights(Port4);
ReefAngel.Wavemaker1(Port5);
ReefAngel.Wavemaker2(Port6);
ReefAngel.PWM.SetActinic(PWMSlope(InternalMemory.StdLightsOnHour_read(),InternalMemory.StdLightsOnMinute_read(),InternalMemory.StdLightsOffHour_read(),InternalMemory.StdLightsOffMinute_read(),0,InternalMemory.LEDPWMActinic_read(),90,ReefAngel.PWM.GetActinicValue()));
ReefAngel.PWM.SetDaylight(PWMSlope(InternalMemory.MHOnHour_read(),InternalMemory.MHOnMinute_read(),InternalMemory.MHOffHour_read(),InternalMemory.MHOffMinute_read(),0,InternalMemory.LEDPWMDaylight_read(),60,ReefAngel.PWM.GetDaylightValue()));
ReefAngel.ShowInterface();
}
I'm getting lost. I probably will have to give it a try next week, but if I can get any help I will feel safer.
Thanks in advance.