Ich arbeite gerade daran eine WLAN Fernsteuerung für Funksteckdosen umzusetzen. Diese basiert auf den das Tutorial von alexbloggt.com. Inzwischen ist mein Projekt ziemlich gewachsen und ich bin auch ganz zufrieden. Im Gegensatz zu Alex brauche ich aber einen Access Point Modus und eine Einwahl im mein WLAN Netzwerk: Ich schalte mein Netzwerk per WLAN aus beim Ausloggen - zum Einschalten wähle ich mich in den Access Point ein und aktiviere das Netzwerk wieder. Funktioniert auch soweit aber nicht zuverlässig. Und wirklich verstehen tu' ich das auch nicht. Ich habe mal den relevanten Teil herauskopiert:
MDNSResponder mdns;
ESP8266WebServer server(80);
const char* ssid = "MyWLan";
const char* password = "MyPassword";
const char* MDNSName="ESP8266";
String ssidAP="WebSchalter";
const char* MDNSName="ESP8266";
IPAddress apIP(192, 168, 1, 50); //Adresse im AP Modus (im WLAN weist Router zu)
char passwort[64] = "APPassword"; //Passwort im AP Modus
void setup(void){
WiFi.persistent(false); //Permanentes Schreiben im Flash abschalten https://forum-raspberrypi.de/forum/thread/30941-esp8266-achtung-flash-speicher-schreibzugriff-bei-jedem-aufruf-von-u-a-wifi-begi/
WiFi.begin(ssid, password); //Server SSID Und Passwort...
int intRetry = 0;
while ((WiFi.status() != WL_CONNECTED) && (intRetry < 50)){
intRetry++;
delay(500);
}
if (WiFi.status() != WL_CONNECTED)
{ //Eigenartigerweise muss dieser Teil nicht ausgeführt werden? AP funktioniert aber trotzdem, auch wenn WLAN Verbindung Erfolg hat!?
//Wird dieser Teil ausgeführt, funktioniert wLAN nicht mehr!?
//WiFi.mode(WIFI_AP); // access point modus
//WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); //AP konfigurieren: MyIPAdress, MyGateway, MySubnet
//WiFi.softAP(&ssidAP[0], &passwort[0]); //AP Name und Passwort des AP Wi-Fi Netzes
//AP = 1; //Access Point aktiv setzen...
}
/*
if (mdns.begin(MDNSName, WiFi.localIP())) {
//Sollte eigentlich anstatt der IP Adresse einen Namen (EPS8266.local) ermöglichen - funktioniert aber nicht...
Hier habe ich noch eine Debugausgabe, die auch ausgegeben wird...
}
...
}
void loop(void){
server.handleClient();
}
Alles anzeigen
Ich verstehe nicht, warum der AP überhaupt wie gewünscht funktioniert: Ich komme normalerweise gar nie in die if (WiFi.status() != WL_CONNECTED) Bedingung, da sich der ESP8266 brav ins WLAN einwählt - kann aber trotzdem auf AP zugreifen. Leider funktioniert dies (meist?) am nächsten Morgen, wenn WLAN aus ist nicht mehr :s . Ich habe die Debugausgaben nicht in den Code gegeben, um es möglichst übersichtlich zu gestalten...
Mir ist auch schon aufgefallen, dass der Modus wifi.mode(wifi_ap_sta) gar nicht gesetzt ist, ist scheinbar Standardeinstellung...
Bin für Hinweise für die richtige/zuverlässige Konfiguration von wifi_ap_sta Modus dankbar.