home-assistant.github.io/docs/scripts/conditions/index.html
2018-02-23 07:38:21 +00:00

578 lines
34 KiB
HTML
Raw Permalink 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>Conditions - Home Assistant</title>
<meta name="author" content="Home Assistant">
<meta name="description" content="Documentation about all available conditions.">
<meta name="viewport" content="width=device-width">
<link rel="canonical" href="https://home-assistant.io/docs/scripts/conditions/">
<meta property="fb:app_id" content="338291289691179">
<meta property="og:title" content="Conditions">
<meta property="og:site_name" content="Home Assistant">
<meta property="og:url" content="https://home-assistant.io/docs/scripts/conditions/">
<meta property="og:type" content="article">
<meta property="og:description" content="Documentation about all available conditions.">
<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="Conditions">
<meta name="twitter:description" content="Documentation about all available conditions.">
<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/scripts/conditions.markdown'>Edit this page on GitHub</a></div>
<header>
<h1 class="title indent">
Conditions
</h1>
</header>
<hr class="divider">
<p>Conditions can be used within a script or automation to prevent further execution. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off.</p>
<h3><a class="title-link" name="and-condition" href="#and-condition"></a> AND condition</h3>
<p>Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">and</span>
<span class="s">conditions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">device_tracker.paulus'</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">home'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">sensor.temperature'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s1">'</span><span class="s">20'</span>
</code></pre>
</div>
<h3><a class="title-link" name="or-condition" href="#or-condition"></a> OR condition</h3>
<p>Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">or</span>
<span class="s">conditions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">device_tracker.paulus'</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">home'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">sensor.temperature'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s1">'</span><span class="s">20'</span>
</code></pre>
</div>
<h3><a class="title-link" name="mixed--and-and-or-conditions" href="#mixed--and-and-or-conditions"></a> MIXED AND and OR conditions</h3>
<p>Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid.
This allows you to mix several AND and OR conditions together.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">and</span>
<span class="s">conditions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">device_tracker.paulus'</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">home'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">or</span>
<span class="s">conditions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.weather_precip</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">rain'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s1">'</span><span class="s">sensor.temperature'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s1">'</span><span class="s">20'</span>
</code></pre>
</div>
<h3><a class="title-link" name="numeric-state-condition" href="#numeric-state-condition"></a> Numeric state condition</h3>
<p>This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches the thresholds.</p>
<p>If both <code class="highlighter-rouge">below</code> and <code class="highlighter-rouge">above</code> are specified, both tests have to pass.</p>
<p>You can optionally use a <code class="highlighter-rouge">value_template</code> to process the value of the state before testing it.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.temperature</span>
<span class="s">above</span><span class="pi">:</span> <span class="s">17</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">25</span>
<span class="c1"># If your sensor value needs to be adjusted</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="pi">{{</span> <span class="nv">float(state.state) + 2</span> <span class="pi">}}</span>
</code></pre>
</div>
<h3><a class="title-link" name="state-condition" href="#state-condition"></a> State condition</h3>
<p>Tests if an entity is a specified state.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">device_tracker.paulus</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">not_home</span>
<span class="c1"># optional: trigger only if state was this for last X time.</span>
<span class="s">for</span><span class="pi">:</span>
<span class="s">hours</span><span class="pi">:</span> <span class="s">1</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">10</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">5</span>
</code></pre>
</div>
<h3><a class="title-link" name="sun-condition" href="#sun-condition"></a> Sun condition</h3>
<p>The sun condition can test if the sun has already set or risen when a trigger occurs. The <code class="highlighter-rouge">before</code> and <code class="highlighter-rouge">after</code> keys can only be set to <code class="highlighter-rouge">sunset</code> or <code class="highlighter-rouge">sunrise</code>. They have a corresponding optional offset value (<code class="highlighter-rouge">before_offset</code>, <code class="highlighter-rouge">after_offset</code>) that can be added, similar to the <a href="/getting-started/automation-trigger/#sun-trigger">sun trigger</a>.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">after</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="c1"># Optional offset value</span>
<span class="s">after_offset</span><span class="pi">:</span> <span class="s2">"</span><span class="s">-1:00:00"</span>
</code></pre>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">or</span> <span class="c1"># 'when dark' condition: either after sunset or before sunrise</span>
<span class="s">conditions</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">after</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">before</span><span class="pi">:</span> <span class="s">sunrise</span>
</code></pre>
</div>
<p>Here is a truth table to clarify the parameters with and without offset:</p>
<table>
<thead>
<tr>
<th>command</th>
<th>night</th>
<th style="text-align: center">at sunrise</th>
<th>daytime</th>
<th style="text-align: center">at sunset</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">after: sunset</code></td>
<td>True</td>
<td style="text-align: center"></td>
<td>False</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">after_offset: "01:00:00"</code></td>
<td>True</td>
<td style="text-align: center"></td>
<td>False</td>
<td style="text-align: center"><strong>+1h</strong></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">after_offset: "-01:00:00"</code></td>
<td>True</td>
<td style="text-align: center"></td>
<td>False</td>
<td style="text-align: center"><strong>-1h</strong></td>
</tr>
<tr>
<td><code class="highlighter-rouge">before: sunset</code></td>
<td>False</td>
<td style="text-align: center"></td>
<td>True</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">before_offset: "01:00:00"</code></td>
<td>False</td>
<td style="text-align: center"></td>
<td>True</td>
<td style="text-align: center"><strong>+1h</strong></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">before_offset: "-01:00:00"</code></td>
<td>False</td>
<td style="text-align: center"></td>
<td>True</td>
<td style="text-align: center"><strong>-1h</strong></td>
</tr>
<tr>
<td><code class="highlighter-rouge">after: sunrise</code></td>
<td>False</td>
<td style="text-align: center"></td>
<td>True</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">after_offset: "01:00:00"</code></td>
<td>False</td>
<td style="text-align: center"><strong>+1h</strong></td>
<td>True</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">after_offset: "-01:00:00"</code></td>
<td>False</td>
<td style="text-align: center"><strong>-1h</strong></td>
<td>True</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td><code class="highlighter-rouge">before: sunrise</code></td>
<td>True</td>
<td style="text-align: center"></td>
<td>False</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">before_offset: "01:00:00"</code></td>
<td>True</td>
<td style="text-align: center"><strong>+1h</strong></td>
<td>False</td>
<td style="text-align: center"></td>
</tr>
<tr>
<td>+ <code class="highlighter-rouge">before_offset: "-01:00:00"</code></td>
<td>True</td>
<td style="text-align: center"><strong>-1h</strong></td>
<td>False</td>
<td style="text-align: center"></td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="template-condition" href="#template-condition"></a> Template condition</h3>
<p>The template condition will test if the <a href="/topics/templating/">given template</a> renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render true.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">template</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">states.device_tracker.iphone.attributes.battery</span><span class="nv"> </span><span class="s">&gt;</span><span class="nv"> </span><span class="s">50</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>
<p>Within an automation, template conditions also have access to the <code class="highlighter-rouge">trigger</code> variable as <a href="/getting-started/automation-templating/">described here</a>.</p>
<h3><a class="title-link" name="time-condition" href="#time-condition"></a> Time condition</h3>
<p>The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">time</span>
<span class="c1"># At least one of the following is required.</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">15:00:00'</span>
<span class="s">before</span><span class="pi">:</span> <span class="s1">'</span><span class="s">02:00:00'</span>
<span class="s">weekday</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">mon</span>
<span class="pi">-</span> <span class="s">wed</span>
<span class="pi">-</span> <span class="s">fri</span>
</code></pre>
</div>
<p>Valid values for <code class="highlighter-rouge">weekday</code> are <code class="highlighter-rouge">mon</code>, <code class="highlighter-rouge">tue</code>, <code class="highlighter-rouge">wed</code>, <code class="highlighter-rouge">thu</code>, <code class="highlighter-rouge">fri</code>, <code class="highlighter-rouge">sat</code>, <code class="highlighter-rouge">sun</code>.
Time condition windows can span across the midnight threshold. In the example above, the condition window is from 3pm to 2am.</p>
<h3><a class="title-link" name="zone-condition" href="#zone-condition"></a> Zone condition</h3>
<p>Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the <a href="/components/device_tracker.owntracks/">OwnTracks platform</a> and the <a href="/components/device_tracker.icloud/">iCloud platform</a>.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">condition</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">zone</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">device_tracker.paulus</span>
<span class="s">zone</span><span class="pi">:</span> <span class="s">zone.home</span>
</code></pre>
</div>
<h3><a class="title-link" name="examples" href="#examples"></a> Examples</h3>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="s">condition</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">numeric_state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sun.sun</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">light.living_room</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">time</span>
<span class="s">before</span><span class="pi">:</span> <span class="s1">'</span><span class="s">23:00:00'</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">14:00:00'</span>
<span class="pi">-</span> <span class="s">condition</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.light_turned_off_5min</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</span>
</code></pre>
</div>
</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/entity-registry/'>Entity Registry </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 class='active' 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 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>