Hi guys,

I'm Paul, 44, software engineer from Northern Ireland. I have been slowly hobbying up a smart home system for a while now, I thought I would share some of it with you guys and share some of the ideas for where it goes next.

So far I have a data network in the home. It's very simple, as complex as it currently needs to be. Devices send JSON blobs via UDP to a hub. The hub merges the JSON into a single lump of data and makes it available to any other device that is interested. Presently the whole dataset is sent if you as much as connect on it's TCP reading port, but this could become a REST API.

So for example I have a few Raspberry Pis and a few ESP8266's with temp sensors shoved in discrete places. Every 5 seconds they wake, read the temp and send a JSON string to the hub. Something like:
Code:
{"type": "float", "units": "'C", "key": "livingRoom", "value": "21.81",  "shortName": "LR", "name": "Living Room"}
the hub then adds this to a larger tree of data and adds a timestamp to the json object to allow stale data detection.

I also have a monitor on my solar panel controller, which uses an RS485 to serial converter and an ESP8266 to transmit it's parameters every 5 seconds to the hub.

The only client I have currently is a small RaspberryPi enclosure with a 16x2 screen which just displays all of the data 2 at a time on the screen in a loop.

Additional to collecting and sending data, the hub also, every minute, dumps a snapshot of the data into RRA archives. If new data arrives it will automatically create a new RRA for it. I have a web application called "Cacti" which provides management for graphing this RRAs on demand, allowing me to view graphs of data over the web.

RRAs are round robin archives. They are fixed size, multi layer, sequence database. Mine store 1 minute resolution for 2 years, 5 minute resolution for 10 years and 1 hour resolution for (I can't remember... a long time). They never get larger, never fill you disk space.

I am currently moving on to the first real automation. The heating controller.

I will follow up with a post of the first version approach to heating scheduling and then the future ideas for making it more of a multi-zone, presence aware, demand based system for when I upgrade my heating a bit.

Here are a few images:
Solar panel, RS485 to Wifi monitor box:


Raspberry PI Monitor/Display:


Graph output from RRAs