Home Assistant Part 2: The mobile app and remote control

Warning: This post is over a year old. The information may be out of date.

In part 1 of this series of blog posts about Home Assistant I got setup and created an automation.

In this post I’ll cover what I use most on the mobile app and how I use notifications where relevant to my automations.

When I started writing this series, I wrote the first post almost like a tutorial on how to set up Home Assistant and configure it, but I’ve realised that didn’t suit the style that I want to take with this series. I’m going to continue the series as less of a step-by-step guide and more an exploration on how I’m using Home Assistant. There’ll still be instructions on how to implement specific things I’ve worked on if I think that’ll be useful, but they’ll be sprinkled in here and there.

Equipment

There’s no new hardware needed for this part, though I will be using my phone (running iOS) to get the mobile app setup and a separate service called Nabu Casa to remotely connect to our Home Assistant install. An Android version of the app is also available, though I can’t comment on that as I haven’t used it.

Setup (App)

After installing the mobile app on my phone I ran into my first issue after just a couple of clicks, I tried continuing through the app setup and it crashed.

I tried again. It crashed.

Off to search for the problem I went! It turns out that version of the app had a bug that crashed when on WiFi and trying to look at an external_url - I wasn’t the only one having that issue either:

I disabled WiFi, and continued on. The mobile app connected to my home assistant instance once I added it as http://homeassistant.local:8123

I had some issues with notifications not appearing on my phone, and resetting the Push ID in the app (App Configuration -> Notifications) seemed to fix it.

Setup (Remote)

I’m using Home Assistant Cloud by Nabu Casa for my remote access. You can setup remote access yourself, but I don’t mind paying $5 a month to not have to worry about managing it all (at the minute, I might end up switching to something like Cloudflare eventually thanks to this guide on how to use Cloudflare with Home Assistant - but that’s something for future me to deal with)

I registered for Nabu Casa and started a free trial. I’d checked their docs and the remote config page contains information on the security of the setup. It makes sense, and I’m okay with them proxy-ing to my local Home Assistant setup.

With this setup and installed, I can access Home Assistant away from home - which is something I wanted to be able to do even if I’m not away from home at the minute…

Impressions

When I first started using it the app felt a little janky. But I completely understood why as it’s mostly just a web view of your Home Assistant instance and that leads to layout shifting and re-flows of content as things load in, as well as unstyled flashes until it picks up on your theme.

With updates to Home Assistant in the past couple of months though, the UI performance is dramatically better! I find the app feels a lot snappier now! There’s still re-flows, but it doesn’t feel as bad.

Usage

One thing I found through using it a little was that I felt the header took up quite a lot of space (minor thing, but hey…)

Image showing the header of the mobile dashboard inside Home Assistant

I discovered a custom header plugin (installed via Home Assistant Community Store (HACS) that allows custom header options!

Image showing the main options of the custom header plugin

Image showing the button options of the custom header plugin

Using these options I was able to get the menu down to this:

Image showing the custom, smaller header of the mobile dashboard inside Home Assistant

Much better! I’ve hidden the menu button (top left) that accesses the Home Assistant side navigation as that’s available with a swipe in from the left hand side, so I felt it unnecessary to have a button there for it as well.

I use the mobile app to do quick things, not to manage things extensively. Because of that, I’ve setup a main dashboard for mobile that includes things I’d want to do & see with quick access. Bigger buttons, fewer items, and being picky about what’s on any particular tab within that dashboard.

  • Home tab - has access and control of the main stuff I want to do at a glance.
  • Reptiles tab - control of the reptile setups and display of their temperature and humidity levels
  • Camera tab - access to displays of my IP cameras
  • Security sensors tab - display of door, window and motion sensors, and an
  • Announcement tab - allow broadcast of a message to the house (either to a specific media player device, or all media player devices)

I’ve set this dashboard to be the default inside the app for my user on this device:

Image showing the custom, smaller header of the mobile dashboard inside Home Assistant

(I’m also using the noctis-grey theme for Home Assistant because I like the way it looks)

I shan’t go into more depth on dashboards and the config / setup just yet, that’s for the next post!

Location

Using the mobile app also allows us to use our phones as device trackers for location. Using this I’m able to setup automations that run only when we’re not home.

For example, when we leave home, I want to turn on motion detection on my cameras, and turn off the lights (I’m notoriously bad at turning them off) - so I have an automation that runs with the following configuration:

- alias: Home [Leave]
  description: ''
  # This should run when either Matt or Emma leaves home
  trigger:
  - entity_id: person.matt
    from: home
    platform: state
    to: not_home
  - entity_id: person.emma
    from: home
    platform: state
    to: not_home
  # This should only run when we're *both* not home
  condition:
  - condition: and
    conditions:
    - condition: state
      entity_id: person.matt
      state: not_home
    - condition: state
      entity_id: person.emma
      state: not_home
  action:
  - scene: scene.all_lights_off
  - data: {}
    service: script.motion_detection_on_all
  - data:
      message: 💡 You've left home and the lights have been turned off for you
    service: notify.mobile_app_stark
  - data:
      message: 👀 Motion detection enabled
    service: notify.mobile_app_stark

Image showing the custom, smaller header of the mobile dashboard inside Home Assistant

Notifications

I’ve only played around with simple notifications so far (as you can see above). You can have actionable notifications but that’s not something I’ve played with (yet).

One thing I have realised is: not all notifications are relevant at all times. So I have conditional checks in some automations that send notifications only when they’re relevant.

For example, if the washing machine or dishwasher has finished and I’m not home (not that it’s particularly relevant given the current state of the world…) then it won’t send me a notification as I can’t do anything about it. Similarly, if I’m we’re both at home and motion is detected inside the house, there’s no point in notifying me of that, but if we’re away from home, that’s something I’d want to be notified of!

I’m very picky (in general, not just with Home Assistant) about my notifications too. So at first I setup notifications for a bunch of things (for example, when the reptiles lights were turned off at night) - but I realised that a notification like that provides me no real value and felt like a pointless interaction with my phone to dismiss it.

Conclusion

I’m happy with the mobile app, it’s not quite as slick as some other apps from some platforms, but it allows me to configure it to do what I want it to show, not what a device maker decides it should show.

Notifications are nice, I’m going to experiment with actionable notifications at somepoint soon I think.

There’s the ability to have things triggered by widgets (actions) in iOS too, which is something I can see myself playing with in the future for quick access to things I commonly do.

What I’m coming to realise (not specific to the mobile app) is that Home Assistant feels like a pile of Lego. Almost endless possibilities built upon very simple little parts, but it requires you to do some thinking on what you’re trying to achieve to put the blocks together. Because of that freedom there’s not always instructions as things are specific to your use case, but once you become familiar with how certain blocks work and interact with each other, you can combine them over and over to achieve some really cool things.

In the next post I’m going to explore some of the dashboards I’m using and the configuration for them!