diff --git a/source/_components/zwave.markdown b/source/_components/zwave.markdown index c448ff35401..5615187a21f 100644 --- a/source/_components/zwave.markdown +++ b/source/_components/zwave.markdown @@ -12,210 +12,6 @@ ha_category: Hub featured: true --- -[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host. +Please see the [getting started section] for in-depth documentation on how to use the Z-Wave component. -There is currently support for switches, lights and sensors. All will be picked up automatically after configuring this platform. - -### {% linkable_title 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](https://github.com/OpenZWave/python-openzwave). 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: - -```bash -$ sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools -``` - -Make sure you have at least version 0.23 of cython. - -```bash -$ sudo pip3 install --upgrade cython -``` - -Then get the OpenZWave files and switch to the `python3` branch: -
Do not use root to build python-openzwave as it will surely fail.
-```bash -$ 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: - -```bash -/usr/local/lib/python3.4/dist-packages/libopenzwave-0.3.0b8-py3.4-linux-x86_64.egg/config -``` - - -### {% linkable_title Configuration %} - -```yaml -# Example configuration.yaml entry -zwave: - usb_path: /dev/ttyUSB0 - config_path: /usr/local/share/python-openzwave/config - polling_interval: 60000 - 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. -- **autoheal** (*Optional*): Allows disabling auto ZWave heal at midnight. Defaults to True. -- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. -- **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). If not specified then your device will not be polled. - -To find the path of your Z-Wave stick, run: - -```bash -$ ls /dev/ttyUSB* -``` - -Or, on some other systems (such as Raspberry Pi), use: - -```bash -$ ls /dev/ttyACM* -``` - --Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). -
- -#### {% linkable_title 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): - -```yaml -# 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. - -#### {% linkable_title Services %} - -The Z-Wave component exposes four services to help maintain the network. - -| Service | Description | -| ------- | ----------- | -| add_node | Put the zwave controller in inclusion mode. Allows one to add a new device to the zwave network.| -| remove_node | Put the zwave controller in exclusion mode. Allows one to remove a device from the zwave network.| -| heal_network | Tells the controller to "heal" the network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | -| soft_reset | Tells the controller to do a "soft reset". This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.| -| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead".| - -The soft_reset and heal_network commands can be used as part of an automation script -to help keep a zwave network running relliably. For example: - -```yaml -# Example configuration.yaml automation entry -automation: - - alias: soft reset at 2:30am - trigger: - platform: time - after: '2:30:00' - action: - service: zwave.soft_reset - - - alias: heal at 2:31am - trigger: - platform: time - after: '2:31:00' - action: - service: zwave.heal_network -``` - -#### {% linkable_title Device Specific Notes & Configuration %} - -##### {% linkable_title Aeon Minimote %} - -Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. - -```yaml -- alias: Minimote Button 1 Pressed - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 1 - -- alias: Minimote Button 1 Held - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 2 - -- alias: Minimote Button 2 Pressed - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 3 - -- alias: Minimote Button 2 Held - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 4 - -- alias: Minimote Button 3 Pressed - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 5 - -- alias: Minimote Button 3 Held - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 6 - -- alias: Minimote Button 4 Pressed - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 7 - -- alias: Minimote Button 4 Held - trigger: - platform: event - event_type: zwave.scene_activated - event_data: - entity_id: aeon_labs_minimote_1 - scene_id: 8 -``` - -##### {% linkable_title Aeotec MultiSensor 6 %} - -In order for Home Assistant to recognize well the motion sensor, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report`. Currently there's no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it +[getting started section]: /getting-started/z-wave/ diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index edaff4fa797..46383b0136a 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -45,6 +45,14 @@-Upon first run, the z-wave component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess. -
- -## {% linkable_title Supported Z-Wave Sticks %} - -| Device | Works on Linux | Works on Windows | Works on OSX | Comments | -|-------------------------|----------------|------------------|--------------|-----------| -| Aeotec Z-Stick Series 2 | X | | | | -| Aeotec Z-Stick Series 5 | X | | | | -| Razberry GPIO Module | X | | | | - - -## {% linkable_title Stick Alternatives %} - -The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support: - - - [Vera](/components/vera/) - - -## {% linkable_title Modifying Zwave Device Settings %} -You may wish to modify the zwave settings ozw*.xml file in your .homeassistant root folder, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image. - -The reasoning for using these tools is that your Zwave controller stores the values and data that are used to control the network. The XML file in the .homeassistant folder acts as a settings/values cache for the zwave network, so modifying it directly won't change the network values. The Open-Zwave Control Panel writes values directly to the network, and will provide you with an updated .xml file to overwrite in your .homeassistant folder. This is the most foolproof way to make modifications to your zwave devices. diff --git a/source/getting-started/z-wave-controllers.markdown b/source/getting-started/z-wave-controllers.markdown new file mode 100644 index 00000000000..44d5495b3d5 --- /dev/null +++ b/source/getting-started/z-wave-controllers.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "Z-Wave USB Controllers" +description: "Extended instructions how to setup Z-Wave." +date: 2016-03-24 08:49 -0700 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Z-Wave is a popular home automation protocol that is not always straightforward to setup. This page will try to help you make sense of it all. + ++Upon first run, the z-wave component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess. +
+ +## {% linkable_title Supported Z-Wave Sticks %} + +| Device | Works on Linux | Works on Windows | Works on OSX | +|-------------------------|----------------|------------------|--------------| +| Aeotec Z-Stick Series 2 | ✓ | | | +| Aeotec Z-Stick Series 5 | ✓ | | | +| Razberry GPIO Module | ✓ | | | + + +## {% linkable_title Stick Alternatives %} + +The alternative to a stick is a hub that supports Z-Wave. Home Assistant supports the following hubs with Z-Wave support: + + - [Vera](/components/vera/) diff --git a/source/getting-started/z-wave-device-specific.markdown b/source/getting-started/z-wave-device-specific.markdown new file mode 100644 index 00000000000..df0d7363c00 --- /dev/null +++ b/source/getting-started/z-wave-device-specific.markdown @@ -0,0 +1,84 @@ +--- +layout: page +title: "Z-Wave Device Specific Settings" +description: "Extended instructions how to setup Z-Wave." +date: 2016-03-24 08:49 -0700 +sidebar: true +comments: false +sharing: true +footer: true +--- + +##### {% linkable_title Aeon Minimote %} + +Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. + +```yaml +- alias: Minimote Button 1 Pressed + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 1 + +- alias: Minimote Button 1 Held + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 2 + +- alias: Minimote Button 2 Pressed + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 3 + +- alias: Minimote Button 2 Held + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 4 + +- alias: Minimote Button 3 Pressed + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 5 + +- alias: Minimote Button 3 Held + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 6 + +- alias: Minimote Button 4 Pressed + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 7 + +- alias: Minimote Button 4 Held + trigger: + platform: event + event_type: zwave.scene_activated + event_data: + entity_id: aeon_labs_minimote_1 + scene_id: 8 +``` + +##### {% linkable_title Aeotec MultiSensor 6 %} + +In order for Home Assistant to recognize well the motion sensor, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report`. Currently there's no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it diff --git a/source/getting-started/z-wave-settings.markdown b/source/getting-started/z-wave-settings.markdown new file mode 100644 index 00000000000..ff23871c919 --- /dev/null +++ b/source/getting-started/z-wave-settings.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Z-Wave Settings" +description: "Extended instructions how to setup Z-Wave." +date: 2016-03-24 08:49 -0700 +sidebar: true +comments: false +sharing: true +footer: true +--- + +You may wish to modify the zwave settings ozw*.xml file in your .homeassistant root folder, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel). Alternatively, use [Domoticz](https://www.domoticz.com/), which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image. + +The reasoning for using these tools is that your Zwave controller stores the values and data that are used to control the network. The XML file in the .homeassistant folder acts as a settings/values cache for the zwave network, so modifying it directly won't change the network values. The Open-Zwave Control Panel writes values directly to the network, and will provide you with an updated .xml file to overwrite in your .homeassistant folder. This is the most foolproof way to make modifications to your zwave devices. diff --git a/source/getting-started/z-wave.markdown b/source/getting-started/z-wave.markdown new file mode 100644 index 00000000000..c188aa3b11f --- /dev/null +++ b/source/getting-started/z-wave.markdown @@ -0,0 +1,142 @@ +--- +layout: page +title: "Z-Wave" +description: "Instructions how to integrate your existing Z-Wave within Home Assistant." +date: 2016-02-27 19:59 +sidebar: true +comments: false +sharing: true +footer: true +--- + +[Z-Wave](http://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) 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. + +### {% linkable_title 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](https://github.com/OpenZWave/python-openzwave). 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: + +```bash +$ sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools +``` + +Make sure you have at least version 0.23 of cython. + +```bash +$ sudo pip3 install --upgrade cython +``` + +Then get the OpenZWave files and switch to the `python3` branch: +Do not use root to build python-openzwave as it will surely fail.
+```bash +$ 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: + +```bash +/usr/local/lib/python3.4/dist-packages/libopenzwave-0.3.0b8-py3.4-linux-x86_64.egg/config +``` + + +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +zwave: + usb_path: /dev/ttyUSB0 + config_path: /usr/local/share/python-openzwave/config + polling_interval: 60000 + 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. +- **autoheal** (*Optional*): Allows disabling auto ZWave heal at midnight. Defaults to True. +- **polling_interval** (*Optional*): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. +- **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). If not specified then your device will not be polled. + +To find the path of your Z-Wave stick, run: + +```bash +$ ls /dev/ttyUSB* +``` + +Or, on some other systems (such as Raspberry Pi), use: + +```bash +$ ls /dev/ttyACM* +``` + ++Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/). +
+ +#### {% linkable_title 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): + +```yaml +# 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. + +#### {% linkable_title Services %} + +The Z-Wave component exposes four services to help maintain the network. + +| Service | Description | +| ------- | ----------- | +| add_node | Put the zwave controller in inclusion mode. Allows one to add a new device to the zwave network.| +| remove_node | Put the zwave controller in exclusion mode. Allows one to remove a device from the zwave network.| +| heal_network | Tells the controller to "heal" the network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. | +| soft_reset | Tells the controller to do a "soft reset". This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command.| +| test_network | Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked "presumed dead".| + +The soft_reset and heal_network commands can be used as part of an automation script +to help keep a zwave network running relliably. For example: + +```yaml +# Example configuration.yaml automation entry +automation: + - alias: soft reset at 2:30am + trigger: + platform: time + after: '2:30:00' + action: + service: zwave.soft_reset + + - alias: heal at 2:31am + trigger: + platform: time + after: '2:31:00' + action: + service: zwave.heal_network +```