Site updated at 2016-08-22 08:21:42 UTC

This commit is contained in:
Travis CI 2016-08-22 08:21:43 +00:00
parent f9d65cbe57
commit 4acb07bf8e
559 changed files with 18878 additions and 21688 deletions

View file

@ -93,60 +93,56 @@
<p>You can also call the service to activate <a href="/components/scene/">a scene</a> which will allow you to define how you want your devices to be and have Home Assistant call the right services.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="comment"># Change the light in the kitchen and living room to 150 brightness and color red.</span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">entity_id</span>:
- <span class="string"><span class="content">light.kitchen</span></span>
- <span class="string"><span class="content">light.living_room</span></span>
<span class="key">data</span>:
<span class="key">brightness</span>: <span class="string"><span class="content">150</span></span>
<span class="key">rgb_color</span>: <span class="string"><span class="content">[255, 0, 0]</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="c1"># Change the light in the kitchen and living room to 150 brightness and color red.</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">light.kitchen</span>
<span class="pi">-</span> <span class="s">light.living_room</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">150</span>
<span class="s">rgb_color</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">255</span><span class="pi">,</span> <span class="nv">0</span><span class="pi">,</span> <span class="nv">0</span><span class="pi">]</span>
<span class="key">automation 2</span>:
<span class="comment"># Notify me on my mobile phone of an event</span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">offset</span>: <span class="string"><span class="content">-00:30</span></span>
<span class="key">action</span>:
<span class="comment"># Actions are scripts so can also be a list of actions</span>
- <span class="string"><span class="content">service: notify.notify</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">Beautiful sunset!</span></span>
- <span class="string"><span class="content">delay: 0:35</span></span>
- <span class="string"><span class="content">service: notify.notify</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">Oh wow you really missed something great.</span></span>
</pre></div>
</div>
<span class="s">automation 2</span><span class="pi">:</span>
<span class="c1"># Notify me on my mobile phone of an event</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s">-00:30</span>
<span class="s">action</span><span class="pi">:</span>
<span class="c1"># Actions are scripts so can also be a list of actions</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.notify</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="s">Beautiful sunset!</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span> <span class="s">0:35</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.notify</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="s">Oh wow you really missed something great.</span>
</code></pre>
</div>
<p>Conditions can also be part of an action:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: 'Enciende Despacho'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.mini_despacho</span></span>
<span class="key">to</span>: <span class="string"><span class="content">'ON'</span></span>
<span class="key">action</span>:
- <span class="string"><span class="content">condition: or</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
- <span class="string"><span class="content">condition: template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
- <span class="string"><span class="content">service: scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.DespiertaDespacho</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Enciende</span><span class="nv"> </span><span class="s">Despacho'</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.mini_despacho</span>
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">ON'</span>
<span class="s">action</span><span class="pi">:</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">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.sun.sun.attributes.elevation</span><span class="nv"> </span><span class="s">&lt;</span><span class="nv"> </span><span class="s">4</span><span class="nv"> </span><span class="s">}}'</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.sensor.sensorluz_7_0.state</span><span class="nv"> </span><span class="s">&lt;</span><span class="nv"> </span><span class="s">10</span><span class="nv"> </span><span class="s">}}'</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">scene.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">scene.DespiertaDespacho</span>
</code></pre>
</div>

View file

@ -93,35 +93,31 @@
<p>If your triggers and conditions are exactly the same, you can use a shortcut to specify conditions. In this case, triggers that are not valid conditions will be ignored.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">condition</span>: <span class="string"><span class="content">use_trigger_values</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">use_trigger_values</span>
</code></pre>
</div>
<p>The available conditions for an automation are the same as for the script syntax. So see that page for a <a href="/getting-started/scripts-conditions/">full list of available conditions</a>.</p>
<p>Example of using condition:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>- <span class="string"><span class="content">alias: 'Enciende Despacho'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.mini_despacho</span></span>
<span class="key">to</span>: <span class="string"><span class="content">'ON'</span></span>
<span class="key">condition</span>:
<span class="key">condition</span>: <span class="string"><span class="content">or</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
- <span class="string"><span class="content">condition: template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
<span class="key">action</span>:
- <span class="string"><span class="content">service: scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.DespiertaDespacho</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Enciende</span><span class="nv"> </span><span class="s">Despacho'</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.mini_despacho</span>
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">ON'</span>
<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">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.sun.sun.attributes.elevation</span><span class="nv"> </span><span class="s">&lt;</span><span class="nv"> </span><span class="s">4</span><span class="nv"> </span><span class="s">}}'</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.sensor.sensorluz_7_0.state</span><span class="nv"> </span><span class="s">&lt;</span><span class="nv"> </span><span class="s">10</span><span class="nv"> </span><span class="s">}}'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">scene.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">scene.DespiertaDespacho</span>
</code></pre>
</div>

View file

@ -91,100 +91,92 @@
<p>Before we dive deeper into what every piece of automation <em>can</em> do, lets look at a simple automation rule: <strong>Turn on the lights when the sun sets</strong></p>
<p>In this example, we are defining a trigger to track the sunset and tell it to fire when the sun is setting. When this event is triggered, the service <code>light.turn_on</code> is called without any parameters. Because we specify no parameters, it will turn on all the lights.</p>
<p>In this example, we are defining a trigger to track the sunset and tell it to fire when the sun is setting. When this event is triggered, the service <code class="highlighter-rouge">light.turn_on</code> is called without any parameters. Because we specify no parameters, it will turn on all the lights.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Turn on light when sun sets</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">light.turn_on</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on light when sun sets</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
</code></pre>
</div>
<p>After a few days of running this automation rule you come to realize that this automation rule is not good enough. It was already dark when the lights went on and the one day you werent home, the lights turned on anyway. Time for some tweaking. Lets add an offset to the sunset trigger and a condition to only turn on the lights if anyone is home.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Turn on light when sun sets</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">offset</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">-01:00:00</span><span class="delimiter">&quot;</span></span>
<span class="key">condition</span>:
<span class="key">condition</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">home</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">light.turn_on</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on light when sun sets</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s2">"</span><span class="s">-01:00:00"</span>
<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">group.all_devices</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">home</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
</code></pre>
</div>
<p>Now youre happy and all is good. You start to like this automation business and buy some more lights, this time you put them in the bedroom. But what you now realize is that when the sun is setting, the lights in the bedroom are also being turned on! Time to tweak the automation to only turn on the living room lights.</p>
<p>The first thing you do is to look at the entities in the developer tools (second icon) in the app. You see the names of your lights and you write them down: <code>light.table_lamp</code>, <code>light.bedroom</code>, <code>light.ceiling</code>.</p>
<p>The first thing you do is to look at the entities in the developer tools (second icon) in the app. You see the names of your lights and you write them down: <code class="highlighter-rouge">light.table_lamp</code>, <code class="highlighter-rouge">light.bedroom</code>, <code class="highlighter-rouge">light.ceiling</code>.</p>
<p>Instead of hard coding the entity IDs of the lights in the automation rule, we will set up a group. This will allow us to see the living room separate in the app and be able to address it from automation rules.</p>
<p>So we tweak the config to add the group and have the automation rule only turn on the group.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">group</span>:
<span class="key">living_room</span>:
- <span class="string"><span class="content">light.table_lamp</span></span>
- <span class="string"><span class="content">light.ceiling</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">living_room</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">light.table_lamp</span>
<span class="pi">-</span> <span class="s">light.ceiling</span>
<span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Turn on light when sun sets</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">offset</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">-01:00:00</span><span class="delimiter">&quot;</span></span>
<span class="key">condition</span>:
<span class="key">condition</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">home</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">light.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.living_room</span></span>
</pre></div>
</div>
<span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on light when sun sets</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s2">"</span><span class="s">-01:00:00"</span>
<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">group.all_devices</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">home</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.living_room</span>
</code></pre>
</div>
<p>Christmas is coming along and you decide to buy a remote switch to control the Christmas lights from Home Assistant. You cant claim to live in the house of the future if youre still manually turning on your Christmas lights!</p>
<p>We hook the switch up to Home Assistant and grab the entity ID from the developer tools: <code>switch.christmas_lights</code>. We will update the group to include the switch and will change our action. We are no longer able to call <code>light.turn_on</code> because we also want to turn on a switch. This is where <code>homeassistant.turn_on</code> comes to the rescue. This service is capable of turning any entity on.</p>
<p>We hook the switch up to Home Assistant and grab the entity ID from the developer tools: <code class="highlighter-rouge">switch.christmas_lights</code>. We will update the group to include the switch and will change our action. We are no longer able to call <code class="highlighter-rouge">light.turn_on</code> because we also want to turn on a switch. This is where <code class="highlighter-rouge">homeassistant.turn_on</code> comes to the rescue. This service is capable of turning any entity on.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">group</span>:
<span class="key">living_room</span>:
- <span class="string"><span class="content">light.table_lamp</span></span>
- <span class="string"><span class="content">light.ceiling</span></span>
- <span class="string"><span class="content">switch.christmas_lights</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">living_room</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">light.table_lamp</span>
<span class="pi">-</span> <span class="s">light.ceiling</span>
<span class="pi">-</span> <span class="s">switch.christmas_lights</span>
<span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Turn on light when sun sets</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">offset</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">-01:00:00</span><span class="delimiter">&quot;</span></span>
<span class="key">condition</span>:
<span class="key">condition</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">home</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.living_room</span></span>
</pre></div>
</div>
<span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on light when sun sets</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s2">"</span><span class="s">-01:00:00"</span>
<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">group.all_devices</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">home</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.living_room</span>
</code></pre>
</div>
<h3><a class="title-link" name="learn-more" href="#learn-more"></a> Learn more</h3>

View file

@ -89,60 +89,58 @@
<hr class="divider">
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example of entry in configuration.yaml</span>
<span class="key">automation</span>:
<span class="comment"># Turns on lights 1 hour before sunset if people are home</span>
<span class="comment"># and if people get home between 16:00-23:00</span>
- <span class="string"><span class="content">alias: 'Rule 1 Light on in the evening'</span></span>
<span class="key">trigger</span>:
<span class="comment"># Prefix the first line of each trigger configuration</span>
<span class="comment"># with a '-' to enter multiple</span>
- <span class="string"><span class="content">platform: sun</span></span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="key">offset</span>: <span class="string"><span class="content">'-01:00:00'</span></span>
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
<span class="key">condition</span>:
<span class="comment"># Prefix the first line of each condition configuration</span>
<span class="comment"># with a '-'' to enter multiple</span>
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
- <span class="string"><span class="content">platform: time</span></span>
<span class="key">after</span>: <span class="string"><span class="content">'16:00:00'</span></span>
<span class="key">before</span>: <span class="string"><span class="content">'23:00:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.living_room</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example of entry in configuration.yaml</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="c1"># Turns on lights 1 hour before sunset if people are home</span>
<span class="c1"># and if people get home between 16:00-23:00</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Rule</span><span class="nv"> </span><span class="s">1</span><span class="nv"> </span><span class="s">Light</span><span class="nv"> </span><span class="s">on</span><span class="nv"> </span><span class="s">in</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">evening'</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="c1"># Prefix the first line of each trigger configuration</span>
<span class="c1"># with a '-' to enter multiple</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s1">'</span><span class="s">-01:00:00'</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.all_devices</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">home'</span>
<span class="s">condition</span><span class="pi">:</span>
<span class="c1"># Prefix the first line of each condition configuration</span>
<span class="c1"># with a '-'' to enter multiple</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.all_devices</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">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">16:00:00'</span>
<span class="s">before</span><span class="pi">:</span> <span class="s1">'</span><span class="s">23:00:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.living_room</span>
<span class="comment"># Turn off lights when everybody leaves the house</span>
- <span class="string"><span class="content">alias: 'Rule 2 - Away Mode'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_devices</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'not_home'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">light.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.all_lights</span></span>
<span class="c1"># Turn off lights when everybody leaves the house</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Rule</span><span class="nv"> </span><span class="s">2</span><span class="nv"> </span><span class="s">-</span><span class="nv"> </span><span class="s">Away</span><span class="nv"> </span><span class="s">Mode'</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.all_devices</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">not_home'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.all_lights</span>
<span class="comment"># Notify when Paulus leaves the house in the evening</span>
- <span class="string"><span class="content">alias: 'Leave Home notification'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">zone</span></span>
<span class="key">event</span>: <span class="string"><span class="content">leave</span></span>
<span class="key">zone</span>: <span class="string"><span class="content">zone.home</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">condition</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">after</span>: <span class="string"><span class="content">'20:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.notify</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'Paulus left the house'</span></span>
</pre></div>
</div>
<span class="c1"># Notify when Paulus leaves the house in the evening</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Leave</span><span class="nv"> </span><span class="s">Home</span><span class="nv"> </span><span class="s">notification'</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">zone</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">leave</span>
<span class="s">zone</span><span class="pi">:</span> <span class="s">zone.home</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">device_tracker.paulus</span>
<span class="s">condition</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">20:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.notify</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Paulus</span><span class="nv"> </span><span class="s">left</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">house'</span>
</code></pre>
</div>

View file

@ -91,38 +91,38 @@
<p>In Home Assistant 0.19 we introduced a new powerful feature: variables in scripts and automations. This makes it possible to adjust your condition and action based on the information of the trigger.</p>
<p>The trigger data made is available during template rendering as the <code>trigger</code> variable.</p>
<p>The trigger data made is available during template rendering as the <code class="highlighter-rouge">trigger</code> variable.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entries</span>
<span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.notify</span></span>
<span class="key">data_template</span>:
<span class="key">message</span>: <span class="string"><span class="delimiter">&gt;</span><span class="content">
Paulus just changed from {{ trigger.from_state.state }}
to {{ trigger.to_state.state }}</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entries</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</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">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.notify</span>
<span class="s">data_template</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">Paulus just changed from {{ trigger.from_state.state }}</span>
<span class="no">to {{ trigger.to_state.state }}</span>
<span class="key">automation 2</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">mqtt</span></span>
<span class="key">topic</span>: <span class="string"><span class="content">/notify/+</span></span>
<span class="key">action</span>:
<span class="key">service_template</span>: <span class="string"><span class="delimiter">&gt;</span><span class="content">
notify.{{ trigger.topic.split('/')[-1] }}</span></span>
<span class="key">data_template</span>:
<span class="key">message</span>: <span class="string"><span class="content">{{ trigger.payload }}</span></span>
</pre></div>
</div>
<span class="s">automation 2</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">topic</span><span class="pi">:</span> <span class="s">/notify/+</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service_template</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">notify.{{ trigger.topic.split('/')[-1] }}</span>
<span class="s">data_template</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="pi">{{</span> <span class="nv">trigger.payload</span> <span class="pi">}}</span>
</code></pre>
</div>
<h3><a class="title-link" name="available-trigger-data" href="#available-trigger-data"></a> Available Trigger Data</h3>
<h2><a class="title-link" name="available-trigger-data" href="#available-trigger-data"></a> Available Trigger Data</h2>
<p>The following tables show the available trigger data per platform.</p>
<h3><a class="title-link" name="event" href="#event"></a> event</h3>
<table>
<thead>
<tr>
@ -132,16 +132,18 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>event</code>.</td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">event</code>.</td>
</tr>
<tr>
<td><code>trigger.event</code></td>
<td><code class="highlighter-rouge">trigger.event</code></td>
<td>Event object that matched.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="mqtt" href="#mqtt"></a> mqtt</h3>
<table>
<thead>
<tr>
@ -151,58 +153,25 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>mqtt</code>.</td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">mqtt</code>.</td>
</tr>
<tr>
<td><code>trigger.topic</code></td>
<td><code class="highlighter-rouge">trigger.topic</code></td>
<td>Topic that received payload.</td>
</tr>
<tr>
<td><code>trigger.payload</code></td>
<td><code class="highlighter-rouge">trigger.payload</code></td>
<td>Payload.</td>
</tr>
<tr>
<td><code>trigger.qos</code></td>
<td><code class="highlighter-rouge">trigger.qos</code></td>
<td>QOS of payload.</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Template variable</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>numeric_state</code></td>
</tr>
<tr>
<td><code>trigger.entity_id</code></td>
<td>Entity ID that we observe.</td>
</tr>
<tr>
<td><code>trigger.below</code></td>
<td>The below threshold, if any.</td>
</tr>
<tr>
<td><code>trigger.above</code></td>
<td>The above threshold, if any.</td>
</tr>
<tr>
<td><code>trigger.from_state</code></td>
<td>The previous <a href="/topics/state_object/">state object</a> of the entity.</td>
</tr>
<tr>
<td><code>trigger.to_state</code></td>
<td>The new <a href="/topics/state_object/">state object</a> that triggered trigger.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="numeric_state" href="#numeric_state"></a> numeric_state</h3>
<table>
<thead>
@ -213,28 +182,67 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>state</code></td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">numeric_state</code></td>
</tr>
<tr>
<td><code>trigger.entity_id</code></td>
<td><code class="highlighter-rouge">trigger.entity_id</code></td>
<td>Entity ID that we observe.</td>
</tr>
<tr>
<td><code>trigger.from_state</code></td>
<td><code class="highlighter-rouge">trigger.below</code></td>
<td>The below threshold, if any.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.above</code></td>
<td>The above threshold, if any.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.from_state</code></td>
<td>The previous <a href="/topics/state_object/">state object</a> of the entity.</td>
</tr>
<tr>
<td><code>trigger.to_state</code></td>
<td><code class="highlighter-rouge">trigger.to_state</code></td>
<td>The new <a href="/topics/state_object/">state object</a> that triggered trigger.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="state" href="#state"></a> state</h3>
<table>
<thead>
<tr>
<th>Template variable</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">state</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.entity_id</code></td>
<td>Entity ID that we observe.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.from_state</code></td>
<td>The previous <a href="/topics/state_object/">state object</a> of the entity.</td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.to_state</code></td>
<td>The new <a href="/topics/state_object/">state object</a> that triggered trigger.</td>
</tr>
<tr>
<td><code>trigger.for</code></td>
<td><code class="highlighter-rouge">trigger.for</code></td>
<td>Timedelta object how long state has been to state, if any.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="sun" href="#sun"></a> sun</h3>
<table>
<thead>
<tr>
@ -244,20 +252,22 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>sun</code></td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">sun</code></td>
</tr>
<tr>
<td><code>trigger.event</code></td>
<td>The event that just happened: <code>sunset</code> or <code>sunrise</code>.</td>
<td><code class="highlighter-rouge">trigger.event</code></td>
<td>The event that just happened: <code class="highlighter-rouge">sunset</code> or <code class="highlighter-rouge">sunrise</code>.</td>
</tr>
<tr>
<td><code>trigger.offset</code></td>
<td><code class="highlighter-rouge">trigger.offset</code></td>
<td>Timedelta object with offset to the event, if any.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="template" href="#template"></a> template</h3>
<table>
<thead>
<tr>
@ -267,42 +277,25 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>template</code></td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">template</code></td>
</tr>
<tr>
<td><code>trigger.entity_id</code></td>
<td><code class="highlighter-rouge">trigger.entity_id</code></td>
<td>Entity ID that caused change.</td>
</tr>
<tr>
<td><code>trigger.from_state</code></td>
<td><code class="highlighter-rouge">trigger.from_state</code></td>
<td>Previous <a href="/topics/state_object/">state object</a> of entity that caused change.</td>
</tr>
<tr>
<td><code>trigger.to_state</code></td>
<td><code class="highlighter-rouge">trigger.to_state</code></td>
<td>New <a href="/topics/state_object/">state object</a> of entity that caused template to change.</td>
</tr>
</tbody>
</table>
<table>
<thead>
<tr>
<th>Template variable</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>time</code></td>
</tr>
<tr>
<td><code>trigger.now</code></td>
<td>DateTime object that triggered the time trigger.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="time" href="#time"></a> time</h3>
<table>
<thead>
@ -313,28 +306,49 @@
</thead>
<tbody>
<tr>
<td><code>trigger.platform</code></td>
<td>Hardcoded: <code>zone</code></td>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">time</code></td>
</tr>
<tr>
<td><code>trigger.entity_id</code></td>
<td><code class="highlighter-rouge">trigger.now</code></td>
<td>DateTime object that triggered the time trigger.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="zone" href="#zone"></a> zone</h3>
<table>
<thead>
<tr>
<th>Template variable</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<td><code class="highlighter-rouge">trigger.platform</code></td>
<td>Hardcoded: <code class="highlighter-rouge">zone</code></td>
</tr>
<tr>
<td><code class="highlighter-rouge">trigger.entity_id</code></td>
<td>Entity ID that we are observing.</td>
</tr>
<tr>
<td><code>trigger.from_state</code></td>
<td><code class="highlighter-rouge">trigger.from_state</code></td>
<td>Previous <a href="/topics/state_object/">state object</a> of the entity.</td>
</tr>
<tr>
<td><code>trigger.to_state</code></td>
<td><code class="highlighter-rouge">trigger.to_state</code></td>
<td>New <a href="/topics/state_object/">state object</a> of the entity.</td>
</tr>
<tr>
<td><code>trigger.zone</code></td>
<td><code class="highlighter-rouge">trigger.zone</code></td>
<td>State object of zone</td>
</tr>
<tr>
<td><code>trigger.event</code></td>
<td>Event that trigger observed: <code>enter</code> or <code>leave</code>.</td>
<td><code class="highlighter-rouge">trigger.event</code></td>
<td>Event that trigger observed: <code class="highlighter-rouge">enter</code> or <code class="highlighter-rouge">leave</code>.</td>
</tr>
</tbody>
</table>

View file

@ -91,150 +91,134 @@
<p>Triggers are what starts the processing of an automation rule. It is possible to specify multiple triggers for the same rule. Once a trigger starts, Home Assistant will validate the conditions, if any, and call the action.</p>
<h4><a class="title-link" name="event-trigger" href="#event-trigger"></a> Event trigger</h4>
<h3><a class="title-link" name="event-trigger" href="#event-trigger"></a> Event trigger</h3>
<p>Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">MY_CUSTOM_EVENT</span></span>
<span class="comment"># optional</span>
<span class="key">event_data</span>:
<span class="key">mood</span>: <span class="string"><span class="content">happy</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">MY_CUSTOM_EVENT</span>
<span class="c1"># optional</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">mood</span><span class="pi">:</span> <span class="s">happy</span>
</code></pre>
</div>
<h4><a class="title-link" name="mqtt-trigger" href="#mqtt-trigger"></a> MQTT trigger</h4>
<h3><a class="title-link" name="mqtt-trigger" href="#mqtt-trigger"></a> MQTT trigger</h3>
<p>Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">mqtt</span></span>
<span class="key">topic</span>: <span class="string"><span class="content">living_room/switch/ac</span></span>
<span class="comment"># Optional</span>
<span class="key">payload</span>: <span class="string"><span class="content">'on'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">topic</span><span class="pi">:</span> <span class="s">living_room/switch/ac</span>
<span class="c1"># Optional</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s1">'</span><span class="s">on'</span>
</code></pre>
</div>
<h4><a class="title-link" name="numeric-state-trigger" href="#numeric-state-trigger"></a> Numeric state trigger</h4>
<h3><a class="title-link" name="numeric-state-trigger" href="#numeric-state-trigger"></a> Numeric state trigger</h3>
<p>On state change of a specified entity, attempts to parse the state as a number and triggers if value is above and/or below a threshold.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.temperature</span></span>
<span class="comment"># Optional</span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ state.attributes.battery }}'</span></span>
<span class="comment"># At least one of the following required</span>
<span class="key">above</span>: <span class="string"><span class="content">17</span></span>
<span class="key">below</span>: <span class="string"><span class="content">25</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</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="c1"># Optional</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">state.attributes.battery</span><span class="nv"> </span><span class="s">}}'</span>
<span class="c1"># At least one of the following required</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>
</code></pre>
</div>
<h4><a class="title-link" name="state-trigger" href="#state-trigger"></a> State trigger</h4>
<h3><a class="title-link" name="state-trigger" href="#state-trigger"></a> State trigger</h3>
<p>Triggers when the state of tracked entities change. If only entity_id given will match all state changes.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus, device_tracker.anne_therese</span></span>
<span class="comment"># Optional </span>
<span class="key">state</span>: <span class="string"><span class="content">'xy'</span></span>
<span class="comment"># or (don't use that with condition: use_trigger_values)</span>
<span class="key">from</span>: <span class="string"><span class="content">'not_home'</span></span>
<span class="key">to</span>: <span class="string"><span class="content">'home'</span></span>
<span class="comment"># If given, will trigger when state has been the to state for X time.</span>
<span class="key">for</span>:
<span class="key">hours</span>: <span class="string"><span class="content">1</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">10</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">5</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</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, device_tracker.anne_therese</span>
<span class="c1"># Optional </span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">xy'</span>
<span class="c1"># or (don't use that with condition: use_trigger_values)</span>
<span class="s">from</span><span class="pi">:</span> <span class="s1">'</span><span class="s">not_home'</span>
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">home'</span>
<span class="c1"># If given, will trigger when state has been the to state for 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>
<p class="note warning">
Use quotes around your values for <code>from</code> and <code>to</code> to avoid the YAML parser interpreting values as booleans.
Use quotes around your values for <code class="highlighter-rouge">from</code> and <code class="highlighter-rouge">to</code> to avoid the YAML parser interpreting values as booleans.
</p>
<h4><a class="title-link" name="sun-trigger" href="#sun-trigger"></a> Sun trigger</h4>
<h3><a class="title-link" name="sun-trigger" href="#sun-trigger"></a> Sun trigger</h3>
<p>Trigger when the sun is setting or rising. An optional time offset can be given to have it trigger for example 45 minutes before sunset, when dusk is setting in.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">sun</span></span>
<span class="comment"># Possible values: sunset, sunrise</span>
<span class="key">event</span>: <span class="string"><span class="content">sunset</span></span>
<span class="comment"># Optional time offset. This example is 45 minutes.</span>
<span class="key">offset</span>: <span class="string"><span class="content">'-00:45:00'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">sun</span>
<span class="c1"># Possible values: sunset, sunrise</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">sunset</span>
<span class="c1"># Optional time offset. This example is 45 minutes.</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s1">'</span><span class="s">-00:45:00'</span>
</code></pre>
</div>
<h4><a class="title-link" name="template-trigger" href="#template-trigger"></a> Template trigger</h4>
<h3><a class="title-link" name="template-trigger" href="#template-trigger"></a> Template trigger</h3>
<p>Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render true. This is achieved by having the template result in a true boolean expression (<code>{{ is_state('device_tracker.paulus', 'home') }}</code>) or by having the template render true (example below).</p>
<p>Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render true. This is achieved by having the template result in a true boolean expression (<code class="highlighter-rouge"><span class="p">{</span><span class="err">{</span><span class="w"> </span><span class="err">is_state('device_tracker.paulus',</span><span class="w"> </span><span class="err">'home')</span><span class="w"> </span><span class="p">}</span><span class="err">}</span></code>) or by having the template render true (example below).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</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">if</span><span class="nv"> </span><span class="s">is_state('device_tracker.paulus', 'home') %}true{% endif %}'</span>
</code></pre>
</div>
<h4><a class="title-link" name="time-trigger" href="#time-trigger"></a> Time trigger</h4>
<h3><a class="title-link" name="time-trigger" href="#time-trigger"></a> Time trigger</h3>
<p>Time can be triggered in many ways. The most common is to specify <code>after</code> and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a <code>/</code> to match whenever the value is divisible by that number. You cannot use <code>after</code> together with hour, minute or second.</p>
<p>Time can be triggered in many ways. The most common is to specify <code class="highlighter-rouge">after</code> and trigger at a specific point in time each day. Alternatively, you can also match if the hour, minute or second of the current time has a specific value. You can prefix the value with a <code class="highlighter-rouge">/</code> to match whenever the value is divisible by that number. You cannot use <code class="highlighter-rouge">after</code> together with hour, minute or second.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="comment"># Matches every hour at 5 minutes past whole</span>
<span class="key">minutes</span>: <span class="string"><span class="content">5</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="c1"># Matches every hour at 5 minutes past whole</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">5</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</span>
<span class="key">automation 2</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="comment"># When 'after' is used, you cannot also match on hour, minute, seconds.</span>
<span class="comment"># Military time format.</span>
<span class="key">after</span>: <span class="string"><span class="content">'15:32:00'</span></span>
<span class="s">automation 2</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="c1"># When 'after' is used, you cannot also match on hour, minute, seconds.</span>
<span class="c1"># Military time format.</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">15:32:00'</span>
<span class="key">automation 3</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="comment"># You can also match on interval. This will match every 5 minutes</span>
<span class="key">minutes</span>: <span class="string"><span class="content">'/5'</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</span></span>
</pre></div>
</div>
<span class="s">automation 3</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="c1"># You can also match on interval. This will match every 5 minutes</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s1">'</span><span class="s">/5'</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</span>
</code></pre>
</div>
<h4><a class="title-link" name="zone-trigger" href="#zone-trigger"></a> Zone trigger</h4>
<h3><a class="title-link" name="zone-trigger" href="#zone-trigger"></a> Zone trigger</h3>
<p>Zone triggers can trigger when an entity is entering or leaving the 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> as well as the <a href="/components/device_tracker.icloud/">iCloud platform</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">zone</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">zone</span>: <span class="string"><span class="content">zone.home</span></span>
<span class="comment"># Event is either enter or leave</span>
<span class="key">event</span>: <span class="string"><span class="content">enter</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</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>
<span class="c1"># Event is either enter or leave</span>
<span class="s">event</span><span class="pi">:</span> <span class="s">enter</span>
</code></pre>
</div>

View file

@ -89,16 +89,13 @@
<hr class="divider">
<p>You can verify that your automation rules are being initialized correctly by watching both the realtime logs (<code>homeassistant.log</code> in the configuration directory) and also the <a href="/components/logbook/">Logbook</a>. The realtime logs will show the rules being initialized (once for each trigger), example:</p>
<p>You can verify that your automation rules are being initialized correctly by watching both the realtime logs (<code class="highlighter-rouge">homeassistant.log</code> in the configuration directory) and also the <a href="/components/logbook/">Logbook</a>. The realtime logs will show the rules being initialized (once for each trigger), example:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>INFO [homeassistant.components.automation] Initialized rule Rainy Day
<pre><code class="language-plain">INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rainy Day
INFO [homeassistant.components.automation] Initialized rule Rain is over
</pre></div>
</div>
</div>
</code></pre>
<p>The Logbook component will show a line entry when an automation is triggered. You can look at the previous entry to determine which trigger in the rule triggered the event.</p>

View file

@ -93,16 +93,14 @@
<p>Home Assistant offers a wide range of automations. In the next few pages well try to guide you through all the different possibilities and options. Besides this documentation there are also a couple of people who have made their automation configurations <a href="/cookbook/#example-configurationyaml">publicly available</a>.</p>
<h3><a class="title-link" name="the-basics-of-automation" href="#the-basics-of-automation"></a> The basics of automation</h3>
<h3><a class="title-link" name="automation-basics" href="#automation-basics"></a> Automation basics</h3>
<p>Before you can go ahead and create your own automations, its important to learn the basics. To explore the basics, lets have a look at the following example home automation rule:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>(trigger) When Paulus arrives home
<div class="language-text highlighter-rouge"><pre class="highlight"><code>(trigger) When Paulus arrives home
(condition) and it is after sunset:
(action) Turn the lights in the living room on
</pre></div>
</div>
</code></pre>
</div>
<p>The example consists of three different parts: a trigger, a condition and an action.</p>
@ -133,24 +131,24 @@ The difference between a condition and a trigger can be confusing as they are ve
<tr>
<td>Entity ID</td>
<td>Unique identifier for the entity.</td>
<td><code>light.kitchen</code></td>
<td><code class="highlighter-rouge">light.kitchen</code></td>
</tr>
<tr>
<td>State</td>
<td>The current state of the device.</td>
<td><code>home</code></td>
<td><code class="highlighter-rouge">home</code></td>
</tr>
<tr>
<td>Attributes</td>
<td>Extra data related to the device and/or current state.</td>
<td><code>brightness</code></td>
<td><code class="highlighter-rouge">brightness</code></td>
</tr>
</tbody>
</table>
<p>State changes can be used as the source of triggers and the current state can be used in conditions.</p>
<p>Actions are all about calling services. To explore the available services open the <img src="/images/screenshots/developer-tool-services-icon.png" class="no-shadow" height="38" /> Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service <code>light.turn_on</code> is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.</p>
<p>Actions are all about calling services. To explore the available services open the <img src="/images/screenshots/developer-tool-services-icon.png" class="no-shadow" height="38" /> Services developer tool. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service <code class="highlighter-rouge">light.turn_on</code> is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.</p>
<h3><a href="/getting-started/automation-create-first/">Next step: Your First Automation »</a></h3>

View file

@ -93,24 +93,20 @@
<p>To get Home Assistant installed as a background service, run:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ hass --script macos install
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>hass --script macos install
Home Assistant has been installed. Open it here: http://localhost:8123
</pre></div>
</div>
</code></pre>
</div>
<p>Home Assistant will log to <code>~/Library/Logs/homeassistant.log</code></p>
<p>Home Assistant will log to <code class="highlighter-rouge">~/Library/Logs/homeassistant.log</code></p>
<p>To uninstall the service, run:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ hass --script macos uninstall
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>hass --script macos uninstall
Home Assistant has been uninstalled.
</pre></div>
</div>
</code></pre>
</div>

View file

@ -93,45 +93,37 @@
<p>SSH onto your synology &amp; login as admin or root</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ cd /volume1/homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span><span class="nb">cd</span> /volume1/homeassistant
</code></pre>
</div>
<p>Create “homeassistant.conf” file using the following code</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre># only start this service after the httpd user process has started
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="c"># only start this service after the httpd user process has started</span>
start on started httpd-user
# stop the service gracefully if the runlevel changes to 'reboot'
stop on runlevel [06]
<span class="c"># stop the service gracefully if the runlevel changes to 'reboot'</span>
stop on runlevel <span class="o">[</span>06]
# run the scripts as the 'http' user. Running as root (the default) is a bad ide
#setuid admin
<span class="c"># run the scripts as the 'http' user. Running as root (the default) is a bad ide</span>
<span class="c">#setuid admin</span>
# exec the process. Use fully formed path names so that there is no reliance on
# the 'www' file is a node.js script which starts the foobar application.
exec /bin/sh /volume1/homeassistant/hass-daemon start
</pre></div>
</div>
<span class="c"># exec the process. Use fully formed path names so that there is no reliance on</span>
<span class="c"># the 'www' file is a node.js script which starts the foobar application.</span>
<span class="nb">exec</span> /bin/sh /volume1/homeassistant/hass-daemon start
</code></pre>
</div>
<p>Register the autostart</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ln -s homeassistant-conf /etc/init/homeassistant-conf
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ln -s homeassistant-conf /etc/init/homeassistant-conf
</code></pre>
</div>
<p>Make the relevant files executable:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ chmod -r 777 /etc/init/homeassistant-conf
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>chmod -r 777 /etc/init/homeassistant-conf
</code></pre>
</div>
<p>Thats it - reboot your NAS and Home Assistant should automatically start</p>

View file

@ -89,20 +89,17 @@
<hr class="divider">
<p>Newer linux distributions are trending towards using <code>systemd</code> for managing daemons. Typically, systems based on Fedora, ArchLinux, or Debian (8 or later) use <code>systemd</code>. This includes Ubuntu releases including and after 15.04, CentOS, and Red Hat. If you are unsure if your system is using <code>systemd</code>, you may check with the following command:</p>
<p>Newer linux distributions are trending towards using <code class="highlighter-rouge">systemd</code> for managing daemons. Typically, systems based on Fedora, ArchLinux, or Debian (8 or later) use <code class="highlighter-rouge">systemd</code>. This includes Ubuntu releases including and after 15.04, CentOS, and Red Hat. If you are unsure if your system is using <code class="highlighter-rouge">systemd</code>, you may check with the following command:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ps -p 1 -o comm=
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ps -p 1 -o <span class="nv">comm</span><span class="o">=</span>
</code></pre>
</div>
<p>If the preceding command returns the string <code>systemd</code>, you are likely using <code>systemd</code>.</p>
<p>If the preceding command returns the string <code class="highlighter-rouge">systemd</code>, you are likely using <code class="highlighter-rouge">systemd</code>.</p>
<p>If you want Home Assistant to be launched automatically, an extra step is needed to setup <code>systemd</code>. You need a service file to control Home Assistant with <code>systemd</code>. If you are using a Raspberry Pi with Raspbian then replace the <code>[your user]</code> with <code>pi</code> otherwise use your user you want to run Home Assistant. <code>ExecStart</code> contains the path to <code>hass</code> and this may vary. Check with <code>whereis hass</code> for the location.</p>
<p>If you want Home Assistant to be launched automatically, an extra step is needed to setup <code class="highlighter-rouge">systemd</code>. You need a service file to control Home Assistant with <code class="highlighter-rouge">systemd</code>. If you are using a Raspberry Pi with Raspbian then replace the <code class="highlighter-rouge">[your user]</code> with <code class="highlighter-rouge">pi</code> otherwise use your user you want to run Home Assistant. <code class="highlighter-rouge">ExecStart</code> contains the path to <code class="highlighter-rouge">hass</code> and this may vary. Check with <code class="highlighter-rouge">whereis hass</code> for the location.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ su -c 'cat &lt;&lt;EOF &gt;&gt; /etc/systemd/system/home-assistant@[your user].service
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>su -c <span class="s1">'cat &lt;&lt;EOF &gt;&gt; /etc/systemd/system/home-assistant@[your user].service
[Unit]
Description=Home Assistant
After=network.target
@ -114,57 +111,48 @@ ExecStart=/usr/bin/hass
[Install]
WantedBy=multi-user.target
EOF'
</pre></div>
</div>
EOF'</span>
</code></pre>
</div>
<p>There is also another <a href="https://raw.githubusercontent.com/home-assistant/home-assistant/master/script/home-assistant%40.service">sample service file</a> available. To use this one, just download it.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo wget https://raw.githubusercontent.com/home-assistant/home-assistant/master/script/home-assistant%40.service -O /etc/systemd/system/home-assistant@[your user].service
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo wget https://raw.githubusercontent.com/home-assistant/home-assistant/master/script/home-assistant%40.service -O /etc/systemd/system/home-assistant@[your user].service
</code></pre>
</div>
<p>You need to reload <code>systemd</code> to make the daemon aware of the new configuration. Enable and launch Home Assistant after that.</p>
<p>You need to reload <code class="highlighter-rouge">systemd</code> to make the daemon aware of the new configuration. Enable and launch Home Assistant after that.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo systemctl --system daemon-reload
$ sudo systemctl enable home-assistant@[your user]
$ sudo systemctl start home-assistant@[your user]
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo systemctl --system daemon-reload
<span class="gp">$ </span>sudo systemctl <span class="nb">enable </span>home-assistant@[your user]
<span class="gp">$ </span>sudo systemctl start home-assistant@[your user]
</code></pre>
</div>
<p>If everything went well, <code>sudo systemctl start home-assistant@[your user]</code> should give you a positive feedback.</p>
<p>If everything went well, <code class="highlighter-rouge">sudo systemctl start home-assistant@[your user]</code> should give you a positive feedback.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo systemctl status home-assistant@[your user] -l
● home-assistant@fab.service - Home Assistant for [your user]
Loaded: loaded (/etc/systemd/system/home-assistant@[your user].service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2016-03-26 12:26:06 CET; 13min ago
Main PID: 30422 (hass)
CGroup: /system.slice/system-home\x2dassistant.slice/home-assistant@[your user].service
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo systemctl status home-assistant@[your user] -l
● home-assistant@fab.service - Home Assistant <span class="k">for</span> <span class="o">[</span>your user]
Loaded: loaded <span class="o">(</span>/etc/systemd/system/home-assistant@[your user].service; enabled; vendor preset: disabled<span class="o">)</span>
Active: active <span class="o">(</span>running<span class="o">)</span> since Sat 2016-03-26 12:26:06 CET; 13min ago
Main PID: 30422 <span class="o">(</span>hass<span class="o">)</span>
CGroup: /system.slice/system-home<span class="se">\x</span>2dassistant.slice/home-assistant@[your user].service
├─30422 /usr/bin/python3 /usr/bin/hass
└─30426 /usr/bin/python3 /usr/bin/hass
[...]
</pre></div>
</div>
<span class="o">[</span>...]
</code></pre>
</div>
<p>To get Home Assistants logging output, simple use <code>journalctl</code>.</p>
<p>To get Home Assistants logging output, simple use <code class="highlighter-rouge">journalctl</code>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ journalctl -f -u home-assistant@[your user]
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>journalctl -f -u home-assistant@[your user]
</code></pre>
</div>
<p>Because the log can scroll quite quickly, you might want to open a second terminal to view only the errors:<br />
<code>bash
$ journalctl -f -u home-assistant@[your user] | grep -i 'error'
</code></p>
<p>Because the log can scroll quite quickly, you might want to open a second terminal to view only the errors:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>journalctl -f -u home-assistant@[your user] | grep -i <span class="s1">'error'</span>
</code></pre>
</div>
</article>

View file

@ -91,26 +91,22 @@
<p>Many linux distributions use the Upstart system (or similar) for managing daemons. Typically, systems based on Debian 7 or previous use Upstart. This includes Ubuntu releases before 15.04. If you are unsure if your system is using Upstart, you may check with the following command:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ps -p 1 -o comm=
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ps -p 1 -o <span class="nv">comm</span><span class="o">=</span>
</code></pre>
</div>
<p>If the preceding command returns the string <code>init</code>, you are likely using Upstart.</p>
<p>If the preceding command returns the string <code class="highlighter-rouge">init</code>, you are likely using Upstart.</p>
<p>Upstart will launch init scripts that are located in the directory <code>/etc/init.d/</code>. A sample init script for systems using Upstart is <a href="https://raw.githubusercontent.com/home-assistant/home-assistant/dev/script/hass-daemon">maintained by this project</a>.</p>
<p>Upstart will launch init scripts that are located in the directory <code class="highlighter-rouge">/etc/init.d/</code>. A sample init script for systems using Upstart is <a href="https://raw.githubusercontent.com/home-assistant/home-assistant/dev/script/hass-daemon">maintained by this project</a>.</p>
<p>To install this script, download it, tweak it to you liking, and install it by following the directions in the header. This script will setup Home Assistant to run when the system boots. To start/stop Home Assistant manually, issue the following commands:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo service hass-daemon start
$ sudo service hass-daemon stop
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo service hass-daemon start
<span class="gp">$ </span>sudo service hass-daemon stop
</code></pre>
</div>
<p>When running Home Assistant with this script, the configuration directory will be located at <code>/var/opt/homeassistant</code>. This directory will contain a verbose log rather than simply an error log.</p>
<p>When running Home Assistant with this script, the configuration directory will be located at <code class="highlighter-rouge">/var/opt/homeassistant</code>. This directory will contain a verbose log rather than simply an error log.</p>
<p>When running daemons, it is good practice to have the daemon run under its own user name rather than the default users name. Instructions for setting this up are outside the scope of this document.</p>

View file

@ -89,41 +89,37 @@
<hr class="divider">
<p>By default Home Assistant will try to detect your location and will automatically select a temperature unit and time zone based on your location. You can overwrite this by adding the following information to your <code>configuration.yaml</code>:</p>
<p>By default Home Assistant will try to detect your location and will automatically select a temperature unit and time zone based on your location. You can overwrite this by adding the following information to your <code class="highlighter-rouge">configuration.yaml</code>:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">homeassistant</span>:
<span class="comment"># Omitted values in this section will be auto detected using freegeoip.io</span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">homeassistant</span><span class="pi">:</span>
<span class="c1"># Omitted values in this section will be auto detected using freegeoip.io</span>
<span class="comment"># Location required to calculate the time the sun rises and sets</span>
<span class="key">latitude</span>: <span class="string"><span class="content">32.87336</span></span>
<span class="key">longitude</span>: <span class="string"><span class="content">117.22743</span></span>
<span class="c1"># Location required to calculate the time the sun rises and sets</span>
<span class="s">latitude</span><span class="pi">:</span> <span class="s">32.87336</span>
<span class="s">longitude</span><span class="pi">:</span> <span class="s">117.22743</span>
<span class="comment"># Impacts weather/sunrise data (altitude above sea level) </span>
<span class="key">elevation</span>: <span class="string"><span class="content">430</span></span>
<span class="c1"># Impacts weather/sunrise data (altitude above sea level) </span>
<span class="s">elevation</span><span class="pi">:</span> <span class="s">430</span>
<span class="comment"># 'metric' for Metric, 'imperial' for Imperial</span>
<span class="key">unit_system</span>: <span class="string"><span class="content">metric</span></span>
<span class="c1"># 'metric' for Metric, 'imperial' for Imperial</span>
<span class="s">unit_system</span><span class="pi">:</span> <span class="s">metric</span>
<span class="comment"># Pick yours from here:</span>
<span class="comment"># http://en.wikipedia.org/wiki/List_of_tz_database_time_zones</span>
<span class="key">time_zone</span>: <span class="string"><span class="content">America/Los_Angeles</span></span>
<span class="c1"># Pick yours from here:</span>
<span class="c1"># http://en.wikipedia.org/wiki/List_of_tz_database_time_zones</span>
<span class="s">time_zone</span><span class="pi">:</span> <span class="s">America/Los_Angeles</span>
<span class="comment"># Name of the location where Home Assistant is running</span>
<span class="key">name</span>: <span class="string"><span class="content">Home</span></span>
</pre></div>
</div>
<span class="c1"># Name of the location where Home Assistant is running</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Home</span>
</code></pre>
</div>
<h3><a class="title-link" name="password-protecting-the-web-interface" href="#password-protecting-the-web-interface"></a> Password protecting the web interface</h3>
<p>The first thing you will want to add is a password for the web interface. Use your favourite text editor to open <code>configuration.yaml</code> and edit the <code>http</code> section:</p>
<p>The first thing you will want to add is a password for the web interface. Use your favourite text editor to open <code class="highlighter-rouge">configuration.yaml</code> and edit the <code class="highlighter-rouge">http</code> section:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">http</span>:
<span class="key">api_password</span>: <span class="string"><span class="content">YOUR_PASSWORD</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">http</span><span class="pi">:</span>
<span class="s">api_password</span><span class="pi">:</span> <span class="s">YOUR_PASSWORD</span>
</code></pre>
</div>
<p class="note warning">
@ -140,7 +136,7 @@ If you are planing to expose your Home Assistant instance to the internet and do
<p>To make Home Assistant accessible while away from home, you will have to make it accessible.</p>
<p>The common approach is to setup port forwarding from your router to port 8123 on the computer that is hosting Home Assistant. Instructions on how to do this can be found by searching <code>&lt;Router model&gt; port forwarding instructions</code>.</p>
<p>The common approach is to setup port forwarding from your router to port 8123 on the computer that is hosting Home Assistant. Instructions on how to do this can be found by searching <code class="highlighter-rouge">&lt;Router model&gt; port forwarding instructions</code>.</p>
<p>The problem with making a port accessible is that some Internet service providers will only offer dynamic IPs. This can cause you to be unable to access Home Assistant while away. You can solve this by using a free Dynamic DNS service like <a href="https://www.duckdns.org/">DuckDNS</a>.</p>

View file

@ -103,31 +103,31 @@
<tbody>
<tr>
<td>OS X</td>
<td><code>~/.homeassistant</code></td>
<td><code class="highlighter-rouge">~/.homeassistant</code></td>
</tr>
<tr>
<td>Linux</td>
<td><code>~/.homeassistant</code></td>
<td><code class="highlighter-rouge">~/.homeassistant</code></td>
</tr>
<tr>
<td>Windows</td>
<td><code>%APPDATA%/.homeassistant</code></td>
<td><code class="highlighter-rouge">%APPDATA%/.homeassistant</code></td>
</tr>
</tbody>
</table>
<p>If you want to use a different folder for configuration, use the config command line parameter: <code>hass --config path/to/config</code>.</p>
<p>If you want to use a different folder for configuration, use the config command line parameter: <code class="highlighter-rouge">hass --config path/to/config</code>.</p>
<p>Inside your configuration folder is the file <code>configuration.yaml</code>. This is the main file that contains which components will be loaded and what their configuration is. Throughout the documentation you will find snippets that you can add to your configuration file to enable that functionality.</p>
<p>Inside your configuration folder is the file <code class="highlighter-rouge">configuration.yaml</code>. This is the main file that contains which components will be loaded and what their configuration is. Throughout the documentation you will find snippets that you can add to your configuration file to enable that functionality.</p>
<p>If you run into trouble while configuring Home Assistant, have a look at <a href="/getting-started/troubleshooting-configuration/">the configuration troubleshooting page</a> and at the <a href="/cookbook/#example-configurationyaml">configuration.yaml examples</a>.</p>
<p class="note">
You will have to restart Home Assistant for changes to <code>configuration.yaml</code> take effect.
You will have to restart Home Assistant for changes to <code class="highlighter-rouge">configuration.yaml</code> take effect.
</p>
<p class="note tip">
Install colorlog (<code>$ pip3 install colorlog</code>) to make the console output easier to read, hence also easier to catch errors and warnings.
Install colorlog (<code class="highlighter-rouge">$ pip3 install colorlog</code>) to make the console output easier to read, hence also easier to catch errors and warnings.
</p>
<h3><a href="/getting-started/yaml/">Next step: Get familiar with YAML »</a></h3>

View file

@ -89,43 +89,68 @@
<hr class="divider">
<p>By default, all of your devices will be visible and have a default icon determined by their domain. You can customize the look and feel of your front page by altering some of these parameters. This can be done by adding the following configuration inside the <code>homeassistant:</code> section.</p>
<p>By default, all of your devices will be visible and have a default icon determined by their domain. You can customize the look and feel of your front page by altering some of these parameters. This can be done by overriding attributes of specific entities.</p>
<p>Devices that you dont want to have visible can be hidden with <code>hidden</code>.</p>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry</span>
<span class="s">homeassistant</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Home</span>
<span class="s">unit_system</span><span class="pi">:</span> <span class="s">celsius</span>
<span class="c1"># etc</span>
<p><code>entity_picture</code>entries, badges, <code>device_tracker</code> pictures, etc. can either be external URLs (e.g. <code>http://example.com/example.jpg</code>) or of the form <code>/local/filename.jpg</code>, where <code>/local</code> represents the directory <code>www</code> in the HASS configuration directory. You may have to create the <code>www</code> directory yourself as it is not made automatically.</p>
<p>You can also use <code>icon</code> and refer to any icon from <a href="http://MaterialDesignIcons.com">MaterialDesignIcons.com</a>.</p>
<p>For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting <code>assumed_state</code> to <code>false</code> you will get the default switch icon.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">homeassistant</span>:
<span class="comment"># Add this to your existing configuration</span>
<span class="comment"># Only the `entity_id` is required. All other options are optional.</span>
<span class="key">customize</span>:
<span class="key">sensor.living_room_motion</span>:
<span class="key">hidden</span>: <span class="string"><span class="content">true</span></span>
<span class="key">thermostat.family_roomfamily_room</span>:
<span class="key">entity_picture</span>: <span class="string"><span class="content">https://dl.dropboxusercontent.com/u/12345/images/nest.jpg</span></span>
<span class="key">friendly_name</span>: <span class="string"><span class="content">Nest</span></span>
<span class="key">switch.wemo_switch_1</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Toaster</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/toaster.jpg</span></span>
<span class="key">switch.wemo_switch_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Kitchen kettle</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:kettle</span></span>
<span class="key">switch.rfxtrx_switch</span>:
<span class="key">assumed_state</span>: <span class="string"><span class="content">false</span></span>
</pre></div>
</div>
<span class="s">customize</span><span class="pi">:</span>
<span class="c1"># Only the 'entity_id' is required. All other options are optional.</span>
<span class="s">sensor.living_room_motion</span><span class="pi">:</span>
<span class="s">hidden</span><span class="pi">:</span> <span class="s">true</span>
<span class="s">thermostat.family_roomfamily_room</span><span class="pi">:</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">https://example.com/images/nest.jpg</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Nest</span>
<span class="s">switch.wemo_switch_1</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Toaster</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/toaster.jpg</span>
<span class="s">switch.wemo_switch_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Kitchen kettle</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:kettle</span>
<span class="s">switch.rfxtrx_switch</span><span class="pi">:</span>
<span class="s">assumed_state</span><span class="pi">:</span> <span class="s">false</span>
</code></pre>
</div>
<h3><a class="title-link" name="possible-values" href="#possible-values"></a> Possible values</h3>
<table>
<thead>
<tr>
<th>Attribute</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>friendly_name</td>
<td>Name of the entity</td>
</tr>
<tr>
<td>hidden</td>
<td>Set to <code class="highlighter-rouge">true</code> to hide the entity.</td>
</tr>
<tr>
<td>entity_picture</td>
<td>url to use as picture for entity</td>
</tr>
<tr>
<td>icon</td>
<td>Any icon from <a href="http://MaterialDesignIcons.com">MaterialDesignIcons.com</a>. Prefix name with <code class="highlighter-rouge">mdi:</code>, ie <code class="highlighter-rouge">mdi:home</code>.</td>
</tr>
<tr>
<td>assumed_state</td>
<td>For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting <code class="highlighter-rouge">assumed_state</code> to <code class="highlighter-rouge">false</code> you will get the default switch icon.</td>
</tr>
</tbody>
</table>
<h3><a class="title-link" name="reloading-customize" href="#reloading-customize"></a> Reloading customize</h3>
<p>Home Assistant offers a service to reload the core configuration while Home Assistant is running called <code>homeassistant/reload_core_config</code>. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the <img src="/images/screenshots/developer-tool-services-icon.png" alt="service developer tool icon" class="no-shadow" height="38" /> service developer tools, select the service <code>homeassistant/reload_core_config</code> and click “Call Service”.</p>
<p>Home Assistant offers a service to reload the core configuration while Home Assistant is running called <code class="highlighter-rouge">homeassistant/reload_core_config</code>. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the <img src="/images/screenshots/developer-tool-services-icon.png" alt="service developer tool icon" class="no-shadow" height="38" /> service developer tools, select the service <code class="highlighter-rouge">homeassistant/reload_core_config</code> and click “Call Service”.</p>
<p class="note warning">
New customize information will be applied the next time the state of the entity gets updated.

View file

@ -89,70 +89,60 @@
<hr class="divider">
<p>Home Assistant will be able to automatically discover and configure any Google Chromecasts, Netgear routers, Belkin WeMo switches, Philips Hue bridges and Sonos speakers on your network if you have <a href="/components/discovery/">the discovery component</a> enabled (which is by default).</p>
<p>Home Assistant will be able to automatically discover a bunch of devices and services available on your network if you have <a href="/components/discovery/">the discovery component</a> enabled (which is by default).</p>
<p>See the <a href="/components/">components overview page</a> to find installation instructions for your devices and services. If you cant find support for your favorite device or service, <a href="/developers/add_new_platform/">consider adding support</a>.</p>
<p>Usually every entity needs its own entry in the <code>configuration.yaml</code> file. There are two styles for multiple entries:</p>
<p>Usually every entity needs its own entry in the <code class="highlighter-rouge">configuration.yaml</code> file. There are two styles for multiple entries:</p>
<h4><a class="title-link" name="style-1-collect-every-entity-under-the-parent" href="#style-1-collect-every-entity-under-the-parent"></a> Style 1: Collect every entity under the “parent”</h4>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">sensor</span>:
- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">home/bedroom/temperature</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">MQTT Sensor 1</span><span class="delimiter">&quot;</span></span>
- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">home/kitchen/temperature</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">MQTT Sensor 2</span><span class="delimiter">&quot;</span></span>
- <span class="string"><span class="content">platform: rest</span></span>
<span class="key">resource</span>: <span class="string"><span class="content">http://IP_ADDRESS/ENDPOINT</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">home/bedroom/temperature"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">MQTT</span><span class="nv"> </span><span class="s">Sensor</span><span class="nv"> </span><span class="s">1"</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">home/kitchen/temperature"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">MQTT</span><span class="nv"> </span><span class="s">Sensor</span><span class="nv"> </span><span class="s">2"</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">rest</span>
<span class="s">resource</span><span class="pi">:</span> <span class="s">http://IP_ADDRESS/ENDPOINT</span>
<span class="key">switch</span>:
- <span class="string"><span class="content">platform: vera</span></span>
</pre></div>
</div>
<span class="s">switch</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">vera</span>
</code></pre>
</div>
<h4><a class="title-link" name="style-2-list-each-device-separately" href="#style-2-list-each-device-separately"></a> Style 2: List each device separately</h4>
<p>You need to append numbers or strings to differentiate the entries, as in the example below. The appended number or string must be unique.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">media_player livingroom</span>:
<span class="key">platform</span>: <span class="string"><span class="content">mpd</span></span>
<span class="key">server</span>: <span class="string"><span class="content">IP_ADDRESS</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">media_player livingroom</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">mpd</span>
<span class="s">server</span><span class="pi">:</span> <span class="s">IP_ADDRESS</span>
<span class="key">media_player kitchen</span>:
<span class="key">platform</span>: <span class="string"><span class="content">plex</span></span>
<span class="s">media_player kitchen</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">plex</span>
<span class="key">camera 1</span>:
<span class="key">platform</span>: <span class="string"><span class="content">generic</span></span>
<span class="s">camera 1</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">generic</span>
<span class="key">camera 2</span>:
<span class="key">platform</span>: <span class="string"><span class="content">mjpeg</span></span>
</pre></div>
<span class="s">camera 2</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">mjpeg</span>
</code></pre>
</div>
</div>
<p class="note note">
If your devices are not showing up in the frontend then check the entries in your <code>configuration.yaml</code> file for duplicates.
</p>
<h3><a class="title-link" name="grouping-devices" href="#grouping-devices"></a> Grouping devices</h3>
<p>Once you have a bunch of devices set up, it is time to organize them into groups. <br />
<p>Once you have a bunch of devices set up, it is time to organize them into groups.<br />
Each group exists of a name and a list of entity IDs. Entity IDs can be retrieved from the web interface by using the Set State page in the Developer Tools (second icon).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry showing two styles</span>
<span class="key">group</span>:
<span class="key">living_room</span>: <span class="string"><span class="content">light.table_lamp, switch.ac</span></span>
<span class="key">bedroom</span>:
- <span class="string"><span class="content">light.bedroom</span></span>
- <span class="string"><span class="content">media_player.nexus_player</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml entry showing two styles</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">living_room</span><span class="pi">:</span> <span class="s">light.table_lamp, switch.ac</span>
<span class="s">bedroom</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">light.bedroom</span>
<span class="pi">-</span> <span class="s">media_player.nexus_player</span>
</code></pre>
</div>
<p>For more details please check the <a href="https://home-assistant.io/components/group/">Group</a> page.</p>

View file

@ -93,11 +93,9 @@
<p>Installing and running Home Assistant on your local machine is easy. Make sure you have <a href="https://www.python.org/downloads/">Python 3.4 or higher</a> installed and execute the following code in a console:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ pip3 install homeassistant
$ hass --open-ui
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>pip3 install homeassistant
<span class="gp">$ </span>hass --open-ui
</code></pre>
</div>
<p>Running these commands will:</p>
@ -133,7 +131,7 @@ $ hass --open-ui
<h3><a class="title-link" name="whats-next" href="#whats-next"></a> Whats next?</h3>
<p>To see what Home Assistant can do, launch demo mode: <code>hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<p>To see what Home Assistant can do, launch demo mode: <code class="highlighter-rouge">hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<h3><a href="/getting-started/configuration/">Next step: Configuring Home Assistant »</a></h3>

View file

@ -89,26 +89,24 @@
<hr class="divider">
<p>Installation with Docker is straightforward. Adjust the following command so that <code>/path/to/your/config/</code> points at the folder where you want to store your config and run it:</p>
<p>Installation with Docker is straightforward. Adjust the following command so that <code class="highlighter-rouge">/path/to/your/config/</code> points at the folder where you want to store your config and run it:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ docker run -d --name=&quot;home-assistant&quot; -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>docker run -d --name<span class="o">=</span><span class="s2">"home-assistant"</span> -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --net<span class="o">=</span>host homeassistant/home-assistant
</code></pre>
</div>
<p>This will launch Home Assistant and serve the web interface from port 8123 on your Docker host.</p>
<p class="note">
When using boot2docker on OS X you are unable to map the local time to your Docker container. Replace <code>-v /etc/localtime:/etc/localtime:ro</code> with <code>-e "TZ=America/Los_Angeles"</code> (replacing America/Los_Angeles with <a href="http://en.wikipedia.org/wiki/List_of_tz_database_time_zones">your timezone</a>)
When using boot2docker on OS X you are unable to map the local time to your Docker container. Replace <code class="highlighter-rouge">-v /etc/localtime:/etc/localtime:ro</code> with <code class="highlighter-rouge">-e "TZ=America/Los_Angeles"</code> (replacing America/Los_Angeles with <a href="http://en.wikipedia.org/wiki/List_of_tz_database_time_zones">your timezone</a>)
</p>
<p>If you change the config you have to restart the server.<br />
<p>If you change the config you have to restart the server.
To do that you have 2 options.</p>
<ol>
<li>You can go to the <img src="/images/screenshots/developer-tool-services-icon.png" alt="service developer tool icon" class="no-shadow" height="38" /> service developer tools, select the service <code>homeassistant/restart</code> and click “Call Service”.</li>
<li>Or you can restart it from an terminal by running <code>docker restart home-assistant</code></li>
<li>You can go to the <img src="/images/screenshots/developer-tool-services-icon.png" alt="service developer tool icon" class="no-shadow" height="38" /> service developer tools, select the service <code class="highlighter-rouge">homeassistant/restart</code> and click “Call Service”.</li>
<li>Or you can restart it from an terminal by running <code class="highlighter-rouge">docker restart home-assistant</code></li>
</ol>
<h3><a class="title-link" name="troubleshooting" href="#troubleshooting"></a> Troubleshooting</h3>

View file

@ -94,32 +94,30 @@
<p>The only requirement is that you have a Raspberry Pi with a fresh installation of <a href="https://www.raspberrypi.org/downloads/raspbian/">Raspbian Jessie</a> connected to your network.</p>
<ul>
<li>Login to Raspberry Pi. For example with <code>ssh pi@your_raspberry_pi_ip</code></li>
<li>Login to Raspberry Pi. For example with <code class="highlighter-rouge">ssh pi@your_raspberry_pi_ip</code></li>
<li>Run the following command</li>
</ul>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh &amp;&amp; bash hass_rpi_installer.sh
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh <span class="o">&amp;&amp;</span> bash hass_rpi_installer.sh
</code></pre>
</div>
<p class="note warning">
Note this command is one-line and not run as sudo.
</p>
<p>Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry PI hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: <code>/home/pi/fabric-home-assistant/installation_report.txt</code> The installer has been updated to simply log any errors encountered, but resume installing. Please consult the “installation report” if your install encountered issues.</p>
<p>Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry PI hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: <code class="highlighter-rouge">/home/pi/fabric-home-assistant/installation_report.txt</code> The installer has been updated to simply log any errors encountered, but resume installing. Please consult the “installation report” if your install encountered issues.</p>
<p><a href="http://www.bruhautomation.com">BRUH automation</a> has created <a href="https://www.youtube.com/watch?v=VGl3KTrYo6s">a tutorial video</a> explaining how to install Raspbian on your Raspberry Pi and install Home Assistant using the All-In-One Installer.</p>
<p>Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at <a href="http://your_raspberry_pi_ip:8123">http://your_raspberry_pi_ip:8123</a>.</p>
<p>The Home Assistant configuration is located at <code>/home/hass/.homeassistant</code>. The <a href="https://virtualenv.pypa.io/en/latest/">virtualenv</a> with the Home Assistant installation is located at <code>/srv/hass/hass_venv</code>. As part of the secure installation, a new user (<strong>hass</strong>) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your <code>configuration.yaml</code> files, you will need to run the commands with <code>sudo</code> or by switching user.</p>
<p>The Home Assistant configuration is located at <code class="highlighter-rouge">/home/hass/.homeassistant</code>. The <a href="https://virtualenv.pypa.io/en/latest/">virtualenv</a> with the Home Assistant installation is located at <code class="highlighter-rouge">/srv/hass/hass_venv</code>. As part of the secure installation, a new user (<strong>hass</strong>) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your <code class="highlighter-rouge">configuration.yaml</code> files, you will need to run the commands with <code class="highlighter-rouge">sudo</code> or by switching user.</p>
<p class="note note">
<em>Windows users</em>: Setting up WinSCP to allow this seemlessly is at the end of this page.
</p>
<p>By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag <code>-n</code> to the end of the install command specified above.</p>
<p>By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag <code class="highlighter-rouge">-n</code> to the end of the install command specified above.</p>
<p>The All-In-One Installer script will do the following automatically:</p>
@ -128,11 +126,11 @@
<li>Create needed service accounts</li>
<li>Install OS and Python dependencies</li>
<li>Setup a python virtualenv to run Home Assistant and components inside.</li>
<li>Run as <code>hass</code> service account</li>
<li>Run as <code class="highlighter-rouge">hass</code> service account</li>
<li>Install Home Assistant in a virtualenv</li>
<li>Build and install Mosquitto v1.4.9 from source with websocket support running on ports 1883 and 9001</li>
<li>Build and Install Python-openzwave in the Home Assistant virtualenv</li>
<li>Build openzwave-control-panel in <code>/srv/hass/src/open-zwave-control-panel</code></li>
<li>Build openzwave-control-panel in <code class="highlighter-rouge">/srv/hass/src/open-zwave-control-panel</code></li>
<li>Add both Home Assistant and Mosquitto to systemd services to start at boot</li>
</ul>
@ -141,25 +139,25 @@
<p>To upgrade the All-In-One setup manually:</p>
<ul>
<li>Login to Raspberry Pi <code>ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to hass user <code>sudo su -s /bin/bash hass</code></li>
<li>Change to virtual enviroment <code>source /srv/hass/hass_venv/bin/activate</code></li>
<li>Update HA <code>pip3 install --upgrade homeassistant</code></li>
<li>Login to Raspberry Pi <code class="highlighter-rouge">ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to hass user <code class="highlighter-rouge">sudo su -s /bin/bash hass</code></li>
<li>Change to virtual enviroment <code class="highlighter-rouge">source /srv/hass/hass_venv/bin/activate</code></li>
<li>Update HA <code class="highlighter-rouge">pip3 install --upgrade homeassistant</code></li>
</ul>
<p>To upgrade with fabric:</p>
<ul>
<li>Login to Raspberry Pi <code>ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to <code>cd ~/fabric-home-assistant</code></li>
<li>Run <code>fab upgrade_homeassistant</code></li>
<li>Login to Raspberry Pi <code class="highlighter-rouge">ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to <code class="highlighter-rouge">cd ~/fabric-home-assistant</code></li>
<li>Run <code class="highlighter-rouge">fab upgrade_homeassistant</code></li>
</ul>
<p>After upgrading, you can restart Home Assistant a few different ways:</p>
<ul>
<li>Restarting the Raspberry Pi <code>sudo reboot</code></li>
<li>Restarting the Home-Assistant Service <code>sudo systemctl restart home-assistant.service</code></li>
<li>Restarting the Raspberry Pi <code class="highlighter-rouge">sudo reboot</code></li>
<li>Restarting the Home-Assistant Service <code class="highlighter-rouge">sudo systemctl restart home-assistant.service</code></li>
</ul>
<h3><a class="title-link" name="using-the-ozwcp-web-application" href="#using-the-ozwcp-web-application"></a> Using the OZWCP web application</h3>
@ -168,11 +166,11 @@
<ul>
<li>Make sure Home Assistant is not running! So stop that first</li>
<li>Login to Raspberry Pi <code>ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to the ozwcp directory <code>cd /srv/hass/src/open-zwave-control-panel/</code></li>
<li>Launch the control panel <code>sudo ./ozwcp -p 8888</code></li>
<li>Open a web browser to <code>http://your_pi_ip:8888</code></li>
<li>Specify your zwave controller, for example <code>/dev/ttyACM0</code> and hit initialize</li>
<li>Login to Raspberry Pi <code class="highlighter-rouge">ssh pi@your_raspberry_pi_ip</code></li>
<li>Change to the ozwcp directory <code class="highlighter-rouge">cd /srv/hass/src/open-zwave-control-panel/</code></li>
<li>Launch the control panel <code class="highlighter-rouge">sudo ./ozwcp -p 8888</code></li>
<li>Open a web browser to <code class="highlighter-rouge">http://your_pi_ip:8888</code></li>
<li>Specify your zwave controller, for example <code class="highlighter-rouge">/dev/ttyACM0</code> and hit initialize</li>
</ul>
<p class="note warning">
@ -181,7 +179,7 @@
<h3><a class="title-link" name="winscp" href="#winscp"></a> WinSCP</h3>
<p>If you are Windows users who is using <a href="https://winscp.net/">WinSCP</a>, please note that after running the installer, you will need to modify settings allowing you to “switch users” to edit your configuration files. The needed change within WinSCP is: <strong>Environment</strong> -&gt; <strong>SCP/Shell</strong> -&gt; <strong>Shell</strong> and set it to <code>sudo su -</code>.</p>
<p>If you are Windows users who is using <a href="https://winscp.net/">WinSCP</a>, please note that after running the installer, you will need to modify settings allowing you to “switch users” to edit your configuration files. The needed change within WinSCP is: <strong>Environment</strong> -&gt; <strong>SCP/Shell</strong> -&gt; <strong>Shell</strong> and set it to <code class="highlighter-rouge">sudo su -</code>.</p>
</article>

View file

@ -93,11 +93,9 @@
<p>Execute the following code in a console:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo pip3 install homeassistant
$ hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo pip3 install homeassistant
<span class="gp">$ </span>hass
</code></pre>
</div>
<p>Running these commands will:</p>
@ -125,7 +123,7 @@ $ hass
<p>If you want to have Home Assistant start on boot, <a href="/getting-started/autostart-systemd/">autostart instructions can be found here</a>.</p>
<p>To see what Home Assistant can do, launch demo mode: <code>hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<p>To see what Home Assistant can do, launch demo mode: <code class="highlighter-rouge">hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<h3><a href="/getting-started/configuration/">Next step: Configuring Home Assistant »</a></h3>

View file

@ -109,135 +109,126 @@
<p>Check the path to python3 (assumed to be /volume1/@appstore/py3k/usr/local/bin)</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ cd /volume1/@appstore/py3k/usr/local/bin
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span><span class="nb">cd</span> /volume1/@appstore/py3k/usr/local/bin
</code></pre>
</div>
<p>Install PIP (Pythons package management system)</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ python -m ensurepip
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python -m ensurepip
</code></pre>
</div>
<p>Use PIP to install Homeassistant package</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ pip3 install homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>pip3 install homeassistant
</code></pre>
</div>
<p>Create homeassistant config directory &amp; switch to it</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ mkdir /volume1/homeassistant
$ cd /volume1/homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>mkdir /volume1/homeassistant
<span class="gp">$ </span><span class="nb">cd</span> /volume1/homeassistant
</code></pre>
</div>
<p>Create hass-daemon file using the following code (edit the variables in uppercase if necessary)</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>#!/bin/sh
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
# Package
PACKAGE=&quot;homeassistant&quot;
DNAME=&quot;Home Assistant&quot;
<span class="c"># Package</span>
<span class="nv">PACKAGE</span><span class="o">=</span><span class="s2">"homeassistant"</span>
<span class="nv">DNAME</span><span class="o">=</span><span class="s2">"Home Assistant"</span>
# Others
USER=&quot;homeassistant&quot;
PYTHON_DIR=&quot;/volume1/@appstore/py3k/usr/local/bin&quot;
PYTHON=&quot;$PYTHON_DIR/python3&quot;
HASS=&quot;$PYTHON_DIR/hass&quot;
INSTALL_DIR=&quot;/volume1/homeassistant&quot;
PID_FILE=&quot;$INSTALL_DIR/home-assistant.pid&quot;
FLAGS=&quot;-v --config $INSTALL_DIR --pid-file $PID_FILE --daemon&quot;
REDIRECT=&quot;&gt; $INSTALL_DIR/home-assistant.log 2&gt;&amp;1&quot;
<span class="c"># Others</span>
<span class="nv">USER</span><span class="o">=</span><span class="s2">"homeassistant"</span>
<span class="nv">PYTHON_DIR</span><span class="o">=</span><span class="s2">"/volume1/@appstore/py3k/usr/local/bin"</span>
<span class="nv">PYTHON</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PYTHON_DIR</span><span class="s2">/python3"</span>
<span class="nv">HASS</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PYTHON_DIR</span><span class="s2">/hass"</span>
<span class="nv">INSTALL_DIR</span><span class="o">=</span><span class="s2">"/volume1/homeassistant"</span>
<span class="nv">PID_FILE</span><span class="o">=</span><span class="s2">"</span><span class="nv">$INSTALL_DIR</span><span class="s2">/home-assistant.pid"</span>
<span class="nv">FLAGS</span><span class="o">=</span><span class="s2">"-v --config </span><span class="nv">$INSTALL_DIR</span><span class="s2"> --pid-file </span><span class="nv">$PID_FILE</span><span class="s2"> --daemon"</span>
<span class="gp">REDIRECT="&gt; </span><span class="nv">$INSTALL_DIR</span>/home-assistant.log 2&gt;&amp;1<span class="s2">"
start_daemon ()
{
su ${USER} -s /bin/sh -c &quot;$PYTHON $HASS $FLAGS $REDIRECT;&quot;
su </span><span class="k">${</span><span class="nv">USER</span><span class="k">}</span><span class="s2"> -s /bin/sh -c "</span><span class="nv">$PYTHON</span> <span class="nv">$HASS</span> <span class="nv">$FLAGS</span> <span class="nv">$REDIRECT</span>;<span class="s2">"
}
stop_daemon ()
{
kill `cat ${PID_FILE}`
wait_for_status 1 20 || kill -9 `cat ${PID_FILE}`
rm -f ${PID_FILE}
kill </span><span class="sb">`</span>cat <span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="sb">`</span><span class="s2">
wait_for_status 1 20 || kill -9 </span><span class="sb">`</span>cat <span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="sb">`</span><span class="s2">
rm -f </span><span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="s2">
}
daemon_status ()
{
if [ -f ${PID_FILE} ] &amp;&amp; kill -0 `cat ${PID_FILE}` &gt; /dev/null 2&gt;&amp;1; then
if [ -f </span><span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="s2"> ] &amp;&amp; kill -0 </span><span class="sb">`</span>cat <span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="sb">`</span><span class="s2"> &gt; /dev/null 2&gt;&amp;1; then
return
fi
rm -f ${PID_FILE}
rm -f </span><span class="k">${</span><span class="nv">PID_FILE</span><span class="k">}</span><span class="s2">
return 1
}
wait_for_status ()
{
counter=$2
while [ ${counter} -gt 0 ]; do
counter=</span><span class="nv">$2</span><span class="s2">
while [ </span><span class="k">${</span><span class="nv">counter</span><span class="k">}</span><span class="s2"> -gt 0 ]; do
daemon_status
[ $? -eq $1 ] &amp;&amp; return
[ </span><span class="nv">$?</span><span class="s2"> -eq </span><span class="nv">$1</span><span class="s2"> ] &amp;&amp; return
let counter=counter-1
sleep 1
done
return 1
}
case $1 in
case </span><span class="nv">$1</span><span class="s2"> in
start)
if daemon_status; then
echo ${DNAME} is already running
echo </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> is already running
exit 0
else
echo Starting ${DNAME} ...
echo Starting </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> ...
start_daemon
exit $?
exit </span><span class="nv">$?</span><span class="s2">
fi
;;
stop)
if daemon_status; then
echo Stopping ${DNAME} ...
echo Stopping </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> ...
stop_daemon
exit $?
exit </span><span class="nv">$?</span><span class="s2">
else
echo ${DNAME} is not running
echo </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> is not running
exit 0
fi
;;
restart)
if daemon_status; then
echo Stopping ${DNAME} ...
echo Stopping </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> ...
stop_daemon
echo Starting ${DNAME} ...
echo Starting </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> ...
start_daemon
exit $?
exit </span><span class="nv">$?</span><span class="s2">
else
echo ${DNAME} is not running
echo Starting ${DNAME} ...
echo </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> is not running
echo Starting </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> ...
start_daemon
exit $?
exit </span><span class="nv">$?</span><span class="s2">
fi
;;
status)
if daemon_status; then
echo ${DNAME} is running
echo </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> is running
exit 0
else
echo ${DNAME} is not running
echo </span><span class="k">${</span><span class="nv">DNAME</span><span class="k">}</span><span class="s2"> is not running
exit 1
fi
;;
log)
echo ${LOG_FILE}
echo </span><span class="k">${</span><span class="nv">LOG_FILE</span><span class="k">}</span><span class="s2">
exit 0
;;
*)
@ -245,37 +236,30 @@ case $1 in
;;
esac
</pre></div>
</div>
</span></code></pre>
</div>
<p>Create links to python folders to make things easier in the future:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ln -s /volume1/@appstore/py3k/usr/local/bin python3
$ ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ln -s /volume1/@appstore/py3k/usr/local/bin python3
<span class="gp">$ </span>ln -s /volume1/@appstore/py3k/usr/local/lib/python3.5/site-packages/homeassistant
</code></pre>
</div>
<p>Set the owner and permissions on your config folder</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ chown -R homeassistant:users /volume1/homeassistant
$ chmod -R 664 /volume1/homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>chown -R homeassistant:users /volume1/homeassistant
<span class="gp">$ </span>chmod -R 664 /volume1/homeassistant
</code></pre>
</div>
<p>Make the daemon file executable:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ chmod 777 /volume1/homeassistant/hass-daemon
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>chmod 777 /volume1/homeassistant/hass-daemon
</code></pre>
</div>
<p>Copy your configuration.yaml file into the config folder<br />
<p>Copy your configuration.yaml file into the config folder
Thats it… youre all set to go</p>
<p>Here are some useful commands:</p>
@ -284,40 +268,32 @@ Thats it… youre all set to go</p>
<li>Start Home Assistant:</li>
</ul>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sh hass-daemon start
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sh hass-daemon start
</code></pre>
</div>
<ul>
<li>Stop Home Assistant:</li>
</ul>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sh hass-daemon stop
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sh hass-daemon stop
</code></pre>
</div>
<ul>
<li>Restart Home Assistant:</li>
</ul>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sh hass-daemon restart
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sh hass-daemon restart
</code></pre>
</div>
<ul>
<li>Upgrade Home Assistant::</li>
</ul>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ python3 -m pip install --upgrade homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python3 -m pip install --upgrade homeassistant
</code></pre>
</div>
<h3><a class="title-link" name="troubleshooting" href="#troubleshooting"></a> Troubleshooting</h3>
@ -336,7 +312,7 @@ Thats it… youre all set to go</p>
<p>If you want to have Home Assistant start on boot, <a href="/getting-started/autostart-synology/">autostart instructions can be found here</a>.</p>
<p>To see what Home Assistant can do, launch demo mode: <code>hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<p>To see what Home Assistant can do, launch demo mode: <code class="highlighter-rouge">hass --demo-mode</code> or visit the <a href="/demo">demo page</a>.</p>
<h3><a href="/getting-started/configuration/">Next step: Configuring Home Assistant »</a></h3>

View file

@ -89,7 +89,7 @@
<hr class="divider">
<p>A <code>Vagrantfile</code> is available into <code>virtualization/vagrant</code> folder for quickly spinning up a Linux virtual machine running Home Assistant. This can be beneficial for those who want to experiment with Home Assistant and/or developers willing to easily test local changes and run test suite against them.</p>
<p>A <code class="highlighter-rouge">Vagrantfile</code> is available into <code class="highlighter-rouge">virtualization/vagrant</code> folder for quickly spinning up a Linux virtual machine running Home Assistant. This can be beneficial for those who want to experiment with Home Assistant and/or developers willing to easily test local changes and run test suite against them.</p>
<p class="note">
Vagrant is intended for testing/development only. It is NOT recommended for permanent installations.
@ -103,33 +103,27 @@ Vagrant is intended for testing/development only. It is NOT recommended for perm
<p>Download the Home Assistant source code by either downloading the .zip file from <a href="https://github.com/home-assistant/home-assistant/releases">GitHub releases page</a> or by using <a href="https://git-scm.com/">Git</a></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ git clone https://github.com/home-assistant/home-assistant.git
$ cd home-assistant/virtualization/vagrant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>git clone https://github.com/home-assistant/home-assistant.git
<span class="gp">$ </span><span class="nb">cd </span>home-assistant/virtualization/vagrant
</code></pre>
</div>
<p class="note">
The following instructions will assume you changed your working directory to be <code>home-assistant/virtualization/vagrant</code>. This is mandatory because Vagrant will look for informations about the running VM inside that folder and wont work otherwise
The following instructions will assume you changed your working directory to be <code class="highlighter-rouge">home-assistant/virtualization/vagrant</code>. This is mandatory because Vagrant will look for informations about the running VM inside that folder and wont work otherwise
</p>
<p class="note">
When using Vagrant on Windows, change gits <code>auto.crlf</code> to input before cloning the Home Assistant repository. With input setting git wont automatically change line endings from Unix LF to Windows CRLF. Shell scripts executed during provision wont work with Windows line endings.
When using Vagrant on Windows, change gits <code class="highlighter-rouge">auto.crlf</code> to input before cloning the Home Assistant repository. With input setting git wont automatically change line endings from Unix LF to Windows CRLF. Shell scripts executed during provision wont work with Windows line endings.
</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ git config --global core.autocrlf input
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>git config --global core.autocrlf input
</code></pre>
</div>
<h2><a class="title-link" name="create-the-vagrant-vm-and-start-home-assistant" href="#create-the-vagrant-vm-and-start-home-assistant"></a> Create the Vagrant VM and start Home Assistant</h2>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ vagrant up
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>vagrant up
</code></pre>
</div>
<p>This will download and start a virtual machine using Virtualbox, which will internally setup the development environment necessary to start Home Assistant process and run test suite as well. After the VM has started succesfully, the Home Assistant frontend will be accessible locally from your browser at <a href="http://localhost:8123">http://localhost:8123</a></p>
@ -138,47 +132,39 @@ When using Vagrant on Windows, change gits <code>auto.crlf</code> to input be
<p>To shutdown the Vagrant host:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ vagrant halt
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>vagrant halt
</code></pre>
</div>
<p>To start it again, just run <code>vagrant up</code></p>
<p>To start it again, just run <code class="highlighter-rouge">vagrant up</code></p>
<h2><a class="title-link" name="restarting-home-assistant-process-to-test-changes" href="#restarting-home-assistant-process-to-test-changes"></a> Restarting Home Assistant process to test changes</h2>
<p>The root <code>home-assistant</code> directory on your workstation will be mirrored with <code>/home-assistant</code> inside the VM. In <code>virtualization/vagrant</code> theres also a <code>config</code> folder that you can use to drop configuration files (Check the <a href="https://home-assistant.io/getting-started/configuration/">Getting started section</a> for more information about how to configure Home Assistant).</p>
<p>The root <code class="highlighter-rouge">home-assistant</code> directory on your workstation will be mirrored with <code class="highlighter-rouge">/home-assistant</code> inside the VM. In <code class="highlighter-rouge">virtualization/vagrant</code> theres also a <code class="highlighter-rouge">config</code> folder that you can use to drop configuration files (Check the <a href="https://home-assistant.io/getting-started/configuration/">Getting started section</a> for more information about how to configure Home Assistant).</p>
<p>Any changes made to the local directory on your workstation will be available from the Vagrant host, so to apply your changes to the Home Assistant process, just restart it:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ touch restart ; vagrant provision
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>touch restart ; vagrant provision
</code></pre>
</div>
<h2><a class="title-link" name="run-test-suite-tox" href="#run-test-suite-tox"></a> Run test suite (Tox)</h2>
<p>To run tests against your changes:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ touch run_tests ; vagrant provision
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>touch run_tests ; vagrant provision
</code></pre>
</div>
<h2><a class="title-link" name="cleanup" href="#cleanup"></a> Cleanup</h2>
<p>To completely remove the VM:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ rm setup_done ; vagrant destroy -f
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>rm setup_done ; vagrant destroy -f
</code></pre>
</div>
<p>You can now recreate a completely new Vagrant host with <code>vagrant up</code></p>
<p>You can now recreate a completely new Vagrant host with <code class="highlighter-rouge">vagrant up</code></p>
<h3><a class="title-link" name="troubleshooting" href="#troubleshooting"></a> Troubleshooting</h3>

View file

@ -95,103 +95,85 @@
<h3><a class="title-link" name="step-0-install-some-dependencies" href="#step-0-install-some-dependencies"></a> Step 0: Install some dependencies</h3>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install python-pip python3-dev
$ sudo pip install --upgrade virtualenv
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get update
<span class="gp">$ </span>sudo apt-get upgrade
<span class="gp">$ </span>sudo apt-get install python-pip python3-dev
<span class="gp">$ </span>sudo pip install --upgrade virtualenv
</code></pre>
</div>
<h3><a class="title-link" name="step-1-create-a-home-assistant-user" href="#step-1-create-a-home-assistant-user"></a> Step 1: Create a Home Assistant user</h3>
<p>This step is optional, but its a good idea to give services like Home Assistant their own user. It gives you more granular control over permissions, and reduces the exposure to the rest of your system in the event there is a security related bug in Home Assistant. This is a reasonably Linux oriented step, and will look different on other operating systems (or even other Linux distributions).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo adduser --system hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo adduser --system hass
</code></pre>
</div>
<p>Home Assistant stores its configuration in <code>$HOME/.homeassistant</code> by default, so in this case, it would be in <code>/home/hass/.homeassistant</code></p>
<p>Home Assistant stores its configuration in <code class="highlighter-rouge">$HOME/.homeassistant</code> by default, so in this case, it would be in <code class="highlighter-rouge">/home/hass/.homeassistant</code></p>
<p>If you plan to use a Z-Wave controller, you will need to add this user to the <code>dialout</code> group</p>
<p>If you plan to use a Z-Wave controller, you will need to add this user to the <code class="highlighter-rouge">dialout</code> group</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo usermod -G dialout -a hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo usermod -G dialout -a hass
</code></pre>
</div>
<h3><a class="title-link" name="step-2-create-a-directory-for-home-assistant" href="#step-2-create-a-directory-for-home-assistant"></a> Step 2: Create a directory for Home Assistant</h3>
<p>This can be anywhere you want. AS example we put it in <code>/srv</code>. You also need to change the ownership of the directory to the user you created above (if you created one).</p>
<p>This can be anywhere you want. AS example we put it in <code class="highlighter-rouge">/srv</code>. You also need to change the ownership of the directory to the user you created above (if you created one).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo mkdir /srv/hass
$ sudo chown hass /srv/hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo mkdir /srv/hass
<span class="gp">$ </span>sudo chown hass /srv/hass
</code></pre>
</div>
<h3><a class="title-link" name="step-3-become-the-new-user" href="#step-3-become-the-new-user"></a> Step 3: Become the new user</h3>
<p>This is obviously only necessary if you created a <code>hass</code> user, but if you did, be sure to switch to that user whenever you install things in your virtualenv, otherwise youll end up with mucked up permissions.</p>
<p>This is obviously only necessary if you created a <code class="highlighter-rouge">hass</code> user, but if you did, be sure to switch to that user whenever you install things in your virtualenv, otherwise youll end up with mucked up permissions.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo su -s /bin/bash hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo su -s /bin/bash hass
</code></pre>
</div>
<p>The <code>su</code> command means switch user. We use the -s flag because the <code>hass</code> user is a system user and doesnt have a default shell by default (to prevent attackers from being able to log in as that user).</p>
<p>The <code class="highlighter-rouge">su</code> command means switch user. We use the -s flag because the <code class="highlighter-rouge">hass</code> user is a system user and doesnt have a default shell by default (to prevent attackers from being able to log in as that user).</p>
<h3><a class="title-link" name="step-4-set-up-the-virtualenv" href="#step-4-set-up-the-virtualenv"></a> Step 4: Set up the virtualenv</h3>
<p>All this step does is stick a Python environment in the directory were using. Thats it. Its just a directory. Theres nothing special about it, and it is entirely self-contained.</p>
<p>It will include a <code>bin</code> directory, which will contain all the executables used in the virtualenv (including hass itself). It also includes a script called <code>activate</code> which we will use to activate the virtualenv.</p>
<p>It will include a <code class="highlighter-rouge">bin</code> directory, which will contain all the executables used in the virtualenv (including hass itself). It also includes a script called <code class="highlighter-rouge">activate</code> which we will use to activate the virtualenv.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ virtualenv -p python3 /srv/hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>virtualenv -p python3 /srv/hass
</code></pre>
</div>
<h3><a class="title-link" name="step-5-activate-the-virtualenv" href="#step-5-activate-the-virtualenv"></a> Step 5: Activate the virtualenv</h3>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ source /srv/hass/bin/activate
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span><span class="nb">source</span> /srv/hass/bin/activate
</code></pre>
</div>
<p>After that, your prompt should include <code>(hass)</code>.</p>
<p>After that, your prompt should include <code class="highlighter-rouge">(hass)</code>.</p>
<h3><a class="title-link" name="step-6-install-home-assistant" href="#step-6-install-home-assistant"></a> Step 6: Install Home Assistant</h3>
<p>Once your virtualenv has been activated, you dont need to <code>sudo</code> any of your <code>pip</code> commands. <code>pip</code> will be installing things in the virtualenv, which the <code>hass</code> user has permission to modify.</p>
<p>Once your virtualenv has been activated, you dont need to <code class="highlighter-rouge">sudo</code> any of your <code class="highlighter-rouge">pip</code> commands. <code class="highlighter-rouge">pip</code> will be installing things in the virtualenv, which the <code class="highlighter-rouge">hass</code> user has permission to modify.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>(hass)$ pip3 install --upgrade homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">(hass)$ </span>pip3 install --upgrade homeassistant
</code></pre>
</div>
<p>And thats it… you now have Home Assistant installed, and you can be sure that every bit of it is contained in <code>/srv/hass</code>.</p>
<p>And thats it… you now have Home Assistant installed, and you can be sure that every bit of it is contained in <code class="highlighter-rouge">/srv/hass</code>.</p>
<h3><a class="title-link" name="finally-run-home-assistant" href="#finally-run-home-assistant"></a> Finally… Run Home Assistant</h3>
<p>There are two ways to launch Home Assistant. If you are <strong>in</strong> the virtualenv, you can just run <code>hass</code> and it will work as normal. If the virtualenv is not activated, you just use the <code>hass</code> executable in the <code>bin</code> directory mentioned earlier. There is one caveat… Because Home Assistant stores its configuration in the users home directory, we need to be the user <code>hass</code> user or specify the configuration with <code>-c</code>.</p>
<p>There are two ways to launch Home Assistant. If you are <strong>in</strong> the virtualenv, you can just run <code class="highlighter-rouge">hass</code> and it will work as normal. If the virtualenv is not activated, you just use the <code class="highlighter-rouge">hass</code> executable in the <code class="highlighter-rouge">bin</code> directory mentioned earlier. There is one caveat… Because Home Assistant stores its configuration in the users home directory, we need to be the user <code class="highlighter-rouge">hass</code> user or specify the configuration with <code class="highlighter-rouge">-c</code>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo -u hass -H /srv/hass/bin/hass
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo -u hass -H /srv/hass/bin/hass
</code></pre>
</div>
<p>The <code>-H</code> flag is important. It sets the <code>$HOME</code> environment variable to <code>/home/hass</code> so <code>hass</code> can find its configuration.</p>
<p>The <code class="highlighter-rouge">-H</code> flag is important. It sets the <code class="highlighter-rouge">$HOME</code> environment variable to <code class="highlighter-rouge">/home/hass</code> so <code class="highlighter-rouge">hass</code> can find its configuration.</p>
<h3><a class="title-link" name="upgrading-home-assistant" href="#upgrading-home-assistant"></a> Upgrading Home Assistant</h3>
@ -199,40 +181,34 @@ $ sudo chown hass /srv/hass
<h3><a class="title-link" name="starting-home-assistant-on-boot" href="#starting-home-assistant-on-boot"></a> Starting Home Assistant on boot</h3>
<p>The <a href="/getting-started/autostart/">autostart instructions</a> will work just fine, just be sure to replace <code>/usr/bin/hass</code> with <code>/srv/hass/bin/hass</code> and specify the <code>hass</code> user where appropriate.</p>
<p>The <a href="/getting-started/autostart/">autostart instructions</a> will work just fine, just be sure to replace <code class="highlighter-rouge">/usr/bin/hass</code> with <code class="highlighter-rouge">/srv/hass/bin/hass</code> and specify the <code class="highlighter-rouge">hass</code> user where appropriate.</p>
<h3><a class="title-link" name="installing-python-openzwave" href="#installing-python-openzwave"></a> Installing python-openzwave</h3>
<p>If you want to use Z-Wave devices, you will need to install <code>python-openzwave</code> in your virtualenv. This requires a small tweak to the instructions on home-assistant.io</p>
<p>If you want to use Z-Wave devices, you will need to install <code class="highlighter-rouge">python-openzwave</code> in your virtualenv. This requires a small tweak to the instructions on home-assistant.io</p>
<p>Install the dependencies as normal (Note: you will need to do this as your normal user, since <code>hass</code> isnt a sudoer).</p>
<p>Install the dependencies as normal (Note: you will need to do this as your normal user, since <code class="highlighter-rouge">hass</code> isnt a sudoer).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools
</code></pre>
</div>
<p>Then, activate your virtualenv (steps 3 and 5 above) and upgrade cython.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>(hass)$ pip3 install --upgrade cython
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">(hass)$ </span>pip3 install --upgrade cython
</code></pre>
</div>
<p>Finally, get and install <code>python-openzwave</code>.</p>
<p>Finally, get and install <code class="highlighter-rouge">python-openzwave</code>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>(hass)$ mkdir /srv/hass/src
(hass)$ cd /srv/hass/src
(hass)$ git clone https://github.com/OpenZWave/python-openzwave.git
(hass)$ cd python-openzwave
(hass)$ git checkout python3
(hass)$ PYTHON_EXEC=`which python3` make build
(hass)$ PYTHON_EXEC=`which python3` make install
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">(hass)$ </span>mkdir /srv/hass/src
<span class="gp">(hass)$ </span><span class="nb">cd</span> /srv/hass/src
<span class="gp">(hass)$ </span>git clone https://github.com/OpenZWave/python-openzwave.git
<span class="gp">(hass)$ </span><span class="nb">cd </span>python-openzwave
<span class="gp">(hass)$ </span>git checkout python3
<span class="gp">(hass)$ </span><span class="nv">PYTHON_EXEC</span><span class="o">=</span><span class="sb">`</span>which python3<span class="sb">`</span> make build
<span class="gp">(hass)$ </span><span class="nv">PYTHON_EXEC</span><span class="o">=</span><span class="sb">`</span>which python3<span class="sb">`</span> make install
</code></pre>
</div>

View file

@ -105,7 +105,7 @@ We care about privacy. Collected data is <b>only</b> stored in your instance of
Screenshot of Home Assistant showing a school, work and home zone and two people.
</p>
<h2><a class="title-link" name="setting-it-up" href="#setting-it-up"></a> Setting it up</h2>
<h3><a class="title-link" name="setting-it-up" href="#setting-it-up"></a> Setting it up</h3>
<p>The device tracker component offers presence detection for Home Assistant. It supports two different methods for presence detection: scan for connected devices on the local network and connect to third party service.</p>
@ -117,7 +117,7 @@ Screenshot of Home Assistant showing a school, work and home zone and two people
OwnTracks communicates directly with your MQTT broker, no data will pass through their servers.
</p>
<h4><a class="title-link" name="zones" href="#zones"></a> Zones</h4>
<h3><a class="title-link" name="zones" href="#zones"></a> Zones</h3>
<p><img src="/images/screenshots/badges-zone.png" style="float: right; margin-left: 8px; height: 100px;" /></p>

View file

@ -91,175 +91,155 @@
<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>
<h4><a class="title-link" name="and-condition" href="#and-condition"></a> AND condition</h4>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">and</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'device_tracker.paulus'</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
- <span class="string"><span class="content">condition: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'sensor.temperature'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">'20'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="or-condition" href="#or-condition"></a> OR condition</h4>
<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 conditions is valid.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">or</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'device_tracker.paulus'</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
- <span class="string"><span class="content">condition: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'sensor.temperature'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">'20'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="mixed--and-and-or-conditions" href="#mixed--and-and-or-conditions"></a> MIXED AND and OR conditions</h4>
<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.<br />
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">and</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'device_tracker.paulus'</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
- <span class="string"><span class="content">condition: or</span></span>
<span class="key">conditions</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.weather_precip</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'rain'</span></span>
- <span class="string"><span class="content">condition: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">'sensor.temperature'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">'20'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="numeric-state-condition" href="#numeric-state-condition"></a> Numeric state condition</h4>
<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 all of the above or below thresholds.</p>
<p>For above, the condition passes if <code>value &gt;= above</code>. For below, the condition passes if <code>value &lt;= below</code>. If both <code>below</code> and <code>above</code> are specified, both tests have to pass.</p>
<p>For above, the condition passes if <code class="highlighter-rouge">value &gt;= above</code>. For below, the condition passes if <code class="highlighter-rouge">value &lt;= below</code>. 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>value_template</code> to process the value of the state before testing it.</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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.temperature</span></span>
<span class="key">above</span>: <span class="string"><span class="content">17</span></span>
<span class="key">below</span>: <span class="string"><span class="content">25</span></span>
<span class="comment"># If your sensor value needs to be adjusted</span>
<span class="key">value_template</span>:
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="state-condition" href="#state-condition"></a> State condition</h4>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">state</span>: <span class="string"><span class="content">not_home</span></span>
<span class="comment"># optional: trigger only if state was this for last X time.</span>
<span class="key">for</span>:
<span class="key">hours</span>: <span class="string"><span class="content">1</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">10</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">5</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="sun-condition" href="#sun-condition"></a> Sun condition</h4>
<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>before</code> and <code>after</code> keys can only be set to <code>sunset</code> or <code>sunrise</code>. They have a corresponding optional offset value (<code>before_offset</code>, <code>after_offset</code>) that can be added, similar to the <a href="/getting-started/automation-trigger/#sun-trigger">sun trigger</a>.</p>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">sun</span></span>
<span class="key">after</span>: <span class="string"><span class="content">sunset</span></span>
<span class="comment"># Optional offset value</span>
<span class="key">after_offset</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">-1:00:00</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="template-condition" href="#template-condition"></a> Template condition</h4>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ states.device_tracker.iphone.attributes.battery &gt; 50 }}'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>trigger</code> variable as <a href="/getting-started/automation-templating/">described here</a>.</p>
<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>
<h4><a class="title-link" name="time-condition" href="#time-condition"></a> Time condition</h4>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">time</span></span>
<span class="comment"># At least one of the following is required.</span>
<span class="key">after</span>: <span class="string"><span class="content">'15:00:00'</span></span>
<span class="key">before</span>: <span class="string"><span class="content">'23:00:00'</span></span>
<span class="key">weekday</span>:
- <span class="string"><span class="content">mon</span></span>
- <span class="string"><span class="content">wed</span></span>
- <span class="string"><span class="content">fri</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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">23: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>weekday</code> are <code>mon</code>, <code>tue</code>, <code>wed</code>, <code>thu</code>, <code>fri</code>, <code>sat</code>, <code>sun</code>.</p>
<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>.</p>
<h4><a class="title-link" name="zone-condition" href="#zone-condition"></a> Zone condition</h4>
<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="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">zone</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">zone</span>: <span class="string"><span class="content">zone.home</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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>
<h4><a class="title-link" name="examples" href="#examples"></a> Examples</h4>
<h3><a class="title-link" name="examples" href="#examples"></a> Examples</h3>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> <span class="key">condition</span>:
- <span class="string"><span class="content">condition: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sun.sun</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
<span class="key">below</span>: <span class="string"><span class="content">1</span></span>
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">light.living_room</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</span></span>
- <span class="string"><span class="content">condition: time</span></span>
<span class="key">before</span>: <span class="string"><span class="content">'23:00:00'</span></span>
<span class="key">after</span>: <span class="string"><span class="content">'14:00:00'</span></span>
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">script.light_turned_off_5min</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</span></span>
</pre></div>
</div>
<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>

View file

@ -101,71 +101,63 @@ Use the <img src="/images/screenshots/developer-tool-services-icon.png" class="n
<h3><a class="title-link" name="the-basics" href="#the-basics"></a> The basics</h3>
<p>Call the service <code>homeassistant.turn_on</code> on the entity <code>group.living_room</code>. This will turn all members of <code>group.living_room</code> on. You can also omit <code>entity_id</code> and it will turn on all possible entities.</p>
<p>Call the service <code class="highlighter-rouge">homeassistant.turn_on</code> on the entity <code class="highlighter-rouge">group.living_room</code>. This will turn all members of <code class="highlighter-rouge">group.living_room</code> on. You can also omit <code class="highlighter-rouge">entity_id</code> and it will turn on all possible entities.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.living_room</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.living_room</span>
</code></pre>
</div>
<h3><a class="title-link" name="passing-data-to-the-service-call" href="#passing-data-to-the-service-call"></a> Passing data to the service call</h3>
<p>You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">service</span>: <span class="string"><span class="content">light.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.living_room</span></span>
<span class="key">data</span>:
<span class="key">brightness</span>: <span class="string"><span class="content">120</span></span>
<span class="key">rgb_color</span>: <span class="string"><span class="content">[255, 0, 0]</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.living_room</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">120</span>
<span class="s">rgb_color</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">255</span><span class="pi">,</span> <span class="nv">0</span><span class="pi">,</span> <span class="nv">0</span><span class="pi">]</span>
</code></pre>
</div>
<h3><a class="title-link" name="use-templates-to-decide-which-service-to-call" href="#use-templates-to-decide-which-service-to-call"></a> Use templates to decide which service to call</h3>
<p>You can use <a href="/topics/templating/">templating</a> support to dynamically choose which service to call. For example, you can call a certain service based on if a light is on.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">service_template</span>: <span class="string"><span class="delimiter">&gt;</span><span class="content">
{% if states.sensor.temperature | float &gt; 15 %}
switch.turn_on
{% else %}
switch.turn_off
{% endif %}</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.ac</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">service_template</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">{% if states.sensor.temperature | float &gt; 15 %}</span>
<span class="no">switch.turn_on</span>
<span class="no">{% else %}</span>
<span class="no">switch.turn_off</span>
<span class="no">{% endif %}</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.ac</span>
</code></pre>
</div>
<h3><a class="title-link" name="using-the-services-developer-tool" href="#using-the-services-developer-tool"></a> Using the Services Developer Tool</h3>
<p>You can use the Services Developer Tool to test data to pass in a service call.<br />
<p>You can use the Services Developer Tool to test data to pass in a service call.
For example, you may test turning on or off a group (See [groups] for more info)</p>
<p>To turn a group on or off, pass the following info:<br />
Domain: <code>homeassistant</code><br />
Service: <code>turn_on</code><br />
Service Data: <code>{ "entity_id": "group.kitchen" }</code></p>
<p>To turn a group on or off, pass the following info:
Domain: <code class="highlighter-rouge">homeassistant</code>
Service: <code class="highlighter-rouge">turn_on</code>
Service Data: <code class="highlighter-rouge"><span class="p">{</span><span class="w"> </span><span class="nt">"entity_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"group.kitchen"</span><span class="w"> </span><span class="p">}</span></code></p>
<h3><a class="title-link" name="use-templates-to-determine-the-attributes" href="#use-templates-to-determine-the-attributes"></a> Use templates to determine the attributes</h3>
<p>Templates can also be used for the data that you pass to the service call.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">service</span>: <span class="string"><span class="content">thermostat.set_temperature</span></span>
<span class="key">data_template</span>:
<span class="key">entity_id</span>: <span class="string"><span class="delimiter">&gt;</span><span class="content">
{% if is_state('device_tracker.paulus', 'home') %}
thermostat.upstairs
{% else %}
thermostat.downstairs
{% endif %}</span></span>
<span class="key">temperature</span>: <span class="string"><span class="content">{{ 22 - distance(states.device_tracker.paulus) }}</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">service</span><span class="pi">:</span> <span class="s">thermostat.set_temperature</span>
<span class="s">data_template</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">{% if is_state('device_tracker.paulus', 'home') %}</span>
<span class="no">thermostat.upstairs</span>
<span class="no">{% else %}</span>
<span class="no">thermostat.downstairs</span>
<span class="no">{% endif %}</span>
<span class="s">temperature</span><span class="pi">:</span> <span class="pi">{{</span> <span class="nv">22 - distance(states.device_tracker.paulus)</span> <span class="pi">}}</span>
</code></pre>
</div>

View file

@ -93,95 +93,79 @@
<p>The script syntax basic structure is a list of key/value maps that contain actions. If a script contains only 1 action, the wrapping list can be omitted.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example script component containing script syntax</span>
<span class="key">script</span>:
<span class="key">example_script</span>:
<span class="key">sequence</span>:
<span class="comment"># This is written using the Script Syntax</span>
- <span class="string"><span class="content">service: light.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">light.ceiling</span></span>
- <span class="string"><span class="content">service: notify.notify</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'Turned on the ceiling light!'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example script component containing script syntax</span>
<span class="s">script</span><span class="pi">:</span>
<span class="s">example_script</span><span class="pi">:</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="c1"># This is written using the Script Syntax</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">light.ceiling</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.notify</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">message</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Turned</span><span class="nv"> </span><span class="s">on</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">ceiling</span><span class="nv"> </span><span class="s">light!'</span>
</code></pre>
</div>
<h4><a class="title-link" name="call-a-service" href="#call-a-service"></a> Call a Service</h4>
<h3><a class="title-link" name="call-a-service" href="#call-a-service"></a> Call a Service</h3>
<p>The most important one is the action to call a service. This can be done in various ways. For all the different possibilities, have a look at the <a href="/getting-started/scripts-service-calls/">service calls page</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">alias</span>: <span class="string"><span class="content">Bedroom lights on</span></span>
<span class="key">service</span>: <span class="string"><span class="content">light.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">group.bedroom</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">100</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">alias</span><span class="pi">:</span> <span class="s">Bedroom lights on</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_on</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.bedroom</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">100</span>
</code></pre>
</div>
<h4><a class="title-link" name="test-a-condition" href="#test-a-condition"></a> Test a Condition</h4>
<h3><a class="title-link" name="test-a-condition" href="#test-a-condition"></a> Test a Condition</h3>
<p>While executing a script you can add a condition to stop further execution. When a condition does not return <code>true</code>, the script will finish. There are many different conditions which are documented at the <a href="/getting-started/scripts-conditions/">conditions page</a>.</p>
<p>While executing a script you can add a condition to stop further execution. When a condition does not return <code class="highlighter-rouge">true</code>, the script will finish. There are many different conditions which are documented at the <a href="/getting-started/scripts-conditions/">conditions page</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">condition</span>: <span class="string"><span class="content">state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'home'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><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="s1">'</span><span class="s">home'</span>
</code></pre>
</div>
<h4><a class="title-link" name="delay" href="#delay"></a> Delay</h4>
<h3><a class="title-link" name="delay" href="#delay"></a> Delay</h3>
<p>Delays are useful for temporarily suspending your script and start it at a later moment. We support different syntaxes for a delay as shown below.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Waits 1 hour</span>
<span class="key">delay</span>: <span class="string"><span class="content">01:00</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Waits 1 hour</span>
<span class="s">delay</span><span class="pi">:</span> <span class="s">01:00</span>
</code></pre>
</div>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Waits 1 minute, 30 seconds</span>
<span class="key">delay</span>: <span class="string"><span class="content">00:01:30</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Waits 1 minute, 30 seconds</span>
<span class="s">delay</span><span class="pi">:</span> <span class="s">00:01:30</span>
</code></pre>
</div>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Waits 1 minute</span>
<span class="key">delay</span>:
<span class="comment"># supports seconds, minutes, hours, days</span>
<span class="key">minutes</span>: <span class="string"><span class="content">1</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Waits 1 minute</span>
<span class="s">delay</span><span class="pi">:</span>
<span class="c1"># supports seconds, minutes, hours, days</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">1</span>
</code></pre>
</div>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Waits however many minutes input_slider.minute_delay is set to</span>
<span class="comment"># Valid formats include HH:MM and HH:MM:SS</span>
<span class="key">delay</span>: <span class="string"><span class="content">'00:{{ input_slider.minute_delay | int }}:00'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Waits however many minutes input_slider.minute_delay is set to</span>
<span class="c1"># Valid formats include HH:MM and HH:MM:SS</span>
<span class="s">delay</span><span class="pi">:</span> <span class="s1">'</span><span class="s">00:{{</span><span class="nv"> </span><span class="s">input_slider.minute_delay</span><span class="nv"> </span><span class="s">|</span><span class="nv"> </span><span class="s">int</span><span class="nv"> </span><span class="s">}}:00'</span>
</code></pre>
</div>
<h4><a class="title-link" name="fire-an-event" href="#fire-an-event"></a> Fire an Event</h4>
<h3><a class="title-link" name="fire-an-event" href="#fire-an-event"></a> Fire an Event</h3>
<p>This action allows you to fire an event. Events can be used for many things. It could trigger an automation or indicate to another component that something is happening. For instance, in the below example it is used to create an entry in the logbook.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">event</span>: <span class="string"><span class="content">LOGBOOK_ENTRY</span></span>
<span class="key">event_data</span>:
<span class="key">name</span>: <span class="string"><span class="content">Paulus</span></span>
<span class="key">message</span>: <span class="string"><span class="content">is waking up</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">device_tracker.paulus</span></span>
<span class="key">domain</span>: <span class="string"><span class="content">light</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">event</span><span class="pi">:</span> <span class="s">LOGBOOK_ENTRY</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Paulus</span>
<span class="s">message</span><span class="pi">:</span> <span class="s">is waking up</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">device_tracker.paulus</span>
<span class="s">domain</span><span class="pi">:</span> <span class="s">light</span>
</code></pre>
</div>

View file

@ -93,42 +93,40 @@
<p>Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up.</p>
<p>Whenever a component or configuration option results in a warning, it will be stored in <code>home-assistant.log</code> in the configuration directory. This file is reset on start of Home Assistant.</p>
<p>Whenever a component or configuration option results in a warning, it will be stored in <code class="highlighter-rouge">home-assistant.log</code> in the configuration directory. This file is reset on start of Home Assistant.</p>
<h3><a class="title-link" name="my-component-does-not-show-up" href="#my-component-does-not-show-up"></a> My component does not show up</h3>
<p>When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the <code>home-assistant.log</code> file and see if there are any errors related to your component you are trying to set up.</p>
<p>When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the <code class="highlighter-rouge">home-assistant.log</code> file and see if there are any errors related to your component you are trying to set up.</p>
<h4><a class="title-link" name="problems-with-the-configuration" href="#problems-with-the-configuration"></a> Problems with the configuration</h4>
<p>One of the most common problems with Home Assistant is an invalid <code>configuration.yaml</code> file.</p>
<p>One of the most common problems with Home Assistant is an invalid <code class="highlighter-rouge">configuration.yaml</code> file.</p>
<ul>
<li>You can test your configuration using <a href="http://yaml-online-parser.appspot.com/">this online YAML parser</a> or <a href="http://www.yamllint.com/">YAML Lint</a>.</li>
<li>To learn more about the quirks of YAML, read <a href="https://docs.saltstack.com/en/latest/topics/troubleshooting/yaml_idiosyncrasies.html">YAML IDIOSYNCRASIES</a> by SaltStack (the examples there are specific to SaltStack, but do explain YAML issues well).</li>
</ul>
<p><code>configuration.yaml</code> does not allow multiple sections to have the same name. If you want a specific platform to be loaded twice, append a <a href="/getting-started/devices/#style-2">number or string</a> to the name or nest them using <a href="/getting-started/devices/#style-1">this style</a>.</p>
<p><code class="highlighter-rouge">configuration.yaml</code> does not allow multiple sections to have the same name. If you want a specific platform to be loaded twice, append a <a href="/getting-started/devices/#style-2">number or string</a> to the name or nest them using <a href="/getting-started/devices/#style-1">this style</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">sensor</span>:
<span class="key">platform</span>: <span class="string"><span class="content">forecast</span></span>
<span class="error">...</span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">forecast</span>
<span class="s">...</span>
<span class="key">sensor 2</span>:
<span class="key">platform</span>: <span class="string"><span class="content">bitcoin</span></span>
<span class="error">...</span>
</pre></div>
</div>
<span class="s">sensor 2</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">bitcoin</span>
<span class="s">...</span>
</code></pre>
</div>
<p>Another common problem is that a required configuration setting is missing. If this is the case, the component will report this to <code>home-assistant.log</code>. You can have a look at <a href="/components/">the component page</a> for instructions on how to setup the components.</p>
<p>Another common problem is that a required configuration setting is missing. If this is the case, the component will report this to <code class="highlighter-rouge">home-assistant.log</code>. You can have a look at <a href="/components/">the component page</a> for instructions on how to setup the components.</p>
<p>If you find any errors or want to expand the documentation, please <a href="https://github.com/home-assistant/home-assistant.io/issues">let us know</a>.</p>
<h4><a class="title-link" name="problems-with-dependencies" href="#problems-with-dependencies"></a> Problems with dependencies</h4>
<p>Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in <code>home-assistant.log</code>.</p>
<p>Almost all components have external dependencies to communicate with your devices and services. Sometimes Home Assistant is unable to install the necessary dependencies. If this is the case, it should show up in <code class="highlighter-rouge">home-assistant.log</code>.</p>
<p>The first step is trying to restart Home Assistant and see if the problem persists. If it does, look at the log to see what the error is. If you cant figure it out, please <a href="https://github.com/home-assistant/home-assistant/issues">report it</a> so we can investigate what is going on.</p>
@ -140,34 +138,28 @@
<p>If you are using multiple files for your setup, make sure that the pointers are correct and the format of the files is valid.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">light</span>: <span class="type">!include</span> <span class="string"><span class="content">devices/lights.yaml</span></span>
<span class="key">sensor</span>: <span class="type">!include</span> <span class="string"><span class="content">devices/sensors.yaml</span></span>
</pre></div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">light</span><span class="pi">:</span> <span class="kt">!include</span> <span class="s">devices/lights.yaml</span>
<span class="s">sensor</span><span class="pi">:</span> <span class="kt">!include</span> <span class="s">devices/sensors.yaml</span>
</code></pre>
</div>
</div>
<p>Contents of <code>lights.yaml</code> (notice it does not contain <code>light: </code>):</p>
<p>Contents of <code class="highlighter-rouge">lights.yaml</code> (notice it does not contain <code class="highlighter-rouge">light: </code>):</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>- <span class="string"><span class="content">platform: hyperion</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.1.98</span></span>
<span class="error">...</span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">hyperion</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.1.98</span>
<span class="s">...</span>
</code></pre>
</div>
<p>Contents of <code>sensors.yaml</code>:</p>
<p>Contents of <code class="highlighter-rouge">sensors.yaml</code>:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Room Humidity</span><span class="delimiter">&quot;</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">room/humidity</span><span class="delimiter">&quot;</span></span>
- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Door Motion</span><span class="delimiter">&quot;</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">door/motion</span><span class="delimiter">&quot;</span></span>
<span class="error">...</span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Room</span><span class="nv"> </span><span class="s">Humidity"</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">room/humidity"</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Door</span><span class="nv"> </span><span class="s">Motion"</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">door/motion"</span>
<span class="s">...</span>
</code></pre>
</div>
<p class="note">

View file

@ -92,23 +92,19 @@
<p>It can happen that you run into trouble while installing Home Assistant. This page is here to help you solve the most common problems.</p>
<h4><a class="title-link" name="pip3-command-not-found" href="#pip3-command-not-found"></a> pip3: command not found</h4>
<p>This utility should have been installed as part of the Python 3.4 installation. Check if Python 3.4 is installed by running <code>python3 --version</code>. If it is not installed, <a href="https://www.python.org/getit/">download it here</a>.</p>
<p>This utility should have been installed as part of the Python 3.4 installation. Check if Python 3.4 is installed by running <code class="highlighter-rouge">python3 --version</code>. If it is not installed, <a href="https://www.python.org/getit/">download it here</a>.</p>
<p>If you are able to successfully run <code>python3 --version</code> but not <code>pip3</code>, install Home Assistant by running the following command instead:</p>
<p>If you are able to successfully run <code class="highlighter-rouge">python3 --version</code> but not <code class="highlighter-rouge">pip3</code>, install Home Assistant by running the following command instead:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ python3 -m pip install homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python3 -m pip install homeassistant
</code></pre>
</div>
<h4><a class="title-link" name="no-module-named-pip" href="#no-module-named-pip"></a> No module named pip</h4>
<p><a href="https://pip.pypa.io/en/stable/">Pip</a> should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run <code>python3 -m pip --version</code> you can install <code>pip</code> by <a href="https://bootstrap.pypa.io/get-pip.py">downloading the installer</a> and running it with Python 3:</p>
<p><a href="https://pip.pypa.io/en/stable/">Pip</a> should come bundled with the latest Python 3 but is omitted by some distributions. If you are unable to run <code class="highlighter-rouge">python3 -m pip --version</code> you can install <code class="highlighter-rouge">pip</code> by <a href="https://bootstrap.pypa.io/get-pip.py">downloading the installer</a> and running it with Python 3:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ python3 get-pip.py
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python3 get-pip.py
</code></pre>
</div>
<h4><a class="title-link" name="distutilserrorsdistutilsoptionerror-must-supply-either-home-or-prefixexec-prefix----not-both" href="#distutilserrorsdistutilsoptionerror-must-supply-either-home-or-prefixexec-prefix----not-both"></a> distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix not both</h4>
@ -129,34 +125,28 @@
<p>For systems with <strong>firewalld</strong> (Fedora, CentOS/RHEL, etc.):</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo firewall-cmd --permanent --add-port=8123/tcp
$ sudo firewall-cmd --reload
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo firewall-cmd --permanent --add-port<span class="o">=</span>8123/tcp
<span class="gp">$ </span>sudo firewall-cmd --reload
</code></pre>
</div>
<p>For UFW systems (Ubuntu, Debian, Raspbian, etc.):</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo ufw allow 8123/tcp
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo ufw allow 8123/tcp
</code></pre>
</div>
<p>For <code>iptables</code> systems (was the default for older distributions):</p>
<p>For <code class="highlighter-rouge">iptables</code> systems (was the default for older distributions):</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ iptables -I INPUT -p tcp --dport 8123 -j ACCEPT
$ iptables-save &gt; /etc/network/iptables.rules # your rules may be saved elsewhere
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>iptables -I INPUT -p tcp --dport 8123 -j ACCEPT
<span class="gp">$ </span>iptables-save &gt; /etc/network/iptables.rules <span class="c"># your rules may be saved elsewhere</span>
</code></pre>
</div>
<h4><a class="title-link" name="after-upgrading-your-browser-login-gets-stuck-at-the-loading-data-step" href="#after-upgrading-your-browser-login-gets-stuck-at-the-loading-data-step"></a> After upgrading, your browser login gets stuck at the “loading data” step</h4>
<p>After upgrading to a new version, you may notice your browser gets stuck at the “loading data” login screen. Close the window/tab and go into your browser settings and delete all the cookies for your URL. You can then log back in and it should work.</p>
<p>Android Chrome <br />
<p>Android Chrome
chrome -&gt; settings -&gt; site settings -&gt; storage -&gt; search for your URL for home assistant-&gt; “clear &amp; reset”</p>
<h3><a href="/getting-started/">« Back to Getting Started</a></h3>

View file

@ -91,15 +91,13 @@
<p>The default way to update Home Assistant to the latest release, when available, is:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ pip3 install --upgrade homeassistant
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>pip3 install --upgrade homeassistant
</code></pre>
</div>
<p>Different installation methods as <a href="/getting-started/installation-raspberry-pi-all-in-one/#upgrading">Raspberry Pi All-In-One Installer</a>, <a href="/getting-started/installation-vagrant/">Vagrant</a>, or <a href="/getting-started/installation-virtualenv/#upgrading-home-assistant">Virtualenv</a> may have an alternative way for updating Home Assistant.</p>
<p>After updating, restart Home Assistant for the changes to take effect. This means that you have to restart <code>hass</code> itself or the <a href="/getting-started/autostart/">autostarting</a> daemon if you use any.</p>
<p>After updating, restart Home Assistant for the changes to take effect. This means that you have to restart <code class="highlighter-rouge">hass</code> itself or the <a href="/getting-started/autostart/">autostarting</a> daemon if you use any.</p>
<p class="note note">
The upgrade needs to be run as the same user as the installation was done to avoid permission errors.
@ -108,16 +106,14 @@
<p><a href="http://www.bruhautomation.com">BRUH automation</a> has created <a href="https://www.youtube.com/watch?v=tuG2rs1Cl2Y">a tutorial video</a> explaining how to upgrade Home Assistant.</p>
<h4><a class="title-link" name="run-the-development-version" href="#run-the-development-version"></a> Run the development version</h4>
<p>If you want to stay on top of the development of Home Assistant then you can upgrade to the <code>dev</code> branch.</p>
<p>If you want to stay on top of the development of Home Assistant then you can upgrade to the <code class="highlighter-rouge">dev</code> branch.</p>
<p class="note warning">
This can result in an unstable system, loss of data, etc. etc.
</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>pip3 install --upgrade git+git://github.com/home-assistant/home-assistant.git@dev
</code></pre>
</div>

View file

@ -91,60 +91,54 @@
<p>Home Assistant uses the <a href="http://yaml.org/">YAML</a> syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations.</p>
<p>For each component that you want to use in Home Assistant, you add code in your <code>configuraton.yaml</code> file to specify its settings.<br />
<p>For each component that you want to use in Home Assistant, you add code in your <code class="highlighter-rouge">configuraton.yaml</code> file to specify its settings.
The following example entry specifies that you want to use the <a href="/components/notify">notify component</a> with the <a href="/components/notify.pushbullet">pushbullet platform</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">notify</span>:
<span class="key">platform</span>: <span class="string"><span class="content">pushbullet</span></span>
<span class="key">api_key</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">o.1234abcd</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="content">pushbullet</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">notify</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">pushbullet</span>
<span class="s">api_key</span><span class="pi">:</span> <span class="s2">"</span><span class="s">o.1234abcd"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">pushbullet</span>
</code></pre>
</div>
<ul>
<li>A <strong>component</strong> provides the core logic for some functionality (like <code>notify</code> provides sending notifications).</li>
<li>A <strong>platform</strong> makes the connection to a specific software or hardware platform (like <code>pushbullet</code> works with the service from pushbullet.com).</li>
<li>A <strong>component</strong> provides the core logic for some functionality (like <code class="highlighter-rouge">notify</code> provides sending notifications).</li>
<li>A <strong>platform</strong> makes the connection to a specific software or hardware platform (like <code class="highlighter-rouge">pushbullet</code> works with the service from pushbullet.com).</li>
</ul>
<p>The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a <code>-</code> while mappings have the format <code>key: value</code>. If you specify duplicate keys, the last value for a key is used.</p>
<p>The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a <code class="highlighter-rouge">-</code> while mappings have the format <code class="highlighter-rouge">key: value</code>. If you specify duplicate keys, the last value for a key is used.</p>
<p>Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested “inside” things that are one level higher. So in the above example, <code>platform: pushbullet</code> is a property of (nested inside) the <code>notify</code> component.<br />
Getting the right indentation can be tricky if youre not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation.<br />
You can use <a href="http://www.yamllint.com/">YAMLLint</a> to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time. <br />
<p>Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested “inside” things that are one level higher. So in the above example, <code class="highlighter-rouge">platform: pushbullet</code> is a property of (nested inside) the <code class="highlighter-rouge">notify</code> component.
Getting the right indentation can be tricky if youre not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation.
You can use <a href="http://www.yamllint.com/">YAMLLint</a> to check if your YAML-syntax is correct before loading it into Home Assistant which will save you some time.
<em>Please pay attention on not putting in private data, as it is a 3rd-party website not maintained by Home Assistant.</em></p>
<p>Lines that start with <strong>#</strong> are comments and are ignored by the system.</p>
<p>The next example shows an <a href="/components/input_select">input_select</a> component that uses a block collection for the options values.<br />
The other properties (like name) are specified using mappings. Note that the second line just has <code>threat:</code> with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it.</p>
<p>The next example shows an <a href="/components/input_select">input_select</a> component that uses a block collection for the options values.
The other properties (like name) are specified using mappings. Note that the second line just has <code class="highlighter-rouge">threat:</code> with no value on the same line. Here threat is the name of the input_select and the values for it are everything nested below it.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">input_select</span>:
<span class="key">threat</span>:
<span class="key">name</span>: <span class="string"><span class="content">Threat level</span></span>
<span class="comment"># A collection is used for options</span>
<span class="key">options</span>:
- <span class="string"><span class="content">0</span></span>
- <span class="string"><span class="content">1</span></span>
- <span class="string"><span class="content">2</span></span>
- <span class="string"><span class="content">3</span></span>
<span class="key">initial</span>: <span class="string"><span class="content">0</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">input_select</span><span class="pi">:</span>
<span class="s">threat</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Threat level</span>
<span class="c1"># A collection is used for options</span>
<span class="s">options</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">0</span>
<span class="pi">-</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">2</span>
<span class="pi">-</span> <span class="s">3</span>
<span class="s">initial</span><span class="pi">:</span> <span class="s">0</span>
</code></pre>
</div>
<p>The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their <code>state_topic</code> (one of the properties used for MQTT sensors).</p>
<p>The following example shows nesting a collection of mappings in a mapping. In Home Assistant, this would create two sensors that each use the MQTT platform but have different values for their <code class="highlighter-rouge">state_topic</code> (one of the properties used for MQTT sensors).</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">sensor</span>:
- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="content">sensor/topic</span></span>
- <span class="string"><span class="content">platform: mqtt</span></span>
<span class="key">state_topic</span>: <span class="string"><span class="content">sensor2/topic</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s">sensor/topic</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
<span class="s">state_topic</span><span class="pi">:</span> <span class="s">sensor2/topic</span>
</code></pre>
</div>
<h3><a href="/getting-started/basic/">Next step: Setting up the basics »</a></h3>

View file

@ -91,86 +91,84 @@
<h5><a class="title-link" name="motion-or-alarm-sensors" href="#motion-or-alarm-sensors"></a> Motion or alarm sensors</h5>
<p>In order for Home Assistant to recognize well the sensor, you will need to change its configuration from <code>Basic Set (default)</code> to <code>Binary Sensor report</code> or <code>Alarm report</code>. Currently theres no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it<br />
These devices will either show as a binary sensor or a sensor called <code>Alarm xxxx</code> and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.</p>
<p>In order for Home Assistant to recognize well the sensor, you will need to change its configuration from <code class="highlighter-rouge">Basic Set (default)</code> to <code class="highlighter-rouge">Binary Sensor report</code> or <code class="highlighter-rouge">Alarm report</code>. Currently theres no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it
These devices will either show as a binary sensor or a sensor called <code class="highlighter-rouge">Alarm xxxx</code> and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.</p>
<h5><a class="title-link" name="locks-and-other-secure-devices" href="#locks-and-other-secure-devices"></a> Locks and other secure devices</h5>
<p>These devices require a network key to be set for the zwave network before they are paired. This key is set in OpenZwaves <code>options.xml</code> which is located in Open Zwaves directory. This should also be the same directory as <code>config_path:</code> in your <code>configuration.yaml</code>. If its not, make sure you have the same values in all the files you are using.<br />
The option is commented out by default in <code>options.xml</code> and is a default key. Make your own unique key. The key is in Hexadecimals.<br />
It is best to pair these devices in Open Zwave Control Panel or other Zwave tool that can show you logs while pairing. Test the device before you save the configuration.<br />
Make sure you copy the newly saved <code>zwcfg_[home_id].xml</code>into your HomeAssistant config directory.</p>
<p>These devices require a network key to be set for the zwave network before they are paired. This key is set in OpenZwaves <code class="highlighter-rouge">options.xml</code> which is located in Open Zwaves directory. This should also be the same directory as <code class="highlighter-rouge">config_path:</code> in your <code class="highlighter-rouge">configuration.yaml</code>. If its not, make sure you have the same values in all the files you are using.
The option is commented out by default in <code class="highlighter-rouge">options.xml</code> and is a default key. Make your own unique key. The key is in Hexadecimals.
It is best to pair these devices in Open Zwave Control Panel or other Zwave tool that can show you logs while pairing. Test the device before you save the configuration.
Make sure you copy the newly saved <code class="highlighter-rouge">zwcfg_[home_id].xml</code>into your HomeAssistant config directory.</p>
<h5><a class="title-link" name="aeon-minimote" href="#aeon-minimote"></a> Aeon Minimote</h5>
<p>Heres a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into <code>automation.yaml</code>.</p>
<p>Heres a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into <code class="highlighter-rouge">automation.yaml</code>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: Minimote Button 1 Pressed</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">1</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 1 Pressed</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">1</span>
- <span class="string"><span class="content">alias: Minimote Button 1 Held</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">2</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 1 Held</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">2</span>
- <span class="string"><span class="content">alias: Minimote Button 2 Pressed</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">3</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 2 Pressed</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">3</span>
- <span class="string"><span class="content">alias: Minimote Button 2 Held</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">4</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 2 Held</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">4</span>
- <span class="string"><span class="content">alias: Minimote Button 3 Pressed</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">5</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 3 Pressed</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">5</span>
- <span class="string"><span class="content">alias: Minimote Button 3 Held</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">6</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 3 Held</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">6</span>
- <span class="string"><span class="content">alias: Minimote Button 4 Pressed</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">7</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 4 Pressed</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">7</span>
- <span class="string"><span class="content">alias: Minimote Button 4 Held</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">8</span></span>
</pre></div>
</div>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button 4 Held</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">8</span>
</code></pre>
</div>

View file

@ -99,59 +99,49 @@
<p>Make sure you have the correct dependencies installed before running the script:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get install cython3 libudev-dev python3-sphinx python3-setuptools
</code></pre>
</div>
<p>Make sure you have at least version 0.23 of cython.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo pip3 install --upgrade cython
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo pip3 install --upgrade cython
</code></pre>
</div>
<p>Then get the OpenZWave files and switch to the <code>python3</code> branch:</p>
<p>Then get the OpenZWave files and switch to the <code class="highlighter-rouge">python3</code> branch:</p>
<p class="note warning">Do not use root to build python-openzwave as it will surely fail.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ git clone https://github.com/OpenZWave/python-openzwave.git
$ cd python-openzwave
$ git checkout python3
$ PYTHON_EXEC=$(which python3) make build
$ sudo PYTHON_EXEC=$(which python3) make install
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>git clone https://github.com/OpenZWave/python-openzwave.git
<span class="gp">$ </span><span class="nb">cd </span>python-openzwave
<span class="gp">$ </span>git checkout python3
<span class="gp">$ </span><span class="nv">PYTHON_EXEC</span><span class="o">=</span><span class="k">$(</span>which python3<span class="k">)</span> make build
<span class="gp">$ </span>sudo <span class="nv">PYTHON_EXEC</span><span class="o">=</span><span class="k">$(</span>which python3<span class="k">)</span> make install
</code></pre>
</div>
<p class="note">
Instead of <code>make install</code>, you can alternatively build your own python-openzwave package which can be easily uninstalled:
Instead of <code class="highlighter-rouge">make install</code>, you can alternatively build your own python-openzwave package which can be easily uninstalled:
<code>$ sudo PYTHON_EXEC=$(which python3) checkinstall --pkgname python-openzwave --pkgversion 1.0 --provides python-openzwave</code>
<code class="highlighter-rouge">$ sudo PYTHON_EXEC=$(which python3) checkinstall --pkgname python-openzwave --pkgversion 1.0 --provides python-openzwave</code>
</p>
<p>With this installation, your <code>config_path</code> needed below will resemble:</p>
<p>With this installation, your <code class="highlighter-rouge">config_path</code> needed below will resemble:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>/usr/local/lib/python3.4/dist-packages/libopenzwave-0.3.0b8-py3.4-linux-x86_64.egg/config
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>/usr/local/lib/python3.4/dist-packages/libopenzwave-0.3.0b8-py3.4-linux-x86_64.egg/config
</code></pre>
</div>
<h3><a class="title-link" name="configuration" href="#configuration"></a> Configuration</h3>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">zwave</span>:
<span class="key">usb_path</span>: <span class="string"><span class="content">/dev/ttyUSB0</span></span>
<span class="key">config_path</span>: <span class="string"><span class="content">/usr/local/share/python-openzwave/config</span></span>
<span class="key">polling_interval</span>: <span class="string"><span class="content">60000</span></span>
<span class="key">customize</span>:
<span class="key">sensor.greenwave_powernode_6_port_energy_10</span>:
<span class="key">polling_intensity</span>: <span class="string"><span class="content">1</span></span>
</pre></div>
</div>
<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>
<span class="s">config_path</span><span class="pi">:</span> <span class="s">/usr/local/share/python-openzwave/config</span>
<span class="s">polling_interval</span><span class="pi">:</span> <span class="s">60000</span>
<span class="s">customize</span><span class="pi">:</span>
<span class="s">sensor.greenwave_powernode_6_port_energy_10</span><span class="pi">:</span>
<span class="s">polling_intensity</span><span class="pi">:</span> <span class="s">1</span>
</code></pre>
</div>
<p>Configuration variables:</p>
@ -170,115 +160,99 @@ Instead of <code>make install</code>, you can alternatively build your own pytho
<p>To find the path of your Z-Wave stick, run:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ls /dev/ttyUSB*
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ls /dev/ttyUSB<span class="k">*</span>
</code></pre>
</div>
<p>Or, on some other systems (such as Raspberry Pi), use:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ ls /dev/ttyACM*
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>ls /dev/ttyACM<span class="k">*</span>
</code></pre>
</div>
<p class="note">
Depending on whats plugged into your USB ports, the name found above may change. You can lock in a name, such as <code>/dev/zwave</code>, by following <a href="http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/">these instructions</a>.
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>
<h4><a class="title-link" name="events" href="#events"></a> Events</h4>
<h3><a class="title-link" name="events" href="#events"></a> Events</h3>
<p><strong>zwave.network_complete</strong><br />
HomeAssistant will trigger a event when the zwave network is complete. Meaning all of the nodes on the network have been queried. This can take quite som time, depending on wakeup intervals on the battery powered devices on the network.</p>
<h4><a class="title-link" name="zwavenetwork_complete" href="#zwavenetwork_complete"></a> zwave.network_complete</h4>
<p>HomeAssistant will trigger a event when the zwave network is complete. Meaning all of the nodes on the network have been queried. This can take quite som time, depending on wakeup intervals on the battery powered devices on the network.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: ZWave network is complete</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.network_complete</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">ZWave network is complete</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.network_complete</span>
</code></pre>
</div>
<p><strong>zwave.network_ready</strong><br />
HomeAssistant will trigger a event when the zwave network is ready for use. Between <code>zwave.network_start</code> and <code>zwave.network_ready</code> HomeAssistant will feel sluggish when trying to send commands to zwave 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.</p>
<h4><a class="title-link" name="zwavenetwork_ready" href="#zwavenetwork_ready"></a> zwave.network_ready</h4>
<p>HomeAssistant will trigger a event when the zwave network is ready for use. Between <code class="highlighter-rouge">zwave.network_start</code> and <code class="highlighter-rouge">zwave.network_ready</code> HomeAssistant will feel sluggish when trying to send commands to zwave 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.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: ZWave network is ready</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.network_ready</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">ZWave network is ready</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.network_ready</span>
</code></pre>
</div>
<p><strong>zwave.network_start</strong><br />
HomeAssistant will trigger a event when the zwave network is set up to be started.</p>
<h4><a class="title-link" name="zwavenetwork_start" href="#zwavenetwork_start"></a> zwave.network_start</h4>
<p>HomeAssistant will trigger a event when the zwave network is set up to be started.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: ZWave network is starting</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.network_start</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">ZWave network is starting</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.network_start</span>
</code></pre>
</div>
<p><strong>zwave.network_stop</strong><br />
HomeAssistant will trigger a event when the zwave network stopping.</p>
<h4><a class="title-link" name="zwavenetwork_stop" href="#zwavenetwork_stop"></a> zwave.network_stop</h4>
<p>HomeAssistant will trigger a event when the zwave network stopping.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: ZWave network is stopping</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.network_stop</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">ZWave network is stopping</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.network_stop</span>
</code></pre>
</div>
<p><strong>zwave.node_event</strong><br />
HomeAssistant will trigger a event when command_class_basic changes value on a node.<br />
This can be virtually anything, so tests have to be made to determine what value equals what.<br />
<h4><a class="title-link" name="zwavenode_event" href="#zwavenode_event"></a> zwave.node_event</h4>
<p>HomeAssistant will trigger a 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.</p>
<p>Example:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: Minimote Button Pressed</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.node_event</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">aeon_labs_minimote_1</span></span>
<span class="key">basic_level</span>: <span class="string"><span class="content">255</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code> <span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Minimote Button Pressed</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.node_event</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">aeon_labs_minimote_1</span>
<span class="s">basic_level</span><span class="pi">:</span> <span class="s">255</span>
</code></pre>
</div>
<p>The <em>object_id</em> and <em>basic_level</em> of all triggered events can be seen in the console output.</p>
<p><strong>zwave.scene_activated</strong><br />
<p><strong>zwave.scene_activated</strong>
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):</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml automation entry</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: Turn on Desk light</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">event</span></span>
<span class="key">event_type</span>: <span class="string"><span class="content">zwave.scene_activated</span></span>
<span class="key">event_data</span>:
<span class="key">object_id</span>: <span class="string"><span class="content">zwaveme_zme_wallcs_secure_wall_controller_8</span></span>
<span class="key">scene_id</span>: <span class="string"><span class="content">11</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml automation entry</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on Desk light</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">event</span>
<span class="s">event_type</span><span class="pi">:</span> <span class="s">zwave.scene_activated</span>
<span class="s">event_data</span><span class="pi">:</span>
<span class="s">object_id</span><span class="pi">:</span> <span class="s">zwaveme_zme_wallcs_secure_wall_controller_8</span>
<span class="s">scene_id</span><span class="pi">:</span> <span class="s">11</span>
</code></pre>
</div>
<p>The <em>object_id</em> and <em>scene_id</em> of all triggered events can be seen in the console output.</p>
<h4><a class="title-link" name="services" href="#services"></a> Services</h4>
<h3><a class="title-link" name="services" href="#services"></a> Services</h3>
<p>The Z-Wave component exposes seven services to help maintain the network.</p>
@ -321,27 +295,25 @@ Some devices can also trigger scene activation events, which can be used in auto
</tbody>
</table>
<p>The soft_reset and heal_network commands can be used as part of an automation script<br />
<p>The soft_reset and heal_network commands can be used as part of an automation script
to help keep a zwave network running relliably. For example:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml automation entry</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: soft reset at 2:30am</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">after</span>: <span class="string"><span class="content">'2:30:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">zwave.soft_reset</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Example configuration.yaml automation entry</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">soft reset at 2:30am</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2:30:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">zwave.soft_reset</span>
- <span class="string"><span class="content">alias: heal at 2:31am</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">after</span>: <span class="string"><span class="content">'2:31:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">zwave.heal_network</span></span>
</pre></div>
</div>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">heal at 2:31am</span>
<span class="s">trigger</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time</span>
<span class="s">after</span><span class="pi">:</span> <span class="s1">'</span><span class="s">2:31:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">zwave.heal_network</span>
</code></pre>
</div>