To get the most out of our rooftop PV system, we need to keep an eye on the battery's state of charge and the amount of surplus electricity being fed into the public grid instead of running the dishwasher or charging our electric vehicle, for example. The manufacturer provides a smartphone app for this, but this service sometimes lags a few hours behind and generally requires constant checking with the phone.
My idea was to have a little box in our living room that would give us the information just by looking at it, just like a clock tells the time. So I created this device and called it "Energy Display" (for lack of a better name).
The device is based on a Raspberry Pi Pico W with a 12-segment RGB LED ring and an 8 x 8-segment RGB LED matrix panel based on the WS2812 (also known as Adafruit NeoPixel). The LDR is used to detect the environmental lighting conditions, the button and the piezo buzzer are not used yet and meant for later features.
The software is written using MicroPython and makes use of the asyncio
approach using co-routines to achieve multi-tasking behavior. For the web interface I use phew! (mainly for API endpoints, the web pages generate their content at the client using JavaScript).
I designed and 3D-printed an enclosure, where the front plate acts as a diffuser that turns the otherwise very bright and sharp light points into more pleasent, fuzzy light spots.
The electronic components can be assembled on perfboard or using a custom (not yet designed) PCB. The focus was on being able to build the device yourself without the need for special tools and on easy maintenance by using connectors instead of soldered wires.