Repository navigation
CamperUI_V1.8.0
🚐 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).
- Schaltet das Display nach dem Timeout ab, wird nicht mehr nur die Hintergrundbeleuchtung gedimmt, sondern der ST7701S-Displaycontroller per SPI-Kommando (
-
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 msauf2500 msgestreckt (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,/boosternach 3× HTTP 404) werden automatisch übersprungen.
- Im Screensaver und Standby wird das Abfrage-Intervall von
-
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!).
-
Vorher:
-
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.
-
Vorher:
📱 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 msauf20 msverkü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.
- Touch-Release-Entprellung von
🚀 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.
- Ein in IRAM platzierter VSYNC-Interrupt-Callback (
- 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>/updateaufrufen und die DateiCamperUI-V1.8.0.binhochladen. - USB-Erstinstallation:
CamperUI-V1.8.0-merged.binmit dem ESP Flash Tool, Web-Flasher oder Arduino IDE ab Offset0x0flashen. - GitHub Pages Web-Flasher: Direkt im Browser unter niklasjester.github.io/CamperUI flashen.