Z-Wave event

The Z-Wave event trigger fires on Z-Wave JS controller, driver, or node events. Use it to react to events that the Z-Wave JS layer reports but that Home Assistant does not surface as a regular state change.

This trigger is useful when:

  • You want to react to controller or driver lifecycle events, like inclusion or interview progress.
  • You want to react to a node event that is not exposed as an entity state.
  • You need to match a specific event by name and, optionally, by event data.

Note

This trigger is configured in YAML only. It cannot be added from the automation editor in the UI.

There is strict validation in place based on all known event types. If you come across an event type that is not supported, open a GitHub issue in the home-assistant/core repository.

Using this trigger in YAML

If you work directly in YAML, or you want to know exactly what Home Assistant does under the hood, this section has the technical reference. It lists the field names you use in YAML, their types, and which ones are required.

In YAML, refer to this trigger as zwave_js.event. A basic example looks like this:

TriggerA trigger is a set of values or conditions of a platform that are defined to cause an automation to run. [Learn more]
trigger: zwave_js.event
device_id: 45d7d3230dbb7441473ec883dab294d4
event_source: node
event: "interview failed"

This fires when the interview failed event is reported for the targeted device.

Options in YAML

For node events, at least one of device_id or entity_id must be set. For controller and driver events, config_entry_id must be set instead.

trigger string Required

The trigger type. For this trigger, use zwave_js.event.

event_source string Required

The source of the event. One of node, controller, or driver.

event string Required

The event name. Refer to the Z-Wave JS documentation for the available events.

device_id string | list

One or more device IDs of Z-Wave devices to watch. Required for node events when entity_id is not set.

entity_id string | list

One or more entity IDs whose devices should be watched. Required for node events when device_id is not set.

config_entry_id string

The config entry ID of the Z-Wave network. Required for controller and driver events.

event_data map

A mapping of event data fields that must match for the trigger to fire.

partial_dict_match boolean

When true, only the fields listed in event_data need to match. Other fields in the actual event are ignored.

Good to know

  • Event names and the structure of event data come from Z-Wave JS. The set of available fields depends on the event.
  • When an event includes nested fields (for example, an args mapping inside event_data), use partial_dict_match: true if you only want to match a subset of those fields.
  • This trigger does not appear in the automation editor in the UI. You can add it by editing the automation in YAML mode.

Available trigger data

In addition to the standard automation trigger data, this trigger exposes the following template variables:

  • trigger.device_id: Device ID for the device in the device registry. Only included for node events.
  • trigger.node_id: Z-Wave node ID. Only included for node events.
  • trigger.event_source: Source of the event (node, controller, or driver).
  • trigger.event: Name of the event.
  • trigger.event_data: Any data included in the event.

More examples

Real scenarios where this trigger fires in automations and scripts. Copy any example and adapt it to your setup.

Tip

You don’t need to edit YAML to use these examples. Copy a YAML snippet from this page, open the automation editor in Home Assistant, and press Ctrl+V (or Cmd+V on Mac). Home Assistant automatically converts the pasted YAML into the visual editor format, whether it’s a full automation, a single trigger, a condition, or an action.

Automation: notify when a node interview fails

This automation fires when the interview failed event is reported for one of the listed devices, and only when the failure is final.

  • Trigger: Z-Wave event
    • Device: Garage door lock
    • Entities: lock.front_lock, lock.back_door
    • Event source: node
    • Event: interview failed
    • Event data: args.isFinal: true with Partial dict match enabled
  • Action: Send a notification
YAML example for a final interview failure notification
AutomationAutomations in Home Assistant allow you to automatically respond to things that happen in and around your home. [Learn more]
alias: "Notify on Z-Wave interview failure"
triggers:
  - trigger: zwave_js.event
    device_id: 45d7d3230dbb7441473ec883dab294d4
    entity_id:
      - lock.front_lock
      - lock.back_door
    event_source: node
    event: "interview failed"
    event_data:
      args:
        isFinal: true
    partial_dict_match: true
actions:
  - action: notify.send_message
    target:
      entity_id: notify.my_device
    data:
      message: "A Z-Wave node failed its interview."

Still stuck?

The Home Assistant community is quick to help: join Discord for real-time chat, post on the community forum with the trigger you’re using and what you expected to happen, or share on our subreddit /r/homeassistant.

Tip

AI assistants like ChatGPT or Claude can also explain triggers or suggest the right one when you describe what you want in plain language.

Related triggers

These triggers work well alongside this one: