ef0ca8b350
- 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>
184 lines
7.7 KiB
Markdown
184 lines
7.7 KiB
Markdown
# Tegels instellen voor jouw Home Assistant
|
||
|
||
Bewerk `device.yaml`, binnen de bestaande `substitutions:`. De basiscode hoef
|
||
je voor de onderstaande voorbeelden niet aan te passen. Elke wijziging vraagt
|
||
opnieuw bouwen en flashen. Doorloop eerst de [installatie](../README.md).
|
||
|
||
## Entity-ID's verzamelen
|
||
|
||
Open in HA **Ontwikkelaarstools → Statussen**. Zoek de gewenste entiteit en
|
||
kopieer de volledige ID, bijvoorbeeld `light.keuken`. Controleer status en
|
||
attributen. De schermtitel is vrij te kiezen; de entity-ID moet exact kloppen.
|
||
Test onder **Ontwikkelaarstools → Acties** de gewenste actie met die entiteit.
|
||
Een actie kan het echte apparaat bedienen: kies een geschikte test.
|
||
Zie [HA-acties](https://www.home-assistant.io/docs/scripts/perform-actions/).
|
||
|
||
Maak eerst een lijst met positie, titel, entity-ID, tikactie en lange-drukactie.
|
||
Gebruik bestaande HA-scripts/scènes voor meerdere apparaten of complexe logica.
|
||
|
||
## Posities en grenzen
|
||
|
||
| Posities | Bedoeld gebruik in deze firmware |
|
||
|---|---|
|
||
| 1–6 | Hoofdtegels; light, switch, scene, script, fan, cover en climate |
|
||
| 6 | Ook de vacuumkaart; de kaart is specifiek met tegel 6 verbonden |
|
||
| 7 en 9 | Extra lichttegels met helderheid/kleurbediening |
|
||
| 8 en 10 | Extra status-/actietegels; geen volledige numerieke/climatekaart |
|
||
|
||
`TILE_COUNT: "1"` tot `"10"` bepaalt hoeveel **opeenvolgende** posities zichtbaar
|
||
zijn. Tot en met zes zijn Vorige/Volgende verborgen; vanaf zeven staat 1–6 op
|
||
pagina één en de rest op pagina twee. Vrij scrollen is vervangen door vaste
|
||
pagina's. Laat ongebruikte posities op de neutrale voorbeeldentiteiten staan.
|
||
Verander geen rastermaten om tegels toe te voegen.
|
||
|
||
## Belangrijkste instellingen
|
||
|
||
| Instelling (`N` = tegelnummer) | Betekenis |
|
||
|---|---|
|
||
| `TILEN_ENTITY` | Entiteit waarop de actie wordt uitgevoerd |
|
||
| `TILEN_STATE_ENTITY` | Entiteit voor status/attributen; meestal dezelfde |
|
||
| `TILEN_TITLE` | Korte titel, liefst maximaal circa 12 tekens |
|
||
| `TILEN_TYPE` | Domein, bijvoorbeeld `light`, `scene`, `climate` |
|
||
| `TILEN_TAP_ACTION` | `auto`, `toggle` of `custom` voor onderstaande voorbeelden |
|
||
| `TILEN_TAP_SERVICE` | Expliciete HA-actie bij custom, bijvoorbeeld `script.turn_on` |
|
||
| `TILEN_LONGPRESS` | `none`, `slider` of (alleen tegel 6) `vacuum` |
|
||
| `TILEN_LONGPRESS_SLIDER` | `auto`; kiest passende regeling op basis van type |
|
||
| `TILEN_LABEL_ON/OFF` | Tekst voor eenvoudige aan/uitstatus |
|
||
|
||
De voorbeeldconfig vult ook de overige velden in. Laat die staan tenzij je
|
||
ze bewust gebruikt. `STATE_ENTITY` kan bij een scène/script een echte lamp of
|
||
schakelaar volgen; een scène heeft zelf geen betrouwbare aan/uitstatus.
|
||
|
||
## Kleur, wittemperatuur en helderheid
|
||
|
||
Een RGB-/kleurenlamp met `LONGPRESS: "slider"` opent direct de lampkaart.
|
||
Deze bevat maximaal drie horizontale schuiven:
|
||
|
||
- **Kleur:** een doorlopende regenboog (0–360° hue, 100% verzadiging).
|
||
- **Wittemperatuur:** warm naar koel, binnen de minimum-/maximum-Kelvinwaarden
|
||
die de lamp in Home Assistant meldt.
|
||
- **Helderheid:** 1–100%; aan/uit blijft via de tegel beschikbaar.
|
||
|
||
De kleur- en witschuif verschijnen alleen als `supported_color_modes` deze
|
||
ondersteunt. Een uitsluitend dimbare lamp houdt de gewone helderheidskaart.
|
||
Er zijn geen extra tegelinstellingen nodig. Gebruik voor een lamp dezelfde
|
||
`ENTITY` en `STATE_ENTITY`. De kleurkaart volgt `hs_color`, `color_temp_kelvin`,
|
||
`min_color_temp_kelvin` en `max_color_temp_kelvin` van de bediende entiteit.
|
||
Ontbreekt het temperatuurbereik, dan wacht de witschuif op HA-gegevens.
|
||
|
||
De kaart neemt bij openen de laatst ontvangen lampwaarden over. Slepen toont
|
||
lokaal de gekozen waarde; pas loslaten verstuurt één opdracht. Kleur kiest de
|
||
kleurmodus, wittemperatuur kiest de witmodus. Helderheid verandert de kleurmodus
|
||
niet. De regenboog regelt hue; pastel/verzadiging is geen aparte regelaar.
|
||
De hue-lijst wordt via ESPHome `data_template` naar HA gestuurd; zie de
|
||
[officiële API-documentatie](https://esphome.io/components/api/#homeassistantaction-action).
|
||
|
||
De gedeelde implementatie staat in `light_controls.h`. Beide schermprofielen
|
||
gebruiken deze; de Guition heeft grotere regelaars, de CYD een compacte kaart.
|
||
`diagnostics/run_ui_test.py` controleert ook de schuifevents met vervangen
|
||
callbacks: geen echte HA-acties. Voor een veilige 40-secondenvoorbeeldkaart:
|
||
|
||
```sh
|
||
python diagnostics/control_ui.py light_controls_preview --host guition-wallbox.local --name guition-wallbox
|
||
```
|
||
|
||
Gebruik voor CYD de eigen host en naam. Tijdens deze voorbeeldkaart worden
|
||
lichtopdrachten onderdrukt en verdwijnt de kaart vanzelf. Test vervolgens de
|
||
werkelijke lamp: lang indrukken, kleur kiezen, wit kiezen, helderheid aanpassen,
|
||
sluiten en heropenen. Controleer de fysieke lamp en de waarden in HA.
|
||
|
||
## Voorbeelden
|
||
|
||
Wijzig deze sleutels in de bestaande map; plak niet nogmaals `substitutions:`.
|
||
|
||
Dimbare lamp op positie 1 (tik schakelt, lang indrukken opent de regeling):
|
||
|
||
```yaml
|
||
TILE1_ENTITY: "light.keuken"
|
||
TILE1_STATE_ENTITY: "light.keuken"
|
||
TILE1_TITLE: "Keuken"
|
||
TILE1_TYPE: "light"
|
||
TILE1_TAP_ACTION: "auto"
|
||
TILE1_LONGPRESS: "slider"
|
||
```
|
||
|
||
Een niet-dimbare lamp/schakelaar krijgt `LONGPRESS: "none"`. Kleurbediening
|
||
vereist dat de lamp de betreffende kleurmodus ondersteunt.
|
||
|
||
Scène op positie 3:
|
||
|
||
```yaml
|
||
TILE3_ENTITY: "scene.avond"
|
||
TILE3_STATE_ENTITY: "light.keuken"
|
||
TILE3_TITLE: "Avond"
|
||
TILE3_TYPE: "scene"
|
||
TILE3_TAP_ACTION: "auto"
|
||
TILE3_LONGPRESS: "none"
|
||
```
|
||
|
||
Script op positie 4:
|
||
|
||
```yaml
|
||
TILE4_ENTITY: "script.alles_uit"
|
||
TILE4_STATE_ENTITY: "script.alles_uit"
|
||
TILE4_TITLE: "Alles uit"
|
||
TILE4_TYPE: "script"
|
||
TILE4_TAP_ACTION: "auto"
|
||
TILE4_LONGPRESS: "none"
|
||
```
|
||
|
||
Airco op positie 5 (lang indrukken opent climate):
|
||
|
||
```yaml
|
||
TILE5_ENTITY: "climate.woonkamer"
|
||
TILE5_STATE_ENTITY: "climate.woonkamer"
|
||
TILE5_TITLE: "Airco"
|
||
TILE5_TYPE: "climate"
|
||
TILE5_TAP_ACTION: "toggle"
|
||
TILE5_TAP_SERVICE: "climate.toggle"
|
||
TILE5_LONGPRESS: "slider"
|
||
```
|
||
|
||
Controleer `min_temp`, `max_temp`, `target_temp_step`, `hvac_modes` en de
|
||
ondersteunde fan-/swingmodes in HA. Deze kaart is primair voor een **enkel
|
||
setpoint**, niet een thermostaat die uitsluitend een temperatuurinterval
|
||
gebruikt. Test de modi van jouw integratie afzonderlijk; een andere airco
|
||
kan andere mogelijkheden hebben.
|
||
|
||
Robotstofzuiger op positie 6 (tik start; lang indrukken opent de kaart):
|
||
|
||
```yaml
|
||
TILE6_ENTITY: "vacuum.robot"
|
||
TILE6_STATE_ENTITY: "vacuum.robot"
|
||
TILE6_TITLE: "Stofzuiger"
|
||
TILE6_TYPE: "vacuum"
|
||
TILE6_TAP_ACTION: "custom"
|
||
TILE6_TAP_SERVICE: "vacuum.start"
|
||
TILE6_LONGPRESS: "vacuum"
|
||
```
|
||
|
||
De vacuumkaart gebruikt start/pauze/stop/terugkeren/lokaliseren en de
|
||
snelheidsnamen `quiet`, `balanced`, `turbo`, `max`. Vergelijk deze met de
|
||
ondersteunde acties en `fan_speed_list` in HA. De snelheidsknoppen moeten in
|
||
de basiscode aangepast worden als jouw integratie andere namen verwacht.
|
||
Dit is geen universele kaart voor ieder robotmodel.
|
||
|
||
## Acties inschakelen en controleren
|
||
|
||
Zet na kalibratie en HA-koppeling `DIRECT_ACTIONS: "true"`. Geef in de
|
||
ESPHome-integratie toestemming voor Home Assistant-acties. Gebruik geen
|
||
HA-automation die dezelfde schermactie daarnaast nogmaals uitvoert; dat kan
|
||
een dubbele toggle veroorzaken. Bij `DIRECT_ACTIONS: "false"` kan de
|
||
actie-sensor nog gebeurtenissen publiceren voor eigen automations.
|
||
|
||
Flash `device.yaml` en test één tegel tegelijk: juiste status, juiste fysieke
|
||
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.
|
||
|
||
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.
|