📆 Calendar Notifications & Actions

@Iggy

Thanks for letting us know.

This is were Key Words come into play.

This is the one for trash Click Here

For birthdays you can have one automation using a key word like “#birthdays” and in all your calendar events for birthdays use this key word and then you will get the notification.

Blacky :grinning:

Thank you for Blueprints, theire so helpful.

Is their a possible way, to use notify. ?
Because i use Signal Integration for my Notifications and want to get notified their with the calender blueprint.

I cant find a way to do it here

@Freacly

Maybe you can look at the start and / or end actions. I don’t use Signal so I not much help here.

Blacky :grinning:

Is it possible to specify a notification icon and tag? I receive a bunch of home assistant notifications and sometimes critical ones get lost in the mix.

@VT_HomeAssistant

Thanks for your suggestion, I will put it on the list of suggestions.

Blacky :grinning:

1 Like

My wife when entering the calender trigger in the calendar isn’t consistent with how she types @away sometimes its @Away @AWAY or any other variation she can find!
How can I set the Calendar trigger to pick up on all these variations?

The blueprint is great and very helpful :slight_smile:

@simonk

It is like a password you must type it correctly. Just make a rule… all keywords are @… then everything lower case.

Blacky :grinning:

1 Like

Actually it would be great if you could do multiple key words like @person1 ; @person2 ; @person3 …is it possible? Doesn’t work for me.

@wube

You are using a semicolon with a space. You must use a comma like this
@person1, @person2, @person3

This example is shown in the keyword input.

Hope this helps you.

Blacky :grinning:

Thanks a lot for the blueprint. I kind of started playing around with HA and these blueprints helps a lot.
I have a question. I’ve configured a gmail calendar with a football team games. Just to be aware when they play home, to avoid traffic jams.
The events when they play at home, starts with: local_team - away_team
I’ve set in the key word: @local_team -
Will that work? Thanks in advance!

@Dani_Rev

Welcome to the community.

No, that won’t work.
The keyword in your calendar event must match exactly—think of it like a password.

If the phrase “local_team” appears only in calendar events when the local team plays, then you can use local_team as your keyword.

If that’s not the case, and you have the ability to edit those events, consider adding a unique keyword like @traffic_jams to any event where local games cause traffic. Then, configure your automation to trigger based on that keyword.

This way, you can tag any traffic-related event and handle them all with a single automation.

Blacky :grinning:

1 Like

@Blacky this doesnt work at all for me. i get an error when trying.

alias: testcal
description: ""
use_blueprint:
  path: Blackshome/calendar-notifications-and-actions.yaml
  input:
    calendar: calendar.calender_automations
    calendar_trigger: "@testtest"
    include_start_auto_actions:
      - enable_start_action_1
    start_action_1:
      - action: conversation.process
        metadata: {}
        data:
          agent_id: conversation.llama3_2
          text: >-
            testing testing
        response_variable: response
      - action: assist_satellite.announce
        metadata: {}
        data:
          message: "{{ response.response.speech.plain.speech }}"
          preannounce: false
        target:
          entity_id: assist_satellite.voice_pe_assist_satellite

Logger: homeassistant.helpers.template
Source: helpers/template.py:2947
First occurred: 9:07:51 PM (2 occurrences)
Last logged: 9:40:00 PM

  • Template variable error: ‘dict object’ has no attribute ‘calendar_event’ when rendering ‘{{ trigger.calendar_event.summary }}’
  • Template variable error: ‘response’ is undefined when rendering ‘{{ response.response.speech.plain.speech }}’

@RogerB1

Did you wait 15min after you added your calendar event?

Looks like you have a problem in your custom action. I not a guru on the actions you have but maybe try this

"{{ response.speech.plain.speech }}"

or

"{{ response.speech.plain.speech if response.speech.plain.speech is defined else 'No response available.' }}"

or

"{{ response.response.speech.plain.speech if response.response.speech.plain.speech is defined else 'No response available.' }}"

or

      - action: conversation.process
        metadata: {}
        data:
          agent_id: conversation.llama3_2
          text: >-
            testing testing
        response_variable: responsellama3_2
      - action: assist_satellite.announce
        metadata: {}
        data:
          message: "{{ responsellama3_2.response.speech.plain.speech }}"
          preannounce: false
        target:
          entity_id: assist_satellite.voice_pe_assist_satellite

Blacky :grinning:

Thanks so much for this blueprint! I am using it for the bin collections too :wink: (well, this is how it started, now I use it for lots!)

This may have already been mentioned (thread is quite long and only skimmed) but it would be great if it could also have the ability to only trigger when certain keywords are not present. Unless I am wrong, this is currently not possible?

The reason is: I also use this for the bin collections as mentioned, but I use the excellent waste collection schedule integration to automatically pull the information through from the borough council. This is incredibly handy for Christmas rescheduling where they could be on any day (decided only a couple of months before).

In my case, we have weekly rubbish, everything fortnightly. But I cannot use the term “General Waste” on the days when that is only collected, as it is also listed with everything else the following week. It would be great if we could say contains General and Waste, but does not contain Glass, for example.

Thanks again for an awesome blueprint! :slight_smile:

@ellnic

Thanks for you kind words…

The keywords are like passwords so @Waste is different to Waste. When you pull the information in they probably don’t have that type of keyword.

Blacky :grinning:

Hey @Blacky, thanks for replying.

Sorry I used the @ as an example as its in the docs. I have removed them.

That’s not quite what I mean, though. I’m asking if the blueprint could have the addition of blacklist keywords, essentially. So if the word is present is does not trigger. As in the example above, my days where everything is collected contain the words General and Waste so I can not single out the rubbish only days using either of those words. Because the information is pulled from the council API, I cannot change it.

@ellnic

Sorry my bad…

Yes you can do this. You just need to use the global conditions. This is how you do it.

  1. Add condition
  2. Type template in the search and select it.
  3. Then copy and paste this code into the value template. See how I used excluded_words = and the words Waste and Glass. Change them to what you would like to use. Some examples below on how to use the excluded words… just copy the one you would like.

For more than one word.

{% set excluded_words = ['Waste', 'Glass'] %}
{% set summary = (trigger.calendar_event.summary or '') %}
{% set description = (trigger.calendar_event.description or '') %}
{{ excluded_words | select('in', summary) | list | count == 0
   and excluded_words | select('in', description) | list | count == 0 }}

Use for case sensitive words

{% set excluded_words = ['Waste', 'waste', 'Glass', 'glass'] %}
{% set summary = (trigger.calendar_event.summary or '') %}
{% set description = (trigger.calendar_event.description or '') %}
{{ excluded_words | select('in', summary) | list | count == 0
   and excluded_words | select('in', description) | list | count == 0 }}

Use just one word below… Recommended: Easier to do the code like this so you can add any word later if needed.

{% set excluded_words = ['Waste'] %}
{% set summary = (trigger.calendar_event.summary or '') %}
{% set description = (trigger.calendar_event.description or '') %}
{{ excluded_words | select('in', summary) | list | count == 0
   and excluded_words | select('in', description) | list | count == 0 }}

Use just one word below… don’t care… only going to use one word and you will change the whole code if needed.

{% set excluded_word = 'waste' %}
{% set summary = (trigger.calendar_event.summary or '') %}
{% set description = (trigger.calendar_event.description or '') %}
{{ excluded_word not in summary and excluded_word not in description }}

  1. Save and your done :partying_face:. You now have an excluded word option :wink:

Sorry for not reading it correctly the first time :pensive:

Blacky :grinning:

1 Like

No worries! Thanks for the solution! :grinning:

1 Like

Hello!
First of all, thank you so much for your work on this blueprint — it’s incredibly useful and well thought-out. I really appreciate the effort you’ve put into it!

I have a small feature request that I believe could further improve the usability:
Would it be possible to add support for customizing the icon and its color in the notification?

It’s a minor addition, but it can make a big difference — allowing users to quickly recognize the type of notification at a glance. For example, using different icons or colors for reminders, alerts, or events would be really helpful in daily use. In my case, I have a separate birthday and Epic Games calendar and at the moment both notifications look the same.

Thanks again for the great blueprint and your continued development!

@RTS007

I’m trying to avoid creating too many separate notification options, and I’ve suggested to Home Assistant that they develop a unified notification platform. Right now, having to support both iOS and Android separately feels clunky… and honestly, I haven’t heard anything back.

What I’d really appreciate is just a simple yes or no. If something is planned, great… I’ll wait. If not, I’ll go ahead and build for both. But the uncertainty makes it hard to commit time to blueprints that might become redundant in the next release.

A unified platform would benefit the whole community. In their last YouTube release video, they mentioned removing the persistent notification for new device discovery and hinted at needing some sort of notification system… so maybe something is in the pipeline?

From a blueprint developer’s perspective, it’s frustrating. We already have a mobile app, and we could display notifications in dashboard cards if they developed a dedicated notifications card. That would be a great cross-platform solution to bring everything together.

At the end of the day, it comes down to time, priorities, and whether it’s even possible. But even just knowing if they’re open to the idea would be helpful.

If you’re only sending a notification (without action buttons), you can use the Start or End actions to create the notification with an icon and colour… maybe that could be the solution for now.

Blacky :grinning:

3 Likes