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

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