From 051997c9b84f2c74abd45968f6dce1323fdb98e0 Mon Sep 17 00:00:00 2001
From: Charles Garwood
Date: Sat, 14 Oct 2017 11:25:33 -0400
Subject: [PATCH 001/111] Add print friendly style overrides (#3621)
---
sass/custom/_print.scss | 39 +++++++++++++++++++++++++++++++++
sass/screen.scss | 1 +
source/_includes/site/head.html | 2 +-
3 files changed, 41 insertions(+), 1 deletion(-)
create mode 100644 sass/custom/_print.scss
diff --git a/sass/custom/_print.scss b/sass/custom/_print.scss
new file mode 100644
index 00000000000..fcf30d87d15
--- /dev/null
+++ b/sass/custom/_print.scss
@@ -0,0 +1,39 @@
+@media print {
+
+ /* General Overrides */
+ header div.grid__item nav {
+ display: none;
+ }
+ aside#sidebar {
+ display: none;
+ }
+ .grid__item {
+ display: block;
+ width: 100%;
+ }
+
+ /* Components List */
+ div.filter-button-group {
+ display: none;
+ }
+ .hass-option-cards.show-items {
+ display: block;
+ }
+ .hass-option-cards.show-items a.option-card {
+ display: block;
+ opacity: 1;
+ width: 100%;
+ height: auto;
+ min-height: 80px;
+ margin-bottom: 8px;
+ }
+ .hass-option-cards.show-items a.option-card .img-container {
+ float: left;
+ width: 33%;
+ text-align: center;
+ }
+ .hass-option-cards.show-items a.option-card div.title {
+ height: 1.5em;
+ margin-top: 8px;
+ }
+}
\ No newline at end of file
diff --git a/sass/screen.scss b/sass/screen.scss
index 5fed2c748de..78c73c19af2 100644
--- a/sass/screen.scss
+++ b/sass/screen.scss
@@ -2,3 +2,4 @@
@import 'custom/paulus';
@import 'custom/component_page';
@import 'custom/syntax';
+@import 'custom/print';
\ No newline at end of file
diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html
index 0c2a76007fc..b78976a342a 100644
--- a/source/_includes/site/head.html
+++ b/source/_includes/site/head.html
@@ -32,7 +32,7 @@
-
+
From 018890a3b89031d50aa13becfc3922a11c2f623a Mon Sep 17 00:00:00 2001
From: DubhAd
Date: Sat, 14 Oct 2017 18:16:28 +0100
Subject: [PATCH 002/111] Rewriting the Z-Wave documentation (#3467)
* Z-Wave documents refactoring
* Continuing to update documentation for Z-Wave
* Wakeup correction
Note that it only applies to devices that can be battery powered (for example, my Aeotec sensor is USB powered, but as it supports Wake the option is shown)
* Polling impact notes
Example of what the impact of polling can be
* Fix object_id to entity_id
---
source/_docs/z-wave.markdown | 249 +------------------
source/_docs/z-wave/adding.markdown | 36 +++
source/_docs/z-wave/control-panel.markdown | 106 ++++++++
source/_docs/z-wave/controllers.markdown | 24 +-
source/_docs/z-wave/device-specific.markdown | 58 +++--
source/_docs/z-wave/devices.markdown | 74 ++++++
source/_docs/z-wave/entities.markdown | 179 +++++++++++++
source/_docs/z-wave/events.markdown | 106 ++++++++
source/_docs/z-wave/installation.markdown | 159 ++++++++++++
source/_docs/z-wave/query-stage.markdown | 32 +++
source/_docs/z-wave/services.markdown | 59 +++++
source/_docs/z-wave/settings.markdown | 31 ---
12 files changed, 812 insertions(+), 301 deletions(-)
create mode 100644 source/_docs/z-wave/adding.markdown
create mode 100644 source/_docs/z-wave/control-panel.markdown
create mode 100644 source/_docs/z-wave/devices.markdown
create mode 100644 source/_docs/z-wave/entities.markdown
create mode 100644 source/_docs/z-wave/events.markdown
create mode 100644 source/_docs/z-wave/installation.markdown
create mode 100644 source/_docs/z-wave/query-stage.markdown
create mode 100644 source/_docs/z-wave/services.markdown
delete mode 100644 source/_docs/z-wave/settings.markdown
diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown
index 2e756036358..f6f4dd7b5d5 100644
--- a/source/_docs/z-wave.markdown
+++ b/source/_docs/z-wave.markdown
@@ -1,8 +1,8 @@
---
layout: page
title: "Z-Wave"
-description: "Instructions how to integrate your existing Z-Wave within Home Assistant."
-date: 2016-02-27 19:59
+description: "Using Z-Wave with Home Assistant."
+date: 2017-09-21 10:59
sidebar: true
comments: false
sharing: true
@@ -10,249 +10,24 @@ footer: true
redirect_from: /getting-started/z-wave/
---
-[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 or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) to be plugged into the host.
+[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 or module](/docs/z-wave/controllers/)) to be plugged into the host.
There is currently support for climate, covers, lights, locks, sensors, switches, and thermostats. All will be picked up automatically after configuring this platform.
-Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks.
+Before configuring the Z-Wave setup, please take a moment and read [this article](https://drzwave.blog/2017/01/20/seven-habits-of-highly-effective-z-wave-networks-for-consumers/) to understand the most common pitfalls of Z-Wave networks.
-### {% linkable_title Installation %}
+## {% linkable_title What is Z-Wave %}
-As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed.
+Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable.
-There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems):
+There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components.
-```bash
-$ sudo apt-get install libudev-dev
-```
+The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits.
-### {% linkable_title Configuration %}
+## {% linkable_title What do you need to use Z-Wave %}
-```yaml
-# Example configuration.yaml entry
-zwave:
- usb_path: /dev/ttyUSB0
-```
+There are 2 basic things you'll need to use Z-Wave, a Z-Wave [controller](/docs/z-wave/controllers/) and one or more [devices](/docs/z-wave/devices/).
-Configuration variables:
+### {% linkable_title Regional differences %}
-- **usb_path** (*Optional*): The port where your device is connected to your Home Assistant host.
-- **network_key** (*Optional*): The 16-byte network key in the form `"0x01,0x02..."` used in order to connect securely to compatible devices.
-- **config_path** (*Optional*): The path to the Python OpenZWave configuration files. Defaults to the 'config' that is installed by python-openzwave
-- **autoheal** (*Optional*): Allows disabling auto Z-Wave 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.
-- **device_config** (*Optional*): This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format:
- - **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.
- - **ignored** (*Optional*): Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
- - **refresh_value** (*Optional*): Enable refreshing of the node value. Only the light component uses this. Defaults to False.
- - **delay** (*Optional*): Specify the delay for refreshing of node value. Only the light component uses this. Defaults to 2 seconds.
- - **invert_openclose_buttons** (*Optional*): Inverts function of the open and close buttons for the cover domain. Defaults to `False`.
-- **debug** (*Optional*): Print verbose z-wave info to log. Defaults to `False`.
-- **new_entity_ids** (*Optional*): Switch to new entity_id generation. Defaults to `True`.
-
-To find the path of your Z-Wave USB stick or module, run:
-
-```bash
-$ ls /dev/ttyUSB*
-```
-
-Or, if there is no result, try to find detailed USB connection info with:
-```bash
-$ dmesg | grep USB
-```
-
-Or, on some other systems (such as Raspberry Pi), use:
-
-```bash
-$ ls /dev/ttyACM*
-
-# If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with:
-$ sudo usermod -a -G dialout homeassistant
-```
-
-Or, on some other systems (such as Pine 64), use:
-
-```bash
-$ ls /dev/ttyS*
-```
-
-Or, on macOS, use:
-
-```bash
-$ ls /dev/cu.usbmodem*
-```
-
-
-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/).
-
-
-
-After installing and configuring Z-Wave, Home Assistant will try to install required Python Z-Wave libraries during startup (if they are not already installed). This process might take anywhere between 5 to 25 minutes depending upon various factors. Please be patient, and let it run! This happens only once and the subsequent restarts will have no impact in performance.
-
-
-### {% linkable_title Adding Devices %}
-
-To add a Z-Wave device to your system, go to the Z-Wave panel in the Home Assistant frontend and click the Add Node button in the Z-Wave Network Management card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device.
-
-
-Some Z-Wave controllers, like Aeotec ZW090 Z-Stick Gen5, have ability to add devices to the network using their own contol buttons. This method should be avoided as it is prone to errors. Devices added to the Z-Wave network using this method may not function well.
-
-
-### {% linkable_title Adding Security Devices %}
-
-Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices.
-
-An easy script to generate a random key:
-```bash
-cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g'
-```
-
-### {% linkable_title Battery Powered Devices %}
-
-Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.
-
-### {% linkable_title Events %}
-
-#### {% linkable_title zwave.network_complete %}
-
-Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.
-
-```yaml
- - alias: Z-Wave network is complete
- trigger:
- platform: event
- event_type: zwave.network_complete
-```
-
-#### {% linkable_title zwave.network_ready %}
-
-Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.
-
-```yaml
- - alias: Z-Wave network is ready
- trigger:
- platform: event
- event_type: zwave.network_ready
-```
-
-#### {% linkable_title zwave.network_start %}
-
-Home Assistant will trigger an event when the Z-Wave network is set up to be started.
-
-```yaml
- - alias: Z-Wave network is starting
- trigger:
- platform: event
- event_type: zwave.network_start
-```
-
-#### {% linkable_title zwave.network_stop %}
-
-Home Assistant will trigger an event when the Z-Wave network is stopping.
-
-```yaml
- - alias: Z-Wave network is stopping
- trigger:
- platform: event
- event_type: zwave.network_stop
-```
-
-#### {% linkable_title zwave.node_event %}
-Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.
-
-Example:
-
-```yaml
- - alias: Minimote Button Pressed
- trigger:
- platform: event
- event_type: zwave.node_event
- event_data:
- entity_id: zwave.aeon_labs_minimote_1
- basic_level: 255
-```
-
-The *object_id* and *basic_level* of all triggered events can be seen in the console output.
-
-#### {% linkable_title zwave.scene_activated %}
-
-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: zwave.zwaveme_zme_wallcs_secure_wall_controller_8
- scene_id: 11
-```
-
-Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button:
-
-```yaml
-# Example configuration.yaml automation entry
-automation
- - alias: 'Dining room dimmer - double tap up'
- trigger:
- - event_type: zwave.scene_activated
- platform: event
- event_data:
- entity_id: zwave.dining_room_cans
- scene_id: 1
- scene_data: 3
-```
-
-The *object_id* and *scene_id* of all triggered events can be seen in the console output.
-
-For more information on HomeSeer devices and similar devices, please see the [device specific page](https://home-assistant.io/docs/z-wave/device-specific/#homeseer-switches).
-
-### {% linkable_title Services %}
-
-The `zwave` component exposes multiple services to help maintain the network.
-
-| Service | Description |
-| ------- | ----------- |
-| add_node | Put the Z-Wave controller in inclusion mode. Allows one to add a new device to the Z-Wave network.|
-| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows one to add a new device with secure communications to the Z-Wave network. |
-| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. |
-| change_association | Add or remove an association in the Z-Wave network |
-| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. |
-| print_config_parameter | Prints Z-Wave node's config parameter value to the log. |
-| print_node | Print all state of Z-Wave node. |
-| refresh_entity| Refresh Z-Wave entity by refreshing dependent values.|
-| refresh_node| Refresh Z-Wave node. |
-| remove_node | Put the Z-Wave controller in exclusion mode. Allows one to remove a device from the Z-Wave network.|
-| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
-| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. |
-| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail.|
-| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.|
-| reset_node_meters | Reset a node's meter values. Only works if the node supports this. |
-| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). |
-| set_poll_intensity | Lets the user set the polling intensity of a value. Changes the polling intensity without the need of a restart. This does not persist over restarts. To keep the setting over restarts, use the Z-Wave entity-card to set the config also.
-| 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.|
-| start_network | Starts the Z-Wave network.|
-| stop_network | Stops the Z-Wave network.|
-| 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 Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang. If you're having issues with your Z-Wave network, try disabling this automation.
-
-```yaml
-# Example configuration.yaml automation entry
-automation:
- - alias: soft reset at 2:30am
- trigger:
- platform: time
- at: '2:30:00'
- action:
- service: zwave.soft_reset
-
- - alias: heal at 2:31am
- trigger:
- platform: time
- at: '2:31:00'
- action:
- service: zwave.heal_network
-```
+There are 12 different regions for Z-Wave devices, which relates to the frequency the devices use. There is overlap between the regions, but you should ensure that you buy devices for your region. Wikipedia has a list of the [frequencies used](https://en.wikipedia.org/wiki/Z-Wave#Radio_frequencies).
\ No newline at end of file
diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown
new file mode 100644
index 00000000000..0ad7011a7cd
--- /dev/null
+++ b/source/_docs/z-wave/adding.markdown
@@ -0,0 +1,36 @@
+---
+layout: page
+title: "Z-Wave Devices - Adding and Removing"
+description: "How to add and remove Z-Wave devices."
+date: 2016-02-27 19:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+To add (include) a Z-Wave [device](/docs/z-wave/devices/) to your system, go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend and click the **Add Node** button in the *Z-Wave Network Management* card. This will place the controller in inclusion mode, after which you should activate your device to be included by following the instructions provided with the device.
+
+
+Don't use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.
+
+
+When you add a device, it may initially appear without a specific entity ID (eg `zwave.__`) and without other identifying information. Running a *Heal* should help speed this process up, and you'll need to run a *Heal* anyway so that all the devices in your Z-Wave network learn about the new device. You *might* need to restart Home Assistant (not reboot the system) to have the entity ID fully visible.
+
+## {% linkable_title Adding Security Devices %}
+
+Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method.
+
+An easy script to generate a random key:
+```bash
+cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
+```
+
+
+Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
+
+
+## {% linkable_title Removing Devices %}
+
+To remove (exclude) a Z-Wave device from your system, go to the Z-Wave control panel in the Home Assistant frontend and click the **Remove Node** button in the *Z-Wave Network Management* card. This will place the controller in exclusion mode, after which you should activate your device to be excluded by following the instructions provided with the device.
+
diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown
new file mode 100644
index 00000000000..0da748237b1
--- /dev/null
+++ b/source/_docs/z-wave/control-panel.markdown
@@ -0,0 +1,106 @@
+---
+layout: page
+title: "Z-Wave Control Panel"
+description: "How to use the Z-Wave control panel."
+date: 2017-09-21 12:49
+sidebar: true
+comments: false
+sharing: true
+footer: true
+redirect_from: /getting-started/z-wave-panel/
+---
+
+## {% linkable_title Z-Wave Network Management %}
+
+Here is where you [include and exclude](/docs/z-wave/adding/) Z-Wave devices from your network.
+
+* **Add Node** puts the controller into inclusion mode, so you can include (add) a device to your Z-Wave network
+* **Add Node Secure** puts the controller into secure inclusion mode (this requires that you've created a [security key](/docs/z-wave/adding#sdding-security-devices))
+* **Remove Node** puts the controller into exclusion mdoe, so you can exclude (remove) a device. Note that you can exclude a non-secure device that's been added to another network
+* **Cancel Command** cancels any of the above
+
+* **Heal Network** tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.
+* **Start Network** starts the Z-Wave network
+* **Stop Network** stops the Z-Wave network
+* **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, and may cause the Z-Wave network to hang.
+* **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".
+
+## {% linkable_title Z-Wave Node Management %}
+
+* **Refresh Node** refreshes the information on the node and its entities. If used on a battery powered device, the device will first need to wake for this to work.
+* **Remove Failed Node** will remove a failed node from the network. The node needs to be on the controller's Failed Node List (marked as `is_failed: true`), otherwise this command will fail.
+* **Replace Failed Node** will replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail.
+* **Print Node** prints all state of Z-Wave node to the console log
+
+* **Rename Node** sets a node's name
+
+
+Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.
+
+
+#### {% linkable_title Entities of this node %}
+
+This is a dropdown where you can select all the entities of this node. Once selected you can then use:
+
+* **Refresh Entity** to refresh just that entity's values
+* **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc)
+
+Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network.
+
+You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it.
+
+### {% linkable_title Node Information %}
+
+This will display the Z-Wave related information about the node:
+
+* **averageRequestRTT** The average Round Trip Time (RTT) of requests sent to the node, in milliseconds. A value of 250, for example, is a quarter of a second.
+* **averageResponseRTT** The average Round Trip Time of responses to requests
+* **battery_level** *Battery powered devices only* - the battery level, which may be rounded to the nearest 10
+* **capabilities** A comma separated list of the capabilities of the device
+* **friendly_name** The name you specified to be displayed
+* **is_awake** Whether the device is awake or not
+* **is_failed** Whether the device has been marked as failed. The controller won't try to contact failed devices.
+* **is_info_received** True once the controller has received the node information from the node.
+* **is_ready** When you start the network (or Home Assistant) it will take a short while before all devices are ready, this shows which aren't yet ready.
+* **is_zwave_plus** True for any Z-Wave Plus devices (note that controllers always report *false*, regardless of whether they are Plus devices or not)
+* **lastRequestRTT** The Round Trip Time of the last request
+* **lastResponseRTT** The Round Trip Time of the response to the last request
+* **manufacturer_name** The name of the manufacturer, as supplied by OpenZWave
+* **max_baud_rate** The maximum bandwidth the device supports, most modern devices will support 40,000 or higher
+* **new_entity_id** In 0.47, Home Assistant introduced a new naming convention for entities, this shows the new naming convention
+* **node_id** The unique node ID of this node
+* **node_name** The base name of this node, this is used to build the entity ID of all entities of this node
+* **old_entity_id** If `new_entity_ids: false` has been configured, then this is the entity_id that will be used. Support for this will be removed in the future
+* **product_name** The product name of the device, as supplied by OpenZWave
+* **query_stage** The query stage for this device (see [here](/docs/z-wave/query-stage/) for details)
+* **receivedCnt** The number of messages received from the device
+* **receivedDups** The number of duplicate messages received from the device
+* **receivedTS** The date and time the last message was received from the devices
+* **receivedUnsolicited** How many unsolicited messages were received
+* **retries** How many retries have been made to send messages to this node
+* **sentCnt** How many messages have been sent to the node
+* **sentFailed** How many messages that were sent weren't acknowledged
+* **sentTS** The date and time the last message was sent to the ndoe
+* **wake_up_interval** *Battery powered devices only* - the wakeup interval of the device, in seconds
+
+### {% linkable_title Node Values %}
+
+Allows you to rename the entities of the node. For example, maybe for the sensor `front_door`, you want to rename the value `seismic_intensity` to `shake`. The `entity_id` for that sensor will then change from `sensor.front_door_seismic_intensity` to `sensor.front_door_shake`.
+
+### {% linkable_title Node group associations %}
+
+Where the device supports the *Association* command class, this will allow you to associate the device with another. OpenZWave will automatically associate the device with the controller, to provide instant updates when the device doesn't support the *Hail* command class.
+
+You can use this to enable one device to directly control another. This is primarily useful for remote controls that operate lights or switches, or where you want to have multiple devices operate as one.
+
+There may be multiple groups, that are used for different purposes. The manual of your device will explain what each group is for.
+
+### {% linkable_title Node config options %}
+
+You can set the *wakeup* interval (in seconds) of the device, this is shown for all devices that can be battery powered, even if they are currently mains powered. The wakeup interval only applies when those devices are battery powered.
+
+Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake.
+
+## {% linkable_title OZW Log %}
+
+Select **Refresh** to display the log if you need it to check activities.
diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown
index 76831a22993..cb09d7c25f9 100644
--- a/source/_docs/z-wave/controllers.markdown
+++ b/source/_docs/z-wave/controllers.markdown
@@ -7,23 +7,23 @@ sidebar: true
comments: false
sharing: true
footer: true
-redirect_from: /getting-started/z-wave-controllers/
---
-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 `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expedite this process.
-
-
## {% linkable_title Supported Z-Wave USB Sticks & Hardware Modules %}
+You need to have a [supported Z-Wave USB stick or module](https://github.com/OpenZWave/open-zwave/wiki/Controller-Compatibility-List) installed.
+
| Device | Works on Linux | Works on Windows | Works on OSX |
|-------------------------|----------------|------------------|--------------|
+| Aeotec Z-Stick | ✓ | | |
| Aeotec Z-Stick Series 2 | ✓ | | |
| Aeotec Z-Stick Series 5 | ✓ | | ✓ |
| Pine64 Z-Wave Module | ✓ | | |
| Razberry GPIO Module | ✓ | | |
+| Seluxit ViaSens 100 | | | |
+| Sigma Designs UZB Stick | | | |
+| Tricklestar | | | |
+| Vision USB Stick | | | |
| ZWave.me UZB1 | ✓ | | |
## {% linkable_title Stick Alternatives %}
@@ -32,3 +32,13 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support
- [Vera](/components/vera/)
- [Wink](/components/wink/)
+
+## {% linkable_title Controller Notes }
+
+### {% linkable_title Aoetec Stick }
+
+By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick)
+
+### {% linkable_title Razberry Board }
+
+You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board)
diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown
index 0b6ef4ee261..a73ffd58e32 100644
--- a/source/_docs/z-wave/device-specific.markdown
+++ b/source/_docs/z-wave/device-specific.markdown
@@ -1,7 +1,7 @@
---
layout: page
title: "Z-Wave Device Specific Settings"
-description: "Extended instructions how to setup Z-Wave."
+description: "Notes for specific Z-Wave devices."
date: 2016-03-24 08:49 -0700
sidebar: true
comments: false
@@ -10,43 +10,50 @@ footer: true
redirect_from: /getting-started/z-wave-device-specific/
---
-## {% linkable_title Motion or alarm sensors %}
+## {% linkable_title Device Categories %}
+
+### {% linkable_title Motion or alarm sensors %}
In order for Home Assistant to recognize the sensor properly, you will need to change its configuration from `Basic Set (default)` to `Binary Sensor report` or `Alarm report`.
These devices will either show as a binary sensor or a sensor called `Alarm xxxx` and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.
-As of version 0.30 you can set the settings of a Z-Wave device through the dev_service page of Home Assistant with the service: `zwave/set_config_parameter`.
+You can set the settings of the Z-Wave device through the Z-Wave control panel.
-The following parameters can be entered:
-- **node_id** (*Required*): The node_id of the device that you are going to set a parameter to.
-- **parameter** (*Required*): The index number of the parameter to be set. Refer to device manual or zwcfg_[home_id].xml
-- **value** (*Required*): The value to set the parameter to. Refer to device manual or zwcfg_[home_id].xml
-- **size** (*Optional*): The size of the value. It is normally not needed to specify this parameter, but in some cases it's needed. Check OZW.log for details on this.
+### {% linkable_title Locks and other secure devices %}
-You should check OZW.log to see if your new setting has been set.
+These devices require a network key to be set for the Z-Wave network before they are paired, using the **Add Node Secure** option.
-Example entry in dev-service, setting binary reports for an Aeotec Multisensor 6:
+Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory, when you pair a secure device you should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection.
+### {% linkable_title Specific Devices %}
-```yaml
-# Example entry in dev-service
-{
-"node_id": 42,
-"parameter": 5,
-"value": 2
-}
+### {% linkable_title Aeotec Z-Stick %}
+
+It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off.
+
+Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected.
+
+Turn off "Disco lights":
+
+```bash
+$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00
```
-## {% linkable_title Locks and other secure devices %}
+Turn on "Disco lights":
-These devices require a network key to be set for the Z-Wave network before they are paired. This key is set in OpenZWave's `options.xml` which is located in OpenZWave's directory. This should also be the same directory as `config_path:` in your `configuration.yaml`. If it's not, make sure you have the same values in all the files you are using.
-The option is commented out by default in `options.xml` and is a default key. Make your own unique key. The key is in Hexadecimals.
-It is best to pair these devices in OpenZWave Control Panel or another Z-Wave tool that can show you logs while pairing. Home Assistant stores logs from Z-Wave in `OZW.log` in the Home Assistant config directory.
-You should see communication from the node with lines starting with `info: NONCES` in `OZW.log` when the device is paired successfully with a secure connection. If you use OpenZWave Control Panel to pair, test the device before you save the configuration.
-Make sure you copy the newly saved `zwcfg_[home_id].xml`into your Home Assistant configuration directory.
+```bash
+$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00
+```
+### {% linkable_title Razberry Board %}
-##### {% linkable_title Aeon Minimote %}
+You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`, then rebooting:
+
+```
+dtoverlay=pi3-disable-bt
+```
+
+### {% 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`.
@@ -124,8 +131,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
scene_id: 8
```
-
-##### {% linkable_title HomeSeer Switches %}
+### {% linkable_title HomeSeer Switches %}
For the HomeSeer devices specifically, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following:
diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown
new file mode 100644
index 00000000000..13d2966b4f4
--- /dev/null
+++ b/source/_docs/z-wave/devices.markdown
@@ -0,0 +1,74 @@
+---
+layout: page
+title: "Z-Wave Devices"
+description: "What you need to know about Z-Wave devices."
+date: 2017-09-21 11:49
+sidebar: true
+comments: false
+sharing: true
+footer: true
+redirect_from: /getting-started/z-wave-devices/
+---
+
+## {% linkable_title Devices, Nodes, Entities, what? %}
+
+The *device* is the hardware, and also used when referring to the node and all its entities. There are 3 main types of devices:
+
+* [Controllers](/docs/z-wave/controllers) - all Z-Wave networks need to have one of these, though some may have two (a primary and a secondary)
+* Sensors - devices that tell you about the environment, these could be flood sensors, motion sensors, temperature sensors and so on
+* Actors or actuators - devices that change their environment, for example light switches, dimmers, thermostats (many of these will also have a sensor function)
+
+Many sensors and actors can directly control other devices through a capability called *association*, without the use of an automation, these are known as *routing slaves*. This will be a very simple control, such as turning a light on when a motion sensor is activated, and off when it stops detecting motion.
+
+The *node* is the presence of the device on the Z-Wave mesh. Once you've added a device to Home Assistant, the node is represented by an `entity_id` that starts with `zwave`.
+
+The *entity* is an individual component of the node. It may be a sensor that you read from, or a control that you operate. For any node, there will be at least one entity (for the node itself) and if it exposes any controls or sensors there will be at least one entity per control or sensor. The [entities](/docs/z-wave/entities) that are created depend on the Command Class the device supports.
+
+## {% linkable_title Z-Wave, Plus, Security 2 %}
+
+There have been 2 extensions to the Z-Wave protocol. Using these requires that your controller supports these extensions, but devices are backwards compatible.
+
+### {% linkable_title Z-Wave Plus %}
+
+The key improvements are:
+
+* Improved battery life (50% increase)
+* Improved range (50% increase) if all your devices are Z-Wave Plus
+* Higher bandwidth and improved noise immunity if all your devices are Z-Wave Plus
+* Improved self-healing and fault tolerance
+
+### {% linkable_title Z-Wave Security 2 %}
+
+From 2 April 2017 all newly approved Z-Wave devices will have to support the Security 2 (S2) framework. At the time of writing this (September 2017) OpenZWave does not support the S2 framework.
+
+## {% linkable_title Device power %}
+
+Your Z-Wave mesh network is built with the devices that are mains powered (whether directly, or via a USB adapter), these relay traffic for other nodes, building the network. These devices are always awake and you can query them, or send configuration changes, at any time.
+
+Battery powered devices spend most of their time asleep, unable to relay traffic, to be queried, or receive changes. Changes sent while a device is asleep will be queued and sent the next time the device wakes. Details of the default wake interval, and how to manually wake the device (if supported) will be detailed in the devices's manual. Some battery powered devices (primarily locks and thermostats) support beaming (the *Beam* command class) that allows them to be remotely woken. This does require that all devices in the network responsible for relaying the commands between the controller and the device also support beaming.
+
+
+The Z-Wave capability *routing* doesn't mean the device routes traffic, it actually means that it's able to control other devices. You'll see this capability on most remotes and switches.
+
+
+## {% linkable_title Instant Status %}
+
+Older designs of Z-Wave devices may not support *Instant Status* (the *Hail* command class), because of a patent that was held by Lutron Electronics. Some manufacturers paid to use it, others didn't and so those devices may not report on changes. That patent expired in 2016, so new designs should support this.
+
+As long as your device lists Hail or Association in its Controlled Command Classes, then you'll get instant status updates. Devices that list Central Scene in their Controlled Command Classes in theory will also work this way, once OpenZWave supports the Central Scene class. You can check your device on the [Z-Wave alliance](https://products.z-wavealliance.org/) site, looking at the **Command Classes** link, then at the **Controlled Command Classes** section.
+
+## {% linkable_title Polling %}
+
+Where a device doesn't send updates on status changes to the controller, you can work around this by using a thing called Polling. That causes the controller to ask the device to provide an update on all its sensors and states. This will cause a lot of traffic on the network, and if you poll too many devices too quickly, you can effectively break your Z-Wave network. Polling should only be used where there is no other choice, and you should use as large a polling interval as possible. Ideally you should replace the device.
+
+For example, with `polling_interval=60000` (which is the default) if you have 10 devices that are being polled, if a device can receive and acknowledge the poll within one second, then it will take 10 seconds to complete the polling list, which leaves 50 seconds left for normal traffic. The more devices you poll, and the shorter the interval, the less bandwidth that's available for normal traffic.
+
+## {% linkable_title Central Scene support %}
+
+The Central Scene command class isn't yet supported in OpenZWave (there is [work in progress](https://github.com/OpenZWave/open-zwave/pull/1125) to provide it it), though Home Assistant has introduced some support with [change 9178](https://github.com/home-assistant/home-assistant/pull/9178) which was part of 0.53 and [documented here](/docs/z-wave/device-specific/#homeseer-switches).
+
+## {% linkable_title Is my device supported %}
+
+You can check to see if OpenZWave supports your particular device by looking at the [OpenZWave github](https://github.com/OpenZWave/open-zwave/tree/master/config). Be aware that being listed here doesn't mean that it will be supported in Home Assistant, since the version of OpenZWave used by Home Assistant will often lag the github by a few months.
+
+Even if your device isn't listed there, it's likely that it will still work as expected as long as the device complies with the Z-Wave standards. The OpenZWave wiki describes how [you can add support](https://github.com/OpenZWave/open-zwave/wiki/Adding-Devices) for your device if it isn't listed.
diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown
new file mode 100644
index 00000000000..0d48e989d66
--- /dev/null
+++ b/source/_docs/z-wave/entities.markdown
@@ -0,0 +1,179 @@
+---
+layout: page
+title: "Z-Wave Entity Naming"
+description: "A summary of common entity names."
+date: 2017-09-21 10:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+
+This is a work in progress, based upon reports in the forum, the author's own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here, or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS).
+
+
+## {% linkable_title Binary Sensor %}
+
+Devices that support the Binary Sensor command class will create one (or more) entities starting with `binary_sensor`. For example, if the node is `door_sensor` then the binary sensor entity will be `binary_sensor.door_sensor`.
+
+These will normally be `on` when the sensor is active, otherwise they will be `off`. Some devices use `on` for closed, and some use `on` for open, and some devices allow you to change how they report.
+
+## {% linkable_title Alarm %}
+
+This is for a single purpose sensor, multi sensors are explained under Multi Sensor.
+
+Devices (usually sensors) that support the Alarm command class will create entities starting with `sensor`, and with some generic suffixes, and a suffix that relates to the supported alarm class. For example, the smoke detector `lounge` will have an entity `sensor.lounge_smoke`, and possibly also `sensor.lounge_alarm_type` and `sensor.lounge_alarm_level`. If the device creates a `binary_sensor` entity, it is recommended to use that rather then the `sensor` entity.
+
+### {% linkable_title Alarm Type %}
+
+- **alarm_type**: Reports the type of the sensor
+ - **0**: General purpose
+ - **1**: Smoke sensor
+ - **2**: Carbon Monoxide (CO) sensor
+ - **3**: Carbon Dioxide (CO2) sensor
+ - **4**: Heat sensor
+ - **5**: Water leak sensor
+ - **6**: Access control
+
+### {% linkable_title Alarm Level %}
+
+The meaning of the `alarm_level` entity depends on the nature of the alarm sensor
+
+#### {% linkable_title Smoke, CO, and CO2 %}
+
+ - **1**: Detection - will include a Node Location Report
+ - **2**: Detection (unknown location)
+ - **254**: Unknown event
+
+#### {% linkable_title Heat %}
+
+ - **1**: Overheat detected - will include a Node Location Report
+ - **2**: Overheat detected (unknown location)
+ - **3**: Rapid temperature rise - will include a Node Location Report
+ - **4**: Rapid temperature rise (unknown location)
+ - **5**: Underheat detection - will include a Node Location Report
+ - **6**: Underheat detection (unknown location)
+ - **254**: Unknown event
+
+#### {% linkable_title Water leak %}
+
+ - **1**: Water leak detected - will include a Node Location Report
+ - **2**: Water leak detected (unknown location)
+ - **3**: Water level dropped - will include a Node Location Report
+ - **4**: Water level dropped (unknown location)
+ - **254**: Unknown event
+
+#### {% linkable_title Access control %}
+
+ - **1**: Manual lock
+ - **2**: Manual unlock
+ - **3**: RF lock
+ - **4**: RF unlock
+ - **5**: Keypad lock - will include the User Identifier of the User Code Report
+ - **6**: Keypad unlock - will include the User Identifier of the User Code Report
+ - **254**: Unknown event
+
+#### {% linkable_title Burglar %}
+
+ - **1**: Intrusion - will include a Node Location Report
+ - **2**: Intrusion (unknown location)
+ - **3**: Tampering (case opened)
+ - **4**: Tampering (invalid code)
+ - **5**: Glass break - will include a Node Location Report
+ - **6**: Glass break (invalid code)
+ - **254**: Unknown event
+
+#### {% linkable_title Power Management %}
+
+ - **1**: Power applied
+ - **2**: AC disconnected
+ - **3**: AC re-connected
+ - **4**: Surge detection
+ - **5**: Voltage drop or drift
+ - **254**: Unknown event
+
+#### {% linkable_title System Alarm %}
+
+ - **1**: System hardware failure
+ - **2**: System software failure
+ - **254**: Unknown event
+
+#### {% linkable_title Emergency Alarm %}
+
+ - **1**: Contact Police
+ - **2**: Contact Fire Service
+ - **3**: Contact Medical Service
+ - **254**: Unknown event
+
+#### {% linkable_title Alarm Clock %}
+
+ - **1**: Wake up
+ - **254**: Unknown event
+
+### {% linkable_title Access Control %}
+
+- **access_control**: These *may* vary between brands
+ - **22**: Open
+ - **23**: Closed
+ - **254**: Deep sleep
+ - **255**: Case open
+
+If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+
+```
+sensor:
+ - platform: template
+ sensors:
+ YOUR_SENSOR:
+ sensor_class: opening
+ friendly_name: "Friendly name here"
+ value_template: >-
+ {%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%}
+ open
+ {%- else -%}
+ closed
+ {%- endif -%}
+```
+
+### {% linkable_title Burglar %}
+
+- **burglar**: These *may* vary between brands
+ - **0**: Not active
+ - **2**: Smoke (?)
+ - **3**: Tamper
+ - **8**: Motion
+ - **22**: Open
+ - **23**: Closed
+ - **254**: Deep sleep
+ - **255**: Case open
+
+If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one:
+
+```
+sensor:
+ - platform: template
+ sensors:
+ YOUR_SENSOR:
+ sensor_class: motion
+ friendly_name: "Friendly name here"
+ value_template: >-
+ {%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%}
+ on
+ {%- else -%}
+ off
+ {%- endif -%}
+```
+
+### {% linkable_title Source Node ID %}
+
+- **sourcenodeid**: Reports the sensor that generated the alarm - this is only valid for Zensor Net based devices
+
+## {% linkable_title Multisensor %}
+
+Multi sensor devices will create a number of entities, one for each sensor, potentially a `binary_sensor` entity, and probably also `alarm_type` and `alarm_level` entities.
+
+These are all generally self explanatory, however it's worth noting:
+
+- **ultraviolet** sensors will usually report zero indoors, as UVB is blocked by glass
+- **luminance** sensors should report in [Lux](https://en.wikipedia.org/wiki/Lux)
diff --git a/source/_docs/z-wave/events.markdown b/source/_docs/z-wave/events.markdown
new file mode 100644
index 00000000000..c3b63a1282f
--- /dev/null
+++ b/source/_docs/z-wave/events.markdown
@@ -0,0 +1,106 @@
+---
+layout: page
+title: "Z-Wave Events"
+description: "Events generated by the Z-Wave component."
+date: 2017-09-21 10:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+## {% linkable_title zwave.network_complete %}
+
+Home Assistant will trigger an event when the Z-Wave network is complete, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.
+
+```yaml
+ - alias: Z-Wave network is complete
+ trigger:
+ platform: event
+ event_type: zwave.network_complete
+```
+
+## {% linkable_title zwave.network_ready %}
+
+Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.
+
+```yaml
+ - alias: Z-Wave network is ready
+ trigger:
+ platform: event
+ event_type: zwave.network_ready
+```
+
+## {% linkable_title zwave.network_start %}
+
+Home Assistant will trigger an event when the Z-Wave network is set up to be started.
+
+```yaml
+ - alias: Z-Wave network is starting
+ trigger:
+ platform: event
+ event_type: zwave.network_start
+```
+
+## {% linkable_title zwave.network_stop %}
+
+Home Assistant will trigger an event when the Z-Wave network is stopping.
+
+```yaml
+ - alias: Z-Wave network is stopping
+ trigger:
+ platform: event
+ event_type: zwave.network_stop
+```
+
+## {% linkable_title zwave.node_event %}
+Home Assistant will trigger an event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.
+
+Example:
+
+```yaml
+ - alias: Minimote Button Pressed
+ trigger:
+ platform: event
+ event_type: zwave.node_event
+ event_data:
+ entity_id: zwave.aeon_labs_minimote
+ basic_level: 255
+```
+
+The *entity_id* and *basic_level* of all triggered events can be seen in the console output.
+
+## {% linkable_title zwave.scene_activated %}
+
+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: zwave.zwaveme_zme_wallcs_secure_wall_controller
+ scene_id: 11
+```
+
+Some devices (like the HomeSeer wall switches) allow you to do things like double, and triple click the up and down buttons and fire an event. These devices will also send `scene_data` to differentiate the events. This is an example of double clicking the on/up button:
+
+```yaml
+# Example configuration.yaml automation entry
+automation
+ - alias: 'Dining room dimmer - double tap up'
+ trigger:
+ - event_type: zwave.scene_activated
+ platform: event
+ event_data:
+ entity_id: zwave.dining_room_cans
+ scene_id: 1
+ scene_data: 3
+```
+
+The *entity_id* and *scene_id* of all triggered events can be seen in the console output.
+
+For more information on HomeSeer devices and similar devices, please see the [device specific page](/docs/z-wave/device-specific/#homeseer-switches).
diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown
new file mode 100644
index 00000000000..c90787f7294
--- /dev/null
+++ b/source/_docs/z-wave/installation.markdown
@@ -0,0 +1,159 @@
+---
+layout: page
+title: "Z-Wave"
+description: "Installation of the Z-Wave component."
+date: 2017-09-21 10:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+redirect_from: /getting-started/z-wave-installation/
+---
+
+As of version 0.45, Home Assistant automatically installs python-openzwave from PyPI as needed. This also introduced the integrated Z-Wave control panel, removing the need for the OpenZWave control panel.
+
+There is one dependency you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems):
+
+```bash
+$ sudo apt-get install libudev-dev
+```
+
+
+The installation of python-openzwave can take half an hour or more on a Raspbery Pi.
+
+
+## {% linkable_title Configuration %}
+
+```yaml
+# Example configuration.yaml entry
+zwave:
+ usb_path: /dev/ttyUSB0
+```
+
+{% configuration zwave %}
+usb_path:
+ description: The port where your device is connected to your Home Assistant host.
+ required: false
+ type: string
+ default: /zwaveusbstick
+network_key:
+ description: The 16-byte network key in the form `"0x01, 0x02..."` used in order to connect securely to compatible devices.
+ required: false
+ type: string
+ default: None
+config_path:
+ description: The path to the Python OpenZWave configuration files.
+ required: false
+ type: string
+ default: the 'config' that is installed by python-openzwave
+autoheal:
+ description: Allows disabling auto Z-Wave heal at midnight.
+ required: false
+ type: boolean
+ default: True
+polling_interval:
+ description: 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.
+ required: false
+ type: integer
+ default: 60000
+debug:
+ description: Print verbose z-wave info to log.
+ required: false
+ type: boolean
+ default: False
+new_entity_ids:
+ description: Switch to new entity_id generation.
+ required: false
+ type: boolean
+ default: True
+device_config:
+ description: This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called **customize**) See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format.
+ required: false
+ type: string, list
+ keys:
+ ignored:
+ description: Ignore this entity completely. It won't be shown in the Web Interface and no events are generated for it.
+ required: false
+ type: boolean
+ default: False
+ polling_intensity:
+ description: 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.
+ required: false
+ type: integer
+ default: 0
+ refresh_value:
+ description: Enable refreshing of the node value. Only the light component uses this.
+ required: false
+ type: boolean
+ default: False
+ delay:
+ description: Specify the delay for refreshing of node value. Only the light component uses this.
+ required: false
+ type: integer
+ default: 2
+ invert_openclose_buttons:
+ description: Inverts function of the open and close buttons for the cover domain.
+ required: false
+ type: boolean
+ default: False
+{% endconfiguration %}
+
+### {% linkable_title Finding the controller path on Linux %}
+
+To find the path of your Z-Wave USB stick or module, connect it to your system and run:
+
+```bash
+$ ls -ltr /dev/tty*|tail -n 1
+```
+
+That will give you a line that looks something like this:
+
+```bash
+crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0
+```
+
+Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like `/dev/ttyAMA0` or `/dev/ttyACM0`). The number will be zero for the first device connected, and higher numbers for later devices.
+
+Or, if there is no result, try to find detailed USB connection info with:
+
+```bash
+$ dmesg | grep USB
+```
+
+If Home Assistant (`hass`) runs with another user (e.g. *homeassistant* on Hassbian) give access to the stick with:
+
+```bash
+$ sudo usermod -a -G dialout homeassistant
+```
+
+
+The output from `ls -ltr` above contains the following information
+The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`.
+
+
+#### {% linkable_title Creating a Persistent Device Path }
+
+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 Finding the controller path on macOS %}
+
+On macOS you can find the USB stick with:
+
+```bash
+$ ls /dev/cu.usbmodem*
+```
+
+### {% linkable_title Network Key %}
+
+Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices.
+
+An easy script to generate a random key:
+```bash
+cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//'
+```
+
+Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
+
+## {% linkable_title First Run %}
+
+Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may speed up this process.
diff --git a/source/_docs/z-wave/query-stage.markdown b/source/_docs/z-wave/query-stage.markdown
new file mode 100644
index 00000000000..2037963e455
--- /dev/null
+++ b/source/_docs/z-wave/query-stage.markdown
@@ -0,0 +1,32 @@
+---
+layout: page
+title: "Z-Wave Query Stage"
+description: "What are the Query Stages."
+date: 2017-09-21 11:49
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+| Stage | Description |
+|------------------------|--------------------------------------------------------------------|
+| None | Query process hasn't started for this node |
+| ProtocolInfo | Retrieve protocol information |
+| Probe | Ping device to see if alive |
+| WakeUp | Start wake up process if a sleeping node |
+| ManufacturerSpecific1 | Retrieve manufacturer name and product ids if ProtocolInfo lets us |
+| NodeInfo | Retrieve info about supported, controlled command classes |
+| NodePlusInfo | Retrieve ZWave+ info and update device classes |
+| SecurityReport | Retrieve a list of Command Classes that require Security |
+| ManufacturerSpecific2 | Retrieve manufacturer name and product ids |
+| Versions | Retrieve version information |
+| Instances | Retrieve information about multiple command class instances |
+| Static | Retrieve static information (doesn't change) |
+| CacheLoad | Ping a device upon restarting with cached config for the device |
+| Associations | Retrieve information about associations |
+| Neighbors | Retrieve node neighbor list |
+| Session | Retrieve session information (changes infrequently) |
+| Dynamic | Retrieve dynamic information (changes frequently) |
+| Configuration | Retrieve configurable parameter information (only done on request) |
+| Complete | Query process is completed for this node |
diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown
new file mode 100644
index 00000000000..84ff12b01f1
--- /dev/null
+++ b/source/_docs/z-wave/services.markdown
@@ -0,0 +1,59 @@
+---
+layout: page
+title: "Z-Wave Services"
+description: "Services exposed by the Z-Wave component."
+date: 2017-09-21 10:59
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+The `zwave` component exposes multiple services to help maintain the network. All of these are available through the Z-Wave control panel.
+
+| Service | Description |
+| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
+| add_node | Put the Z-Wave controller in inclusion mode. Allows you to add a new device to the Z-Wave network. |
+| add_node_secure | Put the Z-Wave controller in secure inclusion mode. Allows you to add a new device with secure communications to the Z-Wave network. |
+| cancel_command | Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decide you are not going to do it, then this must be used to stop the inclusion/exclusion command. |
+| change_association | Add or remove an association in the Z-Wave network |
+| heal_network | Tells the controller to "heal" the Z-Wave network. Basically asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing. |
+| print_config_parameter | Prints Z-Wave node's config parameter value to the (console) log. |
+| print_node | Print all states of Z-Wave node. |
+| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. |
+| refresh_node | Refresh the Z-Wave node. |
+| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. |
+| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
+| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. |
+| remove_failed_node | Remove a failed node from the network. The Node should be on the controller's Failed Node List, otherwise this command will fail. |
+| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. |
+| reset_node_meters | Reset a node's meter values. Only works if the node supports this. |
+| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g. `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g. `"value": 1`). |
+| 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. |
+| start_network | Starts the Z-Wave network. |
+| stop_network | Stops the Z-Wave network. |
+| 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 Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a `heal_network` at midnight. This is a configuration option for the `zwave` component. The option defaults to `true` but can be disabled by setting `autoheal` to false. If you're having issues with your Z-Wave network, try disabling this automation.
+
+
+Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang.
+
+
+```yaml
+# Example configuration.yaml automation entry
+automation:
+ - alias: test at 2:30am
+ trigger:
+ platform: time
+ at: '2:30:00'
+ action:
+ service: zwave.test_network
+
+ - alias: heal at 2:32am
+ trigger:
+ platform: time
+ at: '2:32:00'
+ action:
+ service: zwave.heal_network
+```
diff --git a/source/_docs/z-wave/settings.markdown b/source/_docs/z-wave/settings.markdown
deleted file mode 100644
index fecba91fd50..00000000000
--- a/source/_docs/z-wave/settings.markdown
+++ /dev/null
@@ -1,31 +0,0 @@
----
-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
-redirect_from: /getting-started/z-wave-settings/
----
-
-You may wish to modify the Z-Wave settings in your `ozw*.xml` file (stored in the `.homeassistant` configuration directory), 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 Z-Wave controller stores the values and data that are used to control the network. The XML file in the `.homeassistant` configuration directory acts as a settings/values cache for the Z-Wave network, so modifying it directly won't change the network values. The [Open-Zwave Control Panel](https://github.com/OpenZWave/open-zwave-control-panel) writes values directly to the network and will provide you with an updated `.xml` file to overwrite in your `.homeassistant` configuration directory. This is the most foolproof way to make modifications to your Z-Wave devices.
-
-It's totally normal for your Z-Wave stick (Aeon Aeotec Z-Stick Gen5 for example) to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don't like this behaviour it can be turned off.
-
-Use the following example commands from a terminal session on your Pi where your Z-Wave stick is connected.
-
-Turn off "Disco lights":
-
-```bash
-$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x00\x05\x01\x51" > /dev/serial/by-id/usb-0658_0200-if00
-```
-
-Turn on "Disco lights":
-
-```bash
-$ echo -e -n "\x01\x08\x00\xF2\x51\x01\x01\x05\x01\x50" > /dev/serial/by-id/usb-0658_0200-if00
-```
From 347f0913ab796b0505c6628ab09c147a080223b2 Mon Sep 17 00:00:00 2001
From: Kevin Fronczak
Date: Sat, 14 Oct 2017 13:37:06 -0400
Subject: [PATCH 003/111] Docs for uptime sensor (#3614)
* Docs for uptime sensor
* Update platform name
---
source/_components/sensor.uptime.markdown | 30 +++++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 source/_components/sensor.uptime.markdown
diff --git a/source/_components/sensor.uptime.markdown b/source/_components/sensor.uptime.markdown
new file mode 100644
index 00000000000..5aa633d57a9
--- /dev/null
+++ b/source/_components/sensor.uptime.markdown
@@ -0,0 +1,30 @@
+---
+layout: page
+title: "Uptime Sensor"
+description: "Instructions how to integrate an uptime sensor into Home Assistant."
+date: 2017-10-13 10:30
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Sensor
+ha_iot_class: "Local Pushing"
+logo: home-assistant.png
+ha_release: 0.56
+---
+
+
+The `uptime` sensor platform displays the time since the last Home Assistant restart.
+
+To enable this sensor, add the following lines to your `configuration.yaml`:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: uptime
+```
+
+Configuration variables:
+
+- **name** (*Optional*): Name of the sensor. Defaults to `Uptime`.
+- **unit_of_measurement** (*Optional*): Units for uptime measurement in either `days` or `hours`. Defaults to `days`.
From 3c022b75d1bb2daab267e251dc145a53cb6f6a06 Mon Sep 17 00:00:00 2001
From: Ryan Bahm
Date: Sat, 14 Oct 2017 11:46:06 -0700
Subject: [PATCH 004/111] Add UV Index documentation (#3610)
Added support for UV Index condition.
---
source/_components/sensor.darksky.markdown | 1 +
1 file changed, 1 insertion(+)
diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown
index 98360737dc6..ee366dfa66e 100644
--- a/source/_components/sensor.darksky.markdown
+++ b/source/_components/sensor.darksky.markdown
@@ -66,6 +66,7 @@ Configuration variables:
- **apparent_temperature_max**: Today's expected apparent high temperature.
- **apparent_temperature_min**: Today's expected apparent low temperature.
- **precip_intensity_max**: Today's expected maximum intensity of precipitation.
+ - **uv_index**: The current UV index.
- **units** (*Optional*): Specify the unit system. Default to `si` or `us` based on the temperature preference in Home Assistant. Other options are `auto`, `us`, `si`, `ca`, and `uk2`.
`auto` will let Dark Sky decide the unit system based on location.
- **update_interval** (*Optional*): Minimum time interval between updates. Default is 2 minutes. Supported formats:
From 789ba6b4ba321981afccb876db0dc6a9a47dda27 Mon Sep 17 00:00:00 2001
From: Lewis Juggins
Date: Sun, 15 Oct 2017 21:43:41 +0100
Subject: [PATCH 005/111] Update tradfri installation instructions (#3558)
* Update tradfri installation instructions
* Update tradfri.markdown
* Remove installation, no longer needed
---
source/_components/tradfri.markdown | 38 +----------------------------
1 file changed, 1 insertion(+), 37 deletions(-)
diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown
index c899718cbfb..8926ddfeb3b 100644
--- a/source/_components/tradfri.markdown
+++ b/source/_components/tradfri.markdown
@@ -14,44 +14,8 @@ ha_iot_class: "Local Polling"
ha_release: 0.43
---
-The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network.
+The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network.
-For this to work, you need to install a modified lib-coap library.
-
-
-This component does **not** work on Windows, as the modified lib-coap doesn't exists for Windows.
-
-
-If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled.
-
-
-Linux:
-
-```bash
-$ sudo apt-get install libtool
-$ sudo apt-get install autoconf
-
-$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
-$ cd libcoap
-$ ./autogen.sh
-$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
-$ make
-$ sudo make install
-```
-
-macOS:
-
-```bash
-$ brew install libtool
-$ brew install autoconf
-$ brew install automake
-$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
-$ cd libcoap
-$ ./autogen.sh
-$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
-$ make
-$ make install
-```
You will be prompted to configure the gateway through the Home Assistant interface, Enter the security key when prompted and click configure
From 6f4cbdb72bfe9d6b72618a41876b4d0111ef24fd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?=
Date: Mon, 16 Oct 2017 07:56:38 +0200
Subject: [PATCH 006/111] Update binary_sensor.xiaomi_aqara.markdown
---
source/_components/binary_sensor.xiaomi_aqara.markdown | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown
index d8a24ca727a..a6eb4e95d8e 100644
--- a/source/_components/binary_sensor.xiaomi_aqara.markdown
+++ b/source/_components/binary_sensor.xiaomi_aqara.markdown
@@ -183,7 +183,7 @@ Available events are `single`, `double`, `hold`, `long_click_press` and `long_cl
#### {% linkable_title Xiaomi Cube %}
-Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`.
+Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. The component stores the last action as the attribute `last_action`.
```yaml
- alias: Cube event flip90
From ea3b8e3b39e402a220231fa82f54a7247ae7181e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?=
Date: Mon, 16 Oct 2017 23:02:24 +0200
Subject: [PATCH 007/111] Fix travis build (#3644)
* Update controllers.markdown
* Update installation.markdown
---
source/_docs/z-wave/controllers.markdown | 6 +++---
source/_docs/z-wave/installation.markdown | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown
index cb09d7c25f9..65f02db7875 100644
--- a/source/_docs/z-wave/controllers.markdown
+++ b/source/_docs/z-wave/controllers.markdown
@@ -33,12 +33,12 @@ The alternative to a stick is a hub that supports Z-Wave. Home Assistant support
- [Vera](/components/vera/)
- [Wink](/components/wink/)
-## {% linkable_title Controller Notes }
+## {% linkable_title Controller Notes %}
-### {% linkable_title Aoetec Stick }
+### {% linkable_title Aoetec Stick %}
By default this will turn on "disco lights", which you can turn off by following the instructions in the [device specific page](/docs/z-wave/device-specific/#aeon-z-stick)
-### {% linkable_title Razberry Board }
+### {% linkable_title Razberry Board %}
You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by following the instructions in the [device specific page](/docs/z-wave/device-specific/#razberry-board)
diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown
index c90787f7294..2f14bfacacc 100644
--- a/source/_docs/z-wave/installation.markdown
+++ b/source/_docs/z-wave/installation.markdown
@@ -131,7 +131,7 @@ The output from `ls -ltr` above contains the following information
The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`.
-#### {% linkable_title Creating a Persistent Device Path }
+#### {% linkable_title Creating a Persistent Device Path %}
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/).
From cb27970390d06a79087e254f61551b635c0a9dc0 Mon Sep 17 00:00:00 2001
From: Sergey Isachenko
Date: Tue, 17 Oct 2017 09:58:04 +0300
Subject: [PATCH 008/111] Refreshing Tesla markdown. (#3404)
* Hass Markdown for Tesla component.
* Markdown fixed. Tesla logo added
* Spelling fixed.
* Fixes again
* Changes as @MartinHjelmare requested.
* Typo fix
* Markdown for Tesla switch
* Updated tesla.markdown
* Fix of the copy/paste error
---
source/_components/lock.tesla.markdown | 2 +-
source/_components/switch.tesla.markdown | 20 ++++++++++++++++++++
source/_components/tesla.markdown | 1 +
3 files changed, 22 insertions(+), 1 deletion(-)
create mode 100644 source/_components/switch.tesla.markdown
diff --git a/source/_components/lock.tesla.markdown b/source/_components/lock.tesla.markdown
index 402627d3778..9708ea52205 100644
--- a/source/_components/lock.tesla.markdown
+++ b/source/_components/lock.tesla.markdown
@@ -9,7 +9,7 @@ sharing: true
footer: true
logo: tesla.png
ha_category: Lock
-ha_iot_class: "Coud Push"
+ha_iot_class: "Cloud Push"
ha_release: 0.53
---
diff --git a/source/_components/switch.tesla.markdown b/source/_components/switch.tesla.markdown
new file mode 100644
index 00000000000..a8c63ede4ec
--- /dev/null
+++ b/source/_components/switch.tesla.markdown
@@ -0,0 +1,20 @@
+---
+layout: page
+title: "Tesla Switch"
+description: "Instructions on how to integrate Tesla charging switch into Home Assistant."
+date: 2017-09-19 12:20
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tesla.png
+ha_category: Switch
+ha_iot_class: "Cloud Push"
+ha_release: 0.54
+---
+
+The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) charger (enable/disable charging) from within Home Assistant.
+
+The switch platform will be automatically configured if Tesla component is configured.
+
+For more configuration information see the [Tesla component](/components/tesla/) documentation.
diff --git a/source/_components/tesla.markdown b/source/_components/tesla.markdown
index 9e86043ab5a..4cc5dbd85d3 100644
--- a/source/_components/tesla.markdown
+++ b/source/_components/tesla.markdown
@@ -22,6 +22,7 @@ This component provides the following platforms:
- Device tracker - to track location of your car
- Lock - Door lock. Enables you to control Tesla's door lock
- Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system.
+ - Switch - Charger switch. Allow you to start/stop charging.
To use Tesla in your installation, add the following to your `configuration.yaml` file:
From 819b0169707c459d080788f2dae0abbb2261c754 Mon Sep 17 00:00:00 2001
From: Joe Lu
Date: Tue, 17 Oct 2017 00:26:15 -0700
Subject: [PATCH 009/111] Added armed_night to manual_mqtt alarm doc (#3340)
* Added armed_night to manual_mqtt alarm doc
Code change PR: https://github.com/home-assistant/home-assistant/pull/9358
* Update alarm_control_panel.manual_mqtt.markdown
* Made small grammar corrections
---
.../alarm_control_panel.manual_mqtt.markdown | 23 +++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown
index 263cac0fb41..bf5ba5bdcc7 100644
--- a/source/_components/alarm_control_panel.manual_mqtt.markdown
+++ b/source/_components/alarm_control_panel.manual_mqtt.markdown
@@ -21,12 +21,14 @@ The component will accept the following commands from your Alarm Panel via the `
- `DISARM`
- `ARM_HOME`
- `ARM_AWAY`
+- `ARM_NIGHT`
When the state of the manual alarm changes, Home Assistant will publish one of the following states to the `state_topic`:
- 'disarmed'
- 'armed_home'
- 'armed_away'
+- 'armed_night'
- 'pending'
- 'triggered'
@@ -47,6 +49,8 @@ All configuration variables from the base manual alarm platform are available:
- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
- **trigger_time** (*Optional*): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
- **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state.
+- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings
+ - **pending_time**: State specific pending time override.
Additionally, the following MQTT configuration variables are also available:
@@ -56,6 +60,23 @@ Additionally, the following MQTT configuration variables are also available:
- **payload_disarm** (*Optional*): The payload to disarm this Alarm Panel. Default is "DISARM".
- **payload_arm_home** (*Optional*): The payload to set armed-home mode on this Alarm Panel. Default is "ARM_HOME".
- **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY".
+- **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT".
+
+In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds.
+
+```yaml
+# Example configuration.yaml entry
+alarm_control_panel:
+ - platform: manual_mqtt
+ state_topic: home/alarm
+ command_topic: home/alarm/set
+ pending_time: 30
+ armed_home:
+ pending_time: 0
+ triggered:
+ pending_time: 20
+ trigger_time: 4
+```
## {% linkable_title Examples %}
@@ -70,11 +91,13 @@ To change the state of the alarm, publish one of the following messages to the `
- `DISARM`
- `ARM_HOME`
- `ARM_AWAY`
+ - `ARM_NIGHT`
To receive state updates from HA, subscribe to the `state_topic`. Home Assistant will publish a new message whenever the state changes:
- `disarmed`
- `armed_home`
- `armed_away`
+ - `armed_night`
- `pending`
- `triggered`
From ed905b370b58bd6c9553b41268fa2db0517c551d Mon Sep 17 00:00:00 2001
From: Aaron Bach
Date: Tue, 17 Oct 2017 14:24:02 -0600
Subject: [PATCH 010/111] Adds documentation for the Yi Home Camera platform
(#3580)
* Adding docs
* Various tweaks
* Fixed typos
---
source/_components/camera.yi.markdown | 96 ++++++++++++++++++++++++++
source/images/supported_brands/yi.png | Bin 0 -> 14464 bytes
2 files changed, 96 insertions(+)
create mode 100644 source/_components/camera.yi.markdown
create mode 100644 source/images/supported_brands/yi.png
diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown
new file mode 100644
index 00000000000..d00a131ef8f
--- /dev/null
+++ b/source/_components/camera.yi.markdown
@@ -0,0 +1,96 @@
+---
+layout: page
+title: "Yi Home Camera"
+description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant."
+date: 2017-10-10 13:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: yi.png
+ha_category: Camera
+ha_release: 0.56
+ha_iot_class: "Local Polling"
+---
+
+The `yi` camera platform allows you to utilize Yi Home Cameras within Home
+Assistant. Specifically, this platform supports the line of Yi Home Cameras
+that are based on the Hi3518e Chipset; these include:
+
+* Yi Home 17CN
+* Yi 1080p Home
+* Yi Dome
+* Yi 1080p Dome
+
+To successfully implement this platform, the Home Assistant host should be
+capable of multiple simultaneous reads; for every concurrent Home Assistant
+user, a connection will be made to the camera every 10 seconds.
+This should normally not be a problem.
+
+## {% linkable_title Preparing the Device %}
+
+### {% linkable_title Installing Alternative Firmware %}
+
+In order to integrate the camera with Home Assitant, it is necessary to install
+a custom firmware on the device. Instructions for doing so can be found via the
+[yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3).
+
+Once installed, please ensure that you have enabled FTP and Telnet on your
+device.
+
+
+Some alternative Yi firmwares enable an experimental RTSP server, which will
+allow you to connect to your camera via other Home Assistant camera platforms.
+However, this RTSP server disables the ability to use the supremely-useful Yi
+Home app. In order to maintain both Home Assistant compatibility _and_ the native
+app, this platform retrieves videos via FTP.
+
+Rendering templates with time is dangerous as updates only trigger templates in sensors based on entity state changes.
+
+
## {% linkable_title Home Assistant template extensions %}
In templates, besides the normal [state object methods and properties](/topics/state_object/), there are also some extra things available:
From 4ae163cd4ddcd4f8e39289e6d384bab7ac258ea7 Mon Sep 17 00:00:00 2001
From: Fabian Affolter
Date: Sun, 15 Oct 2017 22:45:48 +0200
Subject: [PATCH 071/111] Template blog post (#3626)
* Add a blog post templating and times/dates
* Update date
---
.../2017-10-14-templating-date-time.markdown | 38 ++++++++++++++++++
.../images/blog/2017-10-template/social.png | Bin 0 -> 69415 bytes
2 files changed, 38 insertions(+)
create mode 100644 source/_posts/2017-10-14-templating-date-time.markdown
create mode 100644 source/images/blog/2017-10-template/social.png
diff --git a/source/_posts/2017-10-14-templating-date-time.markdown b/source/_posts/2017-10-14-templating-date-time.markdown
new file mode 100644
index 00000000000..1af3ecff8bc
--- /dev/null
+++ b/source/_posts/2017-10-14-templating-date-time.markdown
@@ -0,0 +1,38 @@
+---
+layout: post
+title: "Templates, dates and times"
+description: "Using templates for seconds and years in Home Assistant."
+date: 2017-10-15 08:00:00 +0200
+date_formatted: "October 15, 2017"
+author: Fabian Affolter
+comments: true
+categories: Community
+og_image: /images/blog/2017-10-template/social.png
+---
+
+This [Pull Request](https://github.com/home-assistant/home-assistant/pull/9868) shows in a clear way what happens if the documentation is not as good as it should be. In short, it's about [Templating](/docs/configuration/templating/) and how people start to think about creative ways to solve it if it's not documented. Let's assume that we want the current year. There are a couple of options available to do that:
+
+- Query [JSON Test](http://date.jsontest.com/) with a [`rest` sensor](/components/sensor.rest/) and a `value_template:`.
+- Use a [`time_date` sensor ](/components/sensor.time_date/) and a template {% raw %}`{{ strptime(states('sensor.date'), '%Y-%m-%d').year }}`{% endraw %}.
+- Write a script in language X and use it with the [`command` sensor](/components/sensor.command_line/) or use `date +"%Y"` as a `command:`.
+
+
+
+We want it simpler, right? [Templating](/docs/configuration/templating/) offers `now()` and `utcnow()`. We will stick with `now()` in this blog post but it applies to `utcnow()` as well. Our documentation said:
+
+
+ `now()` will be rendered as current time in your time zone.
+