Repository navigation
Home
Open firmware for SoluM e-paper shelf labels and an ESP32 access point. Put prices and text on the labels from any software, with one HTTP request.
This wiki is the user guide: how to get from a box of labels to labels that show your prices. The technical details (protocol, firmware internals, hardware notes) live next to the code in the repository, and the pages here link to them. New words are explained in the Glossary.
- Prices in a shop: product name, price, unit price, EAN or QR code, offers that start and end at a set time.
- At home: the weather, today's calendar, the bin collection day, the room temperature, the guest WiFi as a QR code, from Home Assistant or your own scripts.
- In the workshop: a 3D printer's progress, labels on filament spools, boxes and shelves.
The labels are shop shelf labels, often sold cheaply second-hand. They run for years on a coin cell and keep showing their screen without power.
![]() Labels A SoluM 2.9" or 1.54". Check the product name on the back. Have another label? We would like to support more: tell us. |
![]() An access point An ESP32-C6 Super Mini (about 5 $) is enough to start. Other boards Another board in mind? Support for more is welcome: see how. |
![]() A flashing jig A small board running ZBS_Flasher (a Wemos D1 mini, an ESP32, an Arduino Nano and others) and pogo pins, to flash each label once. How to build it |
A computer With Chrome or Edge, to flash from the web page. Nothing to install. |
Plus a USB cable for the AP and one for the flasher board, and CR2450 cells for the labels. The full list: What you need.
flowchart LR
you["<b>Your software</b><br/>Home Assistant, a script,<br/>a till system"]
ap["<b>Access point</b><br/>a small ESP32 board<br/>on your WiFi"]
labels["<b>Labels</b><br/>e-paper, on a battery"]
you -- "text and prices<br/>(HTTP)" --> ap
ap -- "the finished screen<br/>(802.15.4 radio)" --> labels
Your software sends text, the access point (AP) draws the screen from a layout you choose, and each label fetches its new screen by radio about once a minute. The details: How it works.
- What you need: the labels, the access point and the flashing jig.
- Getting started: from nothing to the first label, on one page.
- Sending content: put text and prices on the labels from your own software.
No hardware yet? The simulator runs the label firmware and the AP together on a PC, and the label designer works in any browser.
Want to help? Photos of a label we do not support yet, a report from a board marked experimental, a new template or a clearer sentence here are all welcome. See Contributing.
Getting started How it works · Glossary · Getting started · What you need · Roadmap
Access point Choosing a board · ESP32-C6 · ESP32-C6 with screen · ESP32-C5 · ESP32-S3 + C6 · ESP32-S3 + wireless C6 · Flashing the AP · WiFi and API token · AP settings
Labels Supported labels (2.9", 1.54") · The flashing jig · Flashing labels · Label backups
Layouts Label designer · Label templates · Getting layouts onto the AP · Layout elements and limits
Sending content Overview · HTTP API · esl-client · Price lists from CSV · Scheduled prices · Home Assistant · Weather
Running it Dashboard · Health and webhook · Updating the AP · Updating labels · Upgrading from older versions · Backup and restore · Moving to a new AP
Help Troubleshooting · FAQ
Developers Contributing · Building from source · Adding hardware
- Web page: https://mathiasbk.github.io/openESL (flashing, designer, dashboard, API docs)
- Releases: github.com/mathiasbk/openESL/releases
- Issues: report a bug or suggest hardware
- Licence: MIT
OpenESL is released under the MIT licence. These pages are made from the wiki/ folder in the repository: to fix something, send a pull request there, or open an issue.
Getting started
Access point
Labels
Layouts
Sending content
- Overview
- HTTP API
- esl-client
- Price lists from CSV
- Scheduled prices
- Home Assistant
- Weather on a label
Running it
- Dashboard
- Health and webhook
- Updating the AP
- Updating labels
- Upgrading from older versions
- Backup and restore
- Moving to a new AP
Help
Developers


