Changelog - Version 2.0.0
Diese Version ist ein Major-Release, das WifiWhirl grundlegend modernisiert. Im Mittelpunkt steht die neue WifiWhirl Cloud (PoolLink) - eine verschlüsselte Fernverbindung, mit der du deinen Whirlpool von überall aus überwachen und steuern kannst. Darüber hinaus ersetzt eine komplett neu gestaltete Web-App die bisherige Mehrseiten-Oberfläche, bringt einen geführten Einrichtungsassistenten, Expertenmodus, Gastmodus für Vermietungen und zahlreiche Verbesserungen bei Energie, Automatisierung und Firmware-Updates.
Neue Funktionen
-
WifiWhirl Cloud (PoolLink) - verschlüsselte Cloud-Anbindung:
- Neue PoolLink-Bibliothek mit verschlüsselter Verbindung zum Cloud-Server
- Synchronisation von Befehlswarteschlange und Einstellungen mit der Cloud
- Dedizierte Cloud-Seite in der Web-App mit Statusanzeige (Whirlpool -> Verbindung -> Cloud)
- Werksseitige Provisionierung - Endnutzer müssen keine technischen Verbindungsdaten eingeben
- Konto-Kopplung per Browser in der Cloud-Web-App
- Cloud und MQTT sind gegenseitig ausgeschlossen. Nur eine Fernverbindung gleichzeitig aktiv
- Außentemperatur und Standort kommen nun aus der Cloudverbindung statt von einer PLZ-Wetter-API auf dem Gerät
-
Komplett neue Web-Oberfläche:
- Einheitliche Single-Page-App
- Mobile-first Navigation
- Anpassbares Dashboard: Widgets per Drag & Drop anordnen, in der Größe ändern und ein-/ausblenden
- Neues Dashboard-Design mit Pumpen-Display-Anzeige, Steuerungskacheln und Masonry-Layout
- Thermostat-Drehregler
- Überarbeitete Konfigurationsseite
- Überarbeitete Automatisierungsseite
- Überarbeitete Smart-Schedule-Seite
- Mehrsprachigkeit: Deutsch, Englisch sowie Beta-Locales Französisch, Niederländisch und Polnisch mit automatischer Spracherkennung (#15, thx @cth35)
- Währungsanzeige für Energiekosten: EUR, PLN, GBP
- PWA-Unterstützung mit aktualisierten Icons und Manifest
-
Display-Helligkeit:
- Konfigurierbare Helligkeitsstufe und Dauer beim Tastendruck (#18, thx @Sirus1985)
-
Einrichtungsassistent (Setup Assistant):
- Geführter Ersteinrichtungs-Assistent in der Web-App statt WiFiManager-Captive-Portal
-
Firmware-Update per Web:
- Opt-in: Gerät lädt signierte Firmware selbst vom Manifest-Server und installiert sie
- Tägliche Update-Prüfung
- Navigations-Badge auf der Info-Seite, wenn eine neuere Version verfügbar ist
- Manuelle Installation per Button
- "Jetzt prüfen"-Button für sofortige Manifest-Abfrage
-
Expertenmodus:
- Optionale Experten-Seite mit konfigurierbaren Leistungswerten (Heizung, Filterpumpe, AirJet, HydroJet, Standby)
- Automatische Wärmeverlust-Kalibrierung (W/K) mit Fortschritts-Timeline und verbesserter Messung
- Manueller Wärmeverlust-Koeffizient mit Setzen/Zurücksetzen
- Wärmeverlust fließt in Heizzeit-Schätzungen für Dashboard und Smart Schedule ein
- Prometheus-Metriken-Endpunkt
/metrics(geschützt über Webhook-Basic-Auth)
-
Gastmodus (Host Mode) für Vermietungen:
- Einschränkungen am physischen Bedienpanel für Hotels, AirBnB und Ferienwohnungen
- Blockiert Timer-, Ein/Aus- und Geräte-Tasten am Panel
- Begrenzt die Zieltemperatur am Panel auf einen konfigurierbaren Maximalwert
- Optional: Heizung nach Erreichen der Zieltemperatur ausschalten
- Web-UI, MQTT und Apps bleiben uneingeschränkt nutzbar
-
Energie & Tarife:
- Nachttarif mit konfigurierbarem Nachtpreis, Zeitfenster und Wochenendmodus
- Tarifbewusste Kostenberechnung: Gesamt- und Tageskosten nutzen den jeweils aktiven Tarif
- Konfigurierbare Zeitzone für den täglichen Energiezähler-Reset um Mitternacht (lokale Zeit statt UTC)
-
Smart Schedule & Automatisierung:
- Wiederkehrende Smart Schedules: Täglich oder Wöchentlich
- Automatische Wiederanlaufplanung nach Erreichen der Zielzeit, auch nach Stromausfall
- Globale und pro-Befehl-Aktivierungsschalter für die Befehlswarteschlange (ohne Löschen)
- Schnellvorlage "Täglicher Filterpumpen-Zyklus" auf der Automatisierungsseite
- Überarbeiteter Automatisierungs-Planer mit Wiederholungsvorgaben (einmalig/stündlich/täglich/wöchentlich/individuell)
-
Geräte-Identität & Provisionierung:
- Generische Firmware mit werksseitiger Provisionierung
- Dedizierte Geräteeinstellungen-Seite: Anmeldung, Geräteidentität, Webhook, Expertenmodus
-
Sicherheit & Authentifizierung:
- Optionale globale Anmeldung für Web-UI, HTTP-API und WebSocket (Passworthash in Flash)
- Persistente "Angemeldet bleiben"-Sitzungen mit gehashten Tokens im Flash
- Login-Drosselung nach fünf Fehlversuchen (30 s Cooldown, HTTP 429)
- Webhook-Aktivierungsschalter und optionale HTTP-Basic-Auth (getrennt von Geräteanmeldung)
- OTA-Passwort erforderlich zum Aktivieren der Anmeldung
-
Plattform & Hardware:
- Beta: ESP32-Unterstützung neben ESP8266
- Beta: MSPA-Pumpenunterstützung (nur ESP32)
- Unterstützungspaket-Endpunkt
/support/für Kundendiagnose (JSON-Download)
-
HTTP-Polling statt WebSocket:
- Live-Updates ausschließlich über
/getpolldata/und/sendcommand/ - Stabiler auf ESP8266 bei geringem Heap
- Gehashte JS/CSS-Bundles mit immutable Cache-Headern
- Live-Updates ausschließlich über
Fehlerbehebungen
-
Speicher & Stabilität:
- Heap-Korruption bei MQTT-Payload-Parsing behoben (kein Null-Terminieren im PubSubClient-Puffer)
- Streaming-JSON für Poll-Antworten und Support-Paket statt großer String-Allokationen
- Befehlswarteschlangen-Upload: Größenlimit (4 KB), fester Parse-Puffer, kein Löschen bei OOM
- Energie- und Laufzeitzähler springen nach Absturz-Neustart nicht mehr zurück (RTC-Spiegelung)
- Befehlswarteschlange nach NTP-Sprung: kein Watchdog-Reboot mehr durch Endlosschleife
- Einstellungs-Korruptionskette behoben (cmdq.json-Truncation, entkoppeltes Laden, sichere Defaults)
- Energieberechnung: inkrementelle Akkumulation, Millisekunden-Reste, double-Präzision für Gesamtenergie
-
Sicherheit & API:
- OTA-Upload: Authentifizierung und Abbruch bei unvollständigem Upload
- Interne LittleFS-Dateien nicht mehr über HTTP-Fallback erreichbar
-
Benutzeroberfläche:
- FCINT/FINT-Zuordnung für Filter-Wartungsintervalle korrigiert (#24: thx @jenskraska)
- Dashboard: Laufzeit klar als Geräte-Laufzeit beschriftet
- Filterpumpe vs. Gesamt-Ein/Aus-Schalter korrekt benannt (CMD 22 = Power Toggle)
Verbesserungen
-
Benutzeroberfläche & Benutzerfreundlichkeit (UI/UX):
- Status-Karten auf Geräte-, Experten-, WLAN-, Cloud- und MQTT-Seiten
- Hardware-Modellauswahl als Icon-Kacheln statt Segment-Control
- Dashboard-Widget-Layout clientseitig speicherbar
- WLAN-AP-Fallback in Expertenmodus verschoben
-
Smart Schedule & Heizplanung:
- Nächste Ausführungszeit als Überschrift auf der Automatisierungsseite
- Smart-Schedule-Hilfe ausgeblendet, wenn ein Zeitplan aktiv ist
- Temperatur-Einheit in Konfiguration und Smart Schedule folgt dem Live-UNT-Status
- Heizzeit-Schätzungen vereinheitlicht (Celsius-Helfer, Fahrenheit-Anzeige korrekt)
-
Energie & Wetter:
- Wetter-API auf dem Gerät entfernt - weniger Heap-Verbrauch und keine Loop-Blockierung
/getweather/liefert nur noch den von der Cloud gepushten Ortsnamen- Nachttarif-Konfiguration in Firmware und Config-UI
-
Firmware & Build:
- Codebase modularisiert:
api/,net/,web/,sys/statt monolithischemmain.cpp
- Codebase modularisiert:
-
Diagnose & Logging:
- JSON- und Prometheus-Ausgabe escapen Sonderzeichen korrekt
- RTC-Crash-Backtraces im Support-Paket
- Lokalisierte Neustart-Gründe statt hardcodierter deutscher Strings
Entfernt
-
WebSocket als primärer Live-Kanal:
- WebSocket-Push durch HTTP-Polling ersetzt (stabiler auf ESP8266)
-
WiFiManager Captive Portal:
- Ersteinrichtung läuft vollständig über den SPA-Einrichtungsassistenten
-
Geräteseitige Wetter-API:
- PLZ-basierte HTTP-Wetterabfrage und zugehörige Einstellungen entfernt
- Außentemperatur kommt über WifiWhirl PoolLink Cloud
Intern / Build-System
-
Frontend-Build:
Code/frontend/mit Vite, Preact, Docker-Build-Tooling- Gehashte Bundles mit immutable Cache-Headern
VITE_ENABLE_MSPAfür ESP32-spezifische Hardware-Optionen
-
Firmware-Architektur:
WebServerTund Plattform-Shims für ESP8266/ESP32- PoolLink-Bibliothek (
Code/lib/PoolLink/) SEED_DEVICE_CONFIGzum Überschreiben veralteter LittleFS-Identität aus kompilierten SeedsFILTER_6W_SPIKES=1in allen Build-Umgebungen (#25, thx @RuedigerMueller)
-
Neue API-Endpunkte (Auswahl):
/getcloud/,/setcloud/,/getpairing/- Cloud-Konfiguration und Konto-Kopplung/getdevice/,/setdevice/,/provision/- Geräteidentität und Provisionierung/getupdate/,/doupdate/- Firmware-Update-Prüfung und Installation/getpolldata/,/sendcommand/- HTTP-Polling/auth/status- Anmeldestatus/support/- Diagnosepaket/metrics- Prometheus-Metriken
-
Versionierung:
- Version auf
2.0.0aktualisiert (Firmware und Frontend)
- Version auf
Upgrade-Hinweise
Beim Upgrade ab Version 1.2.x:
- Firmware-Update: Nur die Firmware muss aktualisiert werden. Bestehende Einstellungen in
settings.json,cmdq.jsonunddevuser.jsonbleiben erhalten. - Web-Oberfläche: Die Oberfläche ist komplett neu. Lesezeichen auf alte HTML-Seiten werden per Hash-Routing auf die entsprechenden SPA-Routen umgeleitet (
#/config,#/infousw.). - Cloud: Cloud-fähige Geräte benötigen einen werksseitig provisionierten PSK. Open-Source-Builds ohne PSK zeigen keine Cloud-Navigation. Cloud und MQTT können nicht gleichzeitig aktiv sein.
- Wetter: Die PLZ-Einstellung für die lokale Wetter-API entfällt. Außentemperatur und Standort werden von der Cloud bereitgestellt, wenn die Cloud-Verbindung aktiv ist und Wetter aktiviert ist.
- Live-Updates: Die Web-App nutzt HTTP-Polling statt WebSocket. Keine Konfiguration nötig - der Modus ist fest eingebaut.
- Anmeldung: Optional aktivierbar unter Geräteeinstellungen. Bestehende OTA-Zugangsdaten werden als Ausgangspunkt verwendet.
- Einrichtung: Bereits eingerichtete Geräte (
setupComplete) starten nicht erneut den Assistenten.
Kompatibilität:
- MQTT-Topics und Befehlsprotokoll abwärtskompatibel; Cloud ist ein neuer, optionaler Kanal
- Home Assistant Discovery unverändert nutzbar (MQTT-Pfad)
- Befehlswarteschlange (
cmdq.json) bleibt kompatibel - Smart-Schedule-Wiederholung (
repeat: never/daily/weekly) ist ein neues Feld mit Rückwärtskompatibilität für einmalige Zeitpläne