ESP8266 no sigue mandando datos

Hola buenos dias.
tengo un problema con mi ESP8266 estoy realizando un proyecto de un medidor eléctrico y tengo las conexiones bien y el ESP8266 manda datos a ubidots pero luego de un tiempo ubidots deja de recibir los datos ¿alguien sabe por que sucede esto?

Hola @jdcardona,

Espero te encuentres muy bien.

Me puedes indicar por favor que tipo de protocolo estas utilizando para enviar datos desde tu ESP8266 hacia Ubidots y también si estas siguiendo alguna guía nuestra.

También te pregunto ¿Es posible acceder a algún error que te muestre la consola cuando observas que se suspende la conexión y el envío de datos?

Quedo atento a tu respuesta.

Alejandro

1 Like

¿te puedo enviar el codigo para que puedas revisar?

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include “EmonLib.h”
#include “Ubidots.h”
#include <TimeLib.h>

unsigned long tiempo;
unsigned long iniciomillis;
unsigned long iniciomillis_envio;
double Irms; // Declarar Irms en un alcance global
double potencia; // Declarar potencia en un alcance global
const char* UBIDOTS_TOKEN = “BBUS-SZnfwPgu38JBzgQ3hhYgCjRVZY9zU1”;
const char* WIFI_SSID = “Family”;
const char* WIFI_PASS = “10195512”;

Ubidots ubidots(UBIDOTS_TOKEN, UBI_HTTP);
LiquidCrystal_I2C lcd(0x27, 20, 4);

EnergyMonitor energyMonitor;

int voltajeRed = 115.0;
double factorPotencia = 0.9;
double kilowattHoraAcumulados = 0.0; // Variable para almacenar la energía acumulada en kWh

void setup() {
lcd.init();
lcd.backlight();
Serial.begin(9600);
energyMonitor.current(0, 21);

lcd.setCursor(4, 0);
lcd.print(“BIENVENIDOS¡”);
lcd.setCursor(1, 1);
lcd.print(“MEDIDOR INTELIGENTE”);
lcd.setCursor(2, 2);
lcd.print(“ENERGIA ELECTRICA”);
lcd.setCursor(0, 3);
lcd.print(“AUTORES GEL Y JESUS”);

ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);
iniciomillis = millis();
iniciomillis_envio = millis();
}

void loop() {
unsigned long currentMillis = millis();

// Actualizar pantalla cada 9 segundos
if (currentMillis - iniciomillis >= 9000) {
Irms = energyMonitor.calcIrms(1484);
if (Irms < 0.09) {
Irms = 0.0;
}

potencia = Irms * voltajeRed * factorPotencia;
tiempo = (currentMillis - iniciomillis) / 1000;

// Calcular la energía en kilovatios-hora y acumularla
double kilowattHoraActual = (Irms * voltajeRed * factorPotencia / 1000.0) * tiempo / 3600.0;
kilowattHoraAcumulados += kilowattHoraActual;

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("V=");
lcd.print(voltajeRed);

lcd.setCursor(12, 0);
lcd.print("A=");
lcd.print(Irms);

lcd.setCursor(0, 3);
lcd.print("W=");
lcd.print(potencia);

lcd.setCursor(12, 3);
lcd.print("kWh=");
lcd.print(kilowattHoraAcumulados);

iniciomillis = currentMillis;

}

// Enviar datos a Ubidots cada 2 minutos
if (currentMillis - iniciomillis_envio >= 120000) {
ubidots.add(“voltage”, voltajeRed);
ubidots.add(“current”, Irms);
ubidots.add(“power”, potencia);
ubidots.add(“energy”, kilowattHoraAcumulados);

ubidots.send();



iniciomillis_envio = currentMillis;

}
}

Hola @jdcardona,

Veo en tu cuenta que el envío de datos está normalizado desde el día de ayer ¿me puedes confirmar esto por favor?

Quedo atento.

Alejandro

si ya esta normalizada una pregunta ¿que es esto Data extraction (Web and mobile app)
?

Hola @jdcardona

Data extraction (Web and mobile app) hace referencia a las peticiones internas que realizamos para mostrar los datos de tus dispositivos en dashboards, eventos, reportes, etc.

No tiene nada que ver con alguna extracción de datos por tu parte, así que no te preocupes.

Alejandro