[APP][Pro] IcalCalendar

A whole day event starts and stops at 00:00. You can of course set the event to start at 12:00 one day and 12:00 another day

Thanks for the explanation. Can I do something about it to get it working?

I can’t help you with this I’m afraid. This is something that has to be solved by your calendar provider

Hi there,

So I am using the iCal app and it is working great, I use it to send myself a whatsapp message 1 hour before the event starts. however I would really like to send myself a whatsapp message on the night before about all events for the following day. is there anyway to achieve this? I cant seem to figure this out.

Yes there is :+1:

The IcalCalendar app exposes several global tokens (tags) that can be used in any flow card as input.

The token (tag) you are asking for is called Tomorrows events, title and time.
All the available global tokens (tags) can be found here: GitHub - runely/calendar-homey: Gives Homey flow cards to trigger on your calendar events

1 Like

Works perfect! thanks!

Only thing left is that I would like to convert the returned events into a message style.
So now I receive "event1 ; Full day; event2; 13:00 till 15:00; etc etc.

Do you know if there is any way to convert this csv style message into a proper styled message that I can send to my phone?

That’s not something that IcalCalendar can help you with. You can probably do this with HomeyScript for instance

1 Like

For anyone else trying to achieve this or something similar
I have managed to get it done with the homeyscript run code with argument card.
I am sure the code could be written much more efficient but this is the best I could do.
For anyone interested here is the code I wrote:

let text = args.toString(); 
var e = 0
const result1 = text.replace(/; /g, match => ++e === 2 ? '\n' : match)
var e = 0
const result2 = result1.replace(/; /g, match => ++e === 3 ? '\n' : match)
var e = 0
const result3 = result2.replace(/; /g, match => ++e === 4 ? '\n' : match)
var e = 0
const result4 = result3.replace(/; /g, match => ++e === 5 ? '\n' : match)
var e = 0
const result5 = result4.replace(/; /g, match => ++e === 6 ? '\n' : match)
var e = 0
const result6 = result5.replace(/; /g, match => ++e === 7 ? '\n' : match)
var e = 0
const result7 = result6.replace(/; /g, match => ++e === 8 ? '\n' : match)
var e = 0
const result8 = result7.replace(/; /g, match => ++e === 9 ? '\n' : match)
var e = 0
const result9 = result8.replace(/; /g, match => ++e === 10 ? '\n' : match)
var e = 0
const result10 = result9.replace(/; /g, match => ++e === 10 ? '\n' : match)
var e = 0
const result11 = result10.replace(/; /g, match => ++e === 10 ? '\n' : match)
var e = 0
const result12 = result11.replace(/; /g, match => ++e === 10 ? '\n' : match)
var e = 0
const result13 = result12.replace(/; /g, match => ++e === 10 ? '\n' : match)
let final = result13.replace(/;/g, " -");
await tag('WH Message Rik', final);
1 Like

In the newly released version 2.7.1 adjustable synchronization is implemented.

You can enable/disable automatic synchronization. You can also change the interval by specifying a cron expression.

If automatic synchronization is disabled, calendars will only be synchronized when the action card Sync calendars is called in a flow


That is awesome, thank you!! I’ve made a check when the CPU load is too high, and now I can skip syncing the calendars at the peak CPU times.

1 Like