Verify all runtime pages and document twenty-tile swipe acceptance
This commit is contained in:
@@ -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
|
permanente add-ondata; wifi/API/OTA blijven in de eigen ESPHome-YAML. Lees
|
||||||
docs/RELEASING.md voordat je updates publiceert. Main distribueert beide borden.
|
docs/RELEASING.md voordat je updates publiceert. Main distribueert beide borden.
|
||||||
Genereer packages met tools/generate_packages.py; bewerk ze niet handmatig.
|
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.
|
hieronder gelden uitsluitend voor de oude handmatige profielen.
|
||||||
Behoud gegevensschema, protocolcompatibiliteit, unieke sleutels en CYD-preferences.
|
Behoud gegevensschema, protocolcompatibiliteit, unieke sleutels en CYD-preferences.
|
||||||
Test updates met bestaande gegevens. Publiceer geen onbekende opslagversie zonder
|
Test updates met bestaande gegevens. Publiceer geen onbekende opslagversie zonder
|
||||||
|
|||||||
+6
-1
@@ -108,7 +108,7 @@ je later opnieuw meten. Voor diagnose en de oudere handmatige installatie:
|
|||||||
## 5. Kies en wijzig je tegels
|
## 5. Kies en wijzig je tegels
|
||||||
|
|
||||||
Selecteer je scherm, vul de titel in en zoek entiteiten. De kiezer heeft
|
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.
|
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
|
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**:
|
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.
|
- 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.
|
- 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.
|
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
|
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,
|
scherm acties. Als de app/HA langer dan circa 95 seconden geen updates geeft,
|
||||||
|
|||||||
@@ -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
|
`/data/platformio`. Alleen deze mappen zijn uitgesloten van appback-ups via
|
||||||
`backup_exclude`. `/data/screens.json` en eigen ESPHome-configuraties blijven
|
`backup_exclude`. `/data/screens.json` en eigen ESPHome-configuraties blijven
|
||||||
back-upgegevens; sluit nooit `/data` als geheel uit.
|
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.
|
||||||
|
|||||||
@@ -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,
|
(Easy/manual, Guition/CYD) geslaagd. Test twintig entities/21 berichten, overflow,
|
||||||
firmwaregate, oude instellingen op de draad en contact consumeren geslaagd.
|
firmwaregate, oude instellingen op de draad en contact consumeren geslaagd.
|
||||||
Fysieke swipeacceptatie en live HA-update volgen hieronder.
|
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
|
||||||
|
|||||||
@@ -4456,7 +4456,8 @@ script:
|
|||||||
then:
|
then:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
id(last_touch_ms) = millis();
|
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
|
- script.execute: show_tile_page
|
||||||
- delay: 150ms
|
- delay: 150ms
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
@@ -4467,7 +4468,7 @@ script:
|
|||||||
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
||||||
bool ok = guition::check_geometry(id(home_page)->obj);
|
bool ok = guition::check_geometry(id(home_page)->obj);
|
||||||
for (int i = 0; i < 10; ++i) {
|
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<count : i < count && (paginated ? i >= 6 : i < 6);
|
||||||
ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible);
|
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)})
|
for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)})
|
||||||
|
|||||||
@@ -4591,7 +4591,8 @@ script:
|
|||||||
then:
|
then:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
id(last_touch_ms) = millis();
|
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
|
- script.execute: show_tile_page
|
||||||
- delay: 150ms
|
- delay: 150ms
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
@@ -4602,7 +4603,7 @@ script:
|
|||||||
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
for (int i = 0; i < 10; ++i) {
|
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<count : i < count && (paginated ? i >= 6 : i < 6);
|
||||||
ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible);
|
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)})
|
for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)})
|
||||||
|
|||||||
+3
-2
@@ -4524,7 +4524,8 @@ script:
|
|||||||
then:
|
then:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
id(last_touch_ms) = millis();
|
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
|
- script.execute: show_tile_page
|
||||||
- delay: 150ms
|
- delay: 150ms
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
@@ -4535,7 +4536,7 @@ script:
|
|||||||
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
for (int i = 0; i < 10; ++i) {
|
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<count : i < count && (paginated ? i >= 6 : i < 6);
|
||||||
ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible);
|
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)})
|
for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)})
|
||||||
|
|||||||
@@ -4389,7 +4389,8 @@ script:
|
|||||||
then:
|
then:
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
id(last_touch_ms) = millis();
|
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
|
- script.execute: show_tile_page
|
||||||
- delay: 150ms
|
- delay: 150ms
|
||||||
- lambda: |-
|
- lambda: |-
|
||||||
@@ -4400,7 +4401,7 @@ script:
|
|||||||
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
id(tile6), id(tile7), id(tile8), id(tile9), id(tile10)};
|
||||||
bool ok = guition::check_geometry(id(home_page)->obj);
|
bool ok = guition::check_geometry(id(home_page)->obj);
|
||||||
for (int i = 0; i < 10; ++i) {
|
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<count : i < count && (paginated ? i >= 6 : i < 6);
|
||||||
ok = ok && (lv_obj_has_flag(tiles[i], LV_OBJ_FLAG_HIDDEN) != visible);
|
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)})
|
for (lv_obj_t* control : {id(page_prev), id(page_next), id(page_number)})
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# ESP Screen Manager
|
# 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,
|
naar een CYD- of Guition-scherm zonder opnieuw flashen. Met installatiehulp,
|
||||||
unieke apparaat-YAML en ondersteuning voor meerdere schermen.
|
unieke apparaat-YAML en ondersteuning voor meerdere schermen.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user