esp32-e-paper-manager

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 7, 2026 License: MIT

README

ESP32 e-paper manager

Render a bounded HTML/inline-CSS dashboard in Go and deliver it to an ESP32 Waveshare e-paper board over an authenticated, encrypted Wi-Fi link or USB.

  • Go rendering and management; C/ESP-IDF firmware for the ESP32 receiver.
  • Images, text and layout resolved on the server; bounded device-side transfers.
  • Recovery-aware delivery and configurable normal/urgent full-refresh policy.
  • USB provisioning keeps device credentials out of dashboard requests.

Getting started

Pushes to main publish versioned firmware and manager images after CI passes. The Go client library uses the same version tag. See automatic releases and firmware update instructions.

  1. Open the repository in its Dev Container.
  2. Run make quality to test Go, native C, Go/C interoperability and TinyGo compatibility, then build the ESP32 firmware and Linux manager.
  3. Follow the receiver guide for hardware and USB provisioning. Do not overwrite an existing enrollment or flash partition.
  4. Follow container deployment and the screen API guide to submit a dashboard.

The current HTML API is for trusted producers and is loopback-only. E-paper refresh completion in logs is not a substitute for visually checking a frame.

See documentation for supported properties, protocol, security boundaries, source references and known limitations.

Directories

Path Synopsis
Package bitmapfont defines deterministic metrics shared by layout and raster.
Package bitmapfont defines deterministic metrics shared by layout and raster.
cmd
engine-preview command
engine-preview renders bounded HTML with the native Go engine.
engine-preview renders bounded HTML with the native Go engine.
epaper-manager command
epaperprovision command
epaperscreen command
epaperscreen renders bounded HTML in pure Go and delivers EPS2 over local USB.
epaperscreen renders bounded HTML in pure Go and delivers EPS2 over local USB.
Package devicelink transports update records over authenticated encryption.
Package devicelink transports update records over authenticated encryption.
Package display defines device-independent monochrome frame and lifecycle contracts.
Package display defines device-independent monochrome frame and lifecycle contracts.
Package document defines the bounded input contract shared by every update transport and the on-device renderer.
Package document defines the bounded input contract shared by every update transport and the on-device renderer.
Package engine implements the bounded manager-side HTML rendering profile.
Package engine implements the bounded manager-side HTML rendering profile.
dom
Package dom owns the engine's single validated HTML5 tree.
Package dom owns the engine's single validated HTML5 tree.
geometry
Package geometry computes bounded CSS boxes without fonts, images or hardware.
Package geometry computes bounded CSS boxes without fonts, images or hardware.
style
Package style parses the engine's bounded inline CSS profile into typed values.
Package style parses the engine's bounded inline CSS profile into typed values.
Package frameio defines the bounded BZM1 local process-pipe frame format.
Package frameio defines the bounded BZM1 local process-pipe frame format.
Package hostprovision validates operator input and creates device enrollment.
Package hostprovision validates operator input and creates device enrollment.
Package manager provides the trusted home control plane.
Package manager provides the trusted home control plane.
Package network defines fail-closed address and retry policy.
Package network defines fail-closed address and retry policy.
Package packbits provides a bounded, allocation-free byte-run codec.
Package packbits provides a bounded, allocation-free byte-run codec.
Package paneldiag maps the tested Waveshare driver to source-free EPS2 diagnostics.
Package paneldiag maps the tested Waveshare driver to source-free EPS2 diagnostics.
Package provision defines USB-only network configuration and its flash journal.
Package provision defines USB-only network configuration and its flash journal.
Package provisionclient implements the host side of physical USB provisioning.
Package provisionclient implements the host side of physical USB provisioning.
Package rasterasset validates manager-side image input without file/network access, HTML parsing, panel dependencies or early monochrome composition.
Package rasterasset validates manager-side image input without file/network access, HTML parsing, panel dependencies or early monochrome composition.
Package refreshpolicy separates operator cadence from panel safety.
Package refreshpolicy separates operator cadence from panel safety.
Package refreshstamp owns manager-side full-refresh labels, not panel timing.
Package refreshstamp owns manager-side full-refresh labels, not panel timing.
Package renderbatch implements per-device manager batching, not panel cadence.
Package renderbatch implements per-device manager batching, not panel cadence.
Package renderdiag defines source-free document rejection diagnostics shared by render adapters and the manager.
Package renderdiag defines source-free document rejection diagnostics shared by render adapters and the manager.
Package screenclient sends prepared pixels using EPS2 over USB or an already authenticated encrypted stream.
Package screenclient sends prepared pixels using EPS2 over USB or an already authenticated encrypted stream.
Package screendelivery defines the manager's physical delivery boundary.
Package screendelivery defines the manager's physical delivery boundary.
Package screenhub accepts bounded EPN2 connections for one enrolled display.
Package screenhub accepts bounded EPN2 connections for one enrolled display.
Package screenlink joins EPS2 framing to the retained screen-session core.
Package screenlink joins EPS2 framing to the retained screen-session core.
Package screenpeer authenticates EPN2 connections before EPS2 ownership.
Package screenpeer authenticates EPN2 connections before EPS2 ownership.
Package screenusbhost isolates EPS2 USB I/O in one bounded child process.
Package screenusbhost isolates EPS2 USB I/O in one bounded child process.
Package screenwire defines EPS2 bounded screen records, not authentication.
Package screenwire defines EPS2 bounded screen records, not authentication.
Package streamrx validates bounded full-image passes before allowing refresh.
Package streamrx validates bounded full-image passes before allowing refresh.
Package streamsession retains bounded transaction evidence across transports.
Package streamsession retains bounded transaction evidence across transports.
Package streamwire defines experimental USB-only EPS1 records.
Package streamwire defines experimental USB-only EPS1 records.
Package strictjson rejects ambiguous bounded JSON before typed decoding.
Package strictjson rejects ambiguous bounded JSON before typed decoding.
Package update defines the versioned HTML update contract shared by USB, the home manager, and the encrypted device link.
Package update defines the versioned HTML update contract shared by USB, the home manager, and the encrypted device link.
Package waveshare75 composes the accepted 800x480 Waveshare 7.5 V2 profile.
Package waveshare75 composes the accepted 800x480 Waveshare 7.5 V2 profile.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL