/* ESP32 WiFi Scanning example */
#include "WiFi.h"
#include <Wire.h>
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <PubSubClient.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"
/**************************************************************/
const char* ssid = "Wokwi-GUEST";
const char* password = "";
Adafruit_MPU6050 mpu;
/*************cREDENCIALES PARA LA CONEXION A ADAFRUIT********/
#define AIO_SERVIDOR "io.adafruit.com"
#define AIO_PUERTOSERVIDOR 1883
#define AIO_USUARIO "drubine101"
#define AIO_KEY "aio_NuTa661DyzjhFgL9uKizge91kDNj"
WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, AIO_SERVIDOR, AIO_PUERTOSERVIDOR, AIO_USUARIO, AIO_KEY);
Adafruit_MQTT_Subscribe Luz = Adafruit_MQTT_Subscribe(&mqtt, AIO_USUARIO"/feeds/lectura_temp");
Adafruit_MQTT_Publish temperatureFeed = Adafruit_MQTT_Publish(&mqtt, AIO_USUARIO "/feeds/lectura_temp");
/******Funcion para conectarse a red por medio de WiFi****/
void connectToWiFi() {
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
// Wait for the connection to establish
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
}
void MQTT_connect();
/*****************************************************
******************* SETUP **********************
*****************************************************/
void setup() {
Serial.begin(115200);
while (!Serial) {
delay(10);
}
// Initializar protocolo I2C
if (!mpu.begin()) {
Serial.println("Failed to find MPU6050 chip");
while (1) {
delay(10);
}
}
Serial.println("MPU6050 Found!");
// Configuracion del modulo MPU6050
mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
mpu.setGyroRange(MPU6050_RANGE_500_DEG);
mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
Serial.println("MPU6050 initialized successfully!");
connectToWiFi();
mqtt.subscribe(&Luz);
}
/*****************************************************
******************** LOOP *****************
*****************************************************/
void loop() {
// Get new sensor events with the readings
MQTT_connect();
sensors_event_t a, g, temp;
mpu.getEvent(&a, &g, &temp);
float climita= temp.temperature;
if (!temperatureFeed.publish(climita)) {
Serial.println(F("Error al publicar en el feed"));
} else {
Serial.println(F("Datos publicados correctamente en el feed"));
}
delay(10000);
}
void MQTT_connect(){
int8_t ret;
if(mqtt.connected()){
return;
}
Serial.print("Conectando a MQTT...");
uint8_t retries = 3;
while((ret=mqtt.connect())!=0){
Serial.println(mqtt.connectErrorString(ret));
Serial.println("Resintentando conectar en 5 segundos...");
mqtt.disconnect();
delay(5000);
if(retries==0){
while(1); //llamar while otra vez
}
}
Serial.println("MQTT Conectado!");
}