Let the screen own its settings, answer its pings, and show them as cards (0.2.57)
A code check found that a setting changed on a screen could jump back. ESP Screen Manager kept its own copy and sent it with every full update: after a restart of the app or Home Assistant, every hour and after every save. A change it missed while it or Home Assistant restarted came back to the old value, a reported setting was lost when save() refused a layout with a removed entity, and every step of a held - or + on the screen resent the whole screen. Firmware 0.2.49 offers every setting as an entity over the existing preference records (no migration): Night mode, Night starts/ends, 24-hour clock, Back to page 1 and after how long, Back to page 1 on standby, Swipe between pages and, on the Guition, Rotation, next to the four numbers and Auto standby. The settings page and every entity write through settings_screen::set(), which clamps like the page and stores, applies and reports only a real change. screen_message answers a caller that asks with its status and layout revision (api.respond). The settings tile opens without Home Assistant. The app reads and changes the settings of such a screen through its entities and leaves them out of the layout message. Older firmware keeps them with the layout; a setting it reports is stored without the tile check and not sent back. Pings to screens that can answer learn at once whether a tile is missing and resend after 30 s instead of 120 s. Layout sensors come back after a Home Assistant restart, and weather tiles only ask for the forecasts the entity supports. The editor's settings form is now three cards with the rows of the screen's own page; a change applies at once, and an offline screen shows its values as unknown. Checked with 245 Python and 14 C++ tests, generate_packages --check, ESP32 builds of both profiles, host-build API tests on both boards, and a live run against Home Assistant 2026.9.1 with a temporary host device. Firmware 0.2.49. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -92,8 +92,10 @@ The firmware and built-in CLI are tested with **ESPHome 2026.6.2**.
|
||||
changed ("5 min ago", "Yesterday"). See [Top bar](#top-bar).
|
||||
- **Screen settings:** standby time, normal and dimmed brightness,
|
||||
night hours, 24- or 12-hour clock, return to the home page, and optional swiping
|
||||
between pages. Home Assistant automations can turn **Auto standby** off and on per
|
||||
screen (firmware 0.2.41+), for example to keep a screen on while someone is home, and
|
||||
between pages. Change them in ESP Screens, where they apply at once, or on the screen
|
||||
itself. With firmware 0.2.49+ the screen keeps them, and every one of them is also an
|
||||
entity in Home Assistant, so an automation can switch **Night mode** or **Auto standby**
|
||||
(firmware 0.2.41+), for example to keep a screen on while someone is home, and
|
||||
wake a screen or put it to sleep with its **Wake** and **Sleep** buttons (firmware 0.2.45+).
|
||||
See [Wake and sleep](#wake-and-sleep-from-an-automation).
|
||||
- **Settings on the screen itself** (firmware 0.2.44+): hold the top bar for about a
|
||||
@@ -370,13 +372,21 @@ Home Assistant, `esphome.<screen>_open_settings` opens it too (`page` 0 menu, 1
|
||||
Tap a toggle to flip it, `-` and `+` to change a number or a time — hold them and a time walks
|
||||
whole hours — and tap a chip like the clock to cycle it. Every change is saved on the screen,
|
||||
takes effect at once, and appears in ESP Screens within a second, so both sides always show
|
||||
the same value.
|
||||
the same value. The **Screen settings** cards in ESP Screens have the same rows.
|
||||
|
||||
**In Home Assistant** (firmware 0.2.49+), every setting is an entity on the screen's device, under
|
||||
*Configuration*: `number.<screen>_normal_brightness`, `switch.<screen>_night_mode`,
|
||||
`time.<screen>_night_starts`, `switch.<screen>_24_hour_clock`, `select.<screen>_rotation` on a
|
||||
Guition, and the rest. An automation, the settings page and ESP Screens all change the same value,
|
||||
and setting a value the screen already has costs nothing. The full list is in
|
||||
[docs/SETTINGS.md](docs/SETTINGS.md#who-owns-a-setting).
|
||||
|
||||
## Updates and keeping your settings
|
||||
|
||||
| Change | Action |
|
||||
| --- | --- |
|
||||
| Tiles, names, colors, order, or screen settings | Save in ESP Screens; no firmware flash |
|
||||
| Tiles, names, colors, or order | Save in ESP Screens; no firmware flash |
|
||||
| Screen settings | Change them in ESP Screens (they apply at once), on the screen, or on their entities in Home Assistant |
|
||||
| New version of the management page | Update ESP Screen Manager in the HA App store |
|
||||
| New feature on the physical screen | The **Update** button on the screen (badge *Update x.y.z*), or **Update automatically every night** under Settings |
|
||||
|
||||
@@ -399,6 +409,8 @@ screen only the tile that changed, as a single action
|
||||
(`esphome.<device_name>_screen_message`) instead of chunks in a text field.
|
||||
Every two minutes, a small ping follows with the layout revision; if the
|
||||
screen reports that it doesn't match (after a restart, for example), everything is resent.
|
||||
Firmware 0.2.49+ answers that ping, and a new layout, directly, so a screen that still
|
||||
lacks a tile gets it again after 30 seconds instead of two minutes.
|
||||
Graphs on sensor tiles come from Home Assistant's statistics, in one
|
||||
query for all screens. Older firmware still works via the text field and the
|
||||
full resend every two minutes. The diagnostic sensor `Uptime` has been
|
||||
|
||||
Reference in New Issue
Block a user