#include <esp_task_wdt.h>
#include <WiFi.h>
TaskHandle_t Task1;
TaskHandle_t Task2;
const char* ssid="Wokwi-GUEST";
bool changed=false;
void setup()
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid);
while(WiFi.status() != WL_CONNECTED)
{
delay(500);
}
WiFi.setAutoReconnect(true);
WiFi.persistent(true);
xTaskCreatePinnedToCore(task1_loop,"Core_0",10000, NULL,1,&Task1,0);
xTaskCreatePinnedToCore(task2_loop,"Core_1",10000, NULL,1,&Task2,1);
Serial.begin(115200);
}
void loop()
{
}
void task1_loop(void * pvParameters)
{
// Der ESP hat einen sogenannten Watchdog Time
// der einen Stop herbeifuehren kann
// den initialisieren wir an dieser Stelle
//
esp_task_wdt_init(30,false);
// hier tun wir was
// dazu brauchen wir eine Dauerschleife, die unsere loop ersetzt
for(;;)
{
// Wir ueberwachen nun das WLAN
int wlanfail = 0;
if(WiFi.status() != WL_CONNECTED)
{
do
{
if(wlanfail<10)
{
delay(100);
WiFi.disconnect();
WiFi.reconnect();
wlanfail++;
}
else
{
ESP.restart();
}
}while(WiFi.status() != WL_CONNECTED);
changed=true;
}
}
}
void task2_loop(void * pvParameters)
{
esp_task_wdt_init(30,false);
for(;;)
{
if(changed)
{
Serial.println("WLAN Status geändert");
changed=false;
}
else{
Serial.println("Alles unverändert");
}
}
}