Hello. I do my first steps with this app which is one of the main reason i switch from Apple Home to Homey.
I want to start an action when an event in a specific calendar starts in 4 hours. Right now, to do that i use a “when” card “The event begin in 4 hours” and an “and” card “Any event begin in 4 hours in the calendar X”. That works but i’m not sure i use the easiest way to do such a simple task. i’m afraid that having to specify the duration in 2 different cards will leds me to errors if i change the duration in one of the card and not modify it in the other card. So, is there a simplest way ? (and thank you for the great work)
Use the trigger Event starts in … and a logic card as an And card to check the Calendar name token from the trigger card
Yes, that’s a lot better. Thank you for your help.
Also another thing, is there a possibility to have an action triggered at midnight if an event has took place in the last 24 hours? I have found a workaround by having a flow running every hour and modifying a yes/no variable when it found an event. Then i use this variable as a condition to trigger the midnight action. It works but maybe this workaround doesn’t have to be and i try to not overcomplicated my flows.
So this is where you need to be creative.
For instance, when any event is triggered, set a variable to the current date time and at midnight check if that variable is within the last 24 hours
So, that’s exactly what i did. I was right this time. ![]()
@Whop_Whoppie If you are willing to pay for IFTTT, then you can run IFTTT applets that let’s you make changes to an actual calendar. I have a flow that creates an event on a Google calendar. (I made that before local events was introduced)

Here Homey is providing the details for the event to be created.
But you want a total replica if so and so is true. Then I guess involving Homey is unnecessary.
You should be able to make IFTTT sniff for new events in Calendar A, and if so and so is true, copy that event to Calendar B.
thanks
Hello. I’m trying to do a flow that deactivate a lamp if it’s activate on a day when a particular calendar has no event on this day.
I have make this simple flow :
The logic card check if the number of calendar events in this specific calendar today is below 1. Since there is one event today, the number of event today tag should be 1 but it gives me 0 and therefore the lamp deactivate when it shouldn’t. What am i missing?
The today tag shows number of events today which hasn’t started yet or are ongoing.
That should be my problem. Thank you for the fast answer. Anyway, i think it could be a great addition to this great app to be able to have tags that count the number of event which has already hapend today or yesterday. Thank you for the great work ![]()
IcalCalendar only synchronize in events inside the time frame chosen in settings AND not started or ongoing events.
Finished events is not synchronized in ad they have no use anymore, and to minimize memory and disk usage.
So that will not be possible
Would that be such a hit on memory and disk usage? Because i see a lot of usage for such a feature. For example, only vaccum if and event show that there has been activity in the room today. I can use workaround but it’s a lot of steps to do that. A tag would be so much easier. Anyway, just something to meditate on. ![]()
That would be a breaking change, so the card logic will not be changed.
And the app would need to synchronize in “dead” events for the whole time range set in settings page.
So I’m sorry. This will not be implemented
Hello Runely
I recently added IcalCalendar to my Homey 2019 and I think it’s a fantastic app and it helps me and the family a lot. But I have a problem that you might be able to help med with.
The problem is that I get an hour offset between my calendar and the app. I’ve read that the app reads the BEGIN:VTIMEZONE sections and not X-WR-TIMEZONE but it seems like my e-post server (Kerio Connect on own server) uses booth, or? Before I start changing the “timezones.xml” file in my mail server, I wonder if you know a way to solve it a bit easily?
I have tried with a Google Calender and it worked great, so it seems like it is a “local” problem with my Kerio Connect.
This is from a celender event:
"BEGIN:VCALENDAR
PRODID:-//Kerio Technologies//Kerio Connect//EN
METHOD: PUBLISH
VERSION:2.0
X-WR-CALNAME:Familjen Wiberg's calendar - ~familjen@wiberg.cc/Calendar
BEGIN:VTIMEZONE
TZID:(GMT) Greenwich Mean Time
BEGIN:STANDARD
DTSTART:19700101T000001
TZOFFSETTO:+0000
TZOFFSETFROM:+0000
END:STANDARD
END:VTIMEZONE"
And this is from the timezone.xml-file in the Kerio Connect:
<zone>
<location>Europe/Stockholm</location>
<stdAbbr>+0100</stdAbbr>
<daylightAbbr>+0200</daylightAbbr>
<stdStart>19961027T030000</stdStart>
<daylightStart>19810329T020000</daylightStart>
<stdRRule>FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU</stdRRule>
<daylightRRule>FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU</daylightRRule>
<cdoTimeZoneId>3</cdoTimeZoneId>
<cdoTimeZoneId>4</cdoTimeZoneId>
<cdoTimeZoneId>6</cdoTimeZoneId>
</zone>
Any suggestions?
IcalCalendar uses the node-ical library to parse the calendar ics file.
This library uses the TZID parameter in the DTSTART property of each VEVENT to determine the timezone for the event. If the TZID parameter isn’t present and/or the date/datetime value has a leading Z, the date/datetime value is treated as UTC.
I also agree, would be a very useful addition!
Thanks for fast reply
But i dont´t get it, is it here TZID:(GMT) Greenwich Mean Time it shcould have “my” time instead?
Or is it DTSTART:19700101T000001 here sameting is wrong? Sorry for my poor knowledge…
Fint your events in the .ics file, they are starting with BEGIN:VEVENT and ending with END:VEVENT and inside each event there’s a DTSTART property. It can look something like this:
DTSTART;TZID=W. Europe Standard Time:20231120T080000
If TZID is not present, its assumed the DTSTART is in UTC!
If TZID is present but set to UTC, GMT or a timezone identifier with 0 offset, its assumed the DTSTART is in UTC!
If TZID is present but set to something only your server can understand, like but not limited to “Customized Time Zone”, its assumed the DTSTART is in UTC!

