Been working on and off for the past year or 2 on a simple home automation system. It is no where near finished, but it is functional. It is a centralized system, all nodes talk to a central server and get talked to by a central server, not plans to make it disturbed because of my end goal with it.
The goal of the project is to be able to program your house as easily as you would you desktop environment, and to make it easy for programmers who don’t deal with electronic hardware the ability to make their own home auto system they have complete control over.
It will communicate with hardware attached to the PI via docker images that can be fed to it via the central server with a json config object and will have a unix socket to communicate value changes to the node which forwards it to the central server, currently it just takes a blob tarball containing structured JS and runs it on the system and is not stable but functions and is run inside of one global docker image.
The plan is to create a web socket API and build a wrapper in a few languages to interact with it, that way you can make your own program that will interact with the home auto system. Being able to subscribe to inputs so you get events when they change, and being able to publish to outputs to change their values.
I use raspberry pi’s as the nodes in the system, but it is currently written to work with NodeJS so it runs on almost anything that has NodeJS 4+, I even ran it on my android phone using Termux. Once it functions how i want, I will swap the JS code over to GO for speed and so that I can strip out almost all of the other programs and get as close to a single program on a kernel as I can get.
I’ve put most of my latest work into the token-update branch of each.
Code to run on the Nodes: https://github.com/tloftis/Home-automation-node
Code to run on the main server: https://github.com/tloftis/home-automation-server