Site updated at 2018-01-18 23:18:22 UTC

This commit is contained in:
Travis CI 2018-01-18 23:18:22 +00:00
parent dc6104ce86
commit 8890901d23
28 changed files with 270 additions and 218 deletions

View file

@ -4,7 +4,7 @@
<title><![CDATA[Home Assistant]]></title>
<link href="https://home-assistant.io/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Announcements | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/announcements/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Community | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/community/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Device-Tracking | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/device-tracking/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: ESP8266 | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/esp8266/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: How-To | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/how-to/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: iBeacons | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/ibeacons/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Internet-of-Things | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/internet-of-things/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: IoT-Data | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/iot-data/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Media | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/media/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Merchandise | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/merchandise/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Micropython | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/micropython/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: MQTT | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/mqtt/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Organisation | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/organisation/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: OwnTracks | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/owntracks/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Presence-Detection | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/presence-detection/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Public-Service-Announcement | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/public-service-announcement/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Release-Notes | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/release-notes/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Survey | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/survey/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Talks | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/talks/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Technology | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/technology/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: User-Stories | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/user-stories/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Video | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/video/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -4,7 +4,7 @@
<title><![CDATA[Category: Website | Home Assistant]]></title>
<link href="https://home-assistant.io/blog/categories/website/atom.xml" rel="self"/>
<link href="https://home-assistant.io/"/>
<updated>2018-01-18T21:28:03+00:00</updated>
<updated>2018-01-18T23:06:14+00:00</updated>
<id>https://home-assistant.io/</id>
<author>
<name><![CDATA[Home Assistant]]></name>

View file

@ -87,33 +87,6 @@
<li><strong>username</strong> (<em>Required</em>): Username for the Neato account.</li>
<li><strong>password</strong> (<em>Required</em>): Password for the Neato account.</li>
</ul>
<p>The Home Assistant Neato platform has not been tested with all models of Botvac.</p>
<table>
<thead>
<tr>
<th>BotVac Model</th>
<th>Tested</th>
</tr>
</thead>
<tbody>
<tr>
<td>Botvac Connected</td>
<td>SUCCESS</td>
</tr>
<tr>
<td>Botvac D3 Connected (firmware 4.0+)</td>
<td>PARTIALLY WORKING</td>
</tr>
<tr>
<td>Botvac D5 Connected (firmware 4.0+)</td>
<td>PARTIALLY WORKING</td>
</tr>
<tr>
<td>Botvac D7 Connected</td>
<td>SUCCESS</td>
</tr>
</tbody>
</table>
<p class="note">
After the update to firmware 4.0 (which adds cleaning maps) there is also support for displaying the maps of the Botvac D3 Connected and Botvac D5 Connected robots. The start/stop functionality does not work. More information on how to update here: https://support.neatorobotics.com/hc/en-us/articles/115004320694-Software-Update-4-0-for-Neato-Botvac-Connected-D3-D5-
</p>

View file

@ -84,7 +84,7 @@
<p>It is also possible to speak direct to the Home Assistant instance which is named <code class="highlighter-rouge">homeassistant</code> over our internal network. But you need to know the configuration that is used by the running instance.</p>
<p>We have severals services for Hass.io inside Home Assistant to execute tasks. To send data over STDIN to an add-on use the simply <code class="highlighter-rouge">hassio.addon_stdin</code> service.</p>
<h2><a class="title-link" name="hassio-api" href="#hassio-api"></a> Hass.io API</h2>
<p>To enables calls to the <a href="https://github.com/home-assistant/hassio/blob/master/API.md">Hass.io API</a>, add <code class="highlighter-rouge">hassio_api: true</code> to <code class="highlighter-rouge">config.json</code> and read the environment variable <code class="highlighter-rouge">API_TOKEN</code>. Now you can use the API over the URL: <code class="highlighter-rouge">http://hassio/</code>. Use the <code class="highlighter-rouge">HASSIO_TOKEN</code> with header <code class="highlighter-rouge">X-HASSIO-KEY</code>.</p>
<p>To enables calls to the <a href="https://github.com/home-assistant/hassio/blob/master/API.md">Hass.io API</a>, add <code class="highlighter-rouge">hassio_api: true</code> to <code class="highlighter-rouge">config.json</code> and read the environment variable <code class="highlighter-rouge">HASSIO_TOKEN</code>. Now you can use the API over the URL: <code class="highlighter-rouge">http://hassio/</code>. Use the <code class="highlighter-rouge">HASSIO_TOKEN</code> with header <code class="highlighter-rouge">X-HASSIO-KEY</code>.</p>
</article>
</div>
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">

View file

@ -77,26 +77,39 @@
<hr class="divider">
<p>Home Assistant can run as a daemon within init.d with the script below.</p>
<h3><a class="title-link" name="1-copy-script" href="#1-copy-script"></a> 1. Copy script</h3>
<p>Copy the script at the end of this page to <code class="highlighter-rouge">/etc/init.d/hass-daemon</code>.</p>
<p>Copy either the deamon script or the Python environment scrip at the end of this page to <code class="highlighter-rouge">/etc/init.d/hass-daemon</code> depending on your installation.</p>
<p>After that, set the script to be executable:</p>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo chmod +x /etc/init.d/hass-daemon
</code></pre>
</div>
<h3><a class="title-link" name="2-select-a-user" href="#2-select-a-user"></a> 2. Select a user.</h3>
<p>Create or pick a user that the Home Assistant daemon will run under. Update script to set <code class="highlighter-rouge">RUN_AS</code> to the username that should be used to execute hass.</p>
<h3><a class="title-link" name="3-change-hass-executable-if-required" href="#3-change-hass-executable-if-required"></a> 3. Change hass executable if required.</h3>
<p>Some installation environments may require a change in the Home Assistant executable <code class="highlighter-rouge">hass</code>. Update script to set <code class="highlighter-rouge">HASS_BIN</code> to the appropriate <code class="highlighter-rouge">hass</code> executable path.</p>
<h3><a class="title-link" name="4-register-the-daemon-with-linux" href="#4-register-the-daemon-with-linux"></a> 4. Register the daemon with Linux</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo update-rc.d hass-daemon defaults
<h3><a class="title-link" name="3-change-hass-executable-and-other-variables-if-required" href="#3-change-hass-executable-and-other-variables-if-required"></a> 3. Change hass executable and other variables if required.</h3>
<p>Some installation environments may require a change in the Home Assistant executable <code class="highlighter-rouge">hass</code>. Update script to set <code class="highlighter-rouge">HASS_BIN</code> to the appropriate <code class="highlighter-rouge">hass</code> executable path. Please also check the other variables for the appropriate value. In general the defaults should work</p>
<h3><a class="title-link" name="4-install-this-service" href="#4-install-this-service"></a> 4. Install this service</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo service hass-daemon install
</code></pre>
</div>
<h3><a class="title-link" name="5-install-this-service" href="#5-install-this-service"></a> 5. Install this service</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo service hass-daemon install
<h3><a class="title-link" name="5-create-logrotate-rule" href="#5-create-logrotate-rule"></a> 5. Create logrotate rule</h3>
<p>This logrotate script at <code class="highlighter-rouge">/etc/logrotate.d/homeassistant</code> will create an outage of a few seconds every week at night. If you do not want this add <code class="highlighter-rouge">--log-rotate-days 7</code> to the <code class="highlighter-rouge">FLAGS</code> variable in the init script.</p>
<div class="highlighter-rouge"><pre class="highlight"><code>/var/log/homeassistant/home-assistant.log
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
invoke-rc.d hass-daemon restart &gt; /dev/null
endscript
}
</code></pre>
</div>
<h3><a class="title-link" name="6-restart-machine" href="#6-restart-machine"></a> 6. Restart Machine</h3>
<p>Thats it. Restart your machine and Home Assistant should start automatically.</p>
<p>If HA does not start, check the log file output for errors at <code class="highlighter-rouge">/var/opt/homeassistant/home-assistant.log</code></p>
<p>If HA does not start, check the log file output for errors at <code class="highlighter-rouge">/var/log/homeassistant/home-assistant.log</code></p>
<h3><a class="title-link" name="extra-running-commands-before-hass-executes" href="#extra-running-commands-before-hass-executes"></a> Extra: Running commands before hass executes</h3>
<p>If any commands need to run before executing hass (like loading a virtual environment), put them in PRE_EXEC. This command must end with a semicolon.</p>
<h3><a class="title-link" name="daemon-script" href="#daemon-script"></a> Daemon script</h3>
@ -118,75 +131,108 @@
<span class="nv">RUN_AS</span><span class="o">=</span><span class="s2">"USER"</span>
<span class="nv">PID_FILE</span><span class="o">=</span><span class="s2">"/var/run/hass.pid"</span>
<span class="nv">CONFIG_DIR</span><span class="o">=</span><span class="s2">"/var/opt/homeassistant"</span>
<span class="nv">FLAGS</span><span class="o">=</span><span class="s2">"-v --config </span><span class="nv">$CONFIG_DIR</span><span class="s2"> --pid-file </span><span class="nv">$PID_FILE</span><span class="s2"> --daemon"</span>
<span class="gp">REDIRECT="&gt; </span><span class="nv">$CONFIG_DIR</span>/home-assistant.log 2&gt;&amp;1<span class="s2">"
<span class="nv">LOG_DIR</span><span class="o">=</span><span class="s2">"/var/log/homeassistant"</span>
<span class="nv">LOG_FILE</span><span class="o">=</span><span class="s2">"</span><span class="nv">$LOG_DIR</span><span class="s2">/home-assistant.log"</span>
<span class="nv">FLAGS</span><span class="o">=</span><span class="s2">"-v --config </span><span class="nv">$CONFIG_DIR</span><span class="s2"> --pid-file </span><span class="nv">$PID_FILE</span><span class="s2"> --log-file </span><span class="nv">$LOG_FILE</span><span class="s2"> --daemon"</span>
start() {
if [ -f </span><span class="nv">$PID_FILE</span><span class="s2"> ] &amp;&amp; kill -0 </span><span class="k">$(</span>cat <span class="nv">$PID_FILE</span><span class="k">)</span><span class="s2"> 2&gt; /dev/null; then
echo 'Service already running' &gt;&amp;2
return 1
fi
echo 'Starting service…' &gt;&amp;2
local CMD="</span><span class="nv">$PRE_EXEC</span> <span class="nv">$HASS_BIN</span> <span class="nv">$FLAGS</span> <span class="nv">$REDIRECT</span>;<span class="s2">"
su -c "</span><span class="nv">$CMD</span><span class="s2">" </span><span class="nv">$RUN_AS</span><span class="s2">
echo 'Service started' &gt;&amp;2
}
stop() {
if [ ! -f "</span><span class="nv">$PID_FILE</span><span class="s2">" ] || ! kill -0 </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2"> 2&gt; /dev/null; then
echo 'Service not running' &gt;&amp;2
return 1
fi
echo 'Stopping service…' &gt;&amp;2
kill </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2">
while ps -p </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2"> &gt; /dev/null 2&gt;&amp;1; do sleep 1;done;
echo 'Service stopped' &gt;&amp;2
}
start<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"It seems you did not run"</span>
<span class="nb">echo</span> -e <span class="s2">"</span><span class="se">\t</span><span class="s2">service hass-daemon install"</span>
<span class="k">return </span>1
<span class="k">fi
if</span> <span class="o">[</span> -f <span class="nv">$PID_FILE</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="nb">kill</span> -0 <span class="k">$(</span>cat <span class="nv">$PID_FILE</span><span class="k">)</span> 2&gt; /dev/null; <span class="k">then
</span><span class="nb">echo</span> <span class="s1">'Service already running'</span> &gt;&amp;2
<span class="k">return </span>1
<span class="k">fi
</span><span class="nb">echo</span> -n <span class="s1">'Starting service… '</span> &gt;&amp;2
<span class="nb">local </span><span class="nv">CMD</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PRE_EXEC</span><span class="s2"> </span><span class="nv">$HASS_BIN</span><span class="s2"> </span><span class="nv">$FLAGS</span><span class="s2">;"</span>
su -s /bin/bash -c <span class="s2">"</span><span class="nv">$CMD</span><span class="s2">"</span> <span class="nv">$RUN_AS</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -ne 0 <span class="o">]</span>; <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"Failed"</span> &gt;&amp;2
<span class="k">else
</span><span class="nb">echo</span> <span class="s1">'Done'</span> &gt;&amp;2
<span class="k">fi</span>
<span class="o">}</span>
install() {
echo "</span>Installing Home Assistant Daemon <span class="o">(</span>hass-daemon<span class="o">)</span><span class="s2">"
echo "</span>999999<span class="s2">" &gt; </span><span class="nv">$PID_FILE</span><span class="s2">
chown </span><span class="nv">$RUN_AS</span><span class="s2"> </span><span class="nv">$PID_FILE</span><span class="s2">
mkdir -p </span><span class="nv">$CONFIG_DIR</span><span class="s2">
chown </span><span class="nv">$RUN_AS</span><span class="s2"> </span><span class="nv">$CONFIG_DIR</span><span class="s2">
}
stop<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -f <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span> <span class="o">]</span> <span class="o">||</span> ! <span class="nb">kill</span> -0 <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span> 2&gt; /dev/null; <span class="k">then
</span><span class="nb">echo</span> <span class="s1">'Service not running'</span> &gt;&amp;2
<span class="k">return </span>1
<span class="k">fi
</span><span class="nb">echo</span> -n <span class="s1">'Stopping service… '</span> &gt;&amp;2
<span class="nb">kill</span> <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span>
<span class="k">while </span>ps -p <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span> &gt; /dev/null 2&gt;&amp;1; <span class="k">do </span>sleep 1;done;
rm -f <span class="nv">$PID_FILE</span>
<span class="nb">echo</span> <span class="s1">'Done'</span> &gt;&amp;2
<span class="o">}</span>
uninstall() {
echo -n "</span>Are you really sure you want to uninstall this service? That cannot be undone. <span class="o">[</span>yes|No] <span class="s2">"
local SURE
read SURE
if [ "</span><span class="nv">$SURE</span><span class="s2">" = "</span>yes<span class="s2">" ]; then
stop
rm -fv "</span><span class="nv">$PID_FILE</span><span class="s2">"
echo "</span>Notice: The config directory has not been removed<span class="s2">"
echo </span><span class="nv">$CONFIG_DIR</span><span class="s2">
install<span class="o">()</span> <span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Installing Home Assistant Daemon (hass-daemon)"</span>
update-rc.d hass-daemon defaults
create_piddir
mkdir -p <span class="nv">$CONFIG_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="nv">$CONFIG_DIR</span>
mkdir -p <span class="nv">$LOG_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="nv">$LOG_DIR</span>
<span class="o">}</span>
uninstall<span class="o">()</span> <span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Are you really sure you want to uninstall this service? The INIT script will"</span>
<span class="nb">echo</span> -n <span class="s2">"also be deleted! That cannot be undone. [yes|No] "</span>
<span class="nb">local </span>SURE
<span class="nb">read </span>SURE
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$SURE</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"yes"</span> <span class="o">]</span>; <span class="k">then
</span>stop
remove_piddir
<span class="nb">echo</span> <span class="s2">"Notice: The config directory has not been removed"</span>
<span class="nb">echo</span> <span class="nv">$CONFIG_DIR</span>
<span class="nb">echo</span> <span class="s2">"Notice: The log directory has not been removed"</span>
<span class="nb">echo</span> <span class="nv">$LOG_DIR</span>
update-rc.d -f hass-daemon remove
rm -fv "</span><span class="nv">$0</span><span class="s2">"
echo "</span>Home Assistant Daemon has been removed. Home Assistant is still installed.<span class="s2">"
fi
}
rm -fv <span class="s2">"</span><span class="nv">$0</span><span class="s2">"</span>
<span class="nb">echo</span> <span class="s2">"Home Assistant Daemon has been removed. Home Assistant is still installed."</span>
<span class="k">fi</span>
<span class="o">}</span>
case "</span><span class="nv">$1</span><span class="s2">" in
start)
create_piddir<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span>mkdir -p <span class="nv">$PID_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span>
<span class="k">fi</span>
<span class="o">}</span>
remove_piddir<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
if</span> <span class="o">[</span> -e <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span>rm -fv <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span>
<span class="k">fi
</span>rmdir -fv <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span>
<span class="k">fi</span>
<span class="o">}</span>
<span class="k">case</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="k">in
</span>start<span class="p">)</span>
start
;;
stop)
<span class="p">;;</span>
stop<span class="p">)</span>
stop
;;
install)
<span class="p">;;</span>
install<span class="p">)</span>
install
;;
uninstall)
<span class="p">;;</span>
uninstall<span class="p">)</span>
uninstall
;;
restart)
<span class="p">;;</span>
restart<span class="p">)</span>
stop
start
;;
*)
echo "</span>Usage: <span class="nv">$0</span> <span class="o">{</span>start|stop|restart|install|uninstall<span class="o">}</span><span class="s2">"
esac
</span></code></pre>
<span class="p">;;</span>
<span class="k">*</span><span class="p">)</span>
<span class="nb">echo</span> <span class="s2">"Usage: </span><span class="nv">$0</span><span class="s2"> {start|stop|restart|install|uninstall}"</span>
<span class="k">esac</span>
</code></pre>
</div>
<h3><a class="title-link" name="python-virtual-environment" href="#python-virtual-environment"></a> Python virtual environment</h3>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="c">#!/bin/sh</span>
@ -201,81 +247,114 @@ esac
<span class="c"># /etc/init.d Service Script for Home Assistant</span>
<span class="c"># Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh</span>
<span class="nv">PRE_EXEC</span><span class="o">=</span><span class="s2">"cd /srv/homeassistant &amp;&amp; python3 -m venv . &amp;&amp; source bin/activate &amp;&amp;"</span>
<span class="nv">PRE_EXEC</span><span class="o">=</span><span class="s2">"cd /srv/homeassistant; python3 -m venv .; source bin/activate;"</span>
<span class="c"># Typically /usr/bin/hass</span>
<span class="nv">HASS_BIN</span><span class="o">=</span><span class="s2">"hass"</span>
<span class="nv">RUN_AS</span><span class="o">=</span><span class="s2">"USER"</span>
<span class="nv">PID_FILE</span><span class="o">=</span><span class="s2">"/var/run/hass.pid"</span>
<span class="nv">CONFIG_DIR</span><span class="o">=</span><span class="s2">"/home/USER/.homeassistant"</span>
<span class="nv">FLAGS</span><span class="o">=</span><span class="s2">"-v --config </span><span class="nv">$CONFIG_DIR</span><span class="s2"> --pid-file </span><span class="nv">$PID_FILE</span><span class="s2"> --daemon"</span>
<span class="gp">REDIRECT="&gt; </span><span class="nv">$CONFIG_DIR</span>/home-assistant.log 2&gt;&amp;1<span class="s2">"
<span class="nv">RUN_AS</span><span class="o">=</span><span class="s2">"homeassistant"</span>
<span class="nv">PID_DIR</span><span class="o">=</span><span class="s2">"/var/run/hass"</span>
<span class="nv">PID_FILE</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">/hass.pid"</span>
<span class="nv">CONFIG_DIR</span><span class="o">=</span><span class="s2">"/home/</span><span class="nv">$RUN_AS</span><span class="s2">/.homeassistant"</span>
<span class="nv">LOG_DIR</span><span class="o">=</span><span class="s2">"/var/log/homeassistant"</span>
<span class="nv">LOG_FILE</span><span class="o">=</span><span class="s2">"</span><span class="nv">$LOG_DIR</span><span class="s2">/home-assistant.log"</span>
<span class="nv">FLAGS</span><span class="o">=</span><span class="s2">"-v --config </span><span class="nv">$CONFIG_DIR</span><span class="s2"> --pid-file </span><span class="nv">$PID_FILE</span><span class="s2"> --log-file </span><span class="nv">$LOG_FILE</span><span class="s2"> --daemon"</span>
start() {
if [ -f </span><span class="nv">$PID_FILE</span><span class="s2"> ] &amp;&amp; kill -0 </span><span class="k">$(</span>cat <span class="nv">$PID_FILE</span><span class="k">)</span><span class="s2"> 2&gt; /dev/null; then
echo 'Service already running' &gt;&amp;2
return 1
fi
echo 'Starting service…' &gt;&amp;2
local CMD="</span><span class="nv">$PRE_EXEC</span> <span class="nv">$HASS_BIN</span> <span class="nv">$FLAGS</span> <span class="nv">$REDIRECT</span>;<span class="s2">"
su -s /bin/bash -c "</span><span class="nv">$CMD</span><span class="s2">" </span><span class="nv">$RUN_AS</span><span class="s2">
echo 'Service started' &gt;&amp;2
}
start<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"It seems you did not run"</span>
<span class="nb">echo</span> -e <span class="s2">"</span><span class="se">\t</span><span class="s2">service hass-daemon install"</span>
<span class="k">return </span>1
<span class="k">fi
if</span> <span class="o">[</span> -f <span class="nv">$PID_FILE</span> <span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="nb">kill</span> -0 <span class="k">$(</span>cat <span class="nv">$PID_FILE</span><span class="k">)</span> 2&gt; /dev/null; <span class="k">then
</span><span class="nb">echo</span> <span class="s1">'Service already running'</span> &gt;&amp;2
<span class="k">return </span>1
<span class="k">fi
</span><span class="nb">echo</span> -n <span class="s1">'Starting service… '</span> &gt;&amp;2
<span class="nb">local </span><span class="nv">CMD</span><span class="o">=</span><span class="s2">"</span><span class="nv">$PRE_EXEC</span><span class="s2"> </span><span class="nv">$HASS_BIN</span><span class="s2"> </span><span class="nv">$FLAGS</span><span class="s2">;"</span>
su -s /bin/bash -c <span class="s2">"</span><span class="nv">$CMD</span><span class="s2">"</span> <span class="nv">$RUN_AS</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -ne 0 <span class="o">]</span>; <span class="k">then
</span><span class="nb">echo</span> <span class="s2">"Failed"</span> &gt;&amp;2
<span class="k">else
</span><span class="nb">echo</span> <span class="s1">'Done'</span> &gt;&amp;2
<span class="k">fi</span>
<span class="o">}</span>
stop() {
if [ ! -f "</span><span class="nv">$PID_FILE</span><span class="s2">" ] || ! kill -0 </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2"> 2&gt; /dev/null; then
echo 'Service not running' &gt;&amp;2
return 1
fi
echo 'Stopping service…' &gt;&amp;2
kill </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2">
while ps -p </span><span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span><span class="s2"> &gt; /dev/null 2&gt;&amp;1; do sleep 1;done;
echo 'Service stopped' &gt;&amp;2
}
stop<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -f <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span> <span class="o">]</span> <span class="o">||</span> ! <span class="nb">kill</span> -0 <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span> 2&gt; /dev/null; <span class="k">then
</span><span class="nb">echo</span> <span class="s1">'Service not running'</span> &gt;&amp;2
<span class="k">return </span>1
<span class="k">fi
</span><span class="nb">echo</span> -n <span class="s1">'Stopping service… '</span> &gt;&amp;2
<span class="nb">kill</span> <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span>
<span class="k">while </span>ps -p <span class="k">$(</span>cat <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span><span class="k">)</span> &gt; /dev/null 2&gt;&amp;1; <span class="k">do </span>sleep 1;done;
rm -f <span class="nv">$PID_FILE</span>
<span class="nb">echo</span> <span class="s1">'Done'</span> &gt;&amp;2
<span class="o">}</span>
install() {
echo "</span>Installing Home Assistant Daemon <span class="o">(</span>hass-daemon<span class="o">)</span><span class="s2">"
echo "</span>999999<span class="s2">" &gt; </span><span class="nv">$PID_FILE</span><span class="s2">
chown </span><span class="nv">$RUN_AS</span><span class="s2"> </span><span class="nv">$PID_FILE</span><span class="s2">
mkdir -p </span><span class="nv">$CONFIG_DIR</span><span class="s2">
chown </span><span class="nv">$RUN_AS</span><span class="s2"> </span><span class="nv">$CONFIG_DIR</span><span class="s2">
}
install<span class="o">()</span> <span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Installing Home Assistant Daemon (hass-daemon)"</span>
update-rc.d hass-daemon defaults
create_piddir
mkdir -p <span class="nv">$CONFIG_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="nv">$CONFIG_DIR</span>
mkdir -p <span class="nv">$LOG_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="nv">$LOG_DIR</span>
<span class="o">}</span>
uninstall() {
echo -n "</span>Are you really sure you want to uninstall this service? That cannot be undone. <span class="o">[</span>yes|No] <span class="s2">"
local SURE
read SURE
if [ "</span><span class="nv">$SURE</span><span class="s2">" = "</span>yes<span class="s2">" ]; then
stop
rm -fv "</span><span class="nv">$PID_FILE</span><span class="s2">"
echo "</span>Notice: The config directory has not been removed<span class="s2">"
echo </span><span class="nv">$CONFIG_DIR</span><span class="s2">
uninstall<span class="o">()</span> <span class="o">{</span>
<span class="nb">echo</span> <span class="s2">"Are you really sure you want to uninstall this service? The INIT script will"</span>
<span class="nb">echo</span> -n <span class="s2">"also be deleted! That cannot be undone. [yes|No] "</span>
<span class="nb">local </span>SURE
<span class="nb">read </span>SURE
<span class="k">if</span> <span class="o">[</span> <span class="s2">"</span><span class="nv">$SURE</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"yes"</span> <span class="o">]</span>; <span class="k">then
</span>stop
remove_piddir
<span class="nb">echo</span> <span class="s2">"Notice: The config directory has not been removed"</span>
<span class="nb">echo</span> <span class="nv">$CONFIG_DIR</span>
<span class="nb">echo</span> <span class="s2">"Notice: The log directory has not been removed"</span>
<span class="nb">echo</span> <span class="nv">$LOG_DIR</span>
update-rc.d -f hass-daemon remove
rm -fv "</span><span class="nv">$0</span><span class="s2">"
echo "</span>Home Assistant Daemon has been removed. Home Assistant is still installed.<span class="s2">"
fi
}
rm -fv <span class="s2">"</span><span class="nv">$0</span><span class="s2">"</span>
<span class="nb">echo</span> <span class="s2">"Home Assistant Daemon has been removed. Home Assistant is still installed."</span>
<span class="k">fi</span>
<span class="o">}</span>
case "</span><span class="nv">$1</span><span class="s2">" in
start)
create_piddir<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> ! -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span>mkdir -p <span class="nv">$PID_DIR</span>
chown <span class="nv">$RUN_AS</span> <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span>
<span class="k">fi</span>
<span class="o">}</span>
remove_piddir<span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">[</span> -d <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
if</span> <span class="o">[</span> -e <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
</span>rm -fv <span class="s2">"</span><span class="nv">$PID_FILE</span><span class="s2">"</span>
<span class="k">fi
</span>rmdir -fv <span class="s2">"</span><span class="nv">$PID_DIR</span><span class="s2">"</span>
<span class="k">fi</span>
<span class="o">}</span>
<span class="k">case</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span> <span class="k">in
</span>start<span class="p">)</span>
start
;;
stop)
<span class="p">;;</span>
stop<span class="p">)</span>
stop
;;
install)
<span class="p">;;</span>
install<span class="p">)</span>
install
;;
uninstall)
<span class="p">;;</span>
uninstall<span class="p">)</span>
uninstall
;;
restart)
<span class="p">;;</span>
restart<span class="p">)</span>
stop
start
;;
*)
echo "</span>Usage: <span class="nv">$0</span> <span class="o">{</span>start|stop|restart|install|uninstall<span class="o">}</span><span class="s2">"
esac
</span></code></pre>
<span class="p">;;</span>
<span class="k">*</span><span class="p">)</span>
<span class="nb">echo</span> <span class="s2">"Usage: </span><span class="nv">$0</span><span class="s2"> {start|stop|restart|install|uninstall}"</span>
<span class="k">esac</span>
</code></pre>
</div>
</article>
</div>

View file

@ -3910,7 +3910,7 @@
</url>
<url>
<loc>https://home-assistant.io/components/switch.hook/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/cookbook/automation_for_rainy_days/</loc>
@ -4594,99 +4594,99 @@
</url>
<url>
<loc>https://home-assistant.io/docs/autostart/init.d/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/api/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/configuration/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/example_apps/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/installation/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/operation/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/reboot/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/running/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/updating/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/appdaemon/windows/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/certificates/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/hadashboard/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/hass-configurator/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/ios/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/nginx/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/notebooks/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/scenegen/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/ecosystem/synology/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/tools/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/tools/dev-tools/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/tools/hass/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/docs/tools/scripts/</loc>
<lastmod>2018-01-18T21:28:03+00:00</lastmod>
<lastmod>2018-01-18T23:06:14+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/faq/after-upgrading/</loc>
@ -5826,62 +5826,62 @@
</url>
<url>
<loc>https://home-assistant.io/demo/frontend.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/index.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-dev-event.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-dev-info.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-dev-service.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-dev-state.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-dev-template.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-history.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-iframe.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-logbook.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/demo/panels/ha-panel-map.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/googlef4f3693c209fe788.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
<url>
<loc>https://home-assistant.io/static/mdi-demo.html</loc>
<lastmod>2018-01-18T21:27:10+00:00</lastmod>
<lastmod>2018-01-18T23:05:11+00:00</lastmod>
</url>
</urlset>