Thanks for this great blueprint
Just little feature request which I added to your code
@Blacky was kind enough to send me detailled instructions as I am not the worldâs best programmer (in fact very far from it ), I noticed that he uses all day events and I had been looking for time-specific events as triggers.
.
I have been using my own construction based on all-day events, so I am not sure that I need this blueprint.
.
This is my own construction:
I created 20 sub-calendars in my Google Calendar: several with different wake-up times (6:30 am, 8 am and one that I named wake-up once), cleaning lady day, club meeting, trips etc.
.
On the days that I want HA to trigger an automation, in my Google Calendar I create an all-day event with the specific sub-calendar. Example: I have a Friday weekly all-day event named Susan with sub calendar cleaning lady. It happens that she asks to change the day and then for that week I move he event to, letâs say, Thursday.
.
My wifeâs work is almost always Monday to Friday, so her wake-up event is entered accordingly in the Google Calendar, with the specific sub-calendar. I have a reminder in the Google Calendar on the weekend to make any changes needed for the following week. As an example, next week Monday is a holiday, so I need to delete her wake-up entry for that day.
.
All these calendars show up as entities in HA.
.
For the wake-up automations I first created 2 scripts, one for my wifeâs wake-up (lights on, curtains open, Alexa announcements) and one for myself (as I usually get up earlier, only blue lights so as not to wake up my wife).
As there are different wake-up automations, I do not need to repeat the actions and just use one of the scripts.
.
As trigger I select one of the calendars, letâs use the example of wake-up SB 6:30 am:
As these are all-day events, meaning the event starts at midnight, I entered 6:30 off-set (after).
.
For action I use the relevant script that I created earlier.
.
Because we sometimes wake up at a non-regular time, I also have a calendar wake-up once and for that I will have to set the off-set every time it is needed, but I can use the existing script.
.
For other calendars, like cleaning lady day and trips I do not need a script and have specific actions for each.
.
I am not, in the slightest, claiming that my construction is better than @Blacky 's. In fact, his Blueprint is way more sophisticated and detailled. But with the use of all-day events, my construction works for me and is an alternative.
You donât have to use all day events you can just set a time with no offset and it will trigger on time. I see you have also PM me so I will reply to you there.
Blacky
Hey @Blacky first of all great work on that bluieprint. It is awesome and works perfectly with Google Calendar.
I hope you can help me refine my setup. I use a calendar for the pickup of the waste bins (calendar is prepared by our municipality and i just import it into Google Calendar once a year).
I got everything working fine and receive a notoficatipon one day before pickup at 4pm. Great.
Now they include the info about which of the bins is to be picked up in the âmessage attributeâ like this:
message: Bioabfall
all_day: true
start_time: 2024-01-17 00:00:00
end_time: 2024-01-18 00:00:00
How can I get this âmessageâ into my notification? I tried this in the âStart Notify Messageâ but it does not work:
Morgen wird {{ trigger.calendar_event.message }} abgeholt
Thanks
Rick
Hi Rick,
I donât use google calendar so I canât test or see what is going on but you could try this
{{ trigger.event.data.summary }}
or
{{ trigger.event.data.description }}
EDIT: These are the HA calendar triggers you can use Click Here. If someone has found the way to add your data from a Google Calendar into the message then please jump in and let us know.
Let us know if this works.
Blacky
I have a simple solution for you.
In your Google Calendar, create another calendar Abfall (Garbage Pickup in my example)
(*)
and then that calendar will automatically show up in HA (afer 15 minutes or after a reload of the Google Calendar Integration).
When you upload that yearly garbage schedule, do that in the Garbage Pickup calendar as a all-day event, and voila !! Now you can create the desired automation with the Garbage Pickup calendar as trigger, using the appropriate time offset.
(*) In this example Casa Aventura is the Google Calendar used for the HA Integration and the Garbage Pickup calendar is basically a sub-calendar that will show automatically in HA.
hi blacky,
First of all, thank you very much for your blueprints. - they help people like me a lot who arenât quite good at juggling code yet.
I am currently using the blueprint for my garbage collection. - Now that Iâve finally figured out where to find the action buttons, the whole thing is a bit too fiddly for me. At least it often happens to me that the whole notification is gone. Unfortunately, from this moment on, Iâm stuck in an automation process that I can no longer complete in a meaningful way.
alias: MĂźllerinnerung
description: ""
use_blueprint:
path: Blackshome/calendar-notifications-and-actions.yaml
input:
calendar: calendar.mullabfuhr
calendar_trigger: RestmĂźll
start_calendar_offset:
hours: -8
minutes: 0
seconds: 0
days: 0
include_start_notify: enable_start_notify_options
start_notify_device:
- d0a474exxxx709f02091axxxa339bbe0
- 31a9561xxxx26464a7xxx9a3bf9c6d37
start_message: Bitte die schwarze MĂźlltonne an die StraĂe bringen.
start_title: "MĂźllmann sagt:"
include_start_action_buttons:
- enable_start_action_button_2
start_action_button_2: Erledigt!
start_time_delay:
hours: 3
minutes: 0
seconds: 0
include_start_action_button_confirmation: enable_start_action_button_confirmation
start_action_button_confirmation_title: "MĂźllmann sagt:"
start_action_button_confirmation_message: MĂźlltonne steht an der StraĂe.
start_time_delay_confirmation_message: MĂźlltonne muss noch immer an die StraĂe!
include_start_auto_actions:
- enable_start_action_1
start_action_1:
- repeat:
sequence:
- service: tts.cloud_say
metadata: {}
data:
cache: false
entity_id: media_player.flur_homepod
message: Bitte die schwarze Tonne an die StraĂe stellen!
language: de-DE
- delay:
hours: 0
minutes: 30
seconds: 0
milliseconds: 0
until:
- condition: state
state: "on"
entity_id: input_boolean.mull_restmull_an_der_strasse
start_action_2:
- service: input_boolean.turn_on
metadata: {}
data: {}
target:
entity_id: input_boolean.mull_restmull_an_der_strasse
include_end_notify: disable_end_notify_options
include_end_action_buttons: []
end_time_delay:
hours: 0
minutes: 0
seconds: 0
include_end_auto_actions:
- enable_end_action_1
end_action_1:
- service: input_boolean.turn_off
metadata: {}
data: {}
target:
entity_id: input_boolean.restmull_morgen
So I trigger 8 hours before the calendar event and notify myself and my friends on my cell phone first. If one of the two of us uses the button to indicate that he has taken the bin to the street, everything is done.
If this doesnât happen, after three hours the HomePod should ask the hallway to take the bin out to the street every 30 minutes. - and that until that happened.
So I canât choose any auto action because I want to keep annoying myself until the garbage can is actually on the street.
But if I have lost or closed the notification, what is the most user-friendly alternative to the action button? Is it possible to use an input_bool as an alternative? That could be âeverythingâ without me even having to pick up my cell phone when the HomePod and my wife are screaming at me.
In the future, I can also imagine that the âBin at the streetâ entity will be switched, for example, by a device tracker attached to the garbage can.
Do you understand what I mean, or am I still so clueless that I just donât recognize the obvious solutions yet?
Of course, everyone else can help me too - thank you in advance.
Alex
It will send you a reminder once but not every 30 min and currently there are no action buttons for the reminder. So it is best to then call a script in the action.
In your actions you will need to call service / and script turn on. So when it times out after 30 min after doing nothing the action happens and then calls your script annoying you until it is done.
The script / blueprint I recommend for this is below. It is nicely done, easy to follow and the developer @samuelthng supports it to date if you have any questions regarding his blueprint. Link is below.
Hope this helps you.
Blacky
what about adding data to notification service? So iOS sticky does not work, but critical: works, could be nice to add these
Thank you so much for sharing this blueprint, Iâm still learning and this is so helpful!
Iâm struggling to get one of my notifications to work⌠I set up a reminder for every birthday. It works great, except when there is more than one birthday on a day⌠they are separate calendar entries, but I only get one notification. Iâm sure itâs user error, just canât figure out what Iâm doing wrong.
Firstly welcome to the community.
Thanks for the heads up. I will need to look into this as I can see what you are saying. I have put this on my list to do.
Blacky
Thanks for this blueprint, it helped me a lot!
I want to close the notification when I press an action. Is there a way to add a tag to the notification? So I can send a âclear_notificationâ as an action on the button?
The cancel button also doesnât seem to close the notification, but possibly Iâm doing something wrong.
I use IOS. so the cancel is there for that.
This is the information in the docs for Android.
When a notification is cleared Android will notify the Companion app of the event. A notification is considered cleared if you either manually swipe it away from the notification status bar or if you click on the Clear All button.
Blacky
I saw that also on the documentation, but that didnât look correct.
On Android it can be cleared with a tag. I made an example that clears the notification after 30 seconds (But in my case I would perform that as an action when the button is pressed).
alias: Notification Test
description: ââ
trigger:
condition:
action:
- service: notify.mobile_app_home_samsung_s21
metadata: {}
data:
title: Test
message: Test notification
data:
tag: testnotificatie
actions:
- action: URI
title: Open Url
uri: https://google.com- delay:
hours: 0
minutes: 0
seconds: 30
milliseconds: 0- service: notify.mobile_app_home_samsung_s21
metadata: {}
data:
message: clear_notification
data:
tag: testnotificatie
mode: single
So for it to work on Android, the cancel-button would have to send the clear_notification - message with the tag (or just be invisible so one of the action buttons can be setup for it).
Thank you for this incredible blueprint!
Is there a way I can configure this to send me a notification for each event on that particular day, at a particular time?
For example, letâs say I have 3 events today and at 10h00 I would receive 3 different notifications, or even a single notification with all relevant information.
Thanks!
Thanks for this information I will look into it.
Blacky
Hi Ricardo, welcome to the community.
Yes you can do this. It is really up to you if you would like to use key word or on every calendar event. If you use key word you can have one automation an you may choose your key word to be @notifications and use the same key word in the events you would like to be notified of or you can use multiple automation and or different key words it is totally up to you.
Please note that I do have an item on my list to look at calendar events at the same time only sending the first event. So for now you may have to adjust the time of the events to be slightly different.
Blacky
Can you add a trigger key word option is similar to âdonât use key wordâ but will trigger on ANY word EXCEPT a string I specify? Basically âAlways trigger except for âkey wordâ in calendarâ.
My use case: Fantastical for Mac leaves events on my calendar that are âcancelledâ. They show up as âCancelled:â. I want your automation to trigger in ALL events EXCEPT for the ones that start with âCancelled:â in them.
Thank you!
Have you tried using the global conditions. In a template maybe something like this.
{{ is_state_attr('calendar.YOUR_CALENDAR_ENTITY_ID', 'description', 'Cancelled:') }}
Blacky