Weather forecast page, 16 elements per page, attribute paths, examples from the display

- Home Assistant attributes can be paths into lists (forecast.1.condition).
- Date elements can show a day ahead (day offset 0-7).
- Pages hold 16 elements (page format 6; the old formats are frozen at 8).
  Pages are reset in place (clearPage), not through a 4 KB temporary.
- Verwachting page: today (icon, temperature, max/min) and the next 2
  days with 7 x 7 icons (weer7 <condition>), from a template sensor
  (docs/home-assistant.md).
- examples/home-pages.json is exported from the display with all pages
  and their icons, private entity id parts replaced by placeholders
  (tools/export_examples.py replaces tools/make_example_pages.py).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-16 22:36:29 +02:00
1 parent 839e86e8f1
commit a6b946e17c
33 files changed
+1918 -1050

No files matched your search

+8
View File
@@ -168,6 +168,14 @@ See README.md for the overview.
old hardcoded clock (also the default and the HA "Clock" option). `pageStoreBegin()`
stores a copy of each built-in page (`logic/builtin_pages`) at boot when none is stored,
so it can be edited; the built-in one is the fallback, and deleting the copy resets it.
- Pages hold 16 elements (format 6). The old formats in `page_store.cpp` are frozen at
`OLD_PAGE_ELEMENTS` (8). A `DynamicPage` is about 4 KB: allocate it with `new`, and reset
it with `clearPage()`, not `page = DynamicPage()` (a temporary on the 8 KB loop stack).
- HA attributes may be paths into lists (`forecast.1.condition`, `net/ha_api`). The
forecast comes from the template sensor in `docs/home-assistant.md`.
- `examples/home-pages.json` is written by `tools/export_examples.py` from the display.
Its PRIVATE map replaces private parts of entity ids; extend it for new pages and check
the output.
- `ha_api` attribute lookups: cast `char` arrays to `const char *` for ArduinoJson keys.
ArduinoJson 7.4 takes a `char[N]` as a literal of length N-1, which never matches (that
broke all attributes from 2.9.0 to 2.10.0).