I had a problem: I’m a control freak and I think I like it

By Manu, Software DeveloperApr 1, 2019 • Read time 2 min

We all encounter a range of everyday problems in our lives, both large and small. At Wunderdog we’re no different, but we do have the advantage of being excellent problem solvers with some pretty advanced technical skills — helping us to find innovative answers to some of life’s tricky problems.

A non-extendable problem

I had previously crafted a solution to control my power outlets and read climate sensor data with any device on my home network.

Read our most popular "I had a problem" blog post here.

The solution worked fine and was super easy to use. So what was my problem? Basically, a new toy. I was given a Ruuvitag Bluetooth beacon to play with, so my inner engineer started thinking of all the possible ways I could use it. Soon I became obsessed with the idea of attaching it to the power outlet control system I had at home. I realized quite uickly that my previous solution wasn’t easily extendable so I decided to redesign and reimplement my home automation application from the ground up.

A modular solution

Everything came together quite quickly. I had already identified three different technical areas within my home automation: a user interface to view and control everything, the power outlets, and sensors controlled via TellStick protocol, and the Ruuvitag sensors controlled via Bluetooth. I decided to build each of them as a separate system so that they would be easily extendable later on.

To keep things simple, I decided to implement the UI as a simple JavaScript application and the other systems as REST APIs that communicate over HTTP. In this way, if I want to attach a new kind of device to the UI it can be implemented as a separate service and just needs to show itself via HTTP.

Problem solved

By the time I was done I had reimplemented the home automation system with the ability to read the Ruuvitag beacon’s sensors.

The final test would be to verify whether the system was really as easily extendable as I first imagined, but I guess that’s another story!

You can find my code on Github and the project documentation here .