e37148f9b1
Every screen gets the user action esphome.<device>_show_alert with title, subtitle, icon, color, button_text, timeout and flash. The card sits on LVGL's top layer above every page, card and the dim overlay, wakes the screen and keeps the backlight at its normal brightness until the button (or the timeout; 0 waits for the button, the button always closes at once). flash: true blinks the backlight four times on arrival. Icons are the tile picker names (also mdi:name or the hex codepoint of a compiled glyph, else alert-outline), colours the tile pastels. A new alert replaces the current one; every ending fires esphome.screen_alert with action, title and screen. dismiss_alert removes the card remotely. The field is button_text rather than button: ESPHome reserves the names of loaded components as ids and the CYD profile loads button:. The C++ namespace is screen_alert because the widget id alert_overlay becomes a global lv_obj_t*. tools/generate_icons.py now also writes tile_icon_names.h (name to codepoint) from the one icon list. Firmware 0.2.31 for both boards. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
3.1 KiB
3.1 KiB
Testresultaten app 0.2.36 / firmware 0.2.31 (2026-09-14)
Nieuw: een alert vanuit een Home Assistant-automatisering (esphome.<scherm>_show_alert),
zie README "Alert vanuit een automatisering". De kaart staat op LVGL's toplaag boven elke
pagina, kaart en de standby-laag; het scherm wordt gewekt en blijft op de normale
helderheid tot de knop of de timeout.
Wat veranderde
components/smart_display/alert_overlay.h(namespacescreen_alert): titel/subtitle trimmen en afkappen op een UTF-8-grens, knoptekst met fallback "Oké", icoonnaam,mdi:-prefix of hex-codepoint alleen als het glyph in de fonts zit (andersalert-outline), paletkleur of witte kaart, timeout 0..86400.components/smart_display/tile_icon_names.hwordt doortools/generate_icons.pygegenereerd uit dezelfde lijst als de fonts (naam naar codepoint).- Beide profielen:
top_layermetalert_overlay, scriptsalert_show,alert_dismiss,alert_flash(vier backlight-knippers),alert_timeout,alert_report(esphome.screen_alertmetaction,title,screen); API-actiesshow_alertendismiss_alert; de standby-guard wacht opalert_active. Het veld heetbutton_text: ESPHome reserveert namen van geladen componenten als id en de CYD heeftbutton:.
Geautomatiseerd
- C++ (clang++ -std=c++17 -Wall -Wextra -Werror -I.): 12/12 PASS; nieuw
test_alert_overlay(iconen, kleuren, timeout-grenzen, afkappen, knoptekst). - Python: 98 tests OK (
FIRMWARE_VERSION0.2.31 in app, profielen en pakketten); nieuwtest_alert.py(actievelden, toplaag vóór de pagina's, standby-guard, geen ander sluitpad, events, zelftest zonder HA-actie, kaartgeometrie op beide borden);generate_packages.py --checkengenerate_icons.py --checkgroen; bench-kopieën opnieuw gegenereerd. - ESPHome 2026.6.2 compile:
easy-cyd-device.yamlSUCCESS in 27 s (RAM 31,3%, flash 76,8%; 0.2.29 was 31,0% / 76,1%),easy-guition-device.yamlSUCCESS in 28 s (RAM 32,3%, flash 18,5%; was 32,0% / 18,3%). Eén waarschuwing, dezelfde als eerder (runtime_tiles.h:546, enum-conversie in de detailkaart), niet uit deze wijziging.
Niet getest
- Geen scherm aan USB tijdens deze build: de alert is niet op glas gezien. Wekken, de knippers, de knop en de events zijn alleen door validatie, compile en de tekst-tests gedekt.
Te controleren op Studio 1 na de update
esphome.studio_1_show_alertmet en zonderflash, mettimeout: 0entimeout: 10; de kaart moet boven een open lichtkaart en op elke pagina liggen; de knop sluit direct, ook met een timeout.- Backlight blijft op de normale helderheid voorbij de standby-tijd zolang de kaart staat; na de knop dimt het scherm weer na de gewone standby-tijd.
- Event
esphome.screen_alert(Ontwikkelhulpmiddelen → Events) metactionok, timeout, replaced of remote,title,screenendevice_id. - Iconen (
doorbell,mdi:bell,F002A, onbekend) en kleuren; een lange titel krijgt puntjes, een lange subtitle wikkelt binnen de kaart;button_textop de knop. esphome.studio_1_dismiss_alerthaalt de kaart weg.- Guition: rotatie 90/180/270 met een alert op het scherm.