home-assistant.github.io/docs/z-wave/installation/index.html
2018-02-13 16:47:08 +00:00

519 lines
34 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Z-Wave - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Installation of the Z-Wave component.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/docs/z-wave/installation/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="Z-Wave">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/docs/z-wave/installation/">
<meta property="og:type" content="article">
<meta property="og:description" content="Installation of the Z-Wave component.">
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@home_assistant">
<meta name="twitter:title" content="Z-Wave">
<meta name="twitter:description" content="Installation of the Z-Wave component.">
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
<link rel='shortcut icon' href='/images/favicon.ico' />
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
</head>
<body >
<header class='site-header'>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
<a href="/" class="site-title">
<img width='40' src='/demo/favicon-192x192.png'>
<span>Home Assistant</span>
</a>
</div>
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
<nav>
<input type="checkbox" id="toggle">
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
<ul class="menu pull-right">
<li><a href="/getting-started/">Getting started</a></li>
<li><a href="/components/">Components</a></li>
<li><a href="/docs/">Docs</a></li>
<li><a href="/cookbook/">Examples</a></li>
<li><a href="/developers/">Developers</a></li>
<li><a href="/blog/">Blog</a></li>
<li><a href="/help/">Need help?</a></li>
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
</ul>
</nav>
<div class='search-container' style='display: none'>
<div class='search'>
<i class="icon-search"></i>
<input id='search' placeholder='Search the docs…'>
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
</div>
</div>
</div>
</div>
</div>
</header>
<div class="grid-wrapper">
<div class="grid grid-center">
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
<article class="page">
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_docs/z-wave/installation.markdown'>Edit this page on GitHub</a></div>
<header>
<h1 class="title indent">
Z-Wave
</h1>
</header>
<hr class="divider">
<p>The first time you enable the Z-Wave component it will install the Z-Wave drivers (python-openzwave). This can take up to half an hour on slow machines like Raspberry Pi.</p>
<p>Installing the drivers might require some extra packages to be installed. Check your platform below.</p>
<h2><a class="title-link" name="platform-specific-installation-instructions" href="#platform-specific-installation-instructions"></a> Platform specific installation instructions</h2>
<h3><a class="title-link" name="linux-except-hassio" href="#linux-except-hassio"></a> Linux (except Hass.io)</h3>
<p>On Linux platforms (other than Hass.io) there is one dependency you will need to have installed ahead of time (included in <code class="highlighter-rouge">systemd-devel</code> on Fedora/RHEL systems):</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get install libudev-dev
</code></pre>
</div>
<p>On Python 3.6 you may also have to install libpython3.6-dev, and possibly python3.6-dev.</p>
<h3><a class="title-link" name="macos" href="#macos"></a> macOS</h3>
<p>When installing on macOS you may have to also run the command below ahead of time, replace “x.x” with the version of Python (<code class="highlighter-rouge">$ python3 --version</code>) you have installed.</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo /Applications/Python<span class="se">\ </span>x.x/Install<span class="se">\ </span>Certificates.command
</code></pre>
</div>
<h3><a class="title-link" name="raspberry-pi" href="#raspberry-pi"></a> Raspberry Pi</h3>
<p>On Raspberry Pi you will need to enable the serial interface in the <code class="highlighter-rouge">raspi-config</code> tool before you can add Z-Wave to Home Assistant.</p>
<h2><a class="title-link" name="configuration" href="#configuration"></a> Configuration</h2>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">zwave</span><span class="pi">:</span>
<span class="s">usb_path</span><span class="pi">:</span> <span class="s">/dev/ttyUSB0</span>
</code></pre>
</div>
<div class="config-vars">
<h3><a class="title-link" name="configuration-variables" href="#configuration-variables"></a> Configuration Variables</h3>
<dl class="">
<dt><a class="title-link" name="usb_path" href="#usb_path"></a> usb_path</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">The port where your device is connected to your Home Assistant host.</span></p>
<p class="default">Default value: /zwaveusbstick</p>
</dd>
<dt><a class="title-link" name="network_key" href="#network_key"></a> network_key</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">The 16-byte network key in the form <code class="highlighter-rouge">"0x01, 0x02..."</code> used in order to connect securely to compatible devices.</span></p>
<p class="default">Default value: None</p>
</dd>
<dt><a class="title-link" name="config_path" href="#config_path"></a> config_path</dt>
<dd>
<p class="desc"><span class="type">(<span class="string">string</span>)</span><span class="required">(Optional)</span><span class="description">The path to the Python OpenZWave configuration files.</span></p>
<p class="default">Default value: the config that is installed by python-openzwave</p>
</dd>
<dt><a class="title-link" name="autoheal" href="#autoheal"></a> autoheal</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Allows disabling auto Z-Wave heal at midnight.</span></p>
<p class="default">Default value: true</p>
</dd>
<dt><a class="title-link" name="polling_interval" href="#polling_interval"></a> polling_interval</dt>
<dd>
<p class="desc"><span class="type">(<span class="integer">integer</span>)</span><span class="required">(Optional)</span><span class="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.</span></p>
<p class="default">Default value: 60000</p>
</dd>
<dt><a class="title-link" name="debug" href="#debug"></a> debug</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Print verbose z-wave info to log.</span></p>
<p class="default">Default value: false</p>
</dd>
<dt><a class="title-link" name="new_entity_ids" href="#new_entity_ids"></a> new_entity_ids</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Switch to new entity_id generation.</span></p>
<p class="default">Default value: true</p>
</dd>
<dt><a class="title-link" name="device_config" href="#device_config"></a> device_config</dt>
<dd>
<p class="desc"><span class="type">(<span class="string, list">string | list</span>)</span><span class="required">(Optional)</span><span class="description">This attribute contains node-specific override values. (For releases prior to 0.39 this variable is called <strong>customize</strong>) See <a href="/docs/configuration/customizing-devices/">Customizing devices and services</a> for the format.</span></p>
</dd>
<dd>
<dl class="nested">
<dt><a class="title-link" name="ignored" href="#ignored"></a> ignored</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Ignore this entity completely. It wont be shown in the Web Interface and no events are generated for it.</span></p>
<p class="default">Default value: false</p>
</dd>
<dt><a class="title-link" name="polling_intensity" href="#polling_intensity"></a> polling_intensity</dt>
<dd>
<p class="desc"><span class="type">(<span class="integer">integer</span>)</span><span class="required">(Optional)</span><span class="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.</span></p>
<p class="default">Default value: 0</p>
</dd>
<dt><a class="title-link" name="refresh_value" href="#refresh_value"></a> refresh_value</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Enable refreshing of the node value. Only the light component uses this.</span></p>
<p class="default">Default value: false</p>
</dd>
<dt><a class="title-link" name="delay" href="#delay"></a> delay</dt>
<dd>
<p class="desc"><span class="type">(<span class="integer">integer</span>)</span><span class="required">(Optional)</span><span class="description">Specify the delay for refreshing of node value. Only the light component uses this.</span></p>
<p class="default">Default value: 2</p>
</dd>
<dt><a class="title-link" name="invert_openclose_buttons" href="#invert_openclose_buttons"></a> invert_openclose_buttons</dt>
<dd>
<p class="desc"><span class="type">(<span class="boolean">boolean</span>)</span><span class="required">(Optional)</span><span class="description">Inverts function of the open and close buttons for the cover domain.</span></p>
<p class="default">Default value: false</p>
</dd>
</dl>
</dd>
</dl>
</div>
<h3><a class="title-link" name="finding-the-controller-path-on-linux" href="#finding-the-controller-path-on-linux"></a> Finding the controller path on Linux</h3>
<p class="note">
If youre using Hass.io please follow <a href="/hassio/zwave/">these setup instructions</a> for finding the controller path.
</p>
<p>To find the path of your Z-Wave USB stick or module, connect it to your system and run:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ls -ltr /dev/tty<span class="k">*</span>|tail -n 1
</code></pre>
</div>
<p>That will give you a line that looks something like this:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>crw-rw---- 1 root dialout 204, 64 Sep 21 10:25 /dev/ttyUSB0
</code></pre>
</div>
<p>Where the date and time displayed is approximately the time you connected the USB stick or module (it may also be something like <code class="highlighter-rouge">/dev/ttyAMA0</code> or <code class="highlighter-rouge">/dev/ttyACM0</code>). The number will be zero for the first device connected, and higher numbers for later devices.</p>
<p>Or, if there is no result, try to find detailed USB connection info with:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>dmesg | grep USB
</code></pre>
</div>
<p>If Home Assistant (<code class="highlighter-rouge">hass</code>) runs with another user (e.g. <em>homeassistant</em> on Hassbian) give access to the stick with:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo usermod -a -G dialout homeassistant
</code></pre>
</div>
<p class="Note">
The output from <code class="highlighter-rouge">ls -ltr</code> above contains the following information
The device type is <code class="highlighter-rouge">c</code> (character special) and permissions are <code class="highlighter-rouge">rw-rw----</code>, meaning only the owner and group can read and write to it, there is only <code class="highlighter-rouge">1</code> link to the file, it is owned by <code class="highlighter-rouge">root</code> and can be accessed by the group <code class="highlighter-rouge">dialout</code>, it has a major device number of <code class="highlighter-rouge">204</code>, and a minor device number of <code class="highlighter-rouge">64</code>, the device was connected at <code class="highlighter-rouge">10:25</code> on <code class="highlighter-rouge">21 September</code>, and the device is <code class="highlighter-rouge">/dev/ttyUSB0</code>.
</p>
<h4><a class="title-link" name="creating-a-persistent-device-path" href="#creating-a-persistent-device-path"></a> Creating a Persistent Device Path</h4>
<p>Depending on whats plugged into your USB ports, the name found above may change. You can lock in a name, such as <code class="highlighter-rouge">/dev/zwave</code>, by following <a href="http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/">these instructions</a>.</p>
<h3><a class="title-link" name="finding-the-controller-path-on-macos" href="#finding-the-controller-path-on-macos"></a> Finding the controller path on macOS</h3>
<p>On macOS you can find the USB stick with:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ls /dev/cu.usbmodem<span class="k">*</span>
</code></pre>
</div>
<h3><a class="title-link" name="hassio" href="#hassio"></a> Hass.io</h3>
<p>To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your <code class="highlighter-rouge">configuration.yaml</code>:</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">zwave</span><span class="pi">:</span>
<span class="s">usb_path</span><span class="pi">:</span> <span class="s">/dev/ttyACM0</span>
</code></pre>
</div>
<p>Depending on your Z-Wave device it may instead be <code class="highlighter-rouge">/dev/ttyAMA0</code> (eg Razberry board) or <code class="highlighter-rouge">/dev/ttyUSB0</code> (eg HUBUZB-1).</p>
<h3><a class="title-link" name="rancheros" href="#rancheros"></a> RancherOS</h3>
<p>If youre using RancherOS for containers, youll need to ensure you enable the kernel-extras service so that the <code class="highlighter-rouge">USB_ACM</code> module (also known as <code class="highlighter-rouge">cdc_acm</code>) is loaded:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo ros service <span class="nb">enable </span>kernel-extras
<span class="gp">$ </span>sudo ros service up kernel-extras
</code></pre>
</div>
<h3><a class="title-link" name="network-key" href="#network-key"></a> Network Key</h3>
<p>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 <em>network_key</em> configuration variable to use a network key before adding these devices.</p>
<p>An easy script to generate a random key:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>cat /dev/urandom | tr -dc <span class="s1">'0-9A-F'</span> | fold -w 32 | head -n 1 | sed -e <span class="s1">'s/\(..\)/0x\1, /g'</span> -e <span class="s1">'s/, $//'</span>
</code></pre>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry for network_key</span>
<span class="s">zwave</span><span class="pi">:</span>
<span class="s">network_key</span><span class="pi">:</span> <span class="s2">"</span><span class="s">0x2e,</span><span class="nv"> </span><span class="s">0xcc,</span><span class="nv"> </span><span class="s">0xab,</span><span class="nv"> </span><span class="s">0x1c,</span><span class="nv"> </span><span class="s">0xa3,</span><span class="nv"> </span><span class="s">0x7f,</span><span class="nv"> </span><span class="s">0x0e,</span><span class="nv"> </span><span class="s">0xb5,</span><span class="nv"> </span><span class="s">0x70,</span><span class="nv"> </span><span class="s">0x71,</span><span class="nv"> </span><span class="s">0x2d,</span><span class="nv"> </span><span class="s">0x98,</span><span class="nv"> </span><span class="s">0x25,</span><span class="nv"> </span><span class="s">0x43,</span><span class="nv"> </span><span class="s">0xee,</span><span class="nv"> </span><span class="s">0x0c"</span>
</code></pre>
</div>
<p>Ensure you keep a backup of this key. If you have to rebuild your system and dont have a backup of this key, you wont 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.</p>
<h2><a class="title-link" name="first-run" href="#first-run"></a> First Run</h2>
<p>The (compilation and) installation of python-openzwave happens when you first enable the Z-Wave component, and can take half an hour or more on a Raspberry Pi. When you upgrade Home Assistant and python-openzwave is also upgraded, this will also result in a delay while the new version is compiled and installed.</p>
<p>The first run after adding a device is when the <code class="highlighter-rouge">zwave</code> component will take time to initialize the entities, some entities may appear with incomplete names. Running a network heal may speed up this process.</p>
<h2><a class="title-link" name="troubleshooting" href="#troubleshooting"></a> Troubleshooting</h2>
<h3><a class="title-link" name="component-could-not-be-set-up" href="#component-could-not-be-set-up"></a> Component could not be set up</h3>
<p>Sometimes the device may not be accessible and youll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ls -l /dev/ttyAMA0
</code></pre>
</div>
<p>You should then see something like this:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>crw-rw---- 1 root dialout 204, 64 Apr 1 12:34 /dev/ttyAMA0
</code></pre>
</div>
<p>The important pieces are the first piece <code class="highlighter-rouge">crw-rw----</code> and the group <code class="highlighter-rouge">dialout</code>. If those are different then, for your device path, run:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo chgrp dialout /dev/ttyAMA0
<span class="gp">$ </span>sudo chmod g+rw /dev/ttyAMA0
</code></pre>
</div>
<h3><a class="title-link" name="device-path-changes" href="#device-path-changes"></a> Device path changes</h3>
<p>If your device path changes when you restart, see <a href="http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/">this guide</a> on fixing it.</p>
<h3><a class="title-link" name="unable-to-install-python-openzwave" href="#unable-to-install-python-openzwave"></a> Unable to install Python Openzwave</h3>
<p>If youre getting errors like:</p>
<div class="highlighter-rouge"><pre class="highlight"><code>openzwave-embed/open-zwave-master/libopenzwave.a: No such file or directory
</code></pre>
</div>
<p>Then the problem is that youre missing <code class="highlighter-rouge">libudev-dev</code>, please <a href="/docs/z-wave/installation/#linux-except-hassio">install it</a>.</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
<div class="grid">
<section class="aside-module grid__item one-whole lap-one-half">
<div class='section'>
<h1 class="title delta">Topics</h1>
<ul class='divided sidebar-menu'>
<li>
<b><a href='/faq/'>FAQ </a></b> |
<b><a href='/docs/glossary/'>Glossary </a></b>
</li>
<li>
<b><a href='/docs/installation/'>Installation </a></b>
<ul>
<li><a href='/hassio/'>Hass.io </a></li>
<li><a href='/docs/installation/virtualenv/'>Python Virtual Env </a></li>
<li><a href='/docs/installation/hassbian/'>Hassbian </a></li>
<!--<li><a href='/docs/installation/raspberry-pi-all-in-one/'>Raspberry Pi All-in-One </a></li>-->
<li><a href='/docs/installation/updating/'>Updating </a></li>
<li><a href='/docs/installation/troubleshooting/'>Troubleshooting </a></li>
</ul>
</li>
<li>
<b><a href='/docs/configuration/'>Configuration </a></b>
<ul>
<li><a href='/docs/configuration/yaml/'>YAML </a></li>
<li><a href='/docs/configuration/basic/'>Basic information </a></li>
<li><a href='/docs/configuration/devices/'>Setting up devices </a></li>
<li><a href='/docs/configuration/customizing-devices/'>Customizing entities </a></li>
<li><a href='/docs/configuration/troubleshooting/'>Troubleshooting </a></li>
<li><a href='/docs/configuration/securing/'>Security Check Points </a></li>
</ul>
</li>
<li>
<b>Advanced Configuration</b>
<ul>
<li><a href='/docs/configuration/remote/'>Remote access </a></li>
<li><a href='/docs/configuration/packages/'>Packages </a></li>
<li><a href='/docs/configuration/splitting_configuration/'>Splitting up the configuration </a></li>
<li><a href='/docs/configuration/secrets/'>Storing Secrets </a></li>
<li><a href='/docs/configuration/templating/'>Templating </a></li>
<li><a href='/docs/configuration/group_visibility/'>Group Visibility </a></li>
<li><a href='/docs/configuration/platform_options/'>Entity component platform options </a></li>
</ul>
</li>
<li>
<b>Core objects</b>
<ul>
<li><a href='/docs/configuration/events/'>Events </a></li>
<li><a href='/docs/configuration/state_object/'>State Objects </a></li>
</ul>
</li>
<li>
<b><a href='/docs/automation/'>Automation </a></b>
<ul>
<li><a href='/docs/automation/examples/'>Examples </a></li>
<li><a href='/docs/automation/editor/'>Editor </a></li>
<li><a href='/docs/automation/trigger/'>Triggers </a></li>
<li><a href='/docs/automation/condition/'>Conditions </a></li>
<li><a href='/docs/automation/action/'>Actions </a></li>
<li><a href='/docs/automation/templating/'>Templates </a></li>
</ul>
</li>
<li>
<b><a href='/docs/frontend/'>Frontend </a></b>
<ul>
<li><a href='/docs/frontend/mobile/'>Android/iOS Homescreen </a></li>
<li><a href='/docs/frontend/webserver/'>Web server fingerprint </a></li>
<li><a href='/docs/frontend/browsers/'>Browser Compatibility List </a></li>
</ul>
</li>
<li>
<b><a href='/docs/backend/'>Backend </a></b>
<ul>
<li><a href='/docs/backend/database/'>Database </a></li>
<li><a href='/docs/backend/updater/'>Updater </a></li>
<li><a href='/developers/api/'>API </a></li>
</ul>
</li>
<li>
<b><a href='/docs/scripts/'>Scripts </a></b>
<ul>
<li><a href='/docs/scripts/service-calls/'>Service Calls </a></li>
<li><a href='/docs/scripts/conditions/'>Conditions </a></li>
<li><a href='/docs/scripts/editor/'>Editor </a></li>
</ul>
</li>
<li>
<b><a href='/docs/tools/'>Tools and Helpers </a></b>
<ul>
<li><a href='/docs/tools/dev-tools/'>Developer Tools </a></li>
<li><a href='/docs/tools/hass/'>hass </a></li>
<li><a href='/docs/tools/benchmark/'>benchmark </a></li>
<li><a href='/docs/tools/check_config/'>check_config </a></li>
<li><a href='/docs/tools/credstash/'>credstash </a></li>
<li><a href='/docs/tools/db_migrator/'>db_migrator </a></li>
<li><a href='/docs/tools/ensure_config/'>ensure_config </a></li>
<li><a href='/docs/tools/influxdb_import/'>influxdb_import </a></li>
<li><a href='/docs/tools/influxdb_migrator/'>influxdb_migrator </a></li>
<li><a href='/docs/tools/keyring/'>keyring </a></li>
</ul>
</li>
<li>
<b><a href='/docs/z-wave/'>Z-Wave </a></b>
<ul>
<li><a class='active' href='/docs/z-wave/installation/'>Configuring the Z-Wave component </a></li>
<li><a href='/docs/z-wave/adding/'>Adding devices </a></li>
<li><a href='/docs/z-wave/control-panel/'>The Z-Wave control panel </a></li>
<li><a href='/docs/z-wave/controllers/'>Controllers </a></li>
<li><a href='/docs/z-wave/devices/'>Devices </a> and <a href='/docs/z-wave/entities/'>Entities </a></li>
<li><a href='/docs/z-wave/query-stage/'>Query Stages </a> for devices</li>
<li><a href='/docs/z-wave/device-specific/'>Device Specific </a> configuration</li>
<li><a href='/docs/z-wave/events/'>Events </a> and <a href='/docs/z-wave/services/'>Services </a></li>
</ul>
</li>
<li>
<b><a href='/docs/mqtt/'>MQTT </a></b>
<ul>
<li><a href='/docs/mqtt/broker/'>Broker </a></li>
<li><a href='/docs/mqtt/certificate/'>Certificate </a></li>
<li><a href='/docs/mqtt/discovery/'>Discovery </a></li>
<li><a href='/docs/mqtt/service/'>Publish service </a></li>
<li><a href='/docs/mqtt/birth_will/'>Birth and last will messages </a></li>
<li><a href='/docs/mqtt/testing/'>Testing your setup </a></li>
<li><a href='/docs/mqtt/logging/'>Logging </a></li>
<li><a href='/docs/mqtt/processing_json/'>Processing JSON </a></li>
</ul>
</li>
<li>
<b><a href='/docs/ecosystem/ios/'>iOS </a></b>
<ul>
<li><a href='/docs/ecosystem/ios/notifications/basic/'>Basic notifications </a></li>
<ul>
<li><a href='/docs/ecosystem/ios/notifications/sounds/'>Sounds </a></li>
<li><a href='/docs/ecosystem/ios/notifications/architecture/'>Architecture </a></li>
<li><a href='/docs/ecosystem/ios/notifications/privacy_security_rate_limits/'>Privacy, rate limiting and security </a></li>
</ul>
<li>Advanced notifications</li>
<ul>
<li><a href='/docs/ecosystem/ios/notifications/attachments/'>Attachments </a></li>
<li><a href='/docs/ecosystem/ios/notifications/content_extensions/'>Dynamic content </a></li>
<li><a href='/docs/ecosystem/ios/notifications/actions/'>Actionable notifications </a></li>
<li><a href='/docs/ecosystem/ios/notifications/requesting_location_updates/'>Requesting location updates </a></li>
</ul>
<li><a href='/docs/ecosystem/ios/location/'>Location Tracking </a></li>
<li><a href='/docs/ecosystem/ios/integration/'>Integration with other apps </a></li>
</ul>
</li>
<li>
<a href='/docs/ecosystem/'>Ecosystem </a>
<ul>
<li>
<a href='/docs/autostart/'>Autostart </a>
<ul>
<li><a href='/docs/autostart/systemd/'>systemd (Linux) </a></li>
<li><a href='/docs/autostart/upstart/'>Upstart (Linux) </a></li>
<li><a href='/docs/autostart/init.d/'>init.d (Linux) </a></li>
<li><a href='/docs/autostart/macos/'>macOS </a></li>
<li><a href='/docs/autostart/synology/'>Synology NAS </a></li>
</ul>
</li>
<li>
<a href='/docs/ecosystem/appdaemon/'>AppDaemon </a>
</li>
<li>
<a href='/docs/ecosystem/hadashboard/'>HADashboard </a>
</li>
<li>
<a href='/docs/ecosystem/notebooks/'>Notebooks </a>
<ul>
<li><a href='/docs/ecosystem/notebooks/'>Introduction </a></li>
<li><a href='/docs/ecosystem/notebooks/installation/'>Installation </a></li>
<li><a href='/docs/ecosystem/notebooks/graph/'>Graph </a></li>
<li><a href='/docs/ecosystem/notebooks/api/'>Home Assistant API </a></li>
<li><a href='/docs/ecosystem/notebooks/database/'>Database </a></li>
<li><a href='/docs/ecosystem/notebooks/stats/'>Statistics </a></li>
</ul>
</li>
<li>
Remote access
<ul>
<li><a href='/docs/ecosystem/apache/'>Apache </a></li>
<li><a href='/docs/ecosystem/caddy/'>Caddy Server </a></li>
<li><a href='/docs/ecosystem/nginx/'>NGINX </a></li>
<li><a href='/docs/ecosystem/nginx_subdomain/'>NGINX with subdomain</a></li>
<li><a href='/docs/ecosystem/tor/'>Tor Onion Service </a></li>
</ul>
</li>
<li>
<a href='/docs/ecosystem/certificates/'>Certificates </a>
<ul>
<li><a href='/docs/ecosystem/certificates/tls_self_signed_certificate/'>Self-signed certificate </a></li>
<li><a href='/docs/ecosystem/certificates/tls_domain_certificate/'>Certificate domain owners </a></li>
<li><a href='/docs/ecosystem/certificates/lets_encrypt/'>Let's Encrypt (detailed) </a></li>
</ul>
</li>
<li>
Backup
<ul>
<li><a href='/docs/ecosystem/backup/backup_github/'>Backup to GitHub </a></li>
<li><a href='/docs/ecosystem/backup/backup_dropbox/'>Backup to Dropbox </a></li>
<li><a href='/docs/ecosystem/backup/backup_usb/'>Backup to USB device </a></li>
</ul>
</li>
<li><a href='/docs/ecosystem/scenegen/'>scenegen </a></li>
<li><a href='/docs/ecosystem/synology/'>Synology </a></li>
<li><a href='/docs/ecosystem/hass-configurator/'>HASS Configurator </a></li>
</ul>
</ul>
</div>
</section>
</div>
</aside>
</div>
</div>
<footer>
<div class="grid-wrapper">
<div class="grid">
<div class="grid__item">
<div class="copyright">
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
<div class="credit">
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
</div>
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
</div>
</div>
</div>
</div>
</footer>
<script>
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
s.parentNode.insertBefore(g,s)}(document,'script'));
</script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
<script type="text/javascript">
docsearch({
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
indexName: 'home-assistant',
inputSelector: '#search',
debug: false // Set debug to true if you want to inspect the dropdown
});
document.querySelector('.search .close').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'none';
});
document.querySelector('.show-search').addEventListener('click', function(ev) {
ev.preventDefault();
document.querySelector('.search-container').style.display = 'block';
document.getElementById('toggle').checked = false;
document.querySelector('.search-container input').focus();
});
</script>
</body>
</html>