feat: verbessere WLAN-Konfiguration und füge mDNS-Unterstützung hinzu
This commit is contained in:
		
							
								
								
									
										90
									
								
								src/wlan.cpp
									
									
									
									
									
								
							
							
						
						
									
										90
									
								
								src/wlan.cpp
									
									
									
									
									
								
							@@ -3,6 +3,8 @@
 | 
			
		||||
#include <WiFi.h>
 | 
			
		||||
#include <esp_wifi.h>
 | 
			
		||||
#include <WiFiManager.h>
 | 
			
		||||
#include <DNSServer.h>
 | 
			
		||||
#include <ESPmDNS.h>
 | 
			
		||||
#include "display.h"
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
@@ -10,33 +12,60 @@ WiFiManager wm;
 | 
			
		||||
bool wm_nonblocking = false;
 | 
			
		||||
uint8_t wifiErrorCounter = 0;
 | 
			
		||||
 | 
			
		||||
void initWiFi() {
 | 
			
		||||
  // Optimierte WiFi-Einstellungen
 | 
			
		||||
  WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
 | 
			
		||||
  WiFi.setSleep(false); // disable sleep mode
 | 
			
		||||
  esp_wifi_set_ps(WIFI_PS_NONE);
 | 
			
		||||
void wifiSettings() {
 | 
			
		||||
    // Optimierte WiFi-Einstellungen
 | 
			
		||||
    WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
 | 
			
		||||
    WiFi.setSleep(false); // disable sleep mode
 | 
			
		||||
    WiFi.setHostname("FilaMan");
 | 
			
		||||
    esp_wifi_set_ps(WIFI_PS_NONE);
 | 
			
		||||
    
 | 
			
		||||
    // Maximale Sendeleistung
 | 
			
		||||
    WiFi.setTxPower(WIFI_POWER_19_5dBm); // Set maximum transmit power
 | 
			
		||||
  
 | 
			
		||||
  // Maximale Sendeleistung
 | 
			
		||||
  WiFi.setTxPower(WIFI_POWER_19_5dBm); // Set maximum transmit power
 | 
			
		||||
    // Optimiere TCP/IP Stack
 | 
			
		||||
    esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
 | 
			
		||||
    
 | 
			
		||||
    // Aktiviere WiFi-Roaming für bessere Stabilität
 | 
			
		||||
    esp_wifi_set_rssi_threshold(-80);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  // Optimiere TCP/IP Stack
 | 
			
		||||
  esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N);
 | 
			
		||||
  
 | 
			
		||||
  // Aktiviere WiFi-Roaming für bessere Stabilität
 | 
			
		||||
  esp_wifi_set_rssi_threshold(-80);
 | 
			
		||||
void startMDNS() {
 | 
			
		||||
  if (!MDNS.begin("filaman")) {
 | 
			
		||||
    Serial.println("Error setting up MDNS responder!");
 | 
			
		||||
    while(1) {
 | 
			
		||||
      vTaskDelay(1000 / portTICK_PERIOD_MS);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  Serial.println("mDNS responder started");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void configModeCallback (WiFiManager *myWiFiManager) {
 | 
			
		||||
  Serial.println("Entered config mode");
 | 
			
		||||
  oledShowTopRow();
 | 
			
		||||
  oledShowMessage("WiFi Config Mode");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void initWiFi() {
 | 
			
		||||
  // load Wifi settings
 | 
			
		||||
  wifiSettings();
 | 
			
		||||
 | 
			
		||||
  wm.setAPCallback(configModeCallback);
 | 
			
		||||
 | 
			
		||||
  wm.setSaveConfigCallback([]() {
 | 
			
		||||
    Serial.println("Configurations updated");
 | 
			
		||||
    ESP.restart();
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  if(wm_nonblocking) wm.setConfigPortalBlocking(false);
 | 
			
		||||
  wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
 | 
			
		||||
  //wm.setConfigPortalTimeout(320); // Portal nach 5min schließen
 | 
			
		||||
  wm.setWiFiAutoReconnect(true);
 | 
			
		||||
  wm.setConnectTimeout(5);
 | 
			
		||||
 | 
			
		||||
  oledShowTopRow();
 | 
			
		||||
  oledShowMessage("WiFi Setup");
 | 
			
		||||
  
 | 
			
		||||
  bool res;
 | 
			
		||||
  // res = wm.autoConnect(); // auto generated AP name from chipid
 | 
			
		||||
  res = wm.autoConnect("FilaMan"); // anonymous ap
 | 
			
		||||
  // res = wm.autoConnect("spoolman","password"); // password protected ap
 | 
			
		||||
 | 
			
		||||
  if(!res) {
 | 
			
		||||
  //bool res = wm.autoConnect("FilaMan"); // anonymous ap
 | 
			
		||||
  if(!wm.autoConnect("FilaMan")) {
 | 
			
		||||
    Serial.println("Failed to connect or hit timeout");
 | 
			
		||||
    // ESP.restart();
 | 
			
		||||
    oledShowTopRow();
 | 
			
		||||
@@ -52,6 +81,11 @@ void initWiFi() {
 | 
			
		||||
 | 
			
		||||
    oledShowTopRow();
 | 
			
		||||
    display.display();
 | 
			
		||||
 | 
			
		||||
    vTaskDelay(500 / portTICK_PERIOD_MS);
 | 
			
		||||
 | 
			
		||||
    // mDNS
 | 
			
		||||
    startMDNS();
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -59,21 +93,31 @@ void checkWiFiConnection() {
 | 
			
		||||
  if (WiFi.status() != WL_CONNECTED) 
 | 
			
		||||
  {
 | 
			
		||||
    Serial.println("WiFi connection lost. Reconnecting...");
 | 
			
		||||
    wifiOn = false;
 | 
			
		||||
    oledShowTopRow();
 | 
			
		||||
    oledShowMessage("WiFi reconnecting...");
 | 
			
		||||
    oledShowMessage("WiFi reconnecting");
 | 
			
		||||
    WiFi.reconnect(); // Versuche, die Verbindung wiederherzustellen
 | 
			
		||||
    delay(5000); // Warte 5 Sekunden, bevor erneut geprüft wird
 | 
			
		||||
    vTaskDelay(5000 / portTICK_PERIOD_MS); // Warte 5 Sekunden, bevor erneut geprüft wird
 | 
			
		||||
    if (WiFi.status() != WL_CONNECTED) 
 | 
			
		||||
    {
 | 
			
		||||
      Serial.println("Failed to reconnect. Restarting WiFi...");
 | 
			
		||||
      WiFi.disconnect();
 | 
			
		||||
      delay(1000);
 | 
			
		||||
      Serial.println("WiFi disconnected.");
 | 
			
		||||
      vTaskDelay(1000 / portTICK_PERIOD_MS);
 | 
			
		||||
      wifiErrorCounter++;
 | 
			
		||||
      //initWiFi();
 | 
			
		||||
 | 
			
		||||
      //wifiSettings();
 | 
			
		||||
      WiFi.reconnect();
 | 
			
		||||
      Serial.println("WiFi reconnecting...");
 | 
			
		||||
      WiFi.waitForConnectResult();
 | 
			
		||||
    } 
 | 
			
		||||
    else 
 | 
			
		||||
    {
 | 
			
		||||
      Serial.println("WiFi reconnected.");
 | 
			
		||||
      wifiErrorCounter = 0;
 | 
			
		||||
      wifiOn = true;
 | 
			
		||||
      oledShowTopRow();
 | 
			
		||||
      startMDNS();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user