Public Access
Driver (components/el512/el512_panel.*, ESP-IDF only): - DMA ring of 8 x 4 lines (17 KB) refilled from the I2S EOF interrupt (IRAM) instead of a 142 KB full-frame stream; ~107 KB heap freed. - 256-entry lookup table encodes 8 pixels per step. - Back buffer + displayed buffer, swapped at the start of a frame. - PlatformIO builds it via lib_extra_dirs (EL512Core); lib/EL512 keeps the Adafruit GFX front end. ESPHome external component (platform: el512): - DisplayBuffer with optional ENABLE / _LOWPWR pins, set_enabled(), set_low_power(), helper functions for page lambdas. - still_alive_page: plays the Portal end-credits show, then returns to the previous page. Still Alive engine moved to components/el512/still_alive.* with a built-in 5x7 font (from Adafruit GFX, BSD); the PlatformIO demo uses the same code. The importer writes components/el512/still_alive_data.h and stops at 200 s (--until-ms), matching the hand-trimmed data. esphome/el512-panel.yaml: 8 pages (clock, forecast, agenda, dashboard, now playing, Plex, solar, Still Alive), page select, rotation, display and low-power switches, message text. home_assistant/packages/el512_panel.yaml: helper template sensors for forecast, agenda, now playing and Plex streams. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
32 lines
724 B
YAML
32 lines
724 B
YAML
# Minimal bring-up test for the el512 component (no Wi-Fi).
|
|
esphome:
|
|
name: el512-smoke
|
|
|
|
esp32:
|
|
board: wemos_d1_mini32
|
|
framework:
|
|
type: esp-idf
|
|
|
|
logger:
|
|
|
|
external_components:
|
|
- source:
|
|
type: local
|
|
path: ../components
|
|
|
|
font:
|
|
- file: "gfonts://Roboto Mono"
|
|
id: mono
|
|
size: 20
|
|
|
|
display:
|
|
- platform: el512
|
|
id: panel
|
|
update_interval: 1s
|
|
lambda: |-
|
|
it.rectangle(0, 0, it.get_width(), it.get_height());
|
|
it.line(0, 0, it.get_width() - 1, it.get_height() - 1);
|
|
it.print(10, 10, id(mono), "ESPHome on EL512.256-H");
|
|
it.printf(10, 40, id(mono), "uptime %lus", (unsigned long) (millis() / 1000));
|
|
it.filled_circle(it.get_width() / 2, it.get_height() / 2, 40);
|