Skip to content

CamperUI_V1.8.0

Choose a tag to compare

@NiklasJester NiklasJester released this 17 Oct 19:17
· 4 commits to master since this release

🚐 CamperUI Release V1.8.0

Release V1.8.0 ist ein großes Performance-, UX- und Energieeffizienz-Update. Im Fokus standen drei Kernbereiche: Stromverbrauch des Gesamtsystems, Bildwiederholrate (FPS) & Display-Stabilität sowie User Interaction (Smartphone-Momentum-Scrolling & Reaktionszeit).


🔋 1. Intelligentes Energiemanagement & Stromsparmaßnahmen

Bisher liefen WLAN-Transceiver, RGB-Panel-Treiber, HTTP-Polling und die 200-Hz-Hauptschleife selbst bei ausgeschaltetem Display nahezu ungedrosselt weiter. Mit V1.8.0 greift ein mehrstufiges Power-Management auf allen Ebenen:

  • WiFi Modem-Sleep (WIFI_PS_MIN_MODEM):
    • Das WLAN-Funkmodul schläft nun automatisch zwischen den DTIM-Beacons des Routers und spart dauerhaft ca. 65–80 mA (@ 3,3 V) bzw. ~0,25–0,35 W im laufenden Betrieb wie auch im Standby.
    • Während eines aktiven Web-OTA-Firmware-Uploads wird der Schlafmodus automatisch temporär deaktiviert, sodass Updates weiterhin in 2–3 Sekunden durchlaufen.
  • Echter ST7701S Hardware-Panel-Sleep im Standby:
    • Schaltet das Display nach dem Timeout ab, wird nicht mehr nur die Hintergrundbeleuchtung gedimmt, sondern der ST7701S-Displaycontroller per SPI-Kommando (0x28 Display Off + 0x10 Sleep In) samt interner Ladungspumpen und Source-/Gate-Treiber schlafen gelegt (~0,15–0,20 W Ersparnis). Beim Aufwachen erfolgt ein nahtloser Hardware-Wakeup (0x11 / 0x29).
  • Adaptives Main-Loop- & CPU-Throttling:
    • Aktiv: 5 ms Zyklus (200 Hz) für maximale Touch-Präzision.
    • Idle (> 3 s ohne Touch): Drosselung auf 15 ms (67 % weniger CPU- & I2C-Wakeups).
    • Nacht-Screensaver: Drosselung auf 35 ms + Redraw der 120px-Riesenuhr nur noch bei echtem Minutenwechsel (1× pro Minute statt 60× pro Minute).
    • Display Aus (Standby): Drosselung auf 40 ms (87,5 % weniger CPU-/I2C-Aufwachzyklen).
  • Intelligentes HTTP-Polling & Endpoint-Abschaltung:
    • Im Screensaver und Standby wird das Abfrage-Intervall von 1000 ms auf 2500 ms gestreckt (60 % weniger TCP-Verbindungen).
    • Reine Anzeige-Endpunkte (/tanks, /temp, /level, /heater, /ac) werden bei ausgeschaltetem Display komplett pausiert, während sicherheitsrelevante Alarme (/info, /batt) weiter überwacht werden.
    • Nicht genutzte oder nicht vorhandene Endpunkte (/shore, /booster nach 3× HTTP 404) werden automatisch übersprungen.
  • Wahrnehmungslineare Backlight-Kurve ($B^{1.8}$):
    • Durch eine dem menschlichen Auge angepasste Gamma-Kurve sinkt der LED-Treiberstrom im typischen Alltagsbereich (50–85 % Helligkeit) um ca. 15–20 % (~0,20–0,30 W) bei nahezu identischem Helligkeitseindruck.

📊 Wie viel Strom spart man damit pro Tag?

Betriebszustand Vorher (bis V1.7.2) Jetzt (V1.8.0) Ersparnis
Aktiv (80 % Helligkeit) ~3,25 W ~2,50 W −0,75 W (−23 %)
Nacht-Screensaver (3 %) ~1,55 W ~0,80 W −0,75 W (−48 %)
Display Aus (Standby) ~1,22 W ~0,50 W −0,72 W (−59 %)
  • Typischer Camper-Alltag (2 Std. aktiv, 22 Std. Standby):
    • Vorher: $2,\text{h} \times 3{,}25,\text{W} + 22,\text{h} \times 1{,}22,\text{W} \approx \mathbf{33{,}3,\text{Wh / Tag}}$
    • Jetzt (V1.8.0): $2,\text{h} \times 2{,}50,\text{W} + 22,\text{h} \times 0{,}50,\text{W} \approx \mathbf{16{,}0,\text{Wh / Tag}}$
    • 👉 Ersparnis pro Tag: ca. 17–18 Wh pro Tag (das entspricht ca. 1,35–1,45 Ah pro Tag an einer 12,8 V LiFePO4-Batterie bzw. über 50 % weniger Tagesverbrauch!).
  • Mit 8 Std. Nacht-Screensaver (2 Std. aktiv, 8 Std. Screensaver, 14 Std. Standby):
    • Vorher: $\approx 36{,}0,\text{Wh / Tag}$ → Jetzt: $\approx 18{,}4,\text{Wh / Tag}$ (~17,6 Wh / Tag gespart).
    • 🏕️ Auf einer 14-tägigen autarken Reise spart allein das Display damit rund 245 Wh (~19–20 Ah) Batteriekapazität.

📱 2. User Interaction & Smartphone-Momentum-Scrolling

  • Smartphone-artiges „Anschieben" (Momentum-Scrolling) überall:
    • Ein eigener Q8-Fixed-Point-Momentum-Algorithmus mit 5-Punkt-Ringpuffer und Frame-Zeit-Normierung sorgt dafür, dass sich alle scrollbaren Bereiche (Dimmer-Liste, Relais & Schalter, Einstellungen-Tabs sowie die untere Navigationsleiste) mit einer Wischgeste flüssig anschieben lassen und sanft ausgleiten.
  • Tap-to-Stop ohne Fehlauslösung:
    • Ein kurzes Antippen während des Ausgleitens stoppt die Liste sofort wie beim Smartphone, ohne versehentlich den darunterliegenden Schalter, Slider oder Text-Dialog auszulösen.
  • Schnellere Touch-Reaktion & optimierte Bedienung:
    • Touch-Release-Entprellung von 55 ms auf 20 ms verkürzt für spürbar direktere Tastenreaktion.
    • Live-Dimmer-Regelung: Dimmer senden Änderungen bereits während des Ziehens gedrosselt (150 ms) in Echtzeit an VanPi.
    • 4 Hz Echtzeit-Wasserwaage: Auf dem Wasserwaage-Tab schaltet das Polling automatisch auf 250 ms (4 Hz) hoch.
    • Direkter < Zurück-Button in den Einstellungen zum zuletzt geöffneten Tab sowie 2-Sekunden-Schutzsperre für Relais & Wasserpumpe.
    • Lautlose Touch-Bedienung: Der störende Hardware-Touch-Piepton wurde vollständig entfernt und der Buzzer-Pin beim Booten dauerhaft stummgeschaltet.

🚀 3. FPS-Boost & Dauerhafte RGB-Display-Stabilität

  • Hardware-VSYNC-Guard gegen vertikales Bildverrutschen:
    • Ein in IRAM platzierter VSYNC-Interrupt-Callback (rgb_vsync_bounce_guard_cb) überwacht bei jedem Bildanfang die interne DMA-Bounce-Buffer-Position des ESP32-S3 (bounce_pos_px / bb_eof_count) und synchronisiert sie sofort nach, falls ein NVS-Flash-Zugriff oder Interrupt-Stall auftrat.
    • Zusätzlich werden Helligkeits-Einstellungen erst beim Loslassen des Sliders (LV_EVENT_RELEASED) und nur bei tatsächlicher Wertänderung in den NVS-Flash geschrieben. Das früher vereinzelt auftretende vertikale Verrutschen des Bildschirms um 20–40 Pixel ist damit dauerhaft behoben.
  • Deutlich höhere Framerate (FPS):
    • Interner SRAM-Draw-Buffer wird vor dem WiFi-Stack reserviert (garantierter schneller DMA-SRAM-Puffer statt PSRAM-Fallback).
    • Keine teuren Full-Container-Transparenz-Allokationen (opa < 255) mehr beim Scrollen und Öffnen von Popups.
    • Gecachte Chart-Datenpunkte in der Temperatur-Historie (kein 432-Punkte-Neuaufbau mehr in jedem Animations-Frame) sowie Style-Guards gegen redundante LVGL-Redraws.

💾 Installation & Update

  • Web-OTA (Empfohlen): Im Browser http://<IP-des-Displays>/update aufrufen und die Datei CamperUI-V1.8.0.bin hochladen.
  • USB-Erstinstallation: CamperUI-V1.8.0-merged.bin mit dem ESP Flash Tool, Web-Flasher oder Arduino IDE ab Offset 0x0 flashen.
  • GitHub Pages Web-Flasher: Direkt im Browser unter niklasjester.github.io/CamperUI flashen.