Add four Steins;Gate pages; shuffle the page rotation hourly

Divergence meter (Nixie tubes, world lines and clock), a D-mail sent
through the Phone Microwave using the panel's Message text, the Future
Gadget Lab inventory with live sensors, and a world line chart of today's
solar power. Original pixel art in tools/steins_sprites.py; the sprite
tool is shared between themes and Sprite, sprite(), polar() and arc()
move to el512_pages.h. HomeData gains the message and a 24 h solar
history in 15-minute slots.

The rotation now walks all pages in a random order that is reshuffled
every hour (Still Alive stays out, Now playing is skipped when idle).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
mangavalkandClaude Opus 5.5 committed 2026-10-18 23:58:34 +02:00
1 parent e9b91c5628
commit 1e8a9a5958
11 files changed
+1057 -76

No files matched your search

+33 -5
View File
@@ -84,6 +84,7 @@ components/el512/ shared driver + ESPHome component (one copy of the code)
still_alive_data.h show content, generated by tools/import_still_alive.py
cyberpunk.* animated Cyberpunk-style ESPHome pages
konosuba.* animated KonoSuba pages; konosuba_sprites.h from tools/
steins.* animated Steins;Gate pages; steins_sprites.h from tools/
el512_pages.h home data and helpers shared by the themed pages
el512_display.* ESPHome display platform `el512`
__init__.py, display.py ESPHome config schema
@@ -92,7 +93,7 @@ src/still_alive/ Portal-style end-credits demo (env still_alive)
src/test_images/ test sketch: cycles through 12 test images (env esp32dev)
esphome/ el512-panel.yaml (Home Assistant display), el512-smoke.yaml
home_assistant/packages/ el512_panel.yaml: helper sensors for the ESPHome pages
tools/ import_still_alive.py, konosuba_sprites.py
tools/ import_still_alive.py, konosuba_sprites.py, steins_sprites.py
test/ unit tests (placeholder)
docs/ datasheet and notes
```
@@ -111,10 +112,11 @@ pio device monitor
## ESPHome / Home Assistant
[esphome/el512-panel.yaml](esphome/el512-panel.yaml) turns the panel into a Home
Assistant display with sixteen pages: clock and weather, forecast, agenda, a sensor
dashboard with a message line, now playing, Plex, solar, Still Alive, and eight
animated themed pages ([Cyberpunk](#cyberpunk-pages), [KonoSuba](#konosuba-pages)). Pages
rotate on an interval; Home Assistant gets a page select, a pause switch, the
Assistant display with twenty pages: clock and weather, forecast, agenda, a sensor
dashboard with a message line, now playing, Plex, solar, Still Alive, and twelve
animated themed pages ([Cyberpunk](#cyberpunk-pages), [KonoSuba](#konosuba-pages),
[Steins;Gate](#steinsgate-pages)). Pages
rotate on an interval, in a random order that is reshuffled every hour; Home Assistant gets a page select, a pause switch, the
interval, a message text, a "Play Still Alive" button, and Display / Low power mode
switches (ENABLE, _LOWPWR).
@@ -249,6 +251,32 @@ from the series is used. KonoSuba (*Kono Subarashii Sekai ni Shukufuku wo!*) is
Natsume Akatsuki and Kurone Mishima, © its rights holders; this project is not
affiliated with or endorsed by them.
## Steins;Gate pages
Four animated pages from the Future Gadget Lab, drawn by
[components/el512/steins.cpp](components/el512/steins.cpp) with Nixie One, Special
Elite and Noto Sans JP (plus fonts shared with the other themed pages), all in the
rotation:
- **Divergence Meter**: eight Nixie tubes roll and lock onto a world line
(Steins Gate first), then show the time; every change ripples like a Reading
Steiner.
- **D-Mail**: a flip phone types the panel's Message text (36 characters, or a
default) as a D-mail, the Phone Microwave (name subject to change) spins a banana and
discharges, and the world line shifts. Upa sits on top; Kurisu keeps watch.
- **Gadget Lab**: the lab inventory, where every gadget is a live sensor (#008, the
Phone Microwave, draws the house load), with a detail card and Okabe in his lab coat.
- **World Lines**: the alpha, beta and Steins Gate attractor fields with today's solar
power plotted as the world line, futures branching off "you are here". The history
is kept on the device in 15-minute slots (`HomeData::record()`), so it fills during
the day and starts over at midnight or after a restart.
The pixel art lives in [tools/steins_sprites.py](tools/steins_sprites.py) (same
`--preview` option as the KonoSuba sprites).
These pages are fan art: the pixel art and all texts are original, and no material
from the series is used. Steins;Gate is © MAGES. and its other rights holders; this project is not affiliated with or endorsed by them.
## Using the driver
```cpp