Site updated at 2015-10-11 20:16:19 UTC
This commit is contained in:
parent
0cadd801b9
commit
0f05893e2c
57 changed files with 3700 additions and 559 deletions
399
atom.xml
399
atom.xml
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Home Assistant]]></title>
|
<title><![CDATA[Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
@ -13,6 +13,374 @@
|
||||||
<generator uri="http://octopress.org/">Octopress</generator>
|
<generator uri="http://octopress.org/">Octopress</generator>
|
||||||
|
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<title type="html"><![CDATA[Report the temperature with ESP8266 to MQTT]]></title>
|
||||||
|
<link href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"/>
|
||||||
|
<updated>2015-10-11T12:10:00-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt</id>
|
||||||
|
<content type="html"><![CDATA[<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="https://home-assistant.io/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
<span class='line-number'>19</span>
|
||||||
|
<span class='line-number'>20</span>
|
||||||
|
<span class='line-number'>21</span>
|
||||||
|
<span class='line-number'>22</span>
|
||||||
|
<span class='line-number'>23</span>
|
||||||
|
<span class='line-number'>24</span>
|
||||||
|
<span class='line-number'>25</span>
|
||||||
|
<span class='line-number'>26</span>
|
||||||
|
<span class='line-number'>27</span>
|
||||||
|
<span class='line-number'>28</span>
|
||||||
|
<span class='line-number'>29</span>
|
||||||
|
<span class='line-number'>30</span>
|
||||||
|
<span class='line-number'>31</span>
|
||||||
|
<span class='line-number'>32</span>
|
||||||
|
<span class='line-number'>33</span>
|
||||||
|
<span class='line-number'>34</span>
|
||||||
|
<span class='line-number'>35</span>
|
||||||
|
<span class='line-number'>36</span>
|
||||||
|
<span class='line-number'>37</span>
|
||||||
|
<span class='line-number'>38</span>
|
||||||
|
<span class='line-number'>39</span>
|
||||||
|
<span class='line-number'>40</span>
|
||||||
|
<span class='line-number'>41</span>
|
||||||
|
<span class='line-number'>42</span>
|
||||||
|
<span class='line-number'>43</span>
|
||||||
|
<span class='line-number'>44</span>
|
||||||
|
<span class='line-number'>45</span>
|
||||||
|
<span class='line-number'>46</span>
|
||||||
|
<span class='line-number'>47</span>
|
||||||
|
<span class='line-number'>48</span>
|
||||||
|
<span class='line-number'>49</span>
|
||||||
|
<span class='line-number'>50</span>
|
||||||
|
<span class='line-number'>51</span>
|
||||||
|
<span class='line-number'>52</span>
|
||||||
|
<span class='line-number'>53</span>
|
||||||
|
<span class='line-number'>54</span>
|
||||||
|
<span class='line-number'>55</span>
|
||||||
|
<span class='line-number'>56</span>
|
||||||
|
<span class='line-number'>57</span>
|
||||||
|
<span class='line-number'>58</span>
|
||||||
|
<span class='line-number'>59</span>
|
||||||
|
<span class='line-number'>60</span>
|
||||||
|
<span class='line-number'>61</span>
|
||||||
|
<span class='line-number'>62</span>
|
||||||
|
<span class='line-number'>63</span>
|
||||||
|
<span class='line-number'>64</span>
|
||||||
|
<span class='line-number'>65</span>
|
||||||
|
<span class='line-number'>66</span>
|
||||||
|
<span class='line-number'>67</span>
|
||||||
|
<span class='line-number'>68</span>
|
||||||
|
<span class='line-number'>69</span>
|
||||||
|
<span class='line-number'>70</span>
|
||||||
|
<span class='line-number'>71</span>
|
||||||
|
<span class='line-number'>72</span>
|
||||||
|
<span class='line-number'>73</span>
|
||||||
|
<span class='line-number'>74</span>
|
||||||
|
<span class='line-number'>75</span>
|
||||||
|
<span class='line-number'>76</span>
|
||||||
|
<span class='line-number'>77</span>
|
||||||
|
<span class='line-number'>78</span>
|
||||||
|
<span class='line-number'>79</span>
|
||||||
|
<span class='line-number'>80</span>
|
||||||
|
<span class='line-number'>81</span>
|
||||||
|
<span class='line-number'>82</span>
|
||||||
|
<span class='line-number'>83</span>
|
||||||
|
<span class='line-number'>84</span>
|
||||||
|
<span class='line-number'>85</span>
|
||||||
|
<span class='line-number'>86</span>
|
||||||
|
<span class='line-number'>87</span>
|
||||||
|
<span class='line-number'>88</span>
|
||||||
|
<span class='line-number'>89</span>
|
||||||
|
<span class='line-number'>90</span>
|
||||||
|
<span class='line-number'>91</span>
|
||||||
|
<span class='line-number'>92</span>
|
||||||
|
<span class='line-number'>93</span>
|
||||||
|
<span class='line-number'>94</span>
|
||||||
|
<span class='line-number'>95</span>
|
||||||
|
<span class='line-number'>96</span>
|
||||||
|
<span class='line-number'>97</span>
|
||||||
|
<span class='line-number'>98</span>
|
||||||
|
<span class='line-number'>99</span>
|
||||||
|
<span class='line-number'>100</span>
|
||||||
|
<span class='line-number'>101</span>
|
||||||
|
<span class='line-number'>102</span>
|
||||||
|
<span class='line-number'>103</span>
|
||||||
|
<span class='line-number'>104</span>
|
||||||
|
<span class='line-number'>105</span>
|
||||||
|
<span class='line-number'>106</span>
|
||||||
|
<span class='line-number'>107</span>
|
||||||
|
<span class='line-number'>108</span>
|
||||||
|
<span class='line-number'>109</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='cpp'><span class='line'><span class="cp">#include <ESP8266WiFi.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Wire.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <PubSubClient.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Adafruit_HDC1000.h></span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_ssid "YOUR WIFI SSID"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_password "WIFI PASSWORD"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_server "YOUR_MQTT_SERVER_HOST"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_user "your_username"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_password "your_password"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define humidity_topic "sensor/humidity"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define temperature_topic "sensor/temperature"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="n">WiFiClient</span> <span class="n">espClient</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="n">PubSubClient</span> <span class="nf">client</span><span class="p">(</span><span class="n">espClient</span><span class="p">);</span>
|
||||||
|
</span><span class='line'><span class="n">Adafruit_HDC1000</span> <span class="n">hdc</span> <span class="o">=</span> <span class="n">Adafruit_HDC1000</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">115200</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">setup_wifi</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">setServer</span><span class="p">(</span><span class="n">mqtt_server</span><span class="p">,</span> <span class="mi">1883</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Set SDA and SDL ports</span>
|
||||||
|
</span><span class='line'> <span class="n">Wire</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">14</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Start sensor</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">hdc</span><span class="p">.</span><span class="n">begin</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Couldn't find sensor!"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup_wifi</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// We start by connecting to a WiFi network</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Connecting to "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">WiFi</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">,</span> <span class="n">wifi_password</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">status</span><span class="p">()</span> <span class="o">!=</span> <span class="n">WL_CONNECTED</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">""</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"WiFi connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"IP address: "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">localIP</span><span class="p">());</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">reconnect</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Loop until we're reconnected</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Attempting MQTT connection..."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Attempt to connect</span>
|
||||||
|
</span><span class='line'> <span class="c1">// If you do not want to use a username and password, change next line to</span>
|
||||||
|
</span><span class='line'> <span class="c1">// if (client.connect("ESP8266Client")) {</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="s">"ESP8266Client"</span><span class="p">,</span> <span class="n">mqtt_user</span><span class="p">,</span> <span class="n">mqtt_password</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"failed, rc="</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">state</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">" try again in 5 seconds"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Wait 5 seconds before retrying</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">5000</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">bool</span> <span class="nf">checkBound</span><span class="p">(</span><span class="kt">float</span> <span class="n">newValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">prevValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">maxDiff</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">return</span> <span class="n">newValue</span> <span class="o"><</span> <span class="n">prevValue</span> <span class="o">-</span> <span class="n">maxDiff</span> <span class="o">||</span> <span class="n">newValue</span> <span class="o">></span> <span class="n">prevValue</span> <span class="o">+</span> <span class="n">maxDiff</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">long</span> <span class="n">lastMsg</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">temp</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">hum</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">diff</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">reconnect</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">long</span> <span class="n">now</span> <span class="o">=</span> <span class="n">millis</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">now</span> <span class="o">-</span> <span class="n">lastMsg</span> <span class="o">></span> <span class="mi">1000</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">lastMsg</span> <span class="o">=</span> <span class="n">now</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newTemp</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readTemperature</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newHum</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readHumidity</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newTemp</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">temp</span> <span class="o">=</span> <span class="n">newTemp</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New temperature:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">temperature_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newHum</span><span class="p">,</span> <span class="n">hum</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">hum</span> <span class="o">=</span> <span class="n">newHum</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New humidity:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">humidity_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">mqtt</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">broker</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">YOUR_MQTT_SERVER_HOST</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_username</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_password</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"ºC"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor 2</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"%"</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
]]></content>
|
||||||
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
<title type="html"><![CDATA[0.7.5: Blinkstick, SNMP, Telegram]]></title>
|
<title type="html"><![CDATA[0.7.5: Blinkstick, SNMP, Telegram]]></title>
|
||||||
<link href="https://home-assistant.io/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/"/>
|
<link href="https://home-assistant.io/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/"/>
|
||||||
|
@ -2463,35 +2831,6 @@ YAML allows the use of lists, which should make the configuration file a bit mor
|
||||||
<p>The home-assistant.conf.example has been replaced with an updated <a href="https://github.com/balloob/home-assistant/blob/dev/config/configuration.yaml.example">configuration.yaml.example</a>.</p>
|
<p>The home-assistant.conf.example has been replaced with an updated <a href="https://github.com/balloob/home-assistant/blob/dev/config/configuration.yaml.example">configuration.yaml.example</a>.</p>
|
||||||
|
|
||||||
<p>Users of Home Assistant should migrate as the old configuration format is deprecated.</p>
|
<p>Users of Home Assistant should migrate as the old configuration format is deprecated.</p>
|
||||||
]]></content>
|
|
||||||
</entry>
|
|
||||||
|
|
||||||
<entry>
|
|
||||||
<title type="html"><![CDATA[Streaming updates]]></title>
|
|
||||||
<link href="https://home-assistant.io/blog/2015/02/24/streaming-updates/"/>
|
|
||||||
<updated>2015-02-24T22:41:27-08:00</updated>
|
|
||||||
<id>https://home-assistant.io/blog/2015/02/24/streaming-updates</id>
|
|
||||||
<content type="html"><![CDATA[<p>Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.</p>
|
|
||||||
|
|
||||||
<p>A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.</p>
|
|
||||||
|
|
||||||
<p class='img'><img src='https://home-assistant.io/images/screenshots/streaming-updates.png' /></p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
|
|
||||||
<p>Streaming updates has been implemented using the HTML5 <code>EventSource</code> tag. Implementation is pretty straight forward as all the reconnection logic will be handled by the event source tag. The <a href="https://github.com/balloob/home-assistant/blob/master/homeassistant/components/api.py#L90">server-side code</a> is 50 lines and the <a href="https://github.com/balloob/home-assistant-js/blob/master/src/actions/stream.js">client-side code</a> is 80 lines of code.</p>
|
|
||||||
|
|
||||||
<p>All events that happen on the server will now also be sent to the browser. This turns any browser running the UI into a fully functioning <a href="https://home-assistant.io/developers/architecture.html#multiple-connected-instances">slave instance</a> of Home Assistant. This opens up new possibilities for Home Assistant components that live completely client-side.</p>
|
|
||||||
|
|
||||||
<p>Implementing EventSource was not without challenges. Here are some of the issues that had to be solved:</p>
|
|
||||||
|
|
||||||
<p>A connection can go stale in Chrome without any event handler being called. This happens when a device goes into standby. For computers this is rare but for phones this occurs quite often. This has been solved by sending a regular ping from the server. The frontend will assume the connection has gone stale when it hasn’t heard any communication for a while. Sending a ping will also help the server detect broken connections and clean them up.</p>
|
|
||||||
|
|
||||||
<p>Another issue that I encountered is that Safari and Firefox would not fire the <code>open</code> event when the connection has been opened but when the first message has been received. To work around this the server will now fire a ping when the connection gets opened.</p>
|
|
||||||
]]></content>
|
]]></content>
|
||||||
</entry>
|
</entry>
|
||||||
|
|
||||||
|
|
|
@ -215,6 +215,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -238,12 +244,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -277,6 +277,12 @@ This article will try to explain how they all relate.</p>
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -300,12 +306,6 @@ This article will try to explain how they all relate.</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -259,6 +259,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -282,12 +288,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -227,6 +227,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -250,12 +256,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -234,6 +234,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -257,12 +263,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -239,6 +239,12 @@ Home Assistant now supports <code>--open-ui</code> and <code>--demo-mode</code>
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -262,12 +268,6 @@ Home Assistant now supports <code>--open-ui</code> and <code>--demo-mode</code>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -257,6 +257,12 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -280,12 +286,6 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -235,6 +235,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -258,12 +264,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -222,6 +222,12 @@ YAML allows the use of lists, which should make the configuration file a bit mor
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -245,12 +251,6 @@ YAML allows the use of lists, which should make the configuration file a bit mor
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -223,6 +223,12 @@ The old logo, the new detailed logo and the new simple logo.
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -246,12 +252,6 @@ The old logo, the new detailed logo and the new simple logo.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -269,6 +269,12 @@ An initial version of voice control for Home Assistant has landed. The current i
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -292,12 +298,6 @@ An initial version of voice control for Home Assistant has landed. The current i
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -342,6 +342,12 @@ James Cole has also contributed support for <a href='https://pushover.net/'>the
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -365,12 +371,6 @@ James Cole has also contributed support for <a href='https://pushover.net/'>the
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -358,6 +358,12 @@ James has also contributed support for integrating Transmission into Home Assist
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -381,12 +387,6 @@ James has also contributed support for integrating Transmission into Home Assist
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -247,6 +247,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -270,12 +276,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -384,6 +384,12 @@ Before diving into the newly supported devices and services, I want to highlight
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -407,12 +413,6 @@ Before diving into the newly supported devices and services, I want to highlight
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -463,6 +463,12 @@ This switch platform allows you to control your motion detection setting on your
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -486,12 +492,6 @@ This switch platform allows you to control your motion detection setting on your
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -407,6 +407,12 @@ Fabian has added support for <a href="https://forecast.io/">Forecast.io</a> to g
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -430,12 +436,6 @@ Fabian has added support for <a href="https://forecast.io/">Forecast.io</a> to g
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -370,6 +370,12 @@ Support for Temper temperature sensors has been contributed by <a href="https://
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -393,12 +399,6 @@ Support for Temper temperature sensors has been contributed by <a href="https://
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -248,6 +248,12 @@ Home Assistant support to integrate your <a href="https://www.verisure.com/">Ver
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -271,12 +277,6 @@ Home Assistant support to integrate your <a href="https://www.verisure.com/">Ver
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -432,6 +432,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -455,12 +461,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -378,6 +378,12 @@ or AM2302 device.</p>
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -401,12 +407,6 @@ or AM2302 device.</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -132,6 +132,8 @@
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</span>
|
</span>
|
||||||
|
@ -517,6 +519,12 @@ The <a href="https://en.wikipedia.org/wiki/MQTT">MQTT</a> support was added to H
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -540,12 +548,6 @@ The <a href="https://en.wikipedia.org/wiki/MQTT">MQTT</a> support was added to H
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -417,6 +417,12 @@ Setup Maker channel with event name <code>HA_FIRE_ALARM</code> and Twitter chann
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -440,8 +446,6 @@ Setup Maker channel with event name <code>HA_FIRE_ALARM</code> and Twitter chann
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -297,6 +297,12 @@ Inspried by a <a href="https://github.com/balloob/home-assistant/issues/310">fea
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -316,12 +322,6 @@ Inspried by a <a href="https://github.com/balloob/home-assistant/issues/310">fea
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -305,6 +305,12 @@ support by <a href="https://github.com/persandstrom">@persandstrom</a>.</p>
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -324,12 +330,6 @@ support by <a href="https://github.com/persandstrom">@persandstrom</a>.</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -251,6 +251,12 @@ short summary of highlights:</p>
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -270,12 +276,6 @@ short summary of highlights:</p>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,673 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<title>Report the temperature with ESP8266 to MQTT - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Step by step tutorial to use ESP8266 and a HDC1008 to .">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt">
|
||||||
|
|
||||||
|
<meta property="fb:app_id" content="338291289691179">
|
||||||
|
<meta property="og:title" content="Report the temperature with ESP8266 to MQTT">
|
||||||
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
|
<meta property="og:url" content="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">
|
||||||
|
<meta property="og:type" content="article">
|
||||||
|
<meta property="og:description" content="Step by step tutorial to use ESP8266 and a HDC1008 to .">
|
||||||
|
<meta property="og:image" content="https://home-assistant.io/images/blog/2015-10-esp8266-temp/ha-sensor.png">
|
||||||
|
|
||||||
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||||
|
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||||
|
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body >
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
|
<a href="/" class="site-title">
|
||||||
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
|
<nav>
|
||||||
|
<input type="checkbox" id="toggle">
|
||||||
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
|
<ul class="menu pull-right">
|
||||||
|
<li>
|
||||||
|
<a href="/getting-started/">Getting started</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href='/getting-started/'>Installing Home Assistant</a></li>
|
||||||
|
<li><a href='/getting-started/configuration.html'>Configuration basics</a></li>
|
||||||
|
<li><a href='/getting-started/devices.html'>Adding devices</a></li>
|
||||||
|
<li><a href='/getting-started/presence-detection.html'>Presence detection</a></li>
|
||||||
|
<li><a href='/getting-started/automation.html'>Automation</a></li>
|
||||||
|
<li><a href='/cookbook'>Configuration cookbook</a></li>
|
||||||
|
<li><a href='/components/'>Component overview</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">API</a></li>
|
||||||
|
<li><a href="/developers/credits.html">Credits</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="/help/">Need help?</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid grid-center">
|
||||||
|
|
||||||
|
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||||
|
|
||||||
|
|
||||||
|
<article class="post">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<h1 class="title indent">Report the temperature with ESP8266 to MQTT</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="meta clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate data-updated="true"><i class="icon-calendar"></i> October 11, 2015</time>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
||||||
|
|
||||||
|
<span><i class='icon-time'></i> nine minutes reading time</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<a class='comments'
|
||||||
|
href="#disqus_thread"
|
||||||
|
>Comments</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
<span class='line-number'>19</span>
|
||||||
|
<span class='line-number'>20</span>
|
||||||
|
<span class='line-number'>21</span>
|
||||||
|
<span class='line-number'>22</span>
|
||||||
|
<span class='line-number'>23</span>
|
||||||
|
<span class='line-number'>24</span>
|
||||||
|
<span class='line-number'>25</span>
|
||||||
|
<span class='line-number'>26</span>
|
||||||
|
<span class='line-number'>27</span>
|
||||||
|
<span class='line-number'>28</span>
|
||||||
|
<span class='line-number'>29</span>
|
||||||
|
<span class='line-number'>30</span>
|
||||||
|
<span class='line-number'>31</span>
|
||||||
|
<span class='line-number'>32</span>
|
||||||
|
<span class='line-number'>33</span>
|
||||||
|
<span class='line-number'>34</span>
|
||||||
|
<span class='line-number'>35</span>
|
||||||
|
<span class='line-number'>36</span>
|
||||||
|
<span class='line-number'>37</span>
|
||||||
|
<span class='line-number'>38</span>
|
||||||
|
<span class='line-number'>39</span>
|
||||||
|
<span class='line-number'>40</span>
|
||||||
|
<span class='line-number'>41</span>
|
||||||
|
<span class='line-number'>42</span>
|
||||||
|
<span class='line-number'>43</span>
|
||||||
|
<span class='line-number'>44</span>
|
||||||
|
<span class='line-number'>45</span>
|
||||||
|
<span class='line-number'>46</span>
|
||||||
|
<span class='line-number'>47</span>
|
||||||
|
<span class='line-number'>48</span>
|
||||||
|
<span class='line-number'>49</span>
|
||||||
|
<span class='line-number'>50</span>
|
||||||
|
<span class='line-number'>51</span>
|
||||||
|
<span class='line-number'>52</span>
|
||||||
|
<span class='line-number'>53</span>
|
||||||
|
<span class='line-number'>54</span>
|
||||||
|
<span class='line-number'>55</span>
|
||||||
|
<span class='line-number'>56</span>
|
||||||
|
<span class='line-number'>57</span>
|
||||||
|
<span class='line-number'>58</span>
|
||||||
|
<span class='line-number'>59</span>
|
||||||
|
<span class='line-number'>60</span>
|
||||||
|
<span class='line-number'>61</span>
|
||||||
|
<span class='line-number'>62</span>
|
||||||
|
<span class='line-number'>63</span>
|
||||||
|
<span class='line-number'>64</span>
|
||||||
|
<span class='line-number'>65</span>
|
||||||
|
<span class='line-number'>66</span>
|
||||||
|
<span class='line-number'>67</span>
|
||||||
|
<span class='line-number'>68</span>
|
||||||
|
<span class='line-number'>69</span>
|
||||||
|
<span class='line-number'>70</span>
|
||||||
|
<span class='line-number'>71</span>
|
||||||
|
<span class='line-number'>72</span>
|
||||||
|
<span class='line-number'>73</span>
|
||||||
|
<span class='line-number'>74</span>
|
||||||
|
<span class='line-number'>75</span>
|
||||||
|
<span class='line-number'>76</span>
|
||||||
|
<span class='line-number'>77</span>
|
||||||
|
<span class='line-number'>78</span>
|
||||||
|
<span class='line-number'>79</span>
|
||||||
|
<span class='line-number'>80</span>
|
||||||
|
<span class='line-number'>81</span>
|
||||||
|
<span class='line-number'>82</span>
|
||||||
|
<span class='line-number'>83</span>
|
||||||
|
<span class='line-number'>84</span>
|
||||||
|
<span class='line-number'>85</span>
|
||||||
|
<span class='line-number'>86</span>
|
||||||
|
<span class='line-number'>87</span>
|
||||||
|
<span class='line-number'>88</span>
|
||||||
|
<span class='line-number'>89</span>
|
||||||
|
<span class='line-number'>90</span>
|
||||||
|
<span class='line-number'>91</span>
|
||||||
|
<span class='line-number'>92</span>
|
||||||
|
<span class='line-number'>93</span>
|
||||||
|
<span class='line-number'>94</span>
|
||||||
|
<span class='line-number'>95</span>
|
||||||
|
<span class='line-number'>96</span>
|
||||||
|
<span class='line-number'>97</span>
|
||||||
|
<span class='line-number'>98</span>
|
||||||
|
<span class='line-number'>99</span>
|
||||||
|
<span class='line-number'>100</span>
|
||||||
|
<span class='line-number'>101</span>
|
||||||
|
<span class='line-number'>102</span>
|
||||||
|
<span class='line-number'>103</span>
|
||||||
|
<span class='line-number'>104</span>
|
||||||
|
<span class='line-number'>105</span>
|
||||||
|
<span class='line-number'>106</span>
|
||||||
|
<span class='line-number'>107</span>
|
||||||
|
<span class='line-number'>108</span>
|
||||||
|
<span class='line-number'>109</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='cpp'><span class='line'><span class="cp">#include <ESP8266WiFi.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Wire.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <PubSubClient.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Adafruit_HDC1000.h></span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_ssid "YOUR WIFI SSID"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_password "WIFI PASSWORD"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_server "YOUR_MQTT_SERVER_HOST"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_user "your_username"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_password "your_password"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define humidity_topic "sensor/humidity"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define temperature_topic "sensor/temperature"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="n">WiFiClient</span> <span class="n">espClient</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="n">PubSubClient</span> <span class="nf">client</span><span class="p">(</span><span class="n">espClient</span><span class="p">);</span>
|
||||||
|
</span><span class='line'><span class="n">Adafruit_HDC1000</span> <span class="n">hdc</span> <span class="o">=</span> <span class="n">Adafruit_HDC1000</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">115200</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">setup_wifi</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">setServer</span><span class="p">(</span><span class="n">mqtt_server</span><span class="p">,</span> <span class="mi">1883</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Set SDA and SDL ports</span>
|
||||||
|
</span><span class='line'> <span class="n">Wire</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">14</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Start sensor</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">hdc</span><span class="p">.</span><span class="n">begin</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Couldn't find sensor!"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup_wifi</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// We start by connecting to a WiFi network</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Connecting to "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">WiFi</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">,</span> <span class="n">wifi_password</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">status</span><span class="p">()</span> <span class="o">!=</span> <span class="n">WL_CONNECTED</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">""</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"WiFi connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"IP address: "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">localIP</span><span class="p">());</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">reconnect</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Loop until we're reconnected</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Attempting MQTT connection..."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Attempt to connect</span>
|
||||||
|
</span><span class='line'> <span class="c1">// If you do not want to use a username and password, change next line to</span>
|
||||||
|
</span><span class='line'> <span class="c1">// if (client.connect("ESP8266Client")) {</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="s">"ESP8266Client"</span><span class="p">,</span> <span class="n">mqtt_user</span><span class="p">,</span> <span class="n">mqtt_password</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"failed, rc="</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">state</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">" try again in 5 seconds"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Wait 5 seconds before retrying</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">5000</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">bool</span> <span class="nf">checkBound</span><span class="p">(</span><span class="kt">float</span> <span class="n">newValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">prevValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">maxDiff</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">return</span> <span class="n">newValue</span> <span class="o"><</span> <span class="n">prevValue</span> <span class="o">-</span> <span class="n">maxDiff</span> <span class="o">||</span> <span class="n">newValue</span> <span class="o">></span> <span class="n">prevValue</span> <span class="o">+</span> <span class="n">maxDiff</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">long</span> <span class="n">lastMsg</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">temp</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">hum</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">diff</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">reconnect</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">long</span> <span class="n">now</span> <span class="o">=</span> <span class="n">millis</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">now</span> <span class="o">-</span> <span class="n">lastMsg</span> <span class="o">></span> <span class="mi">1000</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">lastMsg</span> <span class="o">=</span> <span class="n">now</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newTemp</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readTemperature</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newHum</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readHumidity</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newTemp</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">temp</span> <span class="o">=</span> <span class="n">newTemp</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New temperature:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">temperature_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newHum</span><span class="p">,</span> <span class="n">hum</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">hum</span> <span class="o">=</span> <span class="n">newHum</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New humidity:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">humidity_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">mqtt</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">broker</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">YOUR_MQTT_SERVER_HOST</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_username</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_password</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"ºC"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor 2</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"%"</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
<section id="disqus">
|
||||||
|
<h3 class="indent title">Comments</h3>
|
||||||
|
<div id="disqus_thread" aria-live="polite"><noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section class="sharing aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Share this post</h1>
|
||||||
|
|
||||||
|
<a href="//twitter.com/share"
|
||||||
|
class="twitter-share-button"
|
||||||
|
data-url="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"
|
||||||
|
data-counturl="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/" >Tweet</a>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="g-plusone" data-size="standard"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="fb-share-button" style='top: -6px;'
|
||||||
|
data-href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"
|
||||||
|
data-layout="button_count">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
||||||
|
|
||||||
|
<script src="https://apis.google.com/js/platform.js" async defer></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.fbAsyncInit = function() {
|
||||||
|
FB.init({
|
||||||
|
appId : '338291289691179',
|
||||||
|
xfbml : true,
|
||||||
|
version : 'v2.2'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(d, s, id){
|
||||||
|
var js, fjs = d.getElementsByTagName(s)[0];
|
||||||
|
if (d.getElementById(id)) {return;}
|
||||||
|
js = d.createElement(s); js.id = id;
|
||||||
|
js.src = "//connect.facebook.net/en_US/sdk.js";
|
||||||
|
fjs.parentNode.insertBefore(js, fjs);
|
||||||
|
}(document, 'script', 'facebook-jssdk'));
|
||||||
|
</script>
|
||||||
|
<section id="recent-posts" class="aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Other Posts</h1>
|
||||||
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/">Home Assistant goes geo with OwnTracks</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/19/alarm-sonos-and-itunes-support/">Alarms, Sonos and iTunes now supported</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/18/monitoring-with-glances-and-home-assistant/">Remote Monitoring with Glances</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||||
|
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||||
|
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||||
|
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var disqus_shortname = 'home-assistant';
|
||||||
|
|
||||||
|
|
||||||
|
// var disqus_developer = 1;
|
||||||
|
var disqus_identifier = 'https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/';
|
||||||
|
var disqus_url = 'https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/';
|
||||||
|
var disqus_script = 'embed.js';
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||||
|
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
|
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -239,6 +239,12 @@ This has been implemented for the <a href="/components/media_player.itunes.html"
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
|
@ -258,12 +264,6 @@ This has been implemented for the <a href="/components/media_player.itunes.html"
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<meta property="og:site_name" content="Home Assistant">
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
<meta property="og:url" content="https://home-assistant.io/blog/archives/">
|
<meta property="og:url" content="https://home-assistant.io/blog/archives/">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:description" content="Blog Index 2015 Oct 11 0.7.5: Blinkstick, SNMP, Telegram release-notes Oct 05 Home Assistant goes geo with OwnTracks release-notes Sep 19 Alarms, Sonos and iTunes now supported release-notes Sep 18 …">
|
<meta property="og:description" content="Blog Index 2015 Oct 11 Report the temperature with ESP8266 to MQTT esp8266 how-to mqtt Oct 11 0.7.5: Blinkstick, SNMP, Telegram release-notes Oct 05 Home Assistant goes geo with OwnTracks release- …">
|
||||||
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
@ -117,6 +117,47 @@
|
||||||
<article>
|
<article>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate>
|
||||||
|
<span class='month'>Oct</span> <span class='day'>11</span>
|
||||||
|
</time>
|
||||||
|
</div>
|
||||||
|
<div class="grid__item four-fifths palm-one-whole">
|
||||||
|
<h1 class="gamma"><a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a></h1>
|
||||||
|
|
||||||
|
<footer class="meta">
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<hr class="divider">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item one-fifth palm-one-whole">
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
@ -324,6 +365,8 @@
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</span>
|
</span>
|
||||||
|
@ -1178,6 +1221,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -1201,12 +1250,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: architecture | Home Assistant]]></title>
|
<title><![CDATA[Category: architecture | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/architecture/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/architecture/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -209,6 +209,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -232,12 +238,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: branding | Home Assistant]]></title>
|
<title><![CDATA[Category: branding | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/branding/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/branding/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -209,6 +209,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -232,12 +238,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: component | Home Assistant]]></title>
|
<title><![CDATA[Category: component | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/component/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/component/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -322,6 +322,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -345,12 +351,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: core | Home Assistant]]></title>
|
<title><![CDATA[Category: core | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/core/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/core/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -246,6 +246,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -269,12 +275,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
256
blog/categories/esp8266/atom.xml
Normal file
256
blog/categories/esp8266/atom.xml
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
|
||||||
|
<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>2015-10-11T13:16:06-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/</id>
|
||||||
|
<author>
|
||||||
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
||||||
|
</author>
|
||||||
|
<generator uri="http://octopress.org/">Octopress</generator>
|
||||||
|
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<title type="html"><![CDATA[Report the temperature with ESP8266 to MQTT]]></title>
|
||||||
|
<link href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"/>
|
||||||
|
<updated>2015-10-11T12:10:00-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt</id>
|
||||||
|
<content type="html"><![CDATA[<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<pre><code class="cpp">
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <PubSubClient.h>
|
||||||
|
#include <Adafruit_HDC1000.h>
|
||||||
|
|
||||||
|
#define wifi_ssid "YOUR WIFI SSID"
|
||||||
|
#define wifi_password "WIFI PASSWORD"
|
||||||
|
|
||||||
|
#define mqtt_server "YOUR_MQTT_SERVER_HOST"
|
||||||
|
#define mqtt_user "your_username"
|
||||||
|
#define mqtt_password "your_password"
|
||||||
|
|
||||||
|
#define humidity_topic "sensor/humidity"
|
||||||
|
#define temperature_topic "sensor/temperature"
|
||||||
|
|
||||||
|
WiFiClient espClient;
|
||||||
|
PubSubClient client(espClient);
|
||||||
|
Adafruit_HDC1000 hdc = Adafruit_HDC1000();
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
setup_wifi();
|
||||||
|
client.setServer(mqtt_server, 1883);
|
||||||
|
|
||||||
|
// Set SDA and SDL ports
|
||||||
|
Wire.begin(2, 14);
|
||||||
|
|
||||||
|
// Start sensor
|
||||||
|
if (!hdc.begin()) {
|
||||||
|
Serial.println("Couldn't find sensor!");
|
||||||
|
while (1);
|
||||||
|
}}
|
||||||
|
|
||||||
|
void setup_wifi() {
|
||||||
|
delay(10);
|
||||||
|
// We start by connecting to a WiFi network
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Connecting to ");
|
||||||
|
Serial.println(wifi_ssid);
|
||||||
|
|
||||||
|
WiFi.begin(wifi_ssid, wifi_password);
|
||||||
|
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("");
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
Serial.println("IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
}
|
||||||
|
|
||||||
|
void reconnect() {
|
||||||
|
// Loop until we're reconnected
|
||||||
|
while (!client.connected()) {
|
||||||
|
Serial.print("Attempting MQTT connection...");
|
||||||
|
// Attempt to connect
|
||||||
|
// If you do not want to use a username and password, change next line to
|
||||||
|
// if (client.connect("ESP8266Client")) {
|
||||||
|
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
|
||||||
|
Serial.println("connected");
|
||||||
|
} else {
|
||||||
|
Serial.print("failed, rc=");
|
||||||
|
Serial.print(client.state());
|
||||||
|
Serial.println(" try again in 5 seconds");
|
||||||
|
// Wait 5 seconds before retrying
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkBound(float newValue, float prevValue, float maxDiff) {
|
||||||
|
return newValue < prevValue - maxDiff || newValue > prevValue + maxDiff;
|
||||||
|
}
|
||||||
|
|
||||||
|
long lastMsg = 0;
|
||||||
|
float temp = 0.0;
|
||||||
|
float hum = 0.0;
|
||||||
|
float diff = 1.0;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (!client.connected()) {
|
||||||
|
reconnect();
|
||||||
|
}
|
||||||
|
client.loop();
|
||||||
|
|
||||||
|
long now = millis();
|
||||||
|
if (now - lastMsg > 1000) {
|
||||||
|
lastMsg = now;
|
||||||
|
|
||||||
|
float newTemp = hdc.readTemperature();
|
||||||
|
float newHum = hdc.readHumidity();
|
||||||
|
|
||||||
|
if (checkBound(newTemp, temp, diff)) {
|
||||||
|
temp = newTemp;
|
||||||
|
Serial.print("New temperature:");
|
||||||
|
Serial.println(String(temp).c_str());
|
||||||
|
client.publish(temperature_topic, String(temp).c_str(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkBound(newHum, hum, diff)) {
|
||||||
|
hum = newHum;
|
||||||
|
Serial.print("New humidity:");
|
||||||
|
Serial.println(String(hum).c_str());
|
||||||
|
client.publish(humidity_topic, String(hum).c_str(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml">mqtt:
|
||||||
|
broker: YOUR_MQTT_SERVER_HOST
|
||||||
|
username: your_username
|
||||||
|
password: your_password
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Temperature"
|
||||||
|
state_topic: "sensor/temperature"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "ºC"
|
||||||
|
|
||||||
|
sensor 2:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Humidity"
|
||||||
|
state_topic: "sensor/humidity"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
</code></pre>
|
||||||
|
]]></content>
|
||||||
|
</entry>
|
||||||
|
|
||||||
|
</feed>
|
309
blog/categories/esp8266/index.html
Normal file
309
blog/categories/esp8266/index.html
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<title>Category: esp8266 - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Category: esp8266">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io/blog/categories/esp8266">
|
||||||
|
|
||||||
|
<meta property="fb:app_id" content="338291289691179">
|
||||||
|
<meta property="og:title" content="Category: esp8266">
|
||||||
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
|
<meta property="og:url" content="https://home-assistant.io/blog/categories/esp8266/">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:description" content="Category: esp8266">
|
||||||
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||||
|
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||||
|
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body >
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
|
<a href="/" class="site-title">
|
||||||
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
|
<nav>
|
||||||
|
<input type="checkbox" id="toggle">
|
||||||
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
|
<ul class="menu pull-right">
|
||||||
|
<li>
|
||||||
|
<a href="/getting-started/">Getting started</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href='/getting-started/'>Installing Home Assistant</a></li>
|
||||||
|
<li><a href='/getting-started/configuration.html'>Configuration basics</a></li>
|
||||||
|
<li><a href='/getting-started/devices.html'>Adding devices</a></li>
|
||||||
|
<li><a href='/getting-started/presence-detection.html'>Presence detection</a></li>
|
||||||
|
<li><a href='/getting-started/automation.html'>Automation</a></li>
|
||||||
|
<li><a href='/cookbook'>Configuration cookbook</a></li>
|
||||||
|
<li><a href='/components/'>Component overview</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">API</a></li>
|
||||||
|
<li><a href="/developers/credits.html">Credits</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="/help/">Need help?</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid grid-center">
|
||||||
|
|
||||||
|
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||||
|
|
||||||
|
|
||||||
|
<article class="page">
|
||||||
|
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1 class="title indent">
|
||||||
|
Category: Esp8266
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="archive-list">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>2015</h2>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate>
|
||||||
|
<span class='month'>Oct</span> <span class='day'>11</span>
|
||||||
|
</time>
|
||||||
|
</div>
|
||||||
|
<div class="grid__item four-fifths palm-one-whole">
|
||||||
|
<h1 class="gamma"><a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a></h1>
|
||||||
|
|
||||||
|
<footer class="meta">
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<hr class="divider">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section class="sharing aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Share this post</h1>
|
||||||
|
|
||||||
|
<a href="//twitter.com/share"
|
||||||
|
class="twitter-share-button"
|
||||||
|
data-url="https://home-assistant.io/blog/categories/esp8266/index.html"
|
||||||
|
data-counturl="https://home-assistant.io/blog/categories/esp8266/index.html" >Tweet</a>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="g-plusone" data-size="standard"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="fb-share-button" style='top: -6px;'
|
||||||
|
data-href="https://home-assistant.io/blog/categories/esp8266/index.html"
|
||||||
|
data-layout="button_count">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
||||||
|
|
||||||
|
<script src="https://apis.google.com/js/platform.js" async defer></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.fbAsyncInit = function() {
|
||||||
|
FB.init({
|
||||||
|
appId : '338291289691179',
|
||||||
|
xfbml : true,
|
||||||
|
version : 'v2.2'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(d, s, id){
|
||||||
|
var js, fjs = d.getElementsByTagName(s)[0];
|
||||||
|
if (d.getElementById(id)) {return;}
|
||||||
|
js = d.createElement(s); js.id = id;
|
||||||
|
js.src = "//connect.facebook.net/en_US/sdk.js";
|
||||||
|
fjs.parentNode.insertBefore(js, fjs);
|
||||||
|
}(document, 'script', 'facebook-jssdk'));
|
||||||
|
</script>
|
||||||
|
<section id="recent-posts" class="aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Other Posts</h1>
|
||||||
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/">Home Assistant goes geo with OwnTracks</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/19/alarm-sonos-and-itunes-support/">Alarms, Sonos and iTunes now supported</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/18/monitoring-with-glances-and-home-assistant/">Remote Monitoring with Glances</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||||
|
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||||
|
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||||
|
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var disqus_shortname = 'home-assistant';
|
||||||
|
|
||||||
|
|
||||||
|
var disqus_script = 'count.js';
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||||
|
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
|
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: frontend | Home Assistant]]></title>
|
<title><![CDATA[Category: frontend | Home Assistant]]></title>
|
||||||
<link href="https://home-assistant.io/blog/categories/frontend/atom.xml" rel="self"/>
|
<link href="https://home-assistant.io/blog/categories/frontend/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -248,6 +248,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -271,12 +277,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: how-to | Home Assistant]]></title>
|
<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/blog/categories/how-to/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
@ -13,6 +13,246 @@
|
||||||
<generator uri="http://octopress.org/">Octopress</generator>
|
<generator uri="http://octopress.org/">Octopress</generator>
|
||||||
|
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<title type="html"><![CDATA[Report the temperature with ESP8266 to MQTT]]></title>
|
||||||
|
<link href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"/>
|
||||||
|
<updated>2015-10-11T12:10:00-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt</id>
|
||||||
|
<content type="html"><![CDATA[<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<pre><code class="cpp">
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <PubSubClient.h>
|
||||||
|
#include <Adafruit_HDC1000.h>
|
||||||
|
|
||||||
|
#define wifi_ssid "YOUR WIFI SSID"
|
||||||
|
#define wifi_password "WIFI PASSWORD"
|
||||||
|
|
||||||
|
#define mqtt_server "YOUR_MQTT_SERVER_HOST"
|
||||||
|
#define mqtt_user "your_username"
|
||||||
|
#define mqtt_password "your_password"
|
||||||
|
|
||||||
|
#define humidity_topic "sensor/humidity"
|
||||||
|
#define temperature_topic "sensor/temperature"
|
||||||
|
|
||||||
|
WiFiClient espClient;
|
||||||
|
PubSubClient client(espClient);
|
||||||
|
Adafruit_HDC1000 hdc = Adafruit_HDC1000();
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
setup_wifi();
|
||||||
|
client.setServer(mqtt_server, 1883);
|
||||||
|
|
||||||
|
// Set SDA and SDL ports
|
||||||
|
Wire.begin(2, 14);
|
||||||
|
|
||||||
|
// Start sensor
|
||||||
|
if (!hdc.begin()) {
|
||||||
|
Serial.println("Couldn't find sensor!");
|
||||||
|
while (1);
|
||||||
|
}}
|
||||||
|
|
||||||
|
void setup_wifi() {
|
||||||
|
delay(10);
|
||||||
|
// We start by connecting to a WiFi network
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Connecting to ");
|
||||||
|
Serial.println(wifi_ssid);
|
||||||
|
|
||||||
|
WiFi.begin(wifi_ssid, wifi_password);
|
||||||
|
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("");
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
Serial.println("IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
}
|
||||||
|
|
||||||
|
void reconnect() {
|
||||||
|
// Loop until we're reconnected
|
||||||
|
while (!client.connected()) {
|
||||||
|
Serial.print("Attempting MQTT connection...");
|
||||||
|
// Attempt to connect
|
||||||
|
// If you do not want to use a username and password, change next line to
|
||||||
|
// if (client.connect("ESP8266Client")) {
|
||||||
|
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
|
||||||
|
Serial.println("connected");
|
||||||
|
} else {
|
||||||
|
Serial.print("failed, rc=");
|
||||||
|
Serial.print(client.state());
|
||||||
|
Serial.println(" try again in 5 seconds");
|
||||||
|
// Wait 5 seconds before retrying
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkBound(float newValue, float prevValue, float maxDiff) {
|
||||||
|
return newValue < prevValue - maxDiff || newValue > prevValue + maxDiff;
|
||||||
|
}
|
||||||
|
|
||||||
|
long lastMsg = 0;
|
||||||
|
float temp = 0.0;
|
||||||
|
float hum = 0.0;
|
||||||
|
float diff = 1.0;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (!client.connected()) {
|
||||||
|
reconnect();
|
||||||
|
}
|
||||||
|
client.loop();
|
||||||
|
|
||||||
|
long now = millis();
|
||||||
|
if (now - lastMsg > 1000) {
|
||||||
|
lastMsg = now;
|
||||||
|
|
||||||
|
float newTemp = hdc.readTemperature();
|
||||||
|
float newHum = hdc.readHumidity();
|
||||||
|
|
||||||
|
if (checkBound(newTemp, temp, diff)) {
|
||||||
|
temp = newTemp;
|
||||||
|
Serial.print("New temperature:");
|
||||||
|
Serial.println(String(temp).c_str());
|
||||||
|
client.publish(temperature_topic, String(temp).c_str(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkBound(newHum, hum, diff)) {
|
||||||
|
hum = newHum;
|
||||||
|
Serial.print("New humidity:");
|
||||||
|
Serial.println(String(hum).c_str());
|
||||||
|
client.publish(humidity_topic, String(hum).c_str(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml">mqtt:
|
||||||
|
broker: YOUR_MQTT_SERVER_HOST
|
||||||
|
username: your_username
|
||||||
|
password: your_password
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Temperature"
|
||||||
|
state_topic: "sensor/temperature"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "ºC"
|
||||||
|
|
||||||
|
sensor 2:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Humidity"
|
||||||
|
state_topic: "sensor/humidity"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
</code></pre>
|
||||||
|
]]></content>
|
||||||
|
</entry>
|
||||||
|
|
||||||
<entry>
|
<entry>
|
||||||
<title type="html"><![CDATA[Remote Monitoring with Glances]]></title>
|
<title type="html"><![CDATA[Remote Monitoring with Glances]]></title>
|
||||||
<link href="https://home-assistant.io/blog/2015/09/18/monitoring-with-glances-and-home-assistant/"/>
|
<link href="https://home-assistant.io/blog/2015/09/18/monitoring-with-glances-and-home-assistant/"/>
|
||||||
|
|
|
@ -117,6 +117,47 @@
|
||||||
<article>
|
<article>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate>
|
||||||
|
<span class='month'>Oct</span> <span class='day'>11</span>
|
||||||
|
</time>
|
||||||
|
</div>
|
||||||
|
<div class="grid__item four-fifths palm-one-whole">
|
||||||
|
<h1 class="gamma"><a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a></h1>
|
||||||
|
|
||||||
|
<footer class="meta">
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<hr class="divider">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
|
||||||
<div class="grid">
|
<div class="grid">
|
||||||
|
|
||||||
<div class="grid__item one-fifth palm-one-whole">
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
@ -213,6 +254,8 @@
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</span>
|
</span>
|
||||||
|
@ -285,6 +328,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -308,12 +357,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
453
blog/categories/mqtt/atom.xml
Normal file
453
blog/categories/mqtt/atom.xml
Normal file
|
@ -0,0 +1,453 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||||
|
|
||||||
|
<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>2015-10-11T13:16:06-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/</id>
|
||||||
|
<author>
|
||||||
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
||||||
|
</author>
|
||||||
|
<generator uri="http://octopress.org/">Octopress</generator>
|
||||||
|
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<title type="html"><![CDATA[Report the temperature with ESP8266 to MQTT]]></title>
|
||||||
|
<link href="https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/"/>
|
||||||
|
<updated>2015-10-11T12:10:00-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt</id>
|
||||||
|
<content type="html"><![CDATA[<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<pre><code class="cpp">
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <PubSubClient.h>
|
||||||
|
#include <Adafruit_HDC1000.h>
|
||||||
|
|
||||||
|
#define wifi_ssid "YOUR WIFI SSID"
|
||||||
|
#define wifi_password "WIFI PASSWORD"
|
||||||
|
|
||||||
|
#define mqtt_server "YOUR_MQTT_SERVER_HOST"
|
||||||
|
#define mqtt_user "your_username"
|
||||||
|
#define mqtt_password "your_password"
|
||||||
|
|
||||||
|
#define humidity_topic "sensor/humidity"
|
||||||
|
#define temperature_topic "sensor/temperature"
|
||||||
|
|
||||||
|
WiFiClient espClient;
|
||||||
|
PubSubClient client(espClient);
|
||||||
|
Adafruit_HDC1000 hdc = Adafruit_HDC1000();
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
setup_wifi();
|
||||||
|
client.setServer(mqtt_server, 1883);
|
||||||
|
|
||||||
|
// Set SDA and SDL ports
|
||||||
|
Wire.begin(2, 14);
|
||||||
|
|
||||||
|
// Start sensor
|
||||||
|
if (!hdc.begin()) {
|
||||||
|
Serial.println("Couldn't find sensor!");
|
||||||
|
while (1);
|
||||||
|
}}
|
||||||
|
|
||||||
|
void setup_wifi() {
|
||||||
|
delay(10);
|
||||||
|
// We start by connecting to a WiFi network
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Connecting to ");
|
||||||
|
Serial.println(wifi_ssid);
|
||||||
|
|
||||||
|
WiFi.begin(wifi_ssid, wifi_password);
|
||||||
|
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("");
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
Serial.println("IP address: ");
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
}
|
||||||
|
|
||||||
|
void reconnect() {
|
||||||
|
// Loop until we're reconnected
|
||||||
|
while (!client.connected()) {
|
||||||
|
Serial.print("Attempting MQTT connection...");
|
||||||
|
// Attempt to connect
|
||||||
|
// If you do not want to use a username and password, change next line to
|
||||||
|
// if (client.connect("ESP8266Client")) {
|
||||||
|
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
|
||||||
|
Serial.println("connected");
|
||||||
|
} else {
|
||||||
|
Serial.print("failed, rc=");
|
||||||
|
Serial.print(client.state());
|
||||||
|
Serial.println(" try again in 5 seconds");
|
||||||
|
// Wait 5 seconds before retrying
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkBound(float newValue, float prevValue, float maxDiff) {
|
||||||
|
return newValue < prevValue - maxDiff || newValue > prevValue + maxDiff;
|
||||||
|
}
|
||||||
|
|
||||||
|
long lastMsg = 0;
|
||||||
|
float temp = 0.0;
|
||||||
|
float hum = 0.0;
|
||||||
|
float diff = 1.0;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (!client.connected()) {
|
||||||
|
reconnect();
|
||||||
|
}
|
||||||
|
client.loop();
|
||||||
|
|
||||||
|
long now = millis();
|
||||||
|
if (now - lastMsg > 1000) {
|
||||||
|
lastMsg = now;
|
||||||
|
|
||||||
|
float newTemp = hdc.readTemperature();
|
||||||
|
float newHum = hdc.readHumidity();
|
||||||
|
|
||||||
|
if (checkBound(newTemp, temp, diff)) {
|
||||||
|
temp = newTemp;
|
||||||
|
Serial.print("New temperature:");
|
||||||
|
Serial.println(String(temp).c_str());
|
||||||
|
client.publish(temperature_topic, String(temp).c_str(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (checkBound(newHum, hum, diff)) {
|
||||||
|
hum = newHum;
|
||||||
|
Serial.print("New humidity:");
|
||||||
|
Serial.println(String(hum).c_str());
|
||||||
|
client.publish(humidity_topic, String(hum).c_str(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml">mqtt:
|
||||||
|
broker: YOUR_MQTT_SERVER_HOST
|
||||||
|
username: your_username
|
||||||
|
password: your_password
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Temperature"
|
||||||
|
state_topic: "sensor/temperature"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "ºC"
|
||||||
|
|
||||||
|
sensor 2:
|
||||||
|
platform: mqtt
|
||||||
|
name: "Humidity"
|
||||||
|
state_topic: "sensor/humidity"
|
||||||
|
qos: 0
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
</code></pre>
|
||||||
|
]]></content>
|
||||||
|
</entry>
|
||||||
|
|
||||||
|
<entry>
|
||||||
|
<title type="html"><![CDATA[Using MQTT with Home Assistant]]></title>
|
||||||
|
<link href="https://home-assistant.io/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/"/>
|
||||||
|
<updated>2015-09-11T02:19:38-07:00</updated>
|
||||||
|
<id>https://home-assistant.io/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant</id>
|
||||||
|
<content type="html"><![CDATA[<p><img src='https://home-assistant.io/images/supported_brands/mqtt.png' style='border:none; box-shadow: none; float: right;' height='80' />
|
||||||
|
The <a href="https://en.wikipedia.org/wiki/MQTT">MQTT</a> support was added to Home Assistant recently. The <a href="https://home-assistant.io/components/mqtt.html">MQTT component</a> will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn’t care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn’t matter if the data is coming from a human, a web service, or a device.</p>
|
||||||
|
|
||||||
|
<p>A great example is shown in a <a href="https://home-assistant.io/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/">Laundry Automation</a> post in this blog.</p>
|
||||||
|
|
||||||
|
<p>This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant.</p>
|
||||||
|
|
||||||
|
<!--more-->
|
||||||
|
|
||||||
|
|
||||||
|
<h3><a class='title-link' name='manual-usage' href='#manual-usage'></a> Manual usage </h3>
|
||||||
|
|
||||||
|
<p>The simplest but not the coolest way as a human to interact with a Home Assistant sensor is launching a command manually. Let’s create a “Mood” sensor. For simplicity Home Assistant and the MQTT broker are both running on the same host. The needed configuration snipplets to add to the <code>configuration.yaml</code> file consists of two parts: one for the broker and one for the sensor.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml">mqtt:
|
||||||
|
broker: 127.0.0.1
|
||||||
|
|
||||||
|
sensor:
|
||||||
|
- platform: mqtt
|
||||||
|
name: "Fabian's Mood"
|
||||||
|
state_topic: "home-assistant/fabian/mood"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>After a restart of Home Assistant the “Mood” sensor will show up in the frontend. For more details about the configuration of MQTT itself and the sensor, please refer to the <a href="https://home-assistant.io/components/mqtt.html">MQTT component</a> or the <a href="https://home-assistant.io/components/sensor.mqtt.html">MQTT sensor</a> documentation.</p>
|
||||||
|
|
||||||
|
<p>Now we can set the mood. The commandline tool (<code>mosquitto_pub</code>) which is shipped with <code>mosquitto</code> is used to send an MQTT message.</p>
|
||||||
|
|
||||||
|
<pre><code class="bash">mosquitto_pub -h 127.0.0.1 -t "home-assistant/fabian/mood" -m "bad"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-09-mqtt/mood.png' />
|
||||||
|
The Mood sensor
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This is a really bad example. Don’t do this in the real world because you won’t be able to create diagrams of historical data. Better use a numerical value.</p>
|
||||||
|
|
||||||
|
<h3><a class='title-link' name='python-mqtt-bindings' href='#python-mqtt-bindings'></a> Python MQTT bindings </h3>
|
||||||
|
|
||||||
|
<p>The last section was pretty boring, I know. Nobody wants to send MQTT messages by hand if there is a computer on the desk. If you are playing the lottery this section is for you. If not, read it anyway because the lottery is just an example :-).</p>
|
||||||
|
|
||||||
|
<p>This example is using the <a href="https://eclipse.org/paho/clients/python/">Paho MQTT Python binding</a> because those binding should be available on the host where Home Assistant is running. If you want to use this example on another machine, please make sure that the bindings are installed (<code>pip3 install paho-mqtt</code>).</p>
|
||||||
|
|
||||||
|
<p>The first step is to add an additional MQTT sensor to the <code>configuration.yaml</code> file. The sensor will be called “Lottery” and the unit of measurement will be “No.”.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml"> - platform: mqtt
|
||||||
|
name: "Lottery"
|
||||||
|
state_topic: "home-assistant/lottery/number"
|
||||||
|
unit_of_measurement: "No."
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Don’t forget to restart Home Assistant to make the configuration active.</p>
|
||||||
|
|
||||||
|
<p>To play, we need numbers from 1 to 49 which can be marked on the ticket. Those numbers should be random and displayed in the Home Assistant frontend. The Python script below is another simple example on how to send MQTT messages from the commandline; this time in a loop. For further information and examples please check the <a href="https://eclipse.org/paho/clients/python/docs/">Paho MQTT</a> documentation.</p>
|
||||||
|
|
||||||
|
<pre><code class="python">#!/usr/bin/python3
|
||||||
|
#
|
||||||
|
import time
|
||||||
|
import random
|
||||||
|
import paho.mqtt.client as mqtt
|
||||||
|
import paho.mqtt.publish as publish
|
||||||
|
|
||||||
|
broker = '127.0.0.1'
|
||||||
|
state_topic = 'home-assistant/lottery/number'
|
||||||
|
delay = 5
|
||||||
|
|
||||||
|
# Send a single message to set the mood
|
||||||
|
publish.single('home-assistant/fabian/mood', 'good', hostname=broker)
|
||||||
|
|
||||||
|
# Send messages in a loop
|
||||||
|
client = mqtt.Client("ha-client")
|
||||||
|
client.connect(broker)
|
||||||
|
client.loop_start()
|
||||||
|
|
||||||
|
while True:
|
||||||
|
client.publish(state_topic, random.randrange(0, 50, 1))
|
||||||
|
time.sleep(delay)
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>Every 5 seconds a message with a new number is sent to the broker and picked up by Home Assistant. By the way, my mood is much better now.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-09-mqtt/lottery.png' />
|
||||||
|
The Lottery sensor
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>With only a few lines of Python and an MQTT broker you can create your own “smartdevice” or send information to Home Assistant which you haven’t think of. Of course this is not limited to Python. If there is an MQTT library available, the device can be used with Home Assistant now.</p>
|
||||||
|
|
||||||
|
<h3><a class='title-link' name='arduino' href='#arduino'></a> Arduino </h3>
|
||||||
|
|
||||||
|
<p>To get started with real hardware that is capable to send MQTT messages, the Arduino platform is an inexpensive way to do it. In this section an Arduino UNO with an Ethernet shield and a photo resistor is used. The photo resistor is connected to analog pin 0 (A0) and has an output from 0 to 1024.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-09-mqtt/arduino-shield.png' />
|
||||||
|
The Arduino UNO with Ethernet shield and photo resistor
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>The <a href="http://knolleary.github.io/pubsubclient/">MQTT client</a> for the Arduino needs to be available in your Arduino IDE. Below you will find a sketch which could act as a starting point. Please modify the IP addresses, the MAC address, and the pin as needed and upload the sketch to your Arduino.</p>
|
||||||
|
|
||||||
|
<pre><code class="c">/*
|
||||||
|
This sketch is based on the basic MQTT example by
|
||||||
|
http://knolleary.github.io/pubsubclient/
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <SPI.h>
|
||||||
|
#include <Ethernet.h>
|
||||||
|
#include <PubSubClient.h>
|
||||||
|
|
||||||
|
#define DEBUG 1 // Debug output to serial console
|
||||||
|
|
||||||
|
// Device settings
|
||||||
|
IPAddress deviceIp(192, 168, 0, 43);
|
||||||
|
byte deviceMac[] = { 0xAB, 0xCD, 0xFE, 0xFE, 0xFE, 0xFE };
|
||||||
|
char* deviceId = "sensor01"; // Name of the sensor
|
||||||
|
char* stateTopic = "home-assistant/sensor01/brightness"; // MQTT topic where values are published
|
||||||
|
int sensorPin = A0; // Pin to which the sensor is connected to
|
||||||
|
char buf[4]; // Buffer to store the sensor value
|
||||||
|
int updateInterval = 1000; // Interval in miliseconds
|
||||||
|
|
||||||
|
// MQTT server settings
|
||||||
|
IPAddress mqttServer(192, 168, 0, 12);
|
||||||
|
int mqttPort = 1883;
|
||||||
|
|
||||||
|
EthernetClient ethClient;
|
||||||
|
PubSubClient client(ethClient);
|
||||||
|
|
||||||
|
void reconnect() {
|
||||||
|
while (!client.connected()) {
|
||||||
|
#if DEBUG
|
||||||
|
Serial.print("Attempting MQTT connection...");
|
||||||
|
#endif
|
||||||
|
if (client.connect(deviceId)) {
|
||||||
|
#if DEBUG
|
||||||
|
Serial.println("connected");
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
|
#if DEBUG
|
||||||
|
Serial.print("failed, rc=");
|
||||||
|
Serial.print(client.state());
|
||||||
|
Serial.println(" try again in 5 seconds");
|
||||||
|
#endif
|
||||||
|
delay(5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(57600);
|
||||||
|
client.setServer(mqttServer, mqttPort);
|
||||||
|
Ethernet.begin(deviceMac, deviceIp);
|
||||||
|
delay(1500);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (!client.connected()) {
|
||||||
|
reconnect();
|
||||||
|
}
|
||||||
|
client.loop();
|
||||||
|
|
||||||
|
int sensorValue = analogRead(sensorPin);
|
||||||
|
#if DEBUG
|
||||||
|
Serial.print("Sensor value: ");
|
||||||
|
Serial.println(sensorValue);
|
||||||
|
#endif
|
||||||
|
client.publish(stateTopic, itoa(sensorValue, buf, 10));
|
||||||
|
delay(updateInterval);
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>The Arduino will send the value of the sensor every second. To use the data in Home Assistant, add an additional MQTT sensor to the <code>configuration.yaml</code> file.</p>
|
||||||
|
|
||||||
|
<pre><code class="yaml"> - platform: mqtt
|
||||||
|
name: "Brightness"
|
||||||
|
state_topic: "home-assistant/sensor01/brightness"
|
||||||
|
unit_of_measurement: "cd"
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
|
<p>After a restart of Home Assistant the values of your Arduino will be available.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='https://home-assistant.io/images/blog/2015-09-mqtt/arduino.png' />
|
||||||
|
The Brightness sensor
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<p>I hope that this post could give you some ideas about the usage Home Assistant and MQTT. If you are working on a cool project that includes Home Assistant, please let us now.</p>
|
||||||
|
]]></content>
|
||||||
|
</entry>
|
||||||
|
|
||||||
|
</feed>
|
348
blog/categories/mqtt/index.html
Normal file
348
blog/categories/mqtt/index.html
Normal file
|
@ -0,0 +1,348 @@
|
||||||
|
<!doctype html>
|
||||||
|
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||||
|
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||||
|
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||||
|
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||||
|
<title>Category: mqtt - Home Assistant</title>
|
||||||
|
<meta name="author" content="Paulus Schoutsen">
|
||||||
|
|
||||||
|
<meta name="description" content="Category: mqtt">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width">
|
||||||
|
<link rel="canonical" href="https://home-assistant.io/blog/categories/mqtt">
|
||||||
|
|
||||||
|
<meta property="fb:app_id" content="338291289691179">
|
||||||
|
<meta property="og:title" content="Category: mqtt">
|
||||||
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
|
<meta property="og:url" content="https://home-assistant.io/blog/categories/mqtt/">
|
||||||
|
<meta property="og:type" content="website">
|
||||||
|
<meta property="og:description" content="Category: mqtt">
|
||||||
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||||
|
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||||
|
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
|
||||||
|
<body >
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||||
|
<a href="/" class="site-title">
|
||||||
|
<img width='40' src='/images/favicon-192x192.png'> Home Assistant
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||||
|
<nav>
|
||||||
|
<input type="checkbox" id="toggle">
|
||||||
|
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||||
|
<ul class="menu pull-right">
|
||||||
|
<li>
|
||||||
|
<a href="/getting-started/">Getting started</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href='/getting-started/'>Installing Home Assistant</a></li>
|
||||||
|
<li><a href='/getting-started/configuration.html'>Configuration basics</a></li>
|
||||||
|
<li><a href='/getting-started/devices.html'>Adding devices</a></li>
|
||||||
|
<li><a href='/getting-started/presence-detection.html'>Presence detection</a></li>
|
||||||
|
<li><a href='/getting-started/automation.html'>Automation</a></li>
|
||||||
|
<li><a href='/cookbook'>Configuration cookbook</a></li>
|
||||||
|
<li><a href='/components/'>Component overview</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/developers/">Developers</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="/developers/architecture.html">Architecture</a></li>
|
||||||
|
<li><a href="/developers/frontend.html">Frontend development</a></li>
|
||||||
|
<li><a href="/developers/creating_components.html">
|
||||||
|
Creating components
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/add_new_platform.html">
|
||||||
|
Adding platform support
|
||||||
|
</a></li>
|
||||||
|
<li><a href="/developers/api.html">API</a></li>
|
||||||
|
<li><a href="/developers/credits.html">Credits</a></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
<li><a href="/blog/">Blog</a></li>
|
||||||
|
<li><a href="/help/">Need help?</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</nav>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid grid-center">
|
||||||
|
|
||||||
|
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||||
|
|
||||||
|
|
||||||
|
<article class="page">
|
||||||
|
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<h1 class="title indent">
|
||||||
|
Category: Mqtt
|
||||||
|
</h1>
|
||||||
|
</header>
|
||||||
|
<hr class="divider">
|
||||||
|
|
||||||
|
|
||||||
|
<div id="archive-list">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<h2>2015</h2>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate>
|
||||||
|
<span class='month'>Oct</span> <span class='day'>11</span>
|
||||||
|
</time>
|
||||||
|
</div>
|
||||||
|
<div class="grid__item four-fifths palm-one-whole">
|
||||||
|
<h1 class="gamma"><a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a></h1>
|
||||||
|
|
||||||
|
<footer class="meta">
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<hr class="divider">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
<div class="grid__item one-fifth palm-one-whole">
|
||||||
|
<time datetime="2015-09-11T02:19:38-07:00" pubdate>
|
||||||
|
<span class='month'>Sep</span> <span class='day'>11</span>
|
||||||
|
</time>
|
||||||
|
</div>
|
||||||
|
<div class="grid__item four-fifths palm-one-whole">
|
||||||
|
<h1 class="gamma"><a href="/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/">Using MQTT with Home Assistant</a></h1>
|
||||||
|
|
||||||
|
<footer class="meta">
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<hr class="divider">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||||
|
<div class="grid">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<section class="sharing aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Share this post</h1>
|
||||||
|
|
||||||
|
<a href="//twitter.com/share"
|
||||||
|
class="twitter-share-button"
|
||||||
|
data-url="https://home-assistant.io/blog/categories/mqtt/index.html"
|
||||||
|
data-counturl="https://home-assistant.io/blog/categories/mqtt/index.html" >Tweet</a>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="g-plusone" data-size="standard"></div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="fb-share-button" style='top: -6px;'
|
||||||
|
data-href="https://home-assistant.io/blog/categories/mqtt/index.html"
|
||||||
|
data-layout="button_count">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
|
||||||
|
|
||||||
|
<script src="https://apis.google.com/js/platform.js" async defer></script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
window.fbAsyncInit = function() {
|
||||||
|
FB.init({
|
||||||
|
appId : '338291289691179',
|
||||||
|
xfbml : true,
|
||||||
|
version : 'v2.2'
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(d, s, id){
|
||||||
|
var js, fjs = d.getElementsByTagName(s)[0];
|
||||||
|
if (d.getElementById(id)) {return;}
|
||||||
|
js = d.createElement(s); js.id = id;
|
||||||
|
js.src = "//connect.facebook.net/en_US/sdk.js";
|
||||||
|
fjs.parentNode.insertBefore(js, fjs);
|
||||||
|
}(document, 'script', 'facebook-jssdk'));
|
||||||
|
</script>
|
||||||
|
<section id="recent-posts" class="aside-module grid__item one-whole lap-one-half">
|
||||||
|
<h1 class="title delta">Other Posts</h1>
|
||||||
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/">Home Assistant goes geo with OwnTracks</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/19/alarm-sonos-and-itunes-support/">Alarms, Sonos and iTunes now supported</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/09/18/monitoring-with-glances-and-home-assistant/">Remote Monitoring with Glances</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</aside>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<div class="grid-wrapper">
|
||||||
|
<div class="grid">
|
||||||
|
<div class="grid__item">
|
||||||
|
<p class="copyright">
|
||||||
|
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a>, <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>. Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!--[if lt IE 7]>
|
||||||
|
<p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||||
|
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||||
|
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||||
|
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
var disqus_shortname = 'home-assistant';
|
||||||
|
|
||||||
|
|
||||||
|
var disqus_script = 'count.js';
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||||
|
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
|
||||||
|
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||||
|
}());
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: release-notes | Home Assistant]]></title>
|
<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/blog/categories/release-notes/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -655,6 +655,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -678,12 +684,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: user-stories | Home Assistant]]></title>
|
<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/blog/categories/user-stories/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -246,6 +246,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -269,12 +275,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<title><![CDATA[Category: website | Home Assistant]]></title>
|
<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/blog/categories/website/atom.xml" rel="self"/>
|
||||||
<link href="https://home-assistant.io/"/>
|
<link href="https://home-assistant.io/"/>
|
||||||
<updated>2015-10-11T11:39:41-07:00</updated>
|
<updated>2015-10-11T13:16:06-07:00</updated>
|
||||||
<id>https://home-assistant.io/</id>
|
<id>https://home-assistant.io/</id>
|
||||||
<author>
|
<author>
|
||||||
<name><![CDATA[Paulus Schoutsen]]></name>
|
<name><![CDATA[Paulus Schoutsen]]></name>
|
||||||
|
|
|
@ -209,6 +209,12 @@
|
||||||
<ul class="divided">
|
<ul class="divided">
|
||||||
|
|
||||||
|
|
||||||
|
<li class="post">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
<li class="post">
|
||||||
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
<a href="/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/">0.7.5: Blinkstick, SNMP, Telegram</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -232,12 +238,6 @@
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li class="post">
|
|
||||||
<a href="/blog/2015/09/13/home-assistant-meets-ifttt/">Home Assistant meets IFTTT</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
|
520
blog/index.html
520
blog/index.html
|
@ -22,7 +22,7 @@
|
||||||
<meta property="og:site_name" content="Home Assistant">
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
<meta property="og:url" content="https://home-assistant.io/blog/">
|
<meta property="og:url" content="https://home-assistant.io/blog/">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:description" content="0.7.5: Blinkstick, SNMP, Telegram October 11, 2015 Paulus Schoutsen less than one minute reading time release-notes Comments We discovered two issues annoying enough to warrent the release of 0.7.5 …">
|
<meta property="og:description" content="Report the temperature with ESP8266 to MQTT October 11, 2015 Paulus Schoutsen nine minutes reading time esp8266 how-to mqtt Comments I recently learned about the ESP8266, a $5 chip that includes …">
|
||||||
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
@ -99,6 +99,430 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="listing">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<h1 class="beta">
|
||||||
|
<a href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/">Report the temperature with ESP8266 to MQTT</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="meta clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time datetime="2015-10-11T12:10:00-07:00" pubdate data-updated="true"><i class="icon-calendar"></i> October 11, 2015</time>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
||||||
|
|
||||||
|
<span><i class='icon-time'></i> nine minutes reading time</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/esp8266/'>esp8266</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<a class='comments'
|
||||||
|
href="/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/#disqus_thread"
|
||||||
|
>Comments</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<p>I recently learned about the ESP8266, a $5 chip that includes WiFi and is Arduino compatible. This means
|
||||||
|
that all your DIY projects can now be done for a fraction of the price.</p>
|
||||||
|
|
||||||
|
<p>For this tutorial, I’ll walk through how to get going with ESP8266, get the temperature and humidity and
|
||||||
|
report it to MQTT where Home Asssistant can pick it up.</p>
|
||||||
|
|
||||||
|
<p class='img'>
|
||||||
|
<img src='/images/blog/2015-10-esp8266-temp/ha-sensor.png' />
|
||||||
|
Home Assistant will keep track of historical values and allow you to integrate it into automation.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Components</h3>
|
||||||
|
|
||||||
|
<p>I’ve been using Adafruit for my shopping:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2471">Adafruit HUZZAH ESP8266 Breakout</a> (<a href="https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="http://www.adafruit.com/product/2635">Adafruit HDC1008 Temperature & Humidity Sensor Breakout Board</a> (<a href="https://learn.adafruit.com/adafruit-hdc1008-temperature-and-humidity-sensor-breakout/assembly">assembly instructions</a>)</li>
|
||||||
|
<li><a href="/components/mqtt.html#picking-a-broker">MQTT server</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>Besides this, you will need the usual hardware prototype equipment: a breadboard, some wires,
|
||||||
|
soldering iron + wire, Serial USB cable.</em></p>
|
||||||
|
|
||||||
|
<h3>Connections</h3>
|
||||||
|
|
||||||
|
<p>On your breadboard, make the following connections from your ESP8266 to the HDC1008:</p>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th> ESP8266 </th>
|
||||||
|
<th> HDC1008 </th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td> GND </td>
|
||||||
|
<td> GND</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 3V </td>
|
||||||
|
<td> Vin</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> 14 </td>
|
||||||
|
<td> SCL</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td> #2 </td>
|
||||||
|
<td> SDA</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
<p><em>I picked <code>#2</code> and <code>14</code> myself, you can configure them in the sketch.</em></p>
|
||||||
|
|
||||||
|
<h3>Preparing your IDE</h3>
|
||||||
|
|
||||||
|
<p>Follow <a href="https://github.com/esp8266/Arduino#installing-with-boards-manager">these instructions</a> on how
|
||||||
|
to install and prepare the Arduino IDE for ESP8266 development.</p>
|
||||||
|
|
||||||
|
<p>After you’re done installing, open the Arduino IDE, in the menu click on <code>sketch</code> -> <code>include library</code> ->
|
||||||
|
<code>manage libraries</code> and install the following libraries:</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>PubSubClient by Nick ‘O Leary</li>
|
||||||
|
<li>Adafruit HDC1000</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Sketch</h3>
|
||||||
|
|
||||||
|
<p>If you have followed the previous steps, you’re all set.</p>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>Open Arduino IDE and create a new sketch (<code>File</code> -> <code>New</code>)</li>
|
||||||
|
<li>Copy and paste the below sketch to the Arduino IDE</li>
|
||||||
|
<li>Adjust the values line 6 - 14 to match your setup</li>
|
||||||
|
<li>Optional: If you want to connect to an MQTT server without a username or password, adjust line 63.</li>
|
||||||
|
<li>To have the ESP8266 accept our new sketch, we have to put it in upload mode. On the ESP8266 device
|
||||||
|
keep the GPIO0 button pressed while pressing the reset button. The red led will glow half bright to
|
||||||
|
indicate it is in upload mode.</li>
|
||||||
|
<li>Press the upload button in Arduino IDE</li>
|
||||||
|
<li>Open the serial monitor (<code>Tools</code> -> <code>Serial Monitor</code>) to see the output from your device</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<p>This sketch will connect to your WiFi network and MQTT broker. It will read the temperature and humidity
|
||||||
|
from the sensor every second. It will report it to the MQTT server if the difference is > 1 since last
|
||||||
|
reported value. Reports to the MQTT broker are sent with retain set to <code>True</code>. This means that anyone
|
||||||
|
connecting to the MQTT topic will automatically be notified of the last reported value.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
<span class='line-number'>19</span>
|
||||||
|
<span class='line-number'>20</span>
|
||||||
|
<span class='line-number'>21</span>
|
||||||
|
<span class='line-number'>22</span>
|
||||||
|
<span class='line-number'>23</span>
|
||||||
|
<span class='line-number'>24</span>
|
||||||
|
<span class='line-number'>25</span>
|
||||||
|
<span class='line-number'>26</span>
|
||||||
|
<span class='line-number'>27</span>
|
||||||
|
<span class='line-number'>28</span>
|
||||||
|
<span class='line-number'>29</span>
|
||||||
|
<span class='line-number'>30</span>
|
||||||
|
<span class='line-number'>31</span>
|
||||||
|
<span class='line-number'>32</span>
|
||||||
|
<span class='line-number'>33</span>
|
||||||
|
<span class='line-number'>34</span>
|
||||||
|
<span class='line-number'>35</span>
|
||||||
|
<span class='line-number'>36</span>
|
||||||
|
<span class='line-number'>37</span>
|
||||||
|
<span class='line-number'>38</span>
|
||||||
|
<span class='line-number'>39</span>
|
||||||
|
<span class='line-number'>40</span>
|
||||||
|
<span class='line-number'>41</span>
|
||||||
|
<span class='line-number'>42</span>
|
||||||
|
<span class='line-number'>43</span>
|
||||||
|
<span class='line-number'>44</span>
|
||||||
|
<span class='line-number'>45</span>
|
||||||
|
<span class='line-number'>46</span>
|
||||||
|
<span class='line-number'>47</span>
|
||||||
|
<span class='line-number'>48</span>
|
||||||
|
<span class='line-number'>49</span>
|
||||||
|
<span class='line-number'>50</span>
|
||||||
|
<span class='line-number'>51</span>
|
||||||
|
<span class='line-number'>52</span>
|
||||||
|
<span class='line-number'>53</span>
|
||||||
|
<span class='line-number'>54</span>
|
||||||
|
<span class='line-number'>55</span>
|
||||||
|
<span class='line-number'>56</span>
|
||||||
|
<span class='line-number'>57</span>
|
||||||
|
<span class='line-number'>58</span>
|
||||||
|
<span class='line-number'>59</span>
|
||||||
|
<span class='line-number'>60</span>
|
||||||
|
<span class='line-number'>61</span>
|
||||||
|
<span class='line-number'>62</span>
|
||||||
|
<span class='line-number'>63</span>
|
||||||
|
<span class='line-number'>64</span>
|
||||||
|
<span class='line-number'>65</span>
|
||||||
|
<span class='line-number'>66</span>
|
||||||
|
<span class='line-number'>67</span>
|
||||||
|
<span class='line-number'>68</span>
|
||||||
|
<span class='line-number'>69</span>
|
||||||
|
<span class='line-number'>70</span>
|
||||||
|
<span class='line-number'>71</span>
|
||||||
|
<span class='line-number'>72</span>
|
||||||
|
<span class='line-number'>73</span>
|
||||||
|
<span class='line-number'>74</span>
|
||||||
|
<span class='line-number'>75</span>
|
||||||
|
<span class='line-number'>76</span>
|
||||||
|
<span class='line-number'>77</span>
|
||||||
|
<span class='line-number'>78</span>
|
||||||
|
<span class='line-number'>79</span>
|
||||||
|
<span class='line-number'>80</span>
|
||||||
|
<span class='line-number'>81</span>
|
||||||
|
<span class='line-number'>82</span>
|
||||||
|
<span class='line-number'>83</span>
|
||||||
|
<span class='line-number'>84</span>
|
||||||
|
<span class='line-number'>85</span>
|
||||||
|
<span class='line-number'>86</span>
|
||||||
|
<span class='line-number'>87</span>
|
||||||
|
<span class='line-number'>88</span>
|
||||||
|
<span class='line-number'>89</span>
|
||||||
|
<span class='line-number'>90</span>
|
||||||
|
<span class='line-number'>91</span>
|
||||||
|
<span class='line-number'>92</span>
|
||||||
|
<span class='line-number'>93</span>
|
||||||
|
<span class='line-number'>94</span>
|
||||||
|
<span class='line-number'>95</span>
|
||||||
|
<span class='line-number'>96</span>
|
||||||
|
<span class='line-number'>97</span>
|
||||||
|
<span class='line-number'>98</span>
|
||||||
|
<span class='line-number'>99</span>
|
||||||
|
<span class='line-number'>100</span>
|
||||||
|
<span class='line-number'>101</span>
|
||||||
|
<span class='line-number'>102</span>
|
||||||
|
<span class='line-number'>103</span>
|
||||||
|
<span class='line-number'>104</span>
|
||||||
|
<span class='line-number'>105</span>
|
||||||
|
<span class='line-number'>106</span>
|
||||||
|
<span class='line-number'>107</span>
|
||||||
|
<span class='line-number'>108</span>
|
||||||
|
<span class='line-number'>109</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='cpp'><span class='line'><span class="cp">#include <ESP8266WiFi.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Wire.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <PubSubClient.h></span>
|
||||||
|
</span><span class='line'><span class="cp">#include <Adafruit_HDC1000.h></span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_ssid "YOUR WIFI SSID"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define wifi_password "WIFI PASSWORD"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_server "YOUR_MQTT_SERVER_HOST"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_user "your_username"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define mqtt_password "your_password"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="cp">#define humidity_topic "sensor/humidity"</span>
|
||||||
|
</span><span class='line'><span class="cp">#define temperature_topic "sensor/temperature"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="n">WiFiClient</span> <span class="n">espClient</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="n">PubSubClient</span> <span class="nf">client</span><span class="p">(</span><span class="n">espClient</span><span class="p">);</span>
|
||||||
|
</span><span class='line'><span class="n">Adafruit_HDC1000</span> <span class="n">hdc</span> <span class="o">=</span> <span class="n">Adafruit_HDC1000</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">115200</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">setup_wifi</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">setServer</span><span class="p">(</span><span class="n">mqtt_server</span><span class="p">,</span> <span class="mi">1883</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Set SDA and SDL ports</span>
|
||||||
|
</span><span class='line'> <span class="n">Wire</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">14</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="c1">// Start sensor</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">hdc</span><span class="p">.</span><span class="n">begin</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"Couldn't find sensor!"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">setup_wifi</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// We start by connecting to a WiFi network</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Connecting to "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">WiFi</span><span class="p">.</span><span class="n">begin</span><span class="p">(</span><span class="n">wifi_ssid</span><span class="p">,</span> <span class="n">wifi_password</span><span class="p">);</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">status</span><span class="p">()</span> <span class="o">!=</span> <span class="n">WL_CONNECTED</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">500</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">""</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"WiFi connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"IP address: "</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">WiFi</span><span class="p">.</span><span class="n">localIP</span><span class="p">());</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">reconnect</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Loop until we're reconnected</span>
|
||||||
|
</span><span class='line'> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"Attempting MQTT connection..."</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Attempt to connect</span>
|
||||||
|
</span><span class='line'> <span class="c1">// If you do not want to use a username and password, change next line to</span>
|
||||||
|
</span><span class='line'> <span class="c1">// if (client.connect("ESP8266Client")) {</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">connect</span><span class="p">(</span><span class="s">"ESP8266Client"</span><span class="p">,</span> <span class="n">mqtt_user</span><span class="p">,</span> <span class="n">mqtt_password</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">"connected"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"failed, rc="</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="n">client</span><span class="p">.</span><span class="n">state</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="s">" try again in 5 seconds"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="c1">// Wait 5 seconds before retrying</span>
|
||||||
|
</span><span class='line'> <span class="n">delay</span><span class="p">(</span><span class="mi">5000</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">bool</span> <span class="nf">checkBound</span><span class="p">(</span><span class="kt">float</span> <span class="n">newValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">prevValue</span><span class="p">,</span> <span class="kt">float</span> <span class="n">maxDiff</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">return</span> <span class="n">newValue</span> <span class="o"><</span> <span class="n">prevValue</span> <span class="o">-</span> <span class="n">maxDiff</span> <span class="o">||</span> <span class="n">newValue</span> <span class="o">></span> <span class="n">prevValue</span> <span class="o">+</span> <span class="n">maxDiff</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">long</span> <span class="n">lastMsg</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">temp</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">hum</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'><span class="kt">float</span> <span class="n">diff</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="kt">void</span> <span class="nf">loop</span><span class="p">()</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">client</span><span class="p">.</span><span class="n">connected</span><span class="p">())</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">reconnect</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">loop</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">long</span> <span class="n">now</span> <span class="o">=</span> <span class="n">millis</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">now</span> <span class="o">-</span> <span class="n">lastMsg</span> <span class="o">></span> <span class="mi">1000</span><span class="p">)</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">lastMsg</span> <span class="o">=</span> <span class="n">now</span><span class="p">;</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newTemp</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readTemperature</span><span class="p">();</span>
|
||||||
|
</span><span class='line'> <span class="kt">float</span> <span class="n">newHum</span> <span class="o">=</span> <span class="n">hdc</span><span class="p">.</span><span class="n">readHumidity</span><span class="p">();</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newTemp</span><span class="p">,</span> <span class="n">temp</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">temp</span> <span class="o">=</span> <span class="n">newTemp</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New temperature:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">temperature_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">temp</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'> <span class="k">if</span> <span class="p">(</span><span class="n">checkBound</span><span class="p">(</span><span class="n">newHum</span><span class="p">,</span> <span class="n">hum</span><span class="p">,</span> <span class="n">diff</span><span class="p">))</span> <span class="p">{</span>
|
||||||
|
</span><span class='line'> <span class="n">hum</span> <span class="o">=</span> <span class="n">newHum</span><span class="p">;</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">print</span><span class="p">(</span><span class="s">"New humidity:"</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="n">Serial</span><span class="p">.</span><span class="n">println</span><span class="p">(</span><span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">());</span>
|
||||||
|
</span><span class='line'> <span class="n">client</span><span class="p">.</span><span class="n">publish</span><span class="p">(</span><span class="n">humidity_topic</span><span class="p">,</span> <span class="n">String</span><span class="p">(</span><span class="n">hum</span><span class="p">).</span><span class="n">c_str</span><span class="p">(),</span> <span class="nb">true</span><span class="p">);</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'> <span class="p">}</span>
|
||||||
|
</span><span class='line'><span class="p">}</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
<h3>Configuring Home Assistant</h3>
|
||||||
|
|
||||||
|
<p>The last step is to integrate the sensor values into Home Assistant. This can be done by setting up
|
||||||
|
Home Assistant to connect to the MQTT broker and subscribe to the sensor topics.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
<span class='line-number'>10</span>
|
||||||
|
<span class='line-number'>11</span>
|
||||||
|
<span class='line-number'>12</span>
|
||||||
|
<span class='line-number'>13</span>
|
||||||
|
<span class='line-number'>14</span>
|
||||||
|
<span class='line-number'>15</span>
|
||||||
|
<span class='line-number'>16</span>
|
||||||
|
<span class='line-number'>17</span>
|
||||||
|
<span class='line-number'>18</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="l-Scalar-Plain">mqtt</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">broker</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">YOUR_MQTT_SERVER_HOST</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_username</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_password</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/temperature"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"ºC"</span>
|
||||||
|
</span><span class='line'>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">sensor 2</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">platform</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">mqtt</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">name</span><span class="p-Indicator">:</span> <span class="s">"Humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">state_topic</span><span class="p-Indicator">:</span> <span class="s">"sensor/humidity"</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">unit_of_measurement</span><span class="p-Indicator">:</span> <span class="s">"%"</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
<article class="listing">
|
<article class="listing">
|
||||||
<header>
|
<header>
|
||||||
|
|
||||||
|
@ -565,6 +989,8 @@ read more button for some example recipes.</p>
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
<li><a class='category' href='/blog/categories/how-to/'>how-to</a></li>
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/mqtt/'>mqtt</a></li>
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</span>
|
</span>
|
||||||
|
@ -871,98 +1297,6 @@ Home Assistant support to integrate your <a href="https://www.verisure.com/">Ver
|
||||||
</article>
|
</article>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
<article class="listing">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<h1 class="beta">
|
|
||||||
<a href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/">MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported</a>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="meta clearfix">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2015-08-09T18:01:00-07:00" pubdate data-updated="true"><i class="icon-calendar"></i> August 9, 2015</time>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
|
||||||
|
|
||||||
<span><i class='icon-time'></i> four minutes reading time</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span>
|
|
||||||
<i class="icon-tags"></i>
|
|
||||||
<ul class="tags unstyled">
|
|
||||||
|
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/release-notes/'>release-notes</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
|
|
||||||
<a class='comments'
|
|
||||||
href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/#disqus_thread"
|
|
||||||
>Comments</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="entry-content clearfix">
|
|
||||||
<p>It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to <a href="https://github.com/balloob">@balloob</a>. If you’re a developer, make sure you read up on <a href="https://github.com/balloob/home-assistant/pull/251">the deprecation notices</a>. <a href="https://github.com/fabaff">@fabaff</a> did another great round of documentating all the various components.</p>
|
|
||||||
|
|
||||||
<p><strong>MQTT Support</strong><br>
|
|
||||||
<img src='/images/supported_brands/mqtt.png' style='border:none; box-shadow: none; float: right;' height='50' />
|
|
||||||
The big new addition in this release is the support for the MQTT protocol by <a href="https://github.com/fabaff">@fabaff</a> with some help from <a href="https://github.com/balloob">@balloob</a>. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (<a href="https://github.com/balloob/home-assistant/blob/dev/config/custom_components/mqtt_example.py">see the example</a>) and also support for the automation component <a href="/components/automation.html#mqtt-based-automation">has been added</a>. For more information, see <a href="/components/mqtt.html">the MQTT component page</a>.</p>
|
|
||||||
|
|
||||||
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
|
||||||
<span class='line-number'>2</span>
|
|
||||||
<span class='line-number'>3</span>
|
|
||||||
<span class='line-number'>4</span>
|
|
||||||
<span class='line-number'>5</span>
|
|
||||||
<span class='line-number'>6</span>
|
|
||||||
<span class='line-number'>7</span>
|
|
||||||
<span class='line-number'>8</span>
|
|
||||||
<span class='line-number'>9</span>
|
|
||||||
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="c1"># Example configuration.yaml entry</span>
|
|
||||||
</span><span class='line'><span class="l-Scalar-Plain">mqtt</span><span class="p-Indicator">:</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">broker</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">IP_ADDRESS_BROKER</span>
|
|
||||||
</span><span class='line'> <span class="c1"># All the other options are optional:</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">port</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">1883</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">keepalive</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">60</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_username</span>
|
|
||||||
</span><span class='line'> <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_secret_password</span>
|
|
||||||
</span></code></pre></td></tr></table></div></figure>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a class="btn pull-right" href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/#read-more">Read on →</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</article>
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<meta property="og:site_name" content="Home Assistant">
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
<meta property="og:url" content="https://home-assistant.io/blog/posts/2/">
|
<meta property="og:url" content="https://home-assistant.io/blog/posts/2/">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:description" content="IP Cameras, Arduinos, Kodi and Efergy Energy Monitors now supported July 11, 2015 Paulus Schoutsen five minutes reading time release-notes Comments Another month has passed and some great new …">
|
<meta property="og:description" content="MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported August 9, 2015 Paulus Schoutsen four minutes reading time release-notes Comments It’s time for the August release and …">
|
||||||
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
@ -99,6 +99,98 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="listing">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<h1 class="beta">
|
||||||
|
<a href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/">MQTT, Rasperry PI, Logitech Squeezebox and ASUSWRT routers now supported</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="meta clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time datetime="2015-08-09T18:01:00-07:00" pubdate data-updated="true"><i class="icon-calendar"></i> August 9, 2015</time>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
||||||
|
|
||||||
|
<span><i class='icon-time'></i> four minutes reading time</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/release-notes/'>release-notes</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<a class='comments'
|
||||||
|
href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/#disqus_thread"
|
||||||
|
>Comments</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="entry-content clearfix">
|
||||||
|
<p>It’s time for the August release and there is some serious good stuff this time. The core of Home Assistant has gone some serious clean up and a bump in test coverage thanks to <a href="https://github.com/balloob">@balloob</a>. If you’re a developer, make sure you read up on <a href="https://github.com/balloob/home-assistant/pull/251">the deprecation notices</a>. <a href="https://github.com/fabaff">@fabaff</a> did another great round of documentating all the various components.</p>
|
||||||
|
|
||||||
|
<p><strong>MQTT Support</strong><br>
|
||||||
|
<img src='/images/supported_brands/mqtt.png' style='border:none; box-shadow: none; float: right;' height='50' />
|
||||||
|
The big new addition in this release is the support for the MQTT protocol by <a href="https://github.com/fabaff">@fabaff</a> with some help from <a href="https://github.com/balloob">@balloob</a>. It will now be possible to integrate any IoT device that talks via MQTT. For the initial release we support connecting Home Assistant to a broker (no TLS yet). Components can now subscribe and publish to MQTT topics (<a href="https://github.com/balloob/home-assistant/blob/dev/config/custom_components/mqtt_example.py">see the example</a>) and also support for the automation component <a href="/components/automation.html#mqtt-based-automation">has been added</a>. For more information, see <a href="/components/mqtt.html">the MQTT component page</a>.</p>
|
||||||
|
|
||||||
|
<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
|
||||||
|
<span class='line-number'>2</span>
|
||||||
|
<span class='line-number'>3</span>
|
||||||
|
<span class='line-number'>4</span>
|
||||||
|
<span class='line-number'>5</span>
|
||||||
|
<span class='line-number'>6</span>
|
||||||
|
<span class='line-number'>7</span>
|
||||||
|
<span class='line-number'>8</span>
|
||||||
|
<span class='line-number'>9</span>
|
||||||
|
</pre></td><td class='code'><pre><code class='yaml'><span class='line'><span class="c1"># Example configuration.yaml entry</span>
|
||||||
|
</span><span class='line'><span class="l-Scalar-Plain">mqtt</span><span class="p-Indicator">:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">broker</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">IP_ADDRESS_BROKER</span>
|
||||||
|
</span><span class='line'> <span class="c1"># All the other options are optional:</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">port</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">1883</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">keepalive</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">60</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">qos</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">0</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">username</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_username</span>
|
||||||
|
</span><span class='line'> <span class="l-Scalar-Plain">password</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">your_secret_password</span>
|
||||||
|
</span></code></pre></td></tr></table></div></figure>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="btn pull-right" href="/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/#read-more">Read on →</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
<article class="listing">
|
<article class="listing">
|
||||||
<header>
|
<header>
|
||||||
|
|
||||||
|
@ -908,78 +1000,6 @@ YAML allows the use of lists, which should make the configuration file a bit mor
|
||||||
</article>
|
</article>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
<article class="listing">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<h1 class="beta">
|
|
||||||
<a href="/blog/2015/02/24/streaming-updates/">Streaming updates</a>
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="meta clearfix">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<time datetime="2015-02-24T22:41:27-08:00" pubdate data-updated="true"><i class="icon-calendar"></i> February 24, 2015</time>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
|
||||||
|
|
||||||
<span><i class='icon-time'></i> 1 minute reading time</span>
|
|
||||||
|
|
||||||
|
|
||||||
<span>
|
|
||||||
<i class="icon-tags"></i>
|
|
||||||
<ul class="tags unstyled">
|
|
||||||
|
|
||||||
|
|
||||||
<li><a class='category' href='/blog/categories/frontend/'>frontend</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
|
|
||||||
<a class='comments'
|
|
||||||
href="/blog/2015/02/24/streaming-updates/#disqus_thread"
|
|
||||||
>Comments</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="entry-content clearfix">
|
|
||||||
<p>Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.</p>
|
|
||||||
|
|
||||||
<p>A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.</p>
|
|
||||||
|
|
||||||
<p class='img'><img src='/images/screenshots/streaming-updates.png' /></p>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a class="btn pull-right" href="/blog/2015/02/24/streaming-updates/#read-more">Read on →</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</article>
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination">
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
<meta property="og:site_name" content="Home Assistant">
|
<meta property="og:site_name" content="Home Assistant">
|
||||||
<meta property="og:url" content="https://home-assistant.io/blog/posts/3/">
|
<meta property="og:url" content="https://home-assistant.io/blog/posts/3/">
|
||||||
<meta property="og:type" content="website">
|
<meta property="og:type" content="website">
|
||||||
<meta property="og:description" content="Looking at the past February 8, 2015 Paulus Schoutsen 1 minute reading time component frontend Comments Ever since the launch of Home Assistant you have been able to track the state of your house. …">
|
<meta property="og:description" content="Streaming updates February 24, 2015 Paulus Schoutsen 1 minute reading time frontend Comments Home Assistant has learned a new trick to get the latest information from the server: streaming updates. …">
|
||||||
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
<meta property="og:image" content="https://home-assistant.io/images/home-assistant-logo-2164x2164.png">
|
||||||
|
|
||||||
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet">
|
||||||
|
@ -99,6 +99,78 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<article class="listing">
|
||||||
|
<header>
|
||||||
|
|
||||||
|
<h1 class="beta">
|
||||||
|
<a href="/blog/2015/02/24/streaming-updates/">Streaming updates</a>
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="meta clearfix">
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<time datetime="2015-02-24T22:41:27-08:00" pubdate data-updated="true"><i class="icon-calendar"></i> February 24, 2015</time>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<span class="byline author vcard"><i class='icon-user'></i> Paulus Schoutsen</span>
|
||||||
|
|
||||||
|
<span><i class='icon-time'></i> 1 minute reading time</span>
|
||||||
|
|
||||||
|
|
||||||
|
<span>
|
||||||
|
<i class="icon-tags"></i>
|
||||||
|
<ul class="tags unstyled">
|
||||||
|
|
||||||
|
|
||||||
|
<li><a class='category' href='/blog/categories/frontend/'>frontend</a></li>
|
||||||
|
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
</span>
|
||||||
|
|
||||||
|
|
||||||
|
<a class='comments'
|
||||||
|
href="/blog/2015/02/24/streaming-updates/#disqus_thread"
|
||||||
|
>Comments</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="entry-content clearfix">
|
||||||
|
<p>Home Assistant has learned a new trick to get the latest information from the server: streaming updates. No longer will the frontend poll every 30 seconds for updates but instead it will keep a connection open and get the latest changes pushed as soon as they happen.</p>
|
||||||
|
|
||||||
|
<p>A new toggle has been added ot the sidebar to turn streaming updates on and off. This preference will be saved on a per-browser basis using local storage. The toggle will also indicate when there is an error setting up a stream after which it will fall back to use polling.</p>
|
||||||
|
|
||||||
|
<p class='img'><img src='/images/screenshots/streaming-updates.png' /></p>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a class="btn pull-right" href="/blog/2015/02/24/streaming-updates/#read-more">Read on →</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
|
||||||
<article class="listing">
|
<article class="listing">
|
||||||
<header>
|
<header>
|
||||||
|
|
||||||
|
|
BIN
images/blog/2015-10-esp8266-temp/ha-sensor.png
Normal file
BIN
images/blog/2015-10-esp8266-temp/ha-sensor.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
273
sitemap.xml
273
sitemap.xml
|
@ -1,5 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url>
|
||||||
|
<loc>https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/</loc>
|
||||||
|
<lastmod>2015-10-11T12:10:00-07:00</lastmod>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/</loc>
|
<loc>https://home-assistant.io/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/</loc>
|
||||||
<lastmod>2015-10-11T10:10:00-07:00</lastmod>
|
<lastmod>2015-10-11T10:10:00-07:00</lastmod>
|
||||||
|
@ -137,805 +142,805 @@
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/add_new_platform.html</loc>
|
<loc>https://home-assistant.io/developers/add_new_platform.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/alarm_control_panel.mqtt.html</loc>
|
<loc>https://home-assistant.io/components/alarm_control_panel.mqtt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/android.html</loc>
|
<loc>https://home-assistant.io/getting-started/android.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/api.html</loc>
|
<loc>https://home-assistant.io/developers/api.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/architecture.html</loc>
|
<loc>https://home-assistant.io/developers/architecture.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/arduino.html</loc>
|
<loc>https://home-assistant.io/components/arduino.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/automation.html</loc>
|
<loc>https://home-assistant.io/components/automation.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/automation.html</loc>
|
<loc>https://home-assistant.io/getting-started/automation.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/cookbook/automation_for_rainy_days.html</loc>
|
<loc>https://home-assistant.io/cookbook/automation_for_rainy_days.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/cookbook/automation_sun.html</loc>
|
<loc>https://home-assistant.io/cookbook/automation_sun.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/autostart.html</loc>
|
<loc>https://home-assistant.io/getting-started/autostart.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/cookbook/basic_example_use_trigger_values.html</loc>
|
<loc>https://home-assistant.io/cookbook/basic_example_use_trigger_values.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/browser.html</loc>
|
<loc>https://home-assistant.io/components/browser.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/camera.foscam.html</loc>
|
<loc>https://home-assistant.io/components/camera.foscam.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/camera.generic.html</loc>
|
<loc>https://home-assistant.io/components/camera.generic.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/configuration.html</loc>
|
<loc>https://home-assistant.io/getting-started/configuration.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/configurator.html</loc>
|
<loc>https://home-assistant.io/components/configurator.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/conversation.html</loc>
|
<loc>https://home-assistant.io/components/conversation.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/creating_components.html</loc>
|
<loc>https://home-assistant.io/developers/creating_components.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/credits.html</loc>
|
<loc>https://home-assistant.io/developers/credits.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_sun_light_trigger.html</loc>
|
<loc>https://home-assistant.io/components/device_sun_light_trigger.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.actiontec.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.actiontec.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.aruba.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.aruba.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.asuswrt.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.asuswrt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.ddwrt.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.ddwrt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.luci.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.luci.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.mqtt.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.mqtt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.netgear.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.netgear.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.nmap_scanner.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.nmap_scanner.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.owntracks.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.owntracks.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.snmp.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.snmp.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.thomson.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.thomson.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.tomato.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.tomato.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/device_tracker.tplink.html</loc>
|
<loc>https://home-assistant.io/components/device_tracker.tplink.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/devices.html</loc>
|
<loc>https://home-assistant.io/getting-started/devices.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/discovery.html</loc>
|
<loc>https://home-assistant.io/components/discovery.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/downloader.html</loc>
|
<loc>https://home-assistant.io/components/downloader.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/frontend.html</loc>
|
<loc>https://home-assistant.io/developers/frontend.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/group.html</loc>
|
<loc>https://home-assistant.io/components/group.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/history.html</loc>
|
<loc>https://home-assistant.io/components/history.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/ifttt.manything.html</loc>
|
<loc>https://home-assistant.io/components/ifttt.manything.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/ifttt.html</loc>
|
<loc>https://home-assistant.io/components/ifttt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/blog/</loc>
|
<loc>https://home-assistant.io/blog/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/blog/archives/</loc>
|
<loc>https://home-assistant.io/blog/archives/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/</loc>
|
<loc>https://home-assistant.io/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>1.0</priority>
|
<priority>1.0</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/</loc>
|
<loc>https://home-assistant.io/developers/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/</loc>
|
<loc>https://home-assistant.io/components/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/cookbook/</loc>
|
<loc>https://home-assistant.io/cookbook/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/help/</loc>
|
<loc>https://home-assistant.io/help/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/</loc>
|
<loc>https://home-assistant.io/getting-started/</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/isy994.html</loc>
|
<loc>https://home-assistant.io/components/isy994.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/keyboard.html</loc>
|
<loc>https://home-assistant.io/components/keyboard.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/light.blinksticklight.html</loc>
|
<loc>https://home-assistant.io/components/light.blinksticklight.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/light.hue.html</loc>
|
<loc>https://home-assistant.io/components/light.hue.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/light.limitlessled.html</loc>
|
<loc>https://home-assistant.io/components/light.limitlessled.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/light.html</loc>
|
<loc>https://home-assistant.io/components/light.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/light.rfxtrx.html</loc>
|
<loc>https://home-assistant.io/components/light.rfxtrx.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/logbook.html</loc>
|
<loc>https://home-assistant.io/components/logbook.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.cast.html</loc>
|
<loc>https://home-assistant.io/components/media_player.cast.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.denon.html</loc>
|
<loc>https://home-assistant.io/components/media_player.denon.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.itunes.html</loc>
|
<loc>https://home-assistant.io/components/media_player.itunes.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.kodi.html</loc>
|
<loc>https://home-assistant.io/components/media_player.kodi.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.html</loc>
|
<loc>https://home-assistant.io/components/media_player.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.mpd.html</loc>
|
<loc>https://home-assistant.io/components/media_player.mpd.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.plex.html</loc>
|
<loc>https://home-assistant.io/components/media_player.plex.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.sonos.html</loc>
|
<loc>https://home-assistant.io/components/media_player.sonos.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/media_player.squeezebox.html</loc>
|
<loc>https://home-assistant.io/components/media_player.squeezebox.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/modbus.html</loc>
|
<loc>https://home-assistant.io/components/modbus.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/mqtt.html</loc>
|
<loc>https://home-assistant.io/components/mqtt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.file.html</loc>
|
<loc>https://home-assistant.io/components/notify.file.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.instapush.html</loc>
|
<loc>https://home-assistant.io/components/notify.instapush.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.html</loc>
|
<loc>https://home-assistant.io/components/notify.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.nma.html</loc>
|
<loc>https://home-assistant.io/components/notify.nma.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.pushbullet.html</loc>
|
<loc>https://home-assistant.io/components/notify.pushbullet.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.pushover.html</loc>
|
<loc>https://home-assistant.io/components/notify.pushover.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.slack.html</loc>
|
<loc>https://home-assistant.io/components/notify.slack.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.smtp.html</loc>
|
<loc>https://home-assistant.io/components/notify.smtp.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.syslog.html</loc>
|
<loc>https://home-assistant.io/components/notify.syslog.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.telegram.html</loc>
|
<loc>https://home-assistant.io/components/notify.telegram.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/notify.xmpp.html</loc>
|
<loc>https://home-assistant.io/components/notify.xmpp.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/presence-detection.html</loc>
|
<loc>https://home-assistant.io/getting-started/presence-detection.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/python_api.html</loc>
|
<loc>https://home-assistant.io/developers/python_api.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/rest_api.html</loc>
|
<loc>https://home-assistant.io/developers/rest_api.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/rfxtrx.html</loc>
|
<loc>https://home-assistant.io/components/rfxtrx.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/scene.html</loc>
|
<loc>https://home-assistant.io/components/scene.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/script.html</loc>
|
<loc>https://home-assistant.io/components/script.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.arduino.html</loc>
|
<loc>https://home-assistant.io/components/sensor.arduino.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.arest.html</loc>
|
<loc>https://home-assistant.io/components/sensor.arest.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.bitcoin.html</loc>
|
<loc>https://home-assistant.io/components/sensor.bitcoin.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.command_sensor.html</loc>
|
<loc>https://home-assistant.io/components/sensor.command_sensor.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.dht.html</loc>
|
<loc>https://home-assistant.io/components/sensor.dht.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.efergy.html</loc>
|
<loc>https://home-assistant.io/components/sensor.efergy.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.forecast.html</loc>
|
<loc>https://home-assistant.io/components/sensor.forecast.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.glances.html</loc>
|
<loc>https://home-assistant.io/components/sensor.glances.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.mqtt.html</loc>
|
<loc>https://home-assistant.io/components/sensor.mqtt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.mysensors.html</loc>
|
<loc>https://home-assistant.io/components/sensor.mysensors.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.openweathermap.html</loc>
|
<loc>https://home-assistant.io/components/sensor.openweathermap.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.rest.html</loc>
|
<loc>https://home-assistant.io/components/sensor.rest.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.rfxtrx.html</loc>
|
<loc>https://home-assistant.io/components/sensor.rfxtrx.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.rpi_gpio.html</loc>
|
<loc>https://home-assistant.io/components/sensor.rpi_gpio.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.sabnzbd.html</loc>
|
<loc>https://home-assistant.io/components/sensor.sabnzbd.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.swiss_public_transport.html</loc>
|
<loc>https://home-assistant.io/components/sensor.swiss_public_transport.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.systemmonitor.html</loc>
|
<loc>https://home-assistant.io/components/sensor.systemmonitor.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.temper.html</loc>
|
<loc>https://home-assistant.io/components/sensor.temper.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.time_date.html</loc>
|
<loc>https://home-assistant.io/components/sensor.time_date.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.transmission.html</loc>
|
<loc>https://home-assistant.io/components/sensor.transmission.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sensor.worldclock.html</loc>
|
<loc>https://home-assistant.io/components/sensor.worldclock.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/simple_alarm.html</loc>
|
<loc>https://home-assistant.io/components/simple_alarm.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/sun.html</loc>
|
<loc>https://home-assistant.io/components/sun.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.arduino.html</loc>
|
<loc>https://home-assistant.io/components/switch.arduino.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.arest.html</loc>
|
<loc>https://home-assistant.io/components/switch.arest.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.command_switch.html</loc>
|
<loc>https://home-assistant.io/components/switch.command_switch.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.edimax.html</loc>
|
<loc>https://home-assistant.io/components/switch.edimax.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.hikvision.html</loc>
|
<loc>https://home-assistant.io/components/switch.hikvision.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.html</loc>
|
<loc>https://home-assistant.io/components/switch.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.mqtt.html</loc>
|
<loc>https://home-assistant.io/components/switch.mqtt.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.rfxtrx.html</loc>
|
<loc>https://home-assistant.io/components/switch.rfxtrx.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.rpi_gpio.html</loc>
|
<loc>https://home-assistant.io/components/switch.rpi_gpio.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.transmission.html</loc>
|
<loc>https://home-assistant.io/components/switch.transmission.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/switch.wemo.html</loc>
|
<loc>https://home-assistant.io/components/switch.wemo.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/tellstick.html</loc>
|
<loc>https://home-assistant.io/components/tellstick.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/thermostat.heat_control.html</loc>
|
<loc>https://home-assistant.io/components/thermostat.heat_control.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/thermostat.html</loc>
|
<loc>https://home-assistant.io/components/thermostat.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/thermostat.nest.html</loc>
|
<loc>https://home-assistant.io/components/thermostat.nest.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/troubleshooting-configuration.html</loc>
|
<loc>https://home-assistant.io/getting-started/troubleshooting-configuration.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/getting-started/troubleshooting.html</loc>
|
<loc>https://home-assistant.io/getting-started/troubleshooting.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/cookbook/turn_on_light_for_10_minutes_when_motion_detected.html</loc>
|
<loc>https://home-assistant.io/cookbook/turn_on_light_for_10_minutes_when_motion_detected.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/vera.html</loc>
|
<loc>https://home-assistant.io/components/vera.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/verisure.html</loc>
|
<loc>https://home-assistant.io/components/verisure.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/developers/website.html</loc>
|
<loc>https://home-assistant.io/developers/website.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/wink.html</loc>
|
<loc>https://home-assistant.io/components/wink.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/zone.html</loc>
|
<loc>https://home-assistant.io/components/zone.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://home-assistant.io/components/zwave.html</loc>
|
<loc>https://home-assistant.io/components/zwave.html</loc>
|
||||||
<lastmod>2015-10-11T11:39:41-07:00</lastmod>
|
<lastmod>2015-10-11T13:16:06-07:00</lastmod>
|
||||||
<changefreq>weekly</changefreq>
|
<changefreq>weekly</changefreq>
|
||||||
<priority>0.7</priority>
|
<priority>0.7</priority>
|
||||||
</url>
|
</url>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue