Repository navigation
Price lists from CSV
esl-client sends a whole price list from a CSV file. Unchanged labels cost nothing, so you can run it as often as you like.
python3 esl_client.py sync prices.csv
python3 esl_client.py sync prices.csv --dry-run # check and show, send nothingmac,layout,name,price,unit
00000123456789A8,price,Lettmelk 1 L,"24,90",kr 24/L
000001C280923B15,price,Kaffe 500 g,"49,90","kr 99,80/kg"- The header row names the columns, in any order.
macandlayoutare needed (--layout pricegives rows without one a layout). -
highlightandframeare optional (1/0, true/false or empty). - Every other column is a field, in column order.
- Exports from Excel work as they are:
,,;or tab, UTF-8 or Windows-1252.24,90stays24,90.
Your till or ERP knows item numbers, not label MACs. Keep a second file that says which label shows which item:
mac,item
00000123456789A8,1001
000001C280923B15,1002python3 esl_client.py sync prices.csv --tags tags.csvThe price file then has an item column instead of mac. One item can be on several labels. tags.csv changes only when labels are put up or moved.
The files are checked before anything is sent. A bad MAC, a MAC or item twice, or a row without a layout gives every such line (prices.csv:12: ...) and sends nothing. When the AP refuses a row, the error names its line too.
Add --at "2026-10-19 07:00", or an at column per row: see Scheduled prices.
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