WLED on Ikea SKAFTSÄRV

This project has been a long time coming.

We cracked open an IKEA SKAFTSÄRV light and followed the instructions to fit it for WLED. Oops2 cracked it open and Oops3 soldered in an ESP32C3 into it to replace the existing control board.

I had to rebuild the WLED project from source to get it to work.

We have not reassembled it yet. This done, I may look at reimplementing the PowerLight - RevSpace using one of these.

4 Likes


This is the IKEA SKAFTSARV being re-used as an improvised n-teller, driven by python from a separate laptop.

This is one we hacked so it runs WLED, and then elder child is programming in python so his laptop grabs the mqtt feed of the population of the revspace then drives the WLED to show how many people are here (up to 15 - there are only 30 LEDs).

This is also why I keep on temporarily logging in and out guests named test1234 and testmqtt1234

4 Likes

This probably deserves a project page… but the developments are getting ahead of documentation.

Eldest child has rewritten their python script to grab the data from @bertrik JSON presentation and then push it to the WLED. Currently it will do this when they run the script.

I am still working on the pretty c++ version which will snarfle the IESO’s xml, process it on-chip on the ESP32C3 which we put inside the light, and then drive the LEDs without using WLED with a custom firmware.

One of these approaches was implemented this afternoon. The other is going to take a few weeks. But is refreshing my c++ skills, so there is that…

3 Likes

I appear to be using this to blog the progress…

Waar ben jij nou helemaal mee bezig?! - #211 by bertrik Gives more detail on the xml of the Dutch data.

I wrote c++ code which successfully crunched through the Ontario data using tinyxml2 and it was nice and fast and snappy and then I realized that the xml was 800kb and my code had a maximum memory footprint of 950kb processing it. I’ve not succeeded in making sense of spxml (and I’m not sure it would be that much more memory efficient, even if it does stream the data), but writing the tinyxml2 code made me think enough about what I’m trying to do that I now have 200 lines of c++ which can chew through the Ontario data in 512 byte chunks and I think I should be able to fit it up with NetworkClient.

So some form of progress. In the meantime we are going to plug the older child’s python into a launchd job on a 15 minute cycle and let it drive plugged in WLED-modded lights in the house. Still using the JSON from @bertrik’s server.

And if I can fit my xml-slurper into my esp32 then I may try looking at the Dutch xml data to see if I can write a version for that.

3 Likes

And we have a project page: PowerLightNG - RevSpace is now up and gives a slightly more formal description of the project.

I will likely continue to blog progress here. I am trying to think of how I can write something which can parse the large XML files smoothly, not necessarily in a single pass, but also not keeping it all in memory at once.

3 Likes