Configuration
Detaillierte Anleitung zur Konfiguration des Weather Displays.
config.h Datei
Alle Einstellungen werden in weather-station/config.h vorgenommen. Diese Datei wird aus config.sample.h erstellt:
Git-Schutz
config.h ist in .gitignore eingetragen und wird niemals ins Repository committed. Deine Zugangsdaten bleiben privat!
WiFi Einstellungen
Wichtig:
- ESP32 unterstützt nur 2.4 GHz WiFi (kein 5 GHz)
- SSID ist case-sensitive
- Sonderzeichen im Passwort mit \ escapen (z.B. \\ für \)
OpenWeatherMap API
API Key erhalten
- Auf openweathermap.org registrieren
- Im Account → API Keys einen neuen Key erstellen
- Free Tier: 1000 Anfragen/Tag (mehr als ausreichend)
const char* OWM_API_KEY = "dein_api_key_hier";
const char* OWM_CITY = "Berlin";
const char* OWM_COUNTRY_CODE = "DE";
Städte-Namen
- Englische Namen verwenden: "Munich" statt "München"
- Oder lokale Namen mit korrekter Schreibweise: "München" funktioniert auch
- Bei mehreren Städten mit gleichem Namen: Ländercode wichtig!
Beispiele:
// Deutschland
const char* OWM_CITY = "Berlin";
const char* OWM_COUNTRY_CODE = "DE";
// Österreich
const char* OWM_CITY = "Vienna";
const char* OWM_COUNTRY_CODE = "AT";
// Schweiz
const char* OWM_CITY = "Zurich";
const char* OWM_COUNTRY_CODE = "CH";
Ländercodes: ISO 3166-1 alpha-2 (DE, AT, CH, US, GB, etc.)
Zeit & Zeitzone
NTP Server
Alternativen:
- pool.ntp.org - Globaler Pool
- de.pool.ntp.org - Deutschland
- at.pool.ntp.org - Österreich
- ch.pool.ntp.org - Schweiz
- time.google.com - Google NTP
Zeitzone
Format: POSIX TZ String
Wichtige Zeitzonen:
| Region | Zeitzone String |
|---|---|
| Mitteleuropa (DE/AT/CH) | "CET-1CEST,M3.5.0,M10.5.0/3" |
| UK | "GMT0BST,M3.5.0/1,M10.5.0" |
| USA Eastern | "EST5EDT,M3.2.0,M11.1.0" |
| USA Pacific | "PST8PDT,M3.2.0,M11.1.0" |
| Australien Sydney | "AEST-10AEDT,M10.1.0,M4.1.0/3" |
Timezone String verstehen
CET-1CEST,M3.5.0,M10.5.0/3:
CET-1: Central European Time, UTC+1CEST: Central European Summer Time (Sommerzeit-Name)M3.5.0: Sommerzeit beginnt: Monat 3 (März), 5. Woche, Tag 0 (Sonntag)M10.5.0/3: Winterzeit beginnt: Monat 10 (Oktober), 5. Woche, Sonntag, 3 Uhr
Deep Sleep Weckzeiten
Das Display aktualisiert sich nur zu definierten Zeiten und geht dazwischen in Deep Sleep.
const WakeTime WAKE_SCHEDULE[] = {
{5, 30}, // 5:30 Uhr
{6, 30}, // 6:30 Uhr
{8, 0}, // 8:00 Uhr
{11, 0}, // 11:00 Uhr
{13, 0}, // 13:00 Uhr
{15, 0}, // 15:00 Uhr
{17, 0}, // 17:00 Uhr
{20, 0}, // 20:00 Uhr
{22, 0} // 22:00 Uhr
};
Weckzeiten anpassen
Weniger Updates (mehr Batterielaufzeit):
const WakeTime WAKE_SCHEDULE[] = {
{7, 0}, // Morgens
{12, 0}, // Mittags
{18, 0}, // Abends
{22, 0} // Vor dem Schlafen
};
Mehr Updates (aktuellere Daten):
const WakeTime WAKE_SCHEDULE[] = {
{6, 0}, {7, 0}, {8, 0}, // Morgens jede Stunde
{12, 0}, {13, 0}, // Mittags
{16, 0}, {17, 0}, {18, 0}, // Nachmittags
{20, 0}, {22, 0} // Abends
};
Nur Werktags (mit Code-Anpassung):
// In calculateNextWakeTime() Funktion:
struct tm timeinfo;
getLocalTime(&timeinfo);
int dayOfWeek = timeinfo.tm_wday; // 0 = Sonntag, 6 = Samstag
if (dayOfWeek == 0 || dayOfWeek == 6) {
// Wochenende: Nur mittags und abends
return nextWakeTime({12, 0}, {18, 0});
} else {
// Werktags: Normale Schedule
return nextWakeTime(WAKE_SCHEDULE);
}
Display Pins
Standard-Pinout (bereits optimal konfiguriert):
#define EPD_CS 5
#define EPD_DC 17
#define EPD_RST 16
#define EPD_BUSY 4
#define EPD_SCK 18
#define EPD_MOSI 23
Nur ändern wenn: - Pins bereits durch andere Hardware belegt - Spezielle PCB-Layout Anforderungen - Andere ESP32-Variante mit unterschiedlicher Pin-Belegung
SPI Pins
MOSI (23) und SCK (18) sollten die Hardware-SPI Pins bleiben für beste Performance.
Erweiterte Optionen
API-Sprache ändern
In weather-station.ino, Zeile ~257 und ~300:
Update-Intervall bei Problemen
Falls Deep Sleep-Berechnung Probleme macht:
// In setup() vor esp_deep_sleep_start():
uint64_t sleepSeconds = 3600; // Feste 1 Stunde
esp_sleep_enable_timer_wakeup(sleepSeconds * uS_TO_S_FACTOR);
Serial Debug ausgeben
Aktiviere ausführlichere Logs:
// Am Anfang von setup()
Serial.setDebugOutput(true);
WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info) {
Serial.printf("WiFi Event: %d\n", event);
});
Validation
Nach Änderungen testen:
- Kompilieren in Arduino IDE (Ctrl+R / Cmd+R)
- Upload auf ESP32
- Serial Monitor öffnen (115200 baud)
- Output prüfen:
- WiFi Verbindung erfolgreich?
- Zeit synchronisiert?
- Wetterdaten empfangen?
- Nächste Weckzeit korrekt berechnet?
Backup
Wichtig: Sichere deine config.h außerhalb des git repositories!
# Backup erstellen
cp weather-station/config.h ~/Backups/weather-display-config.h
# Bei Neuinstallation wiederherstellen
cp ~/Backups/weather-display-config.h weather-station/config.h