WIFI Cloud and WIFI Attachment on 2 RA plusses

Expansion modules and attachments

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 12:01 pm
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.

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 12:02 pm
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

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 12:03 pm
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);
          }
        }


Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 12:04 pm
Thanks for the continued patience and guidance on this Roberto!!!!!!!!!!

Posts: 12270
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Wed Aug 23, 2017 12:05 pm
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
Roberto.

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 12:17 pm
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...

Posts: 12270
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Wed Aug 23, 2017 1:08 pm
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.
Roberto.

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 1:12 pm
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?

Posts: 229
Joined: Thu Nov 15, 2012 11:27 am
PostPosted: Wed Aug 23, 2017 1:21 pm
under attachments in wizard all I Have is RA Net... nothing about cloud

Posts: 12270
Joined: Fri Mar 18, 2011 6:47 pm
PostPosted: Wed Aug 23, 2017 1:32 pm
Huh??
What is "reef angel.(cam). - old wifi"?
Just use the web wizard to generate your code.
Post a picture of your attachments options.
Roberto.
PreviousNext

Return to Addons

Who is online

Users browsing this forum: No registered users and 3 guests

cron