From 52d9986aacc57d3061f8d945690da47aeffddfb5 Mon Sep 17 00:00:00 2001 From: Stuart Lamont Date: Wed, 31 May 2023 10:51:10 +1000 Subject: [PATCH] Adding syntax highlighting to MarkDown --- ... your Smart Home - YouTube Description.txt | 36 ++++++++++ pending updates.md | 63 ++++++++++++++++++ pendingUpdate.png | Bin 0 -> 40789 bytes time.md | 46 +++++++++++-- weatherWind.md | 14 ++-- 5 files changed, 146 insertions(+), 13 deletions(-) create mode 100755 Render/HMAV-184-Get a Morning Briefing from your Smart Home - YouTube Description.txt create mode 100644 pendingUpdate.png diff --git a/Render/HMAV-184-Get a Morning Briefing from your Smart Home - YouTube Description.txt b/Render/HMAV-184-Get a Morning Briefing from your Smart Home - YouTube Description.txt new file mode 100755 index 0000000..c782772 --- /dev/null +++ b/Render/HMAV-184-Get a Morning Briefing from your Smart Home - YouTube Description.txt @@ -0,0 +1,36 @@ +Get a Morning Briefing from your Smart Home + +*** Links *** + +Hive Mind Automation on YouTube: https://www.youtube.com/c/HiveMindAutomation + +*** Support the Channel*** +Buy Me a Coffee: https://buymeacoffee.com/HiveMindAuto + +*** Find Hive Mind Automation on Social Media *** + +Twitter: https://twitter.com/HiveMindAuto +Instagram: https://www.instagram.com/HiveMindAutomation/ +Facebook: https://www.facebook.com/HiveMindAutomation + +*** Affiliate Links *** +*** These links help the channel by providing a commission on purchases + + +*** TIMESTAMPS *** + +0:00 Intro + + +*** Helpful Links *** + +Home Assistant: https://www.home-assistant.io/ +Raspberry Pi: https://www.raspberrypi.org/ +Balena Etcher: https://www.balena.io/etcher/ + +Home Assistant for iOS: https://apple.co/34JATce +Home Assistant for Android: https://bit.ly/30VUsNh + +*** CREDITS *** + +Music: https://www.purple-planet.com diff --git a/pending updates.md b/pending updates.md index e69de29..32424d6 100644 --- a/pending updates.md +++ b/pending updates.md @@ -0,0 +1,63 @@ +# Home Assistant Pending Updates Announcement + +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. + +![Home Assistant OS Pending Update](pendingUpdate.png) + +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') == 'off' %} +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') == 'off' %} +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') == 'off' %} +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 %} +``` + +### 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: >- + {% 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 %} + target: + - media_player.dining_room_echo_plus +mode: single +icon: mdi:update +``` diff --git a/pendingUpdate.png b/pendingUpdate.png new file mode 100644 index 0000000000000000000000000000000000000000..2a65f3a600788c861ccfa237f27b4b6c0cd07c1e GIT binary patch literal 40789 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 ZW9-~{^3M$h%@zhA@O1TaS?83{1OUY%$<+V= literal 0 HcmV?d00001 diff --git a/time.md b/time.md index 4e5c8af..6340bba 100644 --- a/time.md +++ b/time.md @@ -1,20 +1,20 @@ # Jinja template for Home Assistant for Time ## get Current Time from Home Assistant -``` +```jinja {% set current_time = states('sensor.time') %} ``` ### extract the current hour -``` +```jinja {% set hour = current_time.split(':')[0] | int %} ``` ### and Minute -``` +```jinja {% set minute = current_time.split(':')[1] %} ``` ## Say a time appropriate greeting -``` +```jinja {% if hour >= 6 and hour < 12 %} Good morning! {% elif hour >= 12 and hour < 18 %} @@ -25,18 +25,20 @@ ``` ## Add AM or PM Suffix for announcement -``` +```jinja {% set suffix = 'AM' if hour < 12 else 'PM' %} ``` ## convert 24 hour time to 12 hour time -``` +```jinja {% set hour_12 = hour if hour <= 12 else hour - 12 %} ``` ## Announce the current Time +```jinja It's currently {{ hour_12 }}:{{ minute }} {{ suffix }}. +``` ## Put it all together: -``` +```jinja # get Current Time from Home Assistant {% set current_time = states('sensor.time') %} # Split time into hour @@ -59,4 +61,34 @@ It's currently {{ hour_12 }}:{{ minute }} {{ suffix }}. # Announce the current Time It's currently {{ hour_12 }}:{{ minute }} {{ suffix }}. +``` + +## The Home Assistant Script +```yaml +announce_time: + alias: Announce Time + sequence: + - service: notify.alexa_media + data: + message: " + {% set current_time = states('sensor.time') %} + {% set hour = current_time.split(':')[0] | int %} + {% set minute = current_time.split(':')[1] %} + + {% if hour >= 6 and hour < 12 %} + Good morning! + {% elif hour >= 12 and hour < 18 %} + Good afternoon! + {% elif hour >= 18 or hour < 6 %} + Good evening! + {% endif %} + + {% set suffix = ''AM'' if hour < 12 else 'PM' %} + {% set hour_12 = hour if hour <= 12 else hour - 12 %} + + It's currently {{ hour_12 }}:{{ minute }} {{ suffix }}. + " + target: + - media_player.dining_room_echo_plus + mode: single ``` \ No newline at end of file diff --git a/weatherWind.md b/weatherWind.md index 1ccfeff..4859383 100644 --- a/weatherWind.md +++ b/weatherWind.md @@ -1,13 +1,14 @@ # Home Assistant Jinja Templating to anmnounce Wind Details ## get the current wind speed and wind bearing in degrees from Home Assistant -``` +```jinja {% set wind_bearing = state_attr('weather.home', 'wind_bearing') | float %} {% set wind_speed = state_attr('weather.home','wind_speed') | float %} ``` -## This array is a list of Cardinal Directions allowing us to convert the -``` +## This array is a list of Cardinal Directions allowing us to convert the bearing into one of them. +### Admittedly, This is more complicated than it needs to be. +```jinja {% set directions = { (0.0, 11.25): 'North', (11.25, 33.75): 'North North East', @@ -30,7 +31,7 @@ ``` ## Announce a qualitative description of wind speed -``` +```jinja {% if wind_speed > 50 %} Its very windy outside. {% elif 40 < wind_speed < 50 %} @@ -46,8 +47,9 @@ {% endif %} ``` -### -``` + +### Announce the Cardinal Direction and Wind Speed +```jinja {% for rng, direction in directions.items() %} {% if wind_bearing >= rng[0] and wind_bearing < rng[1] %} The wind is currently blowing from the {{ direction }} direction, at {{ wind_speed }} kilometres per hour