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

@ -101,78 +101,68 @@
<h4><a class="title-link" name="subdomain" href="#subdomain"></a> Subdomain</h4>
<p>So you already have a working Apache server available at example.org.<br />
<p>So you already have a working Apache server available at example.org.
Your home assistant is correctly working on this web server and available at localhost:8123</p>
<p>To be able to access to your home assistant instance by using https://home.example.org, add to following file into <code>/etc/httpd/conf/extra/hass.conf</code></p>
<p>To be able to access to your home assistant instance by using https://home.example.org, add to following file into <code class="highlighter-rouge">/etc/httpd/conf/extra/hass.conf</code></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>&lt;VirtualHost *:443&gt;
<pre><code class="language-apacheconf">&lt;VirtualHost *:443&gt;
ProxyPreserveHost On
ProxyRequests Off
ServerName home.example.org
ProxyPass / http://localhost:8123/
ProxyPassReverse / http://localhost:8123/
&lt;/VirtualHost&gt;
</pre></div>
</div>
</div>
</code></pre>
<p>and make sure that this file is read by apaches main configiuration file <code>/etc/httpd/conf/httpd.conf</code></p>
<p>and make sure that this file is read by apaches main configiuration file <code class="highlighter-rouge">/etc/httpd/conf/httpd.conf</code></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>...
<pre><code class="language-apacheconf">...
Include conf/extra/hass.conf
...
</pre></div>
</div>
</div>
</code></pre>
<p>If you dont want HTTPS, you can change <code>&lt;VirtualHost *:443&gt;</code> to <code>&lt;VirtualHost *:80&gt;</code> or better consider redirecting all HTTP to HTTPS.</p>
<p>If you dont want HTTPS, you can change <code class="highlighter-rouge">&lt;VirtualHost *:443&gt;</code> to <code class="highlighter-rouge">&lt;VirtualHost *:80&gt;</code> or better consider redirecting all HTTP to HTTPS.</p>
<h4><a class="title-link" name="multiple-instance" href="#multiple-instance"></a> Multiple Instance</h4>
<p>You already have home assistant running on localhost:8123 and available at home.example.org as describe before.<br />
The configuration file for this home assistant is available in <code>/home/alice/.homeassistant/configuration.yaml</code></p>
<p>You already have home assistant running on localhost:8123 and available at home.example.org as describe before.
The configuration file for this home assistant is available in <code class="highlighter-rouge">/home/alice/.homeassistant/configuration.yaml</code></p>
<p>You want another instance available at https://countryside.example.org</p>
<p>You can either :<br />
* Create a new user, <code>bob</code>, to hold the configuration file in <code>/home/bob/.homeassistant/configuration.yaml</code> and run home assistant as this new user<br />
* Create another configuration directory in <code>/home/alice/.homeassistan2/configuration.yaml</code> and run home assistant using <code>hass --config /home/alice/.homeassistant2/</code></p>
<p>You can either :</p>
<ul>
<li>Create a new user, <code class="highlighter-rouge">bob</code>, to hold the configuration file in <code class="highlighter-rouge">/home/bob/.homeassistant/configuration.yaml</code> and run home assistant as this new user</li>
<li>Create another configuration directory in <code class="highlighter-rouge">/home/alice/.homeassistan2/configuration.yaml</code> and run home assistant using <code class="highlighter-rouge">hass --config /home/alice/.homeassistant2/</code></li>
</ul>
<p>In both solution, change port number used by modifying <code>configuration.yaml</code></p>
<p>In both solution, change port number used by modifying <code class="highlighter-rouge">configuration.yaml</code></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">http</span>:
<span class="key">server_port</span>: <span class="string"><span class="content">8124</span></span>
<span class="error">...</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">server_port</span><span class="pi">:</span> <span class="s">8124</span>
<span class="s">...</span>
</code></pre>
</div>
<p>Start home assistant: Now, you have another instance running on localhost:8124</p>
<p>To access this instance by using https://countryside.example.org add to <code>/etc/httpd/conf/extra/hass.conf</code></p>
<p>To access this instance by using https://countryside.example.org add to <code class="highlighter-rouge">/etc/httpd/conf/extra/hass.conf</code></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>&lt;VirtualHost *:443&gt;
<pre><code class="language-apacheconf">&lt;VirtualHost *:443&gt;
ProxyPreserveHost On
ProxyRequests Off
ServerName countryside.example.org
ProxyPass / http://localhost:8124/
ProxyPassReverse / http://localhost:8124/
&lt;/VirtualHost&gt;
</pre></div>
</div>
</div>
</code></pre>
<h4><a class="title-link" name="http-to-https-redirection" href="#http-to-https-redirection"></a> HTTP to HTTPS redirection</h4>
<p>Add to your <code>/etc/httpd/conf/extra/hass.conf</code></p>
<p>Add to your <code class="highlighter-rouge">/etc/httpd/conf/extra/hass.conf</code></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>&lt;VirtualHost *:80&gt;
<pre><code class="language-apacheconf">&lt;VirtualHost *:80&gt;
ServerName example.org
ServerSignature Off
@ -180,9 +170,7 @@ The configuration file for this home assistant is available in <code>/home/alice
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]
&lt;/VirtualHost&gt;
</pre></div>
</div>
</div>
</code></pre>
</article>

View file

@ -93,98 +93,96 @@
<p>For flashing regular lights in case the the triggering of an alarm.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># AlmAct1 - switch to activate the alarm in Room1</span>
<span class="comment"># AlmSnd1 - switch for a buzzer</span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># AlmAct1 - switch to activate the alarm in Room1</span>
<span class="c1"># AlmSnd1 - switch for a buzzer</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: 'Alarm_PIR_Room1'</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">binary_sensor.PIR1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</span></span>
<span class="key">condition</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.AlmAct1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</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.alarm_room1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</span></span>
<span class="key">action</span>:
<span class="comment"># start alarm on movement if alarm activated</span>
<span class="comment"># and the alarm is not triggered</span>
<span class="key">service</span>: <span class="string"><span class="content">script.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">script.alarm_room1</span></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="s1">'</span><span class="s">Alarm_PIR_Room1'</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">binary_sensor.PIR1</span>
<span class="s">state</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="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">switch.AlmAct1</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">on'</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.alarm_room1</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="c1"># start alarm on movement if alarm activated</span>
<span class="c1"># and the alarm is not triggered</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">script.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.alarm_room1</span>
- <span class="string"><span class="content">alias: 'flash_room1_start'</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">switch.AlmSnd1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">script.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">script.flash_room1</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">flash_room1_start'</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">switch.AlmSnd1</span>
<span class="s">state</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="s">service</span><span class="pi">:</span> <span class="s">script.turn_on</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.flash_room1</span>
- <span class="string"><span class="content">alias: 'flash_room1_stop'</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">switch.REL1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</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">switch.AlmSnd1</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">script.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">script.flash_room1</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">flash_room1_stop'</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">switch.REL1</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</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">switch.AlmSnd1</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">script.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.flash_room1</span>
<span class="key">script</span>:
<span class="key">alarm_room1</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Alarm room1</span></span>
<span class="key">sequence</span>:
- <span class="string"><span class="content">alias: Alarm Room1 Start</span></span>
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.AlmSnd1</span></span>
- <span class="string"><span class="content">alias: Set Ack Room1</span></span>
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">input_boolean.ack1</span></span>
- <span class="string"><span class="content">alias: email_Room1</span></span>
<span class="key">service</span>: <span class="string"><span class="content">notify.email</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'Movement alarm in Room1'</span></span>
- <span class="string"><span class="content">delay:</span><span class="content">
# time interval for alarm sound and light flashing
seconds: 60</span></span>
- <span class="string"><span class="content">alias: Alarm Room1 Stop</span></span>
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.AlmSnd1</span></span>
<span class="s">script</span><span class="pi">:</span>
<span class="s">alarm_room1</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Alarm room1</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Alarm Room1 Start</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.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">switch.AlmSnd1</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Set Ack Room1</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.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">input_boolean.ack1</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">email_Room1</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.email</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">Movement</span><span class="nv"> </span><span class="s">alarm</span><span class="nv"> </span><span class="s">in</span><span class="nv"> </span><span class="s">Room1'</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="c1"># time interval for alarm sound and light flashing</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">60</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Alarm Room1 Stop</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.AlmSnd1</span>
<span class="key">flash_room1</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Flash Room1 On</span></span>
<span class="key">sequence</span>:
- <span class="string"><span class="content">alias: Light Room1 On</span></span>
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.REL1</span></span>
- <span class="string"><span class="content">delay:</span><span class="content">
# time for flash light on
seconds: 1</span></span>
- <span class="string"><span class="content">alias: Light Room1 Off</span></span>
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.REL1</span></span>
- <span class="string"><span class="content">delay:</span><span class="content">
# time for flash light off
seconds: 1</span></span>
- <span class="string"><span class="content">alias: loop_room1</span></span>
<span class="key">service</span>: <span class="string"><span class="content">script.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">script.flash_room1</span></span>
</pre></div>
</div>
<span class="s">flash_room1</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Flash Room1 On</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Light Room1 On</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.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">switch.REL1</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="c1"># time for flash light on</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Light Room1 Off</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.REL1</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="c1"># time for flash light off</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">1</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">loop_room1</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">script.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">script.flash_room1</span>
</code></pre>
</div>

View file

@ -89,53 +89,49 @@
<hr class="divider">
<p>This requires a <a href="/components/sensor.forecast/">forecast.io</a> sensor with the condition <code>weather_precip</code> that tells if its raining or not.</p>
<p>This requires a <a href="/components/sensor.forecast/">forecast.io</a> sensor with the condition <code class="highlighter-rouge">weather_precip</code> that tells if its raining or not.</p>
<p>Turn on a light in the living room when it starts raining, someone is home, and its afternoon or later.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">'Rainy Day'</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Rainy</span><span class="nv"> </span><span class="s">Day'</span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: 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">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">'14:00'</span></span>
<span class="key">before</span>: <span class="string"><span class="content">'23:00'</span></span>
<span class="s">trigger</span><span class="pi">:</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.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">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">14:00'</span>
<span class="s">before</span><span class="pi">:</span> <span class="s1">'</span><span class="s">23:00'</span>
<span class="key">condition</span>: <span class="string"><span class="content">use_trigger_values</span></span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">use_trigger_values</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">light.couch_lamp</span></span>
</pre></div>
</div>
<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">light.couch_lamp</span>
</code></pre>
</div>
<p>And then of course turn off the lamp when it stops raining but only if its within an hour before sunset.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation 2</span>:
<span class="key">alias</span>: <span class="string"><span class="content">'Rain is over'</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: 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">'None'</span></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>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation 2</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Rain</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">over'</span>
<span class="s">trigger</span><span class="pi">:</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.weather_precip</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">None'</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="s1">'</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="key">condition</span>: <span class="string"><span class="content">use_trigger_values</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">light.couch_lamp</span></span>
</pre></div>
</div>
<span class="s">condition</span><span class="pi">:</span> <span class="s">use_trigger_values</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">light.couch_lamp</span>
</code></pre>
</div>

View file

@ -91,107 +91,99 @@
<h4><a class="title-link" name="turn-on-the-living-room-lights-45-minutes-before-sunset-if-anyone-home" href="#turn-on-the-living-room-lights-45-minutes-before-sunset-if-anyone-home"></a> Turn on the living room lights 45 minutes before sunset if anyone home</h4>
<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="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">-00:45: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_lights</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="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">-00:45: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_lights</span>
</code></pre>
</div>
<h4><a class="title-link" name="natural-wake-up-light" href="#natural-wake-up-light"></a> Natural wake up light</h4>
<p><em>Note, Philips Hue is currently the only light platform that support transitions.</em></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="key">after</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">07:15:00</span><span class="delimiter">&quot;</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">light.bedroom</span></span>
<span class="key">data</span>:
<span class="comment"># 900 seconds = 15 minutes</span>
<span class="key">transition</span>: <span class="string"><span class="content">900</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">time</span>
<span class="s">after</span><span class="pi">:</span> <span class="s2">"</span><span class="s">07:15:00"</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">light.bedroom</span>
<span class="s">data</span><span class="pi">:</span>
<span class="c1"># 900 seconds = 15 minutes</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">900</span>
</code></pre>
</div>
<h4><a class="title-link" name="send-sun-risesun-set-notifications" href="#send-sun-risesun-set-notifications"></a> Send sun rise/sun set notifications</h4>
<p>Notifications send through <a href="/components/notify.pushbullet/">PushBullet</a> when the sun state is changed.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: 'Send notification when sun rises'</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">sunrise</span></span>
<span class="key">offset</span>: <span class="string"><span class="content">'+00:00:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.pushbullet</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'The sun is up.'</span></span>
- <span class="string"><span class="content">alias: 'Send notification 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="content">'+00:00:00'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.pushbullet</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'The sun is down.'</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">Send</span><span class="nv"> </span><span class="s">notification</span><span class="nv"> </span><span class="s">when</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">rises'</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">sunrise</span>
<span class="s">offset</span><span class="pi">:</span> <span class="s1">'</span><span class="s">+00:00:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.pushbullet</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">The</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">up.'</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Send</span><span class="nv"> </span><span class="s">notification</span><span class="nv"> </span><span class="s">when</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">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="s1">'</span><span class="s">+00:00:00'</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.pushbullet</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">The</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">down.'</span>
</code></pre>
</div>
<h4><a class="title-link" name="automations-for-lights-and-blinds-based-on-solar-elevation" href="#automations-for-lights-and-blinds-based-on-solar-elevation"></a> Automations for lights and blinds based on solar elevation</h4>
<p>Solar elevation automations can cope with offsets from sunset / sunrise as the seasons change better than using a time based offsets.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>- <span class="string"><span class="content">alias: 'Turn a few lights on when the sun gets dim'</span></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">sun.sun</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ state.attributes.elevation }}'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">3.5</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.background_lights</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="s1">'</span><span class="s">Turn</span><span class="nv"> </span><span class="s">a</span><span class="nv"> </span><span class="s">few</span><span class="nv"> </span><span class="s">lights</span><span class="nv"> </span><span class="s">on</span><span class="nv"> </span><span class="s">when</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">gets</span><span class="nv"> </span><span class="s">dim'</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">sun.sun</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.elevation</span><span class="nv"> </span><span class="s">}}'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">3.5</span>
<span class="s">action</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.background_lights</span>
- <span class="string"><span class="content">alias: 'Turn more lights on as the sun gets dimmer'</span></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">sun.sun</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ state.attributes.elevation }}'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">1.5</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.more_lights</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Turn</span><span class="nv"> </span><span class="s">more</span><span class="nv"> </span><span class="s">lights</span><span class="nv"> </span><span class="s">on</span><span class="nv"> </span><span class="s">as</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">sun</span><span class="nv"> </span><span class="s">gets</span><span class="nv"> </span><span class="s">dimmer'</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">sun.sun</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.elevation</span><span class="nv"> </span><span class="s">}}{%</span><span class="nv"> </span><span class="s">end</span><span class="nv"> </span><span class="s">raw</span><span class="nv"> </span><span class="s">%}'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">1.5</span>
<span class="s">action</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.more_lights</span>
- <span class="string"><span class="content">alias: 'Close blind at dusk'</span></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">sun.sun</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ state.attributes.elevation }}'</span></span>
<span class="key">below</span>: <span class="string"><span class="content">-2.5</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">switch.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.blind</span></span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Close</span><span class="nv"> </span><span class="s">blind</span><span class="nv"> </span><span class="s">at</span><span class="nv"> </span><span class="s">dusk'</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">sun.sun</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">raw</span><span class="nv"> </span><span class="s">%}{{</span><span class="nv"> </span><span class="s">state.attributes.elevation</span><span class="nv"> </span><span class="s">}}'</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">-2.5</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.blind</span>
</pre></div>
</div>
</code></pre>
</div>

View file

@ -93,33 +93,31 @@
<p><em>Note, Philips Hue is currently the only light platform that support the random effect.</em></p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">input_boolean</span>:
<span class="key">loop_livingcolors</span>:
<span class="key">name</span>: <span class="string"><span class="content">Loop LivingColors</span></span>
<span class="key">initial</span>: <span class="string"><span class="content">off</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:spotlight</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">input_boolean</span><span class="pi">:</span>
<span class="s">loop_livingcolors</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Loop LivingColors</span>
<span class="s">initial</span><span class="pi">:</span> <span class="s">off</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:spotlight</span>
<span class="key">automation</span>:
<span class="comment"># Changes Hue light every two minutes to random color if input boolean is set to on</span>
- <span class="string"><span class="content">alias: 'Set LivingColors to random color'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">'/2'</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</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">input_boolean.loop_livingcolors</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</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">light.woonkamer_livingcolors</span></span>
<span class="key">data</span>:
<span class="key">effect</span>: <span class="string"><span class="content">random</span></span>
<span class="key">transition</span>: <span class="string"><span class="content">5</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">255</span></span>
</pre></div>
</div>
<span class="s">automation</span><span class="pi">:</span>
<span class="c1"># Changes Hue light every two minutes to random color if input boolean is set to on</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Set</span><span class="nv"> </span><span class="s">LivingColors</span><span class="nv"> </span><span class="s">to</span><span class="nv"> </span><span class="s">random</span><span class="nv"> </span><span class="s">color'</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">minutes</span><span class="pi">:</span> <span class="s1">'</span><span class="s">/2'</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</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">input_boolean.loop_livingcolors</span>
<span class="s">state</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="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.woonkamer_livingcolors</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">effect</span><span class="pi">:</span> <span class="s">random</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">5</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">255</span>
</code></pre>
</div>

View file

@ -91,34 +91,32 @@
<p>Turn on lights during daytime when its dark enough &lt; 200 lux.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: </span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.sensor_luminance</span></span>
<span class="key">below</span>: <span class="string"><span class="content">200</span></span>
- <span class="string"><span class="content">platform: time</span></span>
<span class="key">after</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">08:00</span><span class="delimiter">&quot;</span></span>
<span class="key">before</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">23:00</span><span class="delimiter">&quot;</span></span>
<span class="key">condition</span>: <span class="string"><span class="content">use_trigger_values</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.basic_lights</span></span>
<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="s">trigger</span><span class="pi">:</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.sensor_luminance</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">200</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="s2">"</span><span class="s">08:00"</span>
<span class="s">before</span><span class="pi">:</span> <span class="s2">"</span><span class="s">23:00"</span>
<span class="s">condition</span><span class="pi">:</span> <span class="s">use_trigger_values</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.basic_lights</span>
<span class="key">automation 2</span>:
- <span class="string"><span class="content">alias: </span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: numeric_state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.sensor_luminance</span></span>
<span class="key">above</span>: <span class="string"><span class="content">200</span></span>
- <span class="string"><span class="content">platform: time</span></span>
<span class="key">after</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">23:00</span><span class="delimiter">&quot;</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">group.basic_lights</span></span>
</pre></div>
</div>
<span class="s">automation 2</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span>
<span class="s">trigger</span><span class="pi">:</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.sensor_luminance</span>
<span class="s">above</span><span class="pi">:</span> <span class="s">200</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="s2">"</span><span class="s">23: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_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">group.basic_lights</span>
</code></pre>
</div>

View file

@ -89,455 +89,453 @@
<hr class="divider">
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">homeassistant</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">example.com</span></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">37</span></span>
<span class="key">longitude</span>: <span class="string"><span class="content">-121</span></span>
<span class="comment"># 'metric' for Metric, 'imperial' for Imperial</span>
<span class="key">unit_system</span>: <span class="string"><span class="content">imperial</span></span>
<span class="comment"># Pick yours from here: 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="key">customize</span>:
<span class="key">switch.aeon_labs_smart_energy_switch_switch_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Mac Switch-Meter</span></span>
<span class="key">switch.leviton_unknown_type1a02_id0334_switch_3</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">W Nightstand</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/zwvapl.jpg</span></span>
<span class="key">switch.hub_switch</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Wink Hub Switch</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/wemoswitch.jpg</span></span>
<span class="key">switch.leviton_unknown_type1a02_id0334_switch_4</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Christmas Tree</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/zwvapl.jpg</span></span>
<span class="key">switch.leviton_unknown_type1a02_id0334_switch_5</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Roof Lights</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/zwvapl.jpg</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">homeassistant</span><span class="pi">:</span>
<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">example.com</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">37</span>
<span class="s">longitude</span><span class="pi">:</span> <span class="s">-121</span>
<span class="c1"># 'metric' for Metric, 'imperial' for Imperial</span>
<span class="s">unit_system</span><span class="pi">:</span> <span class="s">imperial</span>
<span class="c1"># Pick yours from here: 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="s">customize</span><span class="pi">:</span>
<span class="s">switch.aeon_labs_smart_energy_switch_switch_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Mac Switch-Meter</span>
<span class="s">switch.leviton_unknown_type1a02_id0334_switch_3</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">W Nightstand</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/zwvapl.jpg</span>
<span class="s">switch.hub_switch</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Wink Hub Switch</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/wemoswitch.jpg</span>
<span class="s">switch.leviton_unknown_type1a02_id0334_switch_4</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Christmas Tree</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/zwvapl.jpg</span>
<span class="s">switch.leviton_unknown_type1a02_id0334_switch_5</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Roof Lights</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/zwvapl.jpg</span>
<span class="key">light.w_bedroom_ceiling_</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Will's Bedroom Ceiling Lights (Wink)</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/casetta.jpg</span></span>
<span class="key">light.living_room_wall_</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Living Room Couch Lights (Wink)</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/casetta.jpg</span></span>
<span class="s">light.w_bedroom_ceiling_</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Will's Bedroom Ceiling Lights (Wink)</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/casetta.jpg</span>
<span class="s">light.living_room_wall_</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Living Room Couch Lights (Wink)</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/casetta.jpg</span>
<span class="key">media_player.my_shield_android_tv</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Dalek (Cast)</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/shieldtv.jpg</span></span>
<span class="key">media_player.chromecast</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Jeff chromecast</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/chromecast.jpg</span></span>
<span class="key">media_player.kodi</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Tardis-Win7 (Kodi)</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/kodi.png</span></span>
<span class="key">media_player.kodi_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Dalek (Kodi)</span></span>
<span class="key">media_player.roku_2_xd__12a18n045363</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Parents Roku</span></span>
<span class="key">entity_picture</span>: <span class="string"><span class="content">/local/roku2xd.jpg</span></span>
<span class="s">media_player.my_shield_android_tv</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Dalek (Cast)</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/shieldtv.jpg</span>
<span class="s">media_player.chromecast</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Jeff chromecast</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/chromecast.jpg</span>
<span class="s">media_player.kodi</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Tardis-Win7 (Kodi)</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/kodi.png</span>
<span class="s">media_player.kodi_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Dalek (Kodi)</span>
<span class="s">media_player.roku_2_xd__12a18n045363</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Parents Roku</span>
<span class="s">entity_picture</span><span class="pi">:</span> <span class="s">/local/roku2xd.jpg</span>
<span class="key">sensor.aeon_labs_smart_energy_switch_power_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Mac Usage (W)</span></span>
<span class="key">sensor.aeon_labs_smart_energy_switch_previous_reading_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Mac Usage Previous (W)</span></span>
<span class="key">hidden</span>: <span class="string"><span class="content">true</span></span>
<span class="key">sensor.aeon_labs_smart_energy_switch_energy_2</span>:
<span class="key">friendly_name</span>: <span class="string"><span class="content">Mac Usage (kWh)</span></span>
<span class="key">hidden</span>: <span class="string"><span class="content">true</span></span>
<span class="s">sensor.aeon_labs_smart_energy_switch_power_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Mac Usage (W)</span>
<span class="s">sensor.aeon_labs_smart_energy_switch_previous_reading_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Mac Usage Previous (W)</span>
<span class="s">hidden</span><span class="pi">:</span> <span class="s">true</span>
<span class="s">sensor.aeon_labs_smart_energy_switch_energy_2</span><span class="pi">:</span>
<span class="s">friendly_name</span><span class="pi">:</span> <span class="s">Mac Usage (kWh)</span>
<span class="s">hidden</span><span class="pi">:</span> <span class="s">true</span>
<span class="comment">#####################</span>
<span class="comment">## GROUPS</span>
<span class="comment">#####################</span>
<span class="key">group</span>:
<span class="key">w_bedroom</span>:
- <span class="string"><span class="content">switch.leviton_unknown_type1a02_id0334_switch_3</span></span>
- <span class="string"><span class="content">light.w_bedroom_ceiling_</span></span>
<span class="key">christmas</span>:
- <span class="string"><span class="content">switch.leviton_unknown_type1a02_id0334_switch_4</span></span>
- <span class="string"><span class="content">switch.leviton_unknown_type1a02_id0334_switch_5</span></span>
<span class="key">almanac</span>:
- <span class="string"><span class="content">sensor.date</span></span>
- <span class="string"><span class="content">sensor.time</span></span>
- <span class="string"><span class="content">sensor.time_utc</span></span>
- <span class="string"><span class="content">sun.sun</span></span>
<span class="key">tracker</span>:
- <span class="string"><span class="content">device_tracker.will_wnexus</span></span>
<span class="comment"># OpenWeatherMap:</span>
<span class="comment"># - sensor.weather_temperature</span>
<span class="comment"># - sensor.weather_humidity</span>
<span class="comment"># - sensor.weather_pressure</span>
<span class="comment"># - sensor.weather_rain</span>
<span class="comment"># - sensor.weather_wind_speed</span>
<span class="comment"># - sensor.weather_cloud_coverage</span>
<span class="comment"># - sensor.weather_forecast</span>
<span class="key">Meteobridge</span>:
- <span class="string"><span class="content">sensor.outdoor_temp_meteobridge</span></span>
- <span class="string"><span class="content">sensor.outdoor_humidity_meteobridge</span></span>
- <span class="string"><span class="content">sensor.outdoor_dewpoint_meteobridge</span></span>
- <span class="string"><span class="content">sensor.precip_rate_meteobridge</span></span>
- <span class="string"><span class="content">sensor.wind_direction_meteobridge</span></span>
- <span class="string"><span class="content">sensor.wind_gust_meteohub</span></span>
- <span class="string"><span class="content">sensor.wind_chill_meteobridge</span></span>
- <span class="string"><span class="content">sensor.wind_speed_meteobridge</span></span>
- <span class="string"><span class="content">sensor.indoor_dewpoint_meteobridge</span></span>
- <span class="string"><span class="content">sensor.indoor_humidity_meteobridge</span></span>
- <span class="string"><span class="content">sensor.indoor_temp_meteobridge</span></span>
- <span class="string"><span class="content">sensor.precip_change_meteobridge</span></span>
- <span class="string"><span class="content">sensor.precip_total_meteobridge</span></span>
- <span class="string"><span class="content">sensor.sea_level_pressure_meteobridge</span></span>
- <span class="string"><span class="content">sensor.barometric_pressure_meteobridge</span></span>
<span class="c1">#####################</span>
<span class="c1">## GROUPS</span>
<span class="c1">#####################</span>
<span class="s">group</span><span class="pi">:</span>
<span class="s">w_bedroom</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">switch.leviton_unknown_type1a02_id0334_switch_3</span>
<span class="pi">-</span> <span class="s">light.w_bedroom_ceiling_</span>
<span class="s">christmas</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">switch.leviton_unknown_type1a02_id0334_switch_4</span>
<span class="pi">-</span> <span class="s">switch.leviton_unknown_type1a02_id0334_switch_5</span>
<span class="s">almanac</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">sensor.date</span>
<span class="pi">-</span> <span class="s">sensor.time</span>
<span class="pi">-</span> <span class="s">sensor.time_utc</span>
<span class="pi">-</span> <span class="s">sun.sun</span>
<span class="s">tracker</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">device_tracker.will_wnexus</span>
<span class="c1"># OpenWeatherMap:</span>
<span class="c1"># - sensor.weather_temperature</span>
<span class="c1"># - sensor.weather_humidity</span>
<span class="c1"># - sensor.weather_pressure</span>
<span class="c1"># - sensor.weather_rain</span>
<span class="c1"># - sensor.weather_wind_speed</span>
<span class="c1"># - sensor.weather_cloud_coverage</span>
<span class="c1"># - sensor.weather_forecast</span>
<span class="s">Meteobridge</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">sensor.outdoor_temp_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.outdoor_humidity_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.outdoor_dewpoint_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.precip_rate_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.wind_direction_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.wind_gust_meteohub</span>
<span class="pi">-</span> <span class="s">sensor.wind_chill_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.wind_speed_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.indoor_dewpoint_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.indoor_humidity_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.indoor_temp_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.precip_change_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.precip_total_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.sea_level_pressure_meteobridge</span>
<span class="pi">-</span> <span class="s">sensor.barometric_pressure_meteobridge</span>
<span class="comment">####################</span>
<span class="comment">## ZONES</span>
<span class="comment">####################</span>
<span class="key">zone</span>:
<span class="key">name</span>: <span class="string"><span class="content">Home</span></span>
<span class="key">latitude</span>: <span class="string"><span class="content">37</span></span>
<span class="key">longitude</span>: <span class="string"><span class="content">-121 </span></span>
<span class="key">radius</span>: <span class="string"><span class="content">200</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:home</span></span>
<span class="c1">####################</span>
<span class="c1">## ZONES</span>
<span class="c1">####################</span>
<span class="s">zone</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Home</span>
<span class="s">latitude</span><span class="pi">:</span> <span class="s">37</span>
<span class="s">longitude</span><span class="pi">:</span> <span class="s">-121</span>
<span class="s">radius</span><span class="pi">:</span> <span class="s">200</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:home</span>
<span class="key">zone 2</span>:
<span class="key">name</span>: <span class="string"><span class="content">Barracuda_(SJ)</span></span>
<span class="key">latitude</span>: <span class="string"><span class="content">37</span></span>
<span class="key">longitude</span>: <span class="string"><span class="content">-121</span></span>
<span class="key">radius</span>: <span class="string"><span class="content">100</span></span>
<span class="s">zone 2</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Barracuda_(SJ)</span>
<span class="s">latitude</span><span class="pi">:</span> <span class="s">37</span>
<span class="s">longitude</span><span class="pi">:</span> <span class="s">-121</span>
<span class="s">radius</span><span class="pi">:</span> <span class="s">100</span>
<span class="key">zone 3</span>:
<span class="key">name</span>: <span class="string"><span class="content">SFC</span></span>
<span class="key">latitude</span>: <span class="string"><span class="content">37</span></span>
<span class="key">longitude</span>: <span class="string"><span class="content">-122</span></span>
<span class="key">radius</span>: <span class="string"><span class="content">95</span></span>
<span class="s">zone 3</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">SFC</span>
<span class="s">latitude</span><span class="pi">:</span> <span class="s">37</span>
<span class="s">longitude</span><span class="pi">:</span> <span class="s">-122</span>
<span class="s">radius</span><span class="pi">:</span> <span class="s">95</span>
<span class="comment">####################</span>
<span class="comment">## NOTIFICATIONS</span>
<span class="comment">####################</span>
<span class="c1">####################</span>
<span class="c1">## NOTIFICATIONS</span>
<span class="c1">####################</span>
<span class="comment">####################</span>
<span class="comment">## AUTOMATION</span>
<span class="comment">####################</span>
<span class="key">automation</span>:
<span class="comment">#- alias: 'W_at_work' </span>
<span class="comment"># trigger:</span>
<span class="comment"># - platform: zone</span>
<span class="comment"># entity_id: device_tracker.will_wnexus</span>
<span class="comment"># zone: zone.barracuda_sj</span>
<span class="comment"># event: enter</span>
<span class="comment"># - platform: time</span>
<span class="comment"># after: '07:15'</span>
<span class="comment"># before: '09:00'</span>
<span class="comment"># action:</span>
<span class="comment"># service: ifttt.trigger</span>
<span class="comment"># data: {&quot;event&quot;:&quot;hassnotification_dadsms&quot;, &quot;value1&quot;: &quot;Will's at Work&quot;}</span>
- <span class="string"><span class="content">alias: &quot;Update_Update&quot;</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">updater.updater</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">ifttt.trigger</span></span>
<span class="key">data</span>: <span class="string"><span class="content">{&quot;event&quot;:&quot;hassnotification_willsms&quot;,&quot;value1&quot;:&quot;HASS has an update&quot;}</span></span>
- <span class="string"><span class="content">alias: 'Christmas Roof ON'</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="content">'-01: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">switch.leviton_unknown_type1a02_id0334_switch_5</span></span>
- <span class="string"><span class="content">alias: 'Christmas Roof OFF'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></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">0</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.leviton_unknown_type1a02_id0334_switch_5</span></span>
- <span class="string"><span class="content">alias: 'Christmas Tree ON'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">hours</span>: <span class="string"><span class="content">8</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">0</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</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">switch.leviton_unknown_type1a02_id0334_switch_4</span></span>
- <span class="string"><span class="content">alias: 'Christmas Tree (OFF)'</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">hours</span>: <span class="string"><span class="content">23</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">0</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.leviton_unknown_type1a02_id0334_switch_4</span></span>
<span class="comment">#- alias: test notify</span>
<span class="comment"># trigger:</span>
<span class="comment"># platform: time</span>
<span class="comment"># minutes: '/5' #every 5 min</span>
<span class="comment"># action:</span>
<span class="comment"># service: notify.pushEtta</span>
<span class="comment"># data: </span>
<span class="comment"># message: 5 Min Test</span>
<span class="c1">####################</span>
<span class="c1">## AUTOMATION</span>
<span class="c1">####################</span>
<span class="s">automation</span><span class="pi">:</span>
<span class="c1">#- alias: 'W_at_work' </span>
<span class="c1"># trigger:</span>
<span class="c1"># - platform: zone</span>
<span class="c1"># entity_id: device_tracker.will_wnexus</span>
<span class="c1"># zone: zone.barracuda_sj</span>
<span class="c1"># event: enter</span>
<span class="c1"># - platform: time</span>
<span class="c1"># after: '07:15'</span>
<span class="c1"># before: '09:00'</span>
<span class="c1"># action:</span>
<span class="c1"># service: ifttt.trigger</span>
<span class="c1"># data: {"event":"hassnotification_dadsms", "value1": "Will's at Work"}</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Update_Update"</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">updater.updater</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">ifttt.trigger</span>
<span class="s">data</span><span class="pi">:</span> <span class="pi">{</span><span class="s2">"</span><span class="s">event"</span><span class="pi">:</span><span class="s2">"</span><span class="s">hassnotification_willsms"</span><span class="pi">,</span><span class="s2">"</span><span class="s">value1"</span><span class="pi">:</span><span class="s2">"</span><span class="s">HASS</span><span class="nv"> </span><span class="s">has</span><span class="nv"> </span><span class="s">an</span><span class="nv"> </span><span class="s">update"</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">Christmas</span><span class="nv"> </span><span class="s">Roof</span><span class="nv"> </span><span class="s">ON'</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="s1">'</span><span class="s">-01: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">switch.leviton_unknown_type1a02_id0334_switch_5</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Christmas</span><span class="nv"> </span><span class="s">Roof</span><span class="nv"> </span><span class="s">OFF'</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">hours</span><span class="pi">:</span> <span class="s">1</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.leviton_unknown_type1a02_id0334_switch_5</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Christmas</span><span class="nv"> </span><span class="s">Tree</span><span class="nv"> </span><span class="s">ON'</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">hours</span><span class="pi">:</span> <span class="s">8</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</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">switch.leviton_unknown_type1a02_id0334_switch_4</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Christmas</span><span class="nv"> </span><span class="s">Tree</span><span class="nv"> </span><span class="s">(OFF)'</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">hours</span><span class="pi">:</span> <span class="s">23</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.leviton_unknown_type1a02_id0334_switch_4</span>
<span class="c1">#- alias: test notify</span>
<span class="c1"># trigger:</span>
<span class="c1"># platform: time</span>
<span class="c1"># minutes: '/5' #every 5 min</span>
<span class="c1"># action:</span>
<span class="c1"># service: notify.pushEtta</span>
<span class="c1"># data: </span>
<span class="c1"># message: 5 Min Test</span>
<span class="comment">#################################</span>
<span class="comment">### COMPONENTS ###</span>
<span class="comment">#################################</span>
<span class="comment">#discovery:</span>
<span class="key">sun</span>:
<span class="comment">#updater:</span>
<span class="key">history</span>:
<span class="comment">#conversation:</span>
<span class="key">frontend</span>:
<span class="key">logbook</span>:
<span class="c1">#################################</span>
<span class="c1">### COMPONENTS ###</span>
<span class="c1">#################################</span>
<span class="c1">#discovery:</span>
<span class="s">sun</span><span class="pi">:</span>
<span class="c1">#updater:</span>
<span class="s">history</span><span class="pi">:</span>
<span class="c1">#conversation:</span>
<span class="s">frontend</span><span class="pi">:</span>
<span class="s">logbook</span><span class="pi">:</span>
<span class="key">http</span>:
<span class="key">api_password</span>: <span class="string"><span class="content">Austin12#</span></span>
<span class="key">server_port</span>: <span class="string"><span class="content">8123</span></span>
<span class="key">ssl_certificate</span>: <span class="string"><span class="content">/etc/letsencrypt/live/example.com/fullchain.pem</span></span>
<span class="key">ssl_key</span>: <span class="string"><span class="content">/etc/letsencrypt/live/example.com/privkey.pem</span></span>
<span class="s">http</span><span class="pi">:</span>
<span class="s">api_password</span><span class="pi">:</span> <span class="s">Austin12#</span>
<span class="s">server_port</span><span class="pi">:</span> <span class="s">8123</span>
<span class="s">ssl_certificate</span><span class="pi">:</span> <span class="s">/etc/letsencrypt/live/example.com/fullchain.pem</span>
<span class="s">ssl_key</span><span class="pi">:</span> <span class="s">/etc/letsencrypt/live/example.com/privkey.pem</span>
<span class="key">ifttt</span>:
<span class="key">key</span>: <span class="string"><span class="content">[redacted]</span></span>
<span class="s">ifttt</span><span class="pi">:</span>
<span class="s">key</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">redacted</span><span class="pi">]</span>
<span class="key">media_player 1</span>:
<span class="key">platform</span>: <span class="string"><span class="content">plex</span></span>
<span class="comment">#media_player 2: </span>
<span class="comment"># platform: squeezebox</span>
<span class="comment"># host: 192.168.2.80</span>
<span class="comment"># port: 9000</span>
<span class="key">media_player 3</span>:
<span class="key">platform</span>: <span class="string"><span class="content">cast</span></span>
<span class="key">media_player 4</span>:
<span class="key">platform</span>: <span class="string"><span class="content">kodi</span></span>
<span class="key">url</span>: <span class="string"><span class="content">http://192.168.2.129:8080/jsonrpc</span></span>
<span class="key">user</span>: <span class="string"><span class="content">kodi</span></span>
<span class="key">password</span>: <span class="string"><span class="content">kodi</span></span>
<span class="key">media_player 5</span>:
<span class="key">platform</span>: <span class="string"><span class="content">plex</span></span>
<span class="key">media_player 6</span>:
<span class="key">platform</span>: <span class="string"><span class="content">kodi</span></span>
<span class="key">url</span>: <span class="string"><span class="content">http://192.168.2.165/jsonrpc</span></span>
<span class="key">media_player 7</span>:
<span class="key">platform</span>: <span class="string"><span class="content">samsungtv</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.90</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Parents TV</span></span>
<span class="s">media_player 1</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">plex</span>
<span class="c1">#media_player 2: </span>
<span class="c1"># platform: squeezebox</span>
<span class="c1"># host: 192.168.2.80</span>
<span class="c1"># port: 9000</span>
<span class="s">media_player 3</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">cast</span>
<span class="s">media_player 4</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">kodi</span>
<span class="s">url</span><span class="pi">:</span> <span class="s">http://192.168.2.129:8080/jsonrpc</span>
<span class="s">user</span><span class="pi">:</span> <span class="s">kodi</span>
<span class="s">password</span><span class="pi">:</span> <span class="s">kodi</span>
<span class="s">media_player 5</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">plex</span>
<span class="s">media_player 6</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">kodi</span>
<span class="s">url</span><span class="pi">:</span> <span class="s">http://192.168.2.165/jsonrpc</span>
<span class="s">media_player 7</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">samsungtv</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.90</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Parents TV</span>
<span class="key">wink</span>:
<span class="key">access_token</span>: <span class="string"><span class="content">[redacted]</span></span>
<span class="key">refresh_token</span>: <span class="string"><span class="content">[redacted]</span></span>
<span class="s">wink</span><span class="pi">:</span>
<span class="s">access_token</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">redacted</span><span class="pi">]</span>
<span class="s">refresh_token</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">redacted</span><span class="pi">]</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">10000</span></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">10000</span>
<span class="comment">#zigbee:</span>
<span class="comment"># device: /dev/ttyUSB1</span>
<span class="comment"># baud: 115200</span>
<span class="c1">#zigbee:</span>
<span class="c1"># device: /dev/ttyUSB1</span>
<span class="c1"># baud: 115200</span>
<span class="key">mqtt</span>:
<span class="key">broker</span>: <span class="string"><span class="content">127.0.0.1</span></span>
<span class="key">port</span>: <span class="string"><span class="content">8883</span></span>
<span class="key">username</span>: <span class="string"><span class="content">[redacted]</span></span>
<span class="key">password</span>: <span class="string"><span class="content">[redacted]</span></span>
<span class="s">mqtt</span><span class="pi">:</span>
<span class="s">broker</span><span class="pi">:</span> <span class="s">127.0.0.1</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">8883</span>
<span class="s">username</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">redacted</span><span class="pi">]</span>
<span class="s">password</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">redacted</span><span class="pi">]</span>
<span class="key">device_tracker 1</span>:
<span class="key">platform</span>: <span class="string"><span class="content">owntracks</span></span>
<span class="s">device_tracker 1</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">owntracks</span>
<span class="key">track_new_devices</span>: <span class="string"><span class="content">yes</span></span>
<span class="key">interval_seconds</span>: <span class="string"><span class="content">40</span></span>
<span class="key">consider_home</span>: <span class="string"><span class="content">120 </span></span>
<span class="s">track_new_devices</span><span class="pi">:</span> <span class="s">yes</span>
<span class="s">interval_seconds</span><span class="pi">:</span> <span class="s">40</span>
<span class="s">consider_home</span><span class="pi">:</span> <span class="s">120</span>
<span class="key">device_tracker 2</span>:
<span class="key">platform</span>: <span class="string"><span class="content">nmap_tracker</span></span>
<span class="key">hosts</span>: <span class="string"><span class="content">192.168.2.0/24</span></span>
<span class="key">home_interval</span>: <span class="string"><span class="content">3</span></span>
<span class="s">device_tracker 2</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">nmap_tracker</span>
<span class="s">hosts</span><span class="pi">:</span> <span class="s">192.168.2.0/24</span>
<span class="s">home_interval</span><span class="pi">:</span> <span class="s">3</span>
<span class="comment">#sensor:</span>
<span class="comment"># platform: openweathermap</span>
<span class="comment"># api_key: [redacted]</span>
<span class="comment"># forecast: 1</span>
<span class="comment"># monitored_conditions:</span>
<span class="comment"># - temperature</span>
<span class="comment"># - wind_speed</span>
<span class="comment"># - humidity</span>
<span class="comment"># - pressure</span>
<span class="comment"># - clouds</span>
<span class="comment"># - rain</span>
<span class="c1">#sensor:</span>
<span class="c1"># platform: openweathermap</span>
<span class="c1"># api_key: [redacted]</span>
<span class="c1"># forecast: 1</span>
<span class="c1"># monitored_conditions:</span>
<span class="c1"># - temperature</span>
<span class="c1"># - wind_speed</span>
<span class="c1"># - humidity</span>
<span class="c1"># - pressure</span>
<span class="c1"># - clouds</span>
<span class="c1"># - rain</span>
<span class="key">sensor 2</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time_date</span></span>
<span class="key">display_options</span>:
- <span class="string"><span class="content">'time'</span></span>
- <span class="string"><span class="content">'date'</span></span>
- <span class="string"><span class="content">'time_utc'</span></span>
<span class="s">sensor 2</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">time_date</span>
<span class="s">display_options</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s1">'</span><span class="s">time'</span>
<span class="pi">-</span> <span class="s1">'</span><span class="s">date'</span>
<span class="pi">-</span> <span class="s1">'</span><span class="s">time_utc'</span>
<span class="comment">### BEGIN METEO SENSORS ###</span>
<span class="key">sensor 3</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Outdoor Temp (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">C</span></span>
<span class="c1">### BEGIN METEO SENSORS ###</span>
<span class="s">sensor 3</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Outdoor Temp (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[2]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">C</span>
<span class="key">sensor 4</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Outdoor Humidity (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">Percent</span></span>
<span class="s">sensor 4</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Outdoor Humidity (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[3]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">Percent</span>
<span class="key">sensor 5</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Outdoor Dewpoint (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">C</span></span>
<span class="s">sensor 5</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Outdoor Dewpoint (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[4]</span><span class="nv"> </span><span class="s">}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">C</span>
<span class="key">sensor 6</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Wind Direction (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">Degrees</span></span>
<span class="s">sensor 6</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Wind Direction (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[7]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">Degrees</span>
<span class="key">sensor 7</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Wind Gust (Meteohub)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">m/s</span></span>
<span class="s">sensor 7</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Wind Gust (Meteohub)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[8]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">m/s</span>
<span class="key">sensor 8</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Wind Speed (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">m/s</span></span>
<span class="s">sensor 8</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Wind Speed (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[9]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">m/s</span>
<span class="key">sensor 9</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Wind Chill (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">C</span></span>
<span class="s">sensor 9</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Wind Chill (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[10]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">C</span>
<span class="key">sensor 10</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Precip Rate (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">mm/hr</span></span>
<span class="s">sensor 10</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Precip Rate (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[13]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">mm/hr</span>
<span class="key">sensor 11</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Precip Total (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">mm</span></span>
<span class="s">sensor 11</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Precip Total (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[14]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">mm</span>
<span class="key">sensor 12</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Precip Change (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">mm</span></span>
<span class="s">sensor 12</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Precip Change (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[15]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">mm</span>
<span class="key">sensor 13</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Indoor Temp (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">C</span></span>
<span class="s">sensor 13</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Indoor Temp (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[18]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">C</span>
<span class="key">sensor 14</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Indoor Humidity (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">percent</span></span>
<span class="s">sensor 14</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Indoor Humidity (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[19]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">percent</span>
<span class="key">sensor 15</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Indoor Dewpoint (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">C</span></span>
<span class="s">sensor 15</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Indoor Dewpoint (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[20]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">C</span>
<span class="key">sensor 16</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Barometric Pressure (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">mb</span></span>
<span class="s">sensor 16</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Barometric Pressure (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[21]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">mb</span>
<span class="key">sensor 17</span>:
<span class="key">platform</span>: <span class="string"><span class="content">tcp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Sea Level Pressure (Meteobridge)</span></span>
<span class="key">host</span>: <span class="string"><span class="content">192.168.2.82</span></span>
<span class="key">port</span>: <span class="string"><span class="content">5556</span></span>
<span class="key">timeout</span>: <span class="string"><span class="content">6</span></span>
<span class="key">payload</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Content-type: text/xml; charaset=UTF-8\n\n</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&quot;</span><span class="delimiter">&quot;</span></span>
<span class="key">unit</span>: <span class="string"><span class="content">mb</span></span>
<span class="s">sensor 17</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">tcp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Sea Level Pressure (Meteobridge)</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">192.168.2.82</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">5556</span>
<span class="s">timeout</span><span class="pi">:</span> <span class="s">6</span>
<span class="s">payload</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Content-type:</span><span class="nv"> </span><span class="s">text/xml;</span><span class="nv"> </span><span class="s">charaset=UTF-8</span><span class="se">\n\n</span><span class="s">"</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="s2">"</span><span class="s">{{value.split</span><span class="nv"> </span><span class="s">('</span><span class="nv"> </span><span class="s">')[22]}}"</span>
<span class="s">unit</span><span class="pi">:</span> <span class="s">mb</span>
<span class="key">sensor 18</span>:
<span class="key">platform</span>: <span class="string"><span class="content">steam_online</span></span>
<span class="key">api_key</span>: <span class="string"><span class="content">[Redact]</span></span>
<span class="key">accounts</span>:
- <span class="string"><span class="content">76561198012067051 </span></span>
<span class="s">sensor 18</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">steam_online</span>
<span class="s">api_key</span><span class="pi">:</span> <span class="pi">[</span><span class="nv">Redact</span><span class="pi">]</span>
<span class="s">accounts</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">76561198012067051</span>
<span class="key">switch</span>:
<span class="key">platform</span>: <span class="string"><span class="content">wemo</span></span>
</pre></div>
</div>
<span class="s">switch</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">wemo</span>
</code></pre>
</div>

View file

@ -95,24 +95,22 @@
<li>It uses React to render the data.</li>
<li>It hooks into Home Assistant JS which means updates pushed from the server are instantly rendered.</li>
<li>It accesses properties made available from Polymer.</li>
<li>It uses the user configuration for the component in the <code>configuration.yaml</code> file for rendering.</li>
<li>It uses the user configuration for the component in the <code class="highlighter-rouge">configuration.yaml</code> file for rendering.</li>
<li>It allows toggling the sidebar.</li>
</ul>
<p>All you need is available as a <a href="https://github.com/home-assistant/home-assistant/tree/master/config/panels/react.html">custom panel</a>. Download the file and save it in <code>&lt;config dir&gt;/panels/</code> (you might have to create the directory if it doesnt exist).</p>
<p>All you need is available as a <a href="https://github.com/home-assistant/home-assistant/tree/master/config/panels/react.html">custom panel</a>. Download the file and save it in <code class="highlighter-rouge">&lt;config dir&gt;/panels/</code> (you might have to create the directory if it doesnt exist).</p>
<p>Create a entry for the panel in your <code>configuration.yaml</code> file to enable it.</p>
<p>Create a entry for the panel in your <code class="highlighter-rouge">configuration.yaml</code> file to enable it.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">panel_custom</span>:
- <span class="string"><span class="content">name: react</span></span>
<span class="key">sidebar_title</span>: <span class="string"><span class="content">TodoMVC</span></span>
<span class="key">sidebar_icon</span>: <span class="string"><span class="content">mdi:work</span></span>
<span class="key">url_path</span>: <span class="string"><span class="content">todomvc</span></span>
<span class="key">config</span>:
<span class="key">title</span>: <span class="string"><span class="content">hello</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">panel_custom</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s">react</span>
<span class="s">sidebar_title</span><span class="pi">:</span> <span class="s">TodoMVC</span>
<span class="s">sidebar_icon</span><span class="pi">:</span> <span class="s">mdi:work</span>
<span class="s">url_path</span><span class="pi">:</span> <span class="s">todomvc</span>
<span class="s">config</span><span class="pi">:</span>
<span class="s">title</span><span class="pi">:</span> <span class="s">hello</span>
</code></pre>
</div>
<p>This video shows the example in action.</p>

View file

@ -96,68 +96,64 @@
<h4><a class="title-link" name="scenes" href="#scenes"></a> Scenes</h4>
<p>One scene for normal light, one for when movies are on. A 2 second transition gives a nice feel to the switch.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">scene</span>:
- <span class="string"><span class="content">name: Livingroom normal</span></span>
<span class="key">entities</span>:
<span class="key">light.light1</span>:
<span class="key">state</span>: <span class="string"><span class="content">on</span></span>
<span class="key">transition</span>: <span class="string"><span class="content">2</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">150</span></span>
<span class="key">xy_color</span>: <span class="string"><span class="content">[ 0.4448, 0.4066 ]</span></span>
<span class="key">light.light2</span>:
<span class="key">state</span>: <span class="string"><span class="content">on</span></span>
<span class="key">transition</span>: <span class="string"><span class="content">2</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">215</span></span>
<span class="key">xy_color</span>: <span class="string"><span class="content">[ 0.4448, 0.4066 ]</span></span>
- <span class="string"><span class="content">name: Livingroom dim</span></span>
<span class="key">entities</span>:
<span class="key">light.light1</span>:
<span class="key">state</span>: <span class="string"><span class="content">on</span></span>
<span class="key">transition</span>: <span class="string"><span class="content">2</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">75</span></span>
<span class="key">xy_color</span>: <span class="string"><span class="content">[ 0.5926, 0.3814 ]</span></span>
<span class="key">light.light2</span>:
<span class="key">state</span>: <span class="string"><span class="content">on</span></span>
<span class="key">transition</span>: <span class="string"><span class="content">2</span></span>
<span class="key">brightness</span>: <span class="string"><span class="content">145</span></span>
<span class="key">xy_color</span>: <span class="string"><span class="content">[ 0.5529, 0.4107 ]</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">scene</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s">Livingroom normal</span>
<span class="s">entities</span><span class="pi">:</span>
<span class="s">light.light1</span><span class="pi">:</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">on</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">150</span>
<span class="s">xy_color</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">0.4448</span><span class="pi">,</span> <span class="nv">0.4066</span> <span class="pi">]</span>
<span class="s">light.light2</span><span class="pi">:</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">on</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">215</span>
<span class="s">xy_color</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">0.4448</span><span class="pi">,</span> <span class="nv">0.4066</span> <span class="pi">]</span>
<span class="pi">-</span> <span class="s">name</span><span class="pi">:</span> <span class="s">Livingroom dim</span>
<span class="s">entities</span><span class="pi">:</span>
<span class="s">light.light1</span><span class="pi">:</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">on</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">75</span>
<span class="s">xy_color</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">0.5926</span><span class="pi">,</span> <span class="nv">0.3814</span> <span class="pi">]</span>
<span class="s">light.light2</span><span class="pi">:</span>
<span class="s">state</span><span class="pi">:</span> <span class="s">on</span>
<span class="s">transition</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">brightness</span><span class="pi">:</span> <span class="s">145</span>
<span class="s">xy_color</span><span class="pi">:</span> <span class="pi">[</span> <span class="nv">0.5529</span><span class="pi">,</span> <span class="nv">0.4107</span> <span class="pi">]</span>
</code></pre>
</div>
<h4><a class="title-link" name="automation" href="#automation"></a> Automation</h4>
<p>The paused/stopped state is best matched using “from: playing”. Adding in the sun condition as we only want this when its dark.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: &quot;Media player paused/stopped&quot;</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">media_player.htpc</span></span>
<span class="key">from</span>: <span class="string"><span class="content">'playing'</span></span>
<span class="key">condition</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sun.sun</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'below_horizon'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.livingroom_normal</span></span>
<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="s2">"</span><span class="s">Media</span><span class="nv"> </span><span class="s">player</span><span class="nv"> </span><span class="s">paused/stopped"</span>
<span class="s">trigger</span><span class="pi">:</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">media_player.htpc</span>
<span class="s">from</span><span class="pi">:</span> <span class="s1">'</span><span class="s">playing'</span>
<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">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sun.sun</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">below_horizon'</span>
<span class="s">action</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.livingroom_normal</span>
- <span class="string"><span class="content">alias: &quot;Media player playing&quot;</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">media_player.htpc</span></span>
<span class="key">to</span>: <span class="string"><span class="content">'playing'</span></span>
<span class="key">condition</span>:
- <span class="string"><span class="content">condition: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sun.sun</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'below_horizon'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">scene.turn_on</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">scene.livingroom_dim</span></span>
</pre></div>
</div>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Media</span><span class="nv"> </span><span class="s">player</span><span class="nv"> </span><span class="s">playing"</span>
<span class="s">trigger</span><span class="pi">:</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">media_player.htpc</span>
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">playing'</span>
<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">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sun.sun</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">below_horizon'</span>
<span class="s">action</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.livingroom_dim</span>
</code></pre>
</div>

View file

@ -91,82 +91,74 @@
<p>This requires a <a href="/components/camera.foscam/">Foscam IP Camera</a> camera with PTZ (Pan, Tilt, Zoom) and CGI functionality (<a href="http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf">Source</a>)</p>
<p>Foscam Cameras can be controlled by Home Assistant through a number of CGI commands. <br />
<p>Foscam Cameras can be controlled by Home Assistant through a number of CGI commands.
The following outlines examples of the switch, services, and scripts required to move between 2 preset destinations while controlling motion detection, but many other options of movement are provided in the Foscam CGI User Guide linked above.</p>
<p>The <code>switch.foscam_motion</code> will control whether the motion detection is on or off. This switch supports <code>statecmd</code>, which checks the current state of motion detection.</p>
<p>The <code class="highlighter-rouge">switch.foscam_motion</code> will control whether the motion detection is on or off. This switch supports <code class="highlighter-rouge">statecmd</code>, which checks the current state of motion detection.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Replace admin and password with an &quot;Admin&quot; priviledged Foscam user</span>
<span class="comment"># Replace ipaddress with the local IP address of your Foscam</span>
<span class="key">switch</span>:
<span class="key">platform</span>: <span class="string"><span class="content">command_line</span></span>
<span class="key">switches</span>:
<span class="comment">#Switch for Foscam Motion Detection</span>
<span class="key">foscam_motion</span>:
<span class="key">oncmd</span>: <span class="string"><span class="content">'curl -k &quot;https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&amp;isEnable=1&amp;usr=admin&amp;pwd=password&quot;'</span></span>
<span class="key">offcmd</span>: <span class="string"><span class="content">'curl -k &quot;https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&amp;isEnable=0&amp;usr=admin&amp;pwd=password&quot;'</span></span>
<span class="key">statecmd</span>: <span class="string"><span class="content">'curl -k --silent &quot;https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&amp;usr=admin&amp;pwd=password&quot; | grep -oP &quot;(?&lt;=isEnable&gt;).*?(?=&lt;/isEnable&gt;)&quot;'</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">''</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Replace admin and password with an "Admin" priviledged Foscam user</span>
<span class="c1"># Replace ipaddress with the local IP address of your Foscam</span>
<span class="s">switch</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
<span class="s">switches</span><span class="pi">:</span>
<span class="c1">#Switch for Foscam Motion Detection</span>
<span class="s">foscam_motion</span><span class="pi">:</span>
<span class="s">oncmd</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&amp;isEnable=1&amp;usr=admin&amp;pwd=password"'</span>
<span class="s">offcmd</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&amp;isEnable=0&amp;usr=admin&amp;pwd=password"'</span>
<span class="s">statecmd</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">--silent</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&amp;usr=admin&amp;pwd=password"</span><span class="nv"> </span><span class="s">|</span><span class="nv"> </span><span class="s">grep</span><span class="nv"> </span><span class="s">-oP</span><span class="nv"> </span><span class="s">"(?&lt;=isEnable&gt;).*?(?=&lt;/isEnable&gt;)"'</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">value</span><span class="nv"> </span><span class="s">==</span><span class="nv"> </span><span class="s">"1"</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>
<p>The service <code>shell_command.foscam_turn_off</code> sets the camera to point down and away to indicate it is not recording, and <code>shell_command.foscam_turn_on</code> sets the camera to point where Id like to record. h of these services require preset points to be added to your camera. See source above for additional information.</p>
<p>The service <code class="highlighter-rouge">shell_command.foscam_turn_off</code> sets the camera to point down and away to indicate it is not recording, and <code class="highlighter-rouge">shell_command.foscam_turn_on</code> sets the camera to point where Id like to record. h of these services require preset points to be added to your camera. See source above for additional information.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">shell_command</span>:
<span class="comment">#Created a preset point in Foscam Web Interface named Off which essentially points the camera down and away</span>
<span class="key">foscam_turn_off</span>: <span class="string"><span class="content">'curl -k &quot;https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&amp;name=Off&amp;usr=admin&amp;pwd=password&quot;'</span></span>
<span class="comment">#Created a preset point in Foscam Web Interface named Main which points in the direction I would like to record</span>
<span class="key">foscam_turn_on</span>: <span class="string"><span class="content">'curl -k &quot;https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&amp;name=Main&amp;usr=admin&amp;pwd=password&quot;'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">shell_command</span><span class="pi">:</span>
<span class="c1">#Created a preset point in Foscam Web Interface named Off which essentially points the camera down and away</span>
<span class="s">foscam_turn_off</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&amp;name=Off&amp;usr=admin&amp;pwd=password"'</span>
<span class="c1">#Created a preset point in Foscam Web Interface named Main which points in the direction I would like to record</span>
<span class="s">foscam_turn_on</span><span class="pi">:</span> <span class="s1">'</span><span class="s">curl</span><span class="nv"> </span><span class="s">-k</span><span class="nv"> </span><span class="s">"https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&amp;name=Main&amp;usr=admin&amp;pwd=password"'</span>
</code></pre>
</div>
<p>The <code>script.foscam_off</code> and <code>script.foscam_on</code> can be used to set the motion detection appropriately, and then move the camera. These scripts can be called as part of an automation with <code>device_tracker</code> triggers to set <code>home</code> and <code>not_home</code> modes for your Foscam and disable motion detection recording while <code>home</code>.</p>
<p>The <code class="highlighter-rouge">script.foscam_off</code> and <code class="highlighter-rouge">script.foscam_on</code> can be used to set the motion detection appropriately, and then move the camera. These scripts can be called as part of an automation with <code class="highlighter-rouge">device_tracker</code> triggers to set <code class="highlighter-rouge">home</code> and <code class="highlighter-rouge">not_home</code> modes for your Foscam and disable motion detection recording while <code class="highlighter-rouge">home</code>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">script</span>:
<span class="key">foscam_off</span>:
<span class="key">sequence</span>:
- <span class="string"><span class="content">service: switch.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.foscam_motion</span></span>
- <span class="string"><span class="content">service: shell_command.foscam_turn_off</span></span>
<span class="key">foscam_on</span>:
<span class="key">sequence</span>:
- <span class="string"><span class="content">service: switch.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.foscam_motion</span></span>
- <span class="string"><span class="content">service: shell_command.foscam_turn_on</span></span>
- <span class="string"><span class="content">service: switch.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.foscam_motion</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">script</span><span class="pi">:</span>
<span class="s">foscam_off</span><span class="pi">:</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.foscam_motion</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">shell_command.foscam_turn_off</span>
<span class="s">foscam_on</span><span class="pi">:</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">switch.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">switch.foscam_motion</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">shell_command.foscam_turn_on</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">switch.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">switch.foscam_motion</span>
</code></pre>
</div>
<p>To automate Foscam being set to “on” (facing the correct way with motion sensor on), I used the following simple automation:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: Set Foscam to Away Mode when I leave home</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.family</span></span>
<span class="key">from</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">script.foscam_on</span></span>
- <span class="string"><span class="content">alias: Set Foscam to Home Mode when I arrive Home</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.family</span></span>
<span class="key">to</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">script.foscam_off</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="s">Set Foscam to Away Mode when I leave home</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.family</span>
<span class="s">from</span><span class="pi">:</span> <span class="s1">'</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">script.foscam_on</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Set Foscam to Home Mode when I arrive Home</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.family</span>
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</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">script.foscam_off</span>
</code></pre>
</div>

View file

@ -95,27 +95,23 @@
<p>The very first step is to install the requirement to run Jupyter Notebooks.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ pip3 install jupyter matplotlib
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>pip3 install jupyter matplotlib
</code></pre>
</div>
<p class="note warning">
Certain notebooks hosted in the <a href="https://github.com/home-assistant/home-assistant-notebooks">Home Assistant notebooks repository</a> require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks install Home Assistant with <code>$ pip3 install homeassistant</code> as well.
Certain notebooks hosted in the <a href="https://github.com/home-assistant/home-assistant-notebooks">Home Assistant notebooks repository</a> require access to a running Home Assistant instance or parts of a Home Assistant installation. If you want to run those notebooks install Home Assistant with <code class="highlighter-rouge">$ pip3 install homeassistant</code> as well.
</p>
<p>Now you are able to start the application.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ jupyter notebook
[I 17:22:18.081 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
[I 17:22:18.921 NotebookApp] Serving notebooks from local directory: /home/fabaff/home-assistant
[I 17:22:18.921 NotebookApp] 0 active kernels
[I 17:22:18.921 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
[I 17:22:18.922 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>jupyter notebook
<span class="o">[</span>I 17:22:18.081 NotebookApp] Writing notebook server cookie secret to /run/user/1000/jupyter/notebook_cookie_secret
<span class="o">[</span>I 17:22:18.921 NotebookApp] Serving notebooks from <span class="nb">local </span>directory: /home/fabaff/home-assistant
<span class="o">[</span>I 17:22:18.921 NotebookApp] 0 active kernels
<span class="o">[</span>I 17:22:18.921 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/
<span class="o">[</span>I 17:22:18.922 NotebookApp] Use Control-C to stop this server and shut down all kernels <span class="o">(</span>twice to skip confirmation<span class="o">)</span>.
</code></pre>
</div>
<p>Open <a href="http://localhost:8888/">http://localhost:8888/</a> in your browser. Press “New” -&gt; “Python3” to open a new notebook.</p>

View file

@ -91,25 +91,23 @@
<p>The following example sends a notification via XMPP if a new Home Assistant release is available:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">notify</span>:
- <span class="string"><span class="content">platform: xmpp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">jabber</span></span>
<span class="key">sender</span>: <span class="string"><span class="content">sender@jabber.org</span></span>
<span class="key">password</span>: <span class="type">!secret</span> <span class="string"><span class="content">xmpp_password</span></span>
<span class="key">recipient</span>: <span class="string"><span class="content">recipient@jabber.org</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">notify</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">xmpp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">jabber</span>
<span class="s">sender</span><span class="pi">:</span> <span class="s">sender@jabber.org</span>
<span class="s">password</span><span class="pi">:</span> <span class="kt">!secret</span> <span class="s">xmpp_password</span>
<span class="s">recipient</span><span class="pi">:</span> <span class="s">recipient@jabber.org</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: Update notifications</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">updater.updater</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.jabber</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'There is a new Home Assistant release available.'</span></span>
</pre></div>
</div>
<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">Update notifications</span>
<span class="s">trigger</span><span class="pi">:</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">updater.updater</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.jabber</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">There</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">a</span><span class="nv"> </span><span class="s">new</span><span class="nv"> </span><span class="s">Home</span><span class="nv"> </span><span class="s">Assistant</span><span class="nv"> </span><span class="s">release</span><span class="nv"> </span><span class="s">available.'</span>
</code></pre>
</div>

View file

@ -91,43 +91,39 @@
<p>The following example sends a notification via pushbullet if a sensor is over a critical value:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>
<span class="key">notify me</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">API_KEY_HERE</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="content">mypushbullet</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code>
<span class="s">notify me</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">API_KEY_HERE"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">mypushbullet</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: FanOn</span></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.furnace</span></span>
<span class="key">above</span>: <span class="string"><span class="content">2</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.mypushbullet</span></span>
<span class="key">data</span>:
<span class="key">title</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Furnace fan is running</span><span class="delimiter">&quot;</span></span>
<span class="key">message</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Fan running because current is {{ states.sensor.furnace.state }} amps</span><span class="delimiter">&quot;</span></span>
</pre></div>
</div>
<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">FanOn</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.furnace</span>
<span class="s">above</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.mypushbullet</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Furnace</span><span class="nv"> </span><span class="s">fan</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">running"</span>
<span class="s">message</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Fan</span><span class="nv"> </span><span class="s">running</span><span class="nv"> </span><span class="s">because</span><span class="nv"> </span><span class="s">current</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">{{</span><span class="nv"> </span><span class="s">states.sensor.furnace.state</span><span class="nv"> </span><span class="s">}}</span><span class="nv"> </span><span class="s">amps"</span>
</code></pre>
</div>
<p>If you also want a notification when it drops back down below that limit, you could add this as well:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">alias: FanOff</span></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.furnace</span></span>
<span class="key">below</span>: <span class="string"><span class="content">2</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.mypushbullet</span></span>
<span class="key">data</span>:
<span class="key">title</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Furnace fan is stopped</span><span class="delimiter">&quot;</span></span>
<span class="key">message</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Fan stopped because current is {{ states.sensor.furnace.state }} amps</span><span class="delimiter">&quot;</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">FanOff</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.furnace</span>
<span class="s">below</span><span class="pi">:</span> <span class="s">2</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.mypushbullet</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">title</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Furnace</span><span class="nv"> </span><span class="s">fan</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">stopped"</span>
<span class="s">message</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Fan</span><span class="nv"> </span><span class="s">stopped</span><span class="nv"> </span><span class="s">because</span><span class="nv"> </span><span class="s">current</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">{{</span><span class="nv"> </span><span class="s">states.sensor.furnace.state</span><span class="nv"> </span><span class="s">}}</span><span class="nv"> </span><span class="s">amps"</span>
</code></pre>
</div>

View file

@ -89,167 +89,163 @@
<hr class="divider">
<p>This example uses an <a href="/components/input_select/"><code>input_select</code></a> element to pick which mp3 file to play on a <a href="components/media_player.cast/">Chromecast</a>.</p>
<p>This example uses an <a href="/components/input_select/"><code class="highlighter-rouge">input_select</code></a> element to pick which mp3 file to play on a <a href="components/media_player.cast/">Chromecast</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Define our dropdown list</span>
<span class="key">input_select</span>:
<span class="key">lullaby</span>:
<span class="key">name</span>: <span class="string"><span class="content">Lullaby</span></span>
<span class="key">options</span>:
- <span class="string"><span class="content">Rain</span></span>
- <span class="string"><span class="content">Babbling Brook</span></span>
- <span class="string"><span class="content">None</span></span>
<span class="key">initial</span>: <span class="string"><span class="content">None</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:weather-rainy</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Define our dropdown list</span>
<span class="s">input_select</span><span class="pi">:</span>
<span class="s">lullaby</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Lullaby</span>
<span class="s">options</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">Rain</span>
<span class="pi">-</span> <span class="s">Babbling Brook</span>
<span class="pi">-</span> <span class="s">None</span>
<span class="s">initial</span><span class="pi">:</span> <span class="s">None</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:weather-rainy</span>
<span class="comment"># Define our media player</span>
<span class="key">media_player</span>:
- <span class="string"><span class="content">platform: cast</span></span>
<span class="key">host</span>: <span class="string"><span class="content">chromecast-nursery</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Nursery</span></span>
<span class="c1"># Define our media player</span>
<span class="s">media_player</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">cast</span>
<span class="s">host</span><span class="pi">:</span> <span class="s">chromecast-nursery</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Nursery</span>
<span class="key">automation</span>:
<span class="comment"># If you select &quot;Rain&quot;, play the &quot;rain.mp3&quot; file</span>
- <span class="string"><span class="content">alias: Play Rain Lullaby</span></span>
<span class="s">automation</span><span class="pi">:</span>
<span class="c1"># If you select "Rain", play the "rain.mp3" file</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Play Rain Lullaby</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">input_select.lullaby</span></span>
<span class="key">to</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Rain</span><span class="delimiter">&quot;</span></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">input_select.lullaby</span>
<span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Rain"</span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">media_player.play_media</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">media_player.nursery</span></span>
<span class="key">media_id</span>: <span class="string"><span class="content">http://fileserver/rain.mp3</span></span>
<span class="key">media_type</span>: <span class="string"><span class="content">audio/mp4</span></span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">media_player.play_media</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">media_player.nursery</span>
<span class="s">media_id</span><span class="pi">:</span> <span class="s">http://fileserver/rain.mp3</span>
<span class="s">media_type</span><span class="pi">:</span> <span class="s">audio/mp4</span>
<span class="comment"># If you select &quot;Babbling Brook&quot;, play the &quot;babbling_brook.mp3&quot; file</span>
- <span class="string"><span class="content">alias: Play Babbling Brook Lullaby</span></span>
<span class="c1"># If you select "Babbling Brook", play the "babbling_brook.mp3" file</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Play Babbling Brook Lullaby</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">input_select.lullaby</span></span>
<span class="key">to</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Babbling Brook</span><span class="delimiter">&quot;</span></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">input_select.lullaby</span>
<span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Babbling</span><span class="nv"> </span><span class="s">Brook"</span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">media_player.play_media</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">media_player.nursery</span></span>
<span class="key">media_id</span>: <span class="string"><span class="content">http://fileserver/babbling_brook.mp3</span></span>
<span class="key">media_type</span>: <span class="string"><span class="content">audio/mp4</span></span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">media_player.play_media</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">media_player.nursery</span>
<span class="s">media_id</span><span class="pi">:</span> <span class="s">http://fileserver/babbling_brook.mp3</span>
<span class="s">media_type</span><span class="pi">:</span> <span class="s">audio/mp4</span>
<span class="comment"># If you select &quot;None, turn the Chromecast off</span>
- <span class="string"><span class="content">alias: Stop the Lullaby</span></span>
<span class="c1"># If you select "None, turn the Chromecast off</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Stop the Lullaby</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">input_select.lullaby</span></span>
<span class="key">to</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">None</span><span class="delimiter">&quot;</span></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">input_select.lullaby</span>
<span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">None"</span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">media_player.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">media_player.nursery</span></span>
</pre></div>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">media_player.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">media_player.nursery</span>
</code></pre>
</div>
</div>
<p>A little bit more complex example that uses <a href="/components/input_select/"><code>input_select</code></a> and template to decide what to play, and which <a href="components/media_player.cast/">Chromecast</a> to play on.</p>
<p>A little bit more complex example that uses <a href="/components/input_select/"><code class="highlighter-rouge">input_select</code></a> and template to decide what to play, and which <a href="components/media_player.cast/">Chromecast</a> to play on.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">input_select</span>:
<span class="key">radio_station</span>:
<span class="key">name</span>: <span class="string"><span class="content">Radio Station</span></span>
<span class="key">options</span>:
- <span class="string"><span class="content">Z88.3</span></span>
- <span class="string"><span class="content">Virgin</span></span>
- <span class="string"><span class="content">RMC</span></span>
- <span class="string"><span class="content">rmcHQ</span></span>
- <span class="string"><span class="content">105</span></span>
- <span class="string"><span class="content">None</span></span>
<span class="key">initial</span>: <span class="string"><span class="content">None</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:radio</span></span>
<span class="key">radio_player</span>:
<span class="key">name</span>: <span class="string"><span class="content">Radio Player</span></span>
<span class="key">options</span>:
- <span class="string"><span class="content">Mansarda</span></span>
- <span class="string"><span class="content">Doccia</span></span>
- <span class="string"><span class="content">Bed</span></span>
- <span class="string"><span class="content">Bath</span></span>
- <span class="string"><span class="content">Salotto</span></span>
- <span class="string"><span class="content">Salotto Video</span></span>
- <span class="string"><span class="content">None</span></span>
<span class="key">initial</span>: <span class="string"><span class="content">None</span></span>
<span class="key">icon</span>: <span class="string"><span class="content">mdi:airplay</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">input_select</span><span class="pi">:</span>
<span class="s">radio_station</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Radio Station</span>
<span class="s">options</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">Z88.3</span>
<span class="pi">-</span> <span class="s">Virgin</span>
<span class="pi">-</span> <span class="s">RMC</span>
<span class="pi">-</span> <span class="s">rmcHQ</span>
<span class="pi">-</span> <span class="s">105</span>
<span class="pi">-</span> <span class="s">None</span>
<span class="s">initial</span><span class="pi">:</span> <span class="s">None</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:radio</span>
<span class="s">radio_player</span><span class="pi">:</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Radio Player</span>
<span class="s">options</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">Mansarda</span>
<span class="pi">-</span> <span class="s">Doccia</span>
<span class="pi">-</span> <span class="s">Bed</span>
<span class="pi">-</span> <span class="s">Bath</span>
<span class="pi">-</span> <span class="s">Salotto</span>
<span class="pi">-</span> <span class="s">Salotto Video</span>
<span class="pi">-</span> <span class="s">None</span>
<span class="s">initial</span><span class="pi">:</span> <span class="s">None</span>
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:airplay</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: Stop Streaming Radio</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">input_select.radio_station</span></span>
<span class="key">to</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">None</span><span class="delimiter">&quot;</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">media_player.turn_off</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(&quot;input_select.radio_player&quot;, &quot;Mansarda&quot;) %}
media_player.bed_2
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Doccia&quot;) %}
media_player.bed_3
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Bed&quot;) %}
media_player.bed
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Bath&quot;) %}
media_player.bath
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Salotto&quot;) %}
media_player.salotto
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Salotto Video&quot;) %}
media_player.salotto_video
{% else %}
none
{% endif %}</span></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">Stop Streaming Radio</span>
<span class="s">trigger</span><span class="pi">:</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">input_select.radio_station</span>
<span class="s">to</span><span class="pi">:</span> <span class="s2">"</span><span class="s">None"</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">media_player.turn_off</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("input_select.radio_player", "Mansarda") %}</span>
<span class="no">media_player.bed_2</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Doccia") %}</span>
<span class="no">media_player.bed_3</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Bed") %}</span>
<span class="no">media_player.bed</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Bath") %}</span>
<span class="no">media_player.bath</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Salotto") %}</span>
<span class="no">media_player.salotto</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Salotto Video") %}</span>
<span class="no">media_player.salotto_video</span>
<span class="no">{% else %}</span>
<span class="no">none</span>
<span class="no">{% endif %}</span>
- <span class="string"><span class="content">alias: Stream Radio - Template</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">input_select.radio_station</span></span>
<span class="key">action</span>:
- <span class="string"><span class="content">service: media_player.play_media</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(&quot;input_select.radio_player&quot;, &quot;Mansarda&quot;) %}
media_player.bed_2
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Doccia&quot;) %}
media_player.bed_3
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Bed&quot;) %}
media_player.bed
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Bath&quot;) %}
media_player.bath
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Salotto&quot;) %}
media_player.salotto
{%-elif is_state(&quot;input_select.radio_player&quot;, &quot;Salotto Video&quot;) %}
media_player.salotto_video
{% else %}
none
{% endif %}</span></span>
<span class="key">media_content_id</span>: <span class="string"><span class="delimiter">&gt;</span><span class="content">
{% if is_state(&quot;input_select.radio_station&quot;, &quot;Z88.3&quot;) %}
http://ice.zradio.org/z/high.mp3
{%-elif is_state(&quot;input_select.radio_station&quot;, &quot;Virgin&quot;) %}
http://icecast.unitedradio.it/Virgin.mp3
{%-elif is_state(&quot;input_select.radio_station&quot;, &quot;RMC&quot;) %}
http://icecast.unitedradio.it/RMC.mp3
{%-elif is_state(&quot;input_select.radio_station&quot;, &quot;rmcHQ&quot;) %}
http://icecast.unitedradio.it/rmcHQ.mp3
{%-elif is_state(&quot;input_select.radio_station&quot;, &quot;105&quot;) %}
http://icecast.unitedradio.it/Radio105.mp3
{% else %}
none
{% endif %}</span></span>
<span class="key">media_content_type</span>: <span class="string"><span class="content">'audio/mp4'</span></span>
</pre></div>
</div>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Stream Radio - Template</span>
<span class="s">trigger</span><span class="pi">:</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">input_select.radio_station</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">media_player.play_media</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("input_select.radio_player", "Mansarda") %}</span>
<span class="no">media_player.bed_2</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Doccia") %}</span>
<span class="no">media_player.bed_3</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Bed") %}</span>
<span class="no">media_player.bed</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Bath") %}</span>
<span class="no">media_player.bath</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Salotto") %}</span>
<span class="no">media_player.salotto</span>
<span class="no">{%-elif is_state("input_select.radio_player", "Salotto Video") %}</span>
<span class="no">media_player.salotto_video</span>
<span class="no">{% else %}</span>
<span class="no">none</span>
<span class="no">{% endif %}</span>
<span class="s">media_content_id</span><span class="pi">:</span> <span class="pi">&gt;</span>
<span class="no">{% if is_state("input_select.radio_station", "Z88.3") %}</span>
<span class="no">http://ice.zradio.org/z/high.mp3</span>
<span class="no">{%-elif is_state("input_select.radio_station", "Virgin") %}</span>
<span class="no">http://icecast.unitedradio.it/Virgin.mp3</span>
<span class="no">{%-elif is_state("input_select.radio_station", "RMC") %}</span>
<span class="no">http://icecast.unitedradio.it/RMC.mp3</span>
<span class="no">{%-elif is_state("input_select.radio_station", "rmcHQ") %}</span>
<span class="no">http://icecast.unitedradio.it/rmcHQ.mp3</span>
<span class="no">{%-elif is_state("input_select.radio_station", "105") %}</span>
<span class="no">http://icecast.unitedradio.it/Radio105.mp3</span>
<span class="no">{% else %}</span>
<span class="no">none</span>
<span class="no">{% endif %}</span>
<span class="s">media_content_type</span><span class="pi">:</span> <span class="s1">'</span><span class="s">audio/mp4'</span>
</code></pre>
</div>

View file

@ -89,53 +89,47 @@
<hr class="divider">
<p>This is a simple “hello world” example to show the basics of registering a service. To use this example, create the file <code>&lt;config dir&gt;/custom_components/hello_service.py</code> and copy the below example code.</p>
<p>This is a simple “hello world” example to show the basics of registering a service. To use this example, create the file <code class="highlighter-rouge">&lt;config dir&gt;/custom_components/hello_service.py</code> and copy the below example code.</p>
<p>Services can be called from automation and from the service “Developer tools” in the frontend.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># The domain of your component. Should be equal to the name of your component.</span>
DOMAIN = <span class="string"><span class="delimiter">'</span><span class="content">hello_service</span><span class="delimiter">'</span></span>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># The domain of your component. Should be equal to the name of your component.</span>
<span class="n">DOMAIN</span> <span class="o">=</span> <span class="s">'hello_service'</span>
ATTR_NAME = <span class="string"><span class="delimiter">'</span><span class="content">name</span><span class="delimiter">'</span></span>
DEFAULT_NAME = <span class="string"><span class="delimiter">'</span><span class="content">World</span><span class="delimiter">'</span></span>
<span class="n">ATTR_NAME</span> <span class="o">=</span> <span class="s">'name'</span>
<span class="n">DEFAULT_NAME</span> <span class="o">=</span> <span class="s">'World'</span>
<span class="keyword">def</span> <span class="function">setup</span>(hass, config):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Setup is called when Home Assistant is loading our component.</span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">config</span><span class="p">):</span>
<span class="s">"""Setup is called when Home Assistant is loading our component."""</span>
<span class="keyword">def</span> <span class="function">handle_hello</span>(call):
name = call.data.get(ATTR_NAME, DEFAULT_NAME)
<span class="k">def</span> <span class="nf">handle_hello</span><span class="p">(</span><span class="n">call</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">call</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">ATTR_NAME</span><span class="p">,</span> <span class="n">DEFAULT_NAME</span><span class="p">)</span>
hass.states.set(<span class="string"><span class="delimiter">'</span><span class="content">hello_service.hello</span><span class="delimiter">'</span></span>, name)
<span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="nb">set</span><span class="p">(</span><span class="s">'hello_service.hello'</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
hass.services.register(DOMAIN, <span class="string"><span class="delimiter">'</span><span class="content">hello</span><span class="delimiter">'</span></span>, handle_hello)
<span class="n">hass</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">DOMAIN</span><span class="p">,</span> <span class="s">'hello'</span><span class="p">,</span> <span class="n">handle_hello</span><span class="p">)</span>
<span class="comment"># Return boolean to indicate that initialization was successfully.</span>
<span class="keyword">return</span> <span class="predefined-constant">True</span>
</pre></div>
</div>
<span class="c"># Return boolean to indicate that initialization was successfully.</span>
<span class="k">return</span> <span class="bp">True</span>
</code></pre>
</div>
<p>Load the component by adding the following to your <code>configuration.yaml</code>. When your component is loaded, a new service should be available to call.</p>
<p>Load the component by adding the following to your <code class="highlighter-rouge">configuration.yaml</code>. When your component is loaded, a new service should be available to call.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># configuration.yaml entry</span>
<span class="key">hello_service</span>:
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># configuration.yaml entry</span>
<span class="s">hello_service</span><span class="pi">:</span>
</code></pre>
</div>
<p>Open the frontend and in the sidebar, click the first icon in the developer tool section. This will open the Call Service developer tool. On the right, find your service and click on it. This will automatically fill in the correct values.</p>
<p>Pressing “Call Service” will now call your service without any parameters. This will cause your service to create a state with the default name World. If you want to specify the name, you have to specify parameters. Add the following JSON as Service Data and press “Call Service again”.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>{
<span class="key"><span class="delimiter">&quot;</span><span class="content">name</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Planet</span><span class="delimiter">&quot;</span></span>
}
</pre></div>
</div>
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Planet"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
</div>
<p>The service will now overwrite the previous state with “Planet”.</p>

View file

@ -95,29 +95,27 @@
<h2><a class="title-link" name="component" href="#component"></a> Component</h2>
<p>To get started, create the file <code>&lt;config dir&gt;/custom_components/hello_state.py</code> and copy the below example code.</p>
<p>To get started, create the file <code class="highlighter-rouge">&lt;config dir&gt;/custom_components/hello_state.py</code> and copy the below example code.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">
</span><span class="content">Support for showing text in the frontend.</span><span class="content">
</span><span class="content">
</span><span class="content">For more details about this component, please refer to the documentation at</span><span class="content">
</span><span class="content">https://home-assistant.io/components/hello_state/</span><span class="content">
</span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="keyword">import</span> <span class="include">logging</span>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="s">"""
Support for showing text in the frontend.
_LOGGER = logging.getLogger(__name__)
For more details about this component, please refer to the documentation at
https://home-assistant.io/components/hello_state/
"""</span>
<span class="kn">import</span> <span class="nn">logging</span>
DOMAIN = <span class="string"><span class="delimiter">'</span><span class="content">hello_state</span><span class="delimiter">'</span></span>
DEPENDENCIES = []
<span class="n">_LOGGER</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
<span class="keyword">def</span> <span class="function">setup</span>(hass, config=<span class="predefined-constant">None</span>):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Setup the Hello State component. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
_LOGGER.info(<span class="string"><span class="delimiter">&quot;</span><span class="content">The 'hello state' component is ready!</span><span class="delimiter">&quot;</span></span>)
<span class="n">DOMAIN</span> <span class="o">=</span> <span class="s">'hello_state'</span>
<span class="n">DEPENDENCIES</span> <span class="o">=</span> <span class="p">[]</span>
<span class="keyword">return</span> <span class="predefined-constant">True</span>
</pre></div>
</div>
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">config</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="s">"""Setup the Hello State component. """</span>
<span class="n">_LOGGER</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s">"The 'hello state' component is ready!"</span><span class="p">)</span>
<span class="k">return</span> <span class="bp">True</span>
</code></pre>
</div>
<ol>
@ -126,100 +124,88 @@ DEPENDENCIES = []
<li>The component name is equal to the domain name.</li>
<li>At the moment this component has no dependencies. For detail check <a href="/developers/creating_components/#dependencies">dependencies</a> section.</li>
<li>
<p>The <code>setup</code> function will take care of the initialization of our component.<br />
<p>The <code class="highlighter-rouge">setup</code> function will take care of the initialization of our component.
The component will only write a log message. Keep in mind for later that you have several options for the severity:</p>
<ul>
<li><code>_LOGGER.info(msg)</code></li>
<li><code>_LOGGER.warning(msg)</code></li>
<li><code>_LOGGER.error(msg)</code></li>
<li><code>_LOGGER.critical(msg)</code></li>
<li><code>_LOGGER.exception(msg)</code></li>
<li><code class="highlighter-rouge">_LOGGER.info(msg)</code></li>
<li><code class="highlighter-rouge">_LOGGER.warning(msg)</code></li>
<li><code class="highlighter-rouge">_LOGGER.error(msg)</code></li>
<li><code class="highlighter-rouge">_LOGGER.critical(msg)</code></li>
<li><code class="highlighter-rouge">_LOGGER.exception(msg)</code></li>
</ul>
</li>
<li>We return <code>True</code> if everything is ok.</li>
<li>We return <code class="highlighter-rouge">True</code> if everything is ok.</li>
</ol>
<p>Add the component to your <code>configuration.yaml</code> file.</p>
<p>Add the component to your <code class="highlighter-rouge">configuration.yaml</code> file.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">hello_state</span>:
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">hello_state</span><span class="pi">:</span>
</code></pre>
</div>
<p>After a start or a restart of Home Assistant the component will create an entry in the log.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>16-03-12 14:16:42 INFO (MainThread) [custom_components.hello_state] The 'hello state' component is ready!
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>16-03-12 14:16:42 INFO <span class="o">(</span>MainThread<span class="o">)</span> <span class="o">[</span>custom_components.hello_state] The <span class="s1">'hello state'</span> component is ready!
</code></pre>
</div>
<p>The next step is the introduction of configuration options. Most configuration details are coming out of the <code>configuration.yaml</code> file. To do that we need to update the <code>def setup()</code> method to accept configuration information and access the configuration variable in the <code>setup</code> method.</p>
<p>The next step is the introduction of configuration options. Most configuration details are coming out of the <code class="highlighter-rouge">configuration.yaml</code> file. To do that we need to update the <code class="highlighter-rouge">def setup()</code> method to accept configuration information and access the configuration variable in the <code class="highlighter-rouge">setup</code> method.</p>
<p>More details about this topic can be found in the <a href="/developers/creating_components/#config-user-given-configuration">User given configuration</a> section.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="keyword">import</span> <span class="include">logging</span>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">logging</span>
_LOGGER = logging.getLogger(__name__)
<span class="n">_LOGGER</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
DOMAIN = <span class="string"><span class="delimiter">'</span><span class="content">hello_state</span><span class="delimiter">'</span></span>
DEPENDENCIES = []
<span class="n">DOMAIN</span> <span class="o">=</span> <span class="s">'hello_state'</span>
<span class="n">DEPENDENCIES</span> <span class="o">=</span> <span class="p">[]</span>
CONF_TEXT = <span class="string"><span class="delimiter">'</span><span class="content">text</span><span class="delimiter">'</span></span>
DEFAULT_TEXT = <span class="string"><span class="delimiter">'</span><span class="content">No text!</span><span class="delimiter">'</span></span>
<span class="n">CONF_TEXT</span> <span class="o">=</span> <span class="s">'text'</span>
<span class="n">DEFAULT_TEXT</span> <span class="o">=</span> <span class="s">'No text!'</span>
<span class="keyword">def</span> <span class="function">setup</span>(hass, config):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Setup the Hello State component. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="comment"># Get the text from the configuration. Use DEFAULT_TEXT if no name is provided.</span>
text = config[DOMAIN].get(CONF_TEXT, DEFAULT_TEXT)
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">config</span><span class="p">):</span>
<span class="s">"""Setup the Hello State component. """</span>
<span class="c"># Get the text from the configuration. Use DEFAULT_TEXT if no name is provided.</span>
<span class="n">text</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="n">DOMAIN</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">CONF_TEXT</span><span class="p">,</span> <span class="n">DEFAULT_TEXT</span><span class="p">)</span>
<span class="comment"># States are in the format DOMAIN.OBJECT_ID</span>
hass.states.set(<span class="string"><span class="delimiter">'</span><span class="content">hello_state.Hello_State</span><span class="delimiter">'</span></span>, text)
<span class="c"># States are in the format DOMAIN.OBJECT_ID</span>
<span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="nb">set</span><span class="p">(</span><span class="s">'hello_state.Hello_State'</span><span class="p">,</span> <span class="n">text</span><span class="p">)</span>
<span class="keyword">return</span> <span class="predefined-constant">True</span>
</pre></div>
</div>
<span class="k">return</span> <span class="bp">True</span>
</code></pre>
</div>
<p>To add the latest feature of our component, update the entry in your <code>configuration.yaml</code> file.</p>
<p>To add the latest feature of our component, update the entry in your <code class="highlighter-rouge">configuration.yaml</code> file.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">hello_state</span>:
<span class="key">text</span>: <span class="string"><span class="content">'Hello, World!'</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">hello_state</span><span class="pi">:</span>
<span class="s">text</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Hello,</span><span class="nv"> </span><span class="s">World!'</span>
</code></pre>
</div>
<p>Thanks to <code>DEFAULT_TEXT</code> variable the component will launch even if no <code>text:</code> field is used in the <code>configuration.yaml</code> file. Quite often there are variables which are required. Its important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use the <code>validate_config</code> function as a helper to achive this. The next listing shows the essential parts.</p>
<p>Thanks to <code class="highlighter-rouge">DEFAULT_TEXT</code> variable the component will launch even if no <code class="highlighter-rouge">text:</code> field is used in the <code class="highlighter-rouge">configuration.yaml</code> file. Quite often there are variables which are required. Its important to check if all mandatory configuration variables are provided. If not, the setup should fail. We will use the <code class="highlighter-rouge">validate_config</code> function as a helper to achive this. The next listing shows the essential parts.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="keyword">from</span> <span class="include">homeassistant.helpers</span> <span class="keyword">import</span> <span class="include">validate_config</span>
[...]
<span class="keyword">if</span> <span class="keyword">not</span> validate_config(config, {DOMAIN: [CONF_TEXT]}, _LOGGER):
<span class="keyword">return</span> <span class="predefined-constant">False</span>
</pre></div>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">homeassistant.helpers</span> <span class="kn">import</span> <span class="n">validate_config</span>
<span class="p">[</span><span class="o">...</span><span class="p">]</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">validate_config</span><span class="p">(</span><span class="n">config</span><span class="p">,</span> <span class="p">{</span><span class="n">DOMAIN</span><span class="p">:</span> <span class="p">[</span><span class="n">CONF_TEXT</span><span class="p">]},</span> <span class="n">_LOGGER</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">False</span>
</code></pre>
</div>
<p>If <code>text:</code> is missing, there will be a warning in the log file.</p>
<p>If <code class="highlighter-rouge">text:</code> is missing, there will be a warning in the log file.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>16-03-12 14:37:37 ERROR (MainThread) [custom_components.hello_state] Missing required configuration items in hello_state: text
16-03-12 14:37:37 ERROR (MainThread) [homeassistant.bootstrap] component hello_state failed to initialize
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>16-03-12 14:37:37 ERROR <span class="o">(</span>MainThread<span class="o">)</span> <span class="o">[</span>custom_components.hello_state] Missing required configuration items <span class="k">in </span>hello_state: text
16-03-12 14:37:37 ERROR <span class="o">(</span>MainThread<span class="o">)</span> <span class="o">[</span>homeassistant.bootstrap] component hello_state failed to initialize
</code></pre>
</div>
<p>After a start or a restart of Home Assistant the component will be visible in the frontend if the <code>configuration.yaml</code> file is up-to-date.</p>
<p>After a start or a restart of Home Assistant the component will be visible in the frontend if the <code class="highlighter-rouge">configuration.yaml</code> file is up-to-date.</p>
<p class="img">
<img src="/images/screenshots/create-component01.png" />
</p>
<p>To get your component included in the Home Assistant releases, follow the steps described in the <a href="https://home-assistant.io/developers/#submitting-improvements">Submitting improvements</a> section. Basically you only need to move your component in the <code>homeassistant/component/</code> directory of your fork and create a Pull Request.</p>
<p>To get your component included in the Home Assistant releases, follow the steps described in the <a href="https://home-assistant.io/developers/#submitting-improvements">Submitting improvements</a> section. Basically you only need to move your component in the <code class="highlighter-rouge">homeassistant/component/</code> directory of your fork and create a Pull Request.</p>

View file

@ -93,73 +93,67 @@
This example requires you to have the <a href="/components/mqtt/">MQTT component</a> up and running.
</p>
<p>This is a simple hello world example to show the basics of using MQTT in a custom component. To use this example, create the file <code>&lt;config dir&gt;/custom_components/hello_mqtt.py</code> and copy the below example code.</p>
<p>This is a simple hello world example to show the basics of using MQTT in a custom component. To use this example, create the file <code class="highlighter-rouge">&lt;config dir&gt;/custom_components/hello_mqtt.py</code> and copy the below example code.</p>
<p>This example follows a topic on MQTT and updates the state of an entity to the last message received on that topic. It will also register a service set_state that will publish a message to the MQTT topic that were listening to.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="keyword">import</span> <span class="include">homeassistant.loader</span> <span class="keyword">as</span> loader
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">homeassistant.loader</span> <span class="kn">as</span> <span class="nn">loader</span>
<span class="comment"># The domain of your component. Should be equal to the name of your component.</span>
DOMAIN = <span class="string"><span class="delimiter">&quot;</span><span class="content">hello_mqtt</span><span class="delimiter">&quot;</span></span>
<span class="c"># The domain of your component. Should be equal to the name of your component.</span>
<span class="n">DOMAIN</span> <span class="o">=</span> <span class="s">"hello_mqtt"</span>
<span class="comment"># List of component names (string) your component depends upon.</span>
DEPENDENCIES = [<span class="string"><span class="delimiter">'</span><span class="content">mqtt</span><span class="delimiter">'</span></span>]
<span class="c"># List of component names (string) your component depends upon.</span>
<span class="n">DEPENDENCIES</span> <span class="o">=</span> <span class="p">[</span><span class="s">'mqtt'</span><span class="p">]</span>
CONF_TOPIC = <span class="string"><span class="delimiter">'</span><span class="content">topic</span><span class="delimiter">'</span></span>
DEFAULT_TOPIC = <span class="string"><span class="delimiter">'</span><span class="content">home-assistant/hello_mqtt</span><span class="delimiter">'</span></span>
<span class="n">CONF_TOPIC</span> <span class="o">=</span> <span class="s">'topic'</span>
<span class="n">DEFAULT_TOPIC</span> <span class="o">=</span> <span class="s">'home-assistant/hello_mqtt'</span>
<span class="keyword">def</span> <span class="function">setup</span>(hass, config):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Setup the Hello MQTT component.</span><span class="delimiter">&quot;&quot;&quot;</span></span>
mqtt = loader.get_component(<span class="string"><span class="delimiter">'</span><span class="content">mqtt</span><span class="delimiter">'</span></span>)
topic = config[DOMAIN].get(<span class="string"><span class="delimiter">'</span><span class="content">topic</span><span class="delimiter">'</span></span>, DEFAULT_TOPIC)
entity_id = <span class="string"><span class="delimiter">'</span><span class="content">hello_mqtt.last_message</span><span class="delimiter">'</span></span>
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">config</span><span class="p">):</span>
<span class="s">"""Setup the Hello MQTT component."""</span>
<span class="n">mqtt</span> <span class="o">=</span> <span class="n">loader</span><span class="o">.</span><span class="n">get_component</span><span class="p">(</span><span class="s">'mqtt'</span><span class="p">)</span>
<span class="n">topic</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="n">DOMAIN</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'topic'</span><span class="p">,</span> <span class="n">DEFAULT_TOPIC</span><span class="p">)</span>
<span class="n">entity_id</span> <span class="o">=</span> <span class="s">'hello_mqtt.last_message'</span>
<span class="comment"># Listener to be called when we receive a message.</span>
<span class="keyword">def</span> <span class="function">message_received</span>(topic, payload, qos):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">A new MQTT message has been received.</span><span class="delimiter">&quot;&quot;&quot;</span></span>
hass.states.set(entity_id, payload)
<span class="c"># Listener to be called when we receive a message.</span>
<span class="k">def</span> <span class="nf">message_received</span><span class="p">(</span><span class="n">topic</span><span class="p">,</span> <span class="n">payload</span><span class="p">,</span> <span class="n">qos</span><span class="p">):</span>
<span class="s">"""A new MQTT message has been received."""</span>
<span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="nb">set</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">payload</span><span class="p">)</span>
<span class="comment"># Subscribe our listener to a topic.</span>
mqtt.subscribe(hass, topic, message_received)
<span class="c"># Subscribe our listener to a topic.</span>
<span class="n">mqtt</span><span class="o">.</span><span class="n">subscribe</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">topic</span><span class="p">,</span> <span class="n">message_received</span><span class="p">)</span>
<span class="comment"># Set the intial state</span>
hass.states.set(entity_id, <span class="string"><span class="delimiter">'</span><span class="content">No messages</span><span class="delimiter">'</span></span>)
<span class="c"># Set the intial state</span>
<span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="nb">set</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="s">'No messages'</span><span class="p">)</span>
<span class="comment"># Service to publish a message on MQTT.</span>
<span class="keyword">def</span> <span class="function">set_state_service</span>(call):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Service to send a message.</span><span class="delimiter">&quot;&quot;&quot;</span></span>
mqtt.publish(hass, topic, call.data.get(<span class="string"><span class="delimiter">'</span><span class="content">new_state</span><span class="delimiter">'</span></span>))
<span class="c"># Service to publish a message on MQTT.</span>
<span class="k">def</span> <span class="nf">set_state_service</span><span class="p">(</span><span class="n">call</span><span class="p">):</span>
<span class="s">"""Service to send a message."""</span>
<span class="n">mqtt</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">topic</span><span class="p">,</span> <span class="n">call</span><span class="o">.</span><span class="n">data</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">'new_state'</span><span class="p">))</span>
<span class="comment"># Register our service with Home Assistant.</span>
hass.services.register(DOMAIN, <span class="string"><span class="delimiter">'</span><span class="content">set_state</span><span class="delimiter">'</span></span>, set_state_service)
<span class="c"># Register our service with Home Assistant.</span>
<span class="n">hass</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">register</span><span class="p">(</span><span class="n">DOMAIN</span><span class="p">,</span> <span class="s">'set_state'</span><span class="p">,</span> <span class="n">set_state_service</span><span class="p">)</span>
<span class="comment"># Return boolean to indicate that initialization was successfully.</span>
<span class="keyword">return</span> <span class="predefined-constant">True</span>
</pre></div>
</div>
<span class="c"># Return boolean to indicate that initialization was successfully.</span>
<span class="k">return</span> <span class="bp">True</span>
</code></pre>
</div>
<p>Load the component by adding the following to your <code>configuration.yaml</code>. When your component is loaded, a new entity should popup and there should be a new service available to call.</p>
<p>Load the component by adding the following to your <code class="highlighter-rouge">configuration.yaml</code>. When your component is loaded, a new entity should popup and there should be a new service available to call.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># configuration.yaml entry</span>
<span class="key">hello_mqtt</span>:
<span class="key">topic</span>: <span class="string"><span class="content">some_mqtt/topic/here</span></span>
</pre></div>
</div>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># configuration.yaml entry</span>
<span class="s">hello_mqtt</span><span class="pi">:</span>
<span class="s">topic</span><span class="pi">:</span> <span class="s">some_mqtt/topic/here</span>
</code></pre>
</div>
<p>You can call the service with example payload:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>{
<span class="key"><span class="delimiter">&quot;</span><span class="content">new_state</span><span class="delimiter">&quot;</span></span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">some new state</span><span class="delimiter">&quot;</span></span>
}
</pre></div>
</div>
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
</span><span class="nt">"new_state"</span><span class="p">:</span><span class="w"> </span><span class="s2">"some new state"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre>
</div>

View file

@ -93,15 +93,13 @@
<p>This component depends on the components <a href="/components/device_tracker/">device_tracker</a> and <a href="/components/light/">light</a> being setup.</p>
<p>To set it up, add the following lines to your <code>configuration.yaml</code> file:</p>
<p>To set it up, add the following lines to your <code class="highlighter-rouge">configuration.yaml</code> file:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">simple_alarm</span>:
<span class="key">known_light</span>: <span class="string"><span class="content">light.Bowl</span></span>
<span class="key">unknown_light</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="c1"># Example configuration.yaml entry</span>
<span class="s">simple_alarm</span><span class="pi">:</span>
<span class="s">known_light</span><span class="pi">:</span> <span class="s">light.Bowl</span>
<span class="s">unknown_light</span><span class="pi">:</span> <span class="s">group.living_room</span>
</code></pre>
</div>
<p>Configuration variables:</p>
@ -111,101 +109,99 @@
<li><strong>unknown_light</strong> (<em>Optional</em>): Which light/light group has to flash red when light turns on while no one home.</li>
</ul>
<p>Create the file <code>&lt;config dir&gt;/custom_components/simple_alarm.py</code> and copy paste the content below:</p>
<p>Create the file <code class="highlighter-rouge">&lt;config dir&gt;/custom_components/simple_alarm.py</code> and copy paste the content below:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content">Simple alarm component.</span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="keyword">import</span> <span class="include">logging</span>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="s">"""Simple alarm component."""</span>
<span class="kn">import</span> <span class="nn">logging</span>
<span class="keyword">import</span> <span class="include">homeassistant.loader</span> <span class="keyword">as</span> loader
<span class="keyword">from</span> <span class="include">homeassistant.components</span> <span class="keyword">import</span> <span class="include">device_tracker</span>, <span class="include">light</span>, <span class="include">notify</span>
<span class="keyword">from</span> <span class="include">homeassistant.helpers.event</span> <span class="keyword">import</span> <span class="include">track_state_change</span>
<span class="keyword">from</span> <span class="include">homeassistant.const</span> <span class="keyword">import</span> <span class="include">STATE_ON</span>, <span class="include">STATE_OFF</span>, <span class="include">STATE_HOME</span>, <span class="include">STATE_NOT_HOME</span>
<span class="kn">import</span> <span class="nn">homeassistant.loader</span> <span class="kn">as</span> <span class="nn">loader</span>
<span class="kn">from</span> <span class="nn">homeassistant.components</span> <span class="kn">import</span> <span class="n">device_tracker</span><span class="p">,</span> <span class="n">light</span><span class="p">,</span> <span class="n">notify</span>
<span class="kn">from</span> <span class="nn">homeassistant.helpers.event</span> <span class="kn">import</span> <span class="n">track_state_change</span>
<span class="kn">from</span> <span class="nn">homeassistant.const</span> <span class="kn">import</span> <span class="n">STATE_ON</span><span class="p">,</span> <span class="n">STATE_OFF</span><span class="p">,</span> <span class="n">STATE_HOME</span><span class="p">,</span> <span class="n">STATE_NOT_HOME</span>
DOMAIN = <span class="string"><span class="delimiter">&quot;</span><span class="content">simple_alarm</span><span class="delimiter">&quot;</span></span>
<span class="n">DOMAIN</span> <span class="o">=</span> <span class="s">"simple_alarm"</span>
DEPENDENCIES = [<span class="string"><span class="delimiter">'</span><span class="content">group</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">device_tracker</span><span class="delimiter">'</span></span>, <span class="string"><span class="delimiter">'</span><span class="content">light</span><span class="delimiter">'</span></span>]
<span class="n">DEPENDENCIES</span> <span class="o">=</span> <span class="p">[</span><span class="s">'group'</span><span class="p">,</span> <span class="s">'device_tracker'</span><span class="p">,</span> <span class="s">'light'</span><span class="p">]</span>
<span class="comment"># Attribute to tell which light has to flash whem a known person comes home</span>
<span class="comment"># If omitted will flash all.</span>
CONF_KNOWN_LIGHT = <span class="string"><span class="delimiter">&quot;</span><span class="content">known_light</span><span class="delimiter">&quot;</span></span>
<span class="c"># Attribute to tell which light has to flash whem a known person comes home</span>
<span class="c"># If omitted will flash all.</span>
<span class="n">CONF_KNOWN_LIGHT</span> <span class="o">=</span> <span class="s">"known_light"</span>
<span class="comment"># Attribute to tell which light has to flash whem an unknown person comes home</span>
<span class="comment"># If omitted will flash all.</span>
CONF_UNKNOWN_LIGHT = <span class="string"><span class="delimiter">&quot;</span><span class="content">unknown_light</span><span class="delimiter">&quot;</span></span>
<span class="c"># Attribute to tell which light has to flash whem an unknown person comes home</span>
<span class="c"># If omitted will flash all.</span>
<span class="n">CONF_UNKNOWN_LIGHT</span> <span class="o">=</span> <span class="s">"unknown_light"</span>
<span class="comment"># Services to test the alarms</span>
SERVICE_TEST_KNOWN_ALARM = <span class="string"><span class="delimiter">&quot;</span><span class="content">test_known</span><span class="delimiter">&quot;</span></span>
SERVICE_TEST_UNKNOWN_ALARM = <span class="string"><span class="delimiter">&quot;</span><span class="content">test_unknown</span><span class="delimiter">&quot;</span></span>
<span class="c"># Services to test the alarms</span>
<span class="n">SERVICE_TEST_KNOWN_ALARM</span> <span class="o">=</span> <span class="s">"test_known"</span>
<span class="n">SERVICE_TEST_UNKNOWN_ALARM</span> <span class="o">=</span> <span class="s">"test_unknown"</span>
<span class="keyword">def</span> <span class="function">setup</span>(hass, config):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content"> Sets up the simple alarms. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
logger = logging.getLogger(__name__)
<span class="k">def</span> <span class="nf">setup</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">config</span><span class="p">):</span>
<span class="s">""" Sets up the simple alarms. """</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="n">__name__</span><span class="p">)</span>
light_ids = []
<span class="n">light_ids</span> <span class="o">=</span> <span class="p">[]</span>
<span class="keyword">for</span> conf_key <span class="keyword">in</span> (CONF_KNOWN_LIGHT, CONF_UNKNOWN_LIGHT):
light_id = config[DOMAIN].get(conf_key, light.ENTITY_ID_ALL_LIGHTS)
<span class="k">for</span> <span class="n">conf_key</span> <span class="ow">in</span> <span class="p">(</span><span class="n">CONF_KNOWN_LIGHT</span><span class="p">,</span> <span class="n">CONF_UNKNOWN_LIGHT</span><span class="p">):</span>
<span class="n">light_id</span> <span class="o">=</span> <span class="n">config</span><span class="p">[</span><span class="n">DOMAIN</span><span class="p">]</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">conf_key</span><span class="p">,</span> <span class="n">light</span><span class="o">.</span><span class="n">ENTITY_ID_ALL_LIGHTS</span><span class="p">)</span>
<span class="keyword">if</span> hass.states.get(light_id) <span class="keyword">is</span> <span class="predefined-constant">None</span>:
logger.error(
<span class="string"><span class="delimiter">'</span><span class="content">Light id %s could not be found in state machine</span><span class="delimiter">'</span></span>, light_id)
<span class="k">if</span> <span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">light_id</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span>
<span class="s">'Light id </span><span class="si">%</span><span class="s">s could not be found in state machine'</span><span class="p">,</span> <span class="n">light_id</span><span class="p">)</span>
<span class="keyword">return</span> <span class="predefined-constant">False</span>
<span class="k">return</span> <span class="bp">False</span>
light_ids.append(light_id)
<span class="n">light_ids</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">light_id</span><span class="p">)</span>
<span class="comment"># pylint: disable=unbalanced-tuple-unpacking</span>
known_light_id, unknown_light_id = light_ids
<span class="c"># pylint: disable=unbalanced-tuple-unpacking</span>
<span class="n">known_light_id</span><span class="p">,</span> <span class="n">unknown_light_id</span> <span class="o">=</span> <span class="n">light_ids</span>
<span class="keyword">if</span> hass.states.get(device_tracker.ENTITY_ID_ALL_DEVICES) <span class="keyword">is</span> <span class="predefined-constant">None</span>:
logger.error(<span class="string"><span class="delimiter">'</span><span class="content">No devices are being tracked, cannot setup alarm</span><span class="delimiter">'</span></span>)
<span class="k">if</span> <span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">device_tracker</span><span class="o">.</span><span class="n">ENTITY_ID_ALL_DEVICES</span><span class="p">)</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
<span class="n">logger</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s">'No devices are being tracked, cannot setup alarm'</span><span class="p">)</span>
<span class="keyword">return</span> <span class="predefined-constant">False</span>
<span class="k">return</span> <span class="bp">False</span>
<span class="keyword">def</span> <span class="function">known_alarm</span>():
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content"> Fire an alarm if a known person arrives home. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
light.turn_on(hass, known_light_id, flash=light.FLASH_SHORT)
<span class="k">def</span> <span class="nf">known_alarm</span><span class="p">():</span>
<span class="s">""" Fire an alarm if a known person arrives home. """</span>
<span class="n">light</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">known_light_id</span><span class="p">,</span> <span class="n">flash</span><span class="o">=</span><span class="n">light</span><span class="o">.</span><span class="n">FLASH_SHORT</span><span class="p">)</span>
<span class="keyword">def</span> <span class="function">unknown_alarm</span>():
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content"> Fire an alarm if the light turns on while no one is home. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
light.turn_on(
hass, unknown_light_id,
flash=light.FLASH_LONG, rgb_color=[<span class="integer">255</span>, <span class="integer">0</span>, <span class="integer">0</span>])
<span class="k">def</span> <span class="nf">unknown_alarm</span><span class="p">():</span>
<span class="s">""" Fire an alarm if the light turns on while no one is home. """</span>
<span class="n">light</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span>
<span class="n">hass</span><span class="p">,</span> <span class="n">unknown_light_id</span><span class="p">,</span>
<span class="n">flash</span><span class="o">=</span><span class="n">light</span><span class="o">.</span><span class="n">FLASH_LONG</span><span class="p">,</span> <span class="n">rgb_color</span><span class="o">=</span><span class="p">[</span><span class="mi">255</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">])</span>
<span class="comment"># Send a message to the user</span>
notify.send_message(
hass, <span class="string"><span class="delimiter">&quot;</span><span class="content">The lights just got turned on while no one was home.</span><span class="delimiter">&quot;</span></span>)
<span class="c"># Send a message to the user</span>
<span class="n">notify</span><span class="o">.</span><span class="n">send_message</span><span class="p">(</span>
<span class="n">hass</span><span class="p">,</span> <span class="s">"The lights just got turned on while no one was home."</span><span class="p">)</span>
<span class="comment"># Setup services to test the effect</span>
hass.services.register(
DOMAIN, SERVICE_TEST_KNOWN_ALARM, <span class="keyword">lambda</span> call: known_alarm())
hass.services.register(
DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, <span class="keyword">lambda</span> call: unknown_alarm())
<span class="c"># Setup services to test the effect</span>
<span class="n">hass</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">register</span><span class="p">(</span>
<span class="n">DOMAIN</span><span class="p">,</span> <span class="n">SERVICE_TEST_KNOWN_ALARM</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">call</span><span class="p">:</span> <span class="n">known_alarm</span><span class="p">())</span>
<span class="n">hass</span><span class="o">.</span><span class="n">services</span><span class="o">.</span><span class="n">register</span><span class="p">(</span>
<span class="n">DOMAIN</span><span class="p">,</span> <span class="n">SERVICE_TEST_UNKNOWN_ALARM</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">call</span><span class="p">:</span> <span class="n">unknown_alarm</span><span class="p">())</span>
<span class="keyword">def</span> <span class="function">unknown_alarm_if_lights_on</span>(entity_id, old_state, new_state):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content"> Called when a light has been turned on. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="keyword">if</span> <span class="keyword">not</span> device_tracker.is_on(hass):
unknown_alarm()
<span class="k">def</span> <span class="nf">unknown_alarm_if_lights_on</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">old_state</span><span class="p">,</span> <span class="n">new_state</span><span class="p">):</span>
<span class="s">""" Called when a light has been turned on. """</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">device_tracker</span><span class="o">.</span><span class="n">is_on</span><span class="p">(</span><span class="n">hass</span><span class="p">):</span>
<span class="n">unknown_alarm</span><span class="p">()</span>
track_state_change(
hass, light.ENTITY_ID_ALL_LIGHTS,
unknown_alarm_if_lights_on, STATE_OFF, STATE_ON)
<span class="n">track_state_change</span><span class="p">(</span>
<span class="n">hass</span><span class="p">,</span> <span class="n">light</span><span class="o">.</span><span class="n">ENTITY_ID_ALL_LIGHTS</span><span class="p">,</span>
<span class="n">unknown_alarm_if_lights_on</span><span class="p">,</span> <span class="n">STATE_OFF</span><span class="p">,</span> <span class="n">STATE_ON</span><span class="p">)</span>
<span class="keyword">def</span> <span class="function">ring_known_alarm</span>(entity_id, old_state, new_state):
<span class="docstring"><span class="delimiter">&quot;&quot;&quot;</span><span class="content"> Called when a known person comes home. </span><span class="delimiter">&quot;&quot;&quot;</span></span>
<span class="keyword">if</span> light.is_on(hass, known_light_id):
known_alarm()
<span class="k">def</span> <span class="nf">ring_known_alarm</span><span class="p">(</span><span class="n">entity_id</span><span class="p">,</span> <span class="n">old_state</span><span class="p">,</span> <span class="n">new_state</span><span class="p">):</span>
<span class="s">""" Called when a known person comes home. """</span>
<span class="k">if</span> <span class="n">light</span><span class="o">.</span><span class="n">is_on</span><span class="p">(</span><span class="n">hass</span><span class="p">,</span> <span class="n">known_light_id</span><span class="p">):</span>
<span class="n">known_alarm</span><span class="p">()</span>
<span class="comment"># Track home coming of each device</span>
track_state_change(
hass, hass.states.entity_ids(device_tracker.DOMAIN),
ring_known_alarm, STATE_NOT_HOME, STATE_HOME)
<span class="c"># Track home coming of each device</span>
<span class="n">track_state_change</span><span class="p">(</span>
<span class="n">hass</span><span class="p">,</span> <span class="n">hass</span><span class="o">.</span><span class="n">states</span><span class="o">.</span><span class="n">entity_ids</span><span class="p">(</span><span class="n">device_tracker</span><span class="o">.</span><span class="n">DOMAIN</span><span class="p">),</span>
<span class="n">ring_known_alarm</span><span class="p">,</span> <span class="n">STATE_NOT_HOME</span><span class="p">,</span> <span class="n">STATE_HOME</span><span class="p">)</span>
<span class="keyword">return</span> <span class="predefined-constant">True</span>
</pre></div>
</div>
<span class="k">return</span> <span class="bp">True</span>
</code></pre>
</div>

View file

@ -93,88 +93,86 @@
<p>This configuration example is restarting Home Assistant if a <a href="/components/switch.wemo/">WeMo</a> switch is not detected. An additional MQTT switch is present for stopping Home Assistant and can be triggered by <a href="/components/ifttt/">IFTTT</a>. The running batch script will automatically restart Home Assistant if the process isnt found anymore.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">mqtt</span>:
<span class="key">broker</span>: <span class="string"><span class="content">127.0.0.1</span></span>
<span class="key">port</span>: <span class="string"><span class="content">1883</span></span>
<span class="key">client_id</span>: <span class="string"><span class="content">home-assistant-1</span></span>
<span class="key">keepalive</span>: <span class="string"><span class="content">60</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">mqtt</span><span class="pi">:</span>
<span class="s">broker</span><span class="pi">:</span> <span class="s">127.0.0.1</span>
<span class="s">port</span><span class="pi">:</span> <span class="s">1883</span>
<span class="s">client_id</span><span class="pi">:</span> <span class="s">home-assistant-1</span>
<span class="s">keepalive</span><span class="pi">:</span> <span class="s">60</span>
<span class="key">device_tracker</span>:
- <span class="string"><span class="content">platform: nmap_tracker</span></span>
<span class="key">hosts</span>: <span class="string"><span class="content">192.168.0.1-255</span></span>
<span class="key">home_interval</span>: <span class="string"><span class="content">1</span></span>
<span class="key">interval_seconds</span>: <span class="string"><span class="content">30</span></span>
<span class="key">consider_home</span>: <span class="string"><span class="content">900</span></span>
<span class="s">device_tracker</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">nmap_tracker</span>
<span class="s">hosts</span><span class="pi">:</span> <span class="s">192.168.0.1-255</span>
<span class="s">home_interval</span><span class="pi">:</span> <span class="s">1</span>
<span class="s">interval_seconds</span><span class="pi">:</span> <span class="s">30</span>
<span class="s">consider_home</span><span class="pi">:</span> <span class="s">900</span>
<span class="key">ifttt</span>:
<span class="key">key</span>: <span class="error">***</span>
<span class="s">ifttt</span><span class="pi">:</span>
<span class="s">key</span><span class="pi">:</span> <span class="err">***</span>
<span class="key">notify</span>:
- <span class="string"><span class="content">platform: pushbullet</span></span>
<span class="key">api_key</span>: <span class="error">***</span>
<span class="key">name</span>: <span class="string"><span class="content">pushbullet</span></span>
<span class="s">notify</span><span class="pi">:</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="err">***</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">pushbullet</span>
<span class="key">switch</span>:
- <span class="string"><span class="content">platform: wemo</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/killhass</span><span class="delimiter">&quot;</span></span>
<span class="key">command_topic</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">home/killhass</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">KillHass</span><span class="delimiter">&quot;</span></span>
<span class="key">qos</span>: <span class="string"><span class="content">0</span></span>
<span class="key">payload_on</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">ON</span><span class="delimiter">&quot;</span></span>
<span class="key">payload_of</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">OFF</span><span class="delimiter">&quot;</span></span>
<span class="key">optimistic</span>: <span class="string"><span class="content">false</span></span>
<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">wemo</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/killhass"</span>
<span class="s">command_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">home/killhass"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">KillHass"</span>
<span class="s">qos</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">payload_on</span><span class="pi">:</span> <span class="s2">"</span><span class="s">ON"</span>
<span class="s">payload_of</span><span class="pi">:</span> <span class="s2">"</span><span class="s">OFF"</span>
<span class="s">optimistic</span><span class="pi">:</span> <span class="s">false</span>
<span class="key">script</span>:
<span class="key">restarthawemo</span>:
<span class="key">alias</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Restart HA if WeMo isn't found after 15 minutes</span><span class="delimiter">&quot;</span></span>
<span class="key">sequence</span>:
- <span class="string"><span class="content">delay:</span><span class="content">
minutes: 15</span></span>
- <span class="string"><span class="content">service: notify.pushbullet</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'WeMo not found, restarting HA'</span></span>
- <span class="string"><span class="content">service: switch.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.killhass</span></span>
<span class="s">script</span><span class="pi">:</span>
<span class="s">restarthawemo</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Restart</span><span class="nv"> </span><span class="s">HA</span><span class="nv"> </span><span class="s">if</span><span class="nv"> </span><span class="s">WeMo</span><span class="nv"> </span><span class="s">isn't</span><span class="nv"> </span><span class="s">found</span><span class="nv"> </span><span class="s">after</span><span class="nv"> </span><span class="s">15</span><span class="nv"> </span><span class="s">minutes"</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">15</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">notify.pushbullet</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">WeMo</span><span class="nv"> </span><span class="s">not</span><span class="nv"> </span><span class="s">found,</span><span class="nv"> </span><span class="s">restarting</span><span class="nv"> </span><span class="s">HA'</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">switch.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">switch.killhass</span>
<span class="key">automation</span>:
- <span class="string"><span class="content">alias: &quot;Restart HA if WeMo switch isn't found after 15 minutes&quot;</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">device_tracker.wemo</span></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="key">condition</span>:
- <span class="string"><span class="content">condition: template</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{% if states.switch.wemo %}false{% else %}true{% endif %}'</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.restarthawemo</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'off'</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">script.restarthawemo</span></span>
- <span class="string"><span class="content">alias: 'Stop HA'</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">switch.KillHass</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.stop</span></span>
- <span class="string"><span class="content">alias: 'Stop restarting HA is WeMo is found'</span></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 states.switch.wemo %}true{% else %}false{% endif %}'</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">script.restarthawemo</span></span>
<span class="key">state</span>: <span class="string"><span class="content">'on'</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">homeassistant.turn_off</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">script.restarthawemo</span></span>
</pre></div>
</div>
<span class="s">automation</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Restart</span><span class="nv"> </span><span class="s">HA</span><span class="nv"> </span><span class="s">if</span><span class="nv"> </span><span class="s">WeMo</span><span class="nv"> </span><span class="s">switch</span><span class="nv"> </span><span class="s">isn't</span><span class="nv"> </span><span class="s">found</span><span class="nv"> </span><span class="s">after</span><span class="nv"> </span><span class="s">15</span><span class="nv"> </span><span class="s">minutes"</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.wemo</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="s">condition</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">if</span><span class="nv"> </span><span class="s">states.switch.wemo</span><span class="nv"> </span><span class="s">%}false{%</span><span class="nv"> </span><span class="s">else</span><span class="nv"> </span><span class="s">%}true{%</span><span class="nv"> </span><span class="s">endif</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">state</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.restarthawemo</span>
<span class="s">state</span><span class="pi">:</span> <span class="s1">'</span><span class="s">off'</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">script.restarthawemo</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Stop</span><span class="nv"> </span><span class="s">HA'</span>
<span class="s">trigger</span><span class="pi">:</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">switch.KillHass</span>
<span class="s">state</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="s">service</span><span class="pi">:</span> <span class="s">homeassistant.stop</span>
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Stop</span><span class="nv"> </span><span class="s">restarting</span><span class="nv"> </span><span class="s">HA</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">WeMo</span><span class="nv"> </span><span class="s">is</span><span class="nv"> </span><span class="s">found'</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">states.switch.wemo</span><span class="nv"> </span><span class="s">%}true{%</span><span class="nv"> </span><span class="s">else</span><span class="nv"> </span><span class="s">%}false{%</span><span class="nv"> </span><span class="s">endif</span><span class="nv"> </span><span class="s">%}'</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">script.restarthawemo</span>
<span class="s">state</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="s">service</span><span class="pi">:</span> <span class="s">homeassistant.turn_off</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.restarthawemo</span>
</code></pre>
</div>

View file

@ -93,33 +93,29 @@
<p>Add a <a href="/components/notify/">notify platform</a> of your choice.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">notify</span>:
- <span class="string"><span class="content">platform: xmpp</span></span>
<span class="key">name</span>: <span class="string"><span class="content">jabber</span></span>
<span class="key">sender</span>: <span class="string"><span class="content">YOUR_JID</span></span>
<span class="key">password</span>: <span class="string"><span class="content">YOUR_JABBER_ACCOUNT_PASSWORD</span></span>
<span class="key">recipient</span>: <span class="string"><span class="content">YOUR_RECIPIENT</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="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">xmpp</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">jabber</span>
<span class="s">sender</span><span class="pi">:</span> <span class="s">YOUR_JID</span>
<span class="s">password</span><span class="pi">:</span> <span class="s">YOUR_JABBER_ACCOUNT_PASSWORD</span>
<span class="s">recipient</span><span class="pi">:</span> <span class="s">YOUR_RECIPIENT</span>
</code></pre>
</div>
<p>and automation part to your <code>configuration.yaml</code> file.</p>
<p>and automation part to your <code class="highlighter-rouge">configuration.yaml</code> file.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
- <span class="string"><span class="content">alias: Send message at a given time</span></span>
<span class="key">trigger</span>:
<span class="key">platform</span>: <span class="string"><span class="content">time</span></span>
<span class="key">hours</span>: <span class="string"><span class="content">12</span></span>
<span class="key">minutes</span>: <span class="string"><span class="content">15</span></span>
<span class="key">seconds</span>: <span class="string"><span class="content">0</span></span>
<span class="key">action</span>:
<span class="key">service</span>: <span class="string"><span class="content">notify.jabber</span></span>
<span class="key">data</span>:
<span class="key">message</span>: <span class="string"><span class="content">'Time for lunch'</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="s">Send message at a given time</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">hours</span><span class="pi">:</span> <span class="s">12</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">15</span>
<span class="s">seconds</span><span class="pi">:</span> <span class="s">0</span>
<span class="s">action</span><span class="pi">:</span>
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.jabber</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">Time</span><span class="nv"> </span><span class="s">for</span><span class="nv"> </span><span class="s">lunch'</span>
</code></pre>
</div>

View file

@ -106,7 +106,7 @@
<p>You can learn more about how Tor can be used to secure home automation and IoT platforms through this short set of slides on the <a href="https://github.com/n8fr8/talks/blob/master/onion_things/Internet%20of%20Onion%20Things.pdf">Internet of Onion Things</a></p>
<p>This configuration was provided by @n8fr8 (<a href="https://github.com/n8fr8">github</a>, <a href="https://twitter.com/n8fr8">twitter</a>) of the <a href="https://guardianproject.info">Guardian Project</a> and <a href="https://torproject.org">Tor Project</a>. You can send questions, feedback and ideas to <a href="&#109;&#097;&#105;&#108;&#116;&#111;:&#115;&#117;&#112;&#112;&#111;&#114;&#116;&#064;&#103;&#117;&#097;&#114;&#100;&#105;&#097;&#110;&#112;&#114;&#111;&#106;&#101;&#099;&#116;&#046;&#105;&#110;&#102;&#111;">&#115;&#117;&#112;&#112;&#111;&#114;&#116;&#064;&#103;&#117;&#097;&#114;&#100;&#105;&#097;&#110;&#112;&#114;&#111;&#106;&#101;&#099;&#116;&#046;&#105;&#110;&#102;&#111;</a>.</p>
<p>This configuration was provided by @n8fr8 (<a href="https://github.com/n8fr8">github</a>, <a href="https://twitter.com/n8fr8">twitter</a>) of the <a href="https://guardianproject.info">Guardian Project</a> and <a href="https://torproject.org">Tor Project</a>. You can send questions, feedback and ideas to <a href="mailto:support@guardianproject.info">support@guardianproject.info</a>.</p>
<h4><a class="title-link" name="hidden-services-and-onion-sites" href="#hidden-services-and-onion-sites"></a> Hidden Services and Onion Sites</h4>
@ -118,55 +118,45 @@
<p>First, install Tor. On a Debain-based system, you can install the package easily:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo apt-get install tor
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo apt-get install tor
</code></pre>
</div>
<p>You can find more instructions for downloading and installing Tor on other platforms on the <a href="https://www.torproject.org/download/download.html">Tor Project Download Page</a>.</p>
<p>Next, modify Tors main configuration file <code>/etc/tor/torrc</code> to include the following lines:</p>
<p>Next, modify Tors main configuration file <code class="highlighter-rouge">/etc/tor/torrc</code> to include the following lines:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>############### This section is just for location-hidden services ###
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="c">############### This section is just for location-hidden services ###</span>
## Once you have configured a hidden service, you can look at the
## contents of the file &quot;.../hidden_service/hostname&quot; for the address
## to tell people.
<span class="c">## Once you have configured a hidden service, you can look at the</span>
<span class="c">## contents of the file ".../hidden_service/hostname" for the address</span>
<span class="c">## to tell people.</span>
...
HiddenServiceDir /var/lib/tor/homeassistant/
HiddenServicePort 80 127.0.0.1:8123
HiddenServiceAuthorizeClient stealth haremote1
...
</pre></div>
</div>
</code></pre>
</div>
<p>The “stealth” entry above ensures traffic to and from your Home Assistant instance over Tor, is hidden even from other nodes on the Tor network. The <code>haremote1</code> value is a generic client name entry that you can modify as you please.</p>
<p>The “stealth” entry above ensures traffic to and from your Home Assistant instance over Tor, is hidden even from other nodes on the Tor network. The <code class="highlighter-rouge">haremote1</code> value is a generic client name entry that you can modify as you please.</p>
<p>Then, restart Tor:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo /etc/init.d/tor restart
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo /etc/init.d/tor restart
</code></pre>
</div>
<p>Then read the new generated authentication cookie from the Tor-generated hostname file:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ sudo more /var/lib/tor/homeassistant/hostname
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo more /var/lib/tor/homeassistant/hostname
</code></pre>
</div>
<p>The output of that command should look something like this, but with your own unique “dot onion” domain and authentication cookie:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>abcdef1234567890.onion ABCDEF1122334455667789 # client: haremote1
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>abcdef1234567890.onion ABCDEF1122334455667789 <span class="c"># client: haremote1</span>
</code></pre>
</div>
<p>You are now done with the Home Assistant Tor server configuration. Make sure your Home Assistant instance is running, and now you can move to client configuration.</p>
@ -175,15 +165,13 @@ HiddenServiceAuthorizeClient stealth haremote1
<p>Using this setup, you can access your Home Assistant instance over Tor from your laptop or mobile device, using Tor Browser and other software.</p>
<p>Add the authentication cookie to your <code>torrc</code> client configuration on your laptop or mobile device. Using the sample values from above, it would look like this:</p>
<p>Add the authentication cookie to your <code class="highlighter-rouge">torrc</code> client configuration on your laptop or mobile device. Using the sample values from above, it would look like this:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>HidServAuth abcdef1234567890.onion ABCDEF1122334455667789
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code>HidServAuth abcdef1234567890.onion ABCDEF1122334455667789
</code></pre>
</div>
<p>For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: <code>&lt;tor browser install directory&gt;/Browser/TorBrowser/Data/Tor/torrc-defaults</code></p>
<p>For Tor Browser on Windows, Mac or Linux, you can find the torrc file here: <code class="highlighter-rouge">&lt;tor browser install directory&gt;/Browser/TorBrowser/Data/Tor/torrc-defaults</code></p>
<p>Once you have added the entry, restart the browser, and then browse to the “dot onion” site address to connect to your Home Assistant instance.</p>

View file

@ -91,34 +91,30 @@
<p>The <a href="/components/device_tracker.icloud/">iCloud</a> is gathering various details about your device including the battery level. To display it in the Frontend use a <a href="/components/sensor.template/">template sensor</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">platform: template</span></span>
<span class="key">sensors</span>:
<span class="key">battery_iphone</span>:
<span class="key">unit_of_measurement</span>: <span class="string"><span class="content">'%'</span></span>
<span class="key">value_template</span>: <span class="string"><span class="delimiter">&gt;-</span><span class="content">
{%- if states.device_tracker.iphone.attributes.battery %}
{{ states.device_tracker.iphone.attributes.battery }}
{% else %}
{{ states.sensor.battery_iphone.state }}
{%- endif %}</span></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">template</span>
<span class="s">sensors</span><span class="pi">:</span>
<span class="s">battery_iphone</span><span class="pi">:</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s1">'</span><span class="s">%'</span>
<span class="s">value_template</span><span class="pi">:</span> <span class="pi">&gt;-</span>
<span class="no">{%- if states.device_tracker.iphone.attributes.battery %}</span>
<span class="no">{{ states.device_tracker.iphone.attributes.battery }}</span>
<span class="no">{% else %}</span>
<span class="no">{{ states.sensor.battery_iphone.state }}</span>
<span class="no">{%- endif %}</span>
</code></pre>
</div>
<p>The <code>else</code> part is used to have the sensor keep its last state if the newest <a href="/components/device_tracker.icloud/">iCloud</a> update doesnt have any battery state in it (which happens sometimes). Otherwise the sensor will be blank.</p>
<p>The <code class="highlighter-rouge">else</code> part is used to have the sensor keep its last state if the newest <a href="/components/device_tracker.icloud/">iCloud</a> update doesnt have any battery state in it (which happens sometimes). Otherwise the sensor will be blank.</p>
<p>While running the <a href="/components/device_tracker.owntracks/">Owntracks</a> device tracker you can retrieve the battery level with a MQTT sensor.</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="delimiter">&quot;</span><span class="content">owntracks/tablet/tablet</span><span class="delimiter">&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Battery Tablet</span><span class="delimiter">&quot;</span></span>
<span class="key">unit_of_measurement</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">%</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ value_json.batt }}'</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="s2">"</span><span class="s">owntracks/tablet/tablet"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Battery</span><span class="nv"> </span><span class="s">Tablet"</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">%"</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">value_json.batt</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>

View file

@ -93,43 +93,41 @@
<p>This recipe will turn on a light when there is motion and turn off the light when ten minutes has passed without any motion events.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="key">automation</span>:
<span class="key">alias</span>: <span class="string"><span class="content">Turn on kitchen lights when there is movement</span></span>
<span class="key">trigger</span>:
- <span class="string"><span class="content">platform: state</span></span>
<span class="key">entity_id</span>: <span class="string"><span class="content">sensor.motion_sensor</span></span>
<span class="key">to</span>: <span class="string"><span class="content">'on'</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">script.timed_lamp</span></span>
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">automation</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s">Turn on kitchen lights when there is movement</span>
<span class="s">trigger</span><span class="pi">:</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.motion_sensor</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="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">script.timed_lamp</span>
<span class="key">script</span>:
<span class="key">timed_lamp</span>:
<span class="key">alias</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Turn on lamp and set timer</span><span class="delimiter">&quot;</span></span>
<span class="key">sequence</span>:
<span class="comment"># Cancel ev. old timers</span>
- <span class="string"><span class="content">service: script.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">script.timer_off</span></span>
- <span class="string"><span class="content">service: light.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">light.kitchen</span></span>
<span class="comment"># Set new timer</span>
- <span class="string"><span class="content">service: script.turn_on</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">script.timer_off</span></span>
<span class="s">script</span><span class="pi">:</span>
<span class="s">timed_lamp</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Turn</span><span class="nv"> </span><span class="s">on</span><span class="nv"> </span><span class="s">lamp</span><span class="nv"> </span><span class="s">and</span><span class="nv"> </span><span class="s">set</span><span class="nv"> </span><span class="s">timer"</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="c1"># Cancel ev. old timers</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">script.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.timer_off</span>
<span class="pi">-</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">light.kitchen</span>
<span class="c1"># Set new timer</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">script.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">script.timer_off</span>
<span class="key">timer_off</span>:
<span class="key">alias</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">Turn off lamp after 10 minutes</span><span class="delimiter">&quot;</span></span>
<span class="key">sequence</span>:
- <span class="string"><span class="content">delay:</span><span class="content">
minutes: 10</span></span>
- <span class="string"><span class="content">service: light.turn_off</span></span>
<span class="key">data</span>:
<span class="key">entity_id</span>: <span class="string"><span class="content">light.kitchen</span></span>
</pre></div>
</div>
<span class="s">timer_off</span><span class="pi">:</span>
<span class="s">alias</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Turn</span><span class="nv"> </span><span class="s">off</span><span class="nv"> </span><span class="s">lamp</span><span class="nv"> </span><span class="s">after</span><span class="nv"> </span><span class="s">10</span><span class="nv"> </span><span class="s">minutes"</span>
<span class="s">sequence</span><span class="pi">:</span>
<span class="pi">-</span> <span class="s">delay</span><span class="pi">:</span>
<span class="s">minutes</span><span class="pi">:</span> <span class="s">10</span>
<span class="pi">-</span> <span class="s">service</span><span class="pi">:</span> <span class="s">light.turn_off</span>
<span class="s">data</span><span class="pi">:</span>
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">light.kitchen</span>
</code></pre>
</div>