From a14a66f6994ffaf9a3e6e86430553923dca7ba0a Mon Sep 17 00:00:00 2001 From: Max Gramser Date: Sat, 12 Sep 2026 17:36:48 +0200 Subject: [PATCH] Verify all runtime pages and document twenty-tile swipe acceptance --- AGENTS.md | 2 +- docs/EASY_SETUP.md | 7 ++++++- docs/RELEASING.md | 10 ++++++++++ docs/TEST_RESULTS_027.md | 22 ++++++++++++++++++++++ guition-4848s040.yaml | 5 +++-- home-like-2432s028.yaml | 5 +++-- packages/cyd.yaml | 5 +++-- packages/guition.yaml | 5 +++-- screen_manager/README.md | 2 +- 9 files changed, 52 insertions(+), 11 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 13e4407..49dfec2 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,7 +5,7 @@ plus remote ESPHome-pakketten. Geen token of blueprint nodig. Tegels staan in de permanente add-ondata; wifi/API/OTA blijven in de eigen ESPHome-YAML. Lees docs/RELEASING.md voordat je updates publiceert. Main distribueert beide borden. Genereer packages met tools/generate_packages.py; bewerk ze niet handmatig. -Runtime-modus ondersteunt alle kaarten op alle tien posities. De positiebeperkingen +Runtime-modus ondersteunt alle kaarten op alle twintig posities. De positiebeperkingen hieronder gelden uitsluitend voor de oude handmatige profielen. Behoud gegevensschema, protocolcompatibiliteit, unieke sleutels en CYD-preferences. Test updates met bestaande gegevens. Publiceer geen onbekende opslagversie zonder diff --git a/docs/EASY_SETUP.md b/docs/EASY_SETUP.md index 30e2479..3fa6b77 100644 --- a/docs/EASY_SETUP.md +++ b/docs/EASY_SETUP.md @@ -108,7 +108,7 @@ je later opnieuw meten. Voor diagnose en de oudere handmatige installatie: ## 5. Kies en wijzig je tegels Selecteer je scherm, vul de titel in en zoek entiteiten. De kiezer heeft -domeinfilters met gekleurde iconen. Je kunt maximaal tien tegels toevoegen. +domeinfilters met gekleurde iconen. Je kunt maximaal twintig tegels toevoegen. Het schermvoorbeeld toont hun plaats: twee kolommen, zes tegels per pagina. Sleep een tegel naar een andere tegel om te ordenen. Klik op een tegel voor een eigen naam, de pijltjes voor volgorde en **Bediening & weergave instellen**: @@ -125,6 +125,11 @@ Klik **Opslaan & naar scherm** om je wijzigingen door te sturen. - Scene/script: tik om uit te voeren; button/input_button: tik om in te drukken. - Sensor/binary_sensor/input_select: toont de waarde, voert geen actie uit. +Vanaf firmware 0.2.7 passen twintig tegels op maximaal vier pagina’s. Oudere +firmware houdt de limiet van tien totdat je bijwerkt. Via **Algemene instellingen +→ Vegen tussen pagina’s** kun je horizontaal swipen inschakelen. Sliders bedienen +alleen hun waarde; detailmenu’s en standby wisselen niet van pagina. + Er staan zes tegels op een pagina. Bij maximaal zes verdwijnen Vorige/Volgende. De standby-tijd is standaard tien minuten. Bij offline apparaten blokkeert het scherm acties. Als de app/HA langer dan circa 95 seconden geen updates geeft, diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 7f124ef..a17ce3f 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -91,3 +91,13 @@ De ingebouwde CLI bewaart opnieuw te downloaden caches onder `/data/build` en `/data/platformio`. Alleen deze mappen zijn uitgesloten van appback-ups via `backup_exclude`. `/data/screens.json` en eigen ESPHome-configuraties blijven back-upgegevens; sluit nooit `/data` als geheel uit. + +### Compatibiliteit 0.2.7 + +Twintig runtime-tegels vereisen firmware 0.2.7+. De manager controleert die versie +voor opslaan en verzenden van grotere indelingen. Bestaande indelingen blijven +behouden bij oudere firmware. Oude appversies ondersteunen niet meer dan tien; +breng de indeling eerst terug tot tien of herstel hun gegevensback-up bij rollback. +`settings.swipe_pages` is additief in opslagversie 1. Op de draad staat het buiten +het ongewijzigde elfvelden-settingsobject. De bestaande preferences blijven gelijk; +alleen swipe gebruikt een nieuwe eigen uint32-key `0x53575031`, standaard uit. diff --git a/docs/TEST_RESULTS_027.md b/docs/TEST_RESULTS_027.md index 3e4868f..f781afc 100644 --- a/docs/TEST_RESULTS_027.md +++ b/docs/TEST_RESULTS_027.md @@ -21,3 +21,25 @@ Controles tot nu toe: 46 Python-tests, acht C++-tests en alle vier ESPHome-build (Easy/manual, Guition/CYD) geslaagd. Test twintig entities/21 berichten, overflow, firmwaregate, oude instellingen op de draad en contact consumeren geslaagd. Fysieke swipeacceptatie en live HA-update volgen hieronder. + +## Live acceptatie + +- Add-on bijgewerkt op HA naar 0.2.7; firmware via OTA geïnstalleerd. +- Tijdelijk twintig echte entiteiten ingesteld; tien extra sensoren hadden tap=none. + Swipe aan en standby tijdelijk 600 seconden voor de test. +- Eigenaar bevestigt: “swipe enzo werkt goed”. Guition fysiek getest; CYD is niet + aangesloten en blijft voor swipe opt-in. +- De aangepaste ui_self_test doorloopt alle beschikbare pagina's: tien controles + met count=20 en vijftig overlaywissels PASS. Guition vrije heap circa 6,52 MB + inclusief PSRAM; renderframes lopen door. Tijdens de stresstest enkele + ui_refresh-meldingen rond 56–58 ms (boven de algemene 50 ms-waarschuwingsgrens). +- Definitieve vier firmwarebuilds opnieuw geslaagd na uitbreiding van de diagnose. + Statische RAM-buildcijfers: Guition 91.564 bytes, CYD 88.436 bytes. Dit zijn geen + runtime-heapmetingen voor de niet-aangesloten CYD. +- Na test de tijdelijke sensoren verwijderd: oorspronkelijke tien tegels exact + behouden, standby terug naar de gekozen 60 seconden, swipe blijft aan. + +Bij downgraden van de add-on naar een versie met maximaal tien tegels eerst de +indeling terugbrengen tot tien of de bijbehorende oudere gegevensback-up herstellen. +Swipe werkt volgens de native LVGL-gebaarafhandeling: +https://lvgl.io/docs/open/9.0/overview/indev diff --git a/guition-4848s040.yaml b/guition-4848s040.yaml index 3b640d2..99805d3 100644 --- a/guition-4848s040.yaml +++ b/guition-4848s040.yaml @@ -4456,7 +4456,8 @@ script: then: - lambda: |- id(last_touch_ms) = millis(); - id(tile_page) = 1; + static unsigned test_page=0; + id(tile_page) = runtime_tiles::enabled ? test_page++ % std::max(1,(int(runtime_tiles::model.count)+5)/6) : 1; - script.execute: show_tile_page - delay: 150ms - lambda: |- @@ -4467,7 +4468,7 @@ script: id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)}; bool ok = guition::check_geometry(id(home_page)->obj); for (int i = 0; i < 10; ++i) { - bool visible = i < count && (paginated ? i >= 6 : i < 6); + bool visible = runtime_tiles::enabled ? i<6 && i+id(tile_page)*6= 6 : i < 6); ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible); } for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)}) diff --git a/home-like-2432s028.yaml b/home-like-2432s028.yaml index bf71a47..6490016 100644 --- a/home-like-2432s028.yaml +++ b/home-like-2432s028.yaml @@ -4591,7 +4591,8 @@ script: then: - lambda: |- id(last_touch_ms) = millis(); - id(tile_page) = 1; + static unsigned test_page=0; + id(tile_page) = runtime_tiles::enabled ? test_page++ % std::max(1,(int(runtime_tiles::model.count)+5)/6) : 1; - script.execute: show_tile_page - delay: 150ms - lambda: |- @@ -4602,7 +4603,7 @@ script: id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)}; bool ok = true; for (int i = 0; i < 10; ++i) { - bool visible = i < count && (paginated ? i >= 6 : i < 6); + bool visible = runtime_tiles::enabled ? i<6 && i+id(tile_page)*6= 6 : i < 6); ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible); } for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)}) diff --git a/packages/cyd.yaml b/packages/cyd.yaml index bd513eb..9c6a09d 100644 --- a/packages/cyd.yaml +++ b/packages/cyd.yaml @@ -4524,7 +4524,8 @@ script: then: - lambda: |- id(last_touch_ms) = millis(); - id(tile_page) = 1; + static unsigned test_page=0; + id(tile_page) = runtime_tiles::enabled ? test_page++ % std::max(1,(int(runtime_tiles::model.count)+5)/6) : 1; - script.execute: show_tile_page - delay: 150ms - lambda: |- @@ -4535,7 +4536,7 @@ script: id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)}; bool ok = true; for (int i = 0; i < 10; ++i) { - bool visible = i < count && (paginated ? i >= 6 : i < 6); + bool visible = runtime_tiles::enabled ? i<6 && i+id(tile_page)*6= 6 : i < 6); ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible); } for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)}) diff --git a/packages/guition.yaml b/packages/guition.yaml index cdcf7dd..dcba31f 100644 --- a/packages/guition.yaml +++ b/packages/guition.yaml @@ -4389,7 +4389,8 @@ script: then: - lambda: |- id(last_touch_ms) = millis(); - id(tile_page) = 1; + static unsigned test_page=0; + id(tile_page) = runtime_tiles::enabled ? test_page++ % std::max(1,(int(runtime_tiles::model.count)+5)/6) : 1; - script.execute: show_tile_page - delay: 150ms - lambda: |- @@ -4400,7 +4401,7 @@ script: id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)}; bool ok = guition::check_geometry(id(home_page)->obj); for (int i = 0; i < 10; ++i) { - bool visible = i < count && (paginated ? i >= 6 : i < 6); + bool visible = runtime_tiles::enabled ? i<6 && i+id(tile_page)*6= 6 : i < 6); ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible); } for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)}) diff --git a/screen_manager/README.md b/screen_manager/README.md index 67a84e6..d056152 100644 --- a/screen_manager/README.md +++ b/screen_manager/README.md @@ -1,6 +1,6 @@ # ESP Screen Manager -Zoek je Home Assistant-entiteiten, orden maximaal tien tegels en stuur wijzigingen +Zoek je Home Assistant-entiteiten, orden maximaal twintig tegels en stuur wijzigingen naar een CYD- of Guition-scherm zonder opnieuw flashen. Met installatiehulp, unieke apparaat-YAML en ondersteuning voor meerdere schermen.