PowerLightNG
Uit RevSpace
| Project Power Light Next Generation | |
|---|---|
| Re-implementing the Energy Ring with (hacked) consumer hardware | |
| Status | In progress |
| Contact | Oops |
| Last Update | 2026-08-29 |
Introduction
Bertrik's PowerLight project is one of my favourite small details in the RevSpace. It sits there and simply presents some data in a colourful way.
I'd wanted to try replicating it but hadn't got around to purchasing the LED ring.
Then I followed a link to the the how to mod an IKEA SKAFTSARV with ESP32 instructions, and decided to give this a try. It was something that could be fairly straightforward to do with my children and would then be something to play with as a software exercise.
Process
We bought two IKEA SKAFTSARV's and inserted ESP32C3 mini boards in, placing the board in the second one such that it could be accessed from one end.
The first one has the controller board inside, making it inaccessible to reprogram without disassembling the light again.
Python & WLED
We flashed the first light with WLED and one of my children wrote a python script to drive the WLED app using data from Bertrik's server (in JSON format). We now have this running every fifteen minutes on another computer at home to force and update.
C++ and JSON parsing
Separately I've written c++ code which runs in the controller board on the second light (where the board's USB-C port is accessible for reprogramming). This connects to Bertrik's server and grabs the JSON and presents it. In this this is essentially a reimplementation of the original Power Light project, but in a strip.
Advantages of hacking consumer hardware
By working with the IKEA hardware, we have something which is already self-contained and (apart from some damage done to break it apart for hacking) looks good.
Next steps
My longer goal ambition is to write something which can parse the electricity generation data for Ontario published by the Independent Electrical System Operator (IESO).
The XML data for each day is large (at least 800kb) and so I will need to write something which can parse and interpret the XML data on the fly (though not necessarily in a single pass).
Sources and links
I plan to put up the python and c++ code developed once it is clean and on codeberg.