Bring the big climate card to the Guition, with fan and swing on their own card (0.2.47)

App 0.2.47 / firmware 0.2.40:
- guition-4848s040.yaml gets the CYD's climate card: the setpoint between large -/+ keys
  (debounced, hold to repeat) and one row of mode keys in HA's order and colours; the arc,
  scrim, mode pill and climate_number font are gone.
- Fan and swing modes sit right on the card as segmented rows behind their icons, drawn by the
  new climate_card.h (async rebuild, taps through the touch guard and a profile hook). The card
  is laid out per case from one table: no, one or two settings rows, with or without mode keys.
- Both boards hide a mode key row that would hold a single mode and centre the setpoint instead.
- Glyph arrow-oscillating (Home Assistant's swing icon) joins the icon set.

Verified on the Guition over OTA with the owner's air conditioner and with host renders of both
boards; see docs/TEST_RESULTS_0247.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Max Gramser
2026-09-15 15:55:48 +02:00
parent aa2137f3f8
commit 57c82fdd12
15 changed files with 1214 additions and 592 deletions
+19
View File
@@ -176,6 +176,25 @@ icons sit off-center in the browser); run `generate_packages.py` afterward.
The `MDI_GLYPH_*` substitutions are retired: `TILEn_ICON` in manual
profiles must come from the set. No changed preferences or keys.
### Compatibility 0.2.47 / firmware 0.2.40
Firmware and board profiles; the app only raises `FIRMWARE_VERSION`. Storage, protocol, preferences and
keys are unchanged.
- guition-4848s040.yaml gets the CYD's climate card (0.2.46): the arc, `climate_detail_bg`/`_scrim`,
`climate_mode_pill` and the `climate_number` font are gone; `setpoint_digits` is Roboto 400 at 64 px.
The scripts `climate_adjust_target`, `climate_target_send` and `climate_card_refresh` match the CYD,
except that the Guition's refresh hides the ··· key and lays the card out per case (no, one or two
settings rows, with or without mode keys) from one table, applied only when that case changes.
- New `components/smart_display/climate_card.h`: `climate_card::show(rows, count)` draws the fan
('f') and swing ('s') rows into `climate_settings_card` through `lv_async_call`, so a row can redraw
itself from its own tap; taps go through `cyd::touch_guard` and the profile's `climate_card::choose`
hook, which runs `set_climate_fan_mode` / `set_climate_swing_mode` with the index in the entity's list
(`cyd::list_item`). At most six choices per row. Both scripts now refresh the card at once.
- Both profiles hide the mode key row when a device offers at most one mode besides off (and no ···),
and centre the setpoint card instead.
- Glyph `arrow-oscillating` (F1C91), Home Assistant's swing icon, joins `tile_icons.FIXED`.
### Compatibility 0.2.46 / firmware 0.2.39
Storage version, tile protocol (`v: 1`), preferences and keys are unchanged. Additive wire fields only.
+40
View File
@@ -0,0 +1,40 @@
# Test results app 0.2.47 / firmware 0.2.40 (2026-09-15)
The new climate card on the Guition with fan and swing on a card of their own, and no single mode
key on either board. See CHANGELOG 0.2.47 and RELEASING "Compatibility 0.2.47".
## Automated
- Python (`.venv-portal`): 170 tests OK (the icon tests cover the new `arrow-oscillating` glyph).
- C++ (`clang++ -std=c++17 -Wall -Wextra -Werror -I . -I components/smart_display`): 13/13 PASS.
`climate_card.h` draws LVGL objects and is covered by the host renders below, not by a unit test.
- `generate_packages.py --check` green, `generate_icons.py --check` verified (150 pickable icons,
180 glyphs).
- ESPHome 2026.6.2 compile SUCCESS, one after another: `easy-guition-device.yaml` (RAM 32.9%, flash
18.9%), `easy-cyd-device.yaml` (RAM 32.0%, flash 78.5%), `guition-device.yaml` (RAM 33.0%, flash 20.0%)
and `device.yaml` (RAM 32.0%, flash 83.3%). Packages carry `SCREEN_FIRMWARE_VERSION` 0.2.40.
## Bench boards (OTA)
- Both Easy Setup builds uploaded over the network; `device_info` reports project 0.2.40, compiled
2026-09-15 15:42:18 (Guition) and 15:44:03 (CYD), matching the build logs. ESP Screens reports both
screens Synced on 0.2.40.
- `preview_runtime_card` opened the climate card of the owner's `climate.airco_remeha_diva_ac` on
the Guition with live data from app 0.2.46. The capture (`capture_ui.py`) shows Off with a grey 19°,
the five mode keys (heat/cool, heat, cool, dry, fan only), Fan with Low chosen and Swing with Off
chosen. The vacuum card of 0.2.46 is unchanged.
## Renders (ESPHome host + SDL, both boards, this release's code)
- Guition climate card in four cases: heating with three modes and a fan row, an air conditioner with
five modes, fan and swing (the owner's attributes), the same with two swing modes, and a heat-only
thermostat without fan or swing (no mode keys, setpoint centred). Nothing runs off the screen; the
card with two rows ends 10 px above the bottom edge.
- CYD climate card: unchanged apart from the heat-only thermostat, which now shows the centred setpoint
without a mode key.
- `docs/images/guition-climate.png` comes from the air conditioner render.
## Not tested / for the owner
- The Guition climate card by hand: − / + taps and holding, mode keys, fan and swing choices with the
real air conditioner (tapping sends real commands).
Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 30 KiB