Why Do Home Assistant Automations Skip Steps When Z‑Wave Devices Enter FLiRS Mode?

Find out why Home Assistant automations skip steps when Z-Wave FLiRS devices like locks and thermostats are involved, and learn how to fix timing and

Home Assistant users who rely on Z‑Wave door locks, thermostats, and battery-powered devices often notice a puzzling problem:

  • An automation runs,
  • Some actions fire correctly,
  • But steps involving certain Z‑Wave devices are skipped or never complete—especially devices that are “sleepy” or battery‑powered.

In many of these cases, those devices are FLiRS devices and are behaving exactly as the Z‑Wave specification allows. The problem is not that FLiRS is “broken”, but that the timing and communication pattern of FLiRS often conflicts with how Home Assistant automations are written and evaluated.

This article explains:

  • What FLiRS mode is in Z‑Wave
  • How FLiRS affects communication timing and state updates
  • Why that leads to “skipped” steps in Home Assistant automations
  • Practical ways to design automations that remain reliable with FLiRS devices

1. What Is FLiRS in Z‑Wave?

FLiRS stands for Frequently Listening Routing Slave. It is a Z‑Wave power‑saving mechanism used by many battery devices that still need to respond relatively quickly to commands, such as:

  • Smart door locks
  • Thermostats
  • Motorized shades or blinds
  • Certain battery‑powered actuators

1.1 How FLiRS Works

A FLiRS device:

  • Spends most of its time in a low‑power sleep state, but
  • Wakes up briefly at regular intervals (typically every 250 ms or 1000 ms) to listen for a special “beam” signal.

The communication pattern is:

  1. The controller (e.g., your Z‑Wave stick) sends a beam signal to wake the FLiRS device.
  2. The FLiRS device wakes, listens longer, and accepts incoming commands.
  3. After processing the command and sending any required reports, it returns to its low‑power listening schedule.

This allows the device to:

  • Respond relatively quickly (hundreds of milliseconds–a few seconds),
  • While maintaining good battery life.

However, this timing is very different from mains‑powered Z‑Wave devices, which are awake and always listening.

2. How Home Assistant Automations Expect Devices to Behave

A typical Home Assistant automation (using the Z‑Wave integration or Z‑Wave JS) runs like this:

  1. Trigger fires
    • Example: “Door unlocked”, “Time is 22:00”, or “Person arrives home”.
  2. Conditions are evaluated
    • Example: “Only if this lock is unlocked” or “Only if this sensor is off”.
  3. Actions are executed in sequence
    • Example:
      • Turn on porch light
      • Lock another door
      • Send notification
      • Wait until some state changes
      • Turn off something else

For automations to feel smooth, Home Assistant implicitly assumes that:

  • Devices respond to commands within a short, predictable time window.
  • State updates (e.g., lock status, thermostat mode) are reflected quickly in Home Assistant.
  • If a command is sent, the corresponding state will update before the next dependent step runs (or at least within configurable timeouts).

FLiRS devices violate some of these assumptions, especially when:

  • Z‑Wave network quality is mediocre,
  • Device firmware is slow or buggy,
  • Automations chain several state‑dependent actions on FLiRS nodes.

This is where “skipped” or “out‑of‑order” behavior appears.

3. What “Skipping Steps” Looks Like in Practice

Common symptoms when FLiRS devices are involved:

  • A “Goodnight” automation:
    • Turns off lights,
    • Fails to lock a Z‑Wave lock, or
    • Locks it, but Home Assistant still shows it as “unlocking…” or unchanged.
  • An “Arrive home” automation:
    • Unlocks the front door,
    • Is supposed to wait until it’s confirmed “unlocked”,
    • Then turn on lights and disarm an alarm.
    • In reality:
      • The light comes on,
      • The alarm may disarm,
      • But the “wait until locked/unlocked” step times out or is skipped because the lock’s state update is late or missing.
  • Automations with wait_template or choose blocks that:
    • Depend on a FLiRS device’s new state within a short timeout,
    • End up taking the default path or aborting, as if the desired state never happened.

To the user, this looks like Home Assistant skips steps, but technically:

  • The automation is running exactly as written,
  • It just never sees the expected state conditions become true in time, due to FLiRS timing and Z‑Wave communication behavior.

4. Why FLiRS Devices Cause Automation Steps to Be Skipped

There are several interacting reasons; most are related to timing, acknowledgements, and state reporting.

4.1 Delayed Command Delivery and Processing

When Home Assistant sends a command to a FLiRS device:

  1. The command is queued to the Z‑Wave controller.
  2. The controller must send a beam to wake the device.
  3. The FLiRS device wakes, then accepts the command.
  4. The device acts (lock, unlock, adjust temperature) and may send a status report.

If:

  • The network is busy,
  • The beam or command must be retried,
  • Routing is sub‑optimal,

then this sequence can take significantly longer than a second or two.

Meanwhile, your automation might:

  • Move on to the next step,
  • Evaluate a condition, or
  • Hit a wait_template timeout,
    before the actual device state has changed or been reported.

Result: The automation never sees the state it’s waiting for, and so that step is effectively skipped or fails.

4.2 Missing or Unreliable State Reports

Some FLiRS devices (particularly older locks and thermostats):

  • Do not always send unsolicited reports after a state change, or
  • Only send limited information, or
  • Rely heavily on polling rather than push updates.

If Home Assistant is:

  • Waiting for a lock.locked or lock.unlocked state event,
  • But the lock only sends that report inconsistently,

then:

  • Even if the lock successfully changes state,
  • The automation may never see the updated state in the entity,
  • So conditional or wait_* steps that depend on that state never become true.

From the automation’s perspective, its condition fails or times out, so it goes on to the next branch or exits, i.e. it “skips” a logical step.

4.3 Tight Timeouts in wait_template or wait_for_trigger

Automations often use constructs like:

YAML

- service: lock.lock

  target:

    entity_id: lock.front_door

 

- wait_template: "{{ is_state('lock.front_door', 'locked') }}"

  timeout: "00:00:05"

  continue_on_timeout: false

If the FLiRS lock:

  • Needs more than 5 seconds to:
    • Wake,
    • Process the command,
    • Send the updated status,

the wait_template times out. Depending on configuration:

  • The automation may abort or
  • Skip subsequent steps because continue_on_timeout: false.

Even if the lock successfully locked a moment later, the automation already gave up waiting.

4.4 Race Conditions Between Multiple Commands

Chained actions often look like:

  • Lock door A
  • Then lock door B
  • Then check both are locked
  • Then turn off lights

With multiple FLiRS devices, you may see:

  • Commands being queued and interleaved,
  • Devices waking at slightly different times,
  • State reports arriving out of the order you expect.

If your logic assumes:

  • “First lock A, wait until locked, then lock B, then wait, then do X”,

but the underlying Z‑Wave network:

  • Batch processes or parallelizes these commands,
  • Or state updates arrive with jitter,

the automation might evaluate conditions in the wrong moment, making it appear like some steps are skipped.

4.5 Driver / Integration and Secure Inclusion Overhead

In Home Assistant, FLiRS devices are usually controlled via:

  • Z‑Wave JS integration (current standard), or historically
  • The older OpenZWave or legacy integrations.

FLiRS devices are often security‑enabled (S0/S2), especially locks. Secure communication adds:

  • Extra round trips for encryption handshakes,
  • More bandwidth per command,
  • More processing time on both ends.

On a busy or marginal network, these overheads can:

  • Increase latency further,
  • Make timeouts in automations more likely,
  • Cause dropped or requeued commands.

Again, automations that assume instant or near‑instant state transitions are vulnerable.

5. How to Confirm FLiRS and Z‑Wave Timing Are Causing the Problem

To avoid guessing, you can:

5.1 Check the Device Type

In Z‑Wave JS UI or your Z‑Wave controller tools, inspect the device info:

  • Many drivers explicitly label devices as FLiRS or “Frequently Listening Routing Slave”.
  • Door locks, thermostats and battery actuators are strong candidates.

If the problematic devices are indeed FLiRS, timing issues are very likely.

5.2 Review Z‑Wave JS Logs

Enable debug or detailed logging for the Z‑Wave integration and:

  1. Run the automation.
  2. Look at the timestamps for:
    • When commands are sent to the FLiRS device.
    • When acknowledgements and status reports arrive.

If you see:

  • Long gaps,
  • Multiple retries, or
  • No report following a command,

then the “skipped” automation step is really a timeout or missing event, not a logic error.

5.3 Test Device Responsiveness Manually

From Home Assistant UI:

  • Call the service to lock/unlock or control the FLiRS device.
  • Time how long it takes for:
    • The physical change to occur, and
    • The integration’s entity state to update.

If the delay is close to or exceeds timeouts you use in automations, adjust your logic accordingly.

6. How to Design Automations That Work Reliably With FLiRS Devices

You can’t change how FLiRS works, but you can design around it.

6.1 Avoid Strict Short Timeouts on FLiRS State

If you use wait_template or wait_for_trigger:

  • Increase timeout for FLiRS devices (e.g., 15–30 seconds instead of 3–5).
  • Or, where possible, design automations that:
    • Do not depend on immediate confirmation of the FLiRS state, or
    • Use notifications or follow‑up checks rather than blocking waits.

Example adjustment:

YAML

- service: lock.lock

  target:

    entity_id: lock.front_door

 

- wait_template: "{{ is_state('lock.front_door', 'locked') }}"

  timeout: "00:00:20"

  continue_on_timeout: true

 

- choose:

    - conditions: "{{ is_state('lock.front_door', 'locked') }}"

      sequence:

        - service: notify.mobile_app_phone

          data:

            message: "Front door locked successfully."

  default:

    - service: notify.mobile_app_phone

      data:

        message: "Front door may not have locked, please check."

The automation no longer “hangs” or silently skips; it handles FLiRS latency explicitly.

6.2 Use Event‑Based or Command Acknowledgements When Available

Some devices and Z‑Wave drivers expose reliable events when commands succeed, e.g.:

  • Specific lock operation reports,
  • Thermostat mode reports.

If you can trigger follow‑up steps from those events (or device‑specific entities) rather than naive state reads, your automations align better with how the device actually reports status.

6.3 Simplify and Decouple Critical Sequences

Instead of writing one long linear automation that does everything in order, consider:

  • Splitting into multiple smaller automations or scripts:
    • One to send the command to the FLiRS device.
    • Another to react when the device finally reports the desired state.

For example:

  1. Automation A:
    • Trigger: “Goodnight scene activated.”
    • Action: Send lock commands to all locks; send a notification that locking was requested.
  2. Automation B:
    • Trigger: “Lock entity changes to locked.”
    • Action: Append to a log or send a confirmation message.

This way, you don’t create a big chain of actions that can stall or misbehave because of one slow FLiRS step.

6.4 Optimize Your Z‑Wave Network

A healthier Z‑Wave network reduces FLiRS latency:

  • Place enough mains‑powered Z‑Wave repeaters (switches, plugs, outlets) between the controller and FLiRS devices.
  • Avoid long, marginal radio links—ensure good signal paths to locks and thermostats near doors and edges of the house.
  • Position your Z‑Wave USB dongle:
    • On a USB extension cable, away from the host and metal,
    • Centrally in your home.
  • Keep the Z‑Wave JS driver and controller firmware up to date.

Better routing and fewer retries mean FLiRS devices respond more predictably, so Home Assistant is less likely to run ahead of reality.

6.5 Re‑Interview / Reconfigure FLiRS Devices

Sometimes the issue is:

  • Incomplete device interview,
  • Wrong command classes enabled, or
  • Poor parameter defaults.

Use Z‑Wave JS tools to:

  • Re‑interview the device so the integration knows all supported reports and behaviors.
  • Check device‑specific config hints or community docs:
    • Some locks need extra parameters enabled to send unsolicited status reports.
  • If the device supports it, enable hail/report on local operation so that manual usage (keypad, thumbturn) is reflected quickly.

6.6 Rethink “All‑or‑Nothing” Logic With FLiRS Nodes

Avoid writing logic like:

“If lock A, lock B, and lock C are all locked within 5 seconds, then do X, else do Y.”

FLiRS nodes notoriously do not guarantee synchronized completion like that. Instead:

  • Treat each FLiRS device’s success or failure as something to log or notify about,

Don’t hinge an entire automation’s behavior on a tight timeframe.

7. Summary

Home Assistant automations often appear to skip steps when Z‑Wave devices enter or operate in FLiRS mode because:

  • FLiRS devices sleep and only wake periodically to receive commands, adding latency.
  • Status reports may be delayed, inconsistent, or missing, particularly on older or poorly configured locks and thermostats.
  • Automations that use short timeouts or tightly chained state‑dependent actions often time out or evaluate conditions before the FLiRS device has finished updating.
  • Secure inclusion, routing, and network quality can amplify these delays.

The automation engine is not randomly ignoring steps; it is following the logic you defined, but that logic may not match the real‑world timing and reporting behavior of FLiRS devices.

To make automations reliable with FLiRS nodes:

  • Avoid strict, short waits on FLiRS state; increase timeouts or use notifications.
  • Design decoupled, event‑driven flows instead of long linear chains.
  • Optimize your Z‑Wave network and device configuration to reduce latency and improve reporting.
  • Re‑interview and tune device parameters where needed.

With these adjustments, Home Assistant and Z‑Wave FLiRS devices can work together without “skipped” steps, even in complex smart home automations.

 

Post a Comment

Why do my Philips Hue bulbs turn on by themselves after a power outage, even when I set them to “PowerOn Behavior: Last State”?

If your Philips Hue bulbs turn on automatically after a power outage—even when “PowerOn Behavior” is set to Last State—the problem is usually related to hub limitations, bulb firmware, or power fluctuation behavior. Below are the most common reasons and how to fix them. Personal Experience: I personally ran into this issue with my Philips Hue setup when several bulbs started turning on by themselves late at night, even though no schedules or motion sensors were active. At first, I assumed it was a hardware defect, but after digging deeper into the Hue app, Home Assistant logs, and power history, I realized the problem was caused by overlapping automations and power recovery settings.   🔹 1. The feature only works when the Hue Bridge is reachable "PowerOn Behavior" is processed inside the bulb only after it successfully reconnects to the Hue Bridge. During unstable or rapid power fluctuations, the bulb may turn on before it has time to reconnect. Fix:   Use a UPS...

Best 7 AI‑Integrated Smart Security Cameras 2026 Guide

  Human & Pet Detection for US and Hong Kong Homes Introduction: Why AI Security Cameras Matter More in 2026 In 2026, the question for homeowners and renters in the US and Hong Kong is no longer “Do I need a security camera?” but “Which AI‑powered smart camera should I buy?” Modern  AI‑integrated security cameras  do much more than record video. They can: ·          Distinguish  people from animals and vehicles ·          Send  smart alerts only when it really matters ·          Integrate with your  smart home  (Alexa, Google Home, Apple Home) ·          Store footage  locally or in the cloud  with strong encryption This is especially important in: ·          The US , where many houses have yards, driveways, ...

Why Does My Philips Hue Zigbee Network Become Unstable When My Aeotec Z-Wave Hub Starts a Network Heal After Adding New Devices?

🔍 Direct Solution Snippet (Featured Snippet Style) Your Philips Hue Zigbee network becomes unstable during Z-Wave network healing because both protocols generate high RF traffic and may overlap in the 2.4 GHz band , causing interference. Additionally, Z-Wave healing can create temporary routing congestion that affects nearby Zigbee coordinators. Adjusting channel allocation, distancing hubs, and limiting simultaneous mesh rebuilds typically resolves the issue.    Preliminary Diagnostic Steps Before applying any fix, run these technical diagnostic checks to confirm the cause of the instability: 1. Check Zigbee Channel Overlap Verify that your Hue Bridge Zigbee channel (usually 11, 15, 20, or 25) does not overlap with your Wi-Fi or Z-Wave activity. Use a Wi-Fi analyzer to inspect 2.4 GHz congestion. 2. Review Z-Wave Heal Logs On your Aeotec or Z-Wave JS interface, inspect logs during the network heal process. Look for spikes in routing attempts, failed node re...

Why is my Apple HomeKit automation not triggering when using a combination of motion sensors and timebased conditions?

  If your Apple HomeKit automations are failing to trigger when combining a motion sensor with timebased conditions (such as "Only after sunset" or "Between 7 PM and 11 PM"), you're facing one of the most common HomeKit issues. The problem usually comes from misconfigured conditions or device communication problems. Here’s a clear guide to understanding and fixing it.   ⭐ 1. Incorrect Time Conditions in the Automation HomeKit is very strict when using combined conditions. If your time range or sunset/sunrise settings conflict, the automation will simply not run.   ✅ Solution   Recreate the automation from scratch.   Use a simple time window (e.g., 7 PM–11 PM).   Avoid overlapping with sunset/sunrise unless necessary.   ⭐ 2. Motion Sensor Delays or Sleep Mode Batterypowered motion sensors often go into sleep mode to preserve battery, causing slow or missed triggers.   Common affected devices:   Aqara motion sensors ...

Why Google Home Routines Are Delayed When Thread and Zigbee Motion Sensors Trigger at the Same Time

If your Google Home routine is supposed to turn on the lights “instantly” when there’s motion, but you notice a delay specifically when both a Thread and a Zigbee motion sensor report at the same time, you are running into a mix of network paths, cloud processing, and event handling logic inside Google’s automation engine. This isn’t a bug in one single device, but a sideeffect of how Google Home stitches together different smart home standards.   How Google Home Actually Handles Motion Triggers Before looking at the delay, it helps to understand what’s happening from the moment you move until the routine runs.   1. The path for a Thread motion sensor A typical Threadbased motion sensor in Google’s ecosystem works like this: 1. Motion detected by the sensor.   2. The event travels over the Thread mesh to a Thread Border Router (for example: Nest Hub 2nd gen, Nest Wifi Pro, some Nest routers).   3. The border router forwards that event to the Google Ho...

Why Do Google Home Routines Lose State Synchronization With Matter Lights After Firmware Updates?

Smart home users increasingly rely on  Matter lights  with  Google Home routines  for reliable, local control. Yet a common pattern appears after a firmware update on the lights: The light still responds to Google Home commands,  but Google Home shows the  wrong on/off/brightness state , or Routines that depend on the light’s state start  misfiring or not running at all . In other words,  state synchronization  between Google Home and the Matter light breaks after the update. This usually isn’t a random bug. It is the result of how: Matter devices present themselves to controllers Google Home subscribes to state updates Firmware changes alter identities, endpoint structures, or reporting behavior This article explains  why state sync breaks ,  how it affects routines , and  how to fix it safely . 1. How Google Home Tracks the State of a Matter Light When you add a Matter ligh...

Why does my Aqara door sensor randomly disconnect from Home Assistant when using the Sonoff Zigbee 3.0 USB dongle?

  Random disconnections of Aqara door sensors when paired with the Sonoff Zigbee 3.0 USB dongle usually occur due to compatibility issues, channel interference, or weak mesh routing. Aqara devices are known to be more sensitive than other Zigbee brands, which makes them disconnect if the network is not optimized.   1.Zigbee Channel Interference If your Wi-Fi router is using channels 1, 6, or 11, it may overlap with Zigbee channels 11–26. Aqara sensors are especially vulnerable to this type of interference. Fix:   Change Zigbee channel to 20, 21, or 25.   Keep the USB dongle at least 1 meter away from your Wi-Fi router.   2. Weak Mesh or No Router Devices Battery-powered Aqara sensors do not repeat signals. If there are no Zigbee routers nearby (smart plugs, bulbs), the sensor may lose connection. Fix:   Add at least one Zigbee router between the sensor and your dongle.   Avoid placing the sensor behind metal doors or thick walls. ...

Why do IFTTT location automations fail on Android but work on iPhone for the same smart home triggers?

IFTTT location automations work on iPhone but fail on Android? Learn why Android geolocation is unreliable and how to fix IFTTT location triggers step by step. How IFTTT Location Triggers Actually Work Before troubleshooting Android, it helps to understand how IFTTT location triggers work in general. When you use a location-based applet like: “When I arrive home, turn on the lights” “When I leave work, adjust the thermostat” IFTTT relies on  geofencing : You define a location (lat/long + radius). Your phone’s OS (iOS or Android) tracks your position using: GPS Wi‑Fi networks Cell towers Motion sensors When the OS detects you  enter or exit  the geofence, it wakes the IFTTT app. IFTTT sends the trigger to its cloud, which then calls your smart home service (SmartThings, Philips Hue, Home Assistant, etc.). So in most cases,  the phone OS , not IFTTT itself, is responsible for location tracking reliability...

Why Does My Home Assistant ZHA Network Experience Random Device Dropouts When My Wi-Fi 6E Router Enables Automated Frequency Coordination (AFC) on the 6 GHz Band?

Direct Solution Snippet Home Assistant ZHA networks may experience random device dropouts when a Wi-Fi 6E router enables AFC because the router increases its transmit power and dynamically adjusts antenna patterns on the 6 GHz band. These adjustments can create broadband RF noise , induce 2.4 GHz leakage , or overload the environment with high-energy emissions that destabilize nearby Zigbee radios. Adjusting router placement, reducing interference, and optimizing Zigbee channel settings resolves the dropouts. H2: Preliminary Diagnostic Steps Check ZHA Device Availability Logs In Home Assistant → Settings → System → Logs → ZHA Look for repeated “device offline,” “missed heartbeat,” or “No response from device” errors. Monitor Wi-Fi 6E Router Logs Open your router’s admin interface and review AFC-related messages such as: “AFC power adjustment applied” “6 GHz beamforming recalibration” “Dynamic frequency reassignment” ...

What Causes Zigbee-to-Matter Bridging Delays on Home Assistant When Z-Wave Automations Run Simultaneously?

Smart homes running Home Assistant increasingly rely on multi-protocol environments that include Zigbee, Matter, and Z-Wave devices working together. While Home Assistant is designed to coordinate these technologies efficiently, users sometimes notice significant delays in Zigbee-to-Matter bridging when Z-Wave automations are triggered at the same time . This issue is more common in homes with dense mesh networks or heavy automation workflows. Understanding the root causes can help optimize system performance and reduce latency. 1. CPU and Thread Overload in Home Assistant’s Core Home Assistant processes Zigbee, Z-Wave, and Matter events through various integrations and radio interfaces. When Z-Wave automations run—including switches, locks, or sensors—they generate: Routing checks Packet decoding Event triggers State updates At the same time, Zigbee-to-Matter bridging involves: Translating Zigbee attribute messages Converting them to Matter-compatible ...
NextGen Digital Welcome to WhatsApp chat
Howdy! How can we help you today?
Type here...