WIFI Cloud and WIFI Attachment on 2 RA plusses
WIFI Cloud and WIFI Attachment on 2 RA plusses
I have to reef angels.
One is setup with the new cloud attachment and the other is using my old WIFI attachment.
Both are connected but not sure any data. Is the Cloud using port 2000 to transmit? Since its not need port forwarding I thought I didn't need to change the port.
If I do need to change the port on one? Which one should it be and how do I do it
One is setup with the new cloud attachment and the other is using my old WIFI attachment.
Both are connected but not sure any data. Is the Cloud using port 2000 to transmit? Since its not need port forwarding I thought I didn't need to change the port.
If I do need to change the port on one? Which one should it be and how do I do it
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
None of them need port forwarding to transmit data.
In order to connected to the standard WiFi from outside, you will need port forwarding.
The cloud WiFi doesn't need port forwarding as the connection is done through the cloud server.
In order to connected to the standard WiFi from outside, you will need port forwarding.
The cloud WiFi doesn't need port forwarding as the connection is done through the cloud server.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
then I'm not getting any outlet data from the RA with wifi attachment
and the other RA with Cloud is just saying connected but no data displayed.
any guidance will be appreciated
and the other RA with Cloud is just saying connected but no data displayed.
any guidance will be appreciated
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Do I need to have to different user names for each one?
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Did you reset your forum password?
If you are using this login for cloud WiFi, there is note that you must reset your password because this login was created much earlier than we launched the cloud server.
If you are using this login for cloud WiFi, there is note that you must reset your password because this login was created much earlier than we launched the cloud server.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
I did reset the password but not the user name. How do I reset the user name on the WIFI attachment?
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
not the username. just password and only if you are using that username/password on the cloud wifi.
The regular wifi uses the code in your RA.
The regular wifi uses the code in your RA.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
According to the log, the portal has been getting data just fine for this username.
http://forum.reefangel.com/status/chart ... &filter=t1
http://forum.reefangel.com/status/chart ... &filter=t1
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
yes the one that is registering is the WIFI cloud. that one is running now. only question I have is what app do I need to download on an android phone to get the uapp working.
to display on my tablet. or is this old meant for web browser
also the data is not showing on the uapp web browser says connected but no relays and all parameters are 0.0
to display on my tablet. or is this old meant for web browser
also the data is not showing on the uapp web browser says connected but no relays and all parameters are 0.0
Last edited by ecam on Tue Aug 22, 2017 9:12 pm, edited 1 time in total.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
http://forum.reefangel.com/uapp/
Bookmark to home screen.
It will look and feel just like a native app.
Bookmark to home screen.
It will look and feel just like a native app.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Okay. I've changed the portal password at least 3x already. I'm still not getting any data on the uapp browser.
Any thoughts.
The user name and password is correct
Any thoughts.
The user name and password is correct
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Did you enable cloud WiFi when generating the code for your RA?
Are you using ecam for the cloud wifi or regular one?
Are you using ecam for the cloud wifi or regular one?
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
ecam for CLoud wifi yes.......
how do I enable Cloud WIFI.... I followed all the instructions on 2.0 manual and for coad upload it says to select Cloud wifi Attachment. However the port is not shown.. so I do not have an upload button.
Should I be select the RA unit to upload that code?
how do I enable Cloud WIFI.... I followed all the instructions on 2.0 manual and for coad upload it says to select Cloud wifi Attachment. However the port is not shown.. so I do not have an upload button.
Should I be select the RA unit to upload that code?
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
So i got the something to work....
code was succesfully uploaded. but it gets stuck on attempting to upload code to RA_Cloud on local prt COM 5 (my correct port).
I am using manual 2.0
code was succesfully uploaded. but it gets stuck on attempting to upload code to RA_Cloud on local prt COM 5 (my correct port).
I am using manual 2.0
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
which manual have you followed?
You have the rev 2 module. There is no code upload instruction in the manual for the attachment itself.
Either you download the wrong version or the instructions were not clear. If the later, please let me know which section you got confused, so I can make a better instruction set.
The rev 2 cloud WiFi attachments only need a cloud enabled code on your RA and the entire configuration of the attachment is done on your phone.
You have the rev 2 module. There is no code upload instruction in the manual for the attachment itself.
Either you download the wrong version or the instructions were not clear. If the later, please let me know which section you got confused, so I can make a better instruction set.
The rev 2 cloud WiFi attachments only need a cloud enabled code on your RA and the entire configuration of the attachment is done on your phone.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Here is what I did... I used rev 2.0... I connected reef angel and followed steps with reef angel wifi and got the light blinking cyan,... that was easy as heck... np easy to follow.
after that all hell breaks loose....
uploading code to RA controller
- following those steps I select WIFI attachment enter my information and encrypt.. however, I do not get the upload button because it is asking me for a com port... that doesn't exist because I do not have my ttl cable connected - as per instructions.
if I connect ttl. I get a com which in my case Is 5.. but it uploads to cloud then says trying to update to local Com 5. that breaks and doesn't wrk.....
testing it .... says connected but zero across the board with no relay information on outlets...
after that all hell breaks loose....
uploading code to RA controller
- following those steps I select WIFI attachment enter my information and encrypt.. however, I do not get the upload button because it is asking me for a com port... that doesn't exist because I do not have my ttl cable connected - as per instructions.
if I connect ttl. I get a com which in my case Is 5.. but it uploads to cloud then says trying to update to local Com 5. that breaks and doesn't wrk.....
testing it .... says connected but zero across the board with no relay information on outlets...
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Ok, I understand where the break down was.
I just assumed you knew how to upload codes to your RA using the webwizard, which is clear that it is not the case.
I'll update the manual, but in the mean time, the process of uploading code to your RA is virtually the same as using the Arduino IDE.
Connect the USB cable to your computer and RA.
Select the board and port
Click upload.
Just make sure you select cloud wifi and not the regular wifi.
What you are describing is what would happen is the upload fails. Just the same way as the Arduino IDE, if board or port is wrong or there is something wrong with your RA, it will fail.
Are you able to upload any code to that RA using the Arduino IDE? If so, you should also be able to upload using the webwizard to the exact same com port you selected on the IDE. Make sure you select RA+ (assuming you have RA+) on both IDE and webwizard.
I just assumed you knew how to upload codes to your RA using the webwizard, which is clear that it is not the case.
I'll update the manual, but in the mean time, the process of uploading code to your RA is virtually the same as using the Arduino IDE.
Connect the USB cable to your computer and RA.
Select the board and port
Click upload.
Just make sure you select cloud wifi and not the regular wifi.
What you are describing is what would happen is the upload fails. Just the same way as the Arduino IDE, if board or port is wrong or there is something wrong with your RA, it will fail.
Are you able to upload any code to that RA using the Arduino IDE? If so, you should also be able to upload using the webwizard to the exact same com port you selected on the IDE. Make sure you select RA+ (assuming you have RA+) on both IDE and webwizard.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
And just to be sure you understood. If the code in the RA+ is not update, it is factual that you will not get anything on Uapp and thus you will see zeros.
RA+ not connected to cloud server means Uapp doesn't get any updates.
Uapp never getting any updates means evertyhing is zero.
RA+ not connected to cloud server means Uapp doesn't get any updates.
Uapp never getting any updates means evertyhing is zero.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Manual updated with webwizard page: http://forum.reefangel.com/viewtopic.php?f=8&t=6199
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Getting this error on the code generated...
Code: Select all
Compiling code for RA_PLUS board
firmware.ino:29:26: error: 'MQTTServer' was not declared in this scope
PubSubClient CloudClient(MQTTServer, MQTTPORT, mqttcallback, mqttclient);
^
firmware.ino:29:38: error: 'MQTTPORT' was not declared in this scope
PubSubClient CloudClient(MQTTServer, MQTTPORT, mqttcallback, mqttclient);
^
firmware.ino: In function 'void loop()':
firmware.ino:52:22: error: 'WIFI_SSID' was not declared in this scope
Serial.println(WIFI_SSID); // print the network name (SSID);
^
firmware.ino:53:33: error: 'WIFI_PASS' was not declared in this scope
if (WiFi.begin(WIFI_SSID, WIFI_PASS) == WL_CONNECTED)
^
firmware.ino:128:38: error: 'PortalServer' was not declared in this scope
if (portalclient.connect(PortalServer, 80)) {
^
firmware.ino:152:40: error: 'CLOUD_USERNAME' was not declared in this scope
char pub_buffer[sizeof(CLOUD_USERNAME) + 5];
^
firmware.ino:153:25: error: 'pub_buffer' was not declared in this scope
sprintf(pub_buffer, "%s/out", CLOUD_USERNAME);
^
firmware.ino:189:30: error: 'CLOUD_USERNAME' was not declared in this scope
char sub_buffer[sizeof(CLOUD_USERNAME) + 6];
^
firmware.ino:193:15: error: 'sub_buffer' was not declared in this scope
sprintf(sub_buffer, "RA-%s", CLOUD_USERNAME);
^
firmware.ino:194:59: error: 'CLOUD_PASSWORD' was not declared in this scope
if (CloudClient.connect(sub_buffer, CLOUD_USERNAME, CLOUD_PASSWORD))
^
firmware.ino: In function 'void wdt_initialize()':
firmware.ino:258:3: error: 'GCLK' was not declared in this scope
GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4);
^
firmware.ino:258:38: error: 'GCLK_GENDIV_ID' was not declared in this scope
GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4);
^
firmware.ino:258:59: error: 'GCLK_GENDIV_DIV' was not declared in this scope
GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4);
^
firmware.ino:259:40: error: 'GCLK_GENCTRL_ID' was not declared in this scope
GCLK->GENCTRL.reg = GCLK_GENCTRL_ID(2) |
^
firmware.ino:260:23: error: 'GCLK_GENCTRL_GENEN' was not declared in this scope
GCLK_GENCTRL_GENEN |
^
firmware.ino:261:23: error: 'GCLK_GENCTRL_SRC_OSCULP32K' was not declared in this scope
GCLK_GENCTRL_SRC_OSCULP32K |
^
firmware.ino:262:23: error: 'GCLK_GENCTRL_DIVSEL' was not declared in this scope
GCLK_GENCTRL_DIVSEL;
^
firmware.ino:264:23: error: 'GCLK_CLKCTRL_ID_WDT' was not declared in this scope
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID_WDT |
^
firmware.ino:265:23: error: 'GCLK_CLKCTRL_CLKEN' was not declared in this scope
GCLK_CLKCTRL_CLKEN |
^
firmware.ino:266:23: error: 'GCLK_CLKCTRL_GEN_GCLK2' was not declared in this scope
GCLK_CLKCTRL_GEN_GCLK2;
^
firmware.ino: In function 'void wdt_enable()':
firmware.ino:271:3: error: 'WDT' was not declared in this scope
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
^
firmware.ino:271:21: error: 'WDT_CTRL_ENABLE' was not declared in this scope
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
^
firmware.ino:273:39: error: 'WDT_CONFIG_PER' was not declared in this scope
WDT->CONFIG.reg = WDT_CONFIG_PER(0xA); // 0xA = 8192 ms
^
firmware.ino:275:24: error: 'WDT_INTENCLR_EW' was not declared in this scope
WDT->INTENCLR.reg |= WDT_INTENCLR_EW;
^
firmware.ino: In function 'void wdt_disable()':
firmware.ino:282:3: error: 'WDT' was not declared in this scope
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
^
firmware.ino:282:21: error: 'WDT_CTRL_ENABLE' was not declared in this scope
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
^
firmware.ino: In function 'void wdt_reset()':
firmware.ino:288:3: error: 'WDT' was not declared in this scope
WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY;
^
firmware.ino:288:20: error: 'WDT_CLEAR_CLEAR_KEY' was not declared in this scope
WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY;
^
exit status 1
Progress: 41.38%
Your code has some errors and couldn't be compiled.
Please fix the errors above and try again.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
code generated by wizard
Code: Select all
#include <SPI.h>
#include <WiFi101.h>
#include <PubSubClient.h>
#include <RA_CustomSettings.h>
//char ssid[32];
//char pass[32];
//char username[16];
//char password[16];
unsigned long client_timeout = millis();
unsigned long wifi_connection = millis();
unsigned long serial_timeout = millis();
unsigned long led_blink = millis();
unsigned long MQTTReconnectmillis = millis();
boolean LED_status = false;
boolean PortalConnection = false;
boolean power_status = true;
boolean data_ready = false;
int status = WL_IDLE_STATUS;
WiFiServer server(2000);
WiFiClient client;
WiFiClient portalclient;
WiFiClient mqttclient;
void mqttcallback(char* topic, byte* payload, unsigned int length);
PubSubClient CloudClient(MQTTServer, MQTTPORT, mqttcallback, mqttclient);
String currentLine = ""; // make a String to hold incoming data from the client
void setup() {
Serial.begin(57600); // initialize serial communication
Serial1.begin(57600); // initialize serial communication
pinMode(6, OUTPUT); // set the LED pin mode
pinMode(7, OUTPUT); // set the LED pin mode
wdt_initialize();
wdt_enable();
}
void loop() {
wdt_reset();
status = WiFi.status();
while ( status != WL_CONNECTED) {
digitalWrite(6, true);
digitalWrite(7, false);
if (millis() - wifi_connection > 1000)
{
wifi_connection = millis();
Serial.print("Attempting to connect to Network named: ");
Serial.println(WIFI_SSID); // print the network name (SSID);
if (WiFi.begin(WIFI_SSID, WIFI_PASS) == WL_CONNECTED)
{
status = WiFi.status();
server.begin(); // start the web server on port 2000
printWifiStatus(); // you're connected now, so print out the status
digitalWrite(6, false);
digitalWrite(7, true);
}
Serial.println("Not connected...");
}
wdt_reset();
}
client = server.available(); // listen for incoming clients
if (client) { // if you get a client,
Serial.println(F("new incoming client")); // print a message out the serial port
client_timeout = millis();
while (client.connected()) { // loop while the client's connected
if (millis() - client_timeout > 2000) client.stop();
if (client.available()) { // if there's bytes to read from the client,
char c = client.read(); // read a byte, then
Serial.write(c); // print it out the serial monitor
Serial1.write(c); // send to Reef Angel
}
if (Serial1.available())
{
char c = Serial1.read();
//Serial.write(c);
currentLine += c;
serial_timeout = millis();
if (currentLine.length() == 255) {
SendData();
}
}
if (millis() - serial_timeout > 400)
{
if (currentLine.length() > 0) {
SendData();
Serial.println();
client.println();
}
}
if (millis() - led_blink > 50)
{
led_blink = millis();
LED_status = !LED_status;
digitalWrite(6, LED_status);
}
}
// close the connection:
client.stop();
Serial.println(F("incoming client disconnected"));
digitalWrite(6, false);
}
else
{
while (Serial1.available())
{
char c = Serial1.read();
currentLine += c;
if(c==10) data_ready=true;
serial_timeout = millis();
digitalWrite(6, true);
if (millis() - serial_timeout > 200 || data_ready)
{
if (currentLine.length() > 0)
{
data_ready=false;
serial_timeout = millis();
// Serial.print(currentLine);
if (currentLine.startsWith("GET"))
{
PortalConnection = true;
Serial.println(F("Connecting to Portal Server"));
if (portalclient.connect(PortalServer, 80)) {
Serial.println(F("Connected"));
// Make a HTTP request:
portalclient.print(currentLine);
portalclient.println(F(" HTTP/1.1"));
portalclient.println(F("Host: forum.reefangel.com"));
portalclient.println(F("Connection: close"));
portalclient.println();
}
else
{
Serial.println(F("Failed to connect"));
}
}
if (currentLine.startsWith("CLOUD:"))
{
//Serial.print(currentLine);
if (currentLine.length() < 32)
{
if (CloudClient.connected())
{
//Serial.println(F("Publishing "));
currentLine.replace("CLOUD:", "");
Serial.print(currentLine);
char pub_buffer[sizeof(CLOUD_USERNAME) + 5];
sprintf(pub_buffer, "%s/out", CLOUD_USERNAME);
char pub_msg[currentLine.length() + 1];
currentLine.toCharArray(pub_msg, currentLine.length() + 1);
CloudClient.publish(pub_buffer, pub_msg);
}
}
else
{
Serial.print(F("Error on incoming data: "));
Serial.println(currentLine.length());
}
}
currentLine = "";
digitalWrite(6, false);
}
}
}
digitalWrite(6, false);
while (portalclient.available()) {
char c = portalclient.read();
// Serial.write(c);
}
if (PortalConnection && !portalclient.connected()) {
PortalConnection = false;
// Serial.println();
Serial.println(F("Disconnecting from Portal Server"));
digitalWrite(6, false);
portalclient.stop();
}
}
CloudClient.loop();
if (millis() - MQTTReconnectmillis > 5000)
{
if (!CloudClient.connected())
{
char sub_buffer[sizeof(CLOUD_USERNAME) + 6];
MQTTReconnectmillis = millis();
digitalWrite(6, true);
Serial.println(F("MQTT Connecting..."));
sprintf(sub_buffer, "RA-%s", CLOUD_USERNAME);
if (CloudClient.connect(sub_buffer, CLOUD_USERNAME, CLOUD_PASSWORD))
{
sprintf(sub_buffer, "%s/in/#", CLOUD_USERNAME);
Serial.println(F("MQTT succeeded"));
CloudClient.subscribe(sub_buffer);
}
else
{
MQTTReconnectmillis = millis();
Serial.println(F("MQTT failed"));
CloudClient.disconnect();
}
digitalWrite(6, false);
}
}
if (analogRead(0) < 600 && power_status)
{
power_status = false;
}
if (analogRead(0) > 600 && !power_status)
{
power_status = true;
}
}
void SendData()
{
serial_timeout = millis();
// Serial.print(currentLine);
client.print(currentLine);
currentLine = "";
}
void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
}
void mqttcallback(char* topic, byte* payload, unsigned int length)
{
Serial1.print("cloud:");
for (int a=0;a<length;a++)
{
Serial1.write(payload[a]);
Serial.write(payload[a]);
}
Serial1.print(" ");
Serial.println();
}
void wdt_initialize()
{
GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4);
GCLK->GENCTRL.reg = GCLK_GENCTRL_ID(2) |
GCLK_GENCTRL_GENEN |
GCLK_GENCTRL_SRC_OSCULP32K |
GCLK_GENCTRL_DIVSEL;
while (GCLK->STATUS.bit.SYNCBUSY); // Syncronize write to GENCTRL reg.
GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID_WDT |
GCLK_CLKCTRL_CLKEN |
GCLK_CLKCTRL_GEN_GCLK2;
}
void wdt_enable()
{
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
while (WDT->STATUS.bit.SYNCBUSY); // Syncronize write to CTRL reg.
WDT->CONFIG.reg = WDT_CONFIG_PER(0xA); // 0xA = 8192 ms
while (WDT->STATUS.bit.SYNCBUSY); // Syncronize write to CONFIG reg.
WDT->INTENCLR.reg |= WDT_INTENCLR_EW;
WDT->CTRL.reg |= WDT_CTRL_ENABLE;
while (WDT->STATUS.bit.SYNCBUSY); // Syncronize write to CTRL reg.
}
void wdt_disable()
{
WDT->CTRL.reg &= ~WDT_CTRL_ENABLE;
while (WDT->STATUS.bit.SYNCBUSY); // Syncronize write to CTRL reg.
}
void wdt_reset()
{
WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY;
while (WDT->STATUS.bit.SYNCBUSY); // Syncronize write to CLEAR reg.
}
// RA_STRING1=U2FsdGVkX1859UVHjcA82FKL34O7gI0+3D0wze1dIOM=
// RA_STRING2=U2FsdGVkX18RIQkGAAF0rkdVJ2ruvQy7RqGUkgMpI9M0ehuHpb/kUDEUu11GcIxK
// RA_STRING3=FiOS-R7W45
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
my current code
Code: Select all
#include <Salinity.h>
#include <Relay.h>
#include <RA_ATO.h>
#include <RF.h>
#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>fa
#include <RA_CustomColors.h>f
#include <RF.h>
#include <IO.h>
#include <ORP.h>
#include <PH.h>
#include <WaterLevel.h>
#include <ReefAngel.h>
////// Place global variable code below here
byte myRFMode=0;
byte myRFDuration=0;
byte myRFSpeed=0;
////// Place global variable code above here
void setup()
{
// This must be the first line
ReefAngel.Init(); //Initialize controller
// Ports toggled
ReefAngel.WaterChangePorts = Port5 |Port6; // Turn off Return, UV, Skimmer, Heater, Sump Equipment, ATO
ReefAngel.FeedingModePorts = Port6; // Turn off Return and Skimmer
ReefAngel.LightsOnPorts = Port2|Port4|Box1_Port1|Box1_Port8; //Turn on ATI lights, Fan and Fuge Light
ReefAngel.OverheatShutoffPorts = Port1 |Port4|Port6| Box1_Port1| Box1_Port4|Box1_Port6;
ReefAngel.TempProbe = T2_PROBE;
ReefAngel.OverheatProbe = T2_PROBE;
InternalMemory.OverheatTemp_write( 825 ); // Set the Overheat temperature setting
// Ports that are always on
////// Place additional initialization code above here
}
// ReefAngel.StandardLights( Port3,23,0,12,0 ); // Fuge Light
// ReefAngel.Relay.On(Port3); // Port3 Return Pump -- Always on
//ReefAngel.StandardLights( Port2,10,0,23,0 ); // ReefBrites
// ReefAngel.Relay.Off( Port4); // 11 Box1_Port3 UV - Only turn on UV Sterilizer between 11pm and 4am
// if ( (hour() >= 7) && (hour() < 23) )
// ReefAngel.Relay.Off(Port4);
// else ReefAngel.Relay.On(Port4);
// ReefAngel.StandardLights( Port4,12,00,20,30 ); // Light --- Actinic 12 to 8:30
//ReefAngel.Relay.On(Port5); // Port5 Saltwater Change
// ReefAngel.Relay.On(Port6); //ATO
// ReefAngel.Relay.Set(Port6, ReefAngel.HighATO.IsActive()); //Turns port 6 off when High ATO is on
//ReefAngel.StandardHeater(Port7,777,790 ); // 9 Box1_Port1 Heater
// // ReefAngel.Relay.On (Port7); // Port7 Frag Tank -- Always on
//ReefAngel.Relay.On( Port8); // Port8 Skimmer -- 5 min delay start
void loop()
{
//Box1
ReefAngel.StandardHeater(Port1,778,790 ); // 1 Heater
ReefAngel.StandardLights( Port2,13,0,22,0 ); // 2 ReefBrites
ReefAngel.Relay.Off(Port3) ; // 3 Saltwater Pump
ReefAngel.StandardLights( Port4,14,0,20,0 ); // 4 Daylights
ReefAngel.SingleATO( true,Port5,900,0 ); // 5 ATO - RODI
ReefAngel.Relay.On(Port6) ; // 6 Return Pump
ReefAngel.Relay.Set(Port7,ReefAngel.Relay.Status(Port6)); // 7 UV Pump
ReefAngel.Relay.Set(Port8,ReefAngel.Relay.Status(Port6)); // 8 Calcium Reactor faPump
ReefAngel.UseFlexiblePhCalibration();
//box 2 (Box1_Portxx)
//!flips the status of the port for conditional statements
ReefAngel.StandardLights( Box1_Port1,13,30,21,0 ); // 9 Actinics
ReefAngel.StandardHeater( Box1_Port2,778,790 ); // 10 Heater
ReefAngel.Relay.Set(Box1_Port3,ReefAngel.Relay.Status(Port6)); // 11 Skimmer
ReefAngel.Relay.Set(Box1_Port4,!ReefAngel.Relay.Status(Port2)); // 12 Fuge Lights
ReefAngel.Relay.On(Box1_Port5); // 13 Ecotech Pumps
ReefAngel.StandardHeater(Box1_Port6,770,790 ); // 14 Heater
ReefAngel.CO2Control( Box1_Port7,720,725); // 15 Box1_Port7 Regulator (PhLow,PhHigh)
ReefAngel.StandardLights( Box1_Port8,12,0,21,45 ); // 16 Box1_Port8 Fan
// ReefAngel.StandardLights( Port1,12,0,19,0 );
// ReefAngel.StandardLights( Port2,9,0,19,0 );
// Old Code
//moonlight dimming
// if (hour()>=6 && hour()<10) ReefAngel.PWM.SetDaylight( PWMParabola(6,0,10,0,9,100,9) ); // Moonlight Between 5-10am turn the relay on
// if (hour()>=20 && hour()<=23) ReefAngel.PWM.SetDaylight( PWMParabola(20,0,23,0,100,0,100) ); // From 8pm-Midnight turn the relay on
// else ReefAngel.PWM.SetDaylight(0);
// ReefAngel.Relay.Set( Port2, !ReefAngel.Relay.Status( Port4 ) ); //Refuge opposite of Actinic
// ReefAngel.Relay.Off( Box1_Port3); // Start with the relay off Port #11 Moonlight
//if (hour()>=5 && hour()<10) ReefAngel.Relay.On(Box1_Port3); // Moonlight Between 5-10am turn the relay on
//if (hour()>=20 && hour()<=23) ReefAngel.Relay.On(Box1_Port3); // From 8pm-Midnight turn the relay
// ReefAngel.PWM.SetDaylight( PWMSlope(20,0,23,0,100,0,180,100) );
// ReefAngel.PWM.SetDaylight( PWMSlope(6,0,10,0,9,100,240,9) );
//ReefAngel.Relay.off(Box1_Port3);
// if (hour()>=10 || hour()<20) ReefAngel.PWM.SetDaylight(0);
// ReefAngel.PWM.SetDaylight( MoonPhase()+10 );
// ReefAngel.PWM.SetDaylight(PWMParabola(20,0,23,0,0, MoonPhase(),0 ));
//ReefAngel.PWM.SetDaylight(PWMSlope(6,0,23,0,0,100,240,0));
//if (hour()>=5 && hour()<20) ReefAngel.PWM.SetDaylight(0);
//ReefAngel.PWM.SetDaylight( PWMParabola(20,0,23,0,100,0,100) );
//ReefAngel.PWM.SetDaylight( PWMParabola(6,0,10,0,9,100,9) );
////// Place your custom code below here
// ReefAngel.RF.UseMemory = false;
// if (hour()>=6 && hour()<11)
// myRFSetMode(ReefCrest,85,10);
// else if (hour()>=11 && hour()<13)
// myRFSetMode(ReefCrest,85,10);
//else if (hour()>=13 && hour()<16)
//myRFSetMode(Smart_NTM,85,50);
//else if (hour()>=16 && hour()<19)
//myRFSetMode(ReefCrest,65,10);
//else
// myRFSetMode(Lagoon,40,10);
// Hardcode PH calibrations
//ReefAngel.PHMin=544; // PH7.0
//ReefAngel.PHMax=830; // PH10.0
// RunDosingPumps();
// LogDosingPumps();
////// Place your custom code above here
// This should always be the last line
ReefAngel.Portal( "ecam" );
ReefAngel.ShowInterface();
}
void DrawCustomMain()
{
ReefAngel.LCD.DrawDate(6, 122);
pingSerial();
// 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
//sALINITY
pingSerial();
char text[10];
ConvertNumToString(text, ReefAngel.Params.Salinity, 10);
strcat(text," ");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,15,50,"Salinity:");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,75,50,text);
//PH Expansion
pingSerial();
ConvertNumToString(text, ReefAngel.Params.PHExp, 1);
strcat(text," ");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,15,60,"pH_Expan:");
ReefAngel.LCD.DrawText(DefaultFGColor,DefaultBGColor,75,60,text);
pingSerial();
byte TempRelay = ReefAngel.Relay.RelayData;
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
//ReefAngel.LCD.DrawOutletBox(12, 103, TempRelay);
// Main Relay Box
TempRelay &= ReefAngel.Relay.RelayMaskOff;
TempRelay |= ReefAngel.Relay.RelayMaskOn;
ReefAngel.LCD.DrawOutletBox( 12, 102, TempRelay );
pingSerial();
// Date and Time
ReefAngel.LCD.DrawDate( 6, 122 );
pingSerial();
}
/////////////////////////////////////////
// Define Your dosing pumps
/////////////////////////////////////////
//#define numDPumps 3
// byte pumpRelays[numDPumps]={ Box1_Port2};
// int DPVolume[numDPumps]={ 0, 25,28} ; // 1ml for each alk and calcium - total volume for the day
//int DPRepeat[numDPumps]={ 360, 240, 240 } ; // Repeat every 4 hrs 6x a day --- in mins
/////////////////////////////////////////
// Define Calibration here
/////////////////////////////////////////
// int CalTime[numDPumps]={ 600, 600, 600 }; // 10 minutes / 10 minutes
//int CalVol[numDPumps]={ 350, 300,384 }; // 350ml / 300ml... .58 / .5/.64
/////////////////////////////////////////
// Function: RunDosingPumps()
/////////////////////////////////////////
//void RunDosingPumps() {
//float rate;
//int calcTime[numDPumps];
// for (int i=0;i < numDPumps; i++) {
// rate=(float)CalVol[i]/CalTime[i];
// calcTime[i]=DPVolume[i]/rate/(1440/DPRepeat[i]);
// Run the pumps
// ReefAngel.DosingPumpRepeat(pumpRelays[i], i*5, DPRepeat[i], calcTime[i]); // Offset between each pump is 5 minutes
// }
// Display Time calculated in portal
// ReefAngel.CustomVar[0]=calcTime[0];
// ReefAngel.CustomVar[1]=calcTime[1];
///ReefAngel.CustomVar[2]=calcTime[2];
// }
/////////////////////////////////////////
// Function: LogDosingPumps()
/////////////////////////////////////////
//void LogDosingPumps() {
//static time_t pumpTimer[numDPumps];
//static boolean pumpStatus[numDPumps];
//float rate;
//for (int i=0;i< numDPumps;i++) {
// if (ReefAngel.Relay.Status(pumpRelays[i])) {
// if (!pumpStatus[i]) {
// pumpTimer[i]=now()-pumpTimer[i]; // Pump was off, timer is now a time
//pumpStatus[i]=true;
// }
// } else {
// if (pumpStatus[i]) {
// pumpTimer[i]=now()-pumpTimer[i]; // Pump was on, timer is now a timer
// pumpStatus[i]=false;
// rate=(float)CalVol[i]/CalTime[i];
// Report How much volume has been dosed per day.fa
// Could make this in minutes... excercise for the reader..
// ReefAngel.CustomVar[3]=pumpTimer[0]*rate;
//ReefAngel.CustomVar[4]=pumpTimer[1]*rate;
//ReefAngel.CustomVar[5]=pumpTimer[2]*rate;
// }
// }
// Clear timer at end of day
// if (now()%SECS_PER_DAY==SECS_PER_DAY-1) pumpTimer[i]=0;
// }
// }
void DrawCustomGraph()
{
}
void myRFSetMode(byte m, byte s, byte d)
{
if (m!=myRFMode || s!=myRFSpeed || d!=myRFDuration || millis()<5000)
{
myRFMode=m;
myRFSpeed=s;
myRFDuration=d;
ReefAngel.RF.SetMode(m,s,d);
}
}
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Thanks for the continued patience and guidance on this Roberto!!!!!!!!!!
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Once again, your cloud wifi attachment is Rev2. There is no need to upload any code to it.
You need to update your RA+ controller and not the cloud wifi
You need to update your RA+ controller and not the cloud wifi
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
ecam wrote:Getting this error on the code generated...
Code: Select all
Compiling code for RA_PLUS board firmware.ino:29:26: error: 'MQTTServer' was not declared in this scope PubSubClient CloudClient(MQTTServer, MQTTPORT, mqttcallback, mqttclient); ^ firmware.ino:29:38: error: 'MQTTPORT' was not declared in this scope PubSubClient CloudClient(MQTTServer, MQTTPORT, mqttcallback, mqttclient); ^ firmware.ino: In function 'void loop()': firmware.ino:52:22: error: 'WIFI_SSID' was not declared in this scope Serial.println(WIFI_SSID); // print the network name (SSID); ^ firmware.ino:53:33: error: 'WIFI_PASS' was not declared in this scope if (WiFi.begin(WIFI_SSID, WIFI_PASS) == WL_CONNECTED) ^ firmware.ino:128:38: error: 'PortalServer' was not declared in this scope if (portalclient.connect(PortalServer, 80)) { ^ firmware.ino:152:40: error: 'CLOUD_USERNAME' was not declared in this scope char pub_buffer[sizeof(CLOUD_USERNAME) + 5]; ^ firmware.ino:153:25: error: 'pub_buffer' was not declared in this scope sprintf(pub_buffer, "%s/out", CLOUD_USERNAME); ^ firmware.ino:189:30: error: 'CLOUD_USERNAME' was not declared in this scope char sub_buffer[sizeof(CLOUD_USERNAME) + 6]; ^ firmware.ino:193:15: error: 'sub_buffer' was not declared in this scope sprintf(sub_buffer, "RA-%s", CLOUD_USERNAME); ^ firmware.ino:194:59: error: 'CLOUD_PASSWORD' was not declared in this scope if (CloudClient.connect(sub_buffer, CLOUD_USERNAME, CLOUD_PASSWORD)) ^ firmware.ino: In function 'void wdt_initialize()': firmware.ino:258:3: error: 'GCLK' was not declared in this scope GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4); ^ firmware.ino:258:38: error: 'GCLK_GENDIV_ID' was not declared in this scope GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4); ^ firmware.ino:258:59: error: 'GCLK_GENDIV_DIV' was not declared in this scope GCLK->GENDIV.reg = GCLK_GENDIV_ID(2) | GCLK_GENDIV_DIV(4); ^ firmware.ino:259:40: error: 'GCLK_GENCTRL_ID' was not declared in this scope GCLK->GENCTRL.reg = GCLK_GENCTRL_ID(2) | ^ firmware.ino:260:23: error: 'GCLK_GENCTRL_GENEN' was not declared in this scope GCLK_GENCTRL_GENEN | ^ firmware.ino:261:23: error: 'GCLK_GENCTRL_SRC_OSCULP32K' was not declared in this scope GCLK_GENCTRL_SRC_OSCULP32K | ^ firmware.ino:262:23: error: 'GCLK_GENCTRL_DIVSEL' was not declared in this scope GCLK_GENCTRL_DIVSEL; ^ firmware.ino:264:23: error: 'GCLK_CLKCTRL_ID_WDT' was not declared in this scope GCLK->CLKCTRL.reg = GCLK_CLKCTRL_ID_WDT | ^ firmware.ino:265:23: error: 'GCLK_CLKCTRL_CLKEN' was not declared in this scope GCLK_CLKCTRL_CLKEN | ^ firmware.ino:266:23: error: 'GCLK_CLKCTRL_GEN_GCLK2' was not declared in this scope GCLK_CLKCTRL_GEN_GCLK2; ^ firmware.ino: In function 'void wdt_enable()': firmware.ino:271:3: error: 'WDT' was not declared in this scope WDT->CTRL.reg &= ~WDT_CTRL_ENABLE; ^ firmware.ino:271:21: error: 'WDT_CTRL_ENABLE' was not declared in this scope WDT->CTRL.reg &= ~WDT_CTRL_ENABLE; ^ firmware.ino:273:39: error: 'WDT_CONFIG_PER' was not declared in this scope WDT->CONFIG.reg = WDT_CONFIG_PER(0xA); // 0xA = 8192 ms ^ firmware.ino:275:24: error: 'WDT_INTENCLR_EW' was not declared in this scope WDT->INTENCLR.reg |= WDT_INTENCLR_EW; ^ firmware.ino: In function 'void wdt_disable()': firmware.ino:282:3: error: 'WDT' was not declared in this scope WDT->CTRL.reg &= ~WDT_CTRL_ENABLE; ^ firmware.ino:282:21: error: 'WDT_CTRL_ENABLE' was not declared in this scope WDT->CTRL.reg &= ~WDT_CTRL_ENABLE; ^ firmware.ino: In function 'void wdt_reset()': firmware.ino:288:3: error: 'WDT' was not declared in this scope WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY; ^ firmware.ino:288:20: error: 'WDT_CLEAR_CLEAR_KEY' was not declared in this scope WDT->CLEAR.reg = WDT_CLEAR_CLEAR_KEY; ^ exit status 1 Progress: 41.38% Your code has some errors and couldn't be compiled. Please fix the errors above and try again.
Roberto in this first line it say updating to RA board.. I am connecting to board through Webwizard.
can you send me a sample code you want me to upload thorught IDE or Web wizard that initiates the Cloud wifi... completely loss now...
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
When you click the wizard, you have an option to pick which controller you want to generate codes.
You are selecting cloud WiFi. You don't need to generate nor upload code for cloud WiFi. You are picking the wrong thing.
Again, you need to update the code of your RA and not cloud wifi. Just make sure that you pick cloud WiFi on the attachment section and not the standard WiFi. This wizard is just like the one from Arduino IDE. Go through the pages and pick what you want.
You have to make sure the code on your RA is cloud enabled.
You are selecting cloud WiFi. You don't need to generate nor upload code for cloud WiFi. You are picking the wrong thing.
Again, you need to update the code of your RA and not cloud wifi. Just make sure that you pick cloud WiFi on the attachment section and not the standard WiFi. This wizard is just like the one from Arduino IDE. Go through the pages and pick what you want.
You have to make sure the code on your RA is cloud enabled.
Roberto.
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
okay... so I can now upload to RA wizard using the web wizard...
there must be some initiate command I need to put on the top to activate cloud. What is that... and do I leave the
reef angel.(cam). - old wifi. still in code?
there must be some initiate command I need to put on the top to activate cloud. What is that... and do I leave the
reef angel.(cam). - old wifi. still in code?
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
under attachments in wizard all I Have is RA Net... nothing about cloud
Re: WIFI Cloud and WIFI Attachment on 2 RA plusses
Huh??
What is "reef angel.(cam). - old wifi"?
Just use the web wizard to generate your code.
Post a picture of your attachments options.
What is "reef angel.(cam). - old wifi"?
Just use the web wizard to generate your code.
Post a picture of your attachments options.
Roberto.