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

@ -91,18 +91,16 @@
<p>A sensor platform that issues specific commands to get data. This might become our most powerful platform as it allows anyone to integrate any type of sensor into Home Assistant that can get data from the command line.</p>
<p>To enable it, add the following lines to your <code>configuration.yaml</code>:</p>
<p>To enable it, add the following lines to your <code class="highlighter-rouge">configuration.yaml</code>:</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">sensor</span>:
<span class="key">platform</span>: <span class="string"><span class="content">command_line</span></span>
<span class="key">command</span>: <span class="string"><span class="content">SENSOR_COMMAND</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Command sensor</span></span>
<span class="key">unit_of_measurement</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">°C</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ value.x }}'</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">sensor</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
<span class="s">command</span><span class="pi">:</span> <span class="s">SENSOR_COMMAND</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Command sensor</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">°C"</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.x</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>
<p>Configuration variables:</p>
@ -122,100 +120,84 @@
<p>There are several ways to get the temperature of your hard drive. A simple solution is to use <a href="https://savannah.nongnu.org/projects/hddtemp/">hddtemp</a>.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ hddtemp -n /dev/sda
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>hddtemp -n /dev/sda
</code></pre>
</div>
<p>To use those information, the entry for a sensor in the <code>configuration.yaml</code> file will look like this.</p>
<p>To use those information, the entry for a sensor in the <code class="highlighter-rouge">configuration.yaml</code> file will look like this.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment"># Example configuration.yaml entry</span>
<span class="key">sensor</span>:
<span class="key">platform</span>: <span class="string"><span class="content">command_line</span></span>
<span class="key">name</span>: <span class="string"><span class="content">HD Temperature</span></span>
<span class="key">command</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">hddtemp -n /dev/sda</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">°C</span><span class="delimiter">&quot;</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">sensor</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">HD Temperature</span>
<span class="s">command</span><span class="pi">:</span> <span class="s2">"</span><span class="s">hddtemp</span><span class="nv"> </span><span class="s">-n</span><span class="nv"> </span><span class="s">/dev/sda"</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">°C"</span>
</code></pre>
</div>
<h3><a class="title-link" name="cpu-temperature" href="#cpu-temperature"></a> CPU temperature</h3>
<p>Thanks to the <a href="https://en.wikipedia.org/wiki/Procfs"><code>proc</code></a> file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your <code>configuration.yaml</code> file:</p>
<p>Thanks to the <a href="https://en.wikipedia.org/wiki/Procfs"><code class="highlighter-rouge">proc</code></a> file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar 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="string"><span class="content">platform: command_line</span></span>
<span class="key">name</span>: <span class="string"><span class="content">CPU Temperature</span></span>
<span class="key">command</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">cat /sys/class/thermal/thermal_zone0/temp</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">°C</span><span class="delimiter">&quot;</span></span>
<span class="key">value_template</span>: <span class="string"><span class="content">'{{ value | multiply(0.001) }}'</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="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">CPU Temperature</span>
<span class="s">command</span><span class="pi">:</span> <span class="s2">"</span><span class="s">cat</span><span class="nv"> </span><span class="s">/sys/class/thermal/thermal_zone0/temp"</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">°C"</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">multiply(0.001)</span><span class="nv"> </span><span class="s">}}'</span>
</code></pre>
</div>
<p>The <code>correction_factor</code> will make sure that the value is shown in a useful format in the frontend.</p>
<p>The <code class="highlighter-rouge">correction_factor</code> will make sure that the value is shown in a useful format in the frontend.</p>
<h3><a class="title-link" name="details-about-the-upstream-home-assistant-release" href="#details-about-the-upstream-home-assistant-release"></a> Details about the upstream Home Assistant release</h3>
<p>You can see directly in the frontend (<strong>Developer tools</strong> -&gt; <strong>About</strong>) what release of Home Assistant you are running. The Home Assistant releases are available on the <a href="https://pypi.python.org/pypi">Python Package Index</a>. This makes it possible to get the current release.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">platform: command_line</span></span>
<span class="key">command</span>: <span class="string"><span class="content">python3 -c &quot;import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="content">HA release</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">command_line</span>
<span class="s">command</span><span class="pi">:</span> <span class="s">python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">HA release</span>
</code></pre>
</div>
<h3><a class="title-link" name="read-value-out-of-a-remote-text-file" href="#read-value-out-of-a-remote-text-file"></a> Read value out of a remote text file</h3>
<p>If you own a devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensors value.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre> - <span class="string"><span class="content">platform: command_line</span></span>
<span class="key">command</span>: <span class="string"><span class="content">python3 -c &quot;import requests; print(requests.get('http://remote-host/sensor_data.txt').text)&quot;</span></span>
<span class="key">name</span>: <span class="string"><span class="content">File value</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">command_line</span>
<span class="s">command</span><span class="pi">:</span> <span class="s">python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)"</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">File value</span>
</code></pre>
</div>
<h3><a class="title-link" name="use-an-external-script" href="#use-an-external-script"></a> Use an external script</h3>
<p>The example is doing the same as the <a href="/components/sensor.arest/">aREST sensor</a> but with an external Python script. It should give you an idea about interacting with devices which are exposing a RESTful API.</p>
<p>The one-line script to retrieve a value is shown below. Of course would it be possible to use this directly in the <code>configuration.yaml</code> file but need extra care about the quotation marks.</p>
<p>The one-line script to retrieve a value is shown below. Of course would it be possible to use this directly in the <code class="highlighter-rouge">configuration.yaml</code> file but need extra care about the quotation marks.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre>$ python3 -c &quot;import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])&quot;
</pre></div>
</div>
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python3 -c <span class="s2">"import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"</span>
</code></pre>
</div>
<p>The script (saved as <code>arest-value.py</code>) that is used looks like the example below.</p>
<p>The script (saved as <code class="highlighter-rouge">arest-value.py</code>) that is used looks like the example below.</p>
<div class="highlighter-coderay"><div class="CodeRay">
<div class="code"><pre><span class="comment">#!/usr/bin/python3</span>
<span class="keyword">from</span> <span class="include">requests</span> <span class="keyword">import</span> <span class="include">get</span>
response = get(<span class="string"><span class="delimiter">'</span><span class="content">http://10.0.0.48/analog/2</span><span class="delimiter">'</span></span>)
print(response.json()[<span class="string"><span class="delimiter">'</span><span class="content">return_value</span><span class="delimiter">'</span></span>])
</pre></div>
</div>
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c">#!/usr/bin/python3</span>
<span class="kn">from</span> <span class="nn">requests</span> <span class="kn">import</span> <span class="n">get</span>
<span class="n">response</span> <span class="o">=</span> <span class="n">get</span><span class="p">(</span><span class="s">'http://10.0.0.48/analog/2'</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s">'return_value'</span><span class="p">])</span>
</code></pre>
</div>
<p>To use the script you need to add something like the following to your <code>configuration.yaml</code> file.</p>
<p>To use the script you need to add something like the following 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">sensor</span>:
<span class="key">platform</span>: <span class="string"><span class="content">command_line</span></span>
<span class="key">name</span>: <span class="string"><span class="content">Brightness</span></span>
<span class="key">command</span>: <span class="string"><span class="delimiter">&quot;</span><span class="content">python3 /path/to/script/arest-value.py</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">°C</span><span class="delimiter">&quot;</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">sensor</span><span class="pi">:</span>
<span class="s">platform</span><span class="pi">:</span> <span class="s">command_line</span>
<span class="s">name</span><span class="pi">:</span> <span class="s">Brightness</span>
<span class="s">command</span><span class="pi">:</span> <span class="s2">"</span><span class="s">python3</span><span class="nv"> </span><span class="s">/path/to/script/arest-value.py"</span>
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">°C"</span>
</code></pre>
</div>