The dragon's home

A comfy, standalone DIY smart home

Similar projects worth following
I love glowy things.
I mean it - look at our projects list and literally everything will have a glow to it. But there's one thing that hasn't quite been glowing well enough for me yet, and that's my room!

Now, there are options for lighting out there, like the conventional Smart Home services from Google, Amazon, etc., but I am not a big fan of putting those into my room. It wasn't too long ago that one of their services went down and people couldn't turn their lights on - that plus the privacy concerns are a big no.

I could go for regular IR-Controlled RGB strips, but those are a bit boring as well, I feel.

So here I am, making my own DIY Smart home implementation!
Fully open-source, fully capable of all the fancy features like voice control, but all locally hosted and with fallback options to control it all offline~

Stick around to see where it goes!

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...
Read more »

  • First voice!

    Xasin04/20/2021 at 21:00 0 comments


    Sorry to keep you guys waiting, the whole... Oh, zero followers?
    Well, I better get started on writing project logs in the first place, otherwise, no one will come here :P

    Anyhow, things have been going wonderfully!
    The first few weeks of the project were mainly just there to set up the hardware, improve the 3D printed casing and audio quality, get the sensors online etc.
    There... Was stuff to report on, but frankly I just wanted to have fun with it and get to a state where I can be really proud of the project!

    To be fair, that state was reached when I heard how nice the system sounds with the new 3D printed casing. It includes a proper spot for the speaker to fit into that guides the sound better, and it also looks fantastic!


    Looking and sounding good isn't the only thing this can do, though. It's also a wonderful listener!
    Though it respects your privacy too - the local microphone does not stream audio over the network, not even for keyword detection. Instead it uses a whistle pattern that can be detected locally on the ESP, and only then is the microphone audio streamed over the network to a remote server for, you guessed it, voice recognition!

    I finally got it working this evening, and although the recognition quality is... A little dubious, to be quite honest, it also seems to work just fine for the most part!

    Recognition is performed using CMU Sphinx, which is open source and can be run locally. The lower quality is offset by the ability to use a JSGF Grammar file that restricts the recognized words and always guarantees some parseable result, and it doesn't need cloud services etc.

    Overall, things are starting to shape up, and I am very happy with it! 
    The ambient lights and the temperature fade it provides have been great for my sleep rhythm too, I ... *Checks clock*
    Oh nevermind.

    Well, time to flesh out the voice recognition a bit more up next, build a better API to interface with it, and then build a backend that can actually do useful stuff!

View project log

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates