/loadshedding-clock

A clock that counts down to the next scheduled blackout.

Primary LanguageC++MIT LicenseMIT

Loadshedding Clock

A timer that counts down to the next scheduled blackout.

Front view not loadshedding Front view loadshedding Back view CAD render

The clock is based on an ESP32 microcontroller, and it obtains loadshedding information from the EskomSePush API.

All code is written in C++ using the Arduino framework and PlatformIO. The code is available in /loadshedding-clock-code/src.

The PCB schematics and board layouts can be found in /PCB.

CAD files for the 3D-printable parts can be found in /3D.

Why did I make this?

In South Africa, our national power utility (Eskom) fails to generate sufficient electricity to supply the entire country with power. As a result, rolling blackouts have been implemented to ration electricity. Each day, regions of the country are disconnected from the power grid for hours at a time. Any given area typically experiences blackouts lasting 2 to 4 hours, multiple times each day.

Fortunately, these blackout events are scheduled in advance. The timings of the blackouts change daily, and it can be challenging to keep track of when loadshedding will occur. Many South Africans rely on the EskomSePush app to stay informed about the loadshedding in their area. I wanted to take this one step further and make it even easier to stay informed. By simply glancing at the loadshedding clock, one can immediately see when the next blackout will occur.

How does it work?

The clock is based on an ESP32 microcontroller. It connects to the internet via WiFi, and it obtains loadshedding information from the EskomSePush API. The clock is powered by a 5V USB power supply, and it is equipped with a battery backup.

When the clock is powered on for the first time, it broadcasts its own WiFi network. When the user connects to this network and visits a site hosted by the clock, they can input their WiFi credentials, suburb, and EskomSePush API key.

The clock then displays the loadshedding information for the given suburb, automatically updating its schedule every 30 minutes. If the internet connection is lost, it will continue to display the last schedule that it received from the API.

What's next?

Future versions may include the following:

  • Get the clock working
  • LED timeline
  • LED-lit acrylic panel
  • Design PCB
  • Simplified 7-segment display circuitry
  • Notification buzzer
  • Capacitive touch input

Bill of Materials

Part Quantity
FireBeetle 2 ESP32 Microcontroller 1
3.7V LiPo Battery 1
I2C OLED Display 1
7 Segment Display 1.8" Common Cathode 4
7 Segment Display 0.56" Common Cathode 1
BC557 PNP Transistor 7
Bar graph LED 6
Green 5mm LED 9
Red 5mm LED 6
Push button 1
RGB LED 2
Adjustable DC power supply 1
DC jack to USB C converter 1
100kΩ resistor 2
10kΩ resistor 8
1kΩ resistor 18
220Ω resistor 5
100Ω resistor 7

Video overview

I made a loadshedding clock

Breadboard Prototype

Breadboard prototype