Public Access
Home Assistant requests in a task, progress bar, Plex page, bitmap cache
- net/ha_api: the HTTP requests run in a FreeRTOS task on core 0; loop()
only hands over copies through queues. The web UI's test button polls.
No more 3-4 s loop() stalls once a minute; timeout raised to 5 s.
- Progress bar page element (page format 4, v3 pages are converted)
- Plex user setting (settings v6): {plex_user} in entity ids
- Plex page (examples): watchers, play/pause icon, title, progress
- Bitmaps cached in RAM: a LittleFS read took ~100 ms on every render
and web preview; long JSON lists sent in 2 KB pieces
- Backup includes the refresh settings and the Plex user
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
090c2bf8ae
commit
490cefc360
42 files changed
+1074
-175
No files matched your search
@@ -172,8 +172,18 @@ See README.md for the overview.
|
||||
after adding features; the web page could be served gzipped if it gets tight.
|
||||
- Fonts use the "FDF1" format of `logic/font.h`; the web page writes the same format.
|
||||
`logic/builtin_fonts.cpp` is generated: change `tools/make_builtin_fonts.py` and rerun it.
|
||||
- Home Assistant values come from HA's REST API (`net/ha_api`), one blocking request per
|
||||
`loop()` with `HA_HTTP_TIMEOUT`. Keep it that way (watchdog, OTA).
|
||||
- Home Assistant values come from HA's REST API (`net/ha_api`). The HTTP requests run in
|
||||
their own FreeRTOS task (core 0, `haApiBegin()`), one at a time; everything else
|
||||
(entries, watching, values) stays in `loop()`. The task gets copies of what it needs and
|
||||
answers through a queue of plain structs: never share Strings or other state with it,
|
||||
and never wait for it in `loop()`. The web UI's test button polls (`{"pending":true}`).
|
||||
The web server stays in `loop()` on purpose (its handlers touch everything).
|
||||
- Entity ids may contain `{plex_user}` (`expandEntity()` in `logic/page`), filled in by
|
||||
`net/ha_api` with `settings.plex_user` in entity id form (`plexUserSlug()`).
|
||||
- Bitmaps are cached in RAM (`display/bitmap_store`, also missing names): a LittleFS read
|
||||
takes about 100 ms, and pages are drawn for every frame and every web preview. Writes
|
||||
must go through `saveBitmap()`/`deleteBitmap()`, which clear the cache. Long JSON lists
|
||||
are sent in pieces of about 2 KB (`sendPiece()` in `web_ui.cpp`).
|
||||
- Check the page's JavaScript after changes: extract the `<script>` part and run
|
||||
`node --check` on it (node is installed).
|
||||
|
||||
|
||||
Reference in new issue
Block a user