Het raster is nu vol: tien tegels op vijf rijen.
- Tegel 2 (rij 1, rechts) wordt Ambient — script.ambient_morning, met een
muzieknoot als icoon. Als script krijgt hij automatisch het paarse
actie-accent, dus hij is meteen te onderscheiden van de lampen eromheen.
- Woonkamer (light.woonkamer_2) verhuist van tegel 2 naar tegel 9, rij 5
links, en neemt zijn sofa-icoon mee. Verder ongewijzigd: helderheids-
slider op long-press, en omdat de lamp color_temp/rgb/xy meldt komt de
kleurknop in de overlay vanzelf mee.
- Tegel 10 (rij 5, rechts) wordt Alarm — input_boolean.alarm_engaged.
Een input_boolean reageert niet op switch.toggle, vandaar de expliciete
TAP_SERVICE input_boolean.toggle.
Tegels 9 en 10 abonneren alleen op wat ze echt lezen, zoals 7 en 8:
tegel 9 op state + brightness + supported_color_modes, tegel 10 alleen op
state. Waar een sensor ontbreekt gaat er NAN of "" naar de overlay.
Alle tien plekken per tegel zijn nagelopen met een audit over het hele
bestand: substituties, MDI-glyph, sensor, widget, ack-script, t*_on,
set_value_auto, apply_tile en de twee HA-events. Geen verwijzingen naar
sensors die niet bestaan.
Firmware: 1.329 MB flash, 72172 bytes statisch RAM. Na flashen 144 KB
vrije heap, grootste blok 90 KB.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
De config staat nu op twee plekken: deze repo en
/config/esphome/smartdisplay.yaml op Home Assistant. Die laatste las de
secrets van HA, deze repo zijn eigen set — met andere waarden voor de
api key en het OTA-wachtwoord. Wie het laatst flashte won, en de ander
kwam er daarna niet meer bij.
Beide configs lezen nu dezelfde namen als /config/esphome/secrets.yaml:
smartdisplay_api_key -> api_encryption_key
wifi_ap_password -> ap_password
ota_password -> ongewijzigd van naam, wel HA's waarde
De lokale secrets.yaml (niet in git) is een kopie van die op HA, dus
beide routes leveren exact dezelfde api key en hetzelfde OTA-wachtwoord
op. home-like.yaml en /config/esphome/smartdisplay.yaml zijn nu
byte-identiek.
buttons.yaml krijgt dezelfde omzetting. Die config valideert overigens
al niet meer sinds ESPHome 2026.6 ("Invalid offsets" op de display-
transform); dat stond los van deze wijziging en is hier niet aangeraakt.
Ook opgeruimd: de header verwees nog naar achtergrondplaatjes, die sinds
de gradient niet meer bestaan. Het MDI-font is de enige asset die de
config nog nodig heeft.
Geverifieerd na het gelijktrekken: OTA vanuit de repo werkt, OTA met
HA's credentials werkt, en de ESPHome-integratie in HA bleef verbonden.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Scripts en lights hadden allebei hetzelfde gele rondje, dus op het scherm
was script.goede_morgen niet te onderscheiden van light.woonkamer_2. Een
script vuur je af, een lamp zet je aan of uit; dat hoort niet hetzelfde
te zijn.
De kleur komt nu uit het domein van het entity_id — Home Assistant's
eigen indeling — in plaats van uit tien handmatige kleurvelden per tegel:
script / scene / button / input_button / automation -> ACCENT_ACTION (paars)
light -> ACCENT_LIGHT (amber)
al het overige -> ACCENT_DEVICE (cyaan)
TILE*_CIRCLE_ACTIVE_COLOR en TILE*_ICON_DISABLED_COLOR staan hiervoor op
de sentinel ${ACCENT_AUTO}, bewust buiten het 24-bits kleurbereik zodat
een echte hexwaarde altijd wint. Tegel 8 gebruikt dat nog steeds: de
brievenbus blijft rood zodra er post ligt.
Alleen de drie scripttegels (3, 4, 5) verschuiven van amber naar paars.
Light blijft amber en de overige apparaten blijven cyaan, dus verder
verandert er visueel niets.
De sliderkleur in de long-press-overlay lost dezelfde sentinel op, zodat
een tegel met slider ook automatisch de goede kleur krijgt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Eerste commit van het project. De config staat op het punt waar het
tegelraster scrollbaar is en er acht tegels in staan.
Wat er in deze ronde aan de bestaande config veranderd is:
- Home screen scrollt. Wallpaper, kamernaam en klok staan op de pagina
zelf en blijven staan; alle tegels zitten in een transparante
`tile_scroll` container die verticaal scrollt. Ruimte voor 2x5 = 10
tegels, waarvan rij 1-3 zichtbaar is in rust. GRID_ROW*_Y is nu
relatief aan die container; SCROLL_Y/SCROLL_H per orientatiepreset.
LVGL annuleert klik en long-press zodra een sleep de scroll-limiet
passeert, dus tikken en scrollen bijten elkaar niet.
- Achtergrond is een twee-stops gradient in plaats van een 320x240
RGB565-wallpaper. Scheelt ~150 KB flash en een image-blit per
hertekening, wat het scrollen bruikbaar maakt. Dezelfde gradient
wordt hergebruikt als achtergrond van de drie overlays.
- Tegel 7: Tafellamp (light.tafellamp_licht), tik = toggle,
long-press = helderheidsslider.
- Tegel 8: Brievenbus reset (input_select.brievenbus_status). Licht op
zodra de status "Vol" is, tik zet hem terug op "Leeg".
- TILE*_ACTIVE_STATE toegevoegd: een exacte HA-state die als "actief"
telt, voor entiteiten die geen on/off gebruiken. Leeg = oud gedrag.
- do_tile_action kent nu param_key "option", voor
input_select.select_option.
Tegels 7 en 8 abonneren alleen op de HA-entiteiten die ze echt lezen,
in plaats van op alle elf per tegel. Na flashen: 148 KB vrije heap,
grootste blok 94 KB.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>