Version 1.0.2
Chronoflow is a lightweight, low-CPU time engine for Homey that lets you create precise time-based Flow triggers.
It uses ChronoPoints — named moments in time based on a fixed time or on sunrise and sunset with optional offsets. Each ChronoPoint can be limited by conditions such as date periods, selected months and day-based rules.
Chronoflow also includes an optional advanced overwrite mechanism to dynamically change triggered flows.
Unlike Date & Time, Chronoflow only triggers when all conditions are met.
It is timezone-aware and uses your Homey location for accurate sunrise and sunset calculations.
Many of these triggers can also be recreated with the built-in Date & Time cards by combining multiple cascading cards in Flows. However, Chronoflow offers advanced features such as overwrite logic and groups that cannot be achieved with Date & Time alone.
The main advantage of Chronoflow is its central management in one place, using a single trigger card instead of multiple complex linked cards. Instead of changing values in many different places and across multiple Flows, you can simply update them once in Chronoflow.
For example, if you want to change Heating start from 6:30 to 7:30, you only need to update the corresponding ChronoPoint when using ChronoPoint triggers in your flows.
Examples of Chronoflow Settings
The left image shows the Chronoflow Advanced Settings page (in the app settings).
The right image shows the detailed setup of a single ChronoPoint (in the app settings).
Examples of a Flow Triggered by Chronoflow
This examples show two different ways to trigger a Flow using Chronoflow.
One Flow uses the generic Chronoflow triggered card, while the other uses the ChronoPoint xxx triggered card with a specified Chronopoint name.
To use Chronoflow, install the app on your Homey Pro first.
Then open Settings → Advanced Settings and configure your ChronoPoints.
You can find the app here: Homey App Store
Go to the app settings.
The only app-wide setting available here is the first day of the week: Sunday for the US format or Monday for the European format.
Click the question mark to open a popup with a brief explanation of the logic.
Still in the app settings, enter the desired name for the ChronoPoint in the text field and click the Add button to add the new ChronoPoint to the list.
Use the Status dropdown to enable or disable a ChronoPoint. Disabled ChronoPoints will not trigger.
Enter or modify the desired name of the ChronoPoint in the Name field.
You can optionally enter a group name in the Group field, or multiple group names separated by commas. These group names can be used in Flows to enable or disable entire groups of ChronoPoints. For example, you could disable all ChronoPoints in the group Heating during spring.
In the During Period section, you can define a start day/month and an end day/month for the active period.
The ChronoPoint will only trigger within this period, for example 15/02 → 15/09. Please note that this period recurs every year and does not include a year setting.
If the start date is later than the end date, Chronoflow treats the period as crossing the end of the year, for example 15/09 → 15/02.
In the 'Only in months' section you can select individual monthes by clicking the checkboxes. Please consider that conditions are evaluated in the order of their appearance. So if you set a period like 1/4 -> 31/8 an check the month 9, this ChronoPoint will never trigger.
The 'All' Button is a shortcut to select all monthes.
The 'None' Button is a shortcut to uncheck all monthes.
Use the Day rule dropdown to select one of four rule types. Each of them is explained in detail below.
Only on day X lets you trigger a rule only on a specific day of the month. If you select 14, the rule will be triggered on the 14th day of each month.
Please note that conditions are evaluated in the order in which they appear. This means that if you have also defined a period and/or selected specific months, the ChronoPoint will only trigger on the 14th within that active period and within the selected months.
Only on days lets you trigger a rule only on specific days of the week. If you check only FR, the rule will be triggered every Friday.
The shortcut buttons mean:
WD: Select all weekdays
WE: Select all weekend days
All: Select all days
None: Clear all selected days
Please note that conditions are evaluated in the order in which they appear. This means that if you have also defined a period and/or selected specific months, the ChronoPoint will only trigger on Fridays within that active period and within the selected months.
Every X days lets you trigger a rule every X days, starting from a specific date. This is the only place in Chronoflow where a full date including the year is required.
Please note that conditions are evaluated in the order in which they appear. This means that if you have also defined a period and/or selected specific months or days, the ChronoPoint will only trigger when all conditions are met. For example, if an X-day trigger falls on a Friday but Fridays were excluded earlier, the trigger will not fire.
Every X weeks works the same way as Every X days, but uses week-based intervals instead of day-based intervals.
Please note that conditions are evaluated in the order in which they appear. The logic works in the same way as explained earlier.
Use the Time Mode & Value dropdown to select one of the available time rules. Each option is explained in detail below.
Time lets you define a precise time of day in the field on the right.
You can optionally enable 'Add random time offset' and enter a value in the text field. This is useful for creating less predictable timing or for simulating presence.
Please note that conditions are evaluated in the order in which they appear. The logic works in the same way as explained earlier.
Sunrise triggers at sunrise. You can apply a fixed offset, for example to turn the lights off 30 minutes after sunrise.
You can also optionally enable Add random time offset and enter a value in the text field. This is useful for creating less predictable timing or for simulating presence.
Please note that conditions are evaluated in the order in which they appear. The logic is the same as described above.
Sunset works in the same way as Sunrise, but uses sunset instead of sunrise.
Please note that conditions are evaluated in the order in which they appear. The logic is the same as described above.
Overwrite Key & Priority is an advanced feature that allows one ChronoPoint to override another under certain conditions.
The logic behind this feature is quite simple once you understand how it works. The easiest way to explain it is with an example:
Imagine you have a ChronoPoint called Outside lights on. It triggers every day at sunset -30 minutes, and the related Flow turns the outside lights on in warm white at 70% brightness.
Now imagine you also have a ChronoPoint called Valentine outside lights on. This one triggers only on 14 February at sunset -60 minutes, and the related Flow sets the lights to red at 100% brightness.
To make one ChronoPoint override the other, assign both the same overwrite key in the text field, for example outside_lights_on. You can choose any key you want, as long as both ChronoPoints use exactly the same one.
Then give the Valentine outside lights on ChronoPoint a priority of High.
On Valentine’s Day, the Valentine ChronoPoint will override the standard one. The standard Outside lights on ChronoPoint will not trigger at all.
More than two ChronoPoints can share the same overwrite key, and ChronoPoints with the same key may still use completely different settings.
Important: ChronoPoints with the same overwrite key are evaluated first by priority and then, if necessary, in alphabetical order. This results in the following rules:
If one ChronoPoint has a higher priority (Normal, High, Highest), the one with the highest priority wins.
If multiple ChronoPoints have the same priority, the one whose name comes last in alphabetical order wins.
The card Chronoflow triggered fires whenever Chronoflow triggers an event. At runtime, the tags Chronoflow Name and Chronoflow ID are available.
This card is particularly useful for debugging.
The card ChronoPoint event fired triggers when a configured ChronoPoint event occurs. It is the ideal trigger card for Flows.
At runtime, the ChronoPoint name and ChronoPoint ID are available as tags.
The card ChronoPoint is enabled and the inverted card ChronoPoint is not enabled let you check whether a ChronoPoint is currently enabled or disabled.
The card ChronoPoint is active today and the inverted card ChronoPoint is not active today let you check whether a ChronoPoint is scheduled to run today.
The card Now is after (today) and the inverted card Now is not after (today) let you check whether the current time is already past the selected ChronoPoint for today.
The card Now is before (today) and the inverted card Now is not before (today) let you check whether the current time is still before the selected ChronoPoint for today.
The card Now is between (today) and the inverted card Now is not between (today) let you check whether the current time falls between the two selected ChronoPoints for today.
The card Now is within min after (today) and the inverted card Now is not within min after (today) let you check whether the current time falls within X minutes after the selected ChronoPoint for today.
The card Now is within min before (today) and the inverted card Now is not within min before (today) let you check whether the current time is within X minutes before the selected ChronoPoint for today.
The Disable groups and Enable groups cards let you enable or disable groups of ChronoPoints.
You can enter multiple group names in the field, separated by commas.
The Set state to card lets you set the selected ChronoPoint to enabled or disabled.