Hallo,
ich such mir grad nen Wolf, find aber nix.
Was ich suche ist eine Routine, die einen ESP8266 nach einer WLAN-Verbindungsunterbrechung automatisch dazu veranlasst, sich erneut zu verbinden.
Gruß Chris
Hallo,
ich such mir grad nen Wolf, find aber nix.
Was ich suche ist eine Routine, die einen ESP8266 nach einer WLAN-Verbindungsunterbrechung automatisch dazu veranlasst, sich erneut zu verbinden.
Gruß Chris
if (WiFi.status() != WL_CONNECTED) Connect();
Gruß Fips
Was ich suche ist eine Routine, die einen ESP8266 nach einer WLAN-Verbindungsunterbrechung automatisch dazu veranlasst, sich erneut zu verbinden.
Das ist doch das Standard Verhalten eines ESP, oder nicht?
Hallo,
combie:
Das ist doch das Standard Verhalten eines ESP, oder nicht?
ja, ist es und manchmal schneller als man denkt. Ist mein Bekannter letztens drauf reingefallen, der hat das Connect-Event eingebunden, das hat aber manchmal nicht gefeuert, weil der ESP nach Reset schon online war, bevor der Event-Handler im Sketch angemeldet wurde...
WL_CONNECTED kann auch tückisch sein, weil es connected meldet wenn er am Router ist. Man sollte auch auf gotIP abfragen, wenn der DHCP mal länger braucht, kann man sonst noch nicht sinnvoll weitermachen, z.B. beim MQTT-Broker anmelden.
Gruß aus Berlin
Michael
Hallo,
falls Du nicht genau weisst was Du mit der Zeile von Fips anfangen sollst.
schreibe die Zeile mit in den loop. connect() ist eine function in der die Verbindung dann hergestellt wird. Du musst natürlich noch überlegen was du ansonsten noch machst wenn keine Verbingung hergestellt werden kann, hängt aber von Deiner Anwendung ab.
bei mir sieht das so aus.
Heinz
setup(){
WIFI_login();
.
.
}
loop{
if (WiFi.status() != WL_CONNECTED) WIFI_login();
.
.
.
}
void WIFI_login() {
WiFi.persistent(false); // daten nicht in Flash speichern
WiFi.mode(WIFI_STA);
Serial.printf("Connecting to %s ", ssid);
WiFi.begin(ssid, password);
WiFi.config(staticIP, gateway, subnet);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println(" connected");
Serial.print("local IP:");
Serial.println(WiFi.localIP());
}
Edit: Hinweis von Tommy geändert, danke
Kleine Korrektur - der Kommentar ist falsch. Das wird im Flash, nicht im EEPROM abgelegt.
WiFi.persistent(false); // daten nicht in EEprom
Gruß Tommy
Hallo,
Tommy56:
Kleine Korrektur - der Kommentar ist falsch. Das wird im Flash, nicht im EEPROM abgelegt.WiFi.persistent(false); // daten nicht in EEprom
naja, alles ist relativ, da der ESP8266 ja sowieso keinen EEPORM hat. ![]()
Ich schalte es nicht ab, er soll ja reconnecten und da die 24/7 laufen und immer im selben WLAN sind, leben die auch alle noch.
Gruß aus Berlin
Michael
Der EEPROM ist eine Emulation im Flash. Ich wollte nur vermeiden, dass jemand denkt, da wäre ein EEPROM drin.
Für 24/7 ist das auch ok, aber für die "Experimentierprozessoren", die laufend gebootet werden, macht es schon Sinn.
Gruß Tommy
Hallo,
mit Bezug auf
Ich hab das eigendlich so verstanden das das automatische Verbinden beim starten gemacht wird oder beim aufwecken, also vor setup(). Wenn wärend des loop die Verbindung verloren geht muss man halt neu verbinden. Wenn das dann dauerhaft nicht klappt würde mit WIFI.begin() bei jedem Versuch in den Flash geschrieben. Um das zu vermeiden gibt es WiFi.persistent(false).
ich hab das aber noch nicht wirklich ausprobiert, kann also sein das ich mich da irre.
Heinz