If you want to take your smart home to the next level, learning a programming language can be a crucial next step. After all, mass-market smart devices can only do so much. If you want to do more with it, you need to extend them – or buy a more general device (like a Raspberry Pi) and program this to your needs.
In general, Python is the ‘best’ language to learn for beginners, with Node.js and then Java close behind. C is then popular for serious smart home development, however the best language to learn can quickly change.
Okay let me level with you. I started this heading as the “Best language”, but there’s no such thing: there are a dozen suitable programming languages you can use to improve your automated smart home, just like there are a dozen suitable screwdrivers and hammers on the shelf at Home Depot.
As a software developer by trade, I’ve used many programming languages over the years – and they all have different strengths and weaknesses.
Having got that disclaimer out of the way, there are however pragmatic choices to take when learning a programming language for smart home development.
If you are an absolute beginner, Python will be the best ‘all rounder’. This is especially true if you have purchased a Raspberry Pi and you want to program it, because lots of the tutorials out there are based on Python.
However both Node.js and Java are also frequently used, with Node.js being easier to learn (than Java), but Java being a lot more powerful. If you are interested in making custom Amazon Alexa skills, lots of online guides are written in Node.js (but some are in Python, and a couple are in Java).
If you are already technical, perhaps you have an electrical engineer background and you already know some programming, then C will probably be the best bet for you.
As you can tell, the choice of ‘best language to use’ is not straight-forward. In general though, we would suggest that you start with Python if you haven’t learnt a programming language before.
You can use Python for lots of smart home development cases, including customizing a Raspberry Pi and writing custom Alexa skills.
Python is relatively easy to learn, plus it’s consistently ranked as one of the world’s most popular programming languages – and it’s actively developed and growing, too.
There is almost an infinite number of ways that you can use programming to improve your smart home (and/or home automation) experience, but some methods you can start off with are:
With this, you can provide a truly unique experience through your Amazon Echo devices. You know when you ask for certain things, and it says that it’s opening a certain skill? Well this means that a third-party bit of computer code is being invoked to answer/process your query.
You can make your own skill, too. Amazon have an in-depth guide on creating a simple “Hello world” skill, with ‘Hello world’ being a common approach that programmers take with their first ever program.
There’s also a useful YouTube video showing how to do this:
Just like you can make custom Skills for Alexa, you can make custom Actions for Google Home devices (such as the Google Mini).
What’s great with this approach is that you can add your custom actions into the Google Home app, along with controlling multiple devices (and more). In other words, you can end up building an entirely custom experience linking multiple smart home devices – and manage everything professionally with your Home app.
There aren’t as many guides on how to implement custom actions on Google Home (stay tuned – I plan on making one at some point), but the Smashing Magazine article is useful, as is the following YouTube video:
Philips has various developer support including ‘SDKs’, which stands for software development kit – a quick starter package of useful code and info.
Whilst this shows that they are developer-friendly (always a good sign!), they don’t have any official Python SDKs. That’s okay, though, because there’s lots of good quality third-party Python SDKs including the one from studioimaginaire.
The good thing with being able to control your Hue bulbs in this way is that you can do exactly what you dream of – no more being limited by the phone app!
Equally you can trigger a Hue routine (or simple change of bulb color) with anything – a ‘button’ on your computer (which runs a Python script), a custom Alexa or Google Home/Assistant command (as per our earlier sections) – or even a script that’s hosted ‘in the cloud’, such as in Amazon AWS or Google Cloud.
You could even be fancy and buy any sort of sensor (lets say a motion sensor), hooking this up to a Raspberry Pi – and then changing your Hue lights depending on what the sensor picks up.
Or you could go a step further and add a simple camera to your Pi setup, detect if your cat or dog walks past – and then change your Hue lights accordingly. I honestly can’t think of any genuine benefits to doing this, but the point is that you could do this if you wanted!
Which takes us onto…
I’ve mentioned the Raspberry Pi a few times. If you haven’t heard of it, it’s worth Googling: it’s basically a credit card sized computer. A fully-fledged computer, with more power than a $1,000 desktop a decade ago, which details for around $50.
You can plug-in a keyboard, mouse and a computer monitor if you’d like, and also attach it to your home network with a Wi-Fi adapter or an ethernet (network) cable.
You can then set it up to perform a range of home automation tasks, before unplugging the keyboard, mouse and monitor and leaving it run in the background without taking up much space or power.
This all might sound a bit pointless, but the beauty of the Pi is its flexibility. You could plug-in a range of cameras and sensors, and use it to control your house’s temperature (via your smart thermostat), your lightbulbs (via your smart bulbs) and a whole lot more.
This is because the Pi can easily be extended and have various Python scripts running on it. In this way, the Pi can become the central hub of your custom smart home.
Of course, if you’re a real beginner to technology and programming (but still want to start extending things), check out Home Assistant which can be run on a Raspberry Pi and extended as required. It might make a great starting point too.
Remote Airbnb landlords are nothing new – this is where you buy an Airbnb rental property, and then manage it remotely – by using a mix of local cleaning companies, along with smart door locks to allow access (to cleaners and guests) as required.
You could actually ‘hook up’ the two using Python (or any other programming language) and automatically allow access to your guests at the required times, when Airbnb notify you of their booking details.
Python is a fairly beginner-friendly language, but it’s still not simple to learn if you’ve never looked at programming/scripting languages before.
Automate the Boring Stuff is a great starting point, because it gives a lot of step-by-step instructions and it strives to never be too complicated.
You can follow the entire contents for free via that link, but you can also buy a physical book if you prefer that option. The author has also converted it into a Udemy course if you prefer video courses.
There are, however, dozens of other ways of learning Python – including really awesome free YouTube tutorials. The main two things to know are:
- Be sure to learn Python v3. Python v3 was originally released over a decade ago, but due to various reasons Python 2 was still used quite a lot – and hence you’ll still see some tutorials (written 3-4+ years ago) talking about Python 2. Just make sure that the tutorial you are following is up to date, and you’ll be fine.
- Don’t give up. Learning a programming language isn’t difficult, but it does seem that way at times. Keep at it. Keep practicing, both by following the course you’ve chosen and also with little scripts outside of that (when you reach a certain amount of knowledge).
I’m aware that this article has mainly focused on Python (albeit it mentions that Node.js can also be good for smart homes, especially since many Alexa skills tutorials are based on Node).
If you have heard good things about Node.js and you’re excited to learn that instead, please do. It can be used just as well for the vast majority of cases, and it’s like what we said earlier: a programming language is just a tool to achieve a goal.
After all, there are different brands of screwdrivers – but 99% of them are just fine for their purpose: screwing a screw into something. Node.js and Python are just different ‘brands’ (languages) which achieve the same goal: automate things around your house (in this case; they can do a whole lot more though!).
Python, Node.js, Java, C#… and around a dozen more languages can work just fine for smart home automation.
Right now, my prediction to learn Python (or Node.js or Java, etc!) for your smart home programming holds true.
I am, however, watching the Connected Home over IP project with interest. This is a collection of all major smart home providers, with the aim to develop a common standard for different smart home devices to speak to each other.
If the CHoIP project only supports a couple of programming languages, they could well be the ones to learn in the future. In reality, the project will probably release with support (SDKs) for multiple languages – but we’ll all find out later this year.