ESP32 wroom wifi

Нет ответов
Ripper
Offline
Зарегистрирован: 08.01.2017

Как правильно работать с wifi с esp32 постояно отваливается wifi не получается его переконектить ... (отправляю udp json на backend)  чтобы оживать надо зайти через косоль (помогает но невсегда) или выкл вкл....

 

 

 

class Wifi_cn
{
public:
  int err = 0;
public:
  Wifi_cn()
  {
    if(WiFi.status() != WL_CONNECTED)
    {
      WiFi.setHostname("Mining_ESP32");
      WiFi.begin(wifissid, wifipassword);
      delay(2000);
    }
    if(WiFi.status() != WL_CONNECTED)
    {
    wificonected =  false;
    }
    else
    {
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());

    udp.begin(udpPort);
    //input port
    wificonected = true;
    }
  }
public:
  bool updsend(StaticJsonDocument<256> json_string_local)
  {  
  wifirssi = WiFi.RSSI();
  resend: uint8_t buffer[50] = "";
    if(err > 4 )
    {
    WiFi.disconnect();
    WiFi.reconnect();
    Serial.println("wifi.reconnect......");
    delay(2000);
    }
  udp.beginPacket(udpAddress, udpPort);
  serializeJson(json_string_local, udp);
    if(udp.endPacket())
    {
    memset(buffer, 0, 50);
    udp.parsePacket();
      if(udp.read(buffer, 50) > 0)
      {
        Serial.print("Server to client: ");
        Serial.println((char *)buffer);
        String rpl = String((char *)buffer);
          if(rpl == "true")
          {
          Serial.println(rpl);
          //updsend(json_string_local);
          err = 0;
          }
          else
          {
          delay(200);
          err++;
          Serial.printf("err wrong data recived: %d", err);
          Serial.println();
          goto resend;
          }
      }
    }
    else
    {
    //err resend
    delay(200);
    err++;
    Serial.printf("err cant send data: %d", err);
    Serial.println();
    goto resend; 
    }
  }
};

task

 

 

void task_wifi(void * pvParameters)
{

rewifi: Wifi_cn connwifi;
  Serial.println(WiFi.status());
  while(wificonected != true)
  {
    Serial.println("");
    Serial.println("RECONNECTING .... ");
    delay(2000);
    goto rewifi;
  }
  while(wificonected == true)
  {
  connwifi.updsend(json_string);
    if(connwifi.err > 10)
    {
      Serial.println("");
      Serial.println("RECONNECTING rewifi.... ");
      WiFi.disconnect(true);
      delay(2000);
      goto rewifi;
    }
  delay(1000);
  }
vTaskDelete(NULL);
}

setup

 

WiFi.disconnect(true);
  WiFi.mode(WIFI_STA);
  /*