Electronic Shelf Labels, Part 3: OpenEPaperLink
At the end of Part 2, we were able to send useful content, such as the current temperatrure, to my cheap little Bluetooth-only Electronic Shelf Label from AliExpress. We have working proof-of-concept code on GitHub and, if you have a server running Node.js and having Bluetooth support, then you can use this code as a starting point and congratulate yourself on a job well done.
However, I thought I had a server with Bluetooth support, but official support for my Synology NAS was removed with the 7.0 release of their operating system, DSM. Baaah!
There are ways and means around this restriction, but I thought this might be a good point at which to start properly investigating alternative solutions that already exist for displaying waste collection times on ESLs. Besides which, it’ll be fun!
OpenEPaperLink
Enter OpenEPaperLink, which is an alternative protocol for ESLs. Multiple devices are supported with ESP32-based access points and 802.15.4 radio communication. That is a sentence I took from the project’s landing page. Up until last month, I didn’t know what any of that last sentence meant, let alone own an ESP32. And, to be honest, I’m still a bit sketchy about it.
Wikipedia tells me an ESP32 is part of a family of low-cost, energy-efficient microcontrollers that integrate both Wi-Fi and Bluetooth capabilities. So, whack some software on one and you have a low cost means of communicating with devices over Bluetooth. They tend to be used a lot in “smart home” projects.
I get the impression that these are quite useful little devices. In fact, a brief Google search has unearthed projects for, among other things, controlling coloured LED strips, measuring wind speed and discovering music on Spotify.
Sounds good, and in fact I now own one! A Waveshare ESP32-S3 N16R8 development board that cost me about fifteen quid from Amazon. Reading the OpenEPaperLink hardware documentation, this can double as a ‘BLE Only AP’ which seems to be all we need to control Bluetooth-only ESLs.

If you have ESLs that rely on RF technology for updates then you’ll need to either get a soldering iron out and make an AP out of various boards, or purchase something commercially, as a single ESP32 board is unable to handle both Wi-Fi and RF communication simultaneously.
If you’ve acquired some other types of ESL, maybe some broken ones from a store, or ones that communicate using RF technology, then the project also includes some firmware that you can flash onto these devices. Depending on your ESL this may involve some sort of hacking about with wires or something. For me this is a little out of my comfort zone and thankfully my ESL is supported without having to do any firmware flashing, either over the air or by connecting pins to other mysterious hardware. I believe you can flash Picksmart/GiCiSky BLE-only devices with OpenEPaperLink firmware but I don’t (yet) know enough about the benefits of that solution to try it.
But, for now, lets get OpenEPaperLink onto our ESP32 and see what it does.
Flashing the AP
Getting the firmware onto the dev board turned out to be stupidly easy - just a matter of visiting the installation site and choosing the correct AP firmware. I was briefly stumped about what to do next but, once flashed, the board temporarily creates its own Wi-Fi network that you can then connect to and configure to join your home Wi-Fi network.
Once done, we have a working Access Point. Simple! OpenEPaperLink is capable of showing many different types of content out of the box - images, weather forecasts, RSS feeds and Google Calendar appointments to name but a few.


There’s lots of functionality already built into OpenEPaperLink, but how can we send custom content? When I started this project, I wanted to show waste collection dates - how would we achieve that? Some Googling showed that a solution was already available, but with one catch - I had to run Home Assistant, get a waste collection add-on, and get Home Assistant talking to OpenEPaperLink.
I wasn’t going to do all that just to get a list of bin days, was I? And, of course, the answer was yes. I wasn’t planning on going down this rabbit hole but I did, and in Part 4 I’ll talk you through the finished solution.