The Vestaboard offers a tactile flip‑dot display that blends analog charm with digital control, and e‑note‑ion adds programmable scheduling plus an emotional layer to each update.
E‑note‑ion reads JSON files from two folders—static for looping content and dynamic for trigger‑based messages—and validates them against a strict schema before sending updates to the board.
Each JSON file can include an emotion tag such as joy, caution, or nostalgia, which maps to preset colour palettes, animation speeds, and intensity levels defined in the configuration.
Running e‑note‑ion inside Docker isolates the service from host dependencies; you mount a host directory at /app/content/user to supply your JSON files and configuration.
This volume‑mount approach lets you edit messages on your laptop with any editor and see the changes instantly inside the container without rebuilding the image.
Configuration starts by copying config.example.toml to config.toml and setting the Vestaboard IP address; the authentication token is kept out of version control in a .env file that is ignored by Git.
The scheduler block in config.toml uses a natural‑language parser that understands cron‑like expressions, time zones, and conditions such as “at 9:00 AM on weekdays if temperature > 75°F”.
Overlapping scheduled events are queued, a warning is logged, and administrators can adjust priorities or overlap rules as documented in the example file.
Communication with the Vestaboard occurs via a lightweight HTTP API; e‑note‑ion translates internal commands into POST or PUT requests that return a 200 OK or 202 Accepted on success.
Client errors (4xx) usually indicate malformed JSON or missing authentication, while server errors (5xx) point to the board being unreachable; each response includes a UUID for traceability.
The project targets Python 3.14+, leveraging improved pattern matching, built‑in TOML support via tomllib, and requires the uv installer for fast, deterministic dependency resolution.
Static JSON files define round‑robin messages, dynamic files react to webhooks or home‑automation events, and a full test suite with linting, type checking, and security scanning ensures quality before each release.