Zum Inhalt

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:

cp weather-station/config.sample.h weather-station/config.h

Git-Schutz

config.h ist in .gitignore eingetragen und wird niemals ins Repository committed. Deine Zugangsdaten bleiben privat!

WiFi Einstellungen

const char* WIFI_SSID = "Dein_WiFi_Name";
const char* WIFI_PASSWORD = "Dein_WiFi_Passwort";

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

  1. Auf openweathermap.org registrieren
  2. Im Account → API Keys einen neuen Key erstellen
  3. 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

const char* NTP_SERVER = "0.europe.pool.ntp.org";

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

const char* TIME_ZONE = "CET-1CEST,M3.5.0,M10.5.0/3";

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+1
  • CEST: 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:

// Deutsch (Standard)
"&lang=de"

// English
"&lang=en"

// Weitere: fr, es, it, pt, ru, etc.

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:

  1. Kompilieren in Arduino IDE (Ctrl+R / Cmd+R)
  2. Upload auf ESP32
  3. Serial Monitor öffnen (115200 baud)
  4. Output prüfen:
  5. WiFi Verbindung erfolgreich?
  6. Zeit synchronisiert?
  7. Wetterdaten empfangen?
  8. 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

Weitere Informationen