T µ0sdI Ri &$`jiI &$phI s`e+J +@hI Q#hI `e+J +@hI Qf Mf Nwd i &$g8I Pg`I h s`eJ` +g8I Pg`I h Visor web – Aula Habitable

Para poder visualizar los datos hemos enviado los valores que obtenemos a partir de los diferentes grupos (temperatura, CO2, luz) a CayenneMyDevices. 

Para unir todos los códigos escribimos las librerías y los setup de cada uno y creamos una función externa que calcule el valor correspondiente a cada sensor. Ese valor es subido a CayenneMyDevices con la función “Cayenne.digitalWrite(canal, valor)”.

Podemos ver los datos obtenidos en tiempo real y de forma gráfica aquí.

   //#define CAYENNE_DEBUG
   //Definiciones LUZ
   
      #include <BH1750.h> //Librería luz 1
      #include <Wire.h>  //Librería luz 2
      BH1750 luxometro; //Declaración de la variable Luxometro
      float lux();
   
   //Definiciones CAYENNE
   
      #define CAYENNE_PRINT Serial
      #include <CayenneMQTTESP8266.h>
     
   //Definiciones TEMPERATURA
   
      /*#define LM35 A0
      #define LED 3
      float temperatura();
      float ValSen;*/
     
   //Definiciones CO2
   
      #include "MQ135.h"
      #define ANALOGPIN A0    //  Define Analog PIN on Arduino Board
      #define RZERO 206.85    //  Define RZERO Calibration Value
      MQ135 gasSensor = MQ135(ANALOGPIN);
     
   // WiFi network info.
   
      char ssid[] = "WiFi-Bach";
      char wifiPassword[] = "ForaCovid2020*";

  // Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
 
      char username[] = "050549f0-75c2-11eb-a2e4-b32ea624e442";
      char password[] = "ea749918ffe58ff3860e5ce93d17842442921af8";
      char clientID[] = "b704c7b0-76a4-11eb-8779-7d56e82df461";

unsigned long lastMillis = 0;

void setup() {
 
//Setup CAYENNE
 
     Serial.begin(9600);
     Cayenne.begin(username, password, clientID, ssid, wifiPassword);
     
  //Setup LUZ
 
        Wire.begin();
        luxometro.begin();
        Serial.println(F("BH1750 Test"));
       
  //Setup TEMPERATURA
 
        /*Serial.begin(9600);
        pinMode(LM35,INPUT);
        pinMode(LED,OUTPUT);*/

  //Setup CO2

        Serial.begin(9600);
        float rzero = gasSensor.getRZero();
        //delay(3000);
        Serial.print("MQ135 RZERO Calibration Value : ");
        Serial.println(rzero);
           


}
void loop() {
  //loop CAYENNE
 
      Cayenne.luxWrite (2,luz());
      //Cayenne.virtualWrite (4, CO2());
      //Cayenne.celsiusWrite(1, temperatura());
      Cayenne.celsiusWrite(4, CO2());
  //loop LUZ  
}
CAYENNE_OUT_DEFAULT()
{
// Write data to Cayenne here. This example just sends the current uptime in milliseconds on virtual channel 0.
//Cayenne.virtualWrite(0, millis());
// Some examples of other functions you can use to send data.
//Cayenne.celsiusWrite(1, 22.0);
 
//Cayenne.luxWrite(2, 700);
//Cayenne.virtualWrite(3, 50, TYPE_PROXIMITY, UNIT_CENTIMETER);
 
}
CAYENNE_IN_DEFAULT()
{
CAYENNE_LOG("Channel %u, value %s", request.channel, getValue.asString());
//Process message here. If there is an error set an error message using getValue.setError(), e.g getValue.setError("Error message");
}
    //Función LUZ
   
        float luz() {
        float lux = luxometro.readLightLevel();
           Serial.print("Nivel de luz en aula: ");
           Serial.print(lux);
           Serial.println(" lx");
           //delay(1000);
        return lux;
    }
    //Función TEMPERATURA
   
        /*float temperatura(){
        float ValSen = analogRead(LM35);
        float temperatura = ValSen * (-0.72)+22;
          Serial.println(temperatura);
          Serial.println(ValSen);
          //delay(1000);
        return temperatura;
        }*/
       
    //Función CO2
   
        float CO2(){
        float valorsensor = gasSensor.getPPM();
        float ppm=2500*valorsensor-50;
          delay(1000);
          digitalWrite(13,HIGH);
          Serial.print("CO2 ppm value : ");
          Serial.println(ppm);
        return ppm;
        }