I am happy to announce the release of my generation 1 home automation system source code. I will be releasing Generation 2, the code which is currently in-use in the next couple of days to a week. If you would like to be informed of the Generation 2 code drop, please watch the BitBucket repo to be informed.
First, a little bit of history. I originally started writing this code back in 2015 to run exclusively on my Raspberry Pi connected to an external speaker. It was controlled using HTTP URL endpoints, which can be hit using various NFC tags throughout my home. Eventually I bought a 7" touch-screen and an additional Raspberry Pi. This is when my automation system began to grow and mature more into what it is today. The first external display was placed in my bedroom, and ran PyCARS, another project I wrote for my home automation system. As a result, the original Raspberry Pi running the home automation system no longer needed an attached speaker, and instead a UDP broadcast packet was sent on my home network to notify any listening HUD(a PyCars device).
For a time this configuration worked great, but as the system got more complex, I began to see more and more thread-locking which crashed the entire system from time-to-time. As a result, the system was rewritten to use Gevent, and the UDP broadcast system was replaced by ZeroMQ to ensure the packets were always received.
Generation 2, which will be available soon within the repo has many new features which were written during 2018 and partly this year. This system is the one which is currently in-use, however it will be replaced eventually with a newer idea.
If you wanted to check out the source code for my custom made home automation system, which is built in Python, you can find it on BitBucket here: Home Automation source code. The code is licensed under the GPLv2.