Files
Max Gramser aa2137f3f8 Choose vacuum, vac & mop or mop on the vacuum card, and a climate card for the CYD (0.2.46)
App 0.2.46 / firmware 0.2.39:
- The vacuum's state message carries extras from its own device: the cleaning mode and water
  selects (found by translation key, then entity id ending, so localized ids work), the suction
  speeds to offer, the battery sensor (HA 2026.8 dropped battery_level), charging and the current
  room. Speeds and water levels a mode covers move into the mode row; Custom only while in use.
  The manager watches these entities and resends only the vacuum's message when one changes.
- Vacuum card redesign on both boards: robot with state, battery, charging bolt and room; Start
  (Pause, Resume) and Dock; then segmented rows for mode, suction and water, showing only the rows
  the chosen mode uses. Taps show at once and wait for Home Assistant; Locate is a round button in
  the Guition hero.
- CYD climate card without the arc: big setpoint between large -/+ keys (debounced, hold to
  repeat) and one row of mode keys in HA's order and colours, with a more key for fan and swing.
- Both profiles clear climate_edit_pending when the climate card is closed, instead of running
  ui_refresh every second while the flag stayed set.

Tested with the owner's Roborock S8 on HA 2026.9.1 (live data, OTA-flashed bench boards) and with
host renders of both boards; see docs/TEST_RESULTS_0246.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-15 15:22:28 +02:00

4.1 KiB
Raw Permalink Blame History

Test results app 0.2.46 / firmware 0.2.39 (2026-09-15)

Cleaning mode, suction and water on the vacuum card, the vacuum card redesign on both boards, the new CYD climate card and the cleared climate edit flag. See CHANGELOG 0.2.46 and RELEASING "Compatibility 0.2.46".

Automated

  • Python (.venv-portal): 170 tests OK.
    • New: tests/test_vacuum_card.py covers the extras on the owner's Roborock data (Dutch entity ids), a robot without a mode select, a plain vacuum, entity id endings, disabled entities and unknown modes (an Ecovacs-style work_mode), bounded options, and that a select change marks the vacuum dirty and resends only its message.
  • C++ (clang++ -std=c++17 -Wall -Wextra -Werror -I . -I components/smart_display): 13/13 PASS; test_tile_controls.cpp adds mode_color, vacuum_rows, vacuum_role, shown_value, settle_suction and choice_action.
  • generate_packages.py --check green, generate_icons.py --check verified (150 pickable icons, 179 glyphs).
  • ESPHome 2026.6.2 compile SUCCESS, one after another: easy-cyd-device.yaml (RAM 31.9%, flash 78.5%), easy-guition-device.yaml (RAM 32.8%, flash 18.8%), guition-device.yaml (RAM 32.9%, flash 19.8%), device.yaml (RAM 32.0%, flash 83.2%). Packages carry SCREEN_FIRMWARE_VERSION 0.2.39.

Home Assistant facts (owner's HA 2026.9.1, read only)

  • Roborock S8 (roborock.vacuum.a51): vacuum.s8 has no battery_level; its device holds select.woonkamer_s8_schoonmaakmodus (translation key cleaning_mode: vacuum, vac_and_mop, mop, custom), select.s8_intensiteit_van_dweilen (mop_intensity: off, mild, standard, intense, custom), sensor.s8_batterij (battery), binary_sensor.s8_opladen (battery_charging) and sensor.s8_huidige_kamer (current_room). Entity ids follow the UI language, so matching goes by translation key.
  • The Roborock cleaning mode select exists in HA 2026.8.0 and 2026.9.1 (RoborockCleaningModeSelectEntity).
  • core.extras on this data: mode vacuum / vac_and_mop / mop (roles vbm), water mild / standard / intense, suction quiet … max_plus, battery, charging and room; the message is 612 bytes.

Bench boards (OTA)

  • Both Easy Setup builds uploaded over the network; device_info reports project 0.2.39, compiled 2026-09-15 15:11:48 (CYD) and 15:12:20 (Guition), matching the build logs.
  • The real vacuum.s8 state with the new extras, built by the app code from live HA data, was sent through screen_message and the card opened with preview_runtime_card on both boards. The Guition capture (capture_ui.py) shows Docked, 83 % with the charging bolt, Start cleaning and Dock, Vac & mop, Max and Intense. The owner looked at both screens.
  • The owner tapped Vacuum on the CYD: Home Assistant switched select.woonkamer_s8_schoonmaakmodus to vacuum (15:16:12) and the robot set its water to off and suction to balanced. The production app was still 0.2.45 and resent the vacuum without the new extras, so the card fell back to suction only, as described for mixed versions in the CHANGELOG.

Renders (ESPHome host + SDL, both boards, this release's code)

  • Vacuum card with the owner's data in ten states: docked and charging, cleaning with the room, mop only, vacuum only, Custom (note instead of rows), returning, error, paused at 12 % (red battery), a vacuum without selects (small hero on the CYD) and an Ecovacs-style robot with long labels (Vac, then mop; Ultra high). No label is cut off; the mode row keeps its place.
  • CYD climate card: heating with humidity, an air conditioner with five modes plus ···, and off (grey setpoint). The README images guition-vacuum.png, cyd-vacuum.png and cyd-climate.png come from these renders.

Not tested / for the owner

  • The vacuum rows with app 0.2.46 on the Yellow after the store update (live updates of mode, water, battery and room while the robot cleans).
  • The CYD climate card by hand with the real air conditioner (− / + taps, holding, mode keys, ···).
  • Other brands only through the tests with their documented entity names; no Dreame or Ecovacs robot was available.