Over the last year or so I have been slowly building up a collection of home energy metrics. Things like boiler runtime stats, heating zone temperature and demand etc, they have been incredibly useful in helping me understand the various characteristics (heat up time, temperature loss rate etc) of the different rooms in the house.

Here’s an example of a Grafana Dashboard which shows boiler activity time vs heat demand vs outdoor temperature:


I recently discovered that my energy supplier, Bulb, has paired up with Samsung SmartThings to create the SmartThings Energy Control (STEC). STEC is a SmartThings app which allows Bulb customers to view their energy usage on their phone. This got me thinking: Wouldn’t it be great to see if I can use SmartThings to get my energy data in near-real-time and correllate this with things like boiler/ appliance usage etc?

I feel a side project coming on…

How might this work?

Good question! Having absolutely zero prior knowledge of the SmartThings ecosystem I had a quick read of the docs. From this I think there are probably 2 different approaches which could work, being push and pull based models. I discuss these at a high level below:

Pull Model

I believe this would require the presence of a SmartThings hub, which would run some “SmartApp” Groovy code and could then push energy events over a network to some repository (in my case InfluxDB). This would of course require me to possess a SmartThings hub, which I don’t, so I’m going to park this as a potential approach for now.

Push Model

This approach would again require a “SmartApp” to be written, however this time the app would run entirely on the SmartThings Cloud Platform. Again, this would require network access to the events repository, which in my case runs on a device at home. This approach will almost certainly require more thought in the way of security and networking, but it appeals more to me and doesn’t require the purchasing of a SmartThings hub, so I’m going to see if it has any legs.

So what’s next the next step?

In order to ensure I build the right thing I first need to make sure I have correctly defined the problem I’m working on, then validate that what I’m proposing to build will actually solve that problem. To do this I’m going to take a leaf out of the GDS Service Manual, which provides a clearly defined approach to solving problems (and IMHO is a great example of Government doing things really well!). In its discussion of agile delivery the service manual defines something called a “discovery phase”, which provides a simple framework to undertake these activities. I will post my discovery findings soon - stay tuned!

Show Your Work

There’s no doubt about it, this is a totally self-indulgent side project! I would usually work on something like this privately, however I’m currently reading Austin Kleon’s “Show Your Work” which has convinced me that it might be fun to do this project in the open, in case it provides a useful utility or inspiration for others. I will post tagged updates here on my blog and will create a public repository in GitHub for the technical bits and pieces.

Here’s a bookmark for the tagged entries. Please bookmark it and check back in on my progress if you’re interested!.