So what's this about?
Well, as we already said in the description, the existing smart home solutions haven't quite been fitting for our needs.
Be it the privacy concerns we have with their systems, the lack of easy interoperability or features - the excess of unnecessary features being just as bad in some situations - as well as the reliance on external, uncontrollable servers and services that can go down or stop working, there is always something somewhere.
That, and... We're dorks, we like adding some features that you wouldn't find in commercial systems, as well as meddling with the lowest of low-level settings to make stuff work better for us~
As such, we decided to make our own system, which can hopefully circumvent some of the issues we have - or one that at least fits our personal preferences a bit better~
Ok, but what do you want to do about this?
Well, that's a really good question!
I'd like to put some of the design rules down here so some of the decisions made will make a bit more sense.
First things first:
No external services in the vital functions. Those functions being the base communication of the room nodes, sensors and controls with each other, as well as communication with the user.
They handle important data, and if they fail the whole smart home goes down with it, so something I can fix myself feels a lot better. It'll still break, but it'll be my fault :P
MQTT is really to set up on a local Raspberry Pi, giving a very flexible, locally hosted central point of connection. Other things like CMU Sphinx have also become much easier to install and can take over voice recognition, so we also don't need external services there.
If it does break (and c'mon, it's a DIY smart home, something will crash it eventually), the nodes should remain operational in stand-alone mode. Even in the absence of WiFi altogether, it should still be possible to switch the light on and off, be it by using a TV remote control or a regular switch.
It should also hopefully be capable of crashing in the middle of the night and not making a fuss that wakes me up (and that's also happened before, fun :P).
Keep it simple - this system won't be designed to hold a conversation with you. We like it pragmatic and tailored to the user. Any user interface should have clear and easy, functional commands that do something useful. That also simplifies voice recognition because you can then use a very restrictive JSGF Grammar File for Sphinx to speed things up and increase precision a LOT.
That doesn't mean there won't be extra fluff, oh no. We'll add things a timer specifically for tea, an RGB daylight routine to simulate sunlight and other nice functions - just... The ones that are actually smart and improve our living situation a bit.
This DOES however mean that we'll also keep the software simple. Things will run off of a small Ruby backend that we'll write ourselves, using ideas from our #LZRTag - Flexible DIY Lasertag project. If we want to add a feature we'll do it right inside the code, rather than meddling with external settings.
This might not be optimal for people that don't have much coding experience, but I feel like it's worth it - keeps the flexibility and simplicity for us to get a feature we want working :>
Nice! So what are you doing now?
Well, right now the whole system is still quite young.
Our main centrepiece is an ESP32 based Smart Home node, which has enough peripheral shenanigans to do a large variety of common functions.
- It features 4x 24V 2A FET to switch even the brighter RGBW LED Strips for ambient lighting, and has six Side-Mount NeoPixel style LEDs for indication.
- It also comes with an ambient light sensor to automatically turn the lights on and off (we're aiming for fully hands-free light control~)
- As well as a set of IR peripherals - a 40Khz receiver and a powerful IR emitter. These will be used to interface with upcoming wearable devices to provide room-precise localization, letting the system know where a...