Flashing lights 10 minutes before meeting - why is it so complicated?

Hi everyone - I’ll do a write up on what I had to do to have this somewhat working.
Someone suggested a better way. I’ll edit this post when I get a sec.
This was my “not perfect way” :wink: - look below for the better way

Goal
I’m forgetfull of time. So I want my office lights to flash 3 times as a strong reminder that I have an upcoming meeting.

1) Outlook to Google sync
I use this fantastic tool (I’m on a windows machine) that syncs my job’s outlook calendar to google calendar. link: Gitbub for Outlook Google Calendar

2) Filter out my “full day” events into a google calendar called “lloyd for home assistant” since this breaks any meeting happening during that day in HA calendar. - Thanks to @hyperbole and his writeout

3) Installed everything in HA for google Calendar following this nice video

Code in configuration.yaml

google:
  client_id: mycodeiamnotshowingyourhere.apps.googleusercontent.com
  client_secret: MY-PASS-WORD-CHECK-THE-YOUTUBEABOVE

Code in google_calendars.yaml
(auto-generated by the congif code above - and edited to only track the last calendar)
Notice the “track: false” and the last one “track: true”


- cal_id: [email protected]
  entities:
  - device_id: myownemailname_gmail_com
    ignore_availability: true
    name: [email protected]
    track: false
    
- cal_id: en.dutch#[email protected]
  entities:
  - device_id: holidays_in_netherlands
    ignore_availability: true
    name: Holidays in Netherlands
    track: false

- cal_id: addressbook#[email protected]
  entities:
  - device_id: birthdays
    ignore_availability: true
    name: Birthdays
    track: false

- cal_id: [email protected]
  entities:
  - device_id: lloyd_for_home_assistant
    ignore_availability: true
    name: Lloyd for Home Assistant
    track: true

Code in sensors.yaml
This calculates the number of minutes before the very next event (to trigger an automation)

  - platform: template
    sensors:
      calendaralert:
        friendly_name: "calendaralert"
        unit_of_measurement: 'm'
        value_template: "{{((state_attr('calendar.lloyd_for_home_assistant', 'start_time') |as_timestamp|int - now()|as_timestamp|int)/60)|int}}"

Trigger automation
I did this in NodeRed but it a very simple automation
trigger: sensor.calendaraler = 10
Action: do light stuff.
My nodered is a bit hysterical because life is hardwith delays and stuff with my lights.

[{"id":"50e76ece.2b2d","type":"comment","z":"fc970e5b.238d6","name":"Calendar Alert","info":"","x":110,"y":3020,"wires":[]},{"id":"221fe2b9.65186e","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":340,"y":3060,"wires":[["460249db.8e48d8"]]},{"id":"b5d78965.5c3598","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":550,"y":3060,"wires":[["afd2546.9a28ba8"]]},{"id":"1ebfb09f.964e7f","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":770,"y":3060,"wires":[["7cb159fb.88e7c8"]]},{"id":"460249db.8e48d8","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":450,"y":3020,"wires":[["b5d78965.5c3598"]]},{"id":"afd2546.9a28ba8","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":670,"y":3020,"wires":[["1ebfb09f.964e7f"]]},{"id":"7cb159fb.88e7c8","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":890,"y":3020,"wires":[["a409b05.81d895"]]},{"id":"a409b05.81d895","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":990,"y":3060,"wires":[[]]},{"id":"57001e20.a9d24","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":450,"y":3020,"wires":[[]]},{"id":"3a9ddc42864d6e1f","type":"server-state-changed","z":"fc970e5b.238d6","name":"5 mins before start","server":"a0eea9da.0fe1d8","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"sensor.calendaralert","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"5","halt_if_type":"num","halt_if_compare":"is","outputs":2,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":130,"y":3060,"wires":[["221fe2b9.65186e"],[]]},{"id":"a0eea9da.0fe1d8","type":"server","name":"GOOD Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30"}]

QUESTIONS…
If anybody is reading until here… and they are creative and have cool ideas… I was wondering

Consequent meeting won’t trigger
This alarm won’t work for 2 consequent meetings - when the first ends at the same time as the next one start. The sensor will go all the way to -9 and then to 0

I was never able to use the offset
The OFFSET described here

   offset: "!!-10"

means that calendar events containing the text “!!” will offset the on status by 10 minutes… I’d like it to have for ALL events…

1 Like

I’m confused already on step one.
Why did you do that?
Integrate the work calendar directly to HA and you will get everything you need.

This custom component works nicely with my work calendar until they blocked it.
I still can see times but now what I’m supposed to do.

My work would never allow it. I can’t even access outlook.com on a non approved device… (ical is disabled)
Correction… Just found out I can share “busy/not busy”… which is sufficient… I’m installing your suggestion… To be continued.

Thanks to @Hellis81 Big edit here - the original post and writeup was not the best… So here’s a corrected one!

Goal
I’m forgetfull of time. So I want my office lights to flash 3 times as a strong reminder that I have an upcoming meeting.

Getting an icalendar feed
In outlook, you can look under options and share the calendar. Same in Google. Do that so you’ll get a calendar link. (Outlook made an ICS file output which is what I used)

Install iCal Sensor in HA
Here’s the link to install the addon
note that I changed the default option to 15 number of events - I’m a busy person :wink:
image

This will create 15 entities (they start with ical.)

And in Nodered… you can tie this all together in a flow!
Thanks again to @Hellis81 for pointing out the “time” node which I had never noticed…

[{"id":"a5414599721e7ce7","type":"comment","z":"fc970e5b.238d6","name":"Calendar Alert","info":"","x":110,"y":4120,"wires":[]},{"id":"54487f80b21f353f","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":670,"y":4220,"wires":[["e0c2727b2c38f916"]]},{"id":"d4e0f3e9b8ca4789","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":670,"y":4320,"wires":[["2ce338a5a4f97da0"]]},{"id":"a145882118587658","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":670,"y":4420,"wires":[["9d27300471e73d75"]]},{"id":"e0c2727b2c38f916","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"300","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":850,"y":4220,"wires":[["d4e0f3e9b8ca4789"]]},{"id":"2ce338a5a4f97da0","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":850,"y":4320,"wires":[["a145882118587658"]]},{"id":"9d27300471e73d75","type":"delay","z":"fc970e5b.238d6","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"outputs":1,"x":870,"y":4420,"wires":[["63369d0efc6b3e2f"]]},{"id":"63369d0efc6b3e2f","type":"api-call-service","z":"fc970e5b.238d6","name":"Light toggle","server":"a0eea9da.0fe1d8","version":3,"debugenabled":false,"service_domain":"switch","service":"toggle","entityId":"switch.ltuya_webmeeting_light","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":770,"y":4520,"wires":[[]]},{"id":"2b401252a3377ed3","type":"ha-time","z":"fc970e5b.238d6","name":"Event 13","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_13","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4454.285714285716,"wires":[["54487f80b21f353f"]]},{"id":"c03b3ce701807ed9","type":"ha-time","z":"fc970e5b.238d6","name":"Event 2","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_2","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4240,"wires":[["54487f80b21f353f"]]},{"id":"eac056ddeb0d8f0f","type":"ha-time","z":"fc970e5b.238d6","name":"Event 3","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_3","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4303.333333333333,"wires":[["54487f80b21f353f"]]},{"id":"2cdf781249d4d9a4","type":"ha-time","z":"fc970e5b.238d6","name":"Event 4","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_4","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4366.666666666666,"wires":[["54487f80b21f353f"]]},{"id":"c7e6ef15317ced9f","type":"ha-time","z":"fc970e5b.238d6","name":"Event 5","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_5","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4493.333333333332,"wires":[["54487f80b21f353f"]]},{"id":"f6dbd2dd53e8b354","type":"ha-time","z":"fc970e5b.238d6","name":"Event 6","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_6","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4429.999999999999,"wires":[["54487f80b21f353f"]]},{"id":"febce1fd0e53f278","type":"ha-time","z":"fc970e5b.238d6","name":"Event 7","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_7","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4556.666666666667,"wires":[["54487f80b21f353f"]]},{"id":"524e75fd51a7bf79","type":"ha-time","z":"fc970e5b.238d6","name":"Event 8","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_8","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":310,"y":4140,"wires":[["54487f80b21f353f"]]},{"id":"e4ca8c5b239e72a8","type":"ha-time","z":"fc970e5b.238d6","name":"Event 9","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_9","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":310,"y":4202.857142857143,"wires":[["54487f80b21f353f"]]},{"id":"e30b6c84f5049715","type":"ha-time","z":"fc970e5b.238d6","name":"Event 10","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_10","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4265.714285714286,"wires":[["54487f80b21f353f"]]},{"id":"718412368124b57d","type":"ha-time","z":"fc970e5b.238d6","name":"Event 11","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_11","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4328.571428571429,"wires":[["54487f80b21f353f"]]},{"id":"ab7223e080024067","type":"ha-time","z":"fc970e5b.238d6","name":"Event 12","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_12","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4391.4285714285725,"wires":[["54487f80b21f353f"]]},{"id":"315512077bc8bd6e","type":"ha-time","z":"fc970e5b.238d6","name":"Event 1","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_1","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":130,"y":4176.666666666667,"wires":[["54487f80b21f353f"]]},{"id":"4723fa110689236c","type":"ha-time","z":"fc970e5b.238d6","name":"Event 14","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_14","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4517.142857142859,"wires":[["54487f80b21f353f"]]},{"id":"f5f040d3c293075b","type":"ha-time","z":"fc970e5b.238d6","name":"Event 15","server":"a0eea9da.0fe1d8","version":2,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityId":"sensor.ical_my_agenda_15","property":"attributes.start","offset":"-10","offsetType":"num","offsetUnits":"minutes","randomOffset":false,"repeatDaily":true,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"sunday":false,"monday":true,"tuesday":true,"wednesday":true,"thursday":true,"friday":true,"saturday":false,"debugenabled":false,"x":320,"y":4580,"wires":[["54487f80b21f353f"]]},{"id":"a0eea9da.0fe1d8","type":"server","name":"GOOD Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30"}]

I can’t import your flow since I’m currently on the train and won’t be home for another 12-15 hours.
But I think you can skip your sensors and use the ical sensor directly in Node red.

Use the time node and add the sensor in it, and as i remember, there is a field where you can add “attributes.Start” to make it read the start attribute.
And I think it has an offset setting also.
I can’t look at it right now, but look at the time node (home assistant nodes).

1 Like

Yep, you’re right - I edited my post (people who wondered - I had a much longger writeup with 15 additional sensors… the “Time” node in Nodered Home Assistant did the trick)