Hola todos, estoy teniendo el siguiente problema usando Blynk edgent:
Cuando se va el internet me da el siguiente error y se queda trabado:
[E][ssl_client.cpp:36] _handle_error(): [data_to_read():287]: (-76) UNKNOWN ERROR CODE (004C)
No vuelve a reconectar.
Lo demas del codigo sigue funcionando correctamente, excepto por la reconexión a internet.
Estoy trabajando con un ESP32 DevKitC V4 en platformio.
El codigo que uso es el siguiente:
#define BLYNK_TEMPLATE_ID "******"
#define BLYNK_DEVICE_NAME "*****"
#define BLYNK_FIRMWARE_VERSION "0.1.0"
#define BLYNK_PRINT Serial
#define BLYNK_DEBUG
//#define APP_DEBUG
#define BUTTON_PIN 21
#define IWIDTH 220
#define IHEIGHT 176
#include "BlynkEdgent.h"
#include <TFT_eSPI.h>
#include <SPI.h>
#include <Button2.h>
#include <Preferences.h>
Button2 button = Button2(BUTTON_PIN);
TFT_eSPI tft = TFT_eSPI(); // Invoke library, pins defined in User_Setup.h
TFT_eSprite img = TFT_eSprite(&tft);
Preferences Contador_parcial;
unsigned long previousMillis = 0; // will store last time LED was updated
// constants won't change:
const long interval = 1000;
long i = 1;
void SUMA(){
i = i + 1;
Contador_parcial.begin("cont_parcial",false);
Contador_parcial.putLong("cont_parcial", i);
Contador_parcial.end();
img.setTextColor(TFT_WHITE, TFT_BLACK);
img.drawNumber(i,1,100,8);
img.pushSprite(0, 0);
}
void longClick(Button2& btn) {
//SUMA();
Serial.println("DETECTADO");
}
void DisplayEveryNSec( void * pvParameters )
{
#define DISPLAY_INTERVAL_MS 1000L
for (;;)
{
SUMA();
vTaskDelay(DISPLAY_INTERVAL_MS / portTICK_PERIOD_MS);
}
}
void BlynkRun( void * pvParameters )
{
#define BLYNK_RUN_INTERVAL_MS 250L
for (;;)
{
BlynkEdgent.run();
vTaskDelay(BLYNK_RUN_INTERVAL_MS / portTICK_PERIOD_MS);
}
}
#define USING_CORE_1 0
#define USING_CORE_2 1
#define DisplayEveryNSec_Priority ( 3 | portPRIVILEGE_BIT )
#define BlynkRun_Priority ( 2 | portPRIVILEGE_BIT )
void setup()
{
Serial.begin(115200);
delay(100);
tft.init();
tft.setRotation(3);
tft.fillScreen(TFT_BLACK);
img.createSprite(IWIDTH, IHEIGHT);
img.fillSprite(TFT_BLACK);
delay(200);
img.createSprite(IWIDTH, IHEIGHT);
img.setTextSize(1);
img.fillSprite(TFT_BLACK);
img.setTextColor(TFT_YELLOW, TFT_BLACK);
img.drawString("Contador Embolse", 5, 5,4);
img.drawRect(0,30,220,146,TFT_YELLOW);
img.setTextColor(TFT_WHITE);
img.drawString("Valor previo al reset:",2,50,2);
img.drawNumber(1234,150,50,4);
img.pushSprite(0, 0);
button.begin(BUTTON_PIN, INPUT_PULLUP, false, true);
button.setLongClickDetectedHandler(longClick);
Contador_parcial.begin("cont_parcial",false);
i = Contador_parcial.getLong("cont_parcial",0);
Contador_parcial.end();
BlynkEdgent.begin();
xTaskCreatePinnedToCore( DisplayEveryNSec, "DisplayEveryNSec", 20000, NULL, DisplayEveryNSec_Priority, NULL, USING_CORE_2);
xTaskCreatePinnedToCore( BlynkRun, "BlynkRun", 20000, NULL, BlynkRun_Priority, NULL, USING_CORE_2);
}
void loop() {
button.loop();
}