Getting started with Home Assistant

A screenshot of Home Assistant

A recent project of mine has been to set up Home Assistant, as a way of controlling the various smart devices in our home.

From bridge to assistant

You may remember, back in February, that I had dabbled with Homebridge, a more basic tool which was designed to bridge devices into Apple’s HomeKit universe which aren’t otherwise supported.

I’ve ditched Homebridge, as it didn’t really do what I wanted it to do. If you want to primarily use Apple’s Home ecosystem, but have a few devices which don’t support it, then it’s great. But that doesn’t really apply to our home – although I’m an iPhone and iPad user, I no longer have a working Mac and so I use a Windows desktop, and my wife uses Android devices. Consequently, the only device that we own which natively supports HomeKit is our LG smart TV.

Home Assistant is essentially a replacement for Apple Home, Google Home, Samsung SmartThings and whatever Amazon’s Alexa provides. That means that it provides its own dashboard, and lots of possibilities for automations. But instead of your dashboard being hosted on a cloud server somewhere, it’s on a device in your own home.

Setting it up

Like with Homebridge and HOOBS, you can buy a Home Assistant hub with the software pre-installed. If you already have a device, such as a spare Raspberry Pi, then you can either install HAOS (a complete operating system based around Home Assistant) or just install Home Assistant on an existing system. I chose the latter, and now I have Home Assistant sat on the same device as my Plex Server, using Ubuntu Core and the relevant Snap package.

Once set up, Home Assistant will auto-discover some devices; it immediately found both my ADSL router and my Google Wifi hub using UPnP. You can then add devices yourself. Home Assistant supports way, way more devices than its competitors, due to its hobbyist nature. For example, there’s an IPP integration which means that you can view your printer’s status, including how much ink is left. Despite it being a ‘smart device’ of sorts, Google Home won’t show this in its app. You can also bring in web services like Google Calendar and last.fm.

Some integrations are easier to set up than others though. In most cases, one of the first instructions for setting up an integration is ‘sign up for a developer account with your device manufacturer’. Whilst the instructions are usually quite clear, you’ll find yourself spending lots of time copying and pasting OAuth keys and client secrets to be able to connect your devices. In the case of my Nest Thermostat, this included paying a non-refundable $5 USD charge to access the relevant APIs.

It should also be noted that, whilst Home Assistant does offer integration with Apple HomeKit, I’ve yet to get this to work. Which is ironic as this was the reason why I previously used HomeBridge.

Remote access

Another thing which took some trial and error to get right was enabling remote access. If you want to be able to view and control your devices when you’re out of the home, then there’s a few additional steps you’ll need to complete. These include:

  • Configuring port forwarding on your router
  • Setting up a DNS server

Home Assistant recommends DuckDNS, which is pretty simple and seems to work okay, but again it’s something that requires some technical know-how.

One limitation of using Home Assistant as a Snap on Ubuntu Core is that you can’t use addons, so setting up DuckDNS meant manually editing Home Assistant’s configuration.yaml file. Indeed, some integrations require this, and so it’s worth backing up this file regularly. You can, however, install a separate snap which enables the Home Assistant Community Store (HACS), and this allows you to install additional (but less-well tested) integrations. I initially couldn’t get this to work, but managed to install it literally whilst writing this paragraph.

If you’re willing to pay, then for £6.50 per month, you can get Home Assistant Cloud. As well as providing an income for Home Assistant’s developers, it offers an easier and secure remote access solution, and integrates Google Assistant and Alexa.

Privacy matters

It should also be noted that Home Assistant has a greater focus on privacy. By hosting an IoT hub yourself, you can limit how much data your devices send to cloud servers, which may be in places like China with markedly different attitudes to privacy. Indeed, the integration with my Solax inverter (for our solar panels) connects directly to the inverter, rather than the Solax Cloud service. It’s therefore not surprising that many of the Home Assistant developer team are based in Europe.

Looking to the future, I’m hoping more of my devices will support Matter – indeed, this week, Matter 1.2 was released, adding support for devices like dishwashers. Theoretically, our existing Google Home devices can all be Matter hubs, but none of my other devices yet support it, and may never will. Home Assistant can work with Matter devices, if you buy their SkyConnect dongle, and again, it will mean that more of your device communications can be done within in your home and not using the cloud. That should be faster, and better for privacy.

Overall, I’m quite happy Home Assistant, even though it’s taken a long time to get every device added and some trial and error. I appreciate being able to see (almost) all of my devices on one dashboard, and it feels like I have more oversight and control over the smart devices in our home. I hope that, with greater Matter support, it’ll become easier for less-experienced users to use in future.

The times, they are upgrading

An AI generated image of a superhero emerging from a server cabinet, generated using Microsoft's Bing AI Image Creator

Hello – if you can read this, then the server upgrade worked!

I’ve wiped the previous server image (yes, I remembered to do more than one type of backup this time), and installed a freshly upgraded version of Linux. This means it’s running on Debian 12 (codenamed ‘bookworm’), and version 12 of Sympl. Sympl is a set of tools for Debian that makes managing a web server remotely a little easier, and is forked from Symbiosis which was originally developed by my hosting company Bytemark.

Going nuclear and starting from a fresh installation was for two reasons:

  1. The next version of WordPress, which will be 6.4, will have a minimum recommended PHP version of 8.1. This server was running version PHP 7.3, and whilst I’m sure future versions would work up to a point, it’s a good opportunity to upgrade.
  2. I’ve had a few issues with the previous installation. The FTP server software never seemed to work correctly, and the database (MariaDB) would lock up almost every time I posted a new blog post. Hopefully, this won’t happen anymore.

As this is a fresh WordPress installation, there may be a few things which don’t quite work yet. I’ve imported the existing blog posts and pages, and the theme is mostly the same, but I need to re-install the plugins and probably need to amend some settings. I’ll sort these issues out over the next few days.

Finding peace

A photo of a rubbish bin at the now-demolished Bolton West Services on the M61. It says 'Litter P eas'.

There are some of you who have been subscribed to this blog’s feed for many, many years. I started writing a blog way back in 2002 – back when Web 2.0 was just starting to become a thing – and kept it going for almost 20 years.

And then a botched server upgrade resulted in everything being wiped, including my backups.

It had been my intention to try and salvage what I could; after all, many of my old blog posts should be in the Web Archive, and in other places across the internet too. But working full-time and being a dad just doesn’t leave much spare time, and I tend to prefer to use my free time to consume media (mostly reading) rather than producing new blog posts, or, more pertinently, bringing back old ones.

But it isn’t just a time issue. If I ended up taking a sabbatical from work, or parental leave, then I still wouldn’t go back to re-fill this blog’s arhcives. I’ve made a decision that what happened has happened, and I’m drawing a line under it.

There were some good blog posts over the years, that generated a lot of comments and links at the time. Others highlighted key points in my life; graduating university, relationship milestones, becoming a father and so on. But, my reasons for not undertaking blog archaeology are as follows:

I don’t stand by some of the things I wrote

I wrote more than one post about enjoying the DVDs of various sitcoms written by a well-known comedy writer in the 1990s and 2000s. Unfortunately, said comedy writer, who I am not going to name, is now a major figure in the pushback against rights for trans* people in the UK, and as a member of the LGBTQ+ community myself, I can’t support that. This is just one example, but my opinions have changed over the years, and I don’t really want to go back and revisit what I’ve written on some topics. Especially things like my changing relationship with Apple products, and politics.

It’s worth noting that, when I started my blog in 2002, I was only 17 – I’m now fast approaching my forties, and with that comes more wisdom and knowledge of how the world works, and being aware of my priviledges as a white, middle class cisgendered male person.

I also don’t think that people really want to read about how much alcohol I was drinking in my early years at university, or the regular apologies for not blogging as often as I thought I should.

There are things I wrote about that I don’t want in the public domain anymore

Being a parent and the responsibilities it brings changes you as a person – just ask a neuroscientist. Early on, I talked about and shared photos of our child in a way that I wouldn’t do now; nowadays, I try to keep much of their identity off the internet – including their name and gender. They haven’t consented to that information being out there, and are too young to understand the implications of consent. And I wouldn’t want them to read things written about them when they’re older that might upset them.

In my previous relationship, between 2005 and 2009, we agreed that I would only use a pseudonym when talking about my partner, and though we separated nearly 15 years ago, I still consider myself bound by the conditional consent that we agreed at the time. Maybe when our child is older, we could agree something similar.

Some stuff is really out of date

Early on, I tracked the development of the development of the web browser that would become Mozilla Firefox, and blogged about the changes in each beta release in great detail, up to the release of version 1.0 in 2004. But after almost 20 years, so much has changed; the screenshots I took are probably all gone too, and so I don’t think there’s a lot to be gained by bringing those old posts back.

Because I’ve always had an interest in technology, there are many old posts that I’ve written that are outdated. I’m sure some contain advice which, if followed today, would be actively detrimental rather than helpful.

Perhaps, if I somehow managed to get the time and resources to bring back the really good posts, it would be worthwhile. But there would be a lot of poor quality content to sift through, and I certainly wouldn’t want to bring anything back without reading it first.

Seeing as how the likelihood of me having that time is low, then I have had to make peace with the fact that all that content is going to have to remain scattered to the digital winds of the internet. And that’s okay.

An update (January 2024)

Okay so I’ve already gone back on my word and started bringing back some old posts. My aim is to re-instate blog posts that are still getting traffic – I’m tracking dead links in WordPress and Google Site Console, and if they’re linking to things that still have value, I’ll re-instate them. I’m also aiming to have at least one post from each month, going back to January 2002. Overall, I may bring back about 1-2% of what was here before.

Being more or less social

A screenshot of my profile on the Bluesky social network.

Good grief, has it really been almost 6 months since my last blog post?

I mostly dropped by to link out to a couple of additional social media profiles that you can follow, should you wish to. I appreciate that many people are leaving Twitter/X/whatever Elon Musk decides it’s called this week, and not everyone is leaving in the same direction.

Firstly, I’ve just signed up to Bluesky. It’s invite only at the moment, so I doff my cap to a work colleague who gave me her first invite. I’ve just made the one post there and I’ll see how I get on with it.

I managed to – eventually – get my account verified there, which is how I show as ‘@neilturner.me.uk’ and not a bsky.social address. It should have been straightforward, but over the years my DNS settings have seemingly got out of sync, and this has required some fixing. Hopefully everything works now.

And I’m on Meta’s Threads, which I joined on launch day back in August. Again, I’ve just made the one post there. It doesn’t look like many people that I followed on Instagram are active on Threads – my feed seems to basically be the same 5 people.

My primary social media presence is still on Mastodon. So, if you want to hear from me in between my massive gaps in blogging, that’s probably your best bet. I joined Mastodon back in November 2022, and I feel most-settled there.

Perhaps if Bluesky and/or Threads open up a bit more, I might cross-post things, but we’ll see.