[Working Draft] Smarter Sockets

This is something I looked long and hard for, before deciding to build it myself. Also, a school project pulled this off the shelf and added some urgency. Last year I completed a similar but very early proof-of-concept prototype just for the web-controlled relay board. It didn’t have the parallel shift registers, the relay board, or the actual sockets. I never finished it or came close to building an actual final product.

[Take a better picture]

This prototype built on an Arduino controlled relay board which in turn drove a series of electrical sockets controlled by a web page over an Ethernet connection. [Feature link to commits where I shared this with the Arduino community.] But it also let’s you monitor consumption and prevents outages with a battery backup.

This project combines these things;

There is not currently any product that does this which I have been able to find. And as a minimalist who is committed to conserving energy, being independent, and being aware of my footprint, I was really hoping to find something like this out there.

Improving on Kill-A-Watt

Kill-a-watt is a very interesting product which nevertheless has some huge development opportunities.

It lets you see power usage for a single electric socket. There are several problems with this.

For one, it only works for one socket.

Two, it doesn’t let you see the data except through the limited interface. There are no graphs of usage over time and there is no web accessibility for the data.

Expanding on this idea, each socket on my new device will allow you to see power consumption over time. There will be a clean web-based interface which lets you see any unusual spikes and be responsible with your energy consumption. This will pair well with the smart-socket feature which will enable you to turn things off when you are not using them or when they are using too much energy.

Improving on Smart-Sockets

Smart sockets are very limited. They typically offer only one socket, and do not offer usage metrics. Also, they feature very poorly implemented security and control software.

[Explore Steve Gibson’s IoT security reviews]

Improving on these widespread industry problems will be an important and valuable step.

At the hardware level, offering multiple smart-sockets is already a huge improvement, as is offering usage metrics, but there is room to improve further. Another major feature of this project is feature granularity. I want to make sure and give enough detail so that developers can create multiple physical formats. Maybe you only want one socket, not eight. Why not?

There is no reason this system can not fit into a wall socket and replace the old-fashioned ones you already have. Imagine removing the mess of plugging devices into devices into the wall, and just put the smart-socket inside the wall.

[include diagram]

Including a UPS (Might take this out)

I started with this very thorough tutorial which does a great job of explaining the terms and options that differentiate existing UPS products.

I found a discarded 2kw UPS with a dead logic board at a computer repair shop which I was able to get for free. All 2 kilowatts of sealed lead-acid batteries worked fine, it was just a bad control board. :] This was exceptionally lucky, but you may be able to find something similar if you look.

I had also explored scavenging 18650 battery cells. These are very popular for DIY UPS builders. This great alternative option would also probably scale better than sealed lead-acid and charge or discharge much faster. There are lots of places like battery stores that will happily give you free, “dead” laptop batteries full of these cells. Typically it is just the control board and maybe one or two of a half-dozen cells which is actually bad. The rest will still work fine in most cases.

Choosing a UPS Paradigm

The linked tutorial describes three main types of UPS. I chose the Online type, “The Online UPS unit completely isolates the devices attached to it from the wall power. Instead of jumping into action at the first sign of power out or voltage regulation issues like the Standby and Line-Interactive units, the Online UPS unit continuously filters the wall power through the battery system. Because the attached electronics run completely off the battery bank (which is being perpetually topped off by the external power supply), there is never a single millisecond of power interruption when there is power loss or voltage regulation issues. The Online UPS unit, then, is effectively an electronic firewall between your devices and the outside world, scrubbing and stabilizing all the electricity your devices are ever exposed to.”

If it’s more expensive, why choose this type?

The goal of this project is radical energy independence. I want this to be expandable and compatible with eventual solar or wind power generation. This basically fills the same role as a Tesla Powerwall.

For reference, I found a great online community focused on cloning the Tesla Powerwall. There are lots of great ideas and examples in there.

Future Direction

There are tons of potential directions the project could go. For example, the smart-sockets could easily include powerline-wifi-adapters to replace wifi access points and greatly increase the wifi availability in your home while eliminating obnoxious and unnecessary hardware and wires.


This project includes a public repository of all the code and plans which anyone can contribute to, and a forum for discussing it. I will try to make it fairly modular and platform-agnostic so that people can use different hardware and still have a safe and secure system.

Building a MVP/POC


The core of the project is an Arduino/compatible processor and a network stack. This can be Wifi or Ethernet. There are some great examples which combine these parts together and even include the relay board if you would rather use that.

I will be using the brand-name Arduino Uno and the Arduino Ethernet Shield, only because I already had these. If I was buying them for this project, I would probably use the one I linked to in the previous paragraph because Wifi would be a great feature for this project.

This is going to take a lot of different parts which need to connect to the Arduino. We need to use a parallel shift register (Explanation) in order to control lots of things with just a few pins.

A simple relay driver board does the heavy lifting of turning the sockets on and off.

Measuring the current through each socket will require a series of special sensors wired inline and then connected to the Arduino. Alternatively, there are several other examples I am exploring for this part.

The main power will come from the battery bank and go through a cigarette lighter dc-ac converter before hitting the gfci socket and then the relay board. This makes the whole thing very safe because there are several circuit breakers built into each of these levels.

The battery bank will be charged by a standard ATX PC power supply which will automatically be turned on and off by the Arduino when the power level requires it. (This means we only get seven sockets since one of the eight relays will control the charging supply.

Future Steps

The most obvious future step would be making an actual ready-to-order product which people can buy. This would require a great deal of funding since there would be regulatory requirements and manufacturing costs, but I really think this is something people would buy.

If people are willing to pay $30 or more for only a single smart-socket which does not measure usage, it makes a lot of sense that people would be willing to pay even more for more features and expandability in a device which offers multiple sockets with valuable metrics about usage.