Icons: small images of their own size for pages

Bitmaps that only pages use (backgrounds, images by state) are now icons:
own width and height, stored in /icons, not in the page lists or the Home
Assistant dropdowns. Page backgrounds and image elements use icons or
bitmaps; the renderer gets icons expanded at the top left, so pages look
the same. Web UI: Icons tab with an editor, Make icon / Make bitmap, Save
as icon on the Draw tab, icons in the backup.

A one-time migration in time-boxed steps moves the uploaded bitmaps that
only pages use, after the new firmware is marked good.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-16 22:03:18 +02:00
1 parent 1704cbf17b
commit ab001e5d18
37 files changed
+955 -78

No files matched your search

+31 -13
View File
@@ -13,7 +13,7 @@ headless mode).
## Show
Choose what the display shows during the day: a dynamic page (e.g. the built-in Clock:
Pikachu with the time) or any bitmap, and what is left on the dots when the display
Pikachu with the time) or any bitmap (not the [icons](#icons)), and what is left on the dots when the display
switches off. With a [schedule](#schedule), a page chosen here (or with the Home Assistant
"Mode" dropdown) is shown until the next block starts; "Back to schedule" ends it earlier.
Bitmaps that pages or rules use are in their own subsection.
@@ -22,8 +22,8 @@ Bitmaps that pages or rules use are in their own subsection.
## Pages
Dynamic pages: a background bitmap per time of day (e.g. Pikachu from 00:00, yawning
Pikachu from 17:00) with up to 8 elements on top. The preview is drawn by the ESP32, so it
Dynamic pages: a background per time of day, a bitmap or an [icon](#icons) (e.g. Pikachu
from 00:00, yawning Pikachu from 17:00) with up to 8 elements on top. The preview is drawn by the ESP32, so it
is exactly what the display shows; drag the elements on it, or select one and use the
arrow keys. Built-in pages can be copied, not changed. See the [pictures of the pages](pages.md).
@@ -35,7 +35,7 @@ arrow keys. Built-in pages can be copied, not changed. See the [pictures of the
| Text | Up to 32 characters |
| Countdown | To a date and time: smart (`12 dagen`, `5 uur`, `34 min`, `0:45`), days, `12d 04:05`, with seconds; a text when it has passed |
| Stopwatch | `4:05`, `0:04`, `0:04:05`; started in the [Stopwatch](#stopwatch) tab or Home Assistant |
| Image | A bitmap at a position, fixed or chosen by a Home Assistant state (`weer ` + `cloudy` = the bitmap `weer cloudy`) |
| Image | An icon (or a bitmap) at a position, fixed or chosen by a Home Assistant state (`weer ` + `cloudy` = the icon `weer cloudy`, `weer default` when there is none) |
| Progress bar | Filled from the left by a Home Assistant number: value x multiplier / "full at" (a percentage: full at 100). Width, height, with or without a frame |
Every element has a position, alignment, font and overlay (on top, box that clears the
@@ -71,16 +71,33 @@ Start, stop and reset the stopwatch that pages can show (also in Home Assistant)
All bitmaps with a preview: show one as the page, send it live, open it in the editor,
export or delete it. The built-in ones (Nintendo, Pikachu, Pikachu yawning) can't be
deleted, nor can a bitmap that a page, the schedule or a rule uses.
deleted, nor can a bitmap that a page, the schedule or a rule uses. "Make icon" turns a
bitmap that is only part of pages into an [icon](#icons).
![Bitmaps](../Pictures/web-ui/bitmaps.png)
## Icons
Small images (1 x 1 up to 84 x 19 dots, each its own size) for dynamic pages: an Image
element, or a background (drawn at the top left). Icons are never shown on their own, so
they are not in the page lists (Show, Schedule, rules, Home Assistant "Mode"). Each icon
shows its size and the pages that use it. The editor: draw dots, change the size (the dots
stay at the top left), crop to the dots, clear, invert, load an image (scaled to the icon
size), show it on the display. "Make bitmap" turns an icon into a full screen bitmap.
Firmware 2.10.0 made icons of all uploaded bitmaps that only pages used (backgrounds and
images, not shown by the schedule, a rule, the chosen page or the off image), once, after
the new firmware was marked as good. They keep their names and land on the same dots, so
the pages didn't change.
![Icons](../Pictures/web-ui/icons.png)
## Draw / Live
Draw on an 84 x 19 canvas (click or drag), or load an image: it is converted in the
browser (threshold, invert, dithering, fit / fill / stretch). "Show on display now" sends
it to the display right away (*live mode*); with "live while drawing" every change appears
on the dots. Save it as a bitmap with a name.
on the dots. Save it as a bitmap with a name, or as an icon (only the area with dots).
![Draw / Live](../Pictures/web-ui/draw.png)
@@ -115,11 +132,12 @@ few seconds). `loop()` never sleeps, so a CPU percentage would always say 100 %.
how often the image was repaired, Nano restarts and `ERR` replies (with the last one).
**Memory:** free heap now and the lowest since boot.
**Backup:** export everything (settings, the schedule and rules, your bitmaps, pages and
fonts; the MQTT password and HA token only when ticked) to one JSON file, and import a
file: choose which items and which parts of the settings. Imported items are added (a
taken name gets a number) unless you give them an existing name. Pages and bitmaps also
have their own Export button, e.g. to share one page (with the bitmaps and fonts it uses).
**Backup:** export everything (settings, the schedule and rules, your bitmaps, icons,
pages and fonts; the MQTT password and HA token only when ticked) to one JSON file, and
import a file: choose which items and which parts of the settings. Imported items are
added (a taken name gets a number) unless you give them an existing name. Pages, bitmaps
and icons also have their own Export button, e.g. to share one page (with the bitmaps,
icons and fonts it uses).
![System](../Pictures/web-ui/system.png)
@@ -129,8 +147,8 @@ have their own Export button, e.g. to share one page (with the bitmaps and fonts
ends with "Back to normal", or 30 minutes after the last image. The Home Assistant Power
switch still wins: when it is off, nothing is shown.
**Bitmaps, pages and fonts** are stored on the ESP32 (LittleFS, 320 KB, room for well over
a thousand bitmaps, 50 pages, 20 fonts). Pages and bitmaps share their names. They need
**Bitmaps, icons, pages and fonts** are stored on the ESP32 (LittleFS, 320 KB; up to 200
bitmaps, 200 icons, 50 pages, 20 fonts). Pages, bitmaps and icons share their names. They need
the new flash layout from the [one-time installation](recovery.md#one-time-installation-usb);
before that, only the built-in ones are available.