Why I am doing this?
I started building my smarthome setup over 7 years ago. I didn't like the commercial solutions that were available at the time, so I picked up Domoticz as my main hub. It was running on a Raspberry Pi that had a RaZberry card attached to it. I used this setup to integrate a couple of roller blinds relays over Z-Wave. Things took off after that and in the meanwhile I have Z-Wave relays, Zigbee sensors, Tasmota devices, Kodi integration, vacuum cleaner running Valetudo etc.
So my main goal is to share my experiences and show people that you just need to glue together all the pieces already created by the great FLOSS community. But please remember to also support the developers of the projects you are using. Either by contributing code or simply by donating money regularly. It doesn't have to be much, but if we all chip in then it is worth it!
Overview of my setup
Domoticz is a nice and lightweight open source smart home hub.
I will not go into details about how Domoticz works and the basic of setup on a Raspberry Pi, there is enough of resources around the net about that, I will just link a couple of interesting pages here.
- Domoticz installation of Raspberry Pi.
- Setting up a RAM drive used for logging.
- Monitoring Domoticz and other services using Monit.
Some other services I am using with Domoticz, like e.g. MQTT server and Node-RED, will be explained later, when I start writing about specific implemented functions.
There are a lot of good alternatives to Domoticz, e.g. OpenHUB, Home Assistant etc. I started with Domoticz and stuck with it.
From one side I didn't find anything until now which was not possible to implement using Domoticz. From the other side I already have a running system and do not want to start all over again. Also when your users start using your setup, they expect it to just work. Let's call this the family factor or a more tech-term for it is never touch a running system :).
Domoticz is the heart of the setup, it gives me the possibility to "glue" everything together using the automation tasks.
In the begining I "wrote" my automation tasks using the integrated Blockly interface. Although this is great for simple tasks and non-tech people, it soon became restricting. So soon I switched to DzVents. DzVents is the scripting language for Domoticz which is based on Lua. It gives us a possibility to simply intereact with the devices and variables in Domoticz and we can use Lua to make the things as complicated or geeky as we wish :)!
Some of the implemented functions I have at our home are:
- Control the roller blinds according to day time or weather outside.
- Control the fans in the bathrooms according to air humidity.
- Control the lights according to presence detection.
- Integrate Kodi with Domoticz, to switch on/off the amplifier and TV when needed.
- Start the vacuum cleaning according to presence detection.
- Sync all the smartphones to my NAS and sort the pictures according to their EXIF data.
In the next blog posts I will give you the insight on which devices I used for which function and how my scripts look like. Also I will publish the scripts on codeberg, so that you can use them if you prefer.