From 6db1dded529374f83088fc78a3a9cc71c70b8512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20Ha=C3=9Fel?= Date: Wed, 10 Apr 2024 10:21:31 +0200 Subject: [PATCH] wifi disconnect cleanup --- lib/patrix/wifi.cpp | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/lib/patrix/wifi.cpp b/lib/patrix/wifi.cpp index 42a6634..1deadb1 100644 --- a/lib/patrix/wifi.cpp +++ b/lib/patrix/wifi.cpp @@ -1,8 +1,10 @@ #include "wifi.h" #include "log.h" +#include "mqtt.h" #include #include +#include #define NTP_SERVER "pool.ntp.org" @@ -31,15 +33,28 @@ void wifiSetup() { WiFi.setAutoReconnect(false); wifiConnect(); otaSetup(); - configTime(TIMEZONE_OFFSET, DST_OFFSET, NTP_SERVER, WiFi.gatewayIP().toString().c_str()); bootDelay(); } void wifiConnect() { - WiFi.disconnect(); - yield(); + wifiConnected = false; wifiLastConnectTry = millis(); + + sntp_stop(); + ArduinoOTA.end(); + mqttDisconnect(); + + WiFi.disconnect(); + WiFi.enableAP(false); + WiFi.setAutoConnect(false); + WiFi.setAutoReconnect(false); + yield(); + info("WIFI", "Connecting WiFi: %s", WIFI_SSID); + + WiFiClass::hostname(HOSTNAME); + yield(); + WiFi.begin(WIFI_SSID, WIFI_PKEY); yield(); } @@ -83,7 +98,6 @@ void otaSetup() { } error("OTA", name); }); - ArduinoOTA.begin(); } void bootDelay() { @@ -122,11 +136,15 @@ void wifiLoop() { wifiConnected = false; info("WIFI", "WiFi disconnected!"); wifiConnect(); + } else { + ArduinoOTA.handle(); } } else { if (hasIp) { wifiConnected = true; info("WIFI", "Connected as: %s", WiFi.localIP().toString().c_str()); + ArduinoOTA.begin(); + configTime(0, 0, WiFi.gatewayIP().toString().c_str(), "pool.ntp.org"); } else if (millis() - wifiLastConnectTry > 10000) { info("WIFI", "WiFi timeout!"); wifiConnect();