Add rich runtime tiles and integrated ESPHome firmware management

This commit is contained in:
Max Gramser
2026-09-12 15:41:54 +02:00
parent 535838989c
commit f898863b1f
23 changed files with 1346 additions and 89 deletions
+8
View File
@@ -1,3 +1,11 @@
# Installeren vanuit ESP Screens (vanaf 0.2.0)
De makkelijkste route is nu één app: **ESP Screen Manager**. Deze kan zelf
ESPHome-profielen bewaren, bouwen en via USB of OTA installeren. Zie de
[complete stappen voor deze route](WHATS_NEW_020.md#firmware-zonder-een-tweede-beheerpagina).
De instructies hieronder blijven bruikbaar als je ESPHome Device Builder wilt
blijven gebruiken. Beide routes behouden dezelfde eigen YAML en secrets.
# Een nieuw scherm, van USB naar dagelijks gebruik
Met **ESP Screen Manager** kies je je tegels in Home Assistant. Je zoekt op
+16
View File
@@ -70,3 +70,19 @@ Firmware gebruikt een afzonderlijke preferences-key `0x53435231` met een vaste
versie-1 structuur (elf int32-velden en een uint32-versie). Wijzig key, structuur
of versie niet zonder migratie. Alleen gewijzigde instellingen worden opgeslagen;
periodieke herhaling veroorzaakt geen flashwrites en geen nieuwe idle-timer.
### Compatibiliteit 0.2.0
Opslagversie en tegelprotocol blijven 1. Optionele `tiles[].options`, `o` in
statusberichten, `history` en `inbox` in het layoutbericht zijn additief. Een
oudere browser die opties niet meestuurt behoudt de bestaande opties voor dezelfde
entiteit. Oudere firmware negeert extra velden. Nieuwe entiteitsdomeinen vereisen
wel firmware 0.2.0; bij terugrollen naar een oudere app eerst de gegevensback-up
herstellen, omdat die app nieuwe domeinen nog niet kan laden. Geen oude opslag
stilzwijgend overschrijven. Bestaande preference-keys blijven ongewijzigd.
De app gebruikt nu de officiële ESPHome-container, mapped `homeassistant_config`
naar `/homeassistant` en vraagt UART/USB voor de door de gebruiker gekozen poort.
Config/secrets blijven in de eigen HA-configmap; builds in `/data`. App-updates
vervangen deze mappen niet. Native getalinstellingen melden wijzigingen via
`esphome.screen_setting`; de manager valideert inbox, sleutel en waarde.
+71
View File
@@ -0,0 +1,71 @@
# ESP Screens 0.2.0
## Dagelijks bedienen
- Guition: iets donkerder lichtgrijze achtergrond, gekleurde accenten en zwarte
sliderknoppen. Namen en status hebben elk één eigen regel met afkapping.
- Actietegels tonen minimaal één seconde `Bezig...` en een voortgangsbalk.
Een ontvangen HA-statuswijziging beëindigt het wachten na die minimumtijd.
Zonder nieuwe status stopt de indicatie na zes seconden. Dit is feedback op
een statuswijziging, geen bewijs dat een fysieke actie geslaagd is.
- Tik op een sensor voor numerieke HA-geschiedenis. De app haalt 1, 6 of 24 uur
op en stuurt 24 tijdvakken; verversing maximaal eenmaal per vijf minuten.
Ontbrekende/niet-numerieke historie wordt aangegeven. Recorder moet de sensor
bewaren. Dit is een compacte grafiek, geen energieboekhouding.
- Vacuum: status, accu wanneer als attribuut beschikbaar, start/pauze/dock/zoeken
en maximaal vier zuigstanden. Media: vorige/play-pauze/volgende en volume.
- Getal-helpers en number-entiteiten krijgen een schuif binnen hun min/max/step;
select/input_select toont maximaal acht opties. Weather toont conditie en
temperatuur. Bestaande lamp-, RGB-, climate-, fan- en coverkaarten blijven.
Deze kaarten en tegelopties zijn beschikbaar voor Guition én CYD. De lichte
Guition-stijl is bordgebonden; de CYD behoudt zijn eigen compacte vormgeving.
## Instellingen per tegel
Open in ESP Screens **Tegelinstellingen** onder een gekozen entiteit:
- Bij aantikken: automatisch, bediening openen, alleen bekijken; aan/uit bij
daarvoor geschikte entiteiten.
- Weergave: normale kaart of **Grote waarde**, bijvoorbeeld temperatuur of kWh.
De kaart behoudt zijn plek in het raster; er komen geen kleinere aanraakvlakken.
- Mini-schuif: voor lampen, fans, covers, media en getalinstellingen. Een grotere
waarde en mini-schuif zijn alternatieven, zodat teksten niet overlappen.
- Sensor: geschiedenisperiode 1, 6 of 24 uur.
**Inspector** toont schermverbinding, firmware, laatste afleverstatus, entiteiten,
attributen die het scherm ontvangt en tegelopties. Geen wifi/API/OTA-sleutels.
## Instellingen bij het HA-apparaat
Bij **Instellingen → Apparaten & diensten → ESPHome → jouw scherm** staan onder
Configuratie de getalinstellingen **Helderheid normaal**, **Helderheid standby**,
**Helderheid nacht** en **Standby na** (seconden). Installeer firmware 0.2.0 en laat
HA opnieuw verbinden als ze ontbreken. De overige instellingen staan in ESP
Screens → Scherminstellingen. Wijzigingen via HA worden ook in ESP Screens
opgeslagen; sta HA-acties toe bij de ESPHome-integratie.
## Firmware zonder een tweede beheerpagina
Werk de app bij naar 0.2.0. Deze bevat de officiële ESPHome CLI 2026.6.2.
1. **Nieuw scherm** → bord/naam → **Bewaar profiel in ESP Screens**. Bij een
eerste installatie vul je wifi in. Bestaande secrets worden nooit vervangen.
Bewaar de getoonde YAML met de unieke sleutels als eigen back-up.
2. **Firmware & USB** → kies het profiel. De app leest dezelfde map
`/homeassistant/esphome` die in de HA-configschijf `esphome` heet.
3. Voor een eerste flash: scherm via USB aan de HA-Raspberry, kies expliciet de
USB-poort en **Bouwen & installeren**. Gebruik één bedoeld bord tegelijk.
4. Koppel het scherm via de gewone HA ESPHome-integratie. Gebruik de API-sleutel
uit je profiel en sta HA-acties toe. CYD kalibreert bij de eerste start.
5. Voor updates: hetzelfde profiel, **Wifi / OTA**, het IP-adres of de hostnaam
van dat scherm, **Bouwen & installeren**. Tegels en secrets blijven behouden.
De app voert één CLI-taak tegelijk uit. Validatie en bouwen uploaden niets.
Alleen installeren bouwt én uploadt naar het gekozen doel. Het log maskeert
secrets. De eerste download/build vraagt internet, schijfruimte en tijd. Bouwcache
staat in permanente appdata. Een browser sluiten stopt de build niet.
De bestaande ESPHome Device Builder mag blijven staan, maar is voor deze route
niet nodig. Werk niet gelijktijdig vanuit twee builders aan hetzelfde profiel.
Bestaande eigen YAML blijft leidend; een nieuwe YAML aanmaken is geen updateroute.