Put ESP Screens in English and keep layouts when entity IDs change (0.2.40)

Everything a user sees or reads is now English: both boards' labels,
status replies and logs, the ESP Screens editor and Alerts cheatsheet,
and the README and guides (docs/TILES.md, CALIBRATING.md, ACCEPTANCE.md
and TROUBLESHOOTING.md replace the Dutch file names). Labels follow
Home Assistant's own English names (Heat/Cool modes, Heating/Cooling
actions, Away, Returning to dock, weather conditions), dates use English
abbreviations and the top bar writes numbers the English way. Docs use
HA 2026.9's menu names (Settings -> Apps, App store, Settings -> Tools).
Unused legacy files (home-like.yaml, buttons.yaml, a.out) are removed.

Firmware 0.2.34 names its entities in English. Home Assistant registers
a renamed ESPHome entity under a new entity ID, so the inbox
text.<screen>_tegelinstellingen becomes text.<screen>_tile_settings and
the layout stored under the old ID would be lost. The manager now
recognises the screen by its device, during a run or after a restart,
and moves its layout and update history along; the Update button and
the nightly round follow the screen through the rename. Screens that
still run 0.2.33 or older keep working: both languages are matched.

Main is the only release branch from now on.

Tested on a Home Assistant Yellow (HA 2026.9.1) with both bench boards:
see docs/TEST_RESULTS_0240.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-15 02:08:43 +02:00
parent f60eed3ff6
commit 3e959b3df9
87 changed files with 5049 additions and 11167 deletions
+55 -55
View File
@@ -1,68 +1,68 @@
# Testresultaten ESP32-2432S028 — 12 september 2026
# Test results — ESP32-2432S028 — September 12, 2026
Getest op de via USB aangesloten `cyd-2432s028`, ESP32 rev3.1, ESPHome
2026.6.2 / ESP-IDF. De firmware meldt compilatietijd
`2026-09-12 09:54:02 +0200` en is via USB geschreven en geverifieerd.
Tested on the USB-connected `cyd-2432s028`, ESP32 rev3.1, ESPHome
2026.6.2 / ESP-IDF. The firmware reports compile time
`2026-09-12 09:54:02 +0200` and was written and verified over USB.
## Geslaagd
## Passed
- C++-regressietests voor ruis, contactdender, verspringende aanrakingen,
echte sleepbewegingen, temperatuurafronding en `millis()`-overflow.
- Vijf indelings-/configuratietests voor schermgrenzen, overlap, modale
lagen, voorwaardelijke paginering en guards vóór alle tegelhandlers.
- ESPHome-validatie met `TILE_COUNT: 6`; navigatie is in de code aan
`count > 6` gekoppeld en tegels boven het ingestelde aantal zijn verborgen.
- Volledige ESP-IDF-build en USB-upload met verificatie van de geschreven data.
- Verbinding met de bestaande Home Assistant-installatie en ontvangst van
entiteitsstatussen.
- **10 paginacontroles en 50 overlay-cycli op het echte apparaat.**
Render-startteller steeg van 38 naar 101 tussen de eerste en
laatste paginacontrole: de test controleert ook werkelijke tekenactiviteit.
- Runtime-geometrie: tegelgebied `(0,40)–(319,203)`, knop Volgende
`(211,206)–(310,237)`. De gebieden overlappen niet.
- Vrije heap tijdens de tien testmetingen: 86,416–139,696 bytes
volgens `esp_get_free_heap_size()`. Geen oplopend geheugenverlies of reset
in deze korte tekenproef.
- C++ regression tests for noise, contact bounce, jumping touches,
real drag movements, temperature rounding, and `millis()` overflow.
- Five layout/configuration tests for screen bounds, overlap, modal
layers, conditional pagination, and guards ahead of all tile handlers.
- ESPHome validation with `TILE_COUNT: 6`; navigation is tied in the code to
`count > 6`, and tiles above the configured count stay hidden.
- Full ESP-IDF build and USB upload with verification of the written data.
- Connection to the existing Home Assistant installation and receipt of
entity states.
- **10 page checks and 50 overlay cycles on the real device.**
The render-start counter rose from 38 to 101 between the first and
last page check: the test also verifies actual draw activity.
- Runtime geometry: tile area `(0,40)–(319,203)`, Next button
`(211,206)–(310,237)`. The areas don't overlap.
- Free heap during the ten test measurements: 86,416–139,696 bytes
per `esp_get_free_heap_size()`. No growing memory loss or reset
during this short render test.
## Fysieke touchdiagnose
## Physical touch diagnostics
De gebruiker tikte herhaaldelijk de vier schermhoeken aan. De oorspronkelijke
meting sprong linksboven soms meer dan honderd pixels weg. Na de driverfilter
bleven de samples in herkenbare hoekgroepen. De overblijvende scheefstand is
met een affine correctie op de hoekmedianen gecorrigeerd; de regressietest
plaatst die medianen binnen vijf pixels van het doel. De bronwaarden en
coëfficiënten staan in de configuratie, tests en CYD_STABILITY.md.
The user repeatedly tapped the four screen corners. The raw
measurement at top-left sometimes jumped more than a hundred pixels off. After the driver filter,
the samples stayed within recognizable corner clusters. The remaining skew was
corrected with an affine correction on the corner medians; the regression test
places those medians within five pixels of the target. The source values and
coefficients are in the configuration, tests, and CYD_STABILITY.md.
De gebruiker bevestigde na de laatste flash dat de juiste knoppen reageren
en de bediening nu goed werkt.
After the final flash, the user confirmed that the correct buttons respond
and the controls now work well.
## Grenzen
## Limitations
Dit is geen langdurige duurproef. Home Assistant-acties zijn niet automatisch
uitgevoerd tijdens de schermtest. De gebruiker heeft de fysieke bediening na de laatste kalibratiecorrectie
bevestigd: "Ja, dit werkt nu goed". De tien minuten
standby zijn ingesteld; er is niet tien minuten gewacht om de volledige
idle-timeout af te laten lopen.
This is not a long-duration endurance test. Home Assistant actions were not automatically
performed during the screen test. The user confirmed the physical controls after the final calibration correction
with: "Yes, this works well now". The ten-minute
standby is configured; nobody waited the full ten minutes to let the
complete idle timeout run out.
Lokale ruwe logs staan in `diagnostics/acceptance-ui-test.log` en
`diagnostics/acceptance-runtime.log` en worden niet in Git opgenomen.
Local raw logs are in `diagnostics/acceptance-ui-test.log` and
`diagnostics/acceptance-runtime.log` and are not included in Git.
## Overdraagbare installatie — aanvullende softwarecontrole
## Portable installation — additional software check
Op 12 september 2026 is de nieuwe onboarding getest:
On September 12, 2026, the new onboarding flow was tested:
- 17 Python-tests slagen: layout, kalibratie-fit, onafhankelijke verificatie,
foutieve/ruisende metingen, unieke secrets, niet overschrijven en export.
- Beide C++17-regressieprogramma's slagen (touchfilter en UI-guard).
- Starter-ZIP uitgepakt in een verse tijdelijke map; nieuw profiel met eigen
gegenereerde sleutels aangemaakt. Volledige ESPHome 2026.6.2 / ESP-IDF-build
met kalibratie-opstartmodus geslaagd.
- Gegenereerde C++ gecontroleerd op identiteitcorrectie voor het nieuwe bord.
Het aparte lokale profiel behoudt de eerder gemeten zes correctiecoëfficiënten.
- Git-index en bestaande historie gecontroleerd op de lokale credentials;
geen overeenkomsten. Lokale profielen en secrets zijn uitgesloten.
- 17 Python tests pass: layout, calibration fit, independent verification,
faulty/noisy measurements, unique secrets, not overwriting, and export.
- Both C++17 regression programs pass (touch filter and UI guard).
- Starter ZIP unpacked into a fresh temporary folder; a new profile was created with its own
generated keys. A full ESPHome 2026.6.2 / ESP-IDF build
with calibration boot mode succeeded.
- Generated C++ checked for identity correction on the new board.
The separate local profile retains the six previously measured correction coefficients.
- The Git index and existing history were checked for the local credentials;
no matches. Local profiles and secrets are excluded.
De vijfpuntswizard is met synthetische meetgegevens getest. Hij is in deze
ronde niet opnieuw fysiek uitgevoerd of naar het bestaande bord geflasht;
voor ieder nieuw paneel blijft de fysieke acceptatie verplicht. De bovenstaande
oudere hardwaretest betreft de eerder geïnstalleerde firmware.
The five-point wizard was tested with synthetic measurement data. In this
round it was not physically run again or flashed to the existing board;
physical acceptance remains mandatory for every new panel. The hardware test
above concerns the previously installed firmware.