Find anything on your shelves by name. Put items in boxes, record where each box is, and when you search the exact shelf and stretch of LED strip lights up so you can spot it across the room.
There are two parts. One coordinator (an ESP32) is the brain: it holds your whole item database and serves a web app. Any number of shelf nodes (an ESP8266 each) sit on your shelves and light up when told to. The nodes find the coordinator on your WiFi automatically, so there are no addresses to hunt down. You search in the web app, and it lights the right shelf.
In the Arduino IDE open Sketch > Include Library > Manage Libraries and install these two:
| Library | Used by | What it is for |
|---|---|---|
| FastLED | Nodes | Drives the WS2812B strips |
| WiFiManager by tzapu | Nodes and coordinator | The first boot WiFi setup portal |
The coordinator only needs WiFiManager. Everything else it uses comes with the ESP32 core, so there is nothing else to add.
Unzip the download. Inside the firmware folder you will find two sketches, each in its own folder:
firmware/shelf_coordinator/shelf_coordinator.ino the brain (ESP32)firmware/shelf_node/shelf_node.ino a shelf node (ESP8266)Double click a .ino file to open it in the Arduino IDE. Keep each sketch in its own folder, the IDE needs that.
You will flash the coordinator once and each node once. The routine is always the same:
Connect the ESP board to your computer with a USB lead. Use a proper data lead, not a charge only one.
In Tools > Board choose your board: an ESP32 Dev Module for the coordinator, or a NodeMCU 1.0 (ESP-12E) for a node.
In Tools > Port choose the port that appeared when you plugged the board in.
Press the Upload arrow (top left). Wait for Done uploading. If a board will not take the upload, hold its BOOT button while it starts, then release.
Do this one first, so the nodes have something to report in to.
Open shelf_coordinator.ino, pick your ESP32 board and port, and Upload (Step 2 above).
On first boot it makes its own WiFi network called Shelf-Hub Setup. On your phone or laptop, join it. The password is configme123.
A setup page opens. Pick your home WiFi and enter its password. The coordinator saves it, restarts, and joins your network.
On any device on the same WiFi, go to http://shelfhub.local/. That is your control panel. Leave it powered and you are ready to add nodes.
shelfhub.local does not resolve on your network, find the coordinator's IP address from your router and use that instead.Each shelf node drives its own LED strips, one data pin per strip. Choose how many strips a node has (2, 3 or 4) with a single line near the top of shelf_node.ino:
#define STRIP_COUNT 2 // 2, 3 or 4
The data pins are fixed: strip 1 to D2 (GPIO4), strip 2 to D1 (GPIO5), strip 3 to D5 (GPIO14), strip 4 to D6 (GPIO12). Wire only as many strips as your STRIP_COUNT. Two strips still behave as the classic top and bottom.
Repeat this for every shelf.
Open shelf_node.ino, pick your NodeMCU (ESP8266) board and port, and Upload.
On first boot the node makes a WiFi network called Shelf-Node. Join it (password configme123) and pick your home WiFi, the same as you did for the coordinator.
The setup page has a Coordinator address field. Leave it blank and the node finds the coordinator on its own. Only fill it in (with the coordinator's IP) if you want to pin it.
Back in http://shelfhub.local/, open the Devices tab. The node now appears. Press Identify to flash that shelf so you know which one it is, then give it a name and drag it into the order you want. That is a zone.
In the app, open Add stock. Pick a zone, choose the strip and the stretch of LEDs the box covers, then open the box and add items with quantities. Finish the box when you are done.
http://shelfhub.local/pack on your phone. Quick Pack grabs the next stretch of LEDs for each new box automatically and lights it, and you read the contents in by voice (Android Chrome) instead of typing. Type or paste (one item per line) works too.Open Find and start typing. Tap a result and its shelf lights up at the exact spot. Then choose:
Your whole database is a single file on the coordinator. From Settings you can download a backup, and upload one to restore. If you prefer the command line:
curl http://shelfhub.local/api/export -o backup.db
That is the lot. For the full list of endpoints, so you can script it or wire in your own node, see docs/API.md in the download.