You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
3.3 KiB
90 lines
3.3 KiB
# Home Assistant Pending Updates Announcement
|
|
|
|
[Back to README](./README.md)
|
|
|
|
I also wanted The Briefing to announce if there's any pending Home Assistant updates to be installed, but I want to limit it down to only the Home Assistant Core, Home Assistant OS, and ESPHome.
|
|
|
|

|
|
|
|
So I came up with the following Template
|
|
|
|
In hindsight, I should probably put this into a for loop.
|
|
I'll do that for version 2 maybe....
|
|
|
|
### The Template
|
|
```jinja
|
|
{% if states('update.home_assistant_operating_system_update') == 'on' %}
|
|
There's a Home Assistant O S Update pending.
|
|
The Installed version is {{ state_attr('update.home_assistant_operating_system_update', 'installed_version') }}
|
|
The Available version is {{ state_attr('update.home_assistant_operating_system_update', 'latest_version') }}
|
|
{% endif %}
|
|
|
|
{% if states('update.home_assistant_core_update') == 'on' %}
|
|
There's a Home Assistant Core Update pending.
|
|
The Installed version is {{ state_attr('update.home_assistant_core_update', 'installed_version') }}
|
|
The Available version is {{ state_attr('update.home_assistant_core_update', 'latest_version') }}
|
|
{% endif %}
|
|
|
|
{% if states('update.esphome_update') == 'on' %}
|
|
There's an E S P Home Update pending.
|
|
The Installed version is {{ state_attr('update.esphome_update', 'installed_version') }}
|
|
The Available version is {{ state_attr('update.esphome_update', 'latest_version') }}
|
|
{% endif %}
|
|
```
|
|
### A Better Way
|
|
Let's try doing this with an Array instead
|
|
|
|
```jinja
|
|
|
|
|
|
{% set entities = {
|
|
# A List of Dictionaries
|
|
# The Dictionary Key is the `entity_id` in Home Assistant
|
|
# the Dictionary Value is what we want our Text to Speech engine to call it.
|
|
|
|
'update.home_assistant_operating_system_update': 'Home Assistant OS',
|
|
'update.home_assistant_core_update': 'Home Assistant Core',
|
|
'update.esphome_update': 'E S P Home',
|
|
|
|
} %}
|
|
|
|
{% for entity, name in entities.items() %}
|
|
{% if states(entity) == 'on' %}
|
|
There's a {{ name }} update pending.
|
|
The Installed version is {{ state_attr( entity, 'installed_version') }}
|
|
The Available version is {{ state_attr(entity, 'latest_version') }}
|
|
{% endif %}
|
|
{% endfor %}
|
|
```
|
|
This way, we can easily add or remove "Update" entity dictionaries to the `entities` array.
|
|
The `entity_id` is the "Key" of the dictionary, and we put a "Text to Speech" Compatible name in the Value.
|
|
|
|
|
|
### The Home Assistant Script
|
|
Here's the script I put into my `scripts.yaml` or you can just paste it into the Home Assistant UI when editing the script in YAML mode.
|
|
```yaml
|
|
alias: Announce Pending Updates
|
|
sequence:
|
|
- service: notify.alexa_media
|
|
data:
|
|
message: >-
|
|
{% set entities = {
|
|
'update.home_assistant_operating_system_update': 'Home Assistant OS Update',
|
|
'update.home_assistant_core_update': 'Home Assistant Core',
|
|
'update.esphome_update': 'E S P Home',
|
|
|
|
} %}
|
|
|
|
{% for entity, name in entities.items() %}
|
|
{% if states(entity) == 'on' %}
|
|
There's a {{ name }} pending.
|
|
The Installed version is {{ state_attr( entity, 'installed_version') }}
|
|
The Available version is {{ state_attr(entity, 'latest_version') }}
|
|
{% endif %}
|
|
{% endfor %}
|
|
target:
|
|
- media_player.dining_room_echo_plus
|
|
mode: single
|
|
icon: mdi:update
|
|
```
|