Be Smart, Go Local.

How To Track Home Assistant Updates

Short beginner friendly guide, for tackling pending updates in Home Assistant. Including Actionable Notifications and dashboard design.

In this short guide we are going to show you how you can track your Home Assistant server available updates. This includes OS, core and supervisor updates as well as the Home Assistant Community Store (HACS). We’re going to create actionable notifications and some handy dashboard cards for tracking available updates.

This tutorial can be completely modified to suit you needs and wishes, but if you follow along you will be left with something like this dashboard in the end:

Track Home Assistant Updates Dashboard

Why track updates?

Home Assistant always notifies you in the settings tab whenever there are available updates. This includes the OS, Core and Supervisor addons. However, HACS is not tracked by default and updates are excluded from the settings screen. To view HACS updates, you need to open the HACS integration page.

The method we are going to show you, brings all updates in one place so you could track all of them and receive a notification on your mobile device whenever there is one available. We will also make them updatable with one click right from your dashboard.

We are going to base our design on Mushroom Cards, because we think they are easiest to work with, especially for beginners. We will provide examples for each card so you can simply copy-paste the YAML and just edit your entities. As an additional overview of our server, we will track the CPU, RAM and a couple of other things thorough the system monitor integration. First we need to enable a couple of things.

Enable System Monitor

The System Monitor platform, will provide us with a few useful sensors which we can use to provide an overview of our server at a glance from the dashboard. To enable this integration, add the following to your configuration.yaml file:

#System Monitor Integration
sensor:
  - platform: systemmonitor
    resources:
      - type: disk_use_percent
        arg: /config
      - type: disk_use
      - type: disk_free
      - type: memory_use_percent
      - type: memory_use
      - type: memory_free
      - type: swap_use_percent
      - type: swap_use
      - type: swap_free
      - type: load_1m
      - type: load_5m
      - type: load_15m
      - type: network_in
        arg: eth0
      - type: network_out
        arg: eth0
      - type: throughput_network_in
        arg: eth0
      - type: throughput_network_out
        arg: eth0
      - type: packets_in
        arg: eth0
      - type: packets_out
        arg: eth0
      - type: ipv4_address
        arg: eth0
      - type: ipv6_address
        arg: eth0
      - type: processor_use
      - type: processor_temperature
      - type: last_boot

These are all the available sensors in the System Monitor integration. You do not need to enable everything, just delete or comment any sensor you do not wish added. It’s also good practice to use includes, to keep your configuration file under control.

Please note, this integration is not required for our purposed tutorial here, we are just going to use some of its provided sensors as a nice information overview placed as chips in some of the mushroom cards (CPU/RAM/Disk usage).

Enable Addon Update Entities

By default, an update entity is enabled for each Supervisor addon. There are a few additional sensors we can enable to be able to use in notifications and in dashboard design. For example, CPU usage, Memory usage, version and a binary_sensor which states if the Addon is running or not.

To enable sensor for a specific addon, Open Settings > Devices & Services > Supervisor > [Addon]. In this window, you will notice only an update entity is enabled, and everything else is disabled:

Track Home Assistant Updates Enable Addon Sensors

You click on the sensor you with to enable, such as Newest Version, and enable it in the advanced tab:

You could give it a name and an icon, but it’s not really necessary. All customization will be done later in our dashboard design. You click UPDATE and Home Assistant notifies you that the sensor will be added in 30sec.

Enable HACS Update Entities

HACS updates are not available as a separate entity for each integration. Instead, they are aggregated in one main sensor called sensor.hacs which aggregates available updates simply as a number, i.e. 1 pending update(s).

To enable update entities for each integration, we need to enable HACS Experimental Features.
Open Settings > Devices & Services > click Configure on HACS. This will present a dialog window, in which you check the Experimental Features box and click submit.

Track Home Assistant Updates Enable Experimental Features

A confirmation window will appear, after which you need to restart Home Assistant. When Home Assistant has booted back up, if you head to Developer Tools > States window, you can see all the new update entities:

We can use these entities to create our notifications and dashboard overview cards.

IMPORTANT: Enabling Experimental Features in HACS changes a few other things as well. For example, it changes the UI of HACS to a simple list instead of the Integrations/Frontend design we are already used too. This is purely a cosmetic change, so no need to panic.

Creating Actionable Notifications

Home Assistant can notify you on your mobile device whenever an update is available. Whether this is necessary, it’s up to you to decide. User CentralCommand has shared a pretty awesome blueprint for quick setting of your actionable notifications for available updates. To use is, press the import button bellow:

Once added, you create a new automation based on this blueprint. Head over to Settings > Automations & Scenes > + Create Automation > Use a Blueprint > Update notifications:

Track Home Assistant Updates Blueprint

The variables are pretty self explanatory, you select your update entities, your notification device (mobile phone), set time and icon. Whenever there is an update available for the monitored entities, Home Assistant will notify you on your phone:

Creating an Overview Dashboard

We are basing our design on Mushroom Cards (Guide: Part1, Part2), so if you wish to copy-paste the YAML code directly, you can install them via HACS.

Creating a Home Assistant Server Update Card

This card will allow you to overview the Operating System, Core and Supervisor versions of Home Assistant and update them with the click of a button. As a chips header, we’ve placed a few entities such a CPU usage and temp, RAM usage, Disk space and network inbound traffic. You can modify these as you please:

Templating is used throughout the card to achieve a little more customization. The icons are dynamic, so whenever an update is available, the badge and color will change to orange/red to notify you about pending updates.
You can click the download button directly, HA will make a backup and update the corresponding entity.

Note: Theme is reeder_dark by dev hekm77.

#Home Assistant Server Update Card
type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: Home Assistant Server
    subtitle: >
      Core v{{ state_attr('update.home_assistant_core_update',
      'installed_version') }} - OS v{{
      states('sensor.home_assistant_operating_system_version') }} - Supervisor
      v{{ state_attr('update.home_assistant_supervisor_update',
      'installed_version') }}
  - type: custom:mushroom-chips-card
    chips:
      - type: entity
        entity: sensor.processor_temperature
        icon_color: orange
      - type: entity
        entity: sensor.processor_use
        icon_color: blue
      - type: entity
        entity: sensor.memory_use_percent
        icon_color: orange
      - type: entity
        entity: sensor.disk_use_percent_config
        icon_color: deep-purple
      - type: entity
        entity: sensor.network_in_eth0
        icon_color: green
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-update-card
        entity: update.home_assistant_core_update
        name: HA Core
        show_buttons_control: true
        icon_type: entity-picture
      - type: custom:mushroom-template-card
        primary: Version Information
        secondary: >-
          Installed v{{ state_attr('update.home_assistant_core_update',
          'installed_version')}}

          Latest v{{ state_attr('update.home_assistant_core_update',
          'latest_version')}}
        icon: mdi:package-variant-closed
        multiline_secondary: true
        fill_container: true
        entity: update.home_assistant_core_update
        tap_action:
          action: more-info
        icon_color: |-
          {% if is_state('update.home_assistant_core_update', 'on') %}
            orange
          {% else %}
            green
          {% endif %}
        badge_color: |-
          {% if is_state('update.home_assistant_core_update', 'on') %}
            red
          {% else %}
            blue
          {% endif %}
        badge_icon: |-
          {% if is_state('update.home_assistant_core_update', 'on') %}
            mdi:help
          {% else %}
            mdi:check-bold
          {% endif %}
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-update-card
        entity: update.home_assistant_operating_system_update
        name: HA OS
        show_buttons_control: true
        icon_type: entity-picture
      - type: custom:mushroom-template-card
        primary: Version Information
        secondary: >-
          Installed v{{
          states('sensor.home_assistant_operating_system_version')}}

          Latest v{{
          states('sensor.home_assistant_operating_system_newest_version')}}
        icon: mdi:package-variant-closed
        multiline_secondary: true
        fill_container: true
        entity: update.home_assistant_operating_system_update
        tap_action:
          action: more-info
        icon_color: >-
          {% if is_state('update.home_assistant_operating_system_update', 'on')
          %}
            orange
          {% else %}
            green
          {% endif %}
        badge_color: >-
          {% if is_state('update.home_assistant_operating_system_update', 'on')
          %}
            red
          {% else %}
            blue
          {% endif %}
        badge_icon: >-
          {% if is_state('update.home_assistant_operating_system_update', 'on')
          %}
            mdi:help
          {% else %}
            mdi:check-bold
          {% endif %}
  - type: horizontal-stack
    cards:
      - type: custom:mushroom-update-card
        entity: update.home_assistant_supervisor_update
        name: HA Supervisor
        show_buttons_control: true
        icon_type: entity-picture
      - type: custom:mushroom-template-card
        primary: Version Information
        secondary: >-
          Installed v{{ state_attr('update.home_assistant_supervisor_update',
          'installed_version')}}

          Latest v{{ state_attr('update.home_assistant_supervisor_update',
          'latest_version')}}
        icon: mdi:package-variant-closed
        multiline_secondary: true
        fill_container: true
        entity: update.home_assistant_core_update
        tap_action:
          action: more-info
        icon_color: |-
          {% if is_state('update.home_assistant_supervisor_update', 'on') %}
            orange
          {% else %}
            green
          {% endif %}
        badge_color: |-
          {% if is_state('update.home_assistant_supervisor_update', 'on') %}
            red
          {% else %}
            blue
          {% endif %}
        badge_icon: |-
          {% if is_state('update.home_assistant_supervisor_update', 'on') %}
            mdi:help
          {% else %}
            mdi:check-bold
          {% endif %}

Creating an Addon update card

To create something similar for addons, we need to alter the card design a little bit. Again, you can include any information you wish here. This is just an example containing most entities for those who would like to recreate it.

In this card, we add the Running binary_sensor in the chips header. CPU and RAM usage are listed, as well as current version information. The update entity is placed at the body of the card, so you can update with a click:

#Addon Update Card - ZigBee2MQTT
type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: ZigBee2MQTT
    subtitle: >-
      Installed v{{ states('sensor.zigbee2mqtt_version') }} - Latest v{{
      states('sensor.zigbee2mqtt_newest_version') }}  
  - type: custom:mushroom-chips-card
    chips:
      - type: entity
        entity: binary_sensor.zigbee2mqtt_running
        icon_color: green
      - type: entity
        entity: sensor.zigbee2mqtt_version
        icon_color: green
        icon: mdi:package-variant-closed
      - type: entity
        entity: sensor.zigbee2mqtt_cpu_percent
        icon_color: blue
      - type: entity
        entity: sensor.zigbee2mqtt_memory_percent
        icon_color: orange
  - type: custom:mushroom-update-card
    entity: update.zigbee2mqtt_update
    show_buttons_control: true
    icon_type: entity-picture
    layout: horizontal

Creating a HACS update card

HACS update entities are a little different, as they are not enabled by default. After enabling them using Experimental Features, we can use them in the card the same way. Considering users tend to have a lot of HACS integrations, we suggest adding them in a list:

When an update is available, the card will turn orange to give you a visual notification. The download button will be clickable and you can update the integration right from the card. The release changelog template chip, will take you to the HACS releases page. Here, you can read the changes if you want, to make sure there are no breaking changes which affect you.

#HACS Updates Card
type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: HACS Updates
    subtitle: >-
      Installed v{{ state_attr('update.hacs_update', 'installed_version') }} -
      Latest v{{ state_attr('update.hacs_update', 'latest_version') }}
  - type: custom:mushroom-chips-card
    chips:
      - type: template
        icon: mdi:web
        icon_color: blue
        content: Release Changelog
        tap_action:
          action: url
          url_path: https://github.com/hacs/integration/releases
      - type: template
        entity: update.hacs_update
        content: Installed v{{ state_attr('update.hacs_update', 'installed_version') }}
        icon_color: green
        icon: mdi:package-variant-closed
        tap_action:
          action: none
      - type: template
        entity: update.hacs_update
        content: Latest v{{ state_attr('update.hacs_update', 'latest_version') }}
        icon_color: orange
        icon: mdi:package-variant-closed
        tap_action:
          action: none
  - type: custom:mushroom-update-card
    entity: update.hacs_update
    layout: horizontal
    show_buttons_control: true
  - type: custom:mushroom-update-card
    entity: update.scheduler_component_update
    show_buttons_control: true
    icon_type: icon
    layout: horizontal
    name: Scheduler Component
  - type: custom:mushroom-update-card
    entity: update.simple_thermostat_update
    show_buttons_control: true
    name: Simple Thermostat
    layout: horizontal
  - type: custom:mushroom-update-card
    entity: update.browser_mod_update
    name: Browser Mod
    layout: horizontal
    show_buttons_control: true
  - type: custom:mushroom-update-card
    entity: update.button_card_update
    name: Button Card
    layout: horizontal
    show_buttons_control: true

Summary

These are just some examples of tackling pending updates in Home Assistant. Power users know they are very frequent and often contain breaking changes, so its good practice always to glance the dialog window to make sure they don’t affect you. If you would like to see more simple guides like these, consider buying us a coffee.

22 thoughts on “How To Track Home Assistant Updates”

  1. Excellent article. I didn’t know about that experimental feature in HACS. I found a much simpler way of showing available updates using the auto-entries card. You can remove the state: ‘on’ line if you want to show all update entities. It does combine all of the types of updates into one list, so may not work if you want to seperate them, though there may be some other filtering options that can do it.

    type: custom:auto-entities
    card:
    type: vertical-stack
    card_param: cards
    filter:
    include:
    - entity_id: update.*
    state: 'on'
    options:
    type: custom:mushroom-update-card
    show_buttons_control: true
    layout: horizontal
    entities:
    - this.entity_id

    • Thank you Justin, this is a great suggestion!

      For readers stumbling upon this comment: Auto-entities filters certain entities based on an exclusive or inclusive variable. In this case, Justin used an entity glob (*) to include all entities in the update domain with a state “on”, meaning pending update.
      This auto-populates a list with updates in your dashboard.

      Thanks again,
      Cheers.

  2. This is a bit rough, but I have found that addon updates always thend to have a entity_picture attribute set, and HACS updates always have a name: null attribute. Using this I was able to filter each type of update into ist’s own list. Sorry for the lack of indentation.

    For addon updates

    type: custom:auto-entities
    card:
    type: vertical-stack
    card_param: cards
    filter:
    include:
    - entity_id: update.*
    state: 'on'
    attributes:
    entity_picture: '*'
    options:
    type: custom:mushroom-update-card
    show_buttons_control: true
    layout: horizontal
    entities:
    - this.entity_id

    and HACS updates.

    type: custom:auto-entities
    card:
    type: vertical-stack
    card_param: cards
    filter:
    include:
    - entity_id: update.*
    state: 'on'
    attributes:
    title: null
    options:
    type: custom:mushroom-update-card
    show_buttons_control: true
    layout: horizontal
    entities:
    - this.entity_id

    • This is a clever way of handling the Auto-entities card. For most users, there may not even be a reason to separate them into categories. Most of them would want the list to populate only when the state is “on” i.e. when an update is available.
      Thanks

  3. After enabling the experimental features, when accessing HACS from the sidebar I only see the my downloaded integrations. I can’t seem to get back to the HACS entry page that lists Integrations, Frontend, Automation, Add-ons, and About. Any idea how I resolve this?

    • Hey David,

      Navigate to Setting > Devices & Services > Devices (Tab)
      Search for Home Assistant Core and enable the update entity (it’s disabled by default).

      Cheers

  4. Hi,
    I seem to have come across an issue trying to enable Home Assistant Supervisor in the “entities” tab.
    The only entity I have is “update.home_assistant_supervisor_update”, these show the installed version and latest version, but these don’t appear to exist as entities on their own.
    Did HA change something?
    Thanks,
    James

    • Hello James,

      Navigate to Settings > Devices & Services > Devices Tab.
      Find the Home Assistant Core, Home Assistant Supervisor and Home Assistant Operating System.
      When click the Supervisor for example, there is a hidden and disabled entity under Configuration.
      Enable it and it will appear after a while in your list of entities, reporting the latest version and “update available”

      Cheers

      • I got to be tired or something here…

        I can not for the world find a) Supervisor or b) the hidden and disabled entity…

        Well I can find the “Home Assistant Supervisor” under “Settings > Devices & Services > Devices”. And well there are no options there…

        And I have no sight of the “Settings > Devices & Services > Supervisor > [Addon].” – it is simply not there (and no I do not run Core – I run ” Home Assistant 2023.7.2 Supervisor 2023.07.1 Operating System 10.3 Frontend-version: 20230705.1 – latest ” – so that can’t be it either…

        Got to be tired or something is simply not there anymore…

        • When you navigate to Settings > Devices & Services > Home Assistant Supervisor > Services
          You will get a list of all addons under the supervisor. Select the add-on you with to enable additional entities for and click “X entities now shown”.
          Enable what you need and save.
          Cheers

  5. Hi,
    I modified the Zigbee2MQTT one with the Edge entity, but somehow in the header I can’t get it to show the installed and latest version it only shows ”Installed vedge – Latest vedge”
    maybe you can see what’s wrong? I have activated all the sensors

    this is the yaml I used :

    type: vertical-stack
    cards:
    - type: custom:mushroom-title-card
    title: ZigBee2MQTT
    subtitle: >-
    Installed v{{ states('sensor.zigbee2mqtt_edge_version') }} - Latest v{{
    states('sensor.zigbee2mqtt_edge_newest_version') }}
    - type: custom:mushroom-chips-card
    chips:
    - type: entity
    entity: binary_sensor.zigbee2mqtt_edge_running
    icon_color: green
    - type: entity
    entity: sensor.zigbee2mqtt_edge_newest_version
    icon_color: green
    icon: mdi:package-variant-closed
    - type: entity
    entity: sensor.zigbee2mqtt_edge_cpu_percent
    icon_color: blue
    - type: entity
    entity: sensor.zigbee2mqtt_edge_memory_percent
    icon_color: orange
    - type: custom:mushroom-update-card
    entity: update.zigbee2mqtt_edge_update
    show_buttons_control: true
    icon_type: entity-picture
    layout: horizontal

    • Hey, what you are seeing is correct. The dev branch is labelled version: edge in the addon store which abbreviates to vedge in your code. I suggest removing the V for a neater look.
      Cheers

      Cheers

  6. Some minor updates to HA OS – so it shows the right values…

    type: vertical-stack
    cards:
    - type: custom:mushroom-title-card
    title: Home Assistant Server
    subtitle: >
    Core v{{ state_attr('update.home_assistant_core_update',
    'installed_version') }} - OS v{{
    state_attr('update.home_assistant_operating_system_update',
    'installed_version') }} - Supervisor v{{
    state_attr('update.home_assistant_supervisor_update', 'installed_version')
    }}
    - type: custom:mushroom-chips-card
    chips:
    - type: entity
    entity: sensor.processor_temperature
    icon_color: orange
    - type: entity
    entity: sensor.processor_use
    icon_color: blue
    - type: entity
    entity: sensor.memory_free
    icon_color: orange
    - type: entity
    entity: sensor.disk_use_percent
    icon_color: deep-purple
    - type: entity
    entity: sensor.network_in_eth0
    icon_color: green
    - type: horizontal-stack
    cards:
    - type: custom:mushroom-update-card
    entity: update.home_assistant_core_update
    name: HA Core
    show_buttons_control: true
    icon_type: entity-picture
    - type: custom:mushroom-template-card
    primary: Version Information
    secondary: >-
    Installed v{{ state_attr('update.home_assistant_core_update',
    'installed_version')}}

    Latest v{{ state_attr('update.home_assistant_core_update',
    'latest_version')}}
    icon: mdi:package-variant-closed
    multiline_secondary: true
    fill_container: true
    entity: update.home_assistant_core_update
    tap_action:
    action: more-info
    icon_color: |-
    {% if is_state('update.home_assistant_core_update', 'on') %}
    orange
    {% else %}
    green
    {% endif %}
    badge_color: |-
    {% if is_state('update.home_assistant_core_update', 'on') %}
    red
    {% else %}
    blue
    {% endif %}
    badge_icon: |-
    {% if is_state('update.home_assistant_core_update', 'on') %}
    mdi:help
    {% else %}
    mdi:check-bold
    {% endif %}
    - type: horizontal-stack
    cards:
    - type: custom:mushroom-update-card
    entity: update.home_assistant_operating_system_update
    name: HA OS
    show_buttons_control: true
    icon_type: entity-picture
    - type: custom:mushroom-template-card
    primary: Version Information
    secondary: >-
    Installed v{{
    state_attr('update.home_assistant_operating_system_update',
    'installed_version')}}

    Latest v{{ state_attr('update.home_assistant_operating_system_update',
    'latest_version')}}
    icon: mdi:package-variant-closed
    multiline_secondary: true
    fill_container: true
    entity: update.home_assistant_operating_system_update
    tap_action:
    action: more-info
    icon_color: >-
    {% if is_state('update.home_assistant_operating_system_update', 'on')
    %}
    orange
    {% else %}
    green
    {% endif %}
    badge_color: >-
    {% if is_state('update.home_assistant_operating_system_update', 'on')
    %}
    red
    {% else %}
    blue
    {% endif %}
    badge_icon: >-
    {% if is_state('update.home_assistant_operating_system_update', 'on')
    %}
    mdi:help
    {% else %}
    mdi:check-bold
    {% endif %}
    - type: horizontal-stack
    cards:
    - type: custom:mushroom-update-card
    entity: update.home_assistant_supervisor_update
    name: HA Supervisor
    show_buttons_control: true
    icon_type: entity-picture
    - type: custom:mushroom-template-card
    primary: Version Information
    secondary: >-
    Installed v{{ state_attr('update.home_assistant_supervisor_update',
    'installed_version')}}

    Latest v{{ state_attr('update.home_assistant_supervisor_update',
    'latest_version')}}
    icon: mdi:package-variant-closed
    multiline_secondary: true
    fill_container: true
    entity: update.home_assistant_core_update
    tap_action:
    action: more-info
    icon_color: |-
    {% if is_state('update.home_assistant_supervisor_update', 'on') %}
    orange
    {% else %}
    green
    {% endif %}
    badge_color: |-
    {% if is_state('update.home_assistant_supervisor_update', 'on') %}
    red
    {% else %}
    blue
    {% endif %}
    badge_icon: |-
    {% if is_state('update.home_assistant_supervisor_update', 'on') %}
    mdi:help
    {% else %}
    mdi:check-bold
    {% endif %}

  7. If you are any good with HA and scripting you don’t need HACS. In fact, when I tested it it brought bugs to my very stable system. Furthermore, when you have your HA node connected to the Internet, HACS may introduces a lot of security issues.
    Ergo: Not recommended in my book.

    • Fair enough, it’s possible but not probable.
      To develop all the things already available in HACS you would need another life in front of the keyboard.
      This community is great, I’ve been doing Home Assistant since forever and never heard of a security hole in HACS.
      It’s a personal choice.

Comments are closed.