Z-Wave


Z-Wave integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a supported Z-Wave USB stick to be plugged into the host.

There is currently support for switches, lights and sensors. All will be picked up automatically after configuring this platform.

Installation

To allow Home Assistant to talk to your Z-Wave USB stick you will have to compile the OpenZWave library and install the related python-OpenZWave package. This can be done as follows. (Note: The Home Assistant docker image has support for Z-Wave built-in)

Make sure you have the correct dependencies installed before running the script:

$ sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools

Make sure you have at least version 0.23 of cython.

$ sudo pip3 install --upgrade cython

Then get the OpenZWave files and switch to the python3 branch:

$ git clone https://github.com/OpenZWave/python-openzwave.git
$ cd python-openzwave
$ git checkout python3
$ PYTHON_EXEC=`which python3` make build
$ sudo PYTHON_EXEC=`which python3` make install

Instead of make install, you can alternatively build your own python-openzwave package which can be easily uninstalled: $ sudo PYTHON_EXEC=which python3 checkinstall --pkgname python-openzwave --pkgversion 1.0 --provides python-openzwave

With this installation, your config_path needed below will resemble:

/usr/local/lib/python3.4/dist-packages/libopenzwave-0.3.0b8-py3.4-linux-x86_64.egg/config

Configuration

# Example configuration.yaml entry
zwave:
  usb_path: /dev/ttyUSB0
  config_path: /usr/local/share/python-openzwave/config
  polling_interval: 10000
  customize:
    sensor.greenwave_powernode_6_port_energy_10:
        polling_intensity: 1

Configuration variables:

  • usb_path (Required): The port where your device is connected to your Home Assistant host.
  • config_path (Optional): The path to the Python Open Z-Wave configuration files.
  • polling_interval (Optional): The time period in milliseconds between polls of a nodes value.
  • customize (Optional): This attribute contains node-specific override values:
    • polling_intensity (Optional): Enables polling of a value and sets the frequency of polling (0=none, 1=every time through the list, 2-every other time, etc)

To find the path of your Z-Wave stick, run:

$ ls /dev/ttyUSB*

Or, on some other systems (such as Raspberry Pi), use:

$ ls /dev/ttyACM*

Depending on what’s plugged into your USB ports, the name found above may change. You an lock in a name, such as /dev/zwave, by following these instructions.

Events

Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch):

# Example configuration.yaml automation entry
automation:
  - alias: Turn on Desk light
    trigger:
      platform: event
      event_type: zwave.scene_activated
      event_data: 
        entity_id: zwaveme_zme_wallcs_secure_wall_controller_8
        scene_id: 11

The entity_id and scene_id of all triggered events can be seen in the console output.