Custom icon per tile: 150 MDI icons in firmware and editor
- screen_manager/app/tile_icons.py is the single icon list (12 groups, 20 media and music icons); tools/generate_icons.py writes it into the three icon fonts of both boards and builds the editor's subset font. - Firmware 0.2.18 shows o.icon when its fonts carry the glyph, else the domain icon. The app sends the chosen icon, or Home Assistant's own mdi icon on auto. - Tile sheet gets an icon picker with search; the mockup shows the icon the screen actually draws. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -160,6 +160,23 @@ geweigerd. De ronde draait één scherm tegelijk, wacht op `Schermfirmware >=`
|
||||
doelversie en één minuut stabiliteit, en stopt bij de eerste fout. Alleen de
|
||||
nachtelijke ronde schrijft een `persistent_notification` in HA.
|
||||
|
||||
### Compatibiliteit 0.2.18 / firmware 0.2.18
|
||||
|
||||
Opslagversie en tegelprotocol blijven 1. `tiles[].options.icon` is additief:
|
||||
`auto` of een naam uit `screen_manager/app/tile_icons.py`. Op de draad stuurt de
|
||||
manager in `o.icon` alleen de opgeloste codepoint in hex (`F06B5`): de gekozen
|
||||
naam, of bij `auto` het `mdi:`-icoon uit de HA-attributen als dat in de set zit.
|
||||
Oudere firmware negeert het veld; nieuwe firmware controleert of de glyph in de
|
||||
font zit en valt anders terug op het domeinicoon. Daarom geen `min_firmware`.
|
||||
Een oude editor die `icon` weglaat behoudt de opgeslagen keuze.
|
||||
|
||||
`tile_icons.py` is de enige lijst. `tools/generate_icons.py` schrijft de glyphs
|
||||
als YAML-anker in de drie MDI-fonts van beide bordprofielen en bouwt
|
||||
`static/tile-icons.woff` voor de editor (met left bearing gelijk aan xMin, anders
|
||||
staan iconen in de browser uit het midden); draai daarna `generate_packages.py`.
|
||||
De substituties `MDI_GLYPH_*` zijn vervallen: `TILEn_ICON` in handmatige
|
||||
profielen moet uit de set komen. Geen gewijzigde preferences of sleutels.
|
||||
|
||||
### Compatibiliteit 0.2.12 / firmware 0.2.14
|
||||
|
||||
Opslagversie en tegelprotocol blijven 1. Additief: `tiles[].options.size`
|
||||
|
||||
+3
-2
@@ -176,7 +176,8 @@ actie, terugmelding vanuit HA en lange druk. Controleer ook dat externe
|
||||
wijzigingen in HA op het scherm verschijnen. Voer daarna de
|
||||
[acceptatietest](ACCEPTATIE.md) uit.
|
||||
|
||||
Extra iconen vereisen een glyph in de `materialdesign_icons`-fontlijst. De
|
||||
bundel bevat de fonts lokaal. De oudere uitgebreide
|
||||
De iconfonts bevatten de tegeliconenset uit `screen_manager/app/tile_icons.py`;
|
||||
kies `TILEn_ICON` daaruit. Een ander icoon voeg je daar toe en draai je
|
||||
`tools/generate_icons.py`. De bundel bevat de fonts lokaal. De oudere uitgebreide
|
||||
[TILE_CONFIGURATION.md](../TILE_CONFIGURATION.md) beschrijft ook het oude
|
||||
scrollprofiel; gebruik die niet als hardware-/layoutinstructie voor dit bord.
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# App 0.2.18 / firmware 0.2.18 — eigen icoon per tegel
|
||||
|
||||
## Wijzigingen
|
||||
|
||||
- `screen_manager/app/tile_icons.py`: 150 kiesbare MDI-iconen in twaalf groepen
|
||||
(20 voor media en muziek) plus 9 vaste firmwareglyphs; codepoints gecontroleerd
|
||||
tegen `fonts/materialdesignicons-webfont.ttf`.
|
||||
- Firmware: `tile_icon.h` (hex → codepoint → UTF-8), `Tile::icon`, `icon_for()`
|
||||
gebruikt een gekozen icoon als de font de glyph bevat.
|
||||
- App: validatie van `options.icon`, `o.icon` met codepoint (gekozen of uit HA),
|
||||
entiteiticonen in de inventaris, icoonkiezer met zoeken in het tegelpaneel.
|
||||
|
||||
## Tests
|
||||
|
||||
- `.venv-portal/bin/python -m unittest discover -s tests`: 69 tests OK, waaronder
|
||||
`tests/test_tile_icons.py` (set in alle zes fonts en beide pakketten, elke
|
||||
firmwareglyph in de set, editorvoorspelling gelijk aan `icon_for`/`weather_icon`,
|
||||
validatie, draadformaat, discovery, oude editor behoudt icoon).
|
||||
- Alle `tests/*.cpp` OK, waaronder `test_tile_icon.cpp`.
|
||||
- `tools/generate_packages.py --check` en `tools/generate_icons.py --check`: actueel.
|
||||
- `esphome compile`: CYD 1.361.735 bytes flash (74,2%, was 1.339.824), RAM 30,2%;
|
||||
Guition 1.454.503 bytes (17,9%).
|
||||
- USB-flash na `esptool chip_id` (`usbserial-130` = ESP32/CYD, `usbserial-210` =
|
||||
ESP32-S3/Guition); uploadlog toont de juiste `firmware.bin`. `device_info`:
|
||||
beide 0.2.18, gecompileerd 11:10:02 (CYD) en 11:10:52 (Guition).
|
||||
- Guition-render via `send_layout.py` + `capture_ui.py`: thermometer in de
|
||||
grafiekstrook (mini-font), `account-child` automatisch uit HA, koksmuts op de
|
||||
timer, lamp op de dubbelbrede grote waarde (watch-font). Max bevestigde dat
|
||||
het op de schermen goed werkt.
|
||||
- Lokale editor met nep-HA: kiezer, zoeken op "muziek", live mockup en kop,
|
||||
opslaan stuurt `F04C3`/`F0769`/`F0FCE`; hint bij firmware 0.2.17. Iconen in de
|
||||
browser gemeten gecentreerd na de bearing-fix (gemiddeld 0,3 px op 100 px).
|
||||
Reference in New Issue
Block a user