Skip to content

WifiWhirl Software v2.0.0

Latest

Choose a tag to compare

@undone37 undone37 released this 24 Aug 19:56

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

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 monolithischem main.cpp
  • 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_MSPA für ESP32-spezifische Hardware-Optionen
  • Firmware-Architektur:

    • WebServerT und Plattform-Shims für ESP8266/ESP32
    • PoolLink-Bibliothek (Code/lib/PoolLink/)
    • SEED_DEVICE_CONFIG zum Überschreiben veralteter LittleFS-Identität aus kompilierten Seeds
    • FILTER_6W_SPIKES=1 in 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.0 aktualisiert (Firmware und Frontend)

Upgrade-Hinweise

Beim Upgrade ab Version 1.2.x:

  • Firmware-Update: Nur die Firmware muss aktualisiert werden. Bestehende Einstellungen in settings.json, cmdq.json und devuser.json bleiben 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, #/info usw.).
  • 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