Four Home Assistant events change a screen the way the app's own editor does:
esp_screens_add_tile (add or change), esp_screens_remove_tile,
esp_screens_move_tile and esp_screens_order_tiles. An event names the screen by
device name, shown name, area or title, and may set the size, the direct
control, the display, the icon, the colour and the spot; a tile with a control
or a forecast becomes double-width by itself. apply_tile_event returns the new
layout and Manager.save does the validating and the pushing, so nothing can get
past the twenty-tile limit, a duplicate entity or an occupied spot.
Every event is answered with esp_screens_tile_result, and every screen publishes
what it shows as sensor.esp_screens_<node>, with the page, row, column, width,
control and display per tile. So an assistant can read a screen before it moves
anything, and a refused event says why and changes nothing.
The Claude skill gains a Tiles section with the events, the fields, what each
kind of entity can do, how to read a screen first, and the rule to show the plan
and wait for a yes.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
App 0.2.48 / firmware 0.2.41:
- Both boards expose the switch "Auto standby", the same standby_enabled setting as the checkbox
in ESP Screens. Off wakes a dimmed screen and keeps it on; on counts the standby time from that
moment. The change is saved on the screen and reported through esphome.screen_setting, so ESP
Screens stores it too. No action runs at boot (restore_mode DISABLED).
- The Claude skill gains "Standby and brightness": the switch, Standby after and the three
brightness numbers, with an example automation that keeps screens awake while someone is home
and a light is on or a window is open.
- EASY_SETUP and the README describe the entities and the automation.
Tested through Home Assistant's API on both bench boards (CYD: dimmed -> off wakes in 1.1 s, stays
bright past the standby time, on dims again after 61 s); see docs/TEST_RESULTS_0248.md, which also
records a CYD rollback after the first OTA that points to memory headroom, not to this change.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- The app listens for the Home Assistant events esp_screens_show_alert and
esp_screens_dismiss_alert and calls each screen's show_alert/dismiss_alert action,
screens added later included. Fields are typed like Home Assistant's ESPHome action
schema; an unusable value is left empty instead of losing the alert.
- Settings → Claude installs an ESP Screens skill for Claude Code in Home Assistant
(/homeassistant/.claude/skills/esp-screens) or downloads it as a zip for claude.ai.
It is generated from the alert reference, so fields, colors and icons match the firmware.
- New screen, Firmware & USB, firmware updates, Alerts and Claude move to a Settings view;
the header keeps one button. Unselected screens in My screens get a light grey card.
App only; firmware stays 0.2.38.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>