Initial commit
This commit is contained in:
123
src/main.cpp
Normal file
123
src/main.cpp
Normal file
@@ -0,0 +1,123 @@
|
||||
#include <LiquidCrystal_I2C.h>
|
||||
#include <WiFi.h>
|
||||
#include <WiFiClientSecure.h>
|
||||
#include <settings.h>
|
||||
|
||||
|
||||
|
||||
|
||||
int numNetworks = sizeof(ssidList) / sizeof(ssidList[0]); // Anzahl der Netzwerke
|
||||
int current_ap = 0; // Start mit der ersten SSID
|
||||
bool reconnecting = false; // Flag für den Reconnect-Status
|
||||
|
||||
// LCD initialisieren (16x2 Display)
|
||||
LiquidCrystal_I2C lcd(0x27, 16, 2);
|
||||
|
||||
|
||||
|
||||
// WLAN Symbol
|
||||
byte customChar_wlan[] = {
|
||||
B00000,
|
||||
B01110,
|
||||
B10001,
|
||||
B00100,
|
||||
B01010,
|
||||
B00000,
|
||||
B00100,
|
||||
B00000
|
||||
};
|
||||
|
||||
|
||||
// Funktion, um zu einem der Netzwerke zu verbinden
|
||||
void connectToWiFi() {
|
||||
|
||||
|
||||
Serial.println("WLAN Verbindungsaufbau zu: " + String(ssidList[current_ap]));
|
||||
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(" Bitte warten ");
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print("WLAN verbinden ");
|
||||
lcd.createChar(0, customChar_wlan); // WLAN-Symbol anzeigen
|
||||
|
||||
// WLAN-Symbol anzeigen
|
||||
lcd.setCursor(15, 1); // Zum Beispiel in der rechten oberen Ecke
|
||||
lcd.write(byte(0)); // Das Symbol mit Code 0 anzeigen
|
||||
|
||||
|
||||
// Verbinde mit dem aktuellen AP (SSID und Passwort aus den Arrays)
|
||||
WiFi.begin(ssidList[current_ap], passwordList[current_ap]);
|
||||
|
||||
// Warte auf die Verbindung
|
||||
int attempt = 0;
|
||||
while (WiFi.status() != WL_CONNECTED && attempt < 10) {
|
||||
delay(250);
|
||||
Serial.print("."); // Punkt ausgeben, um anzuzeigen, dass es versucht, sich zu verbinden
|
||||
lcd.setCursor(15, 1);
|
||||
lcd.print(" ");
|
||||
delay(250);
|
||||
lcd.setCursor(15, 1);
|
||||
lcd.write(byte(0));
|
||||
attempt++;
|
||||
}
|
||||
|
||||
// Wenn keine Verbindung hergestellt werden konnte, wechsle zum nächsten Netzwerk
|
||||
if (WiFi.status() != WL_CONNECTED) {
|
||||
WiFi.disconnect();
|
||||
delay(500);
|
||||
Serial.println("");
|
||||
Serial.println("Verbindung fehlgeschlagen.");
|
||||
current_ap = (current_ap + 1) % numNetworks; // Wechsel zur nächsten SSID, nach der letzten wieder zur ersten
|
||||
reconnecting = false; // Zurücksetzen des Flags, falls alle Netzwerke fehlgeschlagen sind
|
||||
}
|
||||
else {
|
||||
Serial.print("\nWLAN verbunden: ");
|
||||
Serial.print(WiFi.SSID());
|
||||
Serial.print(" ");
|
||||
Serial.println(WiFi.RSSI());
|
||||
|
||||
lcd.setCursor(0, 0);
|
||||
lcd.print(" WLAN verbunden ");
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print(" ");
|
||||
lcd.setCursor(0, 1);
|
||||
lcd.print(WiFi.SSID());
|
||||
|
||||
reconnecting = false; // Verbindung erfolgreich, setze reconnecting zurück
|
||||
|
||||
delay(2500);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void setup() {
|
||||
Serial.begin(921600); // Baudrate auf 921600 gesetzt
|
||||
delay(10);
|
||||
|
||||
lcd.init();
|
||||
lcd.backlight();
|
||||
|
||||
Serial.println("Bereit");
|
||||
|
||||
WiFi.mode(WIFI_STA); // ESP32 im STA-Modus (Client-Modus)
|
||||
WiFi.setHostname(hostname); // Setze Hostnamen
|
||||
|
||||
}
|
||||
|
||||
void loop() {
|
||||
|
||||
// Prüfe, ob die Verbindung verloren wurde
|
||||
if (WiFi.status() != WL_CONNECTED && !reconnecting) {
|
||||
Serial.println("WLAN Verbindung verloren. Versuche erneut zu verbinden...");
|
||||
reconnecting = true; // Setze Flag, dass ein Reconnectversuch läuft
|
||||
connectToWiFi(); // Versuche eine neue Verbindung
|
||||
}
|
||||
|
||||
// Wenn alle Netzwerke durchlaufen wurden und noch keine Verbindung besteht, setze das reconnecting-Flag zurück
|
||||
if (WiFi.status() != WL_CONNECTED && current_ap == 0) {
|
||||
reconnecting = false;
|
||||
}
|
||||
|
||||
delay(1000);
|
||||
}
|
||||
24
src/settings.h
Normal file
24
src/settings.h
Normal file
@@ -0,0 +1,24 @@
|
||||
#ifndef SETTINGS_H
|
||||
#define SETTINGS_H
|
||||
|
||||
// ######################## WLAN-Daten ########################
|
||||
|
||||
const char* hostname = "ESP32_WLAN_Test";
|
||||
|
||||
const char* ssidList[] = {
|
||||
"SSID_1", // Netzwerk 1
|
||||
"SSID_2", // Netzwerk 2
|
||||
"SSID_3" // Netzwerk 3
|
||||
// Weitere SSID hier hinzufügen
|
||||
};
|
||||
|
||||
const char* passwordList[] = {
|
||||
"Passwort_1", // Passwort für SSID 1
|
||||
"Passwort_2", // Passwort für SSID 2
|
||||
"Passwort_3" // Passwort für SSID 3
|
||||
// Weitere Passwörter hier hinzufügen
|
||||
};
|
||||
|
||||
// ############################################################
|
||||
|
||||
#endif // SETTINGS_H
|
||||
Reference in New Issue
Block a user