Virtual "circuit breakers" for your flows that act as advanced latches.
Conditional Gates are virtual logic gates (Go / No Go circuits) that exist purely in memory. They allow you to pause flows until a specific "Gate" is opened (set to GO).
Think of them as a traffic light for your flows:
Homey stops every app Flow card after 60 seconds. A card that is still waiting at that point fails with Timeout after 60000ms, no matter which timeout you configured.
Type: CONDITION
Pauses the flow until the specified gate becomes GO.
Type: ACTION
Starts a background wait for the gate and lets the flow continue immediately. When the gate becomes GO or the timeout expires, the Conditional Gate wait finished trigger fires. Use this for anything longer than 55 seconds.
0 = wait until GO without a timeout; such a wait is ended as TIMEOUT after 24 hours.gate_<name>_background (e.g. gate_Razor_background) and can be enabled, disabled or stopped with Control waiter gate. Stopping it never fires the trigger.Type: TRIGGER
Fires when a wait started with Start waiting for Conditional Gate GO for the selected gate ends.
true if the gate became GO.GO or TIMEOUT.Type: CONDITION
Instantly checks if a gate is currently GO or NO GO without waiting.
Type: ACTION
Changes the state of a gate (Open/Close) or updates the timeout of active waiters (in-card and background waits).
true if the gate is GO after the action, false if NO GO.Trigger a flow, but wait up to an hour for manual confirmation (e.g., via a button or app) before proceeding. An hour is far beyond Homey's 60-second card limit, so this uses a background wait.
WHEN: Washing Machine finished
THEN: Start waiting for Conditional Gate GO "EmptyWasher" (Default: NO GO, Timeout: 1 hour)
WHEN: Virtual Button "Washer Emptied" pressed
THEN: Modify Conditional Gate "EmptyWasher" -> Set to GO
WHEN: Conditional Gate wait finished "EmptyWasher"
THEN: Modify Conditional Gate "EmptyWasher" -> Set to NO GO (Reset for next time)
THEN: Send push notification "Washer: [Result]" (GO = emptied, TIMEOUT = still waiting after 1 hour)
A common pattern: when the razor is turned on, turn it off again after 2 minutes - or earlier if something opens the gate. A Wait for GO condition with a 2 minute timeout fails after 60 seconds (Timeout after 60000ms), because Homey stops app Flow cards after one minute. Split it into a start card and a trigger instead. In an Advanced Flow both parts can live on the same canvas:
WHEN: Razor turned on
THEN: Modify Conditional Gate "Razor" -> Set to NO GO (re-arm the gate)
THEN: Start waiting for Conditional Gate GO "Razor" (Default: NO GO, Timeout: 2 minutes)
WHEN: Conditional Gate wait finished "Razor"
THEN: Turn off Razor
WHEN: <whatever should end the wait early>
THEN: Modify Conditional Gate "Razor" -> Set to GO
GO / TIMEOUT) or Gate opened (GO) tag if the two outcomes need different actions.Prevent a flow from running until a specific condition (Latch) is set, and queue up requests.
WHEN: Motion Detected
AND: Conditional Gate "NightModeLatch" (Default: NO GO, Timeout: 0)
THEN: Turn on hallway lights dimly
Here, Timeout 0 acts as a filter. If "NightModeLatch" is NO GO, the flow stops immediately. If it is GO, lights turn on.