ESP32 wroom wifi
- Войдите на сайт для отправки комментариев
Ср, 15/05/2019 - 21:32
Как правильно работать с 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);
/*