2299 lines
238 KiB
XML
2299 lines
238 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||
|
||
<title><![CDATA[Home Assistant]]></title>
|
||
<link href="https://home-assistant.io/atom.xml" rel="self"/>
|
||
<link href="https://home-assistant.io/"/>
|
||
<updated>2016-12-06T08:21:33+00:00</updated>
|
||
<id>https://home-assistant.io/</id>
|
||
<author>
|
||
<name><![CDATA[Home Assistant]]></name>
|
||
|
||
</author>
|
||
<generator uri="http://octopress.org/">Octopress</generator>
|
||
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.34: New Remote component, Websockets, Sonarr, GPSLogger]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/12/03/remote-websockets-sonarr/"/>
|
||
<updated>2016-12-03T08:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/12/03/remote-websockets-sonarr</id>
|
||
<content type="html"><![CDATA[<p>Here we go… 0.34. Let’s call it the “Santa Claus” release. Rudolph was faster than expected and there’s lot’s of goodies on the sleigh. Of course, more work on async programming done by <a href="https://github.com/pvizeli">@pvizeli</a> and <a href="https://github.com/balloob">@balloob</a>, new components, new platforms, major improvements, and much more.</p>
|
||
|
||
<h3><a class="title-link" name="gpslogger" href="#gpslogger"></a> GPSLogger</h3>
|
||
|
||
<p>The work of <a href="https://github.com/dainok">@dainok</a> let’s you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the <a href="https://play.google.com/store/apps/details?id=com.mendhak.gpslogger">GPSLogger</a> app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks.</p>
|
||
|
||
<h3><a class="title-link" name="remote-component" href="#remote-component"></a> Remote component</h3>
|
||
|
||
<p>The brand new <a href="https://home-assistant.io/components/remote/"><code class="highlighter-rouge">remote</code></a> component made by <a href="https://github.com/iandday">@iandday</a> will simplify the integration of all kinds of remote control units. The first platform for <a href="https://home-assistant.io/components/remote.harmony/">Harmony</a> is included in this release.</p>
|
||
|
||
<h3><a class="title-link" name="homematic" href="#homematic"></a> HomeMatic</h3>
|
||
|
||
<p>The <a href="https://home-assistant.io/components/homematic/">HomeMatic</a> component has received some updates worth mentioning:</p>
|
||
|
||
<ul>
|
||
<li>Additional services
|
||
<ul>
|
||
<li><code class="highlighter-rouge">reconnect</code>: Reconnect to your CCU/Homegear without restarting Home Assistant.</li>
|
||
<li><code class="highlighter-rouge">set_dev_value</code>: Manually control a device, even if it’s not supported by Home Assistant yet.</li>
|
||
</ul>
|
||
</li>
|
||
<li>Support for multiple HomeMatic hosts</li>
|
||
<li>Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices)</li>
|
||
<li>Various improvements and fixes, especially for HM-Sec-Key (KeyMatic)</li>
|
||
</ul>
|
||
|
||
<p>The support for multiple hosts is a result of allowing mixed configurations with wireless, wired, and IP devices. This has the drawback of making the update a breaking change (along with the renamed <code class="highlighter-rouge">set_value</code> service). However, the benefits and possibilities gained will be worth it.</p>
|
||
|
||
<h3><a class="title-link" name="websocket-api" href="#websocket-api"></a> Websocket API</h3>
|
||
|
||
<p>This release includes a new <a href="https://home-assistant.io/developers/websocket_api/">websockets</a> based API by <a href="https://github.com/balloob">@balloob</a> to power the next generation of Home Assistant frontends. The current frontend has been partly migrated to use it and will be further migrated in the future.</p>
|
||
|
||
<h2><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h2>
|
||
|
||
<ul>
|
||
<li>New services and improved device support for <a href="https://home-assistant.io/components/homematic/">HomeMatic</a> (<a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Device tracker: New support for <a href="https://home-assistant.io/components/device_tracker.gpslogger/">GPSLogger</a> (<a href="https://github.com/dainok">@dainok</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.sonarr/">Sonarr</a> (<a href="https://github.com/hborawski">@hborawski</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.waqi/">World Air Quality Index</a> sensor (<a href="https://github.com/valentinalexeev">@valentinalexeev</a>, <a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.dsmr/">Dutch Smart Meter Requirements</a> (<a href="https://github.com/aequitas">@aequitas</a>)</li>
|
||
<li>Switch: <a href="https://home-assistant.io/components/switch.hook/">Hook</a> support by hooksmarthome.com (<a href="https://github.com/dasos">@dasos</a>)</li>
|
||
<li>Camera: Integration for <a href="https://home-assistant.io/components/camera.nest/">Nest cameras</a> (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>Light: Support for light effects (<a href="https://github.com/Diaoul">@Diaoul</a>)</li>
|
||
<li>Sensor: New <a href="https://home-assistant.io/components/binary_sensor.threshold/">Threshold</a> sensor (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Media player: New <a href="https://home-assistant.io/components/media_player.dunehd/">DuneHD</a> integration(<a href="https://github.com/valentinalexeev">@valentinalexeev</a>)</li>
|
||
<li>Media player: Controlling support for <a href="https://home-assistant.io/components/media_player.philips_js/">Philips TVs</a> (<a href="https://github.com/aequitas">@aequitas</a>)</li>
|
||
<li>Camera: Support for <a href="https://home-assistant.io/components/camera.amcrest/">Amcrest</a> cameras (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>
|
||
<p>Sensor: Monitoring support for <a href="https://home-assistant.io/components/sensor.nut/">Network UPS Tools (NUT)</a> (<a href="https://github.com/mezz64">@mezz64</a>)</p>
|
||
</li>
|
||
<li>Mediap player - Denon: Source selection support (<a href="https://github.com/Gilles95">@Gilles95</a>)</li>
|
||
<li>Sensor - MinMax: Precision now configurable (<a href="https://github.com/exxamalte">@exxamalte</a>)</li>
|
||
<li>Tellstick: Massive <a href="https://home-assistant.io/components/tellstick/">improvement</a> (<a href="https://github.com/magicus">@magicus</a>)</li>
|
||
<li>Light - Osram: New requirement (<a href="https://github.com/tfriedel">@tfriedel</a>)</li>
|
||
<li>Sensor - Systemmonitor: Support for removable network adapters (<a href="https://github.com/mnoorenberghe">@mnoorenberghe</a>)</li>
|
||
<li>LiteJet: New trigger option (<a href="https://github.com/joncar">@joncar</a>)</li>
|
||
<li>Media player - Bose: Add Bose SoundTouch device support (<a href="https://github.com/CharlesBlonde">@CharlesBlonde</a>)</li>
|
||
<li>HTTP: Re-organisation and <a href="https://home-assistant.io/developers/websocket_api/">websockets</a> support (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>HTTP: Advanced <a href="https://home-assistant.io/components/http/">IP filtering</a> (<a href="https://github.com/vkorn">@vkorn</a>)</li>
|
||
<li>Sensor - KNX: Fix unit of mesaurement (<a href="https://github.com/cyberjunky">@cyberjunky</a>)</li>
|
||
<li>Climate: New precision properties (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
<li>Sensor - TEMPer: Reset <a href="https://home-assistant.io/components/sensor.temper/">devices</a> on address change (<a href="https://github.com/vemek">@vemek</a>)</li>
|
||
<li>Core: Color names now follow w3.org recommandations (<a href="https://github.com/srcLurker">@srcLurker</a>)</li>
|
||
<li>Updater: Robustness improvements (<a href="https://github.com/balloob">@balloob</a>])</li>
|
||
<li>Media player - MPD: Reconnect to daemon (<a href="https://github.com/janLo">@janLo</a>)</li>
|
||
<li>Device tracker: Fall-back for MAC address lookup (<a href="https://github.com/aequitas">@aequitas</a>)</li>
|
||
<li>Sensor - Efergy: Get the amount of <a href="https://home-assistant.io/components/sensor.efergy/">energy consumed</a> (<a href="https://github.com/gonzalezcalleja">@gonzalezcalleja</a>)</li>
|
||
<li>Zeroconf: Fix for IPv6 support (<a href="https://github.com/rcloran">@rcloran</a>)</li>
|
||
<li>Minor and not so minor features and bug fixes by <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/sdague">@sdague</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/chapple">@chapple</a>, <a href="https://github.com/mweinelt">@mweinelt</a>, <a href="https://github.com/Khabi">@Khabi</a>, <a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/mnestor">@mnestor</a>, <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/Morrisai">@Morrisai</a>,
|
||
<a href="https://github.com/michaelarnauts">@michaelarnauts</a>, <a href="https://github.com/tchellomello">@tchellomello</a>, <a href="https://github.com/lwis">@lwis</a>, <a href="https://github.com/bjarniivarsson">@bjarniivarsson</a>, <a href="https://github.com/danielperna84">@danielperna84</a>, <a href="https://github.com/LinuxChristian">@LinuxChristian</a>, <a href="https://github.com/MartinHjelmare">@MartinHjelmare</a>, <a href="https://github.com/dethpickle">@dethpickle</a>, <a href="https://github.com/jnewland">@jnewland</a>, <a href="https://github.com/lichtteil">@lichtteil</a>, <a href="https://github.com/brandonweeks">@brandonweeks</a>, <a href="https://github.com/partofthething">@partofthething</a>, <a href="https://github.com/mnoorenberghe">@mnoorenberghe</a>, <a href="https://github.com/bah2830">@bah2830</a>, and <a href="https://github.com/albertoarias">@albertoarias</a>.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0341---december-4" href="#release-0341---december-4"></a> Release 0.34.1 - December 4</h3>
|
||
|
||
<p>This release has a bunch of bug fixes including a big one: emulated_hue will now work with Google Home! We usually reserve patch releases for small bug fixes but we considered this more impactful bug fix so important that we’re including it now instead of having people wait two weeks.</p>
|
||
|
||
<p>To make the fix backwards compatible (it is a patch release after all) you will have to add two new configuration option to emulated_hue to have it work with Google Home:</p>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">emulated_hue</span><span class="pi">:</span>
|
||
<span class="s">type</span><span class="pi">:</span> <span class="s">google_home</span>
|
||
<span class="c1"># This is important. Sadly, Google Home will not work with other ports.</span>
|
||
<span class="s">listen_port</span><span class="pi">:</span> <span class="s">80</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>We are working on a better solution for 0.35.</p>
|
||
|
||
<ul>
|
||
<li>Fix emulated_hue with Google Home (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix Sonos invalid config error (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix Synology DSM doing I/O inside event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix Nest camera issues (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>Fix occasional hangs in Homematic (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Revert TP-Link upgrade to fix issues (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Fix CORS (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0342---december-5" href="#release-0342---december-5"></a> Release 0.34.2 - December 5</h3>
|
||
|
||
<ul>
|
||
<li>Fix Nest interpreting Celsius as Fahrenheit and converting it (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix Nest sensor platforms throwing errors (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>Frontend will now always show persistent_notification and configurator entities even if not part of the active view (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fixed media player cards taking up unnecessary space (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0343---december-6" href="#release-0343---december-6"></a> Release 0.34.3 - December 6</h3>
|
||
|
||
<ul>
|
||
<li>Fix Hook connections (<a href="https://github.com/dasos">@dasos</a>)</li>
|
||
<li>Fix random websocket connections (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix Google Home sometimes not finding our emulated_hue (<a href="https://github.com/jawilson">@jawilson</a>)</li>
|
||
<li>Fix EnOcean config validation (<a href="https://github.com/rubund">@rubund</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>The <a href="https://home-assistant.io/components/homematic/">HomeMatic</a> component now uses a different syntax for hosts and the <code class="highlighter-rouge">set_value</code> service has been renamed.</li>
|
||
<li>All <a href="https://home-assistant.io/components/rfxtrx/">RFXtrx</a> sensors will get a new entity ID.</li>
|
||
<li>If you are using NGINX, you will have to <a href="https://home-assistant.io/ecosystem/nginx/">adapt your configuration</a>.</li>
|
||
<li><a href="https://home-assistant.io/components/nest/">Nest</a> contains changes which will require your attention.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h3>
|
||
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>. The release notes have comments enabled but it’s preferred if you use these communication channels. Thanks.</p>
|
||
|
||
<h3><a class="title-link" name="reporting-issues" href="#reporting-issues"></a> Reporting Issues</h3>
|
||
|
||
<p>Experiencing issues introduced by this release? Please report them in our <a href="https://github.com/home-assistant/home-assistant/issues">issue tracker</a>. Make sure to fill in all fields of the issue template.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.33: New Calendar component, Wink thermostats and Cisco IOS]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/"/>
|
||
<updated>2016-11-20T00:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/11/20/calendar--wink-thermostats--cisco-ios</id>
|
||
<content type="html"><![CDATA[<p>For this release we put a lot of focus on finishing our async upgrade and fix a bunch of bugs in the process.</p>
|
||
|
||
<p>But a new release wouldn’t be awesome if it didn’t had some new goodies and this release is no different. This release includes a new calendar component by <a href="https://github.com/mnestor">@mnestor</a>. It comes now with Google Calendar support, which should allow you to automate things based on your calendar events!</p>
|
||
|
||
<h3><a class="title-link" name="changes" href="#changes"></a> Changes</h3>
|
||
|
||
<ul>
|
||
<li>New <a href="https://home-assistant.io/components/calendar.google/">calendar component</a> including Google support (<a href="https://github.com/mnestor">@mnestor</a>)</li>
|
||
<li>Final core upgrade for async (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/neato/">Neato</a> refactor + sensor support (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Device Tracker: <a href="https://home-assistant.io/components/device_tracker.swisscom/">Swisscom Internet-Box</a> now supported (<a href="https://github.com/betrisey">@betrisey</a>)</li>
|
||
<li>Device Tracker - Locative: <a href="https://home-assistant.io/components/device_tracker.locative/">Map support</a> added (<a href="https://github.com/danijelst">@danijelst</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/emulated_hue/">Emulated Hue</a> will now sent request info as variables to scripts that get called (<a href="https://github.com/bah2830">@bah2830</a>)</li>
|
||
<li>Wink: <a href="https://home-assistant.io/components/climate.wink/">Thermostats</a> are now supported (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li>Light: New <a href="https://home-assistant.io/components/light.mqtt_template/">MQTT template</a> platform for custom communication (<a href="https://github.com/Diaoul">@Diaoul</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/switch.wake_on_lan/">Wake on Lan switch</a> can now configure a custom OFF script (<a href="https://github.com/Chris-V">@Chris-V</a>)</li>
|
||
<li>Device Tracker: <a href="https://home-assistant.io/components/device_tracker.cisco_ios/">Cisco IOS</a> now supported (<a href="https://github.com/fbradyirl">@fbradyirl</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.pvoutput/">PVOutput</a> snesor (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Sensor: Show count of connected clients to the <a href="https://home-assistant.io/components/sensor.api_stream/">API stream</a> (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix platforms from doing I/O in the event loop (<a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/lwis">@lwis</a>, <a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Switch - <a href="https://home-assistant.io/components/switch.tplink/">TP Link</a>: Add daily consumption (<a href="https://github.com/">@gonzalezcalleja</a>)</li>
|
||
<li>Templates: Add new <code class="highlighter-rouge">strptime</code> <a href="https://home-assistant.io/topics/templating/#home-assistant-template-extensions/">template function</a> for parsing times (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/http/">HTTP</a> component: Fix X-Forwarded-For parsing (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Switch - <a href="https://home-assistant.io/components/switch.command_line/">Command Line</a>: Use configured object_id for entity IDs (<a href="https://github.com/n8henrie">@n8henrie</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/mqtt/">MQTT</a> now supports birth and last will messages (<a href="https://github.com/bestlibre">@bestlibre</a>)</li>
|
||
<li>Better handling of accented characters in slugify (<a href="https://github.com/magicus">@magicus</a>)</li>
|
||
<li>Alarm Control Panel - <a href="https://home-assistant.io/components/envisalink/">Envisalink</a>: Add new keypress service (<a href="https://github.com/jnimmo">@jnimmo</a>)</li>
|
||
<li>Light - <a href="https://home-assistant.io/components/light.hue/">Hue</a>: Add service to activate scenes defined in Hue app (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0331---november-20" href="#release-0331---november-20"></a> Release 0.33.1 - November 20</h3>
|
||
|
||
<ul>
|
||
<li>Fix Z-Wave lights (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0332---november-22" href="#release-0332---november-22"></a> Release 0.33.2 - November 22</h3>
|
||
|
||
<ul>
|
||
<li>Fix Device Tracker init (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix Discovery init (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix TP-Link switch (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Fix Zwave light naming & configurable refresh (<a href="https://github.com/jchapple">@jchapple</a>)</li>
|
||
<li>Neato fixes (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Fix ‘Unknown’ status for Nest Protect devices (<a href="https://github.com/Khabi">@Khabi</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0333---november-23" href="#release-0333---november-23"></a> Release 0.33.3 - November 23</h3>
|
||
|
||
<ul>
|
||
<li>Update Yr.no entities every hour (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Bump Netdisco to 0.7.7 (fixes discovery on Synology)</li>
|
||
<li>Fix discovery race condition (most obvious in Wemo) (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0334---november-24" href="#release-0334---november-24"></a> Release 0.33.4 - November 24</h3>
|
||
|
||
<ul>
|
||
<li>Set executor pool size to 10 (as intended) (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
</ul>
|
||
|
||
<p>This should fix occasional performance problems that some people have reported.</p>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>We have included a fix that impacts how we generate entity ids. This only impacts devices with accented characters. Instead of being stripped out, they are now replaced with the non-accented version. So now <code class="highlighter-rouge">Tèst Mörê</code> will become <code class="highlighter-rouge">test_more</code> instead of <code class="highlighter-rouge">tst_mr</code>.</li>
|
||
<li>Command line switches will now use the specified object ID for their entity ID instead of basing it off the name.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="reporting-issues" href="#reporting-issues"></a> Reporting issues</h3>
|
||
|
||
<p>Experiencing issues introduced by this release? Please report them in our <a href="https://github.com/home-assistant/home-assistant/issues">issue tracker</a>. Make sure to fill in all fields of the issue template.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.32: Hacktoberfest, InfluxDB sensor, Error reporting, and Weather]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/11/05/hacktoberfest-influxdb-weather/"/>
|
||
<updated>2016-11-05T03:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/11/05/hacktoberfest-influxdb-weather</id>
|
||
<content type="html"><![CDATA[<p>Another two weeks have passed and we are pleased to present Home Assistant 0.32.</p>
|
||
|
||
<h3><a class="title-link" name="hacktoberfest" href="#hacktoberfest"></a> Hacktoberfest</h3>
|
||
<p>The <a href="https://hacktoberfest.digitalocean.com/">Hacktoberfest</a> is over now. Home Assistant made the 2nd and the 3rd place out of almost 30’000 participating repositories with a total of 528 pull requests closed - that’s an average of 17 pull requests a day! Thanks to all the contributors but also to the team of reviewers. This wouldn’t been possible without you 👏 .</p>
|
||
|
||
<h3><a class="title-link" name="improved-error-reporting" href="#improved-error-reporting"></a> Improved error reporting</h3>
|
||
<p>This release has improved the reporting when a config validation error occurs. Thanks to <a href="https://github.com/kellerza">@kellerza</a> you will now get a persistent notification added to your UI when this happens.</p>
|
||
|
||
<h3><a class="title-link" name="asynchronous" href="#asynchronous"></a> Asynchronous</h3>
|
||
<p>This release contains the first asynchronous sensor and camera platforms. <a href="https://github.com/pvizeli">@pvizeli</a> and <a href="https://github.com/fabaff">@fabaff</a> ported most of the “internal” sensors to async programming. We hope that you will enjoy the new speed.</p>
|
||
|
||
<p><a href="https://github.com/balloob">@balloob</a> and <a href="https://github.com/pvizeli">@pvizeli</a> worked a lot on the improvement of the core itself.</p>
|
||
|
||
<h3><a class="title-link" name="weather-component" href="#weather-component"></a> Weather component</h3>
|
||
|
||
<p>For a long time we have had a bunch of <a href="https://home-assistant.io/components/#weather">weather sensors</a> but it’s getting better: There is now a <a href="https://home-assistant.io/components/weather/">Weather component</a>. Sorry, not much more to tell right now. The plans are to create a weather UI element and to improve the initial implementation.</p>
|
||
|
||
<h3><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h3>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/icloud.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/influxdb.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/emby.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/synologydsm.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/garadget_logo.jpg" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/yeelight.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/philips.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/nfandroidtv.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/currencylayer.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/influxdb.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Cover: New <a href="https://home-assistant.io/components/garadget/">garadget</a> platform (<a href="https://github.com/JasonCarter80">@JasonCarter80</a>)</li>
|
||
<li>Media player: New support for <a href="https://home-assistant.io/components/media_player.emby/">Emby</a> (<a href="https://github.com/mezz64">@mezz64</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/litejet/">LiteJet</a> switches and lights support (<a href="https://github.com/joncar">@joncar</a>)</li>
|
||
<li>Light: <a href="https://home-assistant.io/components/light.yeelight/">Yeelight</a> Wifi bulbs are now supported (<a href="https://github.com/HydrelioxGitHub">@HydrelioxGitHub</a>)</li>
|
||
<li>Media player: <a href="https://home-assistant.io/components/media_player.philips_js/">Philips TVs</a> with jointSPACE API re now supported (<a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.synologydsm/">Synology DSM</a> (<a href="https://github.com/StaticCube">@StaticCube</a>)</li>
|
||
<li>Sensor: Monitoring support for <a href="https://home-assistant.io/components/sensor.dovado/">Dovado routers</a> (<a href="https://github.com/molobrakos">@molobrakos</a>)</li>
|
||
<li>Sensor: Support for monitoring <a href="https://home-assistant.io/components/sensor.cups/">printers</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Add mochad component (<a href="https://github.com/mtreinish">@mtreinish</a>)</li>
|
||
<li>Notify: Added support for <a href="https://home-assistant.io/components/notify.nfandroidtv/">Android TV/FireTV</a> - Sensor: New finance platform <a href="https://home-assistant.io/components/sensor.currencylayer/">CurrencyLayer</a> (<a href="https://github.com/arsaboo">@arsaboo</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.influxdb/">InfluxDB sensors</a> (<a href="https://github.com/bestlibre">@bestlibre</a>)</li>
|
||
<li>Sensor: New support <a href="https://home-assistant.io/components/sensor.hddtemp/">HDDTemp sensors</a> (<a href="https://github.com/fabaff">@fabaff</a>)
|
||
(<a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Media player: <a href="https://home-assistant.io/components/media_player.sonos/">Sonos</a> improvements incl. timer setting functionality (<a href="https://github.com/bjarniivarsson">@bjarniivarsson</a>, <a href="https://github.com/americanwookie">@americanwookie</a>)</li>
|
||
<li>Media player: Discovery support for <a href="https://home-assistant.io/components/media_player.yamaha/">Yamaha</a> (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
<li>Config: Exclude dirs/files prefixed with . (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>HTTP: Migrate WSGI to asyncio (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Configurator: Support for <code class="highlighter-rouge">entity_picture</code> (<a href="https://github.com/armills">@armills</a>)</li>
|
||
<li>Core: Configuration validation error prints line numbers (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>Zoneminder: SSL/TLS support (<a href="https://github.com/Khabi">@Khabi</a>)</li>
|
||
<li>Camera: Improvements to <a href="https://home-assistant.io/components/camera.rpi_camera/">RPi camera</a> (<a href="https://github.com/postlund">@postlund</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/thingspeak/">ThingSpeak</a> component (<a href="https://github.com/simonszu">@simonszu</a>)</li>
|
||
<li>Core: New property <code class="highlighter-rouge">hass.data</code> to store internal data (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Switch: Templating and configurable timeout for <a href="https://home-assistant.io/components/switch.rest/">REST</a> (<a href="https://github.com/aa755">@aa755</a>)</li>
|
||
<li>Sensor: New <a href="https://home-assistant.io/components/sensor.random/">random number</a> sensor (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Pilight: <code class="highlighter-rouge">send_delay</code> feature (<a href="https://github.com/janLo">@janLo</a>)</li>
|
||
<li>Config: Improvements for <code class="highlighter-rouge">known_devices</code> (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Device tracker: New discovered event (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Device tracker: Improvements and new features for the Volvo on Call platform (<a href="https://github.com/molobrakos">@molobrakos</a>)</li>
|
||
<li>Climate: Use unit of measurement from a Vera device (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
<li>Device tracker: <a href="https://home-assistant.io/components/device_tracker.icloud/">iCloud</a> improvements (<a href="https://github.com/Bart274">@Bart274</a>)</li>
|
||
<li>Minor features and bug fixes by <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/robbiet480">@robbiet480</a>, <a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/DavidLP">@DavidLP</a>, <a href="https://github.com/Bart274">@Bart274</a>, <a href="https://github.com/sdague">@sdague</a>, <a href="https://github.com/mtreinish">@mtreinish</a>, <a href="https://github.com/Khabi">@Khabi</a>, <a href="https://github.com/bbesset">@bbesset</a>, <a href="https://github.com/bestlibre">@bestlibre</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/devdelay">@devdelay</a>, <a href="https://github.com/molobrakos">@molobrakos</a>, <a href="https://github.com/postlund">@postlund</a>, <a href="https://github.com/wokar">@wokar</a>, <a href="https://github.com/armills">@armills</a>, <a href="https://github.com/arsaboo">@arsaboo</a>, <a href="https://github.com/hartmms">@hartmms</a>, <a href="https://github.com/nsideras">@nsideras</a>, <a href="https://github.com/tbeckha">@tbeckha</a>, and <a href="https://github.com/kirichkov">@kirichkov</a>.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0321---november-6" href="#release-0321---november-6"></a> Release 0.32.1 - November 6</h3>
|
||
|
||
<p>We’ve added a warning to 0.32 to catch platforms accidentally slowing down Home Assistant. Our aim is to fix these quickly when reported, so here is 0.32.1 with all reported platforms fixed.</p>
|
||
|
||
<ul>
|
||
<li>Fix Sonos doing I/O inside the event loop (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix Radiotherm doing I/O inside the event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix camera MJPEG streams when using HTTP 1.0 (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0322---november-7" href="#release-0322---november-7"></a> Release 0.32.2 - November 7</h3>
|
||
|
||
<ul>
|
||
<li>Move Honeywell I/O out of the event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Use sequential updates for non-async entities to prevent race conditions (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix setting temperature in Celsius on Radiotherm CT50 thermostats (<a href="https://github.com/andyat">@andyat</a>)</li>
|
||
<li>Fix PiLight config validation (<a href="https://github.com/DavidLP">@DavidLP</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0323---november-11" href="#release-0323---november-11"></a> Release 0.32.3 - November 11</h3>
|
||
|
||
<ul>
|
||
<li>Fix OpenWeather weather platform doing I/O in event loop (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Fix Alarm.com doing I/O in event loop (<a href="https://github.com/jnewland">@jnewland</a>)</li>
|
||
<li>Fix Tellstick doing I/O in event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Fix KNX doing I/O in event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Increase warning threshold for catching platforms that do I/O (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Change pilight systemcode validation (<a href="https://github.com/janLo">@janLo</a>)</li>
|
||
<li>Fix Yamaha discovering already configured receivers (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
<li>Fix Sonos from installing dependency each time HA was started (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix Synology camera SSL and error handling (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fix Panasonic Viera doing I/O in event loop (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Improve generic camera error handling (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Light - Flux Led Lights: allow specifying mode if light does not support white mode (<a href="https://github.com/DanielHiversen">@DanielHiversen</a>)</li>
|
||
<li>Fix Rest switch default template (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0324---november-15" href="#release-0324---november-15"></a> Release 0.32.4 - November 15</h3>
|
||
|
||
<ul>
|
||
<li>Fix device tracker from crashing HASS when a new device was discovered (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>HTTP: Fix X-Forwarded-For feature (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="misc" href="#misc"></a> Misc</h3>
|
||
|
||
<p>Our website has now an additional category called “Ecosystem”. This will become the place where tools, apps, and other helper for the Home Assistant ecosystem can store their documentation or guides.</p>
|
||
|
||
<ul>
|
||
<li><a href="https://home-assistant.io/ecosystem/ios/">iOS</a></li>
|
||
<li><a href="https://home-assistant.io/ecosystem/scenegen/">SceneGen</a></li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>The <a href="https://home-assistant.io/components/sensor.yahoo_finance/">Yahoo Finance</a> platform supports now multiple stock. Please adjust your configuration.</li>
|
||
<li>Deprecated components <code class="highlighter-rouge">garage_door</code>, <code class="highlighter-rouge">rollershutter</code>, <code class="highlighter-rouge">thermostat</code>, and <code class="highlighter-rouge">hvac</code> have been removed.</li>
|
||
<li>The minimum Python version on Windows has been bumped to Python 3.5.</li>
|
||
<li>The Insteon Hub integration has been disabled due to a <a href="https://github.com/home-assistant/home-assistant/issues/3811">request from Insteon</a>.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h3>
|
||
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[Explaining the Updater]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/10/25/explaining-the-updater/"/>
|
||
<updated>2016-10-25T04:30:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/10/25/explaining-the-updater</id>
|
||
<content type="html"><![CDATA[<p>On Saturday, we released <a href="https://home-assistant.io/blog/2016/10/22/flash-briefing-updater-hacktoberfest/#comment-2965607849/">Home Assistant 0.31</a> which includes an improved updater component that checks for new versions using the Home Assistant servers. We wanted to update the community on its rollout and answer some questions that have come up. As part of the update check anonymous information about your operating system and Python version is submitted to Home Assistant servers unless you have opted out.</p>
|
||
|
||
<h2><a class="title-link" name="why-we-changed-the-updater" href="#why-we-changed-the-updater"></a> Why we changed the updater</h2>
|
||
<p>This change was driven by two important factors.</p>
|
||
|
||
<h3><a class="title-link" name="improving-the-security-of-the-users" href="#improving-the-security-of-the-users"></a> Improving the security of the users.</h3>
|
||
|
||
<p>As a user, you will be able to be notified if you are running a Home Assistant version that includes components that have known security flaws.</p>
|
||
|
||
<p>Although we hope to not have to use this feature often, it is important for us to be able to reach out to impacted users. We had the need for such a feature once in the past. Due to a bug the forecast.io sensor was making a huge amount of API requests causing some of our users to get charged because they went over the free quota.</p>
|
||
|
||
<p>Please note that this functionality is not done yet but will be available in a future release.</p>
|
||
|
||
<h3><a class="title-link" name="focusing-our-resources-where-it-matters" href="#focusing-our-resources-where-it-matters"></a> Focusing our resources where it matters</h3>
|
||
|
||
<p>As developers of Home Assistant, we will be able to see in what kind of environments Home Assistant is running. Here’s a few data points we didn’t have until now:</p>
|
||
|
||
<ul>
|
||
<li>Total number of instances</li>
|
||
<li>Which operating systems versions and flavors are in use</li>
|
||
<li>Python version</li>
|
||
<li>What option is more popular: Docker, Virtualenv or bare metal installs?</li>
|
||
<li>How popular is our new <a href="https://home-assistant.io/blog/2016/10/01/we-have-raspberry-image-now/">Raspberry Pi image</a>?</li>
|
||
</ul>
|
||
|
||
<h2><a class="title-link" name="why-we-look-up-your-ip-address-with-geoip" href="#why-we-look-up-your-ip-address-with-geoip"></a> Why we look up your IP address with GeoIP</h2>
|
||
<p>We store the city so that we can see where our users are from. This information will be used to give us a better insight in where our users are from. This will help us gather data to see if we should for example prioritize internationalization. In addition, we previously had a nasty bug with the <code class="highlighter-rouge">sun</code> component in which users above a certain latitude were having crashes multiple times a day. Had the updater component been in place we could have targeted a special priority update notification only to them.</p>
|
||
|
||
<p>As stated in the release blog post, the location information is <em>not</em> provided by your local Home Assistant installation but is instead gathered by comparing your IP address against the <a href="https://dev.maxmind.com/geoip/geoip2/geolite2/">GeoLite2 data created by MaxMind</a>. From their documentation:</p>
|
||
|
||
<blockquote>
|
||
<p>IP geolocation is inherently imprecise. Locations are often near the center of the population. Any location provided by a GeoIP database should not be used to identify a particular address or household.</p>
|
||
</blockquote>
|
||
|
||
<h2><a class="title-link" name="why-is-it-enabled-by-default" href="#why-is-it-enabled-by-default"></a> Why is it enabled by default</h2>
|
||
<p>We decided to have it enabled by default because we consider the information that is gathered not harmful. We understand that not everyone will agree with us and so we have provided <a href="https://home-assistant.io/components/updater/">multiple ways to opt out</a>.</p>
|
||
|
||
<p>It is in our short-term planning to add an option to control this to our frontend.</p>
|
||
|
||
<h2><a class="title-link" name="source-code" href="#source-code"></a> Source Code</h2>
|
||
<p>The source code of our updater AWS Lambda function is now available <a href="https://github.com/home-assistant/Analytics-Receiver">here</a>.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.31: Reading you the news, some serious business, spooky hackery and a breaking Z-Wave change]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/10/22/flash-briefing-updater-hacktoberfest/"/>
|
||
<updated>2016-10-22T20:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/10/22/flash-briefing-updater-hacktoberfest</id>
|
||
<content type="html"><![CDATA[<p>Hello again friend,</p>
|
||
|
||
<p>How are you? Having a good day? We sure are. If you aren’t having a good day, this might cheer you up…</p>
|
||
|
||
<p>Every other weekend around here gets a little hectic leading to a big sigh of relief as we release a new version of Home Assistant to the world. And this time is no different. Our developer community has once again built us a beautiful new release with lots of new features and improvements. We hope you like it.</p>
|
||
|
||
<p>One last thing before we get going though, I should warn you… <a href="https://github.com/balloob">@balloob</a> got a bit lazy this week and let me (<a href="https://github.com/robbiet480">@robbiet480</a>) step up to the plate again to write the blog post and do the release. I guess I didn’t do such a bad job in <a href="https://home-assistant.io/blog/2016/08/28/notifications-hue-fake-unification/">0.27</a>. You’ll never know what surprises I have in store. Now that i’ve got all that stuff out of the way, let’s get started…</p>
|
||
|
||
<h2><a class="title-link" name="stats-update" href="#stats-update"></a> Stats Update</h2>
|
||
<p>Sadly, no big amazing stats to update you with this time, but we did recently pass 7,000 commits! This release featured submissions from 45 contributors. Hopefully with the new updater component we will be able to give you some really good stats in the 0.32 blog post.</p>
|
||
|
||
<h2><a class="title-link" name="hacktoberfest" href="#hacktoberfest"></a> Hacktoberfest</h2>
|
||
|
||
<p><img src="https://home-assistant.io/images/blog/2016-10-hacktoberfest/hacktoberfest.png" alt="Hacktoberfest logo" /></p>
|
||
|
||
<p>October means Hacktoberfest time and our community has really come through with some excellent improvements and additions. As of this writing, we have 194 merged and 41 open pull requests to the <a href="https://github.com/home-assistant/home-assistant/labels/Hacktoberfest">home-assistant repository</a> and 209 merged/28 open pull requests submitted to the <a href="https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest">home-assistant.github.io repository</a>. If you want to get in on the fun check out our <a href="https://home-assistant.io/blog/2016/10/02/hacktoberfest/">Hacktoberfest</a> blog post or the <a href="https://hacktoberfest.digitalocean.com/">Hacktoberfest website</a>. You get an awesome t-shirt for free if you have 4 pull requests merged in the month of October! We even have tasks that a non-developer can easily accomplish with a tiny bit of work. Better hurry up though, only 9 days left and most of the easy tasks are gone!</p>
|
||
|
||
<h2><a class="title-link" name="-a-greatly-improved-updater-component-please-read-this-" href="#-a-greatly-improved-updater-component-please-read-this-"></a> ⚠️ A greatly improved updater component (Please read this!) ⚠️</h2>
|
||
|
||
<p>This release includes an update to our <a href="https://home-assistant.io/components/updater/">updater</a> component. The responsibility of the updater component is to check if a new version is available and notify the user if this is the case.</p>
|
||
|
||
<p>It used to be that this component would check with <a href="https://pypi.python.org/pypi">PyPi</a> (the Python package manager) to see if a new update was available. This had a couple of problems:</p>
|
||
|
||
<ol>
|
||
<li>We are unable to do a slow rollout</li>
|
||
<li>We are unable to show the user extra information (like a link to a changelog or the release date)</li>
|
||
<li>We are unable to warn users for critical security updates</li>
|
||
</ol>
|
||
|
||
<p>So to work around these problems, we decided to start hosting the version check service ourselves. Since we had to get some infrastructure spun up anyway, we figured we would take it a step further. Which leads me to this bit of the update (the most important part):</p>
|
||
|
||
<h3><a class="title-link" name="what-you-need-to-know-the-important-bit" href="#what-you-need-to-know-the-important-bit"></a> What you need to know (the important bit!)</h3>
|
||
|
||
<p>Remember how I mentioned that up there in the title that there is some serious business in this release? Well, we also added some basic analytics to the updater component which get sent to the server and stored so that we get a better idea of our user base.</p>
|
||
|
||
<p>Each Home Assistant instance running the updater component will generate a <a href="https://en.wikipedia.org/wiki/Universally_unique_identifier">unique ID</a> (based on UUIDv4) that will be used for the updater to be able to differentiate between instances. This UUID will be stored in your config directory in a file called <code class="highlighter-rouge">.uuid</code>.</p>
|
||
|
||
<h4>Opting out</h4>
|
||
|
||
<p>There are two ways to opt-out. The first way is by using the new <code class="highlighter-rouge">opt_out</code> option for the updater. This way the updater will continue to check for updates, but no information about your system will be shared with us.</p>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">updater</span><span class="pi">:</span>
|
||
<span class="s">reporting</span><span class="pi">:</span> <span class="s">no</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>You can also disable the updater component entirely by removing <code class="highlighter-rouge">updater:</code> from your <code class="highlighter-rouge">configuration.yaml</code> although <strong>we would not suggest you do this</strong> as you would miss any critical updates.</p>
|
||
|
||
<p>Finally, you can also reset your unique identifier by deleting the <code class="highlighter-rouge">.uuid</code> file and restarting Home Assistant.</p>
|
||
|
||
<h4>Data stored on the Home Assistant update server</h4>
|
||
|
||
<p>Here is what my production Home Assistant instance looks like from the server side:</p>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Description</th>
|
||
<th>Example</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">arch</code></td>
|
||
<td>CPU Architecture</td>
|
||
<td><code class="highlighter-rouge">x86_64</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">distribution</code></td>
|
||
<td>Linux Distribution name (only Linux)</td>
|
||
<td><code class="highlighter-rouge">Ubuntu</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">docker</code></td>
|
||
<td>True if running inside Docker</td>
|
||
<td><code class="highlighter-rouge">false</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">os_name</code></td>
|
||
<td>Operating system name</td>
|
||
<td><code class="highlighter-rouge">Darwin</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">os_version</code></td>
|
||
<td>Operating system version</td>
|
||
<td><code class="highlighter-rouge">10.12</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">python_version</code></td>
|
||
<td>Python version</td>
|
||
<td><code class="highlighter-rouge">3.5.2</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">timezone</code></td>
|
||
<td>Timezone</td>
|
||
<td><code class="highlighter-rouge">America/Los_Angeles</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">user_agent</code></td>
|
||
<td>User agent used to submit analytics</td>
|
||
<td><code class="highlighter-rouge">python-requests/2.11.1</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">uuid</code></td>
|
||
<td>Unique identifier</td>
|
||
<td><code class="highlighter-rouge">10321ee6094d4a2ebb5ed55c675d5f5e</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">version</code></td>
|
||
<td>Home Assistant version</td>
|
||
<td><code class="highlighter-rouge">0.31.0</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">virtualenv</code></td>
|
||
<td>True if running inside virtualenv</td>
|
||
<td><code class="highlighter-rouge">true</code></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>In addition to the above collected data, the server will also use your IP address to do a geographic IP address lookup to determine the city that you are from. To be extremely, extremely clear about this bit: <strong>The Home Assistant updater does not: store your IP address in a database and also does not submit the location information from your <code class="highlighter-rouge">configuration.yaml</code>.</strong></p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-10-flash-briefing-updater-hacktoberfest/map.png" />
|
||
Geo-lookup on my IP resolves to Oakland with latitude/longitude pointing at the geographical center of the city.
|
||
</p>
|
||
|
||
<p>The server also adds two timestamps to the data: the original date your instance UUID was first seen and the timestamp of the last time we have seen your instance. This gives us the following extra data:</p>
|
||
|
||
<table>
|
||
<thead>
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Description</th>
|
||
<th>Example</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">first_seen_datetime</code></td>
|
||
<td>First time instance ID was submitted</td>
|
||
<td><code class="highlighter-rouge">2016-10-22T19:56:03.542Z</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_city</code></td>
|
||
<td>GeoIP determined city</td>
|
||
<td><code class="highlighter-rouge">Oakland</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_country_code</code></td>
|
||
<td>GeoIP determined country code</td>
|
||
<td><code class="highlighter-rouge">US</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_country_name</code></td>
|
||
<td>GeoIP determined country name</td>
|
||
<td><code class="highlighter-rouge">United States</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_latitude</code></td>
|
||
<td>GeoIP determined latitude (of the city)</td>
|
||
<td><code class="highlighter-rouge">37.8047</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_longitude</code></td>
|
||
<td>GeoIP determined longitude (of the city)</td>
|
||
<td><code class="highlighter-rouge">-122.2124</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_metro_code</code></td>
|
||
<td>GeoIP determined metro code</td>
|
||
<td><code class="highlighter-rouge">807</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_region_code</code></td>
|
||
<td>GeoIP determined region code</td>
|
||
<td><code class="highlighter-rouge">CA</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_region_name</code></td>
|
||
<td>GeoIP determined region name</td>
|
||
<td><code class="highlighter-rouge">California</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_time_zone</code></td>
|
||
<td>GeoIP determined time zone</td>
|
||
<td><code class="highlighter-rouge">America/Los_Angeles</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">geo_zip_code</code></td>
|
||
<td>GeoIP determined zip code</td>
|
||
<td><code class="highlighter-rouge">94602</code></td>
|
||
</tr>
|
||
<tr>
|
||
<td><code class="highlighter-rouge">last_seen_datetime</code></td>
|
||
<td>Most recent time instance ID was submitted</td>
|
||
<td><code class="highlighter-rouge">2016-10-22T19:56:03.542Z</code></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p>This data is held in the highest security. The update system runs in a secured Amazon Web Services account owned by me (<a href="https://github.com/robbiet480">@robbiet480</a>). I personally have 5 years of experience with complex AWS deployments and have an extensive security background. I have audited the entire system and made sure to take every step to protect the data, including limiting who has access (just <a href="https://github.com/balloob">@balloob</a> and myself). While not directly personally identifiable we absolutely understand some users hesistance to giving this information out. Please understand that we are only collecting this information to better understand our user base to provide better long term support and feature development then is currently possible.</p>
|
||
|
||
<p>We currently have no plans to publicly expose any of this information. If we did do such a thing in the future we would of course notify you in advance. It must also be stated that we will never sell or allow the use of this information for non-Home Assistant purposes.</p>
|
||
|
||
<p>We thank you for understanding why we are collecting this data and hope that you leave the feature enabled but fully understand if you feel uncomfortable with this.</p>
|
||
|
||
<p><em>This section was updated on October 24 to be more clear about geo-lookups being on the city level. <a href="https://github.com/home-assistant/home-assistant.github.io/blob/c937242d154e509d2d84d10c51f654e20556fa21/source/_posts/2016-10-22-flash-briefing-updater-hacktoberfest.markdown">See original version.</a></em></p>
|
||
|
||
<p>Now, back to the fun stuff…</p>
|
||
|
||
<h2><a class="title-link" name="good-evening-im-ron-burgundy-and-heres-what-happening-in-your-world-tonight" href="#good-evening-im-ron-burgundy-and-heres-what-happening-in-your-world-tonight"></a> Good evening. I’m Ron Burgundy and here’s what happening in your world tonight.</h2>
|
||
|
||
<p>Home Assistant got a crazy idea recently that it couldn’t do enough already and wanted to challenge itself even more. I really don’t understand how it came up with this kooky idea, but it now thinks that its newest hobby should be a minor career in journalism.</p>
|
||
|
||
<p>0.31 adds support for the brand spanking new <a href="https://developer.amazon.com/alexa-skills-kit/flash-briefing">Alexa Flash Briefing API</a>, allowing you to get updates from Home Assistant anytime you ask Alexa to read your flash briefing. What’s the use case you ask? Well, now when I wake up in the morning and get my flash briefing, Home Assistant adds this to the end of it for me:</p>
|
||
|
||
<blockquote>
|
||
<p>Drive time with traffic is 35 minutes. There is an UberPOOL that will cost $11.52, estimated to be 2 minutes away, for a total of 37 minutes. BART is currently estimated to take 29 minutes. You should take BART, as it is estimated to be faster by 8 minutes.</p>
|
||
</blockquote>
|
||
|
||
<p>Now I know how to best get to <a href="http://runway.is">my real job</a> (no, Home Assistant is <em>not</em> my real job, it does seem like it sometimes though) every morning. Obviously not the best home automation example, but I think you get the idea. I could see this being used to tell you any major events that happened in your home overnight or reading you your hyperlocal weather report. Thanks to the audio support you could even replace all of the default Alexa Flash Briefing sources with your own news feeds. Home Assistant supports both text and audio content as well as displaying data in the Alexa app. I also want to point out that unlike the existing Skill integration, the Flash Briefing API does <em>not</em> require HTTPS (<em>but you should still be using HTTPS if possible</em>). For more information, check out the new <a href="https://home-assistant.io/components/alexa/">docs</a>.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-10-flash-briefing-updater-hacktoberfest/stay-classy.jpg" />
|
||
You stay classy, San Diego. (It’s funny, because balloob lives in San Diego))
|
||
</p>
|
||
|
||
<h2><a class="title-link" name="major-breaking-z-wave-changes-ahead" href="#major-breaking-z-wave-changes-ahead"></a> Major breaking Z-Wave changes ahead</h2>
|
||
|
||
<p>A rather nasty Z-Wave <a href="https://github.com/home-assistant/home-assistant/pull/3759">issue</a> was discovered recently by <a href="https://github.com/lukas-hetzenecker">@lukas-hetzenecker</a>. There was a somewhat large chance that if you had multiple of the same model Z-Wave device they may both try to use the same entity IDs. To fix the issue the internal Z-Wave index is now appended to the end of all Z-Wave entity IDs.</p>
|
||
|
||
<p>What this means for all you Z-Wave users is that you will need to update your configurations to reflect the change. I personally have quite a few (17) Z-Wave devices and went through the process this week. Here’s what I had to do:</p>
|
||
|
||
<ul>
|
||
<li>Update customizations</li>
|
||
<li>Update groups</li>
|
||
<li>Update my <code class="highlighter-rouge">zwave.customize</code> section</li>
|
||
<li>Update my Alexa skills that used old entity IDs</li>
|
||
<li>Because I use <code class="highlighter-rouge">emulated_hue</code> with Alexa and <code class="highlighter-rouge">emulated_hue</code> uses the entity ID as a unique identifier I also had to remove all Z-Wave devices from Alexa and re-add them.</li>
|
||
</ul>
|
||
|
||
<p>Your todo list may be a little different from mine, I just wanted to outline the steps I took to give you an idea of what you need to think about. It’s not a very hard process, especially when using global find and replace in Sublime Text but did take me about 20 minutes to complete.</p>
|
||
|
||
<p>This is super annoying, I know, especially since we had said in <a href="https://home-assistant.io/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/#backwards-incompatible-changes/">0.12</a> that Z-Wave IDs should hopefully never change again, but we are now forced to eat those words. I will state again that Z-Wave IDs shouldn’t change in the future but obviously we see how that went. To sum up on this section… sorry but it had to happen.</p>
|
||
|
||
<h2><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h2>
|
||
|
||
<ul>
|
||
<li><a href="https://home-assistant.io/components/updater/">Updater</a> component (<a href="https://github.com/infamy">@infamy</a>, <a href="https://github.com/robbiet480">@robbiet480</a>, <a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Continue to setup other platforms when 1 platform config is invalid (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Create <a href="https://home-assistant.io/components/persistent_notification/">persistent notifications</a> when a platform contains invalid config (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Logbook: Allow <a href="https://home-assistant.io/components/logbook/">filtering</a> domains and entities to be shown (<a href="https://github.com/wokar">@wokar</a>)</li>
|
||
<li>HTTP: Change <code class="highlighter-rouge">approved_ips</code> from string to CIDR validation (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Persistent Notifications: Allow using <a href="https://home-assistant.io/components/persistent_notification/">markdown</a> (<a href="https://github.com/justweb1">@justweb1</a>)</li>
|
||
<li>Netatmo: Add <a href="https://home-assistant.io/components/netatmo/">discovery</a> support (<a href="https://github.com/jabesq">@jabesq</a>)</li>
|
||
<li>Netatmo Welcome camera: Add <a href="https://home-assistant.io/components/binary_sensor.netatmo/">binary sensor</a> (<a href="https://github.com/jabesq">@jabesq</a>)</li>
|
||
<li>Support added for <a href="https://home-assistant.io/components/sensor.haveibeenpwned/">HaveIBeenPwned</a> (<a href="https://github.com/joyrider3774">@joyrider3774</a>)</li>
|
||
<li>Device tracker: <code class="highlighter-rouge">known_devices.yaml</code> reading and writing tweaks and fixes (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Fix climate platforms showing the wrong temperature unit (<a href="https://github.com/rcloran">@rcloran</a>)</li>
|
||
<li>Lots of voluptuous love (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Ensure proper attribution for weather platforms (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Fix Telegram in Docker (<a href="https://github.com/jeanregisser">@jeanregisser</a>)</li>
|
||
<li>Support recursive config inclusions in YAML (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Camera: <a href="https://home-assistant.io/components/camera.synology/">Synology</a> SS cameras now supported (<a href="https://github.com/jgriff2">@jgriff2</a>)</li>
|
||
<li>History: Allow filtering domains and entities to be shown (<a href="https://github.com/wokar">@wokar</a>)</li>
|
||
<li>Media Player - Squeezebox: Now able to show artist and album (<a href="https://github.com/ih8gates">@ih8gates</a>)</li>
|
||
<li>Alexa: Flash Briefing skill support added (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Device Tracker: Add support for Bbox Modem Router (<a href="https://github.com/HydrelioxGithub">@HydrelioxGithub</a>)</li>
|
||
<li>Sensor: Add support for Bbox Modem Router (<a href="https://github.com/HydrelioxGithub">@HydrelioxGithub</a>)</li>
|
||
<li>Input select: Services added to pick next and prev option (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.arwn/">ARWN</a> now supported (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
<li>Pushbullet: Push an URL note if an url is provided inside data (<a href="https://github.com/jabesq">@jabesq</a>)</li>
|
||
<li>Z-Wave: Allow certain devices to be not added to Home Assistant (<a href="https://github.com/lukas-hetzenecker">@lukas-hetzenecker</a>)</li>
|
||
<li>New support for <a href="https://home-assistant.io/components/zoneminder/">Zoneminder</a> added (<a href="https://github.com/Khabi">@Khabi</a>)</li>
|
||
<li>Weather: Allow tracking severe weather alerts with <a href="https://home-assistant.io/components/sensor.wunderground/">WUnderground</a> (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Sensor: New support added to track <a href="https://home-assistant.io/components/sensor.min_max/">min/max/mean</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Convert EntityComponent to be async (<a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Z-Wave: Add assocation service (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Frontend - Services dev tool: persist state and tweak UI (<a href="https://github.com/justweb1">@justweb1</a>)</li>
|
||
<li>Sensor: Support added for <a href="https://home-assistant.io/components/sensor.scrape/">scraping</a> websites (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Clean up of tests (<a href="https://github.com/capellini">@capellini</a>)</li>
|
||
<li>New <code class="highlighter-rouge">fail</code> filter added to templates to raise on UndefinedError (<a href="https://github.com/jaharkes">@jaharkes</a>)</li>
|
||
<li>Support added for <a href="https://home-assistant.io//components/emoncms_history/">Emoncms history</a> (<a href="https://github.com/joyrider3774">@joyrider3774</a>)</li>
|
||
<li>Support for <a href="https://home-assistant.io/components/notify.apns/">Apple Push Notifications Service</a> (<a href="https://github.com/sam-io">@sam-io</a>)</li>
|
||
<li>Thermostat: Netatmo now supported (<a href="https://github.com/gieljnssns">@gieljnssns</a>)</li>
|
||
<li>Alarm control panel: <a href="https://home-assistant.io/components/alarm_control_panel.concord232/">Concord232</a> now supported (<a href="https://github.com/JasonCarter80">@JasonCarter80</a>)</li>
|
||
<li>Notify: <a href="https://home-assistant.io//components/notify.matrix/">Matrix</a> support added (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Device tracker - nmap: Allow specifying multiple inputs for <a href="https://home-assistant.io/components/device_tracker.nmap_tracker/">nmap</a> (<a href="https://github.com/hcooper">@hcooper</a>)</li>
|
||
<li>Device Tracker - snmp: SNMPv3 now supported (<a href="https://github.com/T3m3z">@T3m3z</a>)</li>
|
||
<li>Notify: <a href="https://home-assistant.io/components/notify.telstra/">Telstra</a> SMS now supported (<a href="https://github.com/nvella">@nvella</a>)</li>
|
||
<li>Camera: <a href="https://home-assistant.io/components/camera.verisure/">Verisure</a> now supported (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Support added for <a href="https://home-assistant.io/components/switch.neato/">Neato</a> Connected Robot (<a href="https://github.com/jabesq">@jabesq</a>)</li>
|
||
<li>Media player: More options for <a href="https://home-assistant.io/components/media_player.yamaha/">Yamaha</a> AVR (<a href="https://github.com/ehagan">@ehagan</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.pilight/">Pilight</a> sensor (<a href="https://github.com/DavidLP">@DavidLP</a>)</li>
|
||
<li>iOS support (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Minor features and bug fixes by <a href="https://github.com/mtl010957">@mtl010957</a>, <a href="https://github.com/molobrakos">@molobrakos</a>, <a href="https://github.com/flyte">@flyte</a>, <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/phardy">@phardy</a>, <a href="https://github.com/sander76">@sander76</a>, <a href="https://github.com/T3m3z">@T3m3z</a>, <a href="https://github.com/c-w">@c-w</a>, <a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/robbiet480">@robbiet480</a>, <a href="https://github.com/StaticCube">@StaticCube</a>, <a href="https://github.com/vittoriom">@vittoriom</a>, <a href="https://github.com/hartmms">@hartmms</a>, <a href="https://github.com/kirichkov">@kirichkov</a>, <a href="https://github.com/mezz64">@mezz64</a>, <a href="https://github.com/ishults">@ishults</a>, <a href="https://github.com/Danielhiversen">@Danielhiversen</a> and <a href="https://github.com/tchellomello">@tchellomello</a>.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0311---october-24" href="#release-0311---october-24"></a> Release 0.31.1 - October 24</h3>
|
||
|
||
<ul>
|
||
<li>Identify special character encoding error in YAML files (<a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>iOS app component bug fixes (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Fix a spelling problem on user-facing error (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>YAML includes will ignore dirs/files prefixed with . (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
</ul>
|
||
|
||
<h2><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h2>
|
||
|
||
<ul>
|
||
<li>The <a href="https://home-assistant.io/components/http/">HTTP</a> component now takes a different format for authenticating IPs</li>
|
||
<li>Configuration format has changed for <a href="https://home-assistant.io/components/proximity/">Proximity</a></li>
|
||
<li>The <a href="https://home-assistant.io/components/arduino/">Arduino</a> platform are now covered by the configuration check. Please check the documentation to see how.</li>
|
||
<li>The Z-Wave entity ID change mentioned above</li>
|
||
</ul>
|
||
|
||
<h2><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h2>
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.</p>
|
||
|
||
<h2><a class="title-link" name="until-next-time" href="#until-next-time"></a> Until next time</h2>
|
||
|
||
<p>Thanks for reading all of the above, especially since this week was a pretty long post. We should be back with a new post around November 5th announcing the arrival of 0.32.</p>
|
||
|
||
<p>– Robbie</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.30: More Async, HASSbian, Digital Ocean, statistics, REST]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/10/08/hassbian-rest-digital-ocean/"/>
|
||
<updated>2016-10-08T03:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/10/08/hassbian-rest-digital-ocean</id>
|
||
<content type="html"><![CDATA[<p>Yes, after only nine days comes 0.30. Don’t worry, we will try to keep our usual release cycle and not start to release every day.</p>
|
||
|
||
<p>We guess that you already know: The <a href="https://home-assistant.io/blog/2016/10/01/we-have-raspberry-image-now/">Raspberry Pi image</a> is available now. For Hassbian, <a href="https://github.com/Landrash">@Landrash</a> has combined the most essential parts for a Home Assistant setup in an easy-to-use image for the Raspberry Pi device family. Hassbian is quite young, thus we are looking forward to recieve <a href="https://community.home-assistant.io/c/installation/hassbian">feedback</a>, <a href="https://community.home-assistant.io/c/installation/hassbian">issue report</a>, and <a href="https://community.home-assistant.io/c/installation/hassbian">suggestions</a> to improve it.</p>
|
||
|
||
<p>A large amount of resources of the development are still focusing on the effort to move Home Assistant further to asynchronous programming. It’s a labor-intensive task, comes with segmentation faults, and unstable instances when certain combinations of sensors are used. The benefit will be more speed in the near future.</p>
|
||
|
||
<p>To reduce the run-time of your tests, <a href="https://github.com/balloob">@balloob</a> did a lot of tweaking. For now the RFXtrx tests are excluded which cut the needed time for running on your Pull Request in half.</p>
|
||
|
||
<h3><a class="title-link" name="documentation" href="#documentation"></a> Documentation</h3>
|
||
|
||
<p>All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what’s needed and not a full sample with all optional entries. If there is an issue with an entry in your <code class="highlighter-rouge">configuration.yaml</code> file the error message will provide you an URL that point to the documentation.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/screenshots/config-validation-url.png" />
|
||
</p>
|
||
|
||
<p>As soon as the <a href="https://home-assistant.io/blog/2016/10/02/hacktoberfest/">Hacktoberfest</a> started there were a lot of incoming Pull Requests for the documentation. A huge “Thank you” to all participants. Especially, we would like to give a cookie to <a href="https://github.com/hillaryfraley">@hillaryfraley</a>. She created around a dozen Pull Requests so far and didn’t only fix typos but complete sections. The <a href="https://home-assistant.io/blog/2016/10/02/hacktoberfest/">Hacktoberfest</a> is still on-going and we are looking forward to get more Pull Requests.</p>
|
||
|
||
<h3><a class="title-link" name="statistics" href="#statistics"></a> Statistics</h3>
|
||
|
||
<p>With the <a href="https://home-assistant.io/components/sensor.statistics/">statistics sensor</a> we would like to introduce a new sensor that is similar to the <a href="https://home-assistant.io/components/sensor.template/">template sensor</a> or the <a href="https://home-assistant.io/components/binary_sensor.trend/">trend sensor</a>. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/screenshots/stats-sensor.png" />
|
||
</p>
|
||
|
||
<p>As the results are processed on-the-fly you still need to use the data from your database for a in-depth analysis of your stored information. Check the latest <a href="http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/database-statistics.ipynb">notebook</a> for doing statistics with your Home Assistant database.</p>
|
||
|
||
<h3><a class="title-link" name="rest-we-dont" href="#rest-we-dont"></a> REST! We don’t…</h3>
|
||
|
||
<p>There was a lot of work done on our implementation which are working with RESTful APIs. <a href="https://github.com/w1ll1am23">@w1ll1am23</a> extended the <a href="https://arest.io/">aREST</a> platforms to display if an aREST unit is available or not. The aREST implementations are now covered by the configuration check as well. Please check the Breaking changes section for more details.</p>
|
||
|
||
<p>The <a href="https://home-assistant.io/components/sensor.rest/">REST sensor</a> supports now HTTP authentication (basic and digest) and custom headers. This will allow you to access resources which are protected. This sample sensor will access GitHub and retrieve the latest release number while by-passing the rate limit for non-authenticated requests.</p>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span>
|
||
<span class="s">- platform</span><span class="pi">:</span> <span class="s">rest</span>
|
||
<span class="s">resource</span><span class="pi">:</span> <span class="s">https://api.github.com/repos/home-assistant/home-assistant/releases/latest</span>
|
||
<span class="s">username</span><span class="pi">:</span> <span class="s">YOUR_GITHUB_USERNAME</span>
|
||
<span class="s">password</span><span class="pi">:</span> <span class="s">YOUR_GITHUB_ACCESS_TOKEN</span>
|
||
<span class="s">authentication</span><span class="pi">:</span> <span class="s">basic</span>
|
||
<span class="s">value_template</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{{</span><span class="nv"> </span><span class="s">value_json.tag_name</span><span class="nv"> </span><span class="s">}}'</span>
|
||
<span class="s">headers</span><span class="pi">:</span>
|
||
<span class="s">Accept</span><span class="pi">:</span> <span class="s">application/vnd.github.v3+json</span>
|
||
<span class="s">Content-Type</span><span class="pi">:</span> <span class="s">application/json</span>
|
||
<span class="s">User-Agent</span><span class="pi">:</span> <span class="s">Home Assistant REST sensor</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<h3><a class="title-link" name="misc" href="#misc"></a> Misc</h3>
|
||
|
||
<ul>
|
||
<li>GitHub released with a recent update a review feature. This will give you more control over your comments while you review an open Pull Request.</li>
|
||
<li>Thanks to <a href="https://github.com/robbiet480">@robbiet480</a> we are now running <a href="https://github.com/mention-bot">mention-bot</a>. It will help you when you create a new Pull Request to identify potential reviewers.</li>
|
||
<li>The <a href="https://community.home-assistant.io/">Home Assistant Community Forum</a> has now an additional section called “Installation”.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h3>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/digital_ocean.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/volvo.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/dark_sky.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/vasttrafik.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Core: A lot of stuff is now async (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Nest: Support for operation modes (<a href="https://github.com/jawilson">@jawilson</a>)</li>
|
||
<li>Z-Wave: Massive update for command classes and device classes (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Digital Ocean: New <a href="https://home-assistant.io/components/switch.digital_ocean/">switch</a> to control and <a href="https://home-assistant.io/components/binary_sensor.digital_ocean/">binary sensor</a> to monitor droplets (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Cover: Support for <a href="https://home-assistant.io/components/cover.mysensors/">MySensors cover</a> (<a href="https://github.com/OttoWinter">@OttoWinter</a>)</li>
|
||
<li>Wink: Support for oAuth2 and relay sensors (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.darksky/">Forecast</a> update interval is now configurable (<a href="https://github.com/KlaasH">@KlaasH</a>)</li>
|
||
<li>Core: Failed login attempts are reported as persistent notifications (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Climate: Temperature convert now available in the Climate object (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Notify: Update to accept a list (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Device tracker: Support for tracking of your <a href="https://home-assistant.io/components/device_tracker.volvooncall/">Volvo</a> (<a href="https://github.com/molobrakos">@molobrakos</a>)</li>
|
||
<li>Switch: Flux improvements (<a href="https://github.com/jawilson">@jawilson</a>)</li>
|
||
<li>InfluxDB: Time-out for connections (<a href="https://github.com/simonszu">@simonszu</a>)</li>
|
||
<li>Sensor: New MySensors types available (<a href="https://github.com/MartinHjelmare">@MartinHjelmare</a>)</li>
|
||
<li>Switch: <a href="https://home-assistant.io/components/switch.anel_pwrctrl/">ANEL PwrCtrl</a> devices are now supported (<a href="https://github.com/mweinelt">@mweinelt</a>)</li>
|
||
<li>Frontend: Path of the configuration file now visible on the frontend (<a href="https://github.com/justweb1">@justweb1</a>)</li>
|
||
<li>Homematic: Extended device support (RF, IP and wired devices) (<a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Sensor: New sensor for <a href="https://home-assistant.io/components/sensor.statistics/">statistical analysis</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Sensor: Support for headers and HTTP authentication for <a href="https://home-assistant.io/components/sensor.rest/">REST sensors</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Device tracker: Support for encrypted Owntracks payload (<a href="https://github.com/molobrakos">@molobrakos</a>)</li>
|
||
<li>Tests: Improvement of the HTML5 notify tests (<a href="https://github.com/capellini">@capellini</a>)</li>
|
||
<li>Wink: Support for Wink Smoke and CO detectors (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.ted5000/">TED5000</a> sensor was included (<a href="https://github.com/gwendalg">@gwendalg</a>)</li>
|
||
<li>Sensor: Support for <a href="https://home-assistant.io/components/sensor.vasttrafik/">Västtrafik</a> public transport (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>Notify: <a href="https://home-assistant.io/components/notify.pushetta/">Pushetta</a> no longer sends message on start up (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.forecast/">Forecast.io</a> sensor was replaced by <a href="https://home-assistant.io/components/sensor.darksky/">Dark Sky</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Device Tracker: The <code class="highlighter-rouge">known_device.yaml</code> file is now validated (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Minor features and bug fixes by <a href="https://github.com/tchellomello">@tchellomello</a>, <a href="https://github.com/pavoni">@pavoni</a>, <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/lwis">@lwis</a>, <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/Danielhiversen">@Danielhiversen</a>, <a href="https://github.com/persandstrom">@persandstrom</a>, <a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/robbiet480">@robbiet480</a>, <a href="https://github.com/sam-io">@sam-io</a>, <a href="https://github.com/bbangert">@bbangert</a>, and you if you are missing here.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0301---october-8" href="#release-0301---october-8"></a> Release 0.30.1 - October 8</h3>
|
||
|
||
<ul>
|
||
<li>Device Tracker <code class="highlighter-rouge">known_devices.yaml</code> validation is now more accepting (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Handle X10 light numbers greater than 9 (<a href="https://github.com/mtl010957">@mtl010957</a>)</li>
|
||
<li>Fix command line covers without a template (<a href="https://github.com/roidayan">@roidayan</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="release-0302---october-12" href="#release-0302---october-12"></a> Release 0.30.2 - October 12</h3>
|
||
|
||
<ul>
|
||
<li>Handle Volvo’s with dashes in their name (<a href="https://github.com/molobrakos">@molobrakos</a>)</li>
|
||
<li>Fix some html5 push notification configuration options were discarded after first use (<a href="https://github.com/T3m3z">@T3m3z</a>)</li>
|
||
<li>Fix Homematic device name with autodiscovery (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Make ‘pin’ optional for zigbee device config (<a href="https://github.com/flyte">@flyte</a>)</li>
|
||
<li>Fix when sending a notification to a service with target attached (i.e. <code class="highlighter-rouge">notify.html5_unnamed_device_2</code>) the target was not submitted to the platform as a list causing iteration over every character in the string. (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Fix for Slack targets (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Fix for Pushover targets (<a href="https://github.com/Nixon506E">@Nixon506E</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>All deprecated condition options from <code class="highlighter-rouge">automation</code> have been removed (deprecated since May and have printed warnings to your console):
|
||
<ul>
|
||
<li><code class="highlighter-rouge">use_trigger_values</code> is gone. You have to copy your triggers to conditions and adjust for the correct config.</li>
|
||
<li><code class="highlighter-rouge">condition_type</code> is gone. Use <code class="highlighter-rouge">condition: or</code> instead.</li>
|
||
<li>To specify the type of a condition, use <code class="highlighter-rouge">condition:</code> instead of <code class="highlighter-rouge">platform:</code>.</li>
|
||
</ul>
|
||
</li>
|
||
<li>The <a href="https://home-assistant.io/components/sensor.forecast/">Forecast.io</a> was renamed to <a href="https://home-assistant.io/components/sensor.darksky/">Dark Sky</a>. Replace your <code class="highlighter-rouge">- platform: forecast</code> with <code class="highlighter-rouge">- platform: darksky</code>.</li>
|
||
<li>The <a href="https://arest.io/">aREST</a> configuration between the <a href="https://home-assistant.io/components/sensor.arest/">sensor</a> and the <a href="https://home-assistant.io/components/switch.arest/">switch</a> platform was aligned.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h3>
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[Participating in Hacktoberfest]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/10/02/hacktoberfest/"/>
|
||
<updated>2016-10-02T00:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/10/02/hacktoberfest</id>
|
||
<content type="html"><![CDATA[<p>Home Assistant will join this year for <a href="https://hacktoberfest.digitalocean.com/">Hacktoberfest</a>, an event organised by DigitalOcean and GitHub to support and celebrate open source. The idea is that open source projects like Home Assistant will gather a bunch of entry-level bugs, features and documentation enhancements and that you, a current or future contributor, will fix them. If you submit four pull-requests during the month of October you will have earned yourself a limited edition Hacktoberfest T-shirt!</p>
|
||
|
||
<p>Why contribute to Home Assistant:</p>
|
||
|
||
<ul>
|
||
<li>Written in Python3 with 94% test coverage</li>
|
||
<li>Active and helpful community</li>
|
||
<li>Friendly to new contributors</li>
|
||
</ul>
|
||
|
||
<p>Resources to get started:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://hacktoberfest.digitalocean.com/sign_up/register">Sign up for Hacktoberfest</a></li>
|
||
<li><a href="https://github.com/home-assistant/home-assistant/labels/Hacktoberfest">List of entry-level issues for Home Assistant</a></li>
|
||
<li><a href="https://home-assistant.io/developers/development_environment/">Instructions to setup your development environment</a></li>
|
||
<li><a href="https://gitter.im/home-assistant/home-assistant/devs">Home Assistant Development Chat</a></li>
|
||
<li><a href="https://community.home-assistant.io/c/development">Home Assistant Development Forums</a></li>
|
||
<li><a href="https://hacktoberfest.digitalocean.com/">Hacktoberfest website</a></li>
|
||
</ul>
|
||
|
||
<p>Are you not a programmer but still want to contribute to Home Assistant? Check out our <a href="https://github.com/home-assistant/home-assistant.github.io/labels/Hacktoberfest">list of entry-level issues for the Home Assistant website</a>.</p>
|
||
|
||
<p><a href="https://hacktoberfest.digitalocean.com/"><img src="https://home-assistant.io/images/blog/2016-10-hacktoberfest/hacktoberfest.png" alt="Hacktober fest logo" /></a></p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[We have a Raspberry Pi image now]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/10/01/we-have-raspberry-image-now/"/>
|
||
<updated>2016-10-01T05:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/10/01/we-have-raspberry-image-now</id>
|
||
<content type="html"><![CDATA[<p>Today we’re happy to announce our brand new Raspberry Pi image! It is based on Raspbian Lite combined with HASS so we decided to call it Hassbian.</p>
|
||
|
||
<p>This image comes pre-installed with everything you need to get started with Home Assistant right away.</p>
|
||
|
||
<p>To get started, check out the installation instructions in <a href="https://home-assistant.io/getting-started/installation-raspberry-pi-image/">the getting started section</a> or watch the latest video by <a href="https://www.youtube.com/channel/UCLecVrux63S6aYiErxdiy4w">BRUHAutomation</a>:</p>
|
||
|
||
<div class="videoWrapper">
|
||
<iframe width="560" height="315" src="https://www.youtube.com/embed/iIz6XqDwHEk" frameborder="0" allowfullscreen=""></iframe>
|
||
</div>
|
||
|
||
<h3><a class="title-link" name="under-the-hood" href="#under-the-hood"></a> Under the hood</h3>
|
||
|
||
<p>It’s based on Raspbian Lite and generated with a fork of the same <a href="https://github.com/home-assistant/pi-gen">script</a> that builds the <a href="https://raspberrypi.org/downloads/raspbian/">official Raspbian images</a>. For installation of HASS it follows the same install instructions as the <a href="https://home-assistant.io/getting-started/installation-raspberry-pi/">Manual installation</a>. Please note that this project has no association with the Raspberry Pi foundation or their projects.</p>
|
||
|
||
<p>On first boot the latest release of Home Assistant will be installed and can be reached after 3~5 minutes. Pre-installed on this image is the MQTT broker <a href="https://mosquitto.org/">Mosquitto</a>, Bluetooth support and settings for the <code class="highlighter-rouge">homeassistant</code> account to use the GPIO pins of the Raspberry Pi. Mosquitto is not activated by default.</p>
|
||
|
||
<p>As it is today there is no pre-compiled Z-Wave support but it can be installed by following the <a href="https://home-assistant.io/getting-started/z-wave/">Getting started instructions for Z-Wave</a>.</p>
|
||
|
||
<p>Happy Automating!</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks/"/>
|
||
<updated>2016-09-29T03:04:05+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks</id>
|
||
<content type="html"><![CDATA[<p>Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of <strong>50</strong> different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!</p>
|
||
|
||
<p>This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.</p>
|
||
|
||
<p>This all changed when <a href="https://github.com/bbangert">@bbangert</a> came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.</p>
|
||
|
||
<h3><a class="title-link" name="sleepiq-and-openalpr" href="#sleepiq-and-openalpr"></a> SleepIQ and OpenALPR</h3>
|
||
|
||
<p>There now is support for two new super cool things: Beds and license plates. <a href="https://github.com/technicalpickles">@technicalpickles</a> created a <a href="https://home-assistant.io/components/sleepiq/">SleepIQ</a> component that let you monitor the sensor data of your bed. <a href="https://github.com/pvizeli">@pvizeli</a> has added license plate recognition based on <a href="https://home-assistant.io/components/openalpr/">OpenALPR</a>! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to <a href="https://github.com/pvizeli">@pvizeli</a> for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).</p>
|
||
|
||
<h3><a class="title-link" name="configuration-validation" href="#configuration-validation"></a> Configuration validation</h3>
|
||
|
||
<p>On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.</p>
|
||
|
||
<h3><a class="title-link" name="delayed-release" href="#delayed-release"></a> Delayed Release</h3>
|
||
|
||
<p>As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: <a href="https://github.com/bbangert">@bbangert</a>, <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/lwis">@lwis</a>, <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/technicalpickles">@technicalpickles</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/persandstrom">@persandstrom</a> and <a href="https://github.com/joyrider3774">@joyrider3774</a>. I am grateful to have all of you as part of the Home Assistant community.</p>
|
||
|
||
<h3><a class="title-link" name="hide-automation-rules" href="#hide-automation-rules"></a> Hide automation rules</h3>
|
||
|
||
<p>Since 0.28 <a href="https://home-assistant.io/blog/2016/09/10/notify-group-reload-api-pihole/#reload-automation-rules/">automation rules</a> can be reloaded directly from the frontend. By default all automation rules are shown. If you want to <a href="https://home-assistant.io/getting-started/automation-create-first/">hide an automation rule</a>, use <code class="highlighter-rouge">hide_entity: True</code>.</p>
|
||
|
||
<h3><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h3>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/emoncms.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/sleepiq.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/openalpr.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Convert core from thread-based to be async-based (<a href="https://github.com/bbangert">@bbangert</a>, <a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>New <a href="https://home-assistant.io/components/sleepiq/">SleepIQ</a> support (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>Cover: <a href="https://home-assistant.io/components/cover.vera/">Vera</a> is now supported (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
<li>Climate: Vera <a href="https://home-assistant.io/components/climate.vera/">climate</a> devices are now supported (<a href="https://github.com/robjohnson189">@robjohnson189</a>)</li>
|
||
<li>Climate: <a href="https://home-assistant.io/components/climate.mysensors/">MySensors</a> is now supported (<a href="https://github.com/kaustubhphatak">@kaustubhphatak</a>)</li>
|
||
<li>Control Home Assistant with <a href="https://home-assistant.io/components/keyboard_remote/">keyboard shortcuts</a> (<a href="https://github.com/deisi">@deisi</a>)</li>
|
||
<li>More voluptuous config validations (<a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>New <a href="https://home-assistant.io/components/nuimo_controller/">Nuimo</a> controller support added (<a href="https://github.com/gross1989">@gross1989</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.bom/">BOM</a> Weather component (<a href="https://github.com/tinglis1">@tinglis1</a>)</li>
|
||
<li>Automation: Option added to hide entity (<a href="https://github.com/milaq">@milaq</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.emoncms/">Emoncms</a> feeds now supported (<a href="https://github.com/joyrider">@joyrider</a>)</li>
|
||
<li>Sensor: Mi Flora <a href="https://home-assistant.io/components/sensor.miflora/">plant</a> sensor now supported (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Logbook: Allow <a href="https://home-assistant.io/components/logbook/">filtering</a> entities and hide hidden entities (<a href="https://github.com/wokar">@wokar</a>)</li>
|
||
<li>Notify: <a href="https://home-assistant.io/components/notify.kodi/">Kodi</a> support added (<a href="https://github.com/chrom3">@chrom3</a>)</li>
|
||
<li>Notify: Support for <a href="https://home-assistant.io/components/notify.simplepush/">Simplepush</a> added (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.knx/">KNX</a> sensors now supported (<a href="https://github.com/daBONDi">@daBONDi</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/wink/">Wink</a> improvements (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/isy994/">ISY</a> improvements (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Link to relevant docs in config validation error messages (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Greatly improve the performance of templates (<a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Notify - <a href="https://home-assistant.io/components/notify.slack/">Slack</a>: Support for username/icon (<a href="https://github.com/Khabi">@Khabi</a>)</li>
|
||
<li>MQTT room detection: Away <a href="https://home-assistant.io/components/sensor.mqtt_room/">timeout</a> now supported (<a href="https://github.com/mKerix">@mKeRix</a>)</li>
|
||
<li>Climate: <a href="https://home-assistant.io/components/fan.nest/">Nest</a> can now control the fan (<a href="https://github.com/jawilson">@jawilson</a>)</li>
|
||
<li>Modbus: Major cleanup for <a href="https://home-assistant.io/components/modbus/">Modbus</a> switches and sensors (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>HTTP: Allow <a href="https://home-assistant.io/components/http/">passwordless</a> logins from whitelisted IP addresses (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Sensor: Yahoo! Finance <a href="https://home-assistant.io/components/sensor.yahoo_finance/">stocks</a> now supported (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Sensor: Set value based on incoming <a href="https://home-assistant.io/components/sensor.imap_email_content/">email</a> (<a href="https://github.com/sam-io">@sam-io</a>)</li>
|
||
<li>Light: White value now supported (<a href="https://github.com/mxtra">@mxtra</a>, <a href="https://github.com/MartinHjelmare">@MartinHjelmare</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/influxdb/">InfluxDB</a> now allows attaching extra data (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/openalpr/">OpenALPR</a> support (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Minor features and bug fixes by <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/w1ll1am23">@w1ll1am23</a>, <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/clach04">@clach04</a>, <a href="https://github.com/mKerix">@mKeRix</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/DavidLP">@DavidLP</a>, <a href="https://github.com/nvella">@nvella</a>, <a href="https://github.com/Teagan42">@Teagan42</a>, <a href="https://github.com/ericwclymer">@ericwclymer</a>, <a href="https://github.com/wokar">@wokar</a>, <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/nkgilley">@nkgilley</a>, <a href="https://github.com/jawilson">@jawilson</a>, <a href="https://github.com/Danielhiversen">@Danielhiversen</a>, <a href="https://github.com/ej81">@ej81</a>, <a href="https://github.com/danieljkemp">@danieljkemp</a>, <a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/philhawthorne">@philhawthorne</a>, <a href="https://github.com/LinuxChristian">@LinuxChristian</a>, <a href="https://github.com/milas">@milas</a>, <a href="https://github.com/simonszu">@simonszu</a>, <a href="https://github.com/Cinntax">@Cinntax</a>, <a href="https://github.com/irvingwa">@irvingwa</a>, <a href="https://github.com/sytone">@sytone</a>, <a href="https://github.com/kk7ds">@kk7ds</a>, <a href="https://github.com/robbiet480">@robbiet480</a>.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0291---september-29" href="#hotfix-0291---september-29"></a> Hotfix 0.29.1 - September 29</h3>
|
||
|
||
<ul>
|
||
<li>Fix typo in Nest climate platform. <a href="https://github.com/home-assistant/home-assistant/issues/3574">We are still experiencing issues with Nest.</a> (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0292---september-29" href="#hotfix-0292---september-29"></a> Hotfix 0.29.2 - September 29</h3>
|
||
|
||
<ul>
|
||
<li>InfluxDB config fix (<a href="https://github.com/fabaff">@fabaff</a>, reported by <a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Netatmo config fix (<a href="https://github.com/jabesq">@jabesq</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0293---september-29" href="#hotfix-0293---september-29"></a> Hotfix 0.29.3 - September 29</h3>
|
||
|
||
<ul>
|
||
<li>Hue config fix (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0294---september-30" href="#hotfix-0294---september-30"></a> Hotfix 0.29.4 - September 30</h3>
|
||
|
||
<ul>
|
||
<li>Alexa config fix (<a href="https://github.com/balloob">@balloob</a>, reported by <a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Envisalink discovery fix (<a href="https://github.com/Cinntax">@cinntax</a>)</li>
|
||
<li>Acer Projector config fix (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0295---september-30" href="#hotfix-0295---september-30"></a> Hotfix 0.29.5 - September 30</h3>
|
||
|
||
<ul>
|
||
<li>Fix Climate Nest platform (<a href="https://github.com/tchellomello">@tchellomello</a>, <a href="https://github.com/jawilson">@jawilson</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0296---october-1" href="#hotfix-0296---october-1"></a> Hotfix 0.29.6 - October 1</h3>
|
||
|
||
<ul>
|
||
<li>Fix segmentation fault (<a href="https://github.com/bbangert">@bbangert</a>) 🎉</li>
|
||
<li>Fix nested templates in <code class="highlighter-rouge">data_template</code> would incorrectly get cached (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0297---october-5" href="#hotfix-0297---october-5"></a> Hotfix 0.29.7 - October 5</h3>
|
||
|
||
<ul>
|
||
<li>Fix handling SIGTERM and SIGHUP signals (fixes Systemd restart issues) (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>The template methods <code class="highlighter-rouge">now</code> and <code class="highlighter-rouge">utcnow</code> have been changed from variables to methods. To get the current time replace <code class="highlighter-rouge">now</code> with <code class="highlighter-rouge">now()</code>.</li>
|
||
<li><code class="highlighter-rouge">yahooweather</code> default name is now <code class="highlighter-rouge">yweather</code>. Also min and max temperature are now correctly called <code class="highlighter-rouge">Temperature Min</code> and <code class="highlighter-rouge">Temperature Max</code>.</li>
|
||
<li><code class="highlighter-rouge">ffmpeg</code> is now a component for manage some things central. All <code class="highlighter-rouge">ffmpeg_bin</code> options have moved to this compoment from platforms.</li>
|
||
<li>Config has changed for <a href="https://home-assistant.io/components/light.x10/">X10</a> lights.</li>
|
||
<li>For Wink, make sure your config only contains the access token as in the <a href="https://home-assistant.io/components/wink/">docs</a>.</li>
|
||
<li>Nest sensor ‘mode’ has been renamed to ‘operation_mode’</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h3>
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>. The release notes have comments enabled but it’s preferred if you the former communication channels. Thanks.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/09/10/notify-group-reload-api-pihole/"/>
|
||
<updated>2016-09-10T06:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/09/10/notify-group-reload-api-pihole</id>
|
||
<content type="html"><![CDATA[<p>It’s already time for 0.28 thanks to our super short release cycles. Now, it’ official…we hit 4000 stars on Github. That’s amazing. Sorry, not as amazing as all the stuff that was going on for 0.27 but still pretty awesome.</p>
|
||
|
||
<h3><a class="title-link" name="reload-automation-rules" href="#reload-automation-rules"></a> Reload automation rules</h3>
|
||
|
||
<p>This release brings you a huge improvement of the <a href="https://home-assistant.io/components/automation/">automation</a> and <a href="https://home-assistant.io/components/group/">group</a> handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/screenshots/automation-switches.png" />
|
||
</p>
|
||
|
||
<h3><a class="title-link" name="raspberry-pi-installation-guide" href="#raspberry-pi-installation-guide"></a> Raspberry Pi installation guide</h3>
|
||
<p>Singleboard computers are very popular to run Home Assistant. To support this fact, the <a href="https://home-assistant.io/getting-started/installation-raspberry-pi/">installation documentation</a> for the Raspberry Pi devices was re-written to get users started as quickly as possible. <a href="https://github.com/Landrash">@Landrash</a> took the lead with on this tasks with help from <a href="https://github.com/kellerza">@kellerza</a> and <a href="https://github.com/MartinHjelmare">@MartinHjelmare</a>.</p>
|
||
|
||
<h3><a class="title-link" name="climate-and--cover" href="#climate-and--cover"></a> Climate and cover</h3>
|
||
<p>There are countless bugfixes included in this release which will make your experience with the <code class="highlighter-rouge">climate</code> and the <code class="highlighter-rouge">cover</code> platforms better. Two week ago was the biggest merger of implementations released that ever happened in the history of Home Assistant. Thanks to <a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/djbanks">@djbanks</a>, <a href="https://github.com/danielperna84">@danielperna84</a>, and others the improvements on the code and the frontend side is continuing…</p>
|
||
|
||
<h3><a class="title-link" name="api-documentation" href="#api-documentation"></a> API documentation</h3>
|
||
<p>The <a href="https://dev-docs.home-assistant.io/en/dev/">Home Assistant API Documentation</a> is a great addition to the already exisiting user documentation. The focus is not end-users but developers who whant to get details about the code without actually browsing the code on Github.</p>
|
||
|
||
<h3><a class="title-link" name="configuration-validation" href="#configuration-validation"></a> Configuration validation</h3>
|
||
<p>The validation of the configuration is still on-going. Approximatly 80 % is done. This means that we will propably talk about this topic in the next release notes again. To align the configuration of components and platforms we needed to break some. Please refer to the Breaking changes section to check if you need to update your configuration or simple check your log for configuration validation errors. Thanks to <a href="https://github.com/kellerza">@kellerza</a>, <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/Teagan42">@Teagan42</a>, and <a href="https://github.com/pvizeli">@pvizeli</a> for your effort!</p>
|
||
|
||
<h3><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h3>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/xbox-live.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/automatic.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/pi_hole.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Light: Added bitfield to Flux LED since we are supporting effects (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Device tracker: <a href="https://home-assistant.io/components/device_tracker.owntracks/">Owntracks</a> waypoint import (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
<li>Climate: A lot of bugfix (<a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/djbanks">@djbanks</a>)</li>
|
||
<li>Notify: Improvement of the title handling (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>RFXtrx: Sensor cleanup (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Device tracker: Fix for BLE device tracker (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Device tracker: Allow ‘None’ MAC addresses to be loaded from <code class="highlighter-rouge">known_devices</code> file (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Cover: Bugfixes (<a href="https://github.com/turbokongen">@turbokongen</a>, <a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Sensor: Support for displaying details about <a href="https://home-assistant.io/components/sensor.coinmarketcap">crypto currencies</a> (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Device tracker: Support for <a href="https://home-assistant.io/components/device_tracker.automatic/">automatic</a> to track your vehicles (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Devie tracker: Add exclude option to <a href="https://home-assistant.io/components/device_tracker.nmap_scanner/">Nmap</a> device tracker (<a href="https://github.com/danieljkemp">@danieljkemp</a>)</li>
|
||
<li>Device tracker: Improved login errors for Asus device tracker (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Sensor: Support for displaying the status of <a href="https://home-assistant.io/components/sensor.xbox_live/">Xbox</a> Live accounts (<a href="https://github.com/mKerix">@mKerix</a>)</li>
|
||
<li>Notify: Adding <code class="highlighter-rouge">link_names</code> for sending Slack message (<a href="https://github.com/salt-lick">@salt-lick</a>)</li>
|
||
<li>Binary sensor: Add the occupancy sensor class (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Fan: Add supoort for <a href="https://home-assistant.io/components/fan.mqtt/">MQTT fans</a> (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Docs: Add Sphinx API doc generation (<a href="https://github.com/bbangert">@bbangert</a>)</li>
|
||
<li>Core: Allow reloading automation without restart (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Sensor: Added scale and offset to the <a href="https://home-assistant.io/components/sensor.temper/">Temper</a> sensor (<a href="https://github.com/mKerix">@mKerix</a>)</li>
|
||
<li>Sensor: New support for [Trend] sensor (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
<li>Device tracker: Keep looking for new BLE devices (<a href="https://github.com/Bart274">@Bart274</a>)</li>
|
||
<li>Switch: Added device state attributes and support for legacy firmware for D-Link switches (<a href="https://github.com/LinuxChristian">@LinuxChristian</a>)</li>
|
||
<li>Sensor: Improve 1-Wire device family detection (<a href="https://github.com/Ardetus">@Ardetus</a>)</li>
|
||
<li>Modbus: Update to be thread safe (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>Camera: FFMpeg is abale to get the images (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Core: Reload groups without restart (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Core: Fix remove listener (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Sensor: Support for monitoring your <a href="https://home-assistant.io/components/sensor.linux_battery">battery</a> on a Linux host (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Core: Add support for complex template structures to <code class="highlighter-rouge">data_template</code> (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li><code class="highlighter-rouge">check_config</code>: Improve yaml fault tolerance and handle border cases (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Core: Add additional <a href="https://home-assistant.io/topics/templating/">template</a> for custom date formats (<a href="https://github.com/lwis">@lwis</a>)</li>
|
||
<li>Sensor: Support for getting stats from Pi-Hole systems (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Modbus: New <code class="highlighter-rouge">write_registers</code> <a href="https://home-assistant.io/components/modbus/">Modbus</a> service (<a href="https://github.com/persandstrom">@persandstrom</a>)</li>
|
||
<li>Device tracker: Fix TP-Link Archer C7 long passwords (<a href="https://github.com/snikch">@snikch</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0281---september-12" href="#hotfix-0281---september-12"></a> Hotfix 0.28.1 - September 12</h3>
|
||
|
||
<ul>
|
||
<li>Fix: Simplisafe alarm control panels accept any string for code (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Fix: Z-Wave would sometimes not detect all thermostats (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Fix: Automatic device tracker when 2 or more cars are tracked (<a href="https://github.com/Teagan42">@teagan42</a>)</li>
|
||
<li>Fix: Group ordering is now based on config again (<a href="https://github.com/balloob">@balloob</a>, <a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0282---september-13" href="#hotfix-0282---september-13"></a> Hotfix 0.28.2 - September 13</h3>
|
||
|
||
<ul>
|
||
<li>Light - pilight: Fix send RF code (<a href="https://github.com/DavidLP">@DavidLP</a>)</li>
|
||
<li>Recorder: Fix specifying SQLite (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Wink: Fix garage door detection (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Climate - Ecobee: Fix inverted high and low temperatures (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Allow changing covers using scenes (<a href="https://github.com/nvella">@nvella</a>)</li>
|
||
<li>Device tracker - Automatic: Fix polling (<a href="https://github.com/Teagan42">@teagan42</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li><a href="https://home-assistant.io/components/sensor.openweathermap/">OpenweatherMap</a> entity IDs are now like <code class="highlighter-rouge">sensor.owm_temperature</code>. Previously they were like <code class="highlighter-rouge">sensor.weather_temperature</code>. Apologies for this change, but we needed to make OpenWeatherMap more generic now that we have many weather platforms.</li>
|
||
<li>Updates of configuration variables due to configuration check or alignment with other platforms. Please update your configuration entries according to the documentation:
|
||
<ul>
|
||
<li><a href="https://home-assistant.io/components/octoprint/">OctoPrint</a> component</li>
|
||
<li>mFi platform (<a href="https://home-assistant.io/components/switch.mfi/">switch</a> and <a href="https://home-assistant.io/components/sensor.mfi/">sensor</a>)</li>
|
||
<li>NX584 Alarm Control Panel</li>
|
||
<li>Mediaplayer platforms <a href="https://home-assistant.io/components/media_player.firetv/">FireTV</a>, <a href="https://home-assistant.io/components/media_player.kodi/">Kodi</a> and <a href="https://home-assistant.io/components/media_player.mpd/">MPD</a></li>
|
||
<li><a href="https://home-assistant.io/components/switch.command_line/">switch</a> and the <a href="https://home-assistant.io/components/cover.command_line/">cover</a> <code class="highlighter-rouge">command_line</code> platforms</li>
|
||
</ul>
|
||
</li>
|
||
<li>Custom components extending <code class="highlighter-rouge">BaseNotificationService</code> need to be aware that <code class="highlighter-rouge">kwargs.get(ATTR_TITLE)</code> will now return <code class="highlighter-rouge">None</code> if a title has not been set, and will need to specify <code class="highlighter-rouge">kwargs.get(ATTR_TITLE, ATTR_TITLE_DEFAULT)</code> if they always require a title.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="if-you-need-help" href="#if-you-need-help"></a> If you need help…</h3>
|
||
<p>…don’t hesitate to use our <a href="https://community.home-assistant.io/">Forum</a> or join us for a little <a href="https://gitter.im/home-assistant/home-assistant">chat</a>.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[ESP8266 and MicroPython - Part 2]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2/"/>
|
||
<updated>2016-08-31T04:17:25+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2</id>
|
||
<content type="html"><![CDATA[<p><img src="https://home-assistant.io/images/blog/2016-07-micropython/micropython.png" style="clear: right; border:none; box-shadow: none; float: right; margin-bottom: 12px;" width="200" />
|
||
So, part 1 of <a href="https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1/">ESP8266 and MicroPython</a> was pretty lame, right? Instead of getting information out of Home Assistant we are going a step forward and create our own sensor which is sending details about its state to a Home Assistant instance.</p>
|
||
|
||
<!--more-->
|
||
|
||
<p>Beside <a href="https://en.wikipedia.org/wiki/POST_(HTTP)">HTTP POST</a> requests, MQTT is the quickest way (from the author’s point of view) to publish information with DIY devices.</p>
|
||
|
||
<p>You have to make a decision: Do you want to pull or to poll? For slowly changing values like temperature it’s perfectly fine to wait a couple of seconds to retrieve the value. If it’s a motion detector the state change should be available instantly. This means the sensor must take initiative.</p>
|
||
|
||
<p>An example for pulling is <a href="https://home-assistant.io/components/sensor.arest/">aREST</a>. This is a great way to work with the ESP8266 based units and the Ardunio IDE.</p>
|
||
|
||
<h3><a class="title-link" name="mqtt" href="#mqtt"></a> MQTT</h3>
|
||
|
||
<p>You can find a simple examples for publishing and subscribing with MQTT in the <a href="https://github.com/micropython/micropython-lib">MicroPython</a> library overview in the section for <a href="https://github.com/micropython/micropython-lib/tree/master/umqtt.simple">umqtt</a>.</p>
|
||
|
||
<p>The example below is adopted from the work of <a href="https://github.com/davea">@davea</a> as we don’t want to re-invent the wheel. The configuration feature is crafty and simplyfies the code with the usage of a file called <code class="highlighter-rouge">/config.json</code> which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">machine</span>
|
||
<span class="kn">import</span> <span class="nn">time</span>
|
||
<span class="kn">import</span> <span class="nn">ubinascii</span>
|
||
<span class="kn">import</span> <span class="nn">webrepl</span>
|
||
|
||
<span class="kn">from</span> <span class="nn">umqtt.simple</span> <span class="kn">import</span> <span class="n">MQTTClient</span>
|
||
|
||
<span class="c"># These defaults are overwritten with the contents of /config.json by load_config()</span>
|
||
<span class="n">CONFIG</span> <span class="o">=</span> <span class="p">{</span>
|
||
<span class="s">"broker"</span><span class="p">:</span> <span class="s">"192.168.1.19"</span><span class="p">,</span>
|
||
<span class="s">"sensor_pin"</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span>
|
||
<span class="s">"client_id"</span><span class="p">:</span> <span class="n">b</span><span class="s">"esp8266_"</span> <span class="o">+</span> <span class="n">ubinascii</span><span class="o">.</span><span class="n">hexlify</span><span class="p">(</span><span class="n">machine</span><span class="o">.</span><span class="n">unique_id</span><span class="p">()),</span>
|
||
<span class="s">"topic"</span><span class="p">:</span> <span class="n">b</span><span class="s">"home"</span><span class="p">,</span>
|
||
<span class="p">}</span>
|
||
|
||
<span class="n">client</span> <span class="o">=</span> <span class="bp">None</span>
|
||
<span class="n">sensor_pin</span> <span class="o">=</span> <span class="bp">None</span>
|
||
|
||
<span class="k">def</span> <span class="nf">setup_pins</span><span class="p">():</span>
|
||
<span class="k">global</span> <span class="n">sensor_pin</span>
|
||
<span class="n">sensor_pin</span> <span class="o">=</span> <span class="n">machine</span><span class="o">.</span><span class="n">ADC</span><span class="p">(</span><span class="n">CONFIG</span><span class="p">[</span><span class="s">'sensor_pin'</span><span class="p">])</span>
|
||
|
||
<span class="k">def</span> <span class="nf">load_config</span><span class="p">():</span>
|
||
<span class="kn">import</span> <span class="nn">ujson</span> <span class="kn">as</span> <span class="nn">json</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">"/config.json"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||
<span class="n">config</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">loads</span><span class="p">(</span><span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">())</span>
|
||
<span class="k">except</span> <span class="p">(</span><span class="nb">OSError</span><span class="p">,</span> <span class="nb">ValueError</span><span class="p">):</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">"Couldn't load /config.json"</span><span class="p">)</span>
|
||
<span class="n">save_config</span><span class="p">()</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="n">CONFIG</span><span class="o">.</span><span class="n">update</span><span class="p">(</span><span class="n">config</span><span class="p">)</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">"Loaded config from /config.json"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">save_config</span><span class="p">():</span>
|
||
<span class="kn">import</span> <span class="nn">ujson</span> <span class="kn">as</span> <span class="nn">json</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s">"/config.json"</span><span class="p">,</span> <span class="s">"w"</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span>
|
||
<span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="n">CONFIG</span><span class="p">))</span>
|
||
<span class="k">except</span> <span class="nb">OSError</span><span class="p">:</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">"Couldn't save /config.json"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||
<span class="n">client</span> <span class="o">=</span> <span class="n">MQTTClient</span><span class="p">(</span><span class="n">CONFIG</span><span class="p">[</span><span class="s">'client_id'</span><span class="p">],</span> <span class="n">CONFIG</span><span class="p">[</span><span class="s">'broker'</span><span class="p">])</span>
|
||
<span class="n">client</span><span class="o">.</span><span class="n">connect</span><span class="p">()</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">"Connected to {}"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">CONFIG</span><span class="p">[</span><span class="s">'broker'</span><span class="p">]))</span>
|
||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||
<span class="n">data</span> <span class="o">=</span> <span class="n">sensor_pin</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||
<span class="n">client</span><span class="o">.</span><span class="n">publish</span><span class="p">(</span><span class="s">'{}/{}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">CONFIG</span><span class="p">[</span><span class="s">'topic'</span><span class="p">],</span>
|
||
<span class="n">CONFIG</span><span class="p">[</span><span class="s">'client_id'</span><span class="p">]),</span>
|
||
<span class="nb">bytes</span><span class="p">(</span><span class="nb">str</span><span class="p">(</span><span class="n">data</span><span class="p">),</span> <span class="s">'utf-8'</span><span class="p">))</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">'Sensor state: {}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
|
||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
||
|
||
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
|
||
<span class="n">load_config</span><span class="p">()</span>
|
||
<span class="n">setup_pins</span><span class="p">()</span>
|
||
<span class="n">main</span><span class="p">()</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Subscribe to the topic <code class="highlighter-rouge">home/#</code> or create a <a href="https://home-assistant.io/components/sensor.mqtt/">MQTT sensor</a> to check if the sensor values are published.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>mosquitto_sub -h 192.168.1.19 -v -t <span class="s2">"home/#"</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">sensor</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
|
||
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">home/esp8266_[last</span><span class="nv"> </span><span class="s">part</span><span class="nv"> </span><span class="s">of</span><span class="nv"> </span><span class="s">the</span><span class="nv"> </span><span class="s">MAC</span><span class="nv"> </span><span class="s">address]"</span>
|
||
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">MicroPython"</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p><a href="https://github.com/davea">@davea</a> created <a href="https://github.com/davea/sonoff-mqtt">sonoff-mqtt</a>. This code will work on ESP8622 based devices too and shows how to use a button to control a relay.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/28/notifications-hue-fake-unification/"/>
|
||
<updated>2016-08-28T03:30:25+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/28/notifications-hue-fake-unification</id>
|
||
<content type="html"><![CDATA[<p>This week’s blog post could only be possibly described by exactly one hashtag:</p>
|
||
|
||
<h1>#Amazing</h1>
|
||
|
||
<p><sup>or <sup>maybe<sup>#supersized</sup></sup></sup></p>
|
||
|
||
<p>Keep reading to see what <strong>#Amazing</strong> things we have in store for you this week 😄! And make sure you read all the way to the end, because I left a present down there for those committed few among you :)</p>
|
||
|
||
<p>But first…</p>
|
||
|
||
<h2><a class="title-link" name="some-general-housekeeping" href="#some-general-housekeeping"></a> Some general housekeeping</h2>
|
||
|
||
<p>Paulus (<a href="https://github.com/balloob">@balloob</a>) is on vacation in Europe this week, so you will all have to deal with me, Robbie (<a href="https://github.com/robbiet480">@robbiet480</a>) for this release blog post. Don’t worry, Paulus will be back to tearing apart your pull requests in no time 😈.</p>
|
||
|
||
<p>Special thanks to my awesome helpers for this week’s release who are looking over my shoulder to make sure I’m crossing my t’s and dotting my i’s: <a href="https://github.com/Teagan42">@Teagan42</a>, <a href="https://github.com/infamy">@infamy</a> and <a href="https://github.com/fabaff">@fabaff</a>.</p>
|
||
|
||
<p>For my next trick, let’s hand out some…</p>
|
||
|
||
<h2><a class="title-link" name="trophies" href="#trophies"></a> Trophies</h2>
|
||
|
||
<p>I felt that I had to 1-up Paulus (<a href="https://github.com/balloob">@balloob</a>) somehow with his 500,000 pageviews stat he shared in the <a href="https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/">0.26 blog post</a>, so I pushed myself and our development community as a whole super hard the last two weeks to put a lot of love into Home Assistant to bring you not just one, but six <strong>#Amazing</strong> stats for this release. As of 0.27, we have now surpassed the following milestones:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://travis-ci.org/home-assistant/home-assistant/builds/154660811">10,000</a> builds on Travis (congrats to <a href="https://github.com/BluGeni">@BluGeni</a>)</li>
|
||
<li><a href="https://github.com/home-assistant/home-assistant/pull/3000">3,000</a> issues and pull requests (thanks <a href="https://github.com/kellerza">@kellerza</a>!)</li>
|
||
<li><a href="https://github.com/home-assistant/home-assistant/pull/2991">2,000</a> pull requests alone (awesome <a href="https://github.com/fabaff">@fabaff</a>!!)</li>
|
||
<li>900 forks on Github!</li>
|
||
</ul>
|
||
|
||
<p>In addition,</p>
|
||
|
||
<ul>
|
||
<li>We are very close to 4,000 stars on Github!</li>
|
||
<li><a href="https://github.com/home-assistant/home-assistant/graphs/contributors">I’m now #5 contributor by most commits!!!</a> Hey wait, how’d this get in here 😳…</li>
|
||
</ul>
|
||
|
||
<p>Now that we have that great news out of the way, onto this week’s release which is going to keep the <strong>#Amazing</strong> gravy train rolling right along and get to the stuff you all <em>really</em> are here for.</p>
|
||
|
||
<h2><a class="title-link" name="027" href="#027"></a> 0.27</h2>
|
||
|
||
<p>While this release is <strong>#Amazing</strong>, we had to break a few eggs (now you understand the title reference!) to make a beautiful omelette (using home automation obviously) so some platforms and components have needed to introduce breaking changes. Please make sure to read the <a href="#breaking-changes">Breaking Changes</a> section below.</p>
|
||
|
||
<h3><a class="title-link" name="hue-bridge-emulation" href="#hue-bridge-emulation"></a> Hue Bridge Emulation</h3>
|
||
<p>Thanks to <a href="https://github.com/mgbowen">@mgbowen</a> we now have the functionality previously provided by <a href="https://github.com/blocke">@blocke</a>’s <a href="https://github.com/blocke/ha-local-echo">ha-local-echo</a> <a href="https://home-assistant.io/components/emulated_hue/">built right into Home Assistant</a>! This means that for those of you with devices that either lack or have a subpar integration with Home Assistant (looking at you Amazon Echo) you can now have a better experience by having your Home Assistant pretend to be a Hue Bridge. Personally, I have used <a href="https://github.com/auchter">@auchter</a>’s <a href="https://github.com/auchter/haaska">Haaska</a> previously but found that it was slow to respond and sometimes failed entirely. With the new <a href="https://home-assistant.io/components/emulated_hue/"><code class="highlighter-rouge">emulated_hue</code></a> component, you can have local control of entities through Amazon Echo.</p>
|
||
|
||
<h3><a class="title-link" name="notification-improvements" href="#notification-improvements"></a> Notification improvements</h3>
|
||
<p>We have some excellent upgrades to the notification system coming to you in 0.27, courtesy of me, <a href="https://github.com/robbiet480">@robbiet480</a>.</p>
|
||
|
||
<h4><a class="title-link" name="html5-push-notifications" href="#html5-push-notifications"></a> HTML5 Push Notifications</h4>
|
||
<p>This release adds support for <a href="https://home-assistant.io/components/notify.html5/">HTML5</a> push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone’s lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me (<a href="https://github.com/robbiet480">@robbiet480</a>) and Paulus (<a href="https://github.com/balloob">@balloob</a>) for all the hard work on this!</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/screenshots/html5-notify.png" />
|
||
</p>
|
||
|
||
<h4><a class="title-link" name="notification-groups" href="#notification-groups"></a> Notification Groups</h4>
|
||
<p>Using the new notify <code class="highlighter-rouge">group</code> platform allows you to cut down a lot of duplicate automation logic by combining multiple notification platforms and <code class="highlighter-rouge">target</code>s into a single notify service. Check out the <a href="https://home-assistant.io/components/notify.group/">docs</a> for more info.</p>
|
||
|
||
<h4><a class="title-link" name="target-is-no-longer-needed" href="#target-is-no-longer-needed"></a> <code class="highlighter-rouge">target</code> is no longer needed!</h4>
|
||
<p>For platforms that support it, starting with the new HTML5 platform, any <code class="highlighter-rouge">target</code>s that are available will be exposed as individual services, so no more having to remember which <code class="highlighter-rouge">target</code>s to use. Please note that the existing services also still exist so you can keep using <code class="highlighter-rouge">target</code> if you wish.</p>
|
||
|
||
<h3><a class="title-link" name="validate-configuration-before-restarting-home-assistant" href="#validate-configuration-before-restarting-home-assistant"></a> Validate configuration before restarting Home Assistant</h3>
|
||
<p>Ever restarted Home Assistant to test a configuration change just to find out there is a validation error? Well, not anymore! <a href="https://github.com/kellerza">@kellerza</a> has added a command line script that will validate your configuration as if you started Home Assistant.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>hass --script check_config
|
||
</code></pre>
|
||
</div>
|
||
|
||
<h3><a class="title-link" name="configuration-validation" href="#configuration-validation"></a> Configuration validation</h3>
|
||
<p>This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to <a href="https://github.com/fabaff">@fabaff</a>, <a href="https://github.com/pavoni">@pavoni</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/nkgilley">@nkgilley</a> for all the hard work on this, you all rock!</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/screenshots/config-validation.png" />
|
||
</p>
|
||
|
||
<h3><a class="title-link" name="ffmpeg-motionnoise-sensing" href="#ffmpeg-motionnoise-sensing"></a> FFMpeg motion/noise sensing</h3>
|
||
<p>It’s now possible to use <a href="https://home-assistant.io/components/binary_sensor.ffmpeg/">FFMpeg</a> to monitor a video stream and detect motion thanks to a new binary sensor platform by <a href="https://github.com/pvizeli">@pvizeli</a>.</p>
|
||
|
||
<h3><a class="title-link" name="component-clean-up---thermostat--hvac---climate-rollershutter--garage-door---cover" href="#component-clean-up---thermostat--hvac---climate-rollershutter--garage-door---cover"></a> Component clean up - Thermostat & HVAC -> Climate. Rollershutter & Garage Door -> Cover.</h3>
|
||
<p>Due to our wild growth we ended up with a few components that had a lot of overlapping functionality. <a href="https://github.com/turbokongen">@turbokongen</a> took on the hard job on merging them. Thermostat and HVAC platforms are now combined under the new Climate component. Rollershutter and Garage Door platforms are now combined under the new Cover component. You can easily upgrade by just swapping out the name. For example replace <code class="highlighter-rouge">thermostat</code> with <code class="highlighter-rouge">climate</code>. The old components have been deprecated and will be removed in the near future.</p>
|
||
|
||
<h3><a class="title-link" name="a-new-fan-component" href="#a-new-fan-component"></a> A new <code class="highlighter-rouge">fan</code> component</h3>
|
||
<p>Along with the new <code class="highlighter-rouge">climate</code> component, <a href="https://github.com/Teagan42">@Teagan42</a> and I (<a href="https://github.com/robbiet480">@robbiet480</a>) decided we needed something simpler to just control a fan. Currently it has support for controlling Insteon fans. MQTT support will appear in 0.28.0. I tried to get it implemented before 0.27.0 but spent too long writing this blog post 😢.</p>
|
||
|
||
<h3><a class="title-link" name="all-changes" href="#all-changes"></a> All changes</h3>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/html5.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/mqtt.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/hewlett_packard_enterprise.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/wunderground.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Merge thermostat and HVAC components into new <a href="https://home-assistant.io/components/climate/">climate</a> component (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Merge rollershutter and garage door components into new <a href="https://home-assistant.io/components/cover/">cover</a> component (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Alarm Control Panel - Manual: Allow returning to previous state after <a href="https://home-assistant.io/components/alarm_control_panel.manual/">trigger</a> (<a href="https://github.com/tobiebooth">@tobiebooth</a>)</li>
|
||
<li>Sensor - DHT: Allow range <a href="https://home-assistant.io/components/sensor.dht/">checking</a> (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Light entities will now <a href="https://home-assistant.io/components/light/">expose</a> their features (<a href="https://github.com/shmuelzon">@shmuelzon</a>)</li>
|
||
<li>Sensor: Monitor HP ILO sensors on <a href="https://home-assistant.io/components/sensor.hp_ilo/">HP</a> servers (<a href="https://github.com/Juggels">@Juggels</a>)</li>
|
||
<li>Sensor: Monitor <a href="https://home-assistant.io/components/sensor.fritzbox_callmonitor/">Fritzbox</a> Calls (<a href="https://github.com/DavidMStraub">@DavidMStraub</a>)</li>
|
||
<li>Notify: LlamaLab <a href="https://home-assistant.io/components/notify.llamalab_automate/">Automate</a> is now supported (<a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Sensor: Serial <a href="https://home-assistant.io/components/sensor.mhz19/">CO2</a> sensors now supported (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Sensor: MQTT room <a href="https://home-assistant.io/components/sensor.mqtt_room">presence</a> detection (<a href="https://github.com/mKerix">@mKerix</a>)</li>
|
||
<li>Notify: New group platform allows <a href="https://home-assistant.io/components/notify.group/">grouping</a> notify targets across platforms (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/notify.html5/">HTML5</a> push notifications (<a href="https://github.com/robbiet480">@robbiet480</a>, <a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Weather: <a href="https://home-assistant.io/components/sensor.wunderground/">Wunderground</a> now supported (<a href="https://github.com/arsaboo">@arsaboo</a>, <a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>New check config script to test validity before restarting HA (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Binary Sensor: Allow <a href="https://home-assistant.io/components/binary_sensor.ffmpeg/">monitoring</a> a camera feed using FFMpeg (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Cover: Z-Wave platform now supports <a href="https://home-assistant.io/components/cover.zwave/">positions</a> (<a href="https://github.com/nunofgs">@nunofgs</a>)</li>
|
||
<li>Device tracker: allow using <a href="https://home-assistant.io/components/device_tracker/">Gravatar</a> for entity picture (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Notify: platforms with known targets will expose them as standalone services (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Camera: <a href="https://home-assistant.io/components/camera.mjpeg/">MJPEG</a> and <a href="https://home-assistant.io/components/camera.generic/">Generic</a> camera’s can now authenticate using digest auth (<a href="https://github.com/meatz">@meatz</a>)</li>
|
||
<li>Weather: Forecast.io now can show daily temp/precip <a href="https://home-assistant.io/components/sensor.forecast/">forecast</a> values (<a href="https://github.com/DavidMStraub">@DavidMStraub</a>)</li>
|
||
<li>Media Player: WebOS TV now allows <a href="https://home-assistant.io/components/media_player.webostv/">customizing</a> the sources (<a href="ttps://github.com/roidayan">@roidayan</a>)</li>
|
||
<li>Device tracker: Allow tracking devices using <a href="https://home-assistant.io/components/device_tracker.bluetooth_le_tracker/">Bluetooth</a> Low-Energy (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Notify: Ensure <a href="https://home-assistant.io/components/notify.slack/">Slack</a> messages appear as correct user (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>YAML: <a href="https://home-assistant.io/topics/secrets/">Secrets</a> will look for values in all parents folders up to the config root folder (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Camera: Generic camera now supports <a href="https://home-assistant.io/components/camera.generic/">template</a> support (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Slack: Allow sending <a href="https://home-assistant.io/components/notify.slack/">attachments</a> (<a href="https://github.com/technicalpickles">@technicalpickles</a>)</li>
|
||
<li>Device Tracking: TP-Link Archer C7 5 GHz devices will now also be <a href="https://home-assistant.io/components/device_tracker.tplink/">found</a> (<a href="https://github.com/dpford">@dpford</a>)</li>
|
||
<li>Z-Wave: New rename <a href="https://home-assistant.io/components/zwave/">node</a> service added (<a href="https://github.com/jnewland">@jnewland</a>)</li>
|
||
<li>Wink: <a href="https://home-assistant.io/components/wink/">Bug</a> fixes (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li>Homematic: new device and controller variable <a href="https://home-assistant.io/components/homematic/">support</a> (<a href="https://github.com/danielperna84">@danielperna84</a>, <a href="https://github.com/pvizeli">@pvizeli</a>, <a href="https://github.com/mcdeck">@mcdeck</a>)</li>
|
||
<li>Allow emulating a <a href="https://home-assistant.io/components/emulated_hue/">Hue</a> bridge to control entities (<a href="https://github.com/mgbowen">@mgbowen</a>)</li>
|
||
<li>New <a href="https://home-assistant.io/components/fan/">Fan</a> component (<a href="https://github.com/Teagan42">@Teagan42</a>, <a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
<ul>
|
||
<li>Ecobee3 occupancy sensors have moved from sensor platform to binary sensor platform.</li>
|
||
<li>Forecast.io entity IDs are now like <code class="highlighter-rouge">sensor.forecastio_temperature</code>. Previously they were like <code class="highlighter-rouge">sensor.weather_temperature</code>. Apologies for this change, but we needed to make Forecast.io more generic now that we have many weather platforms.</li>
|
||
<li>The <a href="https://home-assistant.io/components/sensor.loop_energy/">Loop Energy</a> sensor configuration format changed slightly, please reformat based on the revised documentation.</li>
|
||
<li>The configuration for the <a href="https://home-assistant.io/components/sensor.sabnzbd/">SABnzbd</a> sensor has slightly changed. The prefix <code class="highlighter-rouge">type:</code> is no longer required for monitored variables.</li>
|
||
<li>The <a href="https://home-assistant.io/components/sensor.imap/">IMAP</a> sensor now uses <code class="highlighter-rouge">username</code> instead of <code class="highlighter-rouge">user</code>.</li>
|
||
<li>The <a href="https://home-assistant.io/components/sensor.nzbget/">NZBGet</a> sensor has had so many changes I can’t list them all. Please refer to the documentation for more info.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="deprecations" href="#deprecations"></a> Deprecations</h3>
|
||
<ul>
|
||
<li>Using the <code class="highlighter-rouge">thermostat</code> and <code class="highlighter-rouge">hvac</code> components has been deprecated. Please migrate to the new <code class="highlighter-rouge">climate</code> component. (just change the component name, the configurations are compatible)</li>
|
||
<li>Using the <code class="highlighter-rouge">rollershutter</code> and <code class="highlighter-rouge">garage_door</code> components have also been deprecated. Please migrate to the new <code class="highlighter-rouge">cover</code> component. (just change the component name, the configurations are compatible)</li>
|
||
</ul>
|
||
|
||
<h2><a class="title-link" name="finishing-up" href="#finishing-up"></a> Finishing up</h2>
|
||
|
||
<p>Thanks all for sticking with me to the end. I’ll be taking over a lot of Paulus’s (<a href="https://github.com/balloob">@balloob</a>) work while he is gone, but as I said, don’t worry because he’ll be back well before 0.28.0 comes out. Hopefully you didn’t find this jovial blog post too jarring from our standard style, I just wrote a lot of this at 2am after being awake for almost 20 hours, so I’m a little loopy hahaha 😴.</p>
|
||
|
||
<p>Also, thanks as always to our developer contributors, documentation contributors, but most of all our users! This would’ve just been a script that Paulus (@balloob) used to control his lights at home if we didn’t have your enthusiasm.</p>
|
||
|
||
<p>Feel free to let me know what you thought of this blog post and release on Gitter or my <a href="https://twitter.com/robbie">Twitter</a>, or even the <a href="https://twitter.com/home_assistant">Home Assistant Twitter</a>. Did I mention we have a brand new <a href="https://www.facebook.com/homeassistantio">Facebook page</a> that you should absolutely Like? There’s a convenient Facebook Like and Twitter follow button right on the sidebar.</p>
|
||
|
||
<p>I almost forgot about your 🎁 for reading all the way to here: a 🍪! Hope you enjoy it in good health 😄.</p>
|
||
|
||
<p>Talk to you soon on Gitter and in your pull request comments!</p>
|
||
|
||
<p>– Robbie</p>
|
||
|
||
<p>(p.s. To those of you that scrolled directly to the bottom to get your present, just know that you didn’t earn it like the others did. 😄)</p>
|
||
|
||
<h2><a class="title-link" name="hotfix-0271---august-30" href="#hotfix-0271---august-30"></a> Hotfix 0.27.1 - August 30</h2>
|
||
|
||
<ul>
|
||
<li>Migrate APCUPSd to voluptuous (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Ecobee operation mode fix (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>update ha-ffmpeg version to 0.9 (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Device tracker component & platform validation. No more home_range. (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Added option to use effect:random for Flux Led light bulbs (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Use voluptuous for smtp (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Upgrade sendgrid to 3.2.10 (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Upgrade TwitterAPI to 2.4.2 (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Fix bug in wemo discovery caused by voluptuous addition. (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
<li>Bug fix for asuswrt device_tracker. (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Remove units for humidity in Wundeground sensor (<a href="https://github.com/arsaboo">@arsaboo</a>)</li>
|
||
<li>Fix media_player descriptions and select_source (<a href="https://github.com/MartinHjelmare">@MartinHjelmare</a>)</li>
|
||
<li>Allow user to configure server id to perform speed test against (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Bug fix for asuswrt device_tracker. (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>More Ecobee operation mode fixes (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Map Modes to setpoint indexes (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>fix voluptuous and cover autodiscovery (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fixes wrong statevalue and problem with zwave setpoint (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
</ul>
|
||
|
||
<h2><a class="title-link" name="hotfix-0272---september-3" href="#hotfix-0272---september-3"></a> Hotfix 0.27.2 - September 3</h2>
|
||
<h3>home-assistant</h3>
|
||
|
||
<ul>
|
||
<li>Ble fix (<a href="https://github.com/home-assistant/home-assistant/pull/3019">#3019</a>) - (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Reset insteon hub (<a href="https://github.com/home-assistant/home-assistant/pull/3062">#3062</a>) - (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Host should be optional for apcupsd component (<a href="https://github.com/home-assistant/home-assistant/pull/3072">#3072</a>) - (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Zwave climate Bugfix: if some setpoints have different units, we should fetch the o… (<a href="https://github.com/home-assistant/home-assistant/pull/3078">#3078</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Bugfix unit fix (<a href="https://github.com/home-assistant/home-assistant/pull/3083">#3083</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Ecobee humidity slider (<a href="https://github.com/home-assistant/home-assistant/pull/3088">#3088</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Zwave Climate Bugfix: If device was off target temp was null. Default to Heating setpoint (<a href="https://github.com/home-assistant/home-assistant/pull/3091">#3091</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Climate and cover bugfix (<a href="https://github.com/home-assistant/home-assistant/pull/3097">#3097</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Add missing docstrings (fix PEP257 issues) (<a href="https://github.com/home-assistant/home-assistant/pull/3098">#3098</a>) - (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Allow None MAC to be loaded from known_devices (<a href="https://github.com/home-assistant/home-assistant/pull/3102">#3102</a>) - (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>fix homematic climate implementation (<a href="https://github.com/home-assistant/home-assistant/pull/3114">#3114</a>) - (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Fixed Homematic cover (<a href="https://github.com/home-assistant/home-assistant/pull/3116">#3116</a>) - (<a href="https://github.com/danielperna84">@danielperna84</a>)</li>
|
||
<li>Bugfix. climate and covermqt (<a href="https://github.com/home-assistant/home-assistant/pull/3130">#3130</a>) - (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
</ul>
|
||
|
||
<h3>home-assistant-polymer</h3>
|
||
|
||
<ul>
|
||
<li>Fix missing attributes on the climate and HVAC more info cards (<a href="https://github.com/home-assistant/home-assistant-polymer/commit/7e455e2be1cb7cc4f55628b063019bea548a3182">7e455e2</a>) - (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Add a default icon for the fan component (<a href="https://github.com/home-assistant/home-assistant-polymer/pull/101">#101</a>) - (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
</ul>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[Github-style calendar heatmap of device data]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/"/>
|
||
<updated>2016-08-19T06:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/19/github-style-calendar-heatmap-of-device-data</id>
|
||
<content type="html"><![CDATA[<p>Thanks to <a href="https://github.com/kireyeu">Anton Kireyeu</a> we are able to present another awesome <a href="https://jupyter.org/">Jupyter notebook</a>. I guess that you all know the graph which Github is using to visualize your commits per day over a time-line. It’s a so-called <a href="https://en.wikipedia.org/wiki/Heat_map">heatmap</a>. If there are more commits, it’s getting hotter. The latest <a href="http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-2/DataExploration-2.ipynb">notebook</a> is capable to do the same thing for your devices. To be more precise, for the hours your devices are home.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-08-data-exploration/heatmap.png" />
|
||
Heatmap
|
||
</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[We Have Apps Now]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/16/we-have-apps-now/"/>
|
||
<updated>2016-08-16T10:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/16/we-have-apps-now</id>
|
||
<content type="html"><![CDATA[<p>I have been working on a new subsystem to complement Home Assistant’s Automation and Scripting components. <code class="highlighter-rouge">AppDaemon</code> is a python daemon that consumes events from Home Assistant and feeds them to snippets of python code called “Apps”. An App is a Python class that is instantiated possibly multiple times from <code class="highlighter-rouge">AppDaemon</code> and registers callbacks for various system events. It is also able to inspect and set state and call services. The API provides a rich environment suited to home automation tasks that can also leverage all the power of Python.</p>
|
||
|
||
<!--more-->
|
||
|
||
<h2><a class="title-link" name="another-take-on-automation" href="#another-take-on-automation"></a> Another Take on Automation</h2>
|
||
|
||
<p>If you haven’t yet read Paulus’ excellent Blog entry on <a href="https://home-assistant.io/blog/2016/01/19/perfect-home-automation/">Perfect Home Automation</a> I would encourage you to take a look. As a veteran of several Home Automation systems with varying degrees success, it was this article more than anything else that convinced me that Home Assistant had the right philosophy behind it and was on the right track. One of the most important points made is that being able to control your lights from your phone, 9 times out of 10 is harder than using a lightswitch - where Home Automation really comes into its own is when you start removing the need to use a phone or the switch - the “Automation” in Home Automation. A surprisingly large number of systems out there miss this essential point and have limited abilities to automate anything which is why a robust and open system such as Home Assistant is such an important part of the equation to bring this all together in the vast and chaotic ecosystem that is the “Internet of Things”.</p>
|
||
|
||
<p>So given the importance of Automation, what should Automation allow us to do? I am a pragmatist at heart so I judge individual systems by the ease of accomplishing a few basic but representative tasks:</p>
|
||
|
||
<ul>
|
||
<li>Can the system respond to presence or absence of people?</li>
|
||
<li>Can I turn a light on at Sunset +/- a certain amount of time?</li>
|
||
<li>Can I arrive home in light or dark and have the lights figure out if they should be on or off?</li>
|
||
<li>As I build my system out, can I get the individual pieces to co-operate and use and re-use (potentially complex) logic to make sure everything works smoothly?</li>
|
||
<li>Is it open and expandable?</li>
|
||
<li>Does it run locally without any reliance on the cloud?</li>
|
||
</ul>
|
||
|
||
<p>In my opinion, Home Assistant accomplishes the majority of these very well with a combination of Automations, Scripts and Templates, and it’s Restful API.</p>
|
||
|
||
<p>So why <code class="highlighter-rouge">AppDaemon</code>? <code class="highlighter-rouge">AppDaemon</code> is not meant to replace Home Assistant Automations and Scripts, rather complement them. For a lot of things, automations work well and can be very succinct. However, there is a class of more complex automations for which they become harder to use, and appdeamon then comes into its own. It brings quite a few things to the table:</p>
|
||
|
||
<ul>
|
||
<li>New paradigm - some problems require a procedural and/or iterative approach, and <code class="highlighter-rouge">AppDaemon</code> Apps are a much more natural fit for this. Recent enhancements to Home Assistant scripts and templates have made huge strides, but for the most complex scenarios, Apps can do things that Automations can’t</li>
|
||
<li>Ease of use - <code class="highlighter-rouge">AppDaemon</code>’s API is full of helper functions that make programming as easy and natural as possible. The functions and their operation are as “Pythonic” as possible, experienced Python programmers should feel right at home.</li>
|
||
<li>Reuse - write a piece of code once and instantiate it as an app as many times as you need with different parameters e.g. a motion light program that you can use in 5 different places around your home. The code stays the same, you just dynamically add new instances of it in the config file</li>
|
||
<li>Dynamic - <code class="highlighter-rouge">AppDaemon</code> has been designed from the start to enable the user to make changes without requiring a restart of Home Assistant, thanks to it’s loose coupling. However, it is better than that - the user can make changes to code and <code class="highlighter-rouge">AppDaemon</code> will automatically reload the code, figure out which Apps were using it and restart them to use the new code without the need to restart <code class="highlighter-rouge">AppDaemon</code> itself. It is also possible to change parameters for an individual or multiple apps and have them picked up dynamically, and for a final trick, removing or adding apps is also picked up dynamically. Testing cycles become a lot more efficient as a result.</li>
|
||
<li>Complex logic - Python’s If/Else constructs are clearer and easier to code for arbitrarily complex nested logic</li>
|
||
<li>Durable variables and state - variables can be kept between events to keep track of things like the number of times a motion sensor has been activated, or how long it has been since a door opened</li>
|
||
<li>All the power of Python - use any of Python’s libraries, create your own modules, share variables, refactor and re-use code, create a single app to do everything, or multiple apps for individual tasks - nothing is off limits!</li>
|
||
</ul>
|
||
|
||
<p>It is in fact a testament to Home Assistant’s open nature that a component like <code class="highlighter-rouge">AppDaemon</code> can be integrated so neatly and closely that it acts in all ways like an extension of the system, not a second class citizen. Part of the strength of Home Assistant’s underlying design is that it makes no assumptions whatever about what it is controlling or reacting to, or reporting state on. This is made achievable in part by the great flexibility of Python as a programming environment for Home Assistant, and carrying that forward has enabled me to use the same philosophy for <code class="highlighter-rouge">AppDaemon</code> - it took surprisingly little code to be able to respond to basic events and call services in a completely open ended manner - the bulk of the work after that was adding additonal functions to make things that were already possible easier.</p>
|
||
|
||
<h2><a class="title-link" name="how-it-works" href="#how-it-works"></a> How it Works</h2>
|
||
|
||
<p>The best way to show what <code class="highlighter-rouge">AppDaemon</code> does is through a few simple examples.</p>
|
||
|
||
<h3><a class="title-link" name="sunrisesunset-lighting" href="#sunrisesunset-lighting"></a> Sunrise/Sunset Lighting</h3>
|
||
|
||
<p>Lets start with a simple App to turn a light on every night at sunset and off every morning at sunrise. Every App when first started will have its <code class="highlighter-rouge">initialize()</code> function called which gives it a chance to register a callback for <code class="highlighter-rouge">AppDaemons</code>’s scheduler for a specific time. In this case we are using <code class="highlighter-rouge">run_at_sunrise()</code> and <code class="highlighter-rouge">run_at_sunset()</code> to register 2 separate callbacks. The argument <code class="highlighter-rouge">0</code> is the number of seconds offset from sunrise or sunset and can be negative or positive. For complex intervals it can be convenient to use Python’s <code class="highlighter-rouge">datetime.timedelta</code> class for calculations. When sunrise or sunset occurs, the appropriate callback function, <code class="highlighter-rouge">sunrise_cb()</code> or <code class="highlighter-rouge">sunset_cb()</code> is called which then makes a call to Home Assistant to turn the porch light on or off by activating a scene. The variables <code class="highlighter-rouge">args["on_scene"]</code> and <code class="highlighter-rouge">args["off_scene"]</code> are passed through from the configuration of this particular App, and the same code could be reused to activate completely different scenes in a different version of the App.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">appapi</span>
|
||
|
||
<span class="k">class</span> <span class="nc">OutsideLights</span><span class="p">(</span><span class="n">appapi</span><span class="o">.</span><span class="n">AppDaemon</span><span class="p">):</span>
|
||
|
||
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_at_sunrise</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sunrise_cb</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_at_sunset</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sunset_cb</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">sunrise_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s">"off_scene"</span><span class="p">])</span>
|
||
|
||
<span class="k">def</span> <span class="nf">sunset_cb</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s">"on_scene"</span><span class="p">])</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>This is also fairly easy to achieve with Home Assistant automations, but we are just getting started.</p>
|
||
|
||
<h3><a class="title-link" name="motion-light" href="#motion-light"></a> Motion Light</h3>
|
||
|
||
<p>Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the <code class="highlighter-rouge">initialize()</code> function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell <code class="highlighter-rouge">AppDaemon</code> that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - <code class="highlighter-rouge">new = "on"</code>. When the motion is detected, the callack function <code class="highlighter-rouge">motion()</code> is called, and we check whether or not the sun has set using a built-in convenience function: <code class="highlighter-rouge">sun_down()</code>. Next, we turn the light on with <code class="highlighter-rouge">turn_on()</code>, then set a timer using <code class="highlighter-rouge">run_in()</code> to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in <code class="highlighter-rouge">AppDaemon</code> calling <code class="highlighter-rouge">light_off()</code> 60 seconds later using the <code class="highlighter-rouge">turn_off()</code> call to actually turn the light off. This is still pretty simple in code terms:</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">appapi</span>
|
||
|
||
<span class="k">class</span> <span class="nc">MotionLights</span><span class="p">(</span><span class="n">appapi</span><span class="o">.</span><span class="n">AppDaemon</span><span class="p">):</span>
|
||
|
||
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">listen_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">motion</span><span class="p">,</span> <span class="s">"binary_sensor.drive"</span><span class="p">,</span> <span class="n">new</span> <span class="o">=</span> <span class="s">"on"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">motion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">entity</span><span class="p">,</span> <span class="n">attribute</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">sun_down</span><span class="p">():</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span><span class="s">"light.drive"</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_in</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">light_off</span><span class="p">,</span> <span class="mi">60</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">light_off</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_off</span><span class="p">(</span><span class="s">"light.drive"</span><span class="p">)</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts.</p>
|
||
|
||
<p>Now lets extend this with a somewhat artificial example to show something that is simple in <code class="highlighter-rouge">AppDaemon</code> but very difficult if not impossible using automations. Lets warn someone inside the house that there has been motion outside by flashing a lamp on and off 10 times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1 second timer to run <code class="highlighter-rouge">flash_warning()</code> which when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after 10 iterations.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="kn">import</span> <span class="nn">appapi</span>
|
||
|
||
<span class="k">class</span> <span class="nc">FlashyMotionLights</span><span class="p">(</span><span class="n">appapi</span><span class="o">.</span><span class="n">AppDaemon</span><span class="p">):</span>
|
||
|
||
<span class="k">def</span> <span class="nf">initialize</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">listen_state</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">motion</span><span class="p">,</span> <span class="s">"binary_sensor.drive"</span><span class="p">,</span> <span class="n">new</span> <span class="o">=</span> <span class="s">"on"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">motion</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">entity</span><span class="p">,</span> <span class="n">attribute</span><span class="p">,</span> <span class="n">old</span><span class="p">,</span> <span class="n">new</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="bp">self</span><span class="o">.</span><span class="n">sun_down</span><span class="p">():</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_on</span><span class="p">(</span><span class="s">"light.drive"</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_in</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">light_off</span><span class="p">,</span> <span class="mi">60</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">flashcount</span> <span class="o">=</span> <span class="mi">0</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_in</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flash_warning</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">light_off</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">turn_off</span><span class="p">(</span><span class="s">"light.drive"</span><span class="p">)</span>
|
||
|
||
<span class="k">def</span> <span class="nf">flash_warning</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">):</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">toggle</span><span class="p">(</span><span class="s">"light.living_room"</span><span class="p">)</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">flashcount</span> <span class="o">+=</span> <span class="mi">1</span>
|
||
<span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">flashcount</span> <span class="o"><</span> <span class="mi">10</span><span class="p">:</span>
|
||
<span class="bp">self</span><span class="o">.</span><span class="n">run_in</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">flash_warning</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Of course if I wanted to make this App or its predecessor reusable I would have provided parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes.</p>
|
||
|
||
<p>In addition, Apps can write to <code class="highlighter-rouge">AppDaemon</code>’s logfiles, and there is a system of constraints that allows yout to control when and under what circumstances Apps and callbacks are active to keep the logic clean and simple.</p>
|
||
|
||
<p>I have spent the last few weeks moving all of my (fairly complex) automations over to <code class="highlighter-rouge">APPDaemon</code> and so far it is working very reliably.</p>
|
||
|
||
<p>Some people will maybe look at all of this and say “what use is this, I can already do all of this”, and that is fine, as I said this is an alternative not a replacement, but I am hopeful that for some users this will seem a more natural, powerful and nimble way of building potentially very complex automations.</p>
|
||
|
||
<p>If this has whet your appetite, feel free to give it a try. You can find it, <a href="https://github.com/acockburn/appdaemon">here</a>, including full installation instructions, an API reference, and a number of fully fleshed out examples.</p>
|
||
|
||
<p>Happy Automating!</p>
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.26: Foursquare, Fast.com, FFMPEG and GPSD]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/"/>
|
||
<updated>2016-08-13T19:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd</id>
|
||
<content type="html"><![CDATA[<p>It’s time for 0.26 and it’s again full of new features and fixes. First I want to highlight that we are now having 500 000 monthly pageviews on the website. A big milestone for us! It’s been an amazing journey. Big thanks to the Home Assistant community for being such a delightful bunch.</p>
|
||
|
||
<p>This release includes code contributed by 31 different people. The biggest change in this release is a new unit system. Instead of picking Celsius or Fahrenheit you’ll have to pick imperial or metric now. This influences the units for your temperature, distance, and weight. This will simplify any platform or component that needs to know this information. Big thanks to <a href="https://github.com/Teagan42">@Teagan42</a> for her hard work on this!</p>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/foursquare.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/ohmconnect.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/fastdotcom.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/gpsd.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /><img src="https://home-assistant.io/images/supported_brands/ffmpeg.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="100" /></p>
|
||
|
||
<ul>
|
||
<li>Core: Introduce notion of unit system (deprecates temperature unit option) (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Front end: Speed improvements (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Front end: Improve layout of state dev tool (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/proximity/">Proximity</a>: Allow definition of unit of measurement (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/switch.flux/">Flux</a>: Add mired and kelvin mode (<a href="https://github.com/HBDK">@HBDK</a>)</li>
|
||
<li>Thermostat - <a href="https://home-assistant.io/components/thermostat.proliphix/">Proliphix</a>: Support for cooling (<a href="https://github.com/sdague">@sdague</a>)</li>
|
||
<li>Media Player - <a href="https://home-assistant.io/components/media_player.lg_netcast/">LG Netcast TV</a>: Show screenshot of what is currently playing (<a href="https://github.com/shmuelzon">@shmuelzon</a>)</li>
|
||
<li>Z-Wave improvements (<a href="https://github.com/jnewland">@jnewland</a>, <a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>Thermostat - <a href="https://home-assistant.io/components/thermostat.heat_control/">heat control</a>: now also able to control an AC (<a href="https://github.com/mtreinish">@mtreinish</a>)</li>
|
||
<li>Thermostat - <a href="https://home-assistant.io/components/thermostat.heat_control/">heat control</a>: allow specifying a minimum duration before switching (<a href="https://github.com/mtreinish">@mtreinish</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/influxdb/">InfluxDB</a>: Whitelist entities option added (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Sensor: Serial <a href="https://home-assistant.io/components/sensor.serial_pm/">particulate matters</a> sensors now supported (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Sensor - <a href="https://home-assistant.io/components/sensor.fitbit/">Fitbit</a>: Fix unit system (<a href="https://github.com/tchellomello">@tchellomello</a>)</li>
|
||
<li>Light - <a href="https://home-assistant.io/components/light.flux_led/">Flux LED</a>: Add support for [color and brightness][color] (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Media Player - <a href="https://home-assistant.io/components/media_player.plex/">Plex</a>: Now able to report on music (<a href="https://github.com/abcminiuser">@abcminiuser</a>)</li>
|
||
<li>Alarm Control Panel - <a href="https://home-assistant.io/components/alarm_control_panel.verisure/">Verisure</a>: Now able to see who changed the alarm (<a href="https://github.com/persandtrom">@persandtrom</a>)</li>
|
||
<li>Thermostat - <a href="https://home-assistant.io/components/thermostat.honeywell/">Honeywell</a>: Add option to read and control HVAC mode (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/foursquare/">Foursquare</a> component to receive instant notifications of checkins (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li>Camera: New <a href="https://home-assistant.io/components/camera.ffmpeg/">FFMPEG</a> platform allows to stream anything through front end (<a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Manage <a href="https://home-assistant.io/topics/secrets/">secrets</a> with new command line script (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Notify - <a href="https://home-assistant.io/components/notify.smtp/">SMTP</a>: Allow embedding of images (<a href="https://github.com/partofthething">@partofthething</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.ohmconnect/">OhmConnect</a> is now supported (<a href="https://github.com/robbiet480">@robbiet480</a>)</li>
|
||
<li><a href="https://home-assistant.io/components/panel_custom/">panel_custom</a> component allows the registering of new panels (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Light: New <a href="https://home-assistant.io/components/light.mqtt_json/">mqtt_json</a> platform for working with JSON payload (<a href="https://github.com/corbanmailloux">@corbanmailloux</a>)</li>
|
||
<li>Sensor: New <a href="https://home-assistant.io/components/sensor.fastdotcom/">Fast.com</a> platform to measure network bandwidth performance (<a href="https://github.com/nkgilley">@nkgilley</a>)</li>
|
||
<li>New <a href="https://home-assistant.io/components/pilight/">pilight</a> component to control 433 Mz devices (<a href="https://github.com/DavidLP">@DavidLP</a>)</li>
|
||
<li>Sensor: <a href="https://home-assistant.io/components/sensor.gpsd/">GPSD</a> now supported (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0261---august-14" href="#hotfix-0261---august-14"></a> Hotfix 0.26.1 - August 14</h3>
|
||
|
||
<ul>
|
||
<li>Fix serial_pm config validation (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Check for existence of system mode on Honeywell thermostats (<a href="https://github.com/mKeRix">@mKeRix</a>)</li>
|
||
<li>Fix unknown unit of measurement for hvac and thermostat component (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0262---august-15" href="#hotfix-0262---august-15"></a> Hotfix 0.26.2 - August 15</h3>
|
||
|
||
<ul>
|
||
<li>Fix Wemo: have PyWemo play nicely with the latest Requests (<a href="https://github.com/pavoni">@pavoni</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0263---august-19" href="#hotfix-0263---august-19"></a> Hotfix 0.26.3 - August 19</h3>
|
||
|
||
<ul>
|
||
<li>Media Player cover art would not work when an API password was set. Thanks to <a href="https://github.com/maddox">@maddox</a> for reporting it and <a href="https://github.com/balloob">@balloob</a> for the fix.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>A new unit system has superseded the temperature unit option in the core configuration. For now it is backwards compatible, but you should update soon:</li>
|
||
</ul>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="c1"># Configuration.yaml example</span>
|
||
<span class="s">homeassistant</span><span class="pi">:</span>
|
||
<span class="c1"># 'metric' for the metric system, 'imperial' for the imperial system</span>
|
||
<span class="s">unit_system</span><span class="pi">:</span> <span class="s">metric</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[Optimizing the Home Assistant mobile web app]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/"/>
|
||
<updated>2016-08-07T19:36:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app</id>
|
||
<content type="html"><![CDATA[<p><em>This blog post will go into detail about the recent performance optimizations that went into the Home Assistant front end. For people not familiar with the app, check out <a href="https://home-assistant.io/demo">the demo</a> and <a href="https://github.com/home-assistant/home-assistant-polymer">the source</a>.</em></p>
|
||
|
||
<p>TL; DR: Don’t hack the framework, separate responsibilities, ship less, use service workers, use (future) web standards.</p>
|
||
|
||
<p>This year at Google I/O I saw Monica from the Polymer team talk about web components and performance. In her talk <a href="https://www.youtube.com/watch?v=zfQoleQEa4w&feature=youtu.be&t=1380">she mentions a mantra</a> that they use in the Polymer team to make things fast: <strong>Do less and be lazy</strong>.</p>
|
||
|
||
<p>Do less and be lazy. It sounds so obvious and it took a while before it started to dawn on me. I think most of the code I write is pretty fast, but I don’t often stop to take a harder look at how and when it runs in practice. When do we need the result, can it be postponed?</p>
|
||
|
||
<p>And thus started my journey to take a critical look at how the Home Assistant app was working and how to make things faster. Below is the list of the different things that I did to make it fast.</p>
|
||
|
||
<p>I hope this list can be useful to other people, as a guide for optimizing their own apps or for avoiding pitfalls when building a new one.</p>
|
||
|
||
<p>The first thing to do is to measure. The Home Assistant front end is a mobile web app, so we shouldn’t measure this on a machine with 8 cores and gigabytes of ram but instead measure on devices you expect a mobile web app to run: phones. Below are two timelines recorded with Home Assistant 0.18.2 (pre-optimizations) and Google Chrome 53. <strong>On my Mac the app starts in 1400 miliseconds and on my Nexus 5x in ~6500 miliseconds (~4.5 times slower!).</strong></p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-08-optimizing-web-app/performance-timeline-0.18.2.png" alt="Timeline of loading the front end in Home Assistant 0.18.2" />
|
||
</p>
|
||
|
||
<p>Although the app takes 6500 milliseconds to load on my phone, it would perform well afterwards. Still, that initial load is unacceptable. You expect to open an app on your phone and be able to use it, quickly. After I applied all the changes described below, I managed to reduce startup time to 900 miliseconds (-35%) on my Mac and 2400 miliseconds (-63%) on my Nexus 5x. <a href="https://home-assistant.io/demo">Check out the demo here.</a></p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-08-optimizing-web-app/performance-diagram.png" alt="diagram showing old and new loading times next to one another" />
|
||
<img src="https://home-assistant.io/images/blog/2016-08-optimizing-web-app/performance-timeline-0.26.png" alt="Timeline of loading the front end in Home Assistant 0.26" />
|
||
</p>
|
||
|
||
<!--more-->
|
||
|
||
<h2><a class="title-link" name="technology" href="#technology"></a> Technology</h2>
|
||
|
||
<p>The Home Assistant front end consists of two parts. There is <a href="https://github.com/home-assistant/home-assistant-js">Home Assistant JS</a>, which controls all data and interaction between JavaScript and the server. It is a Flux architecture using <a href="https://optimizely.github.io/nuclear-js/">NuclearJS</a> and <a href="https://facebook.github.io/immutable-js/">ImmutableJS</a>. The UI is implemented by <a href="https://github.com/home-assistant/home-assistant-polymer">Home Assistant Polymer</a> using <a href="https://www.polymer-project.org/">Polymer</a> and web components.</p>
|
||
|
||
<h1><a class="title-link" name="dont-hack-the-framework" href="#dont-hack-the-framework"></a> Don’t hack the framework</h1>
|
||
|
||
<p>I thought to be smart. I split out the JavaScript part of all web components and bundled them separately using Webpack so that I could use ES2015 via BabelJS (<a href="https://github.com/home-assistant/home-assistant-polymer/wiki/Using-Polymer-with-ES2015,-Babel-and-NPM">architecture</a>). This is not how Polymer components are written and it meant that I was unable to use any of the tooling that is available in the community or easily split up the bundle (more on this later).</p>
|
||
|
||
<p>So I went ahead and backported all my web components back from shiny beautiful ES6 to ES5. And you know what? It’s not that bad. Yes, not being able to use the concise object notation and arrow functions make your code more verbose. But in the end it is the same code that is running in browsers.</p>
|
||
|
||
<p>Another benefit of having each web component contain their own script tag is that the browser will process them one by one, allowing the browser to render our loading spinner animation in between.</p>
|
||
|
||
<p>As you can see in the timelines, we were able to get rid of most of the blocking component loading.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-08-optimizing-web-app/timeline-no-more-es2015.png" alt="Timeline of loading the front end before and after the optimization" />
|
||
</p>
|
||
|
||
<h1><a class="title-link" name="separate-responsibilities" href="#separate-responsibilities"></a> Separate responsibilities</h1>
|
||
|
||
<p>Whenever you learn a new technology, you feel like you’ve learned a new superpower. Wow, I can do all this with only 2 lines?! I had the same with bundling.</p>
|
||
|
||
<p>I was initially very focused on shipping just a single file with everything that my app needed. The entry point would be my main component which would require all of its Flux and UI dependencies. Then, just before it all would be rendered, it would check if there is authentication and start the data fetching.</p>
|
||
|
||
<p>This is a very bad pattern. This means that you will not start any data fetching until your UI is ready to render. Instead, you want your data to be fetched as soon as possible, and while the request is out to the server you want the page to load all your UI components.</p>
|
||
|
||
<p>To accomplish this I extracted the application core out of the main bundle. In the current optimized version it’s 31.1kb gzip’d. It is loaded before any other scripts so that it can start fetching data as soon as possible.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-08-optimizing-web-app/timeline-corejs.png" alt="Timeline of loading the front end before and after the optimization" />
|
||
</p>
|
||
|
||
<p>When the data does come back before the UI is done loading, we can process it before we start rendering the UI because of all the web components being processed individually. This means that we don’t have to show a loading screen the first time our components render – we can just render the components with the data they require.</p>
|
||
|
||
<h1><a class="title-link" name="ship-less" href="#ship-less"></a> Ship less</h1>
|
||
|
||
<p>The theory behind this one is simple: if we manage to ship less code, the browser has to process less code and it will start faster.</p>
|
||
|
||
<h2><a class="title-link" name="only-include-the-components-for-the-page-that-you-will-show" href="#only-include-the-components-for-the-page-that-you-will-show"></a> Only include the components for the page that you will show</h2>
|
||
|
||
<p>The Home Assistant mobile web application has 10 different panels (pages). Besides that, it also has a dialog for each type of device to show more info. That’s a lot of components and screens of which only a very small set is needed at the start. That means that we are shipping a lot of unnecessary data that the browser has to process before our initial render!</p>
|
||
|
||
<p>I broke up each panel of the app into a separate bundle that will be loaded on demand. This saved 250 kilobytes (pre-gzip) on just the embedded map alone! This change, however, required some significant changes to our build process.</p>
|
||
|
||
<p>Breaking up an app in JavaScript is complex because each module explicitly imports their dependencies. This has to continue to work in your browser after breaking it up in multiple files. Web components do not have this problem as it’s part of the platform and thus your browser is the registry! An unregistered web component will be rendered as an empty span element until the element gets registered. Loading order is not important.</p>
|
||
|
||
<div class="language-javascript highlighter-rouge"><pre class="highlight"><code><span class="c1">// Example of the flexibility of web components.</span>
|
||
<span class="kd">var</span> <span class="nx">spinner</span> <span class="o">=</span> <span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'paper-spinner'</span><span class="p">);</span>
|
||
<span class="nx">spinner</span><span class="p">.</span><span class="nx">active</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
|
||
<span class="nb">document</span><span class="p">.</span><span class="nx">body</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">spinner</span><span class="p">);</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Because the browser tracks your web components, creating standalone bundles for parts of the app is easy:</p>
|
||
|
||
<ul>
|
||
<li>Find all dependencies included in the main bundle (using <a href="https://github.com/Polymer/hydrolysis">hydrolysis</a>)</li>
|
||
<li>Create individual bundles of each panel (page) but filter out the dependencies included in main bundle.</li>
|
||
</ul>
|
||
|
||
<p>The <a href="https://github.com/home-assistant/home-assistant-polymer/blob/master/script/vulcanize.js">build script</a> that bundles and minifies the main bundle and panel bundles is <100 lines.</p>
|
||
|
||
<h2><a class="title-link" name="change-the-javascript-bundler-to-rollup" href="#change-the-javascript-bundler-to-rollup"></a> Change the JavaScript bundler to Rollup</h2>
|
||
|
||
<p>Core.js is still pure JavaScript and requires bundling. In my journey to get a smaller bundle, I went from <a href="https://webpack.github.io/">Webpack</a> to Webpack 2 to <a href="http://rollupjs.org/">Rollup</a>. At each step the bundle got smaller. Rollup is the big winner here because it doesn’t wrap all your modules in function calls but instead concatenates all files with minimal changes to make it work. This not only reduces the file size but also the loading speed. This is because the JavaScript engine will no longer have to invoke a function to resolve each import, it’s doing less work. This might not mean much for a computer but on a phone, everything counts.</p>
|
||
|
||
<h2><a class="title-link" name="scrutinize-dependencies" href="#scrutinize-dependencies"></a> Scrutinize dependencies</h2>
|
||
|
||
<p>If the goal is to ship less, it’s time to take a good look at dependencies. It’s so often that we decide to fall back to yet another NPM package that makes our life a little easier but comes at the cost of size – size usually taken up by functionality that you might never need.</p>
|
||
|
||
<h3><a class="title-link" name="remove-lodash" href="#remove-lodash"></a> Remove Lodash</h3>
|
||
<p>I realized that I only used a few methods of lodash. Lodash (and previously underscore) used to be one of the dependencies that would always be one of the first things that I would add to any project I start. But I could no longer justify it in the case of Home Assistant. Even with dead tree shaking it was not worth including it. Yes, they support a lot of edge cases but those were not relevant to my use case. And standalone lodash packages are <a href="https://github.com/lodash/lodash/blob/3.1.7-npm-packages/lodash.range/index.js">still huge</a>. The only thing that I couldn’t replace with a few lines of my own code was debounce. However I found <a href="https://github.com/component/debounce">a 40 line replacement</a>.</p>
|
||
|
||
<h3><a class="title-link" name="replace-momentjs-with-fecha" href="#replace-momentjs-with-fecha"></a> Replace moment.js with Fecha</h3>
|
||
|
||
<p>Moment.js is one of those power libraries. It is able to handle any date problem that you can throw at it. But this obviously comes at the cost of size. <a href="https://github.com/taylorhakes/fecha">Fecha</a> is a date formatting library at ~8% the size of moment.js (only 4.7kb pre-gzip). The only thing that it does not contain is date manipulation, which was something that was not being used.</p>
|
||
|
||
<h1><a class="title-link" name="use-service-worker-to-instantly-load-the-app" href="#use-service-worker-to-instantly-load-the-app"></a> Use Service worker to instantly load the app</h1>
|
||
|
||
<p>Using a service worker we’re able to store all app components and core javascript in the browser. This means that after their first visit, the browser will only have to go to the network to fetch the latest data from the server.</p>
|
||
|
||
<p>Creating a service worker is easy using <a href="https://github.com/GoogleChrome/sw-precache">sw-precache</a>, a service worker generation tool.</p>
|
||
|
||
<p>When a browser does not support service workers, Home Assistant will serve fingerprinted assets that are aggressively cached. Only when the content changes will the client redownload the asset.</p>
|
||
|
||
<p>Using fingerprinting with sw-precache required jumping through a few hoops. <a href="https://github.com/home-assistant/home-assistant-polymer/blob/master/script/sw-precache.js">The final build script can be found here.</a></p>
|
||
|
||
<h1><a class="title-link" name="make-it-feel-fast" href="#make-it-feel-fast"></a> Make it feel fast</h1>
|
||
|
||
<p>This one is more psychological: no one likes staring at a white screen because white screens are ambiguous: are we loading something, is there a crappy connection or maybe even a script error? That’s why it is very important to render something on the screen to show that the rest is being loaded, and as quickly as possible.</p>
|
||
|
||
<p>The Home Assistant landing page contains just enough CSS and HTML to render the loading screen minus the animations.</p>
|
||
|
||
<p>Now that the app is fast enough, I might swap out moving from a lite loading screen to drawing an empty toolbar. This makes it look like the UI is almost there.</p>
|
||
|
||
<h1><a class="title-link" name="using-a-framework-build-on-web-standards" href="#using-a-framework-build-on-web-standards"></a> Using a framework build on web standards</h1>
|
||
|
||
<p><em>I left this to the end of the list, mainly because I had no influence on this. Polymer just happened to ship an update while I was optimizing the application which gave a big boost to the loading time.</em></p>
|
||
|
||
<p>By using Polymer we have the ability to use tomorrow’s web standards today. This is powered by polyfills. A polyfill will use JavaScript to simulate the behavior that the web standard would have taken care of. As browsers progress, more work can move from the polyfills back to the browsers. This is great because browsers will be able to optimize the work better and thus be faster.</p>
|
||
|
||
<p>Polymer 1.6 was introduced at the end of June and allowed the app to take advantage of native <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables">CSS variables</a> in Chrome and Firefox. It also introduced lazy registration. Both greatly sped up our loading times.</p>
|
||
|
||
<h1><a class="title-link" name="future-optimizations" href="#future-optimizations"></a> Future optimizations</h1>
|
||
|
||
<p>A lot of optimizations have been applied but this journey will never be over. There are still a lot of opportunities to make things even faster. Some ideas that are on my list to explore:</p>
|
||
|
||
<ul>
|
||
<li>Use shadow DOM instead of shady DOM polyfill.</li>
|
||
<li>Use <a href="https://developers.google.com/closure/compiler/">closure compiler</a> to optimize the JavaScript.</li>
|
||
<li>Reduce the number of icons that are loaded.</li>
|
||
<li>Embed initial API response in served page if not using a service worker.</li>
|
||
<li>Reduce size of initial bundle by moving out all things that are not visible for initial paint. For example the dialogs that show more info about entities.</li>
|
||
<li>Prefetch the other pages using <code class="highlighter-rouge"><link rel="preload" …></code></li>
|
||
</ul>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[Laundry Sensors with NodeMCU and Home Assistant]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/08/03/laundry-automation-update/"/>
|
||
<updated>2016-08-03T17:22:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/08/03/laundry-automation-update</id>
|
||
<content type="html"><![CDATA[<p><em>This is a guest post by Home Assistant user and contributor <a href="https://github.com/nkgilley">Nolan Gilley</a>.</em></p>
|
||
|
||
<p>Today I’ll show you how I used Home Assistant, a NodeMCU (ESP8266), and a couple of accelerometers to automate our laundry room. This is a rewrite of an <a href="https://home-assistant.io/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/">old post</a> where I did the same thing using a Moteino & Raspberry Pi. This version only requires a NodeMCU.</p>
|
||
|
||
<p>We have an older washer and dryer which doesn’t have any form of notification when cycles complete. Home Assistant was the obvious solution, I just needed to create sensors for the washer and dryer. I tried using sound sensors but found them unreliable. I ended up using an accelerometer attached to the back of each appliance. I also added magnetic reed switches on the doors of the washer and dryer to detect whether they’re open or closed. I connected the accelerometers and reed switches to an NodeMCU which will relay the data to my MQTT broker.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-laundry-automation/block-diagram.png" />
|
||
Block diagram of schematic
|
||
</p>
|
||
|
||
<!--more-->
|
||
|
||
<p>After taking some sample data from the accelerometers while each appliance was in operation, I decided to plot the data to help determine the proper thresholds of when the devices were running or off. I had to do this in order to get precise ranges so the dryer sensor wouldn’t get tripped by the washer or vice versa. In the plot below you can see the acceleration in each direction for the accelerometer connected to the dryer. It’s easy to see when the dryer is in operation here. I used the same technique for the washer’s accelerometer.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-laundry-automation/data-graph.png" />
|
||
Graph showing the accelerometer data
|
||
</p>
|
||
|
||
<p>Next it was just a matter of integrating everything with Home Assistant. I was able to use the <a href="https://home-assistant.io/components/mqtt/">MQTT component</a> to read the washer and dryer states from the Moteino and display it in Home Assistant.</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-laundry-automation/screenshot-ha.png" />
|
||
Status of the dryer and washer in Home Assistant
|
||
</p>
|
||
|
||
<p>Next I wrote <a href="https://home-assistant.io/components/script/">scripts</a> that are run whenever the washer or dryer completes a load. This is triggered by the <a href="https://home-assistant.io/getting-started/automation/">automation component</a>. When the laundry is complete I have the lights in the house turn red and <a href="https://home-assistant.io/components/notify.joaoapps_join/">notify me via Join</a>. Once the door is opened and laundry emptied another script runs that sets the lights back to normal. So far it has been very helpful and very reliable.</p>
|
||
|
||
<p class="img">
|
||
<a href="https://home-assistant.io/images/blog/2016-07-laundry-automation/protoboard.jpg">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-laundry-automation/protoboard.jpg" />
|
||
</a>
|
||
NodeMCU connected to MPU-6050 accelerometer.
|
||
</p>
|
||
|
||
<p>Materials used:</p>
|
||
|
||
<ul>
|
||
<li><a href="https://www.amazon.com/gp/product/B010O1G1ES">NodeMCU</a></li>
|
||
<li><a href="http://www.amazon.com/gp/product/B008BOPN40">2 x Accelerometers</a></li>
|
||
<li><a href="http://www.amazon.com/gp/product/B004PARDRO">2 x Reed switch</a></li>
|
||
</ul>
|
||
|
||
<p><a href="https://github.com/nkgilley/nodemcu-laundry/blob/master/nodemcu-laundry.ino">Sketch for the NodeMCU is available here.</a></p>
|
||
|
||
<p>Home Assistant Configuration:</p>
|
||
|
||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">mqtt</span><span class="pi">:</span>
|
||
<span class="s">broker</span><span class="pi">:</span> <span class="s">192.168.1.100</span>
|
||
<span class="s">port</span><span class="pi">:</span> <span class="s">1883</span>
|
||
<span class="s">keepalive</span><span class="pi">:</span> <span class="s">60</span>
|
||
<span class="s">qos</span><span class="pi">:</span> <span class="s">0</span>
|
||
|
||
<span class="s">sensor</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
|
||
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Dryer</span><span class="nv"> </span><span class="s">Status"</span>
|
||
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">sensor/dryer"</span>
|
||
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">"</span>
|
||
|
||
<span class="pi">-</span> <span class="s">platform</span><span class="pi">:</span> <span class="s">mqtt</span>
|
||
<span class="s">name</span><span class="pi">:</span> <span class="s2">"</span><span class="s">Washer</span><span class="nv"> </span><span class="s">Status"</span>
|
||
<span class="s">state_topic</span><span class="pi">:</span> <span class="s2">"</span><span class="s">sensor/washer"</span>
|
||
<span class="s">unit_of_measurement</span><span class="pi">:</span> <span class="s2">"</span><span class="s">"</span>
|
||
|
||
<span class="s">automation</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Washer complete</span>
|
||
<span class="s">trigger</span><span class="pi">:</span>
|
||
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.washer_status</span>
|
||
<span class="s">from</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Running'</span>
|
||
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Complete'</span>
|
||
<span class="s">action</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">script.turn_on</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">script.washer_complete</span>
|
||
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Washer emptied</span>
|
||
<span class="s">trigger</span><span class="pi">:</span>
|
||
<span class="s">platform</span><span class="pi">:</span> <span class="s">state</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">sensor.washer_status</span>
|
||
<span class="s">from</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Complete'</span>
|
||
<span class="s">to</span><span class="pi">:</span> <span class="s1">'</span><span class="s">Empty'</span>
|
||
<span class="s">action</span><span class="pi">:</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">scene.turn_on</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">scene.normal</span>
|
||
|
||
<span class="s">script</span><span class="pi">:</span>
|
||
<span class="s">washer_complete</span><span class="pi">:</span>
|
||
<span class="s">alias</span><span class="pi">:</span> <span class="s">Washer Complete</span>
|
||
<span class="s">sequence</span><span class="pi">:</span>
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Join Notification</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">notify.join</span>
|
||
<span class="s">data</span><span class="pi">:</span>
|
||
<span class="s">message</span><span class="pi">:</span> <span class="s2">"</span><span class="s">The</span><span class="nv"> </span><span class="s">washing</span><span class="nv"> </span><span class="s">machine</span><span class="nv"> </span><span class="s">has</span><span class="nv"> </span><span class="s">finished</span><span class="nv"> </span><span class="s">its</span><span class="nv"> </span><span class="s">cycle,</span><span class="nv"> </span><span class="s">please</span><span class="nv"> </span><span class="s">empty</span><span class="nv"> </span><span class="s">it!"</span>
|
||
<span class="pi">-</span> <span class="s">alias</span><span class="pi">:</span> <span class="s">Living Room Lights Blue</span>
|
||
<span class="s">service</span><span class="pi">:</span> <span class="s">scene.turn_on</span>
|
||
<span class="s">data</span><span class="pi">:</span>
|
||
<span class="s">entity_id</span><span class="pi">:</span> <span class="s">scene.blue</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Resources used:</p>
|
||
|
||
<ul>
|
||
<li><a href="http://www.instructables.com/id/Uber-Home-Automation-w-Arduino-Pi/step13/Washer-Dryer-Smartifier-Water-Leak-Sensor/">Inspiration and Help with Arduino code</a></li>
|
||
</ul>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[0.25: Custom frontend panels, Jupyter notebooks, DirecTV.]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/"/>
|
||
<updated>2016-07-30T12:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/07/30/custom-frontend-panels--jupyter-notebooks--directv</id>
|
||
<content type="html"><![CDATA[<p>When Home Assistant started the focus has always been on making a great developer experience. Allowing anyone to add support for their favorite devices to Home Assistant easily. This focus has been a great success since we now have 339 components and platforms!</p>
|
||
|
||
<p>Starting with this release, we are extending our extensability to the frontend. Starting this release, any component can <a href="https://home-assistant.io/developers/frontend_creating_custom_panels/">add it’s own page to the frontend</a>. Examples of this today are the map, logbook and history. We are looking forward to all the crazy panels you’ll come up with!</p>
|
||
|
||
<p>We have also seen an exciting trend of people starting to visualize their Internet of Things data using <a href="http://jupyter.org/">Jupyter</a> Notebooks, which are a great way to create and share documents that contain code, visualizations, and explanatory text. In case you missed it, the <a href="https://home-assistant.io/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/">blog</a> post by <a href="https://github.com/kireyeu">@kireyeu</a> shows an advanced usecase while our <a href="https://home-assistant.io/cookbook/#jupyter-notebooks/">Notebooks</a> in the <a href="https://github.com/home-assistant/home-assistant-notebooks">Home Assistant Notebooks repository</a> cover the basics.</p>
|
||
|
||
<p>This release also includes a bunch of new integrations, among others three new media player platforms. This means that today Home Assistant can talk to 26 different media players!</p>
|
||
|
||
<p>The brand-new <a href="https://home-assistant.io/components/panel_iframe/">iFrame panel component</a> allows you to add other websites as pages in the Home Assistant frontend. They will show up in the sidebar and can be used the same way as you open the frontend in your browser but all within one view.</p>
|
||
|
||
<p>I would like to do a shoutout to <a href="https://github.com/fabianhjr">@fabianhjr</a>. He has started adding <a href="https://docs.python.org/3/library/typing.html">typing</a> data (<a href="https://www.python.org/dev/peps/pep-0484/">PEP484</a>) to the Home Assistant core. This will help us identify issues before they are released.</p>
|
||
|
||
<p><img src="https://home-assistant.io/images/supported_brands/russound.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="150" /><img src="https://home-assistant.io/images/supported_brands/jupyter.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="150" /><img src="https://home-assistant.io/images/supported_brands/directv.png" style="clear: right; margin-left: 5px; border:none; box-shadow: none; float: right; margin-bottom: 16px;" width="150" /></p>
|
||
|
||
<ul>
|
||
<li>Frontend: Support for <a href="https://home-assistant.io/components/panel_iframe/">iFrame panels</a> to adding other sites to sidebar (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Allow components to register <a href="https://home-assistant.io/developers/frontend_creating_custom_panels/">custom frontend panels</a> (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Add example custom_component <a href="https://home-assistant.io/cookbook/custom_panel_using_react/">react_panel</a> showing custom panels (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
<li>Light: <a href="https://home-assistant.io/components/light.flux_led/">MagicLight/Flux WiFi Color LED Light</a> support (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Script: Specify a delay <a href="https://home-assistant.io/getting-started/scripts/#delay/">using templates</a> (<a href="https://github.com/Teagan42">@Teagan42</a>)</li>
|
||
<li>Media player: <a href="https://home-assistant.io/components/media_player.russound_rnet/">Russound RNET</a> integration (<a href="https://github.com/laf">@laf</a>)</li>
|
||
<li>Remote: Option specifying custom timeout when calling Home Assistant API (<a href="https://github.com/n8henrie">@n8henrie</a>)</li>
|
||
<li>Thermostat: Integration of <a href="https://home-assistant.io/components/thermostat.knx/">KNX</a> thermostats (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Thermostat: Support for HVAC mode of <a href="https://home-assistant.io/components/thermostat.nest/">Nest</a> devices (<a href="https://github.com/vladonemo">@vladonemo</a>)</li>
|
||
<li>InfluxDB: Option to specify additional <a href="https://home-assistant.io/components/influxdb/">tags</a> (<a href="https://github.com/open-homeautomation">@open-homeautomation</a>)</li>
|
||
<li>Input slider: Support for float value (<a href="https://github.com/ngraziano">@ngraziano</a>)</li>
|
||
<li>Template: New <a href="https://home-assistant.io/topics/templating/#home-assistant-template-extensions/">filters</a> (<code class="highlighter-rouge">timestamp_local</code> and <code class="highlighter-rouge">timestamp_utc</code>) (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Binary sensor - Wink: Water leak sensor support added (<a href="https://github.com/w1ll1am23">@w1ll1am23</a>)</li>
|
||
<li>Sensor - Tellduslive: Support for luminance of Fibaro Motion Sensor (<a href="https://github.com/PetitCircuitLab">@PetitCircuitLab</a>)</li>
|
||
<li>Switch - RPi GPIO: Fix when inverted logic (<a href="https://github.com/zeroDenial">@zeroDenial</a>)</li>
|
||
<li>Z-Wave: Rollershutter update (<a href="https://github.com/turbokongen">@turbokongen</a>)</li>
|
||
<li>RFXtrx: Fire events when receiving signals from sensors and tests added (<a href="https://github.com/Danielhiversen">@Danielhiversen</a>)</li>
|
||
<li>Core: Add <a href="https://docs.python.org/3/library/typing.html">type</a> checking using mypy to the core (<a href="https://github.com/fabianhjr">@fabianhjr</a>)</li>
|
||
<li>Remote: Support for getting the <a href="https://home-assistant.io/developers/python_api/#get-configuration/">Configuration</a> through the Python API (<a href="https://github.com/fabaff">@fabaff</a>)</li>
|
||
<li>Media player: Support for <a href="https://home-assistant.io/components/media_player.directv/">DirecTV</a> (<a href="https://github.com/cbulock">@cbulock</a>)</li>
|
||
<li>Use browser timezone for frontend logbook and history dates (<a href="https://github.com/armills">@armills</a>)</li>
|
||
<li>Light: New support for <a href="https://home-assistant.io/components/light.x10/">X10</a> lights (<a href="https://github.com/fotoetienne">@fotoetienne</a>)</li>
|
||
<li>Sensor: Support for observing <a href="https://home-assistant.io/components/sensor.imap/">IMAP</a> accounts (<a href="https://github.com/danieljkemp">@danieljkemp</a>)</li>
|
||
<li>Media Player: Integration for <a href="https://home-assistant.io/components/media_player.mpchc/">MPC-HC</a> (Media Player Classic - Home Cinema) mediaplayer (<a href="https://github.com/abcminiuser">@abcminiuser</a>)</li>
|
||
<li>Notify: <code class="highlighter-rouge">location</code> extension for <a href="https://home-assistant.io/components/notify.telegram/">Telegram</a> and photo bug fixed (<a href="https://github.com/keatontaylor">@keatontaylor</a> and <a href="https://github.com/pvizeli">@pvizeli</a>)</li>
|
||
<li>Groups: Lock states will now be properly grouped (<a href="https://github.com/jwl17330536">@jwl17330536</a>)</li>
|
||
<li>Media Player: Added tests for Sonos to improve code quality (<a href="https://github.com/americanwookie">@americanwookie</a>)</li>
|
||
<li>Device Tracker: iCloud stability fixes (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Sensor: Speedtest with improved error handling and state restoring (<a href="https://github.com/nkgilley">@nkgilley</a>)</li>
|
||
<li>Recorder: Stability fixes (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Qwikswitch: Stability fixes (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Light: <a href="https://home-assistant.io/components/light.hyperion/">Hyperion</a> keeps now track of active color (<a href="https://github.com/schneefux">@schneefux</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0251---august-1" href="#hotfix-0251---august-1"></a> Hotfix 0.25.1 - August 1</h3>
|
||
|
||
<ul>
|
||
<li>Light - Z-Wave: Bring back delayed value update behavior (<a href="https://github.com/jnewland">@jnewland</a>)</li>
|
||
<li>Recorder: Properly close session after execute (<a href="https://github.com/kellerza">@kellerza</a>)</li>
|
||
<li>Media Player - Kodi: No longer block startup if connecting to wrong port (<a href="https://github.com/shoekstra">@shoekstra</a>)</li>
|
||
<li>Downgrade voluptuous to 0.8.9 as it blocked the upgrade for some (<a href="https://github.com/balloob">@balloob</a>)</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="hotfix-0252---august-2" href="#hotfix-0252---august-2"></a> Hotfix 0.25.2 - August 2</h3>
|
||
|
||
<ul>
|
||
<li>Hotfix to make sure Z-Wave locks work again. Thanks to @tobiebooth for the quick fix.</li>
|
||
</ul>
|
||
|
||
<h3><a class="title-link" name="breaking-changes" href="#breaking-changes"></a> Breaking changes</h3>
|
||
|
||
<ul>
|
||
<li>Google Voice SMS notification support was removed.</li>
|
||
</ul>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[ESP8266 and MicroPython - Part 1]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1/"/>
|
||
<updated>2016-07-28T04:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/07/28/esp8266-and-micropython-part1</id>
|
||
<content type="html"><![CDATA[<p><img src="https://home-assistant.io/images/blog/2016-07-micropython/micropython.png" style="clear: right; border:none; box-shadow: none; float: right; margin-bottom: 12px;" width="200" />
|
||
The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The <a href="http://docs.micropython.org/en/latest/esp8266/esp8266_contents.html">documentation</a> covers a lot of ground. This post is providing only a little summary which should get you started.</p>
|
||
|
||
<p>Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for <a href="https://micropython.org/download/#esp8266">download</a>.</p>
|
||
|
||
<!--more-->
|
||
|
||
<p>The easiest way is to use <a href="https://github.com/themadinventor/esptool">esptool.py</a> for firmware handling tasks. First erase the flash:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo python esptool.py --port /dev/ttyUSB0 erase_flash
|
||
esptool.py v1.0.2-dev
|
||
Connecting...
|
||
Erasing flash <span class="o">(</span>this may take a <span class="k">while</span><span class="o">)</span>...
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>and then load the firmware. You may adjust the file name of the firmware binary.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo python esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size<span class="o">=</span>8m 0 esp8266-2016-07-10-v1.8.2.bin
|
||
esptool.py v1.2-dev
|
||
Connecting...
|
||
Running Cesanta flasher stub...
|
||
Flash params <span class="nb">set </span>to 0x0020
|
||
Writing 540672 @ 0x0... 540672 <span class="o">(</span>100 %<span class="o">)</span>
|
||
Wrote 540672 bytes at 0x0 <span class="k">in </span>13.1 seconds <span class="o">(</span>330.8 kbit/s<span class="o">)</span>...
|
||
Leaving...
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Now reset the device. You should then be able to use the <a href="http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html#getting-a-micropython-repl-prompt">REPL (Read Evaluate Print Loop)</a>. On Linux there is <code class="highlighter-rouge">minicom</code> or <code class="highlighter-rouge">picocom</code>, on a Mac you can use <code class="highlighter-rouge">screen</code> (eg. <code class="highlighter-rouge">screen /dev/tty.SLAB_USBtoUART 115200</code>), and on Windows there is Putty to open a serial connection and get the REPL prompt.</p>
|
||
|
||
<p>The <a href="http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/repl.html#webrepl-a-prompt-over-wifi">WebREPL</a> work over a wireless connection and allows easy access to a prompt in your browser. An instance of the WebREPL client is hosted at <a href="http://micropython.org/webrepl">http://micropython.org/webrepl</a>. Alternatively, you can create a local clone of their <a href="https://github.com/micropython/webrepl">GitHub repository</a>. This is neccessary if your want to use the command-line tool <code class="highlighter-rouge">webrepl_cli.py</code> which is mentionend later in this post.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>sudo minicom -D /dev/ttyUSB0
|
||
<span class="c">#4 ets_task(4020e374, 29, 3fff70e8, 10) </span>
|
||
WebREPL daemon started on ws://192.168.4.1:8266
|
||
Started webrepl <span class="k">in </span>setup mode
|
||
could not open file <span class="s1">'main.py'</span> <span class="k">for </span>reading
|
||
|
||
<span class="c">#5 ets_task(4010035c, 3, 3fff6360, 4)</span>
|
||
MicroPython v1.8.2-9-g805c2b9 on 2016-07-10; ESP module with ESP8266
|
||
Type <span class="s2">"help()"</span> <span class="k">for </span>more information.
|
||
<span class="gp">>>> </span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p class="note">
|
||
The public build of the firmware may be different than the firmware distributed to the backers of the Kickstarter campaign. Especially in regard of the <a href="http://docs.micropython.org/en/latest/esp8266/py-modindex.html">available modules</a>, turned on debug messages, and alike. Also, the WebREPL may not be started by default.
|
||
</p>
|
||
|
||
<p>Connect a LED to pin 5 (or another pin of your choosing) to check if the ESP8266 is working as expected.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="o">>>></span> <span class="kn">import</span> <span class="nn">machine</span>
|
||
<span class="o">>>></span> <span class="n">pin</span> <span class="o">=</span> <span class="n">machine</span><span class="o">.</span><span class="n">Pin</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="n">machine</span><span class="o">.</span><span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">)</span>
|
||
<span class="o">>>></span> <span class="n">pin</span><span class="o">.</span><span class="n">high</span><span class="p">()</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>You can toogle the LED by changing its state with <code class="highlighter-rouge">pin.high()</code> and <code class="highlighter-rouge">pin.low()</code>.</p>
|
||
|
||
<p>Various ESP8266 development board are shipped with an onboard photocell or a light dependent resistors (LDR) connected to the analog pin of your ESP8266 check if you are able to obtain a value.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="o">>>></span> <span class="kn">import</span> <span class="nn">machine</span>
|
||
<span class="o">>>></span> <span class="n">brightness</span> <span class="o">=</span> <span class="n">machine</span><span class="o">.</span><span class="n">ADC</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
|
||
<span class="o">>>></span> <span class="n">brightness</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Make sure that you are familiar with REPL and WebREPL because this will be needed soon. Keep in mind the password for the WebREPL access.</p>
|
||
|
||
<p>Read the <a href="http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html">instructions</a> about how to setup your wireless connection. Basically you need to upload a <code class="highlighter-rouge">boot.py</code> file to the microcontroller and this file is taking care of the connection setup. Below you find a sample which is more or less the same as shown in the <a href="http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/network_basics.html#configuration-of-the-wifi">documentation</a>.</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="k">def</span> <span class="nf">do_connect</span><span class="p">():</span>
|
||
<span class="kn">import</span> <span class="nn">network</span>
|
||
|
||
<span class="n">SSID</span> <span class="o">=</span> <span class="s">'SSID'</span>
|
||
<span class="n">PASSWORD</span> <span class="o">=</span> <span class="s">'PASSWORD'</span>
|
||
|
||
<span class="n">sta_if</span> <span class="o">=</span> <span class="n">network</span><span class="o">.</span><span class="n">WLAN</span><span class="p">(</span><span class="n">network</span><span class="o">.</span><span class="n">STA_IF</span><span class="p">)</span>
|
||
<span class="n">ap_if</span> <span class="o">=</span> <span class="n">network</span><span class="o">.</span><span class="n">WLAN</span><span class="p">(</span><span class="n">network</span><span class="o">.</span><span class="n">AP_IF</span><span class="p">)</span>
|
||
<span class="k">if</span> <span class="n">ap_if</span><span class="o">.</span><span class="n">active</span><span class="p">():</span>
|
||
<span class="n">ap_if</span><span class="o">.</span><span class="n">active</span><span class="p">(</span><span class="bp">False</span><span class="p">)</span>
|
||
<span class="k">if</span> <span class="ow">not</span> <span class="n">sta_if</span><span class="o">.</span><span class="n">isconnected</span><span class="p">():</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">'connecting to network...'</span><span class="p">)</span>
|
||
<span class="n">sta_if</span><span class="o">.</span><span class="n">active</span><span class="p">(</span><span class="bp">True</span><span class="p">)</span>
|
||
<span class="n">sta_if</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span><span class="n">SSID</span><span class="p">,</span> <span class="n">PASSWORD</span><span class="p">)</span>
|
||
<span class="k">while</span> <span class="ow">not</span> <span class="n">sta_if</span><span class="o">.</span><span class="n">isconnected</span><span class="p">():</span>
|
||
<span class="k">pass</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">'Network configuration:'</span><span class="p">,</span> <span class="n">sta_if</span><span class="o">.</span><span class="n">ifconfig</span><span class="p">())</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Upload this file with <code class="highlighter-rouge">webrepl_cli.py</code> or the WebREPL:</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">$ </span>python webrepl_cli.py boot.py 192.168.4.1:/boot.py
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>If you reboot, you should see your current IP address in the terminal.</p>
|
||
|
||
<div class="language-bash highlighter-rouge"><pre class="highlight"><code><span class="gp">>>> </span>Network configuration: <span class="o">(</span><span class="s1">'192.168.0.10'</span>, <span class="s1">'255.255.255.0'</span>, <span class="s1">'192.168.0.1'</span>, <span class="s1">'192.168.0.1'</span><span class="o">)</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>First let’s create a little consumer for Home Assistant sensor’s state. The code to place in <code class="highlighter-rouge">main.py</code> is a mixture of code from above and the <a href="https://home-assistant.io/developers/rest_api/">RESTful API</a> of Home Assistant. If the temperature in the kitchen is higher than 20 °C then the LED connected to pin 5 is switched on.</p>
|
||
|
||
<p class="note">
|
||
If a module is missing then you need to download it from the <a href="https://github.com/micropython/micropython-lib">MicroPython Library overview</a> and upload it to the ESP8266 with <code class="highlighter-rouge">webrepl_cli.py</code> manually.
|
||
</p>
|
||
|
||
<div class="language-python highlighter-rouge"><pre class="highlight"><code><span class="c"># Sample code to request the state of a Home Assistant entity.</span>
|
||
|
||
<span class="n">API_PASSWORD</span> <span class="o">=</span> <span class="s">'YOUR_PASSWORD'</span>
|
||
<span class="n">URL</span> <span class="o">=</span> <span class="s">'http://192.168.0.5:8123/api/states/'</span>
|
||
<span class="n">ENTITY</span> <span class="o">=</span> <span class="s">'sensor.kitchen_temperature'</span>
|
||
<span class="n">TIMEOUT</span> <span class="o">=</span> <span class="mi">30</span>
|
||
<span class="n">PIN</span> <span class="o">=</span> <span class="mi">5</span>
|
||
|
||
<span class="k">def</span> <span class="nf">get_data</span><span class="p">():</span>
|
||
<span class="kn">import</span> <span class="nn">urequests</span>
|
||
<span class="n">url</span> <span class="o">=</span> <span class="s">'{}{}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">URL</span><span class="p">,</span> <span class="n">ENTITY</span><span class="p">)</span>
|
||
<span class="n">headers</span> <span class="o">=</span> <span class="p">{</span><span class="s">'x-ha-access'</span><span class="p">:</span> <span class="n">API_PASSWORD</span><span class="p">,</span>
|
||
<span class="s">'content-type'</span><span class="p">:</span> <span class="s">'application/json'</span><span class="p">}</span>
|
||
<span class="n">resp</span> <span class="o">=</span> <span class="n">urequests</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">URL</span><span class="p">,</span> <span class="n">headers</span><span class="o">=</span><span class="n">headers</span><span class="p">)</span>
|
||
<span class="k">return</span> <span class="n">resp</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s">'state'</span><span class="p">]</span>
|
||
|
||
<span class="k">def</span> <span class="nf">main</span><span class="p">():</span>
|
||
<span class="kn">import</span> <span class="nn">machine</span>
|
||
<span class="kn">import</span> <span class="nn">time</span>
|
||
|
||
<span class="n">pin</span> <span class="o">=</span> <span class="n">machine</span><span class="o">.</span><span class="n">Pin</span><span class="p">(</span><span class="n">PIN</span><span class="p">,</span> <span class="n">machine</span><span class="o">.</span><span class="n">Pin</span><span class="o">.</span><span class="n">OUT</span><span class="p">)</span>
|
||
<span class="k">while</span> <span class="bp">True</span><span class="p">:</span>
|
||
<span class="k">try</span><span class="p">:</span>
|
||
<span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">get_data</span><span class="p">())</span> <span class="o">>=</span> <span class="mi">20</span><span class="p">:</span>
|
||
<span class="n">pin</span><span class="o">.</span><span class="n">high</span><span class="p">()</span>
|
||
<span class="k">else</span><span class="p">:</span>
|
||
<span class="n">pin</span><span class="o">.</span><span class="n">low</span><span class="p">()</span>
|
||
<span class="k">except</span> <span class="nb">TypeError</span><span class="p">:</span>
|
||
<span class="k">pass</span>
|
||
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="n">TIMEOUT</span><span class="p">)</span>
|
||
|
||
<span class="k">if</span> <span class="n">__name__</span> <span class="o">==</span> <span class="s">'__main__'</span><span class="p">:</span>
|
||
<span class="k">print</span><span class="p">(</span><span class="s">'Get the state of {}'</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ENTITY</span><span class="p">))</span>
|
||
<span class="n">main</span><span class="p">()</span>
|
||
</code></pre>
|
||
</div>
|
||
|
||
<p>Upload <code class="highlighter-rouge">main.py</code> the same way as <code class="highlighter-rouge">boot.py</code>. After a reboot (<code class="highlighter-rouge">>>> import machine</code> and <code class="highlighter-rouge">>>> machine.reboot()</code>) or power-cycling your physical notifier is ready.</p>
|
||
|
||
<p>If you run into trouble, press “Ctrl+c” in the REPL to stop the execution of the code, enter <code class="highlighter-rouge">>>> import webrepl</code> and <code class="highlighter-rouge">>>> webrepl.start()</code>, and upload your fixed file.</p>
|
||
|
||
]]></content>
|
||
</entry>
|
||
|
||
<entry>
|
||
<title type="html"><![CDATA[IoT Data Exploration with Jupyter Notebooks]]></title>
|
||
<link href="https://home-assistant.io/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/"/>
|
||
<updated>2016-07-23T18:00:00+00:00</updated>
|
||
<id>https://home-assistant.io/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks</id>
|
||
<content type="html"><![CDATA[<p><em>This is the first blog post by Anton Kireyeu. A new contributor to Home Assistant who will focus on exploring and visualizing Home Assistant data.</em></p>
|
||
|
||
<p>As we learned in the recent <a href="https://home-assistant.io/blog/2016/07/19/visualizing-your-iot-data/">blog post by Fabian</a>, all operational data of your Home Assistant application is stored locally and is available for exploration. Our first steps were querying data with the <a href="http://sqlitebrowser.org/">DB Browser for SQLite</a>, exporting the data extract as a CSV file and graphing in LibreOffice. But what else can be done with this data and what tools are there available?</p>
|
||
|
||
<p>This post will help you get set up using a few popular data scientist tools to allow you to locally process your data:</p>
|
||
|
||
<ul>
|
||
<li> <a href="http://pandas.pydata.org/">Pandas</a>: an open source tool for data analysis for Python</li>
|
||
<li> <a href="http://matplotlib.org/">matplotlib</a>: a Python plotting library</li>
|
||
<li> <a href="https://jupyter.org/">Jupyter notebook</a>: application for creation and sharing of documents containing live code, visualizations and explanatory text</li>
|
||
</ul>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-data-exploration/graph.png" />
|
||
One of the graphs created with this tutorial.
|
||
</p>
|
||
|
||
<p><em>TL; DR: Use <a href="http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-1/DataExploration-1.ipynb">this Jupyter Notebook</a> to visualize of your data</em></p>
|
||
|
||
<!--more-->
|
||
|
||
<h3><a class="title-link" name="dependencies" href="#dependencies"></a> Dependencies</h3>
|
||
|
||
<p>In order to run the provided Jupyter notebook, please make sure you have the following applications/libraries installed on your computer:</p>
|
||
|
||
<ul>
|
||
<li>Pandas</li>
|
||
<li>NumPy</li>
|
||
<li>Matplotlib</li>
|
||
<li>SQLAlchemy</li>
|
||
<li>Jupyter</li>
|
||
</ul>
|
||
|
||
<p>As a Windows user myself, I find the easiest, quickest and most hassle-free way of installing all of these dependencies is to use <a href="https://winpython.github.io/">WinPython</a>. This free open-source portable distribution includes all of the dependencies required for this notebook, as well as a few other essential Python libraries you may require for data exploration in the future.</p>
|
||
|
||
<h4><a class="title-link" name="why-jupyter" href="#why-jupyter"></a> Why Jupyter?</h4>
|
||
|
||
<p>While all Home Assistant implementations can have varying setup, components and scripts, the underlying data structure is standardized and well-defined. This allows us to write Python code that is environmentally agnostic. Wrapping it in a Jupyter notebook ensures the code, visualizations and directions/explanations are kept digestible and neatly-packaged. One of the amazing features of Jupyter is the ability to change code as you go along, customizing all outputs and visualizations on the fly!</p>
|
||
|
||
<h4><a class="title-link" name="where-do-i-start" href="#where-do-i-start"></a> Where do I start?</h4>
|
||
|
||
<p>This tutorial is based around a heavily commented Jupyter Notebook that we created. So to get started, you will have to open that:</p>
|
||
|
||
<ul>
|
||
<li><a href="http://nbviewer.jupyter.org/github/home-assistant/home-assistant-notebooks/blob/master/DataExploration-1/DataExploration-1.ipynb">download the tutorial Jupyter Notebook</a> (leads to preview page, from there click download top-right)</li>
|
||
<li>launch the Jupyter Notebook App</li>
|
||
<li>Click the ‘upload’ button to add the downloaded notebook to Jupyter</li>
|
||
<li>Adjust the <code class="highlighter-rouge">DB_URL</code> at the beginning of the notebook to point at your Home Assistant database</li>
|
||
<li>Select in top menu: Cell -> Run All</li>
|
||
</ul>
|
||
|
||
<p>That’s it! The included code will walk you through importing the required libraries, show running raw SQL against your local database, plotting basic data from the states table, and in the end output a few plots of changes for every entity in your system as well as the mean daily value for the past 20 days.</p>
|
||
|
||
<p>After just those few steps, you will be greeted with beautiful formatted data like this:</p>
|
||
|
||
<p class="img">
|
||
<img src="https://home-assistant.io/images/blog/2016-07-data-exploration/graph.png" />
|
||
One of the graphs created with this tutorial.
|
||
</p>
|
||
|
||
<h4><a class="title-link" name="whats-next" href="#whats-next"></a> What’s next?</h4>
|
||
|
||
<p>Thanks to the magic of Jupyter, all of the code is customizable: want to selectively display your data, only covering a specific entity? Sure thing! Want to change the properties of the plots? No problem!</p>
|
||
|
||
<p>While you learn and explore your IoT data, we will be working on providing more ready-to-use Jupyter Notebooks. Feel free to ask questions or provide suggestions. Would you like to see a specific visualization? Is there a particular facet of data you’re interested in? Let’s talk about it, let’s dive into the world of data together!</p>
|
||
]]></content>
|
||
</entry>
|
||
|
||
</feed>
|