Megan is a Computing Writer at XDA Developers who has been writing about consumer technology since 2016. With a postgraduate degree in New Media journalism, she has always been passionate about diving deep into topics and writing about them in a way that makes them easier to understand for everyday consumers.
She runs her own blog called Tech Valkyrie and has bylines in Popular Mechanics South Africa, TFG Tech Mag, Memeburn, and Gearburn. She also worked at MakeUseOf as a Lead Editor.
In her spare time she plays video games and geeks out about the latest tech.
Since I started self-hosting, Home Assistant was at the top of my list of services to try out. The main reason I delayed implementing it is due to my lack of always-on hardware that could host a VM with Home Assistant. Home Assistant OS is my preferred method to host the service, since it supports add-ons.
However, I eventually decided to create a container with Home Assistant on my NAS so that I could at least get started with learning how to use the service. Although getting it up and running was extremely easy, I eventually encountered several challenges I hadn't expected.
Broken integrations
The integration I was most excited about didn't work

When I first started considering Home Assistant as a home automation solution, I checked whether it supported an integration with Xiaomi Home. This is because the majority of my smart devices, from my TV box to my bedroom fan, are from Xiaomi.
That said, I do have a few devices from other brands. So I wanted Home Assistant to act as the service that can connect them, especially since Google Home has been unreliable for me lately. But when I tried to add my Xiaomi Home devices to my Home Assistant instance, the built-in integration didn't work.
At the start, every time I tried to sign in, it rejected my credentials. I tried alternative solutions, like manual configuration and using an open-source app to extract my device tokens. However, this also didn't work.
Eventually, I realized that I had overlooked the fact that the supported list of hardware is actually quite short. Instead, I installed Home Assistant Community Store (HACS), then added Xiaomi Home as a custom integration using the company's GitHub resources. This finally allowed me to integrate the service into my instance. However, this required days of troubleshooting, research, and eventually stumbling upon a solution.
Ultimately, though, I am happy that I installed the HACS integration, as it expands the possibilities of what I can do with my Home Assistant instance. I may have never tried it out if the built-in Xiaomi integration hadn't been confusing. Given that it's also called "Xiaomi Home," I was confused why it didn't work.
The complications of changing APIs
API changes can also break automations

While I was still figuring out a way to integrate my Xiaomi devices, I decided to at least set up a weather automation so I could get more use out of the Home Assistant app on my smartphone. I settled on the AccuWeather integration to do this as a result of several articles and forum posts that recommended it, since it would allow me to pull data for tomorrow's forecast and send notifications for specific variables.
This is a relatively simple automation, but it relies on there being a weather service that provides a free API with support for the required data. I've set it up across different services, including IFTTT and Zapier, but the results are always mixed. My IFTTT automation stopped working, and Zapier doesn't support multi-step automations on my free account.
I managed to set up the AccuWeather integration and pull the data I needed to trigger a push notification on my phone. But not long after, AccuWeather retired its free API, meaning the integration no longer worked for me. As I explored other possible integrations, I saw that other weather services have had similar changes. OpenWeatherMap still has a free plan, but this requires you to register a credit card with the service. I'm not really comfortable with this, both in terms of sharing my financial details and concerns that my integration could use more of the free quota than expected, resulting in unexpected charges. Instead, it's recommended to switch to Meteorologisk or PirateWeather.
Eventually, I managed to get an automation running with the help of a colleague, which I wouldn't have been able to figure out myself due to my lack of familiarity with the syntax for Home Assistant templates. Which brings me to my next point...
The technical knowledge required
It's more complicated than it seems

One of the things I wish I had known about Home Assistant before using it is the technical knowledge required. While it's easy enough to set up a container, things become a lot more complex when it comes to custom integrations, templates, and scripts.
I knew that I would likely have to deal with different variables when setting up automations, but I didn't realize that you sometimes need to write scripts to pull the data you want. That weather notification I managed to set up? It required a template to pull the data I needed, because this data wasn't included as an entity I could use to add to an automation. This differed from the AccuWeather integration, which included a variety of entities I could use or disable.
I am planning on taking my time to explore what Home Assistant can do, but I realize it will take longer than I expected because of my lack of familiarity with template syntax. Blueprints could simplify this somewhat, but I like to understand the different variables before implementing them.
The overwhelming amount of data
My default dashboard had too much information

Despite not having many devices and integrations, I found that my default dashboard had an overwhelming amount of data when I first started adding services. For example, when I first added AccuWeather, it pulled a large number of entities that took up most of the dashboard. At first, I didn't realize that you weren't supposed to use this dashboard.
Similarly, when I got my Xiaomi devices working with Home Assistant, there were so many fields available that I struggled to figure out things. I do realize that this kind of extensive data is needed to create powerful, fine-tuned automations. But at the same time, I wish the default dashboard would let us choose what to surface before adding it to the dashboard.
I plan to get around this by setting up a new dashboard and only including the data I want surfaced at a glance. But this does take time, especially since integrations like Google Calendar require fiddling around with Google Cloud APIs. I later came across the automatically generated Home Assistant dashboards that you can use, but their existence didn't feel obvious at first.
My Home Assistant journey will take time
I honestly should've expected to come across more challenges when I set up Home Assistant, especially since I'm aware there are many things people oversimplify about self-hosting. After all, most self-hosted services involve a lot of troubleshooting and unexpected complications.
That said, I'm still excited about Home Assistant and everything I get working right feels like a win. If you're considering trying out Home Assistant for yourself, I recommend taking it slow and not putting pressure on yourself to get to grips with everything straight away.
