Files
Max Gramser da20782d3d Wake a screen or put it to sleep from Home Assistant (0.2.53)
Every screen gets two template buttons, Wake and Sleep, for automations
(button.press on button.<screen>_wake / _sleep). Wake does what a tap does:
a dimmed screen runs wake_display, a screen that is on only restarts the
standby count. Sleep dims right away through dim_display, also with Auto
standby off, and closes an alert that is up (reported as remote); it is
ignored during a touch calibration.

A new non-restored flag, sleep_requested, keeps that standby in place:
dim_display dims with standby off, and apply_screen_settings, which runs
every minute, no longer wakes such a screen. wake_display clears it (a tap,
Wake, an alert), and so does the Auto standby switch when it really turns
standby off. Nothing is saved, so the buttons cost no flash writes and may
run on every motion.

The Claude skill, README, add-on docs and RELEASING describe both buttons.
Checked on host builds of both boards over the native API, 24 checks each
(timer, Sleep with Auto standby off across a minute tick, alert,
calibration), and with ESP32 builds of both Easy profiles (+336 B RAM).
Firmware 0.2.45.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 10:35:06 +02:00

4.2 KiB

Test results app 0.2.53 / firmware 0.2.45 (2026-09-16)

Wake and Sleep buttons for Home Assistant automations. Firmware and board profiles change; the app only raises FIRMWARE_VERSION and extends the Claude skill. Storage, tile protocol, preferences and keys are unchanged. See CHANGELOG 0.2.53 and the compatibility note in docs/RELEASING.md.

Automated

  • Python (.venv-portal): 206 tests OK. New tests/test_wake_sleep.py (6 tests, run against both board profiles and both generated packages): the Wake and Sleep buttons exist as template buttons without an entity category and not internal; Wake runs wake_display on a dimmed screen (the same script the tap on dim_wake_overlay runs) and only restarts last_touch_ms otherwise; Sleep is ignored during a touch calibration and otherwise sets sleep_requested, closes an alert (remote) and runs dim_display; dim_display and apply_screen_settings honour the flag; wake_display clears it; the flag is a non-restored bool; the Auto standby switch clears it only when it really turns standby off. tests/test_claude_skill.py checks both buttons, the minimum firmware and the new YAML example (nine blocks). tests/test_settings_page.py now asks for firmware 0.2.44 or newer instead of exactly 0.2.44.
  • C++ (clang++ -std=c++17 -Wall -Wextra -Werror -I.): 14/14 PASS (no C++ changed).
  • generate_packages.py --check green. generate_icons.py --check not run: no glyphs changed, and fontTools is not installed in this environment.

Builds (ESPHome 2026.6.2)

Both Easy Setup profiles, compiled one after the other from packages generated out of the board profiles:

Profile RAM Flash vs 0.2.52
easy-cyd-device.yaml (package, local components) 23.1% (75,612 B) 76.1% (1,396,427 B) +336 B RAM, +1,284 B flash
easy-guition-device.yaml (package, local components) 24.1% (78,844 B) 18.4% (1,496,071 B) +336 B RAM, +1,996 B flash

Behaviour on the real profile logic (host build)

The generated packages were built for the Mac with ESPHome's host platform (SDL display, template backlight output, host time; the readme-render tooling) under their own device names, and driven over the native API: button presses, the Auto standby switch, the profile's own actions (show_alert, dismiss_alert, touch_diagnostics), plus three test-only actions that log display_dimmed, sleep_requested, the wake overlay, the backlight target and the idle time, click the wake overlay, and run apply_screen_settings. Result: 24/24 checks passed on the Guition package and 24/24 on the CYD package.

Checked on both boards:

  1. Boot: awake, Auto standby on, full brightness. Buttons listed as wake / sleep with mdi:gesture-tap / mdi:power-sleep, entity category none.
  2. The standby timer still dims after the standby time, and a tap on the overlay wakes.
  3. Sleep with Auto standby on dims at once to the standby level, overlay up, Sleep from Home Assistant in the log; Wake brings full brightness back and clears the flag.
  4. Wake on a screen that is on restarts the idle count (300 s -> under 3 s) and changes nothing else.
  5. With Auto standby off, Sleep dims; an explicit apply_screen_settings and a real minute tick (on_time) both keep it dimmed. Turning the already-off switch off again keeps it dimmed; a tap on the overlay wakes.
  6. Sleep with Auto standby on, then switching Auto standby off: the screen wakes.
  7. Sleep during an alert closes the alert (alert dismissed: remote in the log) and dims; a new alert wakes the screen out of Sleep.
  8. During touch_diagnostics (calibration active) Sleep is ignored with a log line.

Not tested / for the owner

  • Hardware. The bench boards (192.168.146.134 / .136) were not reachable, and the only screen online in Home Assistant, Studio 1 (Guition, firmware 0.2.43), is in daily use and gets its firmware through ESP Screens; nothing was flashed. Still to see on real glass: the backlight fade into Sleep (1.5 s on the Guition's LEDC fader), and pressing button.<screen>_wake / _sleep from Home Assistant after the update.
  • The esphome.screen_alert event with remote after Sleep closes an alert, as Home Assistant receives it (the host run shows the dismiss path and its log line only).