From 4bedc7a4cc76237da79944c2fd47b87b69e25c4c Mon Sep 17 00:00:00 2001 From: Travis CI Date: Sat, 11 Feb 2017 22:50:44 +0000 Subject: [PATCH] Site updated at 2017-02-11 22:50:44 UTC --- atom.xml | 224 +++++---- blog/2014/12/18/website-launched/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2015/01/13/nest-in-da-house/index.html | 12 +- blog/2015/01/24/release-notes/index.html | 12 +- .../2015/02/08/looking-at-the-past/index.html | 12 +- blog/2015/02/24/streaming-updates/index.html | 12 +- .../index.html | 12 +- blog/2015/03/08/new-logo/index.html | 12 +- blog/2015/03/11/release-notes/index.html | 12 +- blog/2015/03/22/release-notes/index.html | 12 +- blog/2015/04/25/release-notes/index.html | 12 +- .../05/09/utc-time-zone-awareness/index.html | 12 +- blog/2015/05/14/release-notes/index.html | 12 +- blog/2015/06/10/release-notes/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../13/home-assistant-meets-ifttt/index.html | 12 +- .../index.html | 12 +- .../alarm-sonos-and-itunes-support/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../11/22/survey-november-2015/index.html | 12 +- .../12/05/community-highlights/index.html | 12 +- .../index.html | 12 +- .../12/07/influxdb-and-grafana/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../01/19/perfect-home-automation/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../multi-room-audio-with-snapcast/index.html | 12 +- .../02/20/community-highlights/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2016/04/07/static-website/index.html | 12 +- .../index.html | 12 +- .../04/17/updated-documentation/index.html | 12 +- .../04/19/to-infinity-and-beyond/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../05/06/open-iot-summit-talk/index.html | 12 +- .../empowering-scripts-and-alexa/index.html | 12 +- .../index.html | 12 +- blog/2016/05/18/why-we-use-polymer/index.html | 12 +- blog/2016/05/21/release-020/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../06/01/community-highlights/index.html | 12 +- .../08/super-fast-web-enocean-lirc/index.html | 12 +- .../home-assistant-at-pycon-2016/index.html | 12 +- .../index.html | 12 +- .../usb-webcams-and-home-assistant/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../sqlalchemy-knx-join-simplisafe/index.html | 12 +- .../19/visualizing-your-iot-data/index.html | 12 +- .../index.html | 12 +- .../esp8266-and-micropython-part1/index.html | 12 +- .../index.html | 12 +- .../03/laundry-automation-update/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- blog/2016/08/16/we-have-apps-now/index.html | 12 +- .../index.html | 12 +- .../index.html | 12 +- .../esp8266-and-micropython-part2/index.html | 12 +- .../notify-group-reload-api-pihole/index.html | 12 +- .../async-sleepiq-emoncms-stocks/index.html | 12 +- .../01/we-have-raspberry-image-now/index.html | 12 +- blog/2016/10/02/hacktoberfest/index.html | 12 +- .../08/hassbian-rest-digital-ocean/index.html | 12 +- .../index.html | 12 +- .../10/25/explaining-the-updater/index.html | 12 +- .../hacktoberfest-influxdb-weather/index.html | 12 +- .../index.html | 12 +- .../12/03/remote-websockets-sonarr/index.html | 12 +- .../index.html | 12 +- blog/2016/12/19/thank-you/index.html | 12 +- .../index.html | 12 +- .../01/14/iss-usps-images-packages/index.html | 12 +- blog/2017/01/18/numbers/index.html | 8 +- .../21/home-assistant-governance/index.html | 12 +- blog/2017/01/28/face-coffee-wink/index.html | 12 +- blog/2017/02/03/babyphone/index.html | 12 +- blog/2017/02/04/hassbian-toybox/index.html | 12 +- .../11/alert-appletv-mqtt-yeelight/index.html | 363 +++++++++++++++ blog/archives/index.html | 44 +- blog/categories/community/atom.xml | 2 +- blog/categories/community/index.html | 12 +- blog/categories/device-tracking/atom.xml | 2 +- blog/categories/device-tracking/index.html | 12 +- blog/categories/esp8266/atom.xml | 2 +- blog/categories/esp8266/index.html | 12 +- blog/categories/how-to/atom.xml | 2 +- blog/categories/how-to/index.html | 12 +- blog/categories/ibeacons/atom.xml | 2 +- blog/categories/ibeacons/index.html | 12 +- blog/categories/internet-of-things/atom.xml | 2 +- blog/categories/internet-of-things/index.html | 12 +- blog/categories/iot-data/atom.xml | 2 +- blog/categories/iot-data/index.html | 12 +- blog/categories/micropython/atom.xml | 2 +- blog/categories/micropython/index.html | 12 +- blog/categories/mqtt/atom.xml | 2 +- blog/categories/mqtt/index.html | 12 +- blog/categories/organisation/atom.xml | 2 +- blog/categories/organisation/index.html | 12 +- blog/categories/owntracks/atom.xml | 2 +- blog/categories/owntracks/index.html | 12 +- blog/categories/presence-detection/atom.xml | 2 +- blog/categories/presence-detection/index.html | 12 +- .../public-service-announcement/atom.xml | 2 +- .../public-service-announcement/index.html | 12 +- blog/categories/release-notes/atom.xml | 310 ++++++++----- blog/categories/release-notes/index.html | 44 +- blog/categories/survey/atom.xml | 2 +- blog/categories/survey/index.html | 12 +- blog/categories/talks/atom.xml | 2 +- blog/categories/talks/index.html | 12 +- blog/categories/technology/atom.xml | 2 +- blog/categories/technology/index.html | 12 +- blog/categories/user-stories/atom.xml | 2 +- blog/categories/user-stories/index.html | 12 +- blog/categories/video/atom.xml | 2 +- blog/categories/video/index.html | 12 +- blog/categories/website/atom.xml | 2 +- blog/categories/website/index.html | 12 +- blog/index.html | 344 ++++++-------- blog/posts/10/index.html | 125 ++--- blog/posts/11/index.html | 58 +++ blog/posts/2/index.html | 242 ++++++++-- blog/posts/3/index.html | 101 ++-- blog/posts/4/index.html | 102 ++-- blog/posts/5/index.html | 117 +++-- blog/posts/6/index.html | 121 ++--- blog/posts/7/index.html | 109 ++--- blog/posts/8/index.html | 104 +++-- blog/posts/9/index.html | 118 ++--- components/alert/index.html | 283 +++++++++++ components/alexa/index.html | 4 +- components/apcupsd/index.html | 3 + components/automation/index.html | 3 + components/binary_sensor.apcupsd/index.html | 5 +- components/binary_sensor.arest/index.html | 5 +- components/binary_sensor.bbb_gpio/index.html | 5 +- components/binary_sensor.bloomsky/index.html | 5 +- .../binary_sensor.command_line/index.html | 5 +- .../binary_sensor.concord232/index.html | 5 +- components/binary_sensor.ecobee/index.html | 5 +- components/binary_sensor.enocean/index.html | 5 +- .../binary_sensor.envisalink/index.html | 5 +- components/binary_sensor.ffmpeg/index.html | 370 +-------------- .../binary_sensor.ffmpeg_motion/index.html | 316 +++++++++++++ .../binary_sensor.ffmpeg_noise/index.html | 302 ++++++++++++ components/binary_sensor.flic/index.html | 5 +- components/binary_sensor.hikvision/index.html | 5 +- components/binary_sensor.homematic/index.html | 5 +- components/binary_sensor.http/index.html | 5 +- components/binary_sensor.iss/index.html | 5 +- components/binary_sensor.isy994/index.html | 5 +- components/binary_sensor.knx/index.html | 5 +- components/binary_sensor.modbus/index.html | 5 +- components/binary_sensor.mqtt/index.html | 5 +- components/binary_sensor.mysensors/index.html | 10 +- components/binary_sensor.nest/index.html | 5 +- components/binary_sensor.netatmo/index.html | 5 +- components/binary_sensor.nx584/index.html | 5 +- components/binary_sensor.octoprint/index.html | 5 +- components/binary_sensor.rest/index.html | 5 +- components/binary_sensor.rpi_gpio/index.html | 5 +- components/binary_sensor.sleepiq/index.html | 5 +- components/binary_sensor.tcp/index.html | 5 +- components/binary_sensor.template/index.html | 5 +- components/binary_sensor.threshold/index.html | 5 +- components/binary_sensor.trend/index.html | 5 +- components/binary_sensor.vera/index.html | 5 +- components/binary_sensor.wink/index.html | 5 +- components/binary_sensor.zigbee/index.html | 5 +- components/binary_sensor.zwave/index.html | 5 +- components/binary_sensor/index.html | 7 +- components/bloomsky/index.html | 3 + components/browser/index.html | 2 +- components/camera.ffmpeg/index.html | 3 - components/climate.ecobee/index.html | 59 ++- components/climate.mysensors/index.html | 5 +- components/climate/index.html | 47 +- components/configurator/index.html | 2 +- components/cover.mysensors/index.html | 3 + components/demo/index.html | 2 +- .../device_sun_light_trigger/index.html | 3 + .../device_tracker.actiontec/index.html | 3 + components/device_tracker.aruba/index.html | 3 + components/device_tracker.asuswrt/index.html | 3 + .../device_tracker.automatic/index.html | 3 + components/device_tracker.bbox/index.html | 3 + .../index.html | 3 + .../index.html | 3 + .../device_tracker.bt_home_hub_5/index.html | 3 + .../device_tracker.cisco_ios/index.html | 3 + components/device_tracker.ddwrt/index.html | 3 + components/device_tracker.fritz/index.html | 3 + .../device_tracker.gpslogger/index.html | 3 + components/device_tracker.icloud/index.html | 3 + .../device_tracker.linksys_ap/index.html | 3 + components/device_tracker.locative/index.html | 3 + components/device_tracker.luci/index.html | 3 + components/device_tracker.mqtt/index.html | 3 + .../device_tracker.mysensors/index.html | 397 ++++++++++++++++ components/device_tracker.netgear/index.html | 3 + .../device_tracker.nmap_tracker/index.html | 3 + .../device_tracker.owntracks/index.html | 3 + components/device_tracker.ping/index.html | 3 + components/device_tracker.sky_hub/index.html | 3 + components/device_tracker.snmp/index.html | 4 + components/device_tracker.swisscom/index.html | 3 + components/device_tracker.tado/index.html | 3 + components/device_tracker.thomson/index.html | 3 + components/device_tracker.tomato/index.html | 3 + components/device_tracker.tplink/index.html | 3 + components/device_tracker.trackr/index.html | 3 + components/device_tracker.ubus/index.html | 3 + components/device_tracker.unifi/index.html | 3 + .../device_tracker.upc_connect/index.html | 3 + .../device_tracker.volvooncall/index.html | 3 + components/device_tracker.xiaomi/index.html | 3 + components/device_tracker/index.html | 3 + components/digital_ocean/index.html | 3 + components/discovery/index.html | 2 +- components/ecobee/index.html | 3 + components/emulated_hue/index.html | 3 + components/enocean/index.html | 3 + components/feedreader/index.html | 2 +- components/ffmpeg/index.html | 6 +- components/frontend/index.html | 2 +- components/ha/index.html | 12 +- components/hdmi_cec/index.html | 9 + components/homematic/index.html | 44 +- components/http/index.html | 2 +- components/ifttt/index.html | 3 + .../index.html | 200 ++++++++ .../index.html | 20 +- .../index.html | 5 +- .../index.html | 5 +- components/image_processing/index.html | 19 +- components/index.html | 438 ++++++++++++++---- components/input_boolean/index.html | 3 + components/input_select/index.html | 3 + components/input_slider/index.html | 3 + components/insteon_hub/index.html | 3 + components/insteon_local/index.html | 3 + components/introduction/index.html | 2 +- components/isy994/index.html | 3 + components/joaoapps_join/index.html | 3 + components/keyboard/index.html | 3 + components/keyboard_remote/index.html | 2 +- components/light.avion/index.html | 3 + components/light.blinksticklight/index.html | 3 + components/light.decora/index.html | 3 + components/light.enocean/index.html | 3 + components/light.flux_led/index.html | 3 + components/light.homematic/index.html | 3 + components/light.hue/index.html | 11 +- components/light.hyperion/index.html | 3 + components/light.insteon_hub/index.html | 3 + components/light.insteon_local/index.html | 3 + components/light.isy994/index.html | 3 + components/light.lifx/index.html | 3 + components/light.limitlessled/index.html | 3 + components/light.litejet/index.html | 3 + components/light.mqtt/index.html | 3 + components/light.mqtt_json/index.html | 3 + components/light.mqtt_template/index.html | 3 + components/light.mysensors/index.html | 28 +- components/light.osramlightify/index.html | 3 + components/light.piglow/index.html | 3 + components/light.qwikswitch/index.html | 3 + components/light.rflink/index.html | 376 +++++++++++++++ components/light.rfxtrx/index.html | 3 + components/light.scsgate/index.html | 3 + components/light.tellstick/index.html | 3 + components/light.tikteck/index.html | 3 + components/light.vera/index.html | 3 + components/light.wemo/index.html | 3 + components/light.wink/index.html | 3 + components/light.x10/index.html | 3 + components/light.yeelight/index.html | 3 + components/light.zengge/index.html | 3 + components/light.zigbee/index.html | 3 + components/light.zwave/index.html | 3 + components/light/index.html | 3 + components/lirc/index.html | 3 + components/litejet/index.html | 3 + components/lock.isy994/index.html | 3 + components/lock.mqtt/index.html | 3 + components/lock.nuki/index.html | 216 +++++++++ components/lock.vera/index.html | 3 + components/lock.verisure/index.html | 3 + components/lock.wink/index.html | 3 + components/lock.zwave/index.html | 3 + components/lock/index.html | 3 + components/logger/index.html | 2 +- components/lutron/index.html | 29 +- components/media_player.anthemav/index.html | 6 + components/media_player.apple_tv/index.html | 312 +++++++++++++ components/media_player.aquostv/index.html | 6 + components/media_player.braviatv/index.html | 6 + components/media_player.cast/index.html | 6 + components/media_player.cmus/index.html | 6 + components/media_player.denon/index.html | 6 + components/media_player.directv/index.html | 6 + components/media_player.dunehd/index.html | 6 + components/media_player.emby/index.html | 6 + components/media_player.firetv/index.html | 6 + components/media_player.gpmdp/index.html | 6 + components/media_player.itunes/index.html | 6 + components/media_player.kodi/index.html | 6 + components/media_player.lg_netcast/index.html | 6 + .../media_player.liveboxplaytv/index.html | 304 ++++++++++++ components/media_player.mpchc/index.html | 6 + components/media_player.mpd/index.html | 6 + components/media_player.nad/index.html | 6 + components/media_player.onkyo/index.html | 6 + .../media_player.panasonic_viera/index.html | 6 + components/media_player.pandora/index.html | 6 + components/media_player.philips_js/index.html | 6 + components/media_player.pioneer/index.html | 6 + components/media_player.plex/index.html | 6 + components/media_player.roku/index.html | 6 + .../media_player.russound_rnet/index.html | 6 + components/media_player.samsungtv/index.html | 6 + components/media_player.snapcast/index.html | 6 + components/media_player.sonos/index.html | 6 + components/media_player.soundtouch/index.html | 6 + components/media_player.squeezebox/index.html | 6 + components/media_player.universal/index.html | 6 + components/media_player.vlc/index.html | 6 + components/media_player.webostv/index.html | 8 + components/media_player.yamaha/index.html | 6 + components/media_player/index.html | 6 + components/microsoft_face/index.html | 3 + components/mochad/index.html | 3 + components/modbus/index.html | 3 + components/mqtt/index.html | 25 +- components/mqtt_eventstream/index.html | 2 +- components/mysensors/index.html | 6 + components/neato/index.html | 3 + components/nest/index.html | 3 + components/netatmo/index.html | 3 + components/notify.apns/index.html | 3 + components/notify.aws_lambda/index.html | 3 + components/notify.aws_sns/index.html | 3 + components/notify.aws_sqs/index.html | 3 + components/notify.command_line/index.html | 3 + components/notify.discord/index.html | 3 + components/notify.ecobee/index.html | 3 + components/notify.facebook/index.html | 26 ++ components/notify.file/index.html | 3 + components/notify.free_mobile/index.html | 3 + components/notify.gntp/index.html | 3 + components/notify.group/index.html | 3 + components/notify.html5/index.html | 27 ++ components/notify.instapush/index.html | 3 + components/notify.joaoapps_join/index.html | 3 + components/notify.kodi/index.html | 3 + components/notify.lannouncer/index.html | 3 + .../notify.llamalab_automate/index.html | 3 + components/notify.mailgun/index.html | 338 ++++++++++++++ components/notify.matrix/index.html | 3 + components/notify.message_bird/index.html | 3 + components/notify.mqtt/index.html | 3 + components/notify.mysensors/index.html | 6 + components/notify.nfandroidtv/index.html | 3 + components/notify.nma/index.html | 3 + components/notify.pushbullet/index.html | 3 + components/notify.pushetta/index.html | 3 + components/notify.pushover/index.html | 3 + components/notify.rest/index.html | 3 + components/notify.sendgrid/index.html | 3 + components/notify.simplepush/index.html | 3 + components/notify.slack/index.html | 3 + components/notify.smtp/index.html | 3 + components/notify.syslog/index.html | 3 + components/notify.telegram/index.html | 3 + components/notify.telstra/index.html | 3 + components/notify.twilio_call.markdown | 61 +++ components/notify.twilio_sms/index.html | 3 + components/notify.twitter/index.html | 3 + components/notify.webostv/index.html | 5 + components/notify.xmpp/index.html | 3 + components/notify/index.html | 3 + components/nuimo_controller/index.html | 3 + components/octoprint/index.html | 3 + components/persistent_notification/index.html | 2 +- components/pilight/index.html | 3 + components/proximity/index.html | 3 + components/qwikswitch/index.html | 3 + components/rest_command/index.html | 3 + components/rflink/index.html | 375 +++++++++++++++ components/rfxtrx/index.html | 3 + components/script/index.html | 3 + components/scsgate/index.html | 3 + components/sensor.amcrest/index.html | 9 + components/sensor.apcupsd/index.html | 9 + components/sensor.api_stream/index.html | 9 + components/sensor.arest/index.html | 9 + components/sensor.arwn/index.html | 9 + components/sensor.bbox/index.html | 9 + components/sensor.bloomsky/index.html | 9 + components/sensor.bom/index.html | 3 + components/sensor.broadlink/index.html | 9 + components/sensor.command_line/index.html | 9 + components/sensor.darksky/index.html | 3 + components/sensor.dweet/index.html | 9 + components/sensor.emoncms/index.html | 9 + components/sensor.enocean/index.html | 9 + components/sensor.envisalink/index.html | 9 + components/sensor.gpsd/index.html | 9 + components/sensor.haveibeenpwned/index.html | 9 + components/sensor.homematic/index.html | 9 + components/sensor.http/index.html | 13 +- components/sensor.imap/index.html | 9 + .../sensor.imap_email_content/index.html | 9 + components/sensor.influxdb/index.html | 9 + components/sensor.isy994/index.html | 9 + components/sensor.mfi/index.html | 9 + components/sensor.mhz19/index.html | 9 + components/sensor.miflora/index.html | 1 + components/sensor.min_max/index.html | 9 + components/sensor.modbus/index.html | 9 + components/sensor.moldindicator/index.html | 9 + components/sensor.moon/index.html | 210 +++++++++ components/sensor.mqtt/index.html | 9 + components/sensor.mqtt_room/index.html | 3 + components/sensor.mysensors/index.html | 82 +++- components/sensor.neato/index.html | 9 + components/sensor.nest/index.html | 9 + components/sensor.nest_weather/index.html | 3 + components/sensor.netatmo/index.html | 3 + components/sensor.nut/index.html | 9 + components/sensor.octoprint/index.html | 9 + components/sensor.onewire/index.html | 9 + components/sensor.openevse/index.html | 362 +++++++++++++++ components/sensor.openweathermap/index.html | 4 + components/sensor.pilight/index.html | 9 + components/sensor.plex/index.html | 6 + components/sensor.qnap/index.html | 389 ++++++++++++++++ components/sensor.random/index.html | 9 + components/sensor.rest/index.html | 9 + components/sensor.rflink/index.html | 409 ++++++++++++++++ components/sensor.rfxtrx/index.html | 9 + components/sensor.scrape/index.html | 9 + components/sensor.sensehat/index.html | 9 + components/sensor.sleepiq/index.html | 9 + components/sensor.sonarr/index.html | 9 + components/sensor.statistics/index.html | 9 + .../sensor.swiss_hydrological_data/index.html | 3 + components/sensor.synologydsm/index.html | 9 + components/sensor.systemmonitor/index.html | 13 +- components/sensor.tcp/index.html | 9 + components/sensor.tellduslive/index.html | 9 + components/sensor.tellstick/index.html | 9 + components/sensor.temper/index.html | 9 + components/sensor.template/index.html | 25 + components/sensor.thinkingcleaner/index.html | 9 + components/sensor.usps/index.html | 9 + components/sensor.vera/index.html | 9 + components/sensor.verisure/index.html | 9 + components/sensor.wink/index.html | 9 + components/sensor.wunderground/index.html | 3 + components/sensor.yr/index.html | 3 + components/sensor.yweather/index.html | 3 + components/sensor.zamg/index.html | 3 + components/sensor.zigbee/index.html | 9 + components/sensor.zoneminder/index.html | 9 + components/sensor.zwave/index.html | 9 + components/sensor/index.html | 12 + components/shell_command/index.html | 3 + components/sleepiq/index.html | 3 + components/sun/index.html | 3 + components/switch.acer_projector/index.html | 6 + components/switch.anel_pwrctrl/index.html | 6 + components/switch.arest/index.html | 6 + components/switch.bbb_gpio/index.html | 6 + components/switch.broadlink/index.html | 40 ++ components/switch.command_line/index.html | 6 + components/switch.digital_ocean/index.html | 6 + components/switch.digitalloggers/index.html | 6 + components/switch.dlink/index.html | 6 + components/switch.edimax/index.html | 6 + components/switch.enocean/index.html | 6 + components/switch.flux/index.html | 3 + components/switch.fritzdect/index.html | 344 ++++++++++++++ components/switch.hikvision/index.html | 6 + components/switch.homematic/index.html | 6 + components/switch.hook/index.html | 6 + components/switch.insteon_local/index.html | 6 + components/switch.isy994/index.html | 6 + components/switch.kankun/index.html | 6 + components/switch.litejet/index.html | 6 + components/switch.mfi/index.html | 6 + components/switch.mochad/index.html | 6 + components/switch.modbus/index.html | 6 + components/switch.mqtt/index.html | 6 + components/switch.mysensors/index.html | 11 +- components/switch.mystrom/index.html | 6 + components/switch.neato/index.html | 6 + components/switch.netio/index.html | 6 + components/switch.orvibo/index.html | 6 + components/switch.pilight/index.html | 6 + .../switch.pulseaudio_loopback/index.html | 6 + components/switch.qwikswitch/index.html | 6 + components/switch.rest/index.html | 6 + components/switch.rflink/index.html | 398 ++++++++++++++++ components/switch.rfxtrx/index.html | 6 + components/switch.rpi_gpio/index.html | 6 + components/switch.rpi_rf/index.html | 6 + components/switch.scsgate/index.html | 6 + components/switch.tellduslive/index.html | 6 + components/switch.tellstick/index.html | 6 + components/switch.template/index.html | 6 + components/switch.thinkingcleaner/index.html | 6 + components/switch.tplink/index.html | 6 + components/switch.vera/index.html | 6 + components/switch.verisure/index.html | 6 + components/switch.wake_on_lan/index.html | 6 + components/switch.wemo/index.html | 6 + components/switch.wink/index.html | 6 + components/switch.zigbee/index.html | 6 + components/switch.zoneminder/index.html | 6 + components/switch.zwave/index.html | 6 + components/switch/index.html | 6 + components/tellduslive/index.html | 3 + components/tellstick/index.html | 3 + components/updater/index.html | 2 +- components/upnp/index.html | 2 +- components/vera/index.html | 3 + components/verisure/index.html | 3 + components/weather.bom/index.html | 3 + components/weather.openweathermap/index.html | 3 + components/wemo/index.html | 3 + components/wink/index.html | 3 + components/zeroconf/index.html | 2 +- components/zwave/index.html | 3 + .../automation_flashing_lights/index.html | 2 +- cookbook/custom_panel_using_react/index.html | 3 + cookbook/custom_ui_by_andrey-git/index.html | 162 +++++++ cookbook/google_maps_card/index.html | 3 + cookbook/index.html | 3 + developers/add_new_platform/index.html | 1 + developers/architecture/index.html | 1 + developers/architecture_components/index.html | 1 + developers/asyncio/index.html | 1 + .../asyncio_categorizing_functions/index.html | 1 + developers/asyncio_misc/index.html | 1 + .../asyncio_working_with_async/index.html | 1 + developers/cla/index.html | 1 + developers/cla_sign/index.html | 1 + developers/cla_sign_start/index.html | 1 + developers/code_of_conduct/index.html | 1 + developers/code_review_component/index.html | 1 + developers/code_review_platform/index.html | 1 + developers/component_deps_and_reqs/index.html | 1 + developers/component_discovery/index.html | 1 + developers/component_events/index.html | 1 + .../component_generic_discovery/index.html | 1 + .../component_initialization/index.html | 1 + developers/component_loading/index.html | 1 + developers/component_states/index.html | 1 + developers/component_visibility/index.html | 1 + developers/creating_components/index.html | 1 + developers/credits/index.html | 295 +++++++----- developers/development/index.html | 1 + developers/development_catching_up/index.html | 1 + developers/development_checklist/index.html | 1 + developers/development_environment/index.html | 1 + developers/development_submitting/index.html | 1 + developers/development_testing/index.html | 1 + developers/development_validation/index.html | 1 + developers/frontend/index.html | 1 + developers/frontend_add_card/index.html | 1 + developers/frontend_add_more_info/index.html | 1 + .../index.html | 1 + .../frontend_creating_custom_ui/index.html | 256 ++++++++++ developers/helpers/index.html | 1 + developers/index.html | 1 + developers/license/index.html | 1 + developers/maintenance/index.html | 1 + developers/multiple_instances/index.html | 1 + developers/platform_example_light/index.html | 1 + developers/platform_example_sensor/index.html | 1 + developers/python_api/index.html | 1 + developers/releasing/index.html | 1 + developers/rest_api/index.html | 1 + developers/server_sent_events/index.html | 1 + developers/website/index.html | 1 + developers/websocket_api/index.html | 1 + ecosystem/ios/index.html | 2 +- ecosystem/ios/notifications/index.html | 14 +- images/blog/2017-02-0.38/social.png | Bin 0 -> 113811 bytes images/supported_brands/apple.png | Bin 0 -> 3576 bytes images/supported_brands/mailgun.png | Bin 0 -> 33218 bytes images/supported_brands/nuki.png | Bin 0 -> 3929 bytes images/supported_brands/openevse.png | Bin 0 -> 12257 bytes images/supported_brands/orange.png | Bin 0 -> 8017 bytes images/supported_brands/qnap.png | Bin 0 -> 23115 bytes images/supported_brands/rflink.png | Bin 0 -> 3920 bytes index.html | 16 +- sitemap.xml | 90 +++- topics/templating/index.html | 2 + version.json | 18 +- 627 files changed, 11192 insertions(+), 2416 deletions(-) create mode 100644 blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html create mode 100644 components/alert/index.html create mode 100644 components/binary_sensor.ffmpeg_motion/index.html create mode 100644 components/binary_sensor.ffmpeg_noise/index.html create mode 100644 components/device_tracker.mysensors/index.html create mode 100644 components/image_processing.microsoft_face_detect/index.html create mode 100644 components/light.rflink/index.html create mode 100644 components/lock.nuki/index.html create mode 100644 components/media_player.apple_tv/index.html create mode 100644 components/media_player.liveboxplaytv/index.html create mode 100644 components/notify.mailgun/index.html create mode 100644 components/notify.twilio_call.markdown create mode 100644 components/rflink/index.html create mode 100644 components/sensor.moon/index.html create mode 100644 components/sensor.openevse/index.html create mode 100644 components/sensor.qnap/index.html create mode 100644 components/sensor.rflink/index.html create mode 100644 components/switch.fritzdect/index.html create mode 100644 components/switch.rflink/index.html create mode 100644 cookbook/custom_ui_by_andrey-git/index.html create mode 100644 developers/frontend_creating_custom_ui/index.html create mode 100644 images/blog/2017-02-0.38/social.png create mode 100644 images/supported_brands/apple.png create mode 100644 images/supported_brands/mailgun.png create mode 100644 images/supported_brands/nuki.png create mode 100644 images/supported_brands/openevse.png create mode 100644 images/supported_brands/orange.png create mode 100644 images/supported_brands/qnap.png create mode 100644 images/supported_brands/rflink.png diff --git a/atom.xml b/atom.xml index 1434fb77cc..8b0353fdf6 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ @@ -13,6 +13,127 @@ Octopress + + <![CDATA[0.38: Alert, AppleTV, MQTT discovery, and Yeelight]]> + + 2017-02-11T08:04:05+00:00 + https://home-assistant.io/blog/2017/02/11/alert-appletv-mqtt-yeelight + Another Saturday, another release!

+ +

Core updates

+
    +
  • +

    Thanks to @pvizeli, all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code!

    +
  • +
  • +

    Now when you restart Home Assistant using the homeassistant.restart service, your configuration is checked. If it appears to be invalid the restart will fail.

    +
  • +
+ +

Rewritten frontend

+

The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new WebSockets API instead of the EventStream API.

+ +

Custom state card UI

+

A nice new feature is the possibility to create custom state cards in the frondend. Go ahead and write your own state card for lights, sensors, locks, etc.

+ +

MQTT discovery

+

MQTT now has discovery support which is different than our discovery component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant.

+ +

Alert component

+

If you left your front door open, then the new alert component can be used to remind you of this by sending you repeating notifications at a given interval.

+ +

Yeelight

+

The yeelight component has been ported to use a more stable and feature-complete python-yeelight backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our issue tracker.

+ +

Apple TV

+

Apple TV is now a supported media_player! It has support for just about every media player function, including a realtime display of playback status and artwork.

+ +

All changes

+

New platforms/components

+ + + +

Improvements

+ +
    +
  • Switch - Pilight: Validation no longer rejects alphanumeric IDs (@DavidLP)
  • +
  • Device tracker - ASUSWrt: Fixes ip neigh regex to handle the possible IPv6 “router” flag (@kylehendricks)
  • +
  • Light - MySensors: Fix mysensors RGB and W light turn on (@MartinHjelmare)
  • +
  • Light - Yeelight: new yeelight backend lib, new features (@rytilahti)
  • +
  • Climate - Eq3btsmart: Cleanup modes & available, bump version requirement (@rytilahti)
  • +
  • Sensor - SMA: Handle units correctly (@kellerza)
  • +
  • MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams (@aequitas)
  • +
  • Light - Hue: Fix lightgroups not syncing state (@tboyce1)
  • +
  • Dvice tracker - Owntracks: Fix OwnTracks state names (@tboyce1)
  • +
  • Wink: Wink AC and additional sensor support (@w1ll1am23)
  • +
  • Modbus: Modbus write_register accept list (@benvm)
  • +
  • Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS (@michaelarnauts)
  • +
  • Climate - Ecobee: Cleanup climate and ecobee (@Duoxilian)
  • +
  • Sensor - Miflora: Allow specification of bluetooth adapter (@Danielhiversen)
  • +
  • Sensor - Systemmonitor: Add average load to systemmonitor (@eagleamon)
  • +
  • Sensor - Openweathermap: Add wind bearing (@fabaff)
  • +
  • Notify - Facebook: Allow to use data for enhanced messages (@adrianlzt)
  • +
  • Light - Hyperion: Change CONF_DEFAULT_COLOR CV type (@Joeboyc2)
  • +
  • Mysensors: Fix validation of serial port on windows (@MartinHjelmare)
  • +
  • Notify - Webostv: Store the key file in the configuration directory (@pschmitt)
  • +
  • TTS: TTS ID3 support (@robbiet480)
  • +
  • Switch - Broadlink: Add send packet service (@Yannic-HAW)
  • +
  • Wink: Add support for position on Wink cover (@albertoarias)
  • +
  • Light - Flux: Make brightness display work for RGB devices. (@aequitas)
  • +
  • Media player - Roku: Fix attribute error for media_player/roku (@tchellomello)
  • +
  • Light - MQTT template: Fix brightness slider for MQTT template lights (@ray0711)
  • +
  • Template: Add min and max Jinja2 filters (@sbidoul)
  • +
  • Device tracker - Skyhub: Improve Sky Hub error handling (@alexmogavero)
  • +
  • Notify - SMTP: Add error checking to the MIMEImage encoding (@stratosmacker)
  • +
  • Light - MQTT: Check for command topics when determining the capabilities of an MQTT light (@herm)
  • +
  • Core: Check config before restarting (@andrey-git)
  • +
  • Light - Hue: Fix groups with same names (@tboyce1)
  • +
  • Template: Add icon_template to template sensor (@tboyce1)
  • +
  • Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions (@kellerza)
  • +
  • Light - Flux: Add support for fluxled discovery. (@aequitas)
  • +
  • Media player - AppleTV: Add discovery support to Apple TV (@postlund)
  • +
  • Sensor - Template: Improve warning message in template rendering (@Danielhiversen)
  • +
  • Light - Demo: Add available property and typing hints (@rytilahti)
  • +
  • Sensor - ARWN: Enhancements to ARWN platform (@sdague)
  • +
  • Fan - ISY994: Change medium state for filtering (@Teagan42)
  • +
  • Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. (@Duoxilian)
  • +
  • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
  • +
  • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
  • +
  • Image processing: Cleanup Base face class add support for microsoft face detect (@pvizeli)
  • +
+ +

Bugfixes: @balloob, @fabaff, @pvizeli, @mnoorenberghe, @armills, @tchellomello, @aequitas, @mathewpeterson, @molobrakos, @michaelarnauts, @jabesq, @turbokongen, @JshWright, @andriej, @jawilson, @andrey-git, @nodinosaur, @konikvranik, and you if you are missing here.

+ +

Breaking changes

+
    +
  • The support for LG webOS Smart TVs was improved. This requires you to move $HOME/.pylgtv to $HASS_CONFIG_DIR/webostv.conf or Home Assistant will need to be paired with the TV again.
  • +
  • Image processing events have been renamed: identify_face has become image_processing.detect_face, found_plate has become image_processing.found_plate
  • +
  • The FFmpeg binary sensor change the platform name from ffmpeg to ffmpeg_noise and ffmpeg_motion. Also all FFmpeg-related services are moved from a platform implementation to a the FFmpeg components and were rename from binary_sensor.ffmpeg_xy to ffmpeg.xy.
  • +
+ +

If you need help…

+

…don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

+ +

Reporting Issues

+

Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

+ +]]>
+
+ <![CDATA[HASSbian 1.1 - The Toy-box]]> @@ -1960,107 +2081,6 @@ You have to note:

If you need help…

…don’t hesitate to use our Forum or join us for a little chat.

-]]> -
- - - <![CDATA[ESP8266 and MicroPython - Part 2]]> - - 2016-08-31T04:17:25+00:00 - https://home-assistant.io/blog/2016/08/31/esp8266-and-micropython-part2 - -So, part 1 of ESP8266 and MicroPython 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.

- - - -

Beside HTTP POST requests, MQTT is the quickest way (from the author’s point of view) to publish information with DIY devices.

- -

You have to make a decision: Do you want to pull or to poll the information for the sensor? 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 in Home Assistant or it could be missed. This means the sensor must take initiative and send the data to Home Assistant.

- -

An example for pulling is aREST. This is a great way to work with the ESP8266 based units and the Ardunio IDE.

- -

MQTT

- -

You can find a simple examples for publishing and subscribing with MQTT in the MicroPython library overview in the section for umqtt.

- -

The example below is adopted from the work of @davea 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 /config.json which stores the configuration details. The ESP8266 device will send the value of a pin every 5 seconds.

- -
import machine
-import time
-import ubinascii
-import webrepl
-
-from umqtt.simple import MQTTClient
-
-# These defaults are overwritten with the contents of /config.json by load_config()
-CONFIG = {
-    "broker": "192.168.1.19",
-    "sensor_pin": 0, 
-    "client_id": b"esp8266_" + ubinascii.hexlify(machine.unique_id()),
-    "topic": b"home",
-}
-
-client = None
-sensor_pin = None
-
-def setup_pins():
-    global sensor_pin
-    sensor_pin = machine.ADC(CONFIG['sensor_pin'])
-
-def load_config():
-    import ujson as json
-    try:
-        with open("/config.json") as f:
-            config = json.loads(f.read())
-    except (OSError, ValueError):
-        print("Couldn't load /config.json")
-        save_config()
-    else:
-        CONFIG.update(config)
-        print("Loaded config from /config.json")
-
-def save_config():
-    import ujson as json
-    try:
-        with open("/config.json", "w") as f:
-            f.write(json.dumps(CONFIG))
-    except OSError:
-        print("Couldn't save /config.json")
-
-def main():
-    client = MQTTClient(CONFIG['client_id'], CONFIG['broker'])
-    client.connect()
-    print("Connected to {}".format(CONFIG['broker']))
-    while True:
-        data = sensor_pin.read()
-        client.publish('{}/{}'.format(CONFIG['topic'],
-                                          CONFIG['client_id']),
-                                          bytes(str(data), 'utf-8'))
-        print('Sensor state: {}'.format(data))
-        time.sleep(5)
-
-if __name__ == '__main__':
-    load_config()
-    setup_pins()
-    main()
-
-
- -

Subscribe to the topic home/# or create a MQTT sensor to check if the sensor values are published.

- -
$ mosquitto_sub -h 192.168.1.19 -v -t "home/#"
-
-
- -
sensor:
-  - platform: mqtt
-    state_topic: "home/esp8266_[last part of the MAC address]"
-    name: "MicroPython"
-
-
- -

@davea created sonoff-mqtt. This code will work on ESP8622 based devices too and shows how to use a button to control a relay.

- ]]>
diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index 8c23141c31..732cb0e909 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -170,6 +170,12 @@ diff --git a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html index c9301a8316..24eaaf4ca4 100644 --- a/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html +++ b/blog/2014/12/26/home-control-home-automation-and-the-smart-home/index.html @@ -225,6 +225,12 @@ This article will try to explain how they all relate.

diff --git a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html index 93a3fc2b59..7cbd3b17dc 100644 --- a/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html +++ b/blog/2015/01/04/hey-pushbullet-nice-talking-to-you/index.html @@ -205,6 +205,12 @@ diff --git a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html index 78346397fd..523ed0888d 100644 --- a/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html +++ b/blog/2015/01/11/bootstrapping-your-setup-with-discovery/index.html @@ -182,6 +182,12 @@ diff --git a/blog/2015/01/13/nest-in-da-house/index.html b/blog/2015/01/13/nest-in-da-house/index.html index 53e3502060..d3d9d89ac3 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -185,6 +185,12 @@ diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index 7d6173a722..3fd1f71ed6 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -193,6 +193,12 @@ Home Assistant now supports --open-ui and diff --git a/blog/2015/02/08/looking-at-the-past/index.html b/blog/2015/02/08/looking-at-the-past/index.html index 6de8ee639a..69b8981734 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -201,6 +201,12 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index a8574ed8f9..0d94f8b458 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -186,6 +186,12 @@ diff --git a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html index 6c1a523b52..225c458397 100644 --- a/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html +++ b/blog/2015/03/01/home-assistant-migrating-to-yaml/index.html @@ -176,6 +176,12 @@ diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index e1455445be..126836f9e0 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -177,6 +177,12 @@ The old logo, the new detailed logo and the new simple logo. diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index 661f1b0dad..facdf28b6a 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -210,6 +210,12 @@ An initial version of voice control for Home Assistant has landed. The current i diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 95ad6b9cad..0236f85686 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -245,6 +245,12 @@ I (Paulus) have contributed a scene component. A user can create scenes that cap diff --git a/blog/2015/04/25/release-notes/index.html b/blog/2015/04/25/release-notes/index.html index 9ad24faf95..a0ee28f0f7 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -256,6 +256,12 @@ diff --git a/blog/2015/05/09/utc-time-zone-awareness/index.html b/blog/2015/05/09/utc-time-zone-awareness/index.html index ecd3bb5c9e..e5ea6c5770 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -197,6 +197,12 @@ diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index c0bfa60417..7950028417 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -277,6 +277,12 @@ Before diving into the newly supported devices and services, I want to highlight diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index 4f0c85207e..56fd82b8bf 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -328,6 +328,12 @@ This switch platform allows you to control your motion detection setting on your diff --git a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html index c551579fa9..d007bd4b19 100644 --- a/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html +++ b/blog/2015/07/11/ip-cameras-arduino-kodi-efergy-support/index.html @@ -284,6 +284,12 @@ Fabian has added support for Forecast.io to g diff --git a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html index 9c3a53ae4c..3e33e67847 100644 --- a/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html +++ b/blog/2015/08/09/mqtt-raspberry-pi-squeezebox-asuswrt-support/index.html @@ -269,6 +269,12 @@ Support for Temper temperature sensors has been contributed by +
  • + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +
  • + + +
  • HASSbian 1.1 - The Toy-box
  • @@ -292,12 +298,6 @@ Support for Temper temperature sensors has been contributed by - Numbers - - - diff --git a/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html index 796a56f8de..9682b842a2 100644 --- a/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html +++ b/blog/2015/08/17/verisure-and-modern-tp-link-router-support/index.html @@ -193,6 +193,12 @@ diff --git a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html index ddabf830bb..a363e821cf 100644 --- a/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html +++ b/blog/2015/08/26/laundry-automation-with-moteino-mqtt-and-home-assistant/index.html @@ -306,6 +306,12 @@ The automation and script syntax here is using a deprecated and no longer suppor diff --git a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html index 9f0edc6263..ecb0649244 100644 --- a/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html +++ b/blog/2015/08/31/version-7-revamped-ui-and-improved-distribution/index.html @@ -270,6 +270,12 @@ diff --git a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html index e41cd21769..bc295fa40d 100644 --- a/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html +++ b/blog/2015/09/11/different-ways-to-use-mqtt-with-home-assistant/index.html @@ -361,6 +361,12 @@ diff --git a/blog/2015/09/13/home-assistant-meets-ifttt/index.html b/blog/2015/09/13/home-assistant-meets-ifttt/index.html index 4b7bfce8c9..88812d37f3 100644 --- a/blog/2015/09/13/home-assistant-meets-ifttt/index.html +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -342,6 +342,12 @@ diff --git a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html index 48bac710b9..26c00d0eee 100644 --- a/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html +++ b/blog/2015/09/18/monitoring-with-glances-and-home-assistant/index.html @@ -235,6 +235,12 @@ Glances web server started on http://0.0.0.0:61208/ diff --git a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html index 9c2ccd8da7..d6cf8e3372 100644 --- a/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html +++ b/blog/2015/09/19/alarm-sonos-and-itunes-support/index.html @@ -220,6 +220,12 @@ Automation has gotten a lot of love. It now supports conditions, multiple trigge diff --git a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html index be4f8ef002..f23101faa7 100644 --- a/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html +++ b/blog/2015/10/05/home-assistant-goes-geo-with-owntracks/index.html @@ -200,6 +200,12 @@ Map in Home Assistant showing two people and three zones (home, school, work) diff --git a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html index babbaf0e6a..873d4869a8 100644 --- a/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html +++ b/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/index.html @@ -409,6 +409,12 @@ Home Assistant will keep track of historical values and allow you to integrate i diff --git a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html index a150915bd8..e056b9562e 100644 --- a/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html +++ b/blog/2015/10/11/rfxtrx-blinkstick-and-snmp-support/index.html @@ -189,6 +189,12 @@ diff --git a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html index 22861e537c..6f392bde4e 100644 --- a/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html +++ b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html @@ -211,6 +211,12 @@ This makes more sense as most people run Home Assistant as a daemon

    diff --git a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html index 9a38617380..239413dcf1 100644 --- a/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html +++ b/blog/2015/11/16/zwave-switches-lights-and-honeywell-thermostats-now-supported/index.html @@ -205,6 +205,12 @@ diff --git a/blog/2015/11/22/survey-november-2015/index.html b/blog/2015/11/22/survey-november-2015/index.html index 922084da4c..a8b0567dcf 100644 --- a/blog/2015/11/22/survey-november-2015/index.html +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -247,6 +247,12 @@ diff --git a/blog/2015/12/05/community-highlights/index.html b/blog/2015/12/05/community-highlights/index.html index 70f47cebdd..b4a5dff94f 100644 --- a/blog/2015/12/05/community-highlights/index.html +++ b/blog/2015/12/05/community-highlights/index.html @@ -182,6 +182,12 @@ diff --git a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html index da7abd5471..ab38004505 100644 --- a/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html +++ b/blog/2015/12/06/locks-rollershutters-binary-sensors-and-influxdb-support/index.html @@ -189,6 +189,12 @@ diff --git a/blog/2015/12/07/influxdb-and-grafana/index.html b/blog/2015/12/07/influxdb-and-grafana/index.html index aa3a64a1b7..8b6d0ec51a 100644 --- a/blog/2015/12/07/influxdb-and-grafana/index.html +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -264,6 +264,12 @@ name: binary_sensor diff --git a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html index 26165a4609..1545cdb364 100644 --- a/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html +++ b/blog/2015/12/10/activating-tasker-tasks-from-home-assistant-using-command-line-switches/index.html @@ -226,6 +226,12 @@ This is where we’ll configure our task, so select the plus icon to select an a diff --git a/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html index ee8075bff3..298e9c0474 100644 --- a/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html +++ b/blog/2015/12/12/philips-hue-blocks-3rd-party-bulbs/index.html @@ -202,6 +202,12 @@ Philips Hue FAQ entries regarding 3rd party light bulbs. diff --git a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html index 803bcc1ba4..f969c0074d 100644 --- a/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html +++ b/blog/2015/12/13/setup-encryption-using-lets-encrypt/index.html @@ -261,6 +261,12 @@ sudo docker run -it --rm -p 80:80 --name certbot \ diff --git a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html index 096113612f..f8fab51d59 100644 --- a/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html +++ b/blog/2015/12/22/amazon-echo-icloud-and-templates/index.html @@ -221,6 +221,12 @@ diff --git a/blog/2016/01/17/extended-support-for-diy-solutions/index.html b/blog/2016/01/17/extended-support-for-diy-solutions/index.html index b7280b0d46..bd3a6e3350 100644 --- a/blog/2016/01/17/extended-support-for-diy-solutions/index.html +++ b/blog/2016/01/17/extended-support-for-diy-solutions/index.html @@ -203,6 +203,12 @@ diff --git a/blog/2016/01/19/perfect-home-automation/index.html b/blog/2016/01/19/perfect-home-automation/index.html index 0e06e30268..e9c4970f58 100644 --- a/blog/2016/01/19/perfect-home-automation/index.html +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -207,6 +207,12 @@ diff --git a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html index 1fec30ff0c..1cb70cb644 100644 --- a/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html +++ b/blog/2016/01/30/insteon-lifx-twitter-and-zigbee/index.html @@ -209,6 +209,12 @@ Example of the new views in the frontend. Learn mor diff --git a/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html b/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html index 05b01a4f87..88d7b9cf53 100644 --- a/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html +++ b/blog/2016/02/09/Smarter-Smart-Things-with-MQTT-and-Home-Assistant/index.html @@ -380,6 +380,12 @@ Z-Wave light bulb | diff --git a/blog/2016/02/12/classifying-the-internet-of-things/index.html b/blog/2016/02/12/classifying-the-internet-of-things/index.html index 134a236887..862685b4eb 100644 --- a/blog/2016/02/12/classifying-the-internet-of-things/index.html +++ b/blog/2016/02/12/classifying-the-internet-of-things/index.html @@ -346,6 +346,12 @@ diff --git a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html index db3606425f..cdacecf2c9 100644 --- a/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html +++ b/blog/2016/02/13/speedtest-bloomsky-splunk-and-garage-doors/index.html @@ -212,6 +212,12 @@ diff --git a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html index 6549a288e9..889f724de0 100644 --- a/blog/2016/02/18/multi-room-audio-with-snapcast/index.html +++ b/blog/2016/02/18/multi-room-audio-with-snapcast/index.html @@ -296,6 +296,12 @@ diff --git a/blog/2016/02/20/community-highlights/index.html b/blog/2016/02/20/community-highlights/index.html index 86ec296438..311ea56200 100644 --- a/blog/2016/02/20/community-highlights/index.html +++ b/blog/2016/02/20/community-highlights/index.html @@ -220,6 +220,12 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm. diff --git a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html index 225e3f9d23..eb838231f4 100644 --- a/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html +++ b/blog/2016/02/27/steam-d-link-smart-plugs-and-neurio-energy-sensors/index.html @@ -211,6 +211,12 @@ diff --git a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html index 30a3399858..9df8b5e158 100644 --- a/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html +++ b/blog/2016/03/12/z-wave-pep257-templated-service-calls/index.html @@ -215,6 +215,12 @@ player state attributes. This change affects automations, scripts and scenes. +
  • + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +
  • + + +
  • HASSbian 1.1 - The Toy-box
  • @@ -238,12 +244,6 @@ player state attributes. This change affects automations, scripts and scenes. - -
  • - Numbers -
  • - - diff --git a/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html index 0f7e02cc27..c61b71ba8b 100644 --- a/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html +++ b/blog/2016/03/26/embedded-mqtt-broker-uber-yamaha-growl/index.html @@ -224,6 +224,12 @@ diff --git a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html index 56b4a4a7ab..fbe4c56ebd 100644 --- a/blog/2016/04/05/your-hub-should-be-local-and-open/index.html +++ b/blog/2016/04/05/your-hub-should-be-local-and-open/index.html @@ -180,6 +180,12 @@ diff --git a/blog/2016/04/07/static-website/index.html b/blog/2016/04/07/static-website/index.html index c392ef22cf..82a1f6df12 100644 --- a/blog/2016/04/07/static-website/index.html +++ b/blog/2016/04/07/static-website/index.html @@ -186,6 +186,12 @@ diff --git a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html index 3271778854..d3b29cdb0d 100644 --- a/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html +++ b/blog/2016/04/09/onkyo-panasonic-gtfs-and-config-validation/index.html @@ -194,6 +194,12 @@ diff --git a/blog/2016/04/17/updated-documentation/index.html b/blog/2016/04/17/updated-documentation/index.html index 1d7b1beb43..c9cc8bb776 100644 --- a/blog/2016/04/17/updated-documentation/index.html +++ b/blog/2016/04/17/updated-documentation/index.html @@ -178,6 +178,12 @@ diff --git a/blog/2016/04/19/to-infinity-and-beyond/index.html b/blog/2016/04/19/to-infinity-and-beyond/index.html index d34201cc3a..fde125284c 100644 --- a/blog/2016/04/19/to-infinity-and-beyond/index.html +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -195,6 +195,12 @@ diff --git a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html index 80236d92e9..4ebe111435 100644 --- a/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html +++ b/blog/2016/04/20/bluetooth-lg-webos-tvs-and-roombas/index.html @@ -213,6 +213,12 @@ diff --git a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html index 929b693726..9a3e67049d 100644 --- a/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html +++ b/blog/2016/04/30/ibeacons-part-1-making-presence-detection-work-better/index.html @@ -300,6 +300,12 @@ For example, my wife works next door - and I couldn’t detect whether she’s a diff --git a/blog/2016/05/06/open-iot-summit-talk/index.html b/blog/2016/05/06/open-iot-summit-talk/index.html index 10d4002619..0d01364c04 100644 --- a/blog/2016/05/06/open-iot-summit-talk/index.html +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -176,6 +176,12 @@ diff --git a/blog/2016/05/07/empowering-scripts-and-alexa/index.html b/blog/2016/05/07/empowering-scripts-and-alexa/index.html index e9ceaf8c50..8da18a2c52 100644 --- a/blog/2016/05/07/empowering-scripts-and-alexa/index.html +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -258,6 +258,12 @@ diff --git a/blog/2016/05/12/video-configuring-home-assistant/index.html b/blog/2016/05/12/video-configuring-home-assistant/index.html index 4ba6292632..8da8382a87 100644 --- a/blog/2016/05/12/video-configuring-home-assistant/index.html +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -176,6 +176,12 @@ diff --git a/blog/2016/05/18/why-we-use-polymer/index.html b/blog/2016/05/18/why-we-use-polymer/index.html index a1dfcffe08..8b0d9d40a9 100644 --- a/blog/2016/05/18/why-we-use-polymer/index.html +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -190,6 +190,12 @@ diff --git a/blog/2016/05/21/release-020/index.html b/blog/2016/05/21/release-020/index.html index d0cadb0485..240efa1519 100644 --- a/blog/2016/05/21/release-020/index.html +++ b/blog/2016/05/21/release-020/index.html @@ -209,6 +209,12 @@ diff --git a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html index 344b274094..f8b1996256 100644 --- a/blog/2016/05/22/get-started-with-all-in-one-installer/index.html +++ b/blog/2016/05/22/get-started-with-all-in-one-installer/index.html @@ -180,6 +180,12 @@ diff --git a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html index ca448fbef2..c92bcb5dde 100644 --- a/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html +++ b/blog/2016/05/26/ibeacons-how-to-track-things-that-cant-track-themselves-part-ii/index.html @@ -316,6 +316,12 @@ diff --git a/blog/2016/06/01/community-highlights/index.html b/blog/2016/06/01/community-highlights/index.html index c7526c4753..8585e5b1fe 100644 --- a/blog/2016/06/01/community-highlights/index.html +++ b/blog/2016/06/01/community-highlights/index.html @@ -196,6 +196,12 @@ diff --git a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html index 065fab6f83..5e0b09ee58 100644 --- a/blog/2016/06/08/super-fast-web-enocean-lirc/index.html +++ b/blog/2016/06/08/super-fast-web-enocean-lirc/index.html @@ -230,6 +230,12 @@ diff --git a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html index df54b86e20..217b5009bd 100644 --- a/blog/2016/06/13/home-assistant-at-pycon-2016/index.html +++ b/blog/2016/06/13/home-assistant-at-pycon-2016/index.html @@ -201,6 +201,12 @@ diff --git a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html index 24ee5eb694..1cc41dd41a 100644 --- a/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html +++ b/blog/2016/06/18/pandora-bt-home-hub-5-and-local-file-camera/index.html @@ -223,6 +223,12 @@ diff --git a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html index 4b2a0337c4..803222f32e 100644 --- a/blog/2016/06/23/usb-webcams-and-home-assistant/index.html +++ b/blog/2016/06/23/usb-webcams-and-home-assistant/index.html @@ -277,6 +277,12 @@ target_dir /tmp diff --git a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html index 7f922f5e68..4ed93eb406 100644 --- a/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html +++ b/blog/2016/07/01/envisalink-homematic-hdmi-cec-and-sony-bravia-tv/index.html @@ -224,6 +224,12 @@ diff --git a/blog/2016/07/06/pocketchip-running-home-assistant/index.html b/blog/2016/07/06/pocketchip-running-home-assistant/index.html index d5c654f3ad..163a5f6e14 100644 --- a/blog/2016/07/06/pocketchip-running-home-assistant/index.html +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -219,6 +219,12 @@ Over a year ago I participated in the +
  • + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +
  • + + +
  • HASSbian 1.1 - The Toy-box
  • @@ -242,12 +248,6 @@ Over a year ago I participated in the - Numbers - - - diff --git a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html index 0943d38901..d8bb99b8df 100644 --- a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -219,6 +219,12 @@ diff --git a/blog/2016/07/19/visualizing-your-iot-data/index.html b/blog/2016/07/19/visualizing-your-iot-data/index.html index 7200e91804..747895f103 100644 --- a/blog/2016/07/19/visualizing-your-iot-data/index.html +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -271,6 +271,12 @@ SQLite version 3.11.0 2016-02-15 17:29:24 diff --git a/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html index 54c08a7988..64f5d1f729 100644 --- a/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html +++ b/blog/2016/07/23/internet-of-things-data-exploration-with-jupyter-notebooks/index.html @@ -236,6 +236,12 @@ One of the graphs created with this tutorial. diff --git a/blog/2016/07/28/esp8266-and-micropython-part1/index.html b/blog/2016/07/28/esp8266-and-micropython-part1/index.html index 6739181df2..d63d5bd2ac 100644 --- a/blog/2016/07/28/esp8266-and-micropython-part1/index.html +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -323,6 +323,12 @@ If a module is missing then you need to download it from the +
  • + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +
  • + + +
  • HASSbian 1.1 - The Toy-box
  • @@ -346,12 +352,6 @@ If a module is missing then you need to download it from the - Numbers - - - diff --git a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html index 1f1dd1b628..fe04b98af3 100644 --- a/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html +++ b/blog/2016/07/30/custom-frontend-panels-jupyter-notebooks-directv/index.html @@ -238,6 +238,12 @@ diff --git a/blog/2016/08/03/laundry-automation-update/index.html b/blog/2016/08/03/laundry-automation-update/index.html index ac37a6ca17..bc29f548f6 100644 --- a/blog/2016/08/03/laundry-automation-update/index.html +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -275,6 +275,12 @@ diff --git a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html index 35752db7b4..8ef9e76e36 100644 --- a/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html +++ b/blog/2016/08/07/optimizing-the-home-assistant-mobile-web-app/index.html @@ -311,6 +311,12 @@ diff --git a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html index ccb46c6165..d6e56c9f45 100644 --- a/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html +++ b/blog/2016/08/13/foursquare-fast-com-ffmpeg-gpsd/index.html @@ -237,6 +237,12 @@ diff --git a/blog/2016/08/16/we-have-apps-now/index.html b/blog/2016/08/16/we-have-apps-now/index.html index dc13e33fa2..f4ec577b86 100644 --- a/blog/2016/08/16/we-have-apps-now/index.html +++ b/blog/2016/08/16/we-have-apps-now/index.html @@ -291,6 +291,12 @@ diff --git a/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html b/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html index cb1ab62e93..30074e47a8 100644 --- a/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html +++ b/blog/2016/08/19/github-style-calendar-heatmap-of-device-data/index.html @@ -177,6 +177,12 @@ Heatmap diff --git a/blog/2016/08/28/notifications-hue-fake-unification/index.html b/blog/2016/08/28/notifications-hue-fake-unification/index.html index 93d09ea0ae..d0d1c0a3b2 100644 --- a/blog/2016/08/28/notifications-hue-fake-unification/index.html +++ b/blog/2016/08/28/notifications-hue-fake-unification/index.html @@ -372,6 +372,12 @@ diff --git a/blog/2016/08/31/esp8266-and-micropython-part2/index.html b/blog/2016/08/31/esp8266-and-micropython-part2/index.html index 702120be4b..a19642826c 100644 --- a/blog/2016/08/31/esp8266-and-micropython-part2/index.html +++ b/blog/2016/08/31/esp8266-and-micropython-part2/index.html @@ -267,6 +267,12 @@ So, part 1 of ESP8266 diff --git a/blog/2016/09/10/notify-group-reload-api-pihole/index.html b/blog/2016/09/10/notify-group-reload-api-pihole/index.html index c67e2cba1e..bb887bdc08 100644 --- a/blog/2016/09/10/notify-group-reload-api-pihole/index.html +++ b/blog/2016/09/10/notify-group-reload-api-pihole/index.html @@ -270,6 +270,12 @@ diff --git a/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html b/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html index 1565e0e950..4f98811b94 100644 --- a/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html +++ b/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html @@ -288,6 +288,12 @@ diff --git a/blog/2016/10/01/we-have-raspberry-image-now/index.html b/blog/2016/10/01/we-have-raspberry-image-now/index.html index a00e8ae62a..d36991af30 100644 --- a/blog/2016/10/01/we-have-raspberry-image-now/index.html +++ b/blog/2016/10/01/we-have-raspberry-image-now/index.html @@ -188,6 +188,12 @@ diff --git a/blog/2016/10/02/hacktoberfest/index.html b/blog/2016/10/02/hacktoberfest/index.html index 5a561ec766..23c4e02029 100644 --- a/blog/2016/10/02/hacktoberfest/index.html +++ b/blog/2016/10/02/hacktoberfest/index.html @@ -193,6 +193,12 @@ diff --git a/blog/2016/10/08/hassbian-rest-digital-ocean/index.html b/blog/2016/10/08/hassbian-rest-digital-ocean/index.html index 14eb665d32..a06ec9eec7 100644 --- a/blog/2016/10/08/hassbian-rest-digital-ocean/index.html +++ b/blog/2016/10/08/hassbian-rest-digital-ocean/index.html @@ -296,6 +296,12 @@ diff --git a/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html b/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html index 86d6351895..3e2183d769 100644 --- a/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html +++ b/blog/2016/10/22/flash-briefing-updater-hacktoberfest/index.html @@ -495,6 +495,12 @@ diff --git a/blog/2016/10/25/explaining-the-updater/index.html b/blog/2016/10/25/explaining-the-updater/index.html index 488ad75e32..af98d19736 100644 --- a/blog/2016/10/25/explaining-the-updater/index.html +++ b/blog/2016/10/25/explaining-the-updater/index.html @@ -211,6 +211,12 @@ diff --git a/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html b/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html index aa15ba4700..e79a23d349 100644 --- a/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html +++ b/blog/2016/11/05/hacktoberfest-influxdb-weather/index.html @@ -290,6 +290,12 @@ diff --git a/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html b/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html index 9f6e06cee5..723ef281b1 100644 --- a/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html +++ b/blog/2016/11/20/calendar-wink-thermostats-cisco-ios/index.html @@ -242,6 +242,12 @@ diff --git a/blog/2016/12/03/remote-websockets-sonarr/index.html b/blog/2016/12/03/remote-websockets-sonarr/index.html index b4125998f1..833775070d 100644 --- a/blog/2016/12/03/remote-websockets-sonarr/index.html +++ b/blog/2016/12/03/remote-websockets-sonarr/index.html @@ -319,6 +319,12 @@ diff --git a/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html b/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html index 8e1479a463..4950faa6c2 100644 --- a/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html +++ b/blog/2016/12/17/text-to-speech-aquostv-flic-zamg/index.html @@ -259,6 +259,12 @@ diff --git a/blog/2016/12/19/thank-you/index.html b/blog/2016/12/19/thank-you/index.html index a30e01226a..8b66ee4d47 100644 --- a/blog/2016/12/19/thank-you/index.html +++ b/blog/2016/12/19/thank-you/index.html @@ -186,6 +186,12 @@ diff --git a/blog/2017/01/03/control-my-christmas-tree-stats/index.html b/blog/2017/01/03/control-my-christmas-tree-stats/index.html index 1724bf862f..4cd91f1e49 100644 --- a/blog/2017/01/03/control-my-christmas-tree-stats/index.html +++ b/blog/2017/01/03/control-my-christmas-tree-stats/index.html @@ -199,6 +199,12 @@ diff --git a/blog/2017/01/14/iss-usps-images-packages/index.html b/blog/2017/01/14/iss-usps-images-packages/index.html index 6d73712e08..1a6e922d3c 100644 --- a/blog/2017/01/14/iss-usps-images-packages/index.html +++ b/blog/2017/01/14/iss-usps-images-packages/index.html @@ -271,6 +271,12 @@ You have to note: diff --git a/blog/2017/01/18/numbers/index.html b/blog/2017/01/18/numbers/index.html index 5544f6fe63..bcfae8a7f8 100644 --- a/blog/2017/01/18/numbers/index.html +++ b/blog/2017/01/18/numbers/index.html @@ -184,6 +184,12 @@ diff --git a/blog/2017/01/21/home-assistant-governance/index.html b/blog/2017/01/21/home-assistant-governance/index.html index 2049547c9a..3e596ee3ac 100644 --- a/blog/2017/01/21/home-assistant-governance/index.html +++ b/blog/2017/01/21/home-assistant-governance/index.html @@ -257,6 +257,12 @@ diff --git a/blog/2017/01/28/face-coffee-wink/index.html b/blog/2017/01/28/face-coffee-wink/index.html index fe8ede0eea..1549b6d640 100644 --- a/blog/2017/01/28/face-coffee-wink/index.html +++ b/blog/2017/01/28/face-coffee-wink/index.html @@ -324,6 +324,12 @@ diff --git a/blog/2017/02/03/babyphone/index.html b/blog/2017/02/03/babyphone/index.html index 44a2090003..f9f9de3f1e 100644 --- a/blog/2017/02/03/babyphone/index.html +++ b/blog/2017/02/03/babyphone/index.html @@ -303,6 +303,12 @@ We change the platform name for binary sensor in 0.38 from +
  • + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +
  • + + +
  • HASSbian 1.1 - The Toy-box
  • @@ -322,12 +328,6 @@ We change the platform name for binary sensor in 0.38 from - Numbers - - - diff --git a/blog/2017/02/04/hassbian-toybox/index.html b/blog/2017/02/04/hassbian-toybox/index.html index f776109aea..f47d234c52 100644 --- a/blog/2017/02/04/hassbian-toybox/index.html +++ b/blog/2017/02/04/hassbian-toybox/index.html @@ -217,6 +217,12 @@ On the close horizon from @Landrash th diff --git a/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html b/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html new file mode 100644 index 0000000000..d98b5ff8c8 --- /dev/null +++ b/blog/2017/02/11/alert-appletv-mqtt-yeelight/index.html @@ -0,0 +1,363 @@ + + + + + + + + + + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    + +
    + +

    0.38: Alert, AppleTV, MQTT discovery, and Yeelight

    + + + +
    + + + six minutes reading time + + +
      + + +
    • Release-Notes
    • + + +
    +
    + + Comments + +
    + +
    + + +

    Another Saturday, another release!

    + +

    Core updates

    +
      +
    • +

      Thanks to @pvizeli, all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code!

      +
    • +
    • +

      Now when you restart Home Assistant using the homeassistant.restart service, your configuration is checked. If it appears to be invalid the restart will fail.

      +
    • +
    + +

    Rewritten frontend

    +

    The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new WebSockets API instead of the EventStream API.

    + +

    Custom state card UI

    +

    A nice new feature is the possibility to create custom state cards in the frondend. Go ahead and write your own state card for lights, sensors, locks, etc.

    + +

    MQTT discovery

    +

    MQTT now has discovery support which is different than our discovery component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant.

    + +

    Alert component

    +

    If you left your front door open, then the new alert component can be used to remind you of this by sending you repeating notifications at a given interval.

    + +

    Yeelight

    +

    The yeelight component has been ported to use a more stable and feature-complete python-yeelight backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our issue tracker.

    + +

    Apple TV

    +

    Apple TV is now a supported media_player! It has support for just about every media player function, including a realtime display of playback status and artwork.

    + +

    All changes

    +

    New platforms/components

    + + + +

    Improvements

    + +
      +
    • Switch - Pilight: Validation no longer rejects alphanumeric IDs (@DavidLP)
    • +
    • Device tracker - ASUSWrt: Fixes ip neigh regex to handle the possible IPv6 “router” flag (@kylehendricks)
    • +
    • Light - MySensors: Fix mysensors RGB and W light turn on (@MartinHjelmare)
    • +
    • Light - Yeelight: new yeelight backend lib, new features (@rytilahti)
    • +
    • Climate - Eq3btsmart: Cleanup modes & available, bump version requirement (@rytilahti)
    • +
    • Sensor - SMA: Handle units correctly (@kellerza)
    • +
    • MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams (@aequitas)
    • +
    • Light - Hue: Fix lightgroups not syncing state (@tboyce1)
    • +
    • Dvice tracker - Owntracks: Fix OwnTracks state names (@tboyce1)
    • +
    • Wink: Wink AC and additional sensor support (@w1ll1am23)
    • +
    • Modbus: Modbus write_register accept list (@benvm)
    • +
    • Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS (@michaelarnauts)
    • +
    • Climate - Ecobee: Cleanup climate and ecobee (@Duoxilian)
    • +
    • Sensor - Miflora: Allow specification of bluetooth adapter (@Danielhiversen)
    • +
    • Sensor - Systemmonitor: Add average load to systemmonitor (@eagleamon)
    • +
    • Sensor - Openweathermap: Add wind bearing (@fabaff)
    • +
    • Notify - Facebook: Allow to use data for enhanced messages (@adrianlzt)
    • +
    • Light - Hyperion: Change CONF_DEFAULT_COLOR CV type (@Joeboyc2)
    • +
    • Mysensors: Fix validation of serial port on windows (@MartinHjelmare)
    • +
    • Notify - Webostv: Store the key file in the configuration directory (@pschmitt)
    • +
    • TTS: TTS ID3 support (@robbiet480)
    • +
    • Switch - Broadlink: Add send packet service (@Yannic-HAW)
    • +
    • Wink: Add support for position on Wink cover (@albertoarias)
    • +
    • Light - Flux: Make brightness display work for RGB devices. (@aequitas)
    • +
    • Media player - Roku: Fix attribute error for media_player/roku (@tchellomello)
    • +
    • Light - MQTT template: Fix brightness slider for MQTT template lights (@ray0711)
    • +
    • Template: Add min and max Jinja2 filters (@sbidoul)
    • +
    • Device tracker - Skyhub: Improve Sky Hub error handling (@alexmogavero)
    • +
    • Notify - SMTP: Add error checking to the MIMEImage encoding (@stratosmacker)
    • +
    • Light - MQTT: Check for command topics when determining the capabilities of an MQTT light (@herm)
    • +
    • Core: Check config before restarting (@andrey-git)
    • +
    • Light - Hue: Fix groups with same names (@tboyce1)
    • +
    • Template: Add icon_template to template sensor (@tboyce1)
    • +
    • Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions (@kellerza)
    • +
    • Light - Flux: Add support for fluxled discovery. (@aequitas)
    • +
    • Media player - AppleTV: Add discovery support to Apple TV (@postlund)
    • +
    • Sensor - Template: Improve warning message in template rendering (@Danielhiversen)
    • +
    • Light - Demo: Add available property and typing hints (@rytilahti)
    • +
    • Sensor - ARWN: Enhancements to ARWN platform (@sdague)
    • +
    • Fan - ISY994: Change medium state for filtering (@Teagan42)
    • +
    • Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. (@Duoxilian)
    • +
    • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
    • +
    • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
    • +
    • Image processing: Cleanup Base face class add support for microsoft face detect (@pvizeli)
    • +
    + +

    Bugfixes: @balloob, @fabaff, @pvizeli, @mnoorenberghe, @armills, @tchellomello, @aequitas, @mathewpeterson, @molobrakos, @michaelarnauts, @jabesq, @turbokongen, @JshWright, @andriej, @jawilson, @andrey-git, @nodinosaur, @konikvranik, and you if you are missing here.

    + +

    Breaking changes

    +
      +
    • The support for LG webOS Smart TVs was improved. This requires you to move $HOME/.pylgtv to $HASS_CONFIG_DIR/webostv.conf or Home Assistant will need to be paired with the TV again.
    • +
    • Image processing events have been renamed: identify_face has become image_processing.detect_face, found_plate has become image_processing.found_plate
    • +
    • The FFmpeg binary sensor change the platform name from ffmpeg to ffmpeg_noise and ffmpeg_motion. Also all FFmpeg-related services are moved from a platform implementation to a the FFmpeg components and were rename from binary_sensor.ffmpeg_xy to ffmpeg.xy.
    • +
    + +

    If you need help…

    +

    …don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

    + +

    Reporting Issues

    +

    Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

    +
    + + +
    +

    Comments

    +
    +
    + + +
    + + + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index d81c4a9e2b..6edecd602b 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -3381,6 +3381,38 @@ + + + + @@ -3438,6 +3470,12 @@ diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml index dd9701db99..a404e7ef70 100644 --- a/blog/categories/community/atom.xml +++ b/blog/categories/community/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: community | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html index 2a2d3f9736..2f2cc92eda 100644 --- a/blog/categories/community/index.html +++ b/blog/categories/community/index.html @@ -186,6 +186,12 @@ diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml index 097eebcae1..805ea82a98 100644 --- a/blog/categories/device-tracking/atom.xml +++ b/blog/categories/device-tracking/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Device-Tracking | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html index 1bbf6c77f5..d5596c1e2a 100644 --- a/blog/categories/device-tracking/index.html +++ b/blog/categories/device-tracking/index.html @@ -190,6 +190,12 @@ diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index e02a262fa7..b07eaccdde 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: ESP8266 | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index 411fb35345..69293006a7 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -267,6 +267,12 @@ diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index 90d88c4fe2..d8a2c259f2 100644 --- a/blog/categories/how-to/atom.xml +++ b/blog/categories/how-to/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: How-To | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/how-to/index.html b/blog/categories/how-to/index.html index 291d7e6d12..c08ad49a03 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -794,6 +794,12 @@ diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml index cf55d18135..7adb9e4a2d 100644 --- a/blog/categories/ibeacons/atom.xml +++ b/blog/categories/ibeacons/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: iBeacons | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html index bfd0070dda..13f2a1bacc 100644 --- a/blog/categories/ibeacons/index.html +++ b/blog/categories/ibeacons/index.html @@ -226,6 +226,12 @@ diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml index b03fa0a273..537c54481e 100644 --- a/blog/categories/internet-of-things/atom.xml +++ b/blog/categories/internet-of-things/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Internet-of-Things | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/internet-of-things/index.html b/blog/categories/internet-of-things/index.html index c4fca4d700..c47cf048dd 100644 --- a/blog/categories/internet-of-things/index.html +++ b/blog/categories/internet-of-things/index.html @@ -285,6 +285,12 @@ diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml index 03a3c46ad7..d9062b1357 100644 --- a/blog/categories/iot-data/atom.xml +++ b/blog/categories/iot-data/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: IoT-Data | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html index fbdf0b9c37..da5702789e 100644 --- a/blog/categories/iot-data/index.html +++ b/blog/categories/iot-data/index.html @@ -256,6 +256,12 @@ diff --git a/blog/categories/micropython/atom.xml b/blog/categories/micropython/atom.xml index fbf8bf6e49..b657a16409 100644 --- a/blog/categories/micropython/atom.xml +++ b/blog/categories/micropython/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Micropython | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/micropython/index.html b/blog/categories/micropython/index.html index 36bb273d93..de7bcef5d4 100644 --- a/blog/categories/micropython/index.html +++ b/blog/categories/micropython/index.html @@ -228,6 +228,12 @@ diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index a1e6625dce..f58eb090a6 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: MQTT | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 040e784480..9750d987ff 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -299,6 +299,12 @@ diff --git a/blog/categories/organisation/atom.xml b/blog/categories/organisation/atom.xml index a426bb98d7..b08f3b92ca 100644 --- a/blog/categories/organisation/atom.xml +++ b/blog/categories/organisation/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Organisation | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/organisation/index.html b/blog/categories/organisation/index.html index e254b98d4e..6596e961ae 100644 --- a/blog/categories/organisation/index.html +++ b/blog/categories/organisation/index.html @@ -288,6 +288,12 @@ diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml index 38a3b5aa0c..00eddd6995 100644 --- a/blog/categories/owntracks/atom.xml +++ b/blog/categories/owntracks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: OwnTracks | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html index 8a69199b41..af03c4bb04 100644 --- a/blog/categories/owntracks/index.html +++ b/blog/categories/owntracks/index.html @@ -226,6 +226,12 @@ diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml index 4dc5298340..103f496296 100644 --- a/blog/categories/presence-detection/atom.xml +++ b/blog/categories/presence-detection/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Presence-Detection | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html index dd1cf95c0c..86c9c23902 100644 --- a/blog/categories/presence-detection/index.html +++ b/blog/categories/presence-detection/index.html @@ -190,6 +190,12 @@ diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml index 92a26f2b94..41609a8191 100644 --- a/blog/categories/public-service-announcement/atom.xml +++ b/blog/categories/public-service-announcement/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Public-Service-Announcement | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/public-service-announcement/index.html b/blog/categories/public-service-announcement/index.html index 84ab3d3569..5af174ea90 100644 --- a/blog/categories/public-service-announcement/index.html +++ b/blog/categories/public-service-announcement/index.html @@ -186,6 +186,12 @@ diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index 06af4d107e..fef0afbed9 100644 --- a/blog/categories/release-notes/atom.xml +++ b/blog/categories/release-notes/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Release-Notes | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ @@ -13,6 +13,200 @@ Octopress + + <![CDATA[0.38: Alert, AppleTV, MQTT discovery, and Yeelight]]> + + 2017-02-11T08:04:05+00:00 + https://home-assistant.io/blog/2017/02/11/alert-appletv-mqtt-yeelight + Core updates +- Thanks to [@pvizeli], all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code! + +- Now when you restart Home Assistant using the `homeassistant.restart` service, your configuration is checked. If it appears to be invalid the restart will fail. + +### Rewritten frontend +The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new [WebSockets API][websocket-api] instead of the [EventStream API][event-stream-api]. + +### Custom state card UI +A nice new feature is the possibility to create [custom state cards][custom-ui] in the frondend. Go ahead and write your own state card for [lights][light], sensors, locks, etc. + +### MQTT discovery +MQTT now has [discovery][mqtt-discovery] support which is different than our [`discovery`][discovery] component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant. + +### Alert component +If you left your front door open, then the new [`alert`][alert] component can be used to remind you of this by sending you repeating notifications at a given interval. + +### Yeelight +The [`yeelight`][yeelight] component has been ported to use a more stable and feature-complete [python-yeelight][python-yeelight] backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our [issue tracker][issue]. + +### Apple TV +[Apple TV][apple-tv] is now a supported [`media_player`][media-player]! It has support for just about every media player function, including a realtime display of playback status and artwork. + +### All changes +#### New platforms/components + +- Sensor: Support for monitoring [OpenEVSE][openevse] chargers ([@miniconfig]) +- Voice command [API.AI][apiai] ([@adrianlzt]) +- [Alert][alert] Component ([@rmkraus]) +- [Rflink][rflink] 433Mhz gateway platform and components ([@aequitas]) +- Lock: Support for [Nuki.io][nuki] smart locks ([@pschmitt]) +- Sensor: [QNAP][qnap] Sensor ([@colinodell]) +- Switch: Add support for [FRITZ!DECT][fritz] wireless switches based on fritzhome ([@BastianPoe]) +- Sensor: Add [moon][moon] sensor ([@fabaff]) +- Media player: Support for the [Orange Livebox Play TV][orange] appliance ([@pschmitt]) +- Media player: [Apple TV][apple-tv] support ([@postlund]) +- MQTT: [MQTT discovery][mqtt-discovery] support ([@balloob], [@fabaff]) +- Notify: [Mailgun][mailgun] notify service ([@pschmitt]) +- Image Processing: Support [Microsoft Face detection][face-detect] ([@pvizeli]) + +#### Improvements + +- Switch - Pilight: Validation no longer rejects alphanumeric IDs ([@DavidLP]) +- Device tracker - ASUSWrt: Fixes `ip neigh` regex to handle the possible IPv6 "router" flag ([@kylehendricks]) +- Light - MySensors: Fix mysensors RGB and W light turn on ([@MartinHjelmare]) +- Light - Yeelight: new yeelight backend lib, new features ([@rytilahti]) +- Climate - Eq3btsmart: Cleanup modes & available, bump version requirement ([@rytilahti]) +- Sensor - SMA: Handle units correctly ([@kellerza]) +- MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams ([@aequitas]) +- Light - [Hue][hue]: Fix lightgroups not syncing state ([@tboyce1]) +- Dvice tracker - Owntracks: Fix OwnTracks state names ([@tboyce1]) +- Wink: Wink AC and additional sensor support ([@w1ll1am23]) +- Modbus: Modbus write_register accept list ([@benvm]) +- Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS ([@michaelarnauts]) +- Climate - Ecobee: Cleanup climate and ecobee ([@Duoxilian]) +- Sensor - Miflora: Allow specification of bluetooth adapter ([@Danielhiversen]) +- Sensor - [Systemmonitor][systemmonitor]: Add average load to systemmonitor ([@eagleamon]) +- Sensor - [Openweathermap][owm]: Add wind bearing ([@fabaff]) +- Notify - Facebook: Allow to use data for enhanced messages ([@adrianlzt]) +- Light - Hyperion: Change CONF_DEFAULT_COLOR CV type ([@Joeboyc2]) +- Mysensors: Fix validation of serial port on windows ([@MartinHjelmare]) +- Notify - Webostv: Store the key file in the configuration directory ([@pschmitt]) +- TTS: TTS ID3 support ([@robbiet480]) +- Switch - Broadlink: Add send packet service ([@Yannic-HAW]) +- Wink: Add support for position on Wink cover ([@albertoarias]) +- Light - Flux: Make brightness display work for RGB devices. ([@aequitas]) +- Media player - Roku: Fix attribute error for media_player/roku ([@tchellomello]) +- Light - MQTT template: Fix brightness slider for MQTT template lights ([@ray0711]) +- Template: Add `min` and `max` Jinja2 [filters][filters] ([@sbidoul]) +- Device tracker - Skyhub: Improve Sky Hub error handling ([@alexmogavero]) +- Notify - SMTP: Add error checking to the MIMEImage encoding ([@stratosmacker]) +- Light - MQTT: Check for command topics when determining the capabilities of an MQTT light ([@herm]) +- Core: Check config before restarting ([@andrey-git]) +- Light - [Hue][hue]: Fix groups with same names ([@tboyce1]) +- Template: Add icon_template to template sensor ([@tboyce1]) +- Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions ([@kellerza]) +- Light - Flux: Add support for fluxled discovery. ([@aequitas]) +- Media player - AppleTV: Add discovery support to Apple TV ([@postlund]) +- Sensor - Template: Improve warning message in template rendering ([@Danielhiversen]) +- Light - Demo: Add available property and typing hints ([@rytilahti]) +- Sensor - ARWN: Enhancements to [ARWN][arwn] platform ([@sdague]) +- Fan - ISY994: Change medium state for filtering ([@Teagan42]) +- Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. ([@Duoxilian]) +- Tellduslive: Don't throw exception if connection to server is lost ([@molobrakos]) +- Zoneminder: Refactoring and JSON decode error handling ([@pschmitt]) +- Image processing: Cleanup Base face class add support for microsoft face detect ([@pvizeli]) + +Bugfixes: [@balloob], [@fabaff], [@pvizeli], [@mnoorenberghe] [@Danielhiversen], [@armills], [@tchellomello], [@aequitas], [@mathewpeterson], [@molobrakos], [@michaelarnauts], [@jabesq], [@turbokongen], [@JshWright], [@andriej], [@jawilson], [@andrey-git], [@nodinosaur], [@konikvranik], and you if you are missing here. + +### Breaking changes +- The support for [LG webOS Smart TVs][webostv] was improved. This requires you to move `$HOME/.pylgtv` to `$HASS_CONFIG_DIR/webostv.conf` or Home Assistant will need to be paired with the TV again. +- Image processing events have been renamed: `identify_face` has become `image_processing.detect_face`, `found_plate` has become `image_processing.found_plate` +- The [FFmpeg binary sensor][ffmpeg-bin] change the platform name from `ffmpeg` to `ffmpeg_noise` and `ffmpeg_motion`. Also all FFmpeg-related services are moved from a platform implementation to a the [FFmpeg components][ffmpeg] and were rename from `binary_sensor.ffmpeg_xy` to `ffmpeg.xy`. + +### If you need help... +...don't hesitate to use our very active [forums][forum] or join us for a little [chat][gitter]. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +### Reporting Issues +Experiencing issues introduced by this release? Please report them in our [issue tracker][issue]. Make sure to fill in all fields of the issue template. + +[@acambitsis]: https://github.com/acambitsis +[@adrianlzt]: https://github.com/adrianlzt +[@aequitas]: https://github.com/aequitas +[@albertoarias]: https://github.com/albertoarias +[@alexmogavero]: https://github.com/alexmogavero +[@andrey-git]: https://github.com/andrey-git +[@andriej]: https://github.com/andriej +[@armills]: https://github.com/armills +[@balloob]: https://github.com/balloob +[@BastianPoe]: https://github.com/BastianPoe +[@benvm]: https://github.com/benvm +[@colinodell]: https://github.com/colinodell +[@Danielhiversen]: https://github.com/Danielhiversen +[@DavidLP]: https://github.com/DavidLP +[@Duoxilian]: https://github.com/Duoxilian +[@eagleamon]: https://github.com/eagleamon +[@fabaff]: https://github.com/fabaff +[@herm]: https://github.com/herm +[@jabesq]: https://github.com/jabesq +[@jawilson]: https://github.com/jawilson +[@Joeboyc2]: https://github.com/Joeboyc2 +[@JshWright]: https://github.com/JshWright +[@kellerza]: https://github.com/kellerza +[@konikvranik]: https://github.com/konikvranik +[@kylehendricks]: https://github.com/kylehendricks +[@LinuxChristian]: https://github.com/LinuxChristian +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@mathewpeterson]: https://github.com/mathewpeterson +[@michaelarnauts]: https://github.com/michaelarnauts +[@miniconfig]: https://github.com/miniconfig +[@mnoorenberghe]: https://github.com/mnoorenberghe +[@molobrakos]: https://github.com/molobrakos +[@nodinosaur]: https://github.com/nodinosaur +[@postlund]: https://github.com/postlund +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@ray0711]: https://github.com/ray0711 +[@rmkraus]: https://github.com/rmkraus +[@robbiet480]: https://github.com/robbiet480 +[@rytilahti]: https://github.com/rytilahti +[@sbidoul]: https://github.com/sbidoul +[@sdague]: https://github.com/sdague +[@stratosmacker]: https://github.com/stratosmacker +[@tboyce1]: https://github.com/tboyce1 +[@tchellomello]: https://github.com/tchellomello +[@Teagan42]: https://github.com/Teagan42 +[@turbokongen]: https://github.com/turbokongen +[@valentinalexeev]: https://github.com/valentinalexeev +[@w1ll1am23]: https://github.com/w1ll1am23 +[@Yannic-HAW]: https://github.com/Yannic-HAW + +[alert]: https://home-assistant.io/components/alert/ +[apiai]: https://home-assistant.io/components/apiai/ +[apple-tv]: https://home-assistant.io/components/media_player.apple_tv/ +[arwn]: https://home-assistant.io/components/sensor.arwn/ +[custom-ui]: https://home-assistant.io/developers/frontend_creating_custom_ui/ +[discovery]: https://home-assistant.io/components/discovery/ +[face-detect]: https://home-assistant.io/components/image_processing.microsoft_face_detect/ +[ffmpeg-bin]: https://home-assistant.io/components/binary_sensor.ffmpeg/ +[ffmpeg]: https://home-assistant.io/components/ffmpeg/ +[filters]: https://home-assistant.io/topics/templating/#home-assistant-template-extensions +[fritz]: https://home-assistant.io/components/switch.fritzdect/ +[hue]: https://home-assistant.io/components/light.hue/ +[light]: https://home-assistant.io/cookbook/custom_ui_by_andrey-git +[mailgun]: https://home-assistant.io/components/notify.mailgun/ +[media-player]: https://home-assistant.io/components/media_player/ +[moon]: https://home-assistant.io/components/sensor.moon/ +[mqtt-discovery]: https://home-assistant.io/components/mqtt/#discovery +[nuki]: https://home-assistant.io/components/lock.nuki/ +[openevse]: https://home-assistant.io/components/sensor.openevse/ +[orange]: https://home-assistant.io/components/media_player.liveboxplaytv/ +[owm]: https://home-assistant.io/components/sensor.openweathermap/ +[python-yeelight]: https://gitlab.com/stavros/python-yeelight +[qnap]: https://home-assistant.io/components/sensor.qnap/ +[rflink]: https://home-assistant.io/components/rflink/ +[systemmonitor]: https://home-assistant.io/components/sensor.systemmonitor/ +[webostv]: https://home-assistant.io/components/media_player.webostv/ +[yeelight]: https://home-assistant.io/components/light.yeelight/ + +[event-stream-api]: https://home-assistant.io/developers/server_sent_events/ +[forum]: https://community.home-assistant.io/ +[gitter]: https://gitter.im/home-assistant/home-assistant +[issue]: https://github.com/home-assistant/home-assistant/issues +[websocket-api]: https://home-assistant.io/developers/websocket_api/ +]]> + + <![CDATA[0.37: Face detection, Coffee, Wink]]> @@ -832,120 +1026,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [websockets]: https://home-assistant.io/developers/websocket_api/ [waqi]: https://home-assistant.io/components/sensor.waqi/ -]]> - - - - <![CDATA[0.33: New Calendar component, Wink thermostats and Cisco IOS]]> - - 2016-11-20T00:04:05+00:00 - https://home-assistant.io/blog/2016/11/20/calendar--wink-thermostats--cisco-ios - Changes - -- New [calendar component][google] including Google support ([@mnestor]) -- Final core upgrade for async ([@pvizeli]) -- [Neato] refactor + sensor support ([@turbokongen]) -- Device Tracker: [Swisscom Internet-Box][swisscom] now supported ([@betrisey]) -- Device Tracker - Locative: [Map support][locative] added ([@danijelst]) -- [Emulated Hue] will now sent request info as variables to scripts that get called ([@bah2830]) -- Wink: [Thermostats][wink-climate] are now supported ([@w1ll1am23]) -- Light: New [MQTT template][mqtt-template] platform for custom communication ([@Diaoul]) -- [Wake on Lan switch] can now configure a custom OFF script ([@Chris-V]) -- Device Tracker: [Cisco IOS][cisco] now supported ([@fbradyirl]) -- Sensor: Support for [PVOutput][pvoutput] snesor ([@fabaff]) -- Sensor: Show count of connected clients to the [API stream][api-stream] ([@balloob]) -- Fix platforms from doing I/O in the event loop ([@balloob], [@pvizeli], [@lwis], [@kellerza]) -- Switch - [TP Link]: Add daily consumption ([@gonzalezcalleja]) -- Templates: Add new `strptime` [template function] for parsing times ([@lwis]) -- [HTTP] component: Fix X-Forwarded-For parsing ([@mweinelt]) -- Switch - [Command Line]: Use configured object_id for entity IDs ([@n8henrie]) -- [MQTT] now supports birth and last will messages ([@bestlibre]) -- Better handling of accented characters in slugify ([@magicus]) -- Alarm Control Panel - [Envisalink]: Add new keypress service ([@jnimmo]) -- Light - [Hue]: Add service to activate scenes defined in Hue app ([@sdague]) - -### Release 0.33.1 - November 20 - - - Fix Z-Wave lights ([@turbokongen]) - -### Release 0.33.2 - November 22 - - - Fix Device Tracker init ([@pvizeli]) - - Fix Discovery init ([@pvizeli]) - - Fix TP-Link switch ([@mweinelt]) - - Fix Zwave light naming & configurable refresh ([@jchapple]) - - Neato fixes ([@turbokongen]) - - Fix 'Unknown' status for Nest Protect devices ([@Khabi]) - -### Release 0.33.3 - November 23 - - - Update Yr.no entities every hour ([@kellerza]) - - Bump Netdisco to 0.7.7 (fixes discovery on Synology) - - Fix discovery race condition (most obvious in Wemo) ([@balloob]) - -### Release 0.33.4 - November 24 - - - Set executor pool size to 10 (as intended) ([@pvizeli]) - -This should fix occasional performance problems that some people have reported. - -### Breaking changes - - - 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 `Tèst Mörê` will become `test_more` instead of `tst_mr`. - - Command line switches will now use the specified object ID for their entity ID instead of basing it off the name. - -### Reporting issues - -Experiencing issues introduced by this release? Please report them in our [issue tracker]. Make sure to fill in all fields of the issue template. - -[issue tracker]: https://github.com/home-assistant/home-assistant/issues -[@bah2830]: https://github.com/bah2830 -[@balloob]: https://github.com/balloob -[@bestlibre]: https://github.com/bestlibre -[@betrisey]: https://github.com/betrisey -[@Chris-V]: https://github.com/Chris-V -[@danijelst]: https://github.com/danijelst -[@Diaoul]: https://github.com/Diaoul -[@fabaff]: https://github.com/fabaff -[@fbradyirl]: https://github.com/fbradyirl -[@gonzalezcalleja]: https://github.com/ -[@jnimmo]: https://github.com/jnimmo -[@kellerza]: https://github.com/kellerza -[@lwis]: https://github.com/lwis -[@magicus]: https://github.com/magicus -[@mnestor]: https://github.com/mnestor -[@mweinelt]: https://github.com/mweinelt -[@n8henrie]: https://github.com/n8henrie -[@pvizeli]: https://github.com/pvizeli -[@sdague]: https://github.com/sdague -[@turbokongen]: https://github.com/turbokongen -[@w1ll1am23]: https://github.com/w1ll1am23 -[@jchapple]: https://github.com/jchapple -[@Khabi]: https://github.com/Khabi - -[api-stream]: /components/sensor.api_stream/ -[cisco]: /components/device_tracker.cisco_ios/ -[Command Line]: /components/switch.command_line/ -[Envisalink]: /components/envisalink/ -[google]: /components/calendar.google/ -[Hue]: /components/light.hue/ -[locative]: /components/device_tracker.locative/ -[mqtt-template]: /components/light.mqtt_template/ -[mqtt-will]: /components/mqtt/ -[pvoutput]: /components/sensor.pvoutput/ -[swisscom]: /components/device_tracker.swisscom/ -[TP Link]: /components/switch.tplink/ -[wink-climate]: /components/climate.wink/ -[neato]: /components/neato/ -[Emulated Hue]: /components/emulated_hue/ -[Wake on Lan switch]: /components/switch.wake_on_lan/ -[template function]: /topics/templating/#home-assistant-template-extensions -[HTTP]: /components/http/ -[MQTT]: /components/mqtt/ ]]> diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 367491ec55..76e7d1394b 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -99,6 +99,38 @@

    2017

    + + + +
    @@ -1826,6 +1858,12 @@ diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml index e0465f4842..02fea7d81e 100644 --- a/blog/categories/survey/atom.xml +++ b/blog/categories/survey/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Survey | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html index 813bd89d88..d0a942a8cf 100644 --- a/blog/categories/survey/index.html +++ b/blog/categories/survey/index.html @@ -186,6 +186,12 @@ diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml index 9a455906f1..a42fb0f4e6 100644 --- a/blog/categories/talks/atom.xml +++ b/blog/categories/talks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Talks | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html index 52c9957931..187d479c3d 100644 --- a/blog/categories/talks/index.html +++ b/blog/categories/talks/index.html @@ -188,6 +188,12 @@ diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml index 9288ea2e51..4844d83f0c 100644 --- a/blog/categories/technology/atom.xml +++ b/blog/categories/technology/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Technology | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html index d4f205d20b..bf647f8bb1 100644 --- a/blog/categories/technology/index.html +++ b/blog/categories/technology/index.html @@ -285,6 +285,12 @@ diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index 71451f0928..e657efd033 100644 --- a/blog/categories/user-stories/atom.xml +++ b/blog/categories/user-stories/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: User-Stories | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 3146667022..df7239affb 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -221,6 +221,12 @@ diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml index fe50f85711..eeb97ce726 100644 --- a/blog/categories/video/atom.xml +++ b/blog/categories/video/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Video | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html index 6239c70cf2..e8ed94c9f3 100644 --- a/blog/categories/video/index.html +++ b/blog/categories/video/index.html @@ -389,6 +389,12 @@ diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index 4e82bbc5dd..ca644c880c 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Website | Home Assistant]]> - 2017-02-11T22:28:32+00:00 + 2017-02-11T22:47:53+00:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index d7e55351bf..124066f176 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -221,6 +221,12 @@ diff --git a/blog/index.html b/blog/index.html index dc11de2a12..e0ec68f582 100644 --- a/blog/index.html +++ b/blog/index.html @@ -79,6 +79,159 @@ +
    +
    + +

    + 0.38: Alert, AppleTV, MQTT discovery, and Yeelight +

    + + + +
    + + + six minutes reading time + + +
      + + +
    • Release-Notes
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    Another Saturday, another release!

    + +

    Core updates

    +
      +
    • +

      Thanks to @pvizeli, all the core components are now written asynchronously. All entity components are now migrated from synchronously to asynchronously code!

      +
    • +
    • +

      Now when you restart Home Assistant using the homeassistant.restart service, your configuration is checked. If it appears to be invalid the restart will fail.

      +
    • +
    + +

    Rewritten frontend

    +

    The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new WebSockets API instead of the EventStream API.

    + +

    Custom state card UI

    +

    A nice new feature is the possibility to create custom state cards in the frondend. Go ahead and write your own state card for lights, sensors, locks, etc.

    + +

    MQTT discovery

    +

    MQTT now has discovery support which is different than our discovery component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant.

    + +

    Alert component

    +

    If you left your front door open, then the new alert component can be used to remind you of this by sending you repeating notifications at a given interval.

    + +

    Yeelight

    +

    The yeelight component has been ported to use a more stable and feature-complete python-yeelight backend, and supports now both white and RGB bulbs. The component also supports transitions and can be configured to save the settings to the bulb on changes. The users currently using custom components for Yeelight are encouraged to move back to use the included version and report any problems with it to our issue tracker.

    + +

    Apple TV

    +

    Apple TV is now a supported media_player! It has support for just about every media player function, including a realtime display of playback status and artwork.

    + +

    All changes

    +

    New platforms/components

    + + + +

    Improvements

    + +
      +
    • Switch - Pilight: Validation no longer rejects alphanumeric IDs (@DavidLP)
    • +
    • Device tracker - ASUSWrt: Fixes ip neigh regex to handle the possible IPv6 “router” flag (@kylehendricks)
    • +
    • Light - MySensors: Fix mysensors RGB and W light turn on (@MartinHjelmare)
    • +
    • Light - Yeelight: new yeelight backend lib, new features (@rytilahti)
    • +
    • Climate - Eq3btsmart: Cleanup modes & available, bump version requirement (@rytilahti)
    • +
    • Sensor - SMA: Handle units correctly (@kellerza)
    • +
    • MQTT eventstream: Prevent infinite loop in cross configured MQTT event streams (@aequitas)
    • +
    • Light - Hue: Fix lightgroups not syncing state (@tboyce1)
    • +
    • Dvice tracker - Owntracks: Fix OwnTracks state names (@tboyce1)
    • +
    • Wink: Wink AC and additional sensor support (@w1ll1am23)
    • +
    • Modbus: Modbus write_register accept list (@benvm)
    • +
    • Device tracker - Ping: Add devices detected by ping as SOURCE_TYPE_ROUTER instead of GPS (@michaelarnauts)
    • +
    • Climate - Ecobee: Cleanup climate and ecobee (@Duoxilian)
    • +
    • Sensor - Miflora: Allow specification of bluetooth adapter (@Danielhiversen)
    • +
    • Sensor - Systemmonitor: Add average load to systemmonitor (@eagleamon)
    • +
    • Sensor - Openweathermap: Add wind bearing (@fabaff)
    • +
    • Notify - Facebook: Allow to use data for enhanced messages (@adrianlzt)
    • +
    • Light - Hyperion: Change CONF_DEFAULT_COLOR CV type (@Joeboyc2)
    • +
    • Mysensors: Fix validation of serial port on windows (@MartinHjelmare)
    • +
    • Notify - Webostv: Store the key file in the configuration directory (@pschmitt)
    • +
    • TTS: TTS ID3 support (@robbiet480)
    • +
    • Switch - Broadlink: Add send packet service (@Yannic-HAW)
    • +
    • Wink: Add support for position on Wink cover (@albertoarias)
    • +
    • Light - Flux: Make brightness display work for RGB devices. (@aequitas)
    • +
    • Media player - Roku: Fix attribute error for media_player/roku (@tchellomello)
    • +
    • Light - MQTT template: Fix brightness slider for MQTT template lights (@ray0711)
    • +
    • Template: Add min and max Jinja2 filters (@sbidoul)
    • +
    • Device tracker - Skyhub: Improve Sky Hub error handling (@alexmogavero)
    • +
    • Notify - SMTP: Add error checking to the MIMEImage encoding (@stratosmacker)
    • +
    • Light - MQTT: Check for command topics when determining the capabilities of an MQTT light (@herm)
    • +
    • Core: Check config before restarting (@andrey-git)
    • +
    • Light - Hue: Fix groups with same names (@tboyce1)
    • +
    • Template: Add icon_template to template sensor (@tboyce1)
    • +
    • Recorder: Refactoring, scoping, and better handling of SQLAlchemy Sessions (@kellerza)
    • +
    • Light - Flux: Add support for fluxled discovery. (@aequitas)
    • +
    • Media player - AppleTV: Add discovery support to Apple TV (@postlund)
    • +
    • Sensor - Template: Improve warning message in template rendering (@Danielhiversen)
    • +
    • Light - Demo: Add available property and typing hints (@rytilahti)
    • +
    • Sensor - ARWN: Enhancements to ARWN platform (@sdague)
    • +
    • Fan - ISY994: Change medium state for filtering (@Teagan42)
    • +
    • Climate - Ecobee: Support away_mode as permanent hold and hold_mode as temporary hold. (@Duoxilian)
    • +
    • Tellduslive: Don’t throw exception if connection to server is lost (@molobrakos)
    • +
    • Zoneminder: Refactoring and JSON decode error handling (@pschmitt)
    • +
    • Image processing: Cleanup Base face class add support for microsoft face detect (@pvizeli)
    • +
    + +

    Bugfixes: @balloob, @fabaff, @pvizeli, @mnoorenberghe, @armills, @tchellomello, @aequitas, @mathewpeterson, @molobrakos, @michaelarnauts, @jabesq, @turbokongen, @JshWright, @andriej, @jawilson, @andrey-git, @nodinosaur, @konikvranik, and you if you are missing here.

    + +

    Breaking changes

    +
      +
    • The support for LG webOS Smart TVs was improved. This requires you to move $HOME/.pylgtv to $HASS_CONFIG_DIR/webostv.conf or Home Assistant will need to be paired with the TV again.
    • +
    • Image processing events have been renamed: identify_face has become image_processing.detect_face, found_plate has become image_processing.found_plate
    • +
    • The FFmpeg binary sensor change the platform name from ffmpeg to ffmpeg_noise and ffmpeg_motion. Also all FFmpeg-related services are moved from a platform implementation to a the FFmpeg components and were rename from binary_sensor.ffmpeg_xy to ffmpeg.xy.
    • +
    + +

    If you need help…

    +

    …don’t hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it’s preferred if you use the former communication channels. Thanks.

    + +

    Reporting Issues

    +

    Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

    + + + +
    +
    +
    +
    @@ -902,197 +1055,6 @@ You have to note: -
    -
    -
    - -
    -
    - -

    - 0.34: New Remote component, Websockets, Sonarr, GPSLogger -

    - - - -
    - - - six minutes reading time - - -
      - - -
    • Release-Notes
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    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 @pvizeli and @balloob, new components, new platforms, major improvements, and much more.

    - -

    GPSLogger

    - -

    The work of @dainok let’s you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the GPSLogger 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.

    - -

    Remote component

    - -

    The brand new remote component made by @iandday will simplify the integration of all kinds of remote control units. The first platform for Harmony is included in this release.

    - -

    HomeMatic

    - -

    The HomeMatic component has received some updates worth mentioning:

    - -
      -
    • Additional services -
        -
      • reconnect: Reconnect to your CCU/Homegear without restarting Home Assistant.
      • -
      • set_dev_value: Manually control a device, even if it’s not supported by Home Assistant yet.
      • -
      -
    • -
    • Support for multiple HomeMatic hosts
    • -
    • Support for HomeMatic Wired (most devices) and HomeMatic IP (a few devices)
    • -
    • Various improvements and fixes, especially for HM-Sec-Key (KeyMatic)
    • -
    - -

    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 set_value service). However, the benefits and possibilities gained will be worth it.

    - -

    Websocket API

    - -

    This release includes a new websockets based API by @balloob 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.

    - -

    All changes

    - - - -

    Release 0.34.1 - December 4

    - -

    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.

    - -

    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:

    - -
    emulated_hue:
    -  type: google_home
    -  # This is important. Sadly, Google Home will not work with other ports.
    -  listen_port: 80
    -
    -
    - -

    We are working on a better solution for 0.35.

    - - - -

    Release 0.34.2 - December 5

    - -
      -
    • Fix Nest interpreting Celsius as Fahrenheit and converting it (@balloob)
    • -
    • Fix Nest sensor platforms throwing errors (@technicalpickles)
    • -
    • Frontend will now always show persistent_notification and configurator entities even if not part of the active view (@balloob)
    • -
    • Fixed media player cards taking up unnecessary space (@balloob)
    • -
    - -

    Release 0.34.3 - December 6

    - -
      -
    • Fix Hook connections (@dasos)
    • -
    • Fix random websocket connections (@balloob)
    • -
    • Fix Google Home sometimes not finding our emulated_hue (@jawilson)
    • -
    • Fix EnOcean config validation (@rubund)
    • -
    - -

    Release 0.34.4 - December 7

    - -
      -
    • Fix InfluxDB without authentication (@balloob)
    • -
    • Fix Kodi without authentication (@balloob)
    • -
    • Fix incorrect caching of /api/error_log (@armills)
    • -
    • Fix incorrect ordering of service calls which could cause delays inbetween turning on multiple entities (@balloob)
    • -
    • Fix Nest Climate temperature issues (@technicalpickles)
    • -
    - -

    Release 0.34.5 - December 12

    - -
      -
    • Fix Nest sensors doing I/O inside event loop (@balloob)
    • -
    • Fix Nest version bump not triggering re-install (@R1chardTM)
    • -
    • Fix Nest cameras without activity zones (@technicalpickles)
    • -
    • Fix Plex doing I/O inside event loop (@balloob)
    • -
    - -

    Breaking changes

    - -
      -
    • The HomeMatic component now uses a different syntax for hosts and the set_value service has been renamed.
    • -
    • All RFXtrx sensors will get a new entity ID.
    • -
    • The frontend now uses websockets. If you run a server in front of Home Assistant, you will have to update your config (example nginx)
    • -
    • Nest contains changes which will require your attention.
    • -
    - -

    If you need help…

    - -

    …don’t hesitate to use our Forum or join us for a little chat. The release notes have comments enabled but it’s preferred if you use these communication channels. Thanks.

    - -

    Reporting Issues

    - -

    Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.

    - - -

    diff --git a/blog/posts/10/index.html b/blog/posts/10/index.html index c704f051cb..a57779a627 100644 --- a/blog/posts/10/index.html +++ b/blog/posts/10/index.html @@ -79,6 +79,73 @@ +
    +
    + +

    + Release notes for March 22, 2015 +

    + + + +
    + + + two minutes reading time + + +
      + + +
    • Release-Notes
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    A new version of Home Assistant has just been pushed out. It contains bugfixes contributed by jamespcole, andythigpen, trainman419 and me. It also adds a bunch of great new features:

    + +

    Script +Andythigpen has contributed a script component. This allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off. A separate page has been added to the frontend to see the status of your scripts.

    + +
    # Example configuration.yaml entry
    +script:
    +  # Turns on the bedroom lights and then the living room lights 1 minute later
    +  wakeup:
    +    alias: Wake Up
    +    sequence:
    +      - alias: Bedroom lights on
    +        execute_service: light.turn_on
    +        service_data:
    +          entity_id: group.bedroom
    +      - delay:
    +          # supports seconds, milliseconds, minutes, hours, etc.
    +          minutes: 1
    +      - alias: Living room lights on
    +        execute_service: light.turn_on
    +        service_data:
    +          entity_id: group.living_room
    +
    +
    + + + + Read on → + +
    +
    +
    +
    @@ -594,64 +661,6 @@ Home Assistant now supports --open-ui and

    -
    -
    - -

    - Home Control, Automation & the Smart Home -

    - - - -
    - - - four minutes reading time - - -
      - - -
    • Internet-of-Things
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    The internet has been buzzing over the last year about home automation. A lot of different terms fly around like the internet of things, home automation and the smart home. -This article will try to explain how they all relate.

    - -

    The first thing to introduce is the Internet of Things (IoT). This refers to a new generation of devices that cannot only be controlled by humans via buttons or remotes but also provide an interface to communicate with other devices and applications. For example, an IoT-capable coffee machine could receive commands to create different types of coffee and be able to broadcast the amount of water left in its resevoir.

    - -

    There is no widely adopted open standard for smart device communication. This prevents a lot of devices to communicate with one another. And even if they could, most devices are not designed to manage other devices. To solve this we need a device to be able to communicate with and manage all these connected devices. This device is called a hub.

    - -

    As a bare minimum a hub has to keep track of the state of each device and should be able to control them if possible. For example, it has to know which lights are on or off and offer a way to control the lights. For a sensor it only has to know the value. A hub with these capabilities offers home control.

    - -

    - - Hub dashboard example - - Example of a hub’s dashboard. Showing the state of 2 persons, 4 lights and the sun. -

    - - - - Read on → - -
    -
    -
    - - -
    - -
    -
    - -

    - ESP8266 and MicroPython - Part 2 -

    - - - -
    - - - four minutes reading time - - -
      - - -
    • ESP8266
    • - -
    • How-To
    • - -
    • MQTT
    • - -
    • Micropython
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    -So, part 1 of ESP8266 and MicroPython 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.

    - - - - Read on → -

    diff --git a/blog/posts/3/index.html b/blog/posts/3/index.html index 733000881a..b85810b44a 100644 --- a/blog/posts/3/index.html +++ b/blog/posts/3/index.html @@ -79,6 +79,57 @@ +
    +
    + +

    + ESP8266 and MicroPython - Part 2 +

    + + + +
    + + + four minutes reading time + + +
      + + +
    • ESP8266
    • + +
    • How-To
    • + +
    • MQTT
    • + +
    • Micropython
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    +So, part 1 of ESP8266 and MicroPython 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.

    + + + + Read on → + +
    +
    +
    +
    @@ -869,56 +920,6 @@ One of the graphs created with this tutorial.

    -
    -
    - -

    - Visualize your IoT data -

    - - - -
    - - - five minutes reading time - - -
      - - -
    • How-To
    • - -
    • IoT-Data
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    - -

    The history component is tracking everything that is going on within Home Assistant. This means that you have access to all stored information about your home. Our history is not a full-fledged graphical processing and visualization component as you may know from systems and network monitoring tools. The current limitation is that you only can select a day for a visual output of your information and not a period. Also, there is no possibility to drill down on a specific entity.

    - -

    This blog post will show you ways to export data for reporting, visualization, or further analysis of automation rules.

    - - - - Read on → - -
    -
    -
    - - -
    - -
    -
    - -

    - Raspberry Pi all-in-one installer -

    - - - -
    - - - Less than one minute reading time - - -
      - - -
    • Video
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That’s why @jbags81 recently introduced the all-in-one installer. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie:

    - -
    wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh;
    -
    -
    - -

    This feature wouldn’t be complete if it wasn’t accompanied by a new video by Ben from BRUH Automation. The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running.

    - -
    - -
    - - -

    diff --git a/blog/posts/5/index.html b/blog/posts/5/index.html index 9944980ba0..6e39ac4101 100644 --- a/blog/posts/5/index.html +++ b/blog/posts/5/index.html @@ -79,6 +79,58 @@ +
    +
    + +

    + Raspberry Pi all-in-one installer +

    + + + +
    + + + Less than one minute reading time + + +
      + + +
    • Video
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    We are always hard at work at the virtual Home Assistant headquarters to make it easier for you to get started with Home Assistant. That’s why @jbags81 recently introduced the all-in-one installer. It allows you to get up and running with a complete Home Assistant setup by entering one line of code into your Raspberry Pi running Raspbian Jessie:

    + +
    wget -Nnv https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && bash hass_rpi_installer.sh;
    +
    +
    + +

    This feature wouldn’t be complete if it wasn’t accompanied by a new video by Ben from BRUH Automation. The video shows how to install Raspbian Jessie on your Raspberry Pi and use the new installation script to get a full Home Assistant system up and running.

    + +
    + +
    + + + +
    +
    +
    +
    @@ -688,71 +740,6 @@

    Finally, if you see some content that could use more clarifcation or is outdated, don’t hesitate to use the ‘Edit in GitHub’ link that is present on each page.

    - -
    -
    - -
    -
    - -

    - 0.17: Onkyo, Panasonic, GTFS and config validation -

    - - - -
    - - - 1 minute reading time - - -
      - - -
    • Release-Notes
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we’ve been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in it’s early stages. More common platforms and components have been added but we didn’t do everything yet.

    - -

    When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We’re looking into options to make it more clear - it is a work in progress.

    - -

    Another big thing is the addition of GTFS support. You probably don’t know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend.

    - -

    - - - -

    Breaking changes

    - -

    As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to execute_service in their script configs. This should be service.

    - -

    diff --git a/blog/posts/6/index.html b/blog/posts/6/index.html index 92b1fa580a..9e05a0124a 100644 --- a/blog/posts/6/index.html +++ b/blog/posts/6/index.html @@ -79,6 +79,71 @@ +
    +
    + +

    + 0.17: Onkyo, Panasonic, GTFS and config validation +

    + + + +
    + + + 1 minute reading time + + +
      + + +
    • Release-Notes
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    Another awesome release ready to hit your homes. YAML can be hard for beginners and more experienced automators. So to help catch those pesky errors that sneak into your files we’ve been hard at work to introduce config validation! Especially huge thanks to @jaharkes for his hard work on this. Config validation is still in it’s early stages. More common platforms and components have been added but we didn’t do everything yet.

    + +

    When we encounter an invalid config we will now write a warning to your logs. You can see those in the frontend by clicking on the last developer tool. We’re looking into options to make it more clear - it is a work in progress.

    + +

    Another big thing is the addition of GTFS support. You probably don’t know it, but GTFS is the standard that public transit companies all over the world use to distribute their schedule. This means that you can now have the time of the next bus/train/etc right in your frontend.

    + +

    + + + +

    Breaking changes

    + +

    As of now we are not aware of any breaking changes. However, it might be that Home Assistant will not start for you because of an invalid configuration. A common mistake that people are making is that they are still referring to execute_service in their script configs. This should be service.

    + + +
    +
    +
    +
    @@ -780,62 +845,6 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm.

    -
    -
    - -

    - Smarter SmartThings with MQTT and Home Assistant -

    - - - -
    - - - nine minutes reading time - - -
      - - -
    • How-To
    • - -
    • MQTT
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    This is a guest post by Home Assistant users Jeremiah Wuenschel and St. John Johnson.

    - -

    So you own a SmartThings Hub. You probably bought it when you were looking to get into the whole Home Automation hobby because it worked with pretty much everything and offered you the ability to automate anything. After a week of ownership, you realized that building dashboards and automating required writing way more Groovy then you expected. Then one day you were browsing reddit and discovered the amazingness that is Home Assistant! A solution that offered dashboards, graphs, working support for Nest, and REAL EASY automation!

    - -

    You spent your weekend getting everything set up, showing it off to your significant other, but in the end you got stumped when it came to integrating with all your existing SmartThings toys. What do I do now? Should I buy another hub? Should I just buy a Z-Wave stick?

    - -

    That’s where we came in. We wanted a solution that can bridge the awesomeness of Home Assistant with the SmartThings hub that works with almost everything.

    - -

    - -

    - - - - Read on → - -
    -
    -
    - - -
    - -
    -
    - -

    - Community Highlights -

    - - - -
    - - - Less than one minute reading time - - -
      - - -
    • Community
    • - -
    • Video
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    From time to time we come along things that are worth sharing with fellow Home Assisters. Here a list of some cool stuff from last week:

    - -

    First is the public beta of Let’s Encrypt. Let’s Encrypt is a new certificate authority that is free, automated and open. This means that it will now be very easy to secure your connection to Home Assistant while you are away from home. W1ll1am23 has written up a guide how to get started.

    - -

    The next thing is a show-off of some of the cool stuff people do with Home Assistant. This is miniconfig talking to Home Assistant using the Amazon Echo!

    - -
    - -
    - -

    And last but not least, Midwestern Mac did a microSD card performance comparison for the Raspberry Pi. If you’re using a Pi, make sure to check it out!

    - -

    diff --git a/blog/posts/8/index.html b/blog/posts/8/index.html index a2b2fd3fcb..d97fa14402 100644 --- a/blog/posts/8/index.html +++ b/blog/posts/8/index.html @@ -79,6 +79,59 @@ +
    +
    + +

    + Community Highlights +

    + + + +
    + + + Less than one minute reading time + + +
      + + +
    • Community
    • + +
    • Video
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    From time to time we come along things that are worth sharing with fellow Home Assisters. Here a list of some cool stuff from last week:

    + +

    First is the public beta of Let’s Encrypt. Let’s Encrypt is a new certificate authority that is free, automated and open. This means that it will now be very easy to secure your connection to Home Assistant while you are away from home. W1ll1am23 has written up a guide how to get started.

    + +

    The next thing is a show-off of some of the cool stuff people do with Home Assistant. This is miniconfig talking to Home Assistant using the Amazon Echo!

    + +
    + +
    + +

    And last but not least, Midwestern Mac did a microSD card performance comparison for the Raspberry Pi. If you’re using a Pi, make sure to check it out!

    + + +
    +
    +
    +
    @@ -623,57 +676,6 @@ Inspried by a -
    - -

    - Using MQTT with Home Assistant -

    - - - -
    - - - eight minutes reading time - - -
      - - -
    • How-To
    • - -
    • MQTT
    • - - -
    -
    - - Comments - -
    - -
    - - -
    - -

    MQTT support was added to Home Assistant recently. The MQTT component will enable you to do all sort of things. Most likely you will use it to communicate with your devices. But Home Assistant doesn’t care where the data is coming from or is limited to real hardware as long as there is MQTT support. This means that it doesn’t matter if the data is coming from a human, a web service, or a device.

    - -

    A great example is shown in a Laundry Automation post in this blog.

    - -

    This post will give you a small overview of some other possibilities on how to use MQTT with Home Assistant.

    - - - - Read on → - -
    -
    -
    - + + + + + + \ No newline at end of file diff --git a/components/device_tracker.netgear/index.html b/components/device_tracker.netgear/index.html index d78ed01a8e..fe22514358 100644 --- a/components/device_tracker.netgear/index.html +++ b/components/device_tracker.netgear/index.html @@ -191,6 +191,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.nmap_tracker/index.html b/components/device_tracker.nmap_tracker/index.html index 61091a70bd..83314ada7e 100644 --- a/components/device_tracker.nmap_tracker/index.html +++ b/components/device_tracker.nmap_tracker/index.html @@ -228,6 +228,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.owntracks/index.html b/components/device_tracker.owntracks/index.html index 82b6a7de12..dd348bf60b 100644 --- a/components/device_tracker.owntracks/index.html +++ b/components/device_tracker.owntracks/index.html @@ -250,6 +250,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.ping/index.html b/components/device_tracker.ping/index.html index 92109a2455..089a083723 100644 --- a/components/device_tracker.ping/index.html +++ b/components/device_tracker.ping/index.html @@ -185,6 +185,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.sky_hub/index.html b/components/device_tracker.sky_hub/index.html index 48e8d94b20..799086d020 100644 --- a/components/device_tracker.sky_hub/index.html +++ b/components/device_tracker.sky_hub/index.html @@ -183,6 +183,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.snmp/index.html b/components/device_tracker.snmp/index.html index 77eca1a8cf..8417250127 100644 --- a/components/device_tracker.snmp/index.html +++ b/components/device_tracker.snmp/index.html @@ -107,6 +107,7 @@ This device tracker needs SNMP to be enabled on the router.
  • pfSense: 1.3.6.1.2.1.4.22.1.2 (tested on 2.2.4-RELEASE, need to enable SNMP service)
  • TPLink: 1.3.6.1.2.1.3.1.1.2.19.1 (Archer VR2600v, need to enable SNMP service)
  • EdgeRouter 1.3.6.1.2.1.4.22.1.2 (EdgeRouter Lite v1.9.0, need to enable SNMP service)
  • +
  • Ruckus: 1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6 (Ruckus ZoneDirector, tested on 9.13.3)
  • To use the SNMP version 1 platform in your installation, add the following to your configuration.yaml file:

    @@ -227,6 +228,9 @@ This device tracker needs SNMP to be enabled on the router.
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.swisscom/index.html b/components/device_tracker.swisscom/index.html index 9277ea3bd6..eb35bfb5e2 100644 --- a/components/device_tracker.swisscom/index.html +++ b/components/device_tracker.swisscom/index.html @@ -186,6 +186,9 @@ There are three models of Internet-Box (light, standard and plus). The platform
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.tado/index.html b/components/device_tracker.tado/index.html index 6d8ffbceb2..f3022a0641 100644 --- a/components/device_tracker.tado/index.html +++ b/components/device_tracker.tado/index.html @@ -190,6 +190,9 @@ Polling Tado API for presence information will occure at most once every 30 seco
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.thomson/index.html b/components/device_tracker.thomson/index.html index 570b232910..2c6e0e1360 100644 --- a/components/device_tracker.thomson/index.html +++ b/components/device_tracker.thomson/index.html @@ -186,6 +186,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.tomato/index.html b/components/device_tracker.tomato/index.html index 8ff6414fd3..d231ea4b1c 100644 --- a/components/device_tracker.tomato/index.html +++ b/components/device_tracker.tomato/index.html @@ -194,6 +194,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.tplink/index.html b/components/device_tracker.tplink/index.html index bf31e17026..bcb7f3794a 100644 --- a/components/device_tracker.tplink/index.html +++ b/components/device_tracker.tplink/index.html @@ -208,6 +208,9 @@ TP-Link devices typically only allow one login at a time to the admin console.
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.trackr/index.html b/components/device_tracker.trackr/index.html index 46a1acbe1d..c1b7c4e0bd 100644 --- a/components/device_tracker.trackr/index.html +++ b/components/device_tracker.trackr/index.html @@ -188,6 +188,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.ubus/index.html b/components/device_tracker.ubus/index.html index 92a449de22..06db405656 100644 --- a/components/device_tracker.ubus/index.html +++ b/components/device_tracker.ubus/index.html @@ -225,6 +225,9 @@ file
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.unifi/index.html b/components/device_tracker.unifi/index.html index 765e2655d8..efdb1d8404 100644 --- a/components/device_tracker.unifi/index.html +++ b/components/device_tracker.unifi/index.html @@ -188,6 +188,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.upc_connect/index.html b/components/device_tracker.upc_connect/index.html index 31431fee5e..8bdcc25239 100644 --- a/components/device_tracker.upc_connect/index.html +++ b/components/device_tracker.upc_connect/index.html @@ -184,6 +184,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.volvooncall/index.html b/components/device_tracker.volvooncall/index.html index d2b18857b0..fbfd57784a 100644 --- a/components/device_tracker.volvooncall/index.html +++ b/components/device_tracker.volvooncall/index.html @@ -185,6 +185,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker.xiaomi/index.html b/components/device_tracker.xiaomi/index.html index c559d9329c..04869cf099 100644 --- a/components/device_tracker.xiaomi/index.html +++ b/components/device_tracker.xiaomi/index.html @@ -187,6 +187,9 @@
  • MQTT Room Presence
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/device_tracker/index.html b/components/device_tracker/index.html index 08eff2a82d..3e7e93d36f 100644 --- a/components/device_tracker/index.html +++ b/components/device_tracker/index.html @@ -278,6 +278,9 @@
  • MQTT Device Tracker
  • +
  • + MySensors Device Tracker +
  • Netgear
  • diff --git a/components/digital_ocean/index.html b/components/digital_ocean/index.html index 87e4cbea97..32a4e0ec55 100644 --- a/components/digital_ocean/index.html +++ b/components/digital_ocean/index.html @@ -225,6 +225,9 @@
  • RFXtrx
  • +
  • + Rflink +
  • SCSGate
  • diff --git a/components/discovery/index.html b/components/discovery/index.html index 6adf6b5215..09abbafaff 100644 --- a/components/discovery/index.html +++ b/components/discovery/index.html @@ -175,7 +175,7 @@ If you see Not initializing discovery because co HTTP
  • - Home Assistant 0.37 + Home Assistant 0.38
  • Introduction diff --git a/components/ecobee/index.html b/components/ecobee/index.html index aaed51f549..4ec8fd6a45 100644 --- a/components/ecobee/index.html +++ b/components/ecobee/index.html @@ -265,6 +265,9 @@
  • RFXtrx
  • +
  • + Rflink +
  • SCSGate
  • diff --git a/components/emulated_hue/index.html b/components/emulated_hue/index.html index 9bd0914eae..03f19834a5 100644 --- a/components/emulated_hue/index.html +++ b/components/emulated_hue/index.html @@ -309,6 +309,9 @@ The virtual bridge has the ability to turn entities on or off, or change the bri
  • RFXtrx
  • +
  • + Rflink +
  • SCSGate
  • diff --git a/components/enocean/index.html b/components/enocean/index.html index 5c96b1fa1a..1405eaf322 100644 --- a/components/enocean/index.html +++ b/components/enocean/index.html @@ -248,6 +248,9 @@
  • RFXtrx
  • +
  • + Rflink +
  • SCSGate
  • diff --git a/components/feedreader/index.html b/components/feedreader/index.html index 8ac5c8f22c..a17c525c1a 100644 --- a/components/feedreader/index.html +++ b/components/feedreader/index.html @@ -187,7 +187,7 @@ HTTP
  • - Home Assistant 0.37 + Home Assistant 0.38
  • Introduction diff --git a/components/ffmpeg/index.html b/components/ffmpeg/index.html index 97dc832ede..57df6a033b 100644 --- a/components/ffmpeg/index.html +++ b/components/ffmpeg/index.html @@ -159,9 +159,6 @@ You need the ffmpeg binary in your system

    Related components

      -
    • - FFmpeg Binary Sensor -
    • FFmpeg Camera
    • @@ -251,6 +248,9 @@ You need the ffmpeg binary in your system
    • RFXtrx
    • +
    • + Rflink +
    • SCSGate
    • diff --git a/components/frontend/index.html b/components/frontend/index.html index 4dd4ad2d12..428b73cdbe 100644 --- a/components/frontend/index.html +++ b/components/frontend/index.html @@ -138,7 +138,7 @@ HTTP
    • - Home Assistant 0.37 + Home Assistant 0.38
    • Introduction diff --git a/components/ha/index.html b/components/ha/index.html index 05d75b2cfe..4936a4f020 100644 --- a/components/ha/index.html +++ b/components/ha/index.html @@ -7,7 +7,7 @@ - Home Assistant 0.37 - Home Assistant + Home Assistant 0.38 - Home Assistant @@ -15,7 +15,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -84,7 +84,7 @@

      - Home Assistant 0.37 + Home Assistant 0.38


      @@ -115,7 +115,7 @@
    - Introduced in release: 0.37 + Introduced in release: 0.38

    Category Other

    @@ -142,7 +142,7 @@ HTTP
  • - Home Assistant 0.37 + Home Assistant 0.38
  • Introduction diff --git a/components/hdmi_cec/index.html b/components/hdmi_cec/index.html index a1a75a9932..88753ed926 100644 --- a/components/hdmi_cec/index.html +++ b/components/hdmi_cec/index.html @@ -123,6 +123,12 @@ +

    For the default virtual environment of a Manual installation the command would be as follows.

    + +
    $ ln -s /usr/local/lib/python3.4/site-packages/cec /srv/hass/hass_venv/lib/python3.4/site-packages
    +
    +
    +

    If after symlinking and adding hdmi_cec: to your configuration you are getting the following error in your logs, * failed to open vchiq instance you will also need to add the user account Home Assistant runs under, to the video group. To add the Home Assistant user account to the video group, run the following command. $ usermod -a -G video <hass_user_account>

    @@ -340,6 +346,9 @@ language: ???

    Category Automation

    Example configuration with multiple protocols and some other options set:

    @@ -153,7 +153,7 @@ You can manually rename the created entities by using Home Assistants
    resolvenames
    option +

    The resolvenames option

    We use three approaches to fetch the names of devices. Each assumes you have properly named your devices in your existing Homematic setup. As a general advice: Use ASCII for your devices names. Home Assistant won’t include non-ASCII characters in entity-names.

    @@ -165,19 +165,33 @@ You can manually rename the created entities by using Home Assistants Multiple hosts

    In order to allow communication with multiple hosts or different protocols in parallel (wireless, wired and ip), multiple connections will be established, each to the configured destination. The name you choose for the host has to be unique and limited to ASCII letters.
    Using multiple hosts has the drawback, that the services (explained below) may not work as expected. Only one connection can be used for services, which limits the devices/variables a service can use to the scope/protocol of the host.
    This does not affect the entites in Home Assistant. They all use their own connection and work as expected.

    -

    Variables

    +

    Reading attributes of entities

    -

    It is possible to read and set values of system variables you have setup on the CCU/Homegear. An example of how that is done can be found below. The supported types for setting values are float- and bool-variables.
    -Each variable will be available as it’s own entity in the form of homematic.name. The predefined homematic.homematic variable has the number of service messages as it’s value. You can use these variable-entities like any other entity in Home Assistant to trigger automations.
    +

    Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the template sensor component. Here’s an example of a template sensor that exposes the valve state of a thermostat.

    + +
    sensor:
    +- platform: template
    +  sensors:
    +    bedroom_valve:
    +      value_template: '{{ states.climate.leq123456.attributes.Valve }}'
    +      entity_id: climate.leq123456
    +      friendly_name: 'Bedroom valve'
    +
    +
    + +

    Variables

    + +

    It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables.
    +The states of the variables are available through the attributes of your hub entity (e.g. homematic.rf). Use templates (as mentioned above) to make your variables available to automations or as entities. The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed.

    -

    Events

    +

    Events

    When HomeMatic devices change their state or some other internal value, the CCU/Homegear sends event messages to Home Assistant. These events are automatically parsed and the entities in Home Assistant are updated. However, you can also manually use these events to trigger automations. Two event-types are available:

    @@ -186,7 +200,7 @@ The values of variables are polled from the CCU/Homegear in an interval of 30 se
  • homematic.impulse: For impulse sensors
  • -

    Devices with buttons

    +

    Devices with buttons

    Devices with buttons (e.g. HM-Sen-MDIR-WM55, remote controls) may not be fully visible in the UI. This is intended, as buttons don’t serve any value here and all they do is trigger events. As an example: @@ -211,7 +225,7 @@ The HM-Sen-MDIR-WM55 motion detector will be displayed as 2 entities. A motion s

    The channel parameter is equal to the channel of the button you are configuring the automation for. You can view the available channels in the UI you use to pair your devices. The name depends on if you chose to resolve names or not. If not, it will be the device ID (e.g. LEQ1234657). If you chose to resolve names (and that is successful), it will be the name you have set in your CCU or in the metadata (e.g. “Kitchen Switch”).

    -

    Services

    +

    Services

    -

    Examples

    +

    Examples

    Simulate a button being pressed

    ...
     action:
    @@ -243,17 +257,18 @@ The name depends on if you chose to resolve names or not. If not, it will be the
     
    -

    Set variable

    +

    Set boolean variable to true

    ...
     action:
       service: homematic.set_var_value
       data:
    -    entity_id: homematic.varname_bool
    +    entity_id: homematic.rf
    +    name: Variablename
         value: true
     
    -

    Advanced examples

    +

    Advanced examples

    If you are familiar with the internals of HomeMatic devices, you can manually set values on the devices. This can serve as a workaround if support for a device is currently not available, or only limited functionality has been implemented.
    Using this service provides you direct access to the setValue-method of the primary connection. If you have multiple hosts, you may select the one hosting a specific device by providing the proxy-parameter with a value equivalent to the name you have chosen. In the example configuration from above rf, wired and ip would be valid values.

    @@ -408,6 +423,9 @@ Using this service provides you direct access to the setValue-method of the prim
  • RFXtrx
  • +
  • + Rflink +
  • SCSGate
  • diff --git a/components/http/index.html b/components/http/index.html index 92d391f174..eed055455b 100644 --- a/components/http/index.html +++ b/components/http/index.html @@ -218,7 +218,7 @@ Please note, that sources from trusted_networks< HTTP
  • - Home Assistant 0.37 + Home Assistant 0.38
  • Introduction diff --git a/components/ifttt/index.html b/components/ifttt/index.html index c3f6111b59..fe0d4d171d 100644 --- a/components/ifttt/index.html +++ b/components/ifttt/index.html @@ -242,6 +242,9 @@ You need to setup a unique trigger for each event you sent to IFTTT.

    Category Automation

      +
    • + Alert +
    • Automation
    • diff --git a/components/image_processing.microsoft_face_detect/index.html b/components/image_processing.microsoft_face_detect/index.html new file mode 100644 index 0000000000..fc33360ce1 --- /dev/null +++ b/components/image_processing.microsoft_face_detect/index.html @@ -0,0 +1,200 @@ + + + + + + + + + + Microsoft Face Detect - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      + + + + +
      +

      + Microsoft Face Detect +

      +
      +
      + + +

      The microsoft_face_detect image processing platform allows you to use the Microsoft Face Identify API through Home Assistant. This platform enables you do detect face on camera and fire a event with attributes.

      + +

      Please refer to the component configuration on how to setup the API key.

      + +

      For using the result inside an automation rule, take a look at the component page.

      + +

      Configuration Home Assistant

      + +
      # Example configuration.yaml entry
      +image_processing:
      +  - platform: microsoft_face_detect
      +    source:
      +      - entity_id: camera.door
      +
      +
      + +

      Configuration variables:

      + +
        +
      • group (Required): Microsoft Face group used to detect the person.
      • +
      • confidence (Optional): The minimum of confidence in percent to process with Home Assistant. Defaults to 80.
      • +
      • source array (Required): List of image sources. +
          +
        • entity_id (Required): A camera entity id to get picture from.
        • +
        • name (Optional): This parameter allows you to override the name of your image_processing entity.
        • +
        +
      • +
      • attributes array (Optional): The image search attributes. Supported: age, gender, glasses. Default age, gender.
      • +
      + + +
      + + +
      + + + + +
      +
      + + + + + + \ No newline at end of file diff --git a/components/image_processing.microsoft_face_identify/index.html b/components/image_processing.microsoft_face_identify/index.html index 96409c2572..d3e6aa8ac2 100644 --- a/components/image_processing.microsoft_face_identify/index.html +++ b/components/image_processing.microsoft_face_identify/index.html @@ -7,26 +7,26 @@ - Microsoft Face identify - Home Assistant + Microsoft Face Identify - Home Assistant - + - + - + - - + + @@ -90,7 +90,7 @@
      -

      The microsoft_face_identify image processing platform lets you use Microsoft Face identify API through Home Assistant.

      +

      The microsoft_face_identify image processing platform lets you use Microsoft Face identify API through Home Assistant. This platform allow you do identify persons on camera and fire a event with identify persons.

      Please refer to the component configuration on how to setup the API key.

      @@ -106,6 +106,7 @@ - entity_id: camera.door
    +

    Configuration variables:

  • diff --git a/developers/asyncio_working_with_async/index.html b/developers/asyncio_working_with_async/index.html index 6465865fe6..aca7900456 100644 --- a/developers/asyncio_working_with_async/index.html +++ b/developers/asyncio_working_with_async/index.html @@ -302,6 +302,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/cla/index.html b/developers/cla/index.html index c3071ffa99..26311f1c00 100644 --- a/developers/cla/index.html +++ b/developers/cla/index.html @@ -199,6 +199,7 @@ and not mention sign-off.

  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/cla_sign/index.html b/developers/cla_sign/index.html index 926400e2ac..2ee0c4ea12 100644 --- a/developers/cla_sign/index.html +++ b/developers/cla_sign/index.html @@ -641,6 +641,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/cla_sign_start/index.html b/developers/cla_sign_start/index.html index f4db0b9df9..63f1a52ed2 100644 --- a/developers/cla_sign_start/index.html +++ b/developers/cla_sign_start/index.html @@ -177,6 +177,7 @@ $(document).ready(function(){
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/code_of_conduct/index.html b/developers/code_of_conduct/index.html index e29a31cdd5..18414455df 100644 --- a/developers/code_of_conduct/index.html +++ b/developers/code_of_conduct/index.html @@ -239,6 +239,7 @@ available here.

  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/code_review_component/index.html b/developers/code_review_component/index.html index 986c93f9a1..d746643d68 100644 --- a/developers/code_review_component/index.html +++ b/developers/code_review_component/index.html @@ -198,6 +198,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/code_review_platform/index.html b/developers/code_review_platform/index.html index a518f3a4c3..fd39f72c37 100644 --- a/developers/code_review_platform/index.html +++ b/developers/code_review_platform/index.html @@ -230,6 +230,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_deps_and_reqs/index.html b/developers/component_deps_and_reqs/index.html index 7703f5e40f..2f4151baee 100644 --- a/developers/component_deps_and_reqs/index.html +++ b/developers/component_deps_and_reqs/index.html @@ -197,6 +197,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_discovery/index.html b/developers/component_discovery/index.html index a47d797913..e5b3ccf750 100644 --- a/developers/component_discovery/index.html +++ b/developers/component_discovery/index.html @@ -194,6 +194,7 @@ This option is only available for built-in components.
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_events/index.html b/developers/component_events/index.html index dfc1f8d233..39e43ecaca 100644 --- a/developers/component_events/index.html +++ b/developers/component_events/index.html @@ -162,6 +162,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_generic_discovery/index.html b/developers/component_generic_discovery/index.html index eea4088f99..cff05aad05 100644 --- a/developers/component_generic_discovery/index.html +++ b/developers/component_generic_discovery/index.html @@ -228,6 +228,7 @@ This can be achieved using the load_platformAdd State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_initialization/index.html b/developers/component_initialization/index.html index 50966b7608..5b177a2159 100644 --- a/developers/component_initialization/index.html +++ b/developers/component_initialization/index.html @@ -206,6 +206,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_loading/index.html b/developers/component_loading/index.html index 83f485776a..b7811f0df5 100644 --- a/developers/component_loading/index.html +++ b/developers/component_loading/index.html @@ -177,6 +177,7 @@ Home Assistant will use the directory that contains your config file as the dire
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_states/index.html b/developers/component_states/index.html index 86b5fdc1ad..efc3377ea6 100644 --- a/developers/component_states/index.html +++ b/developers/component_states/index.html @@ -174,6 +174,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/component_visibility/index.html b/developers/component_visibility/index.html index df667c7b74..f2dd4b9917 100644 --- a/developers/component_visibility/index.html +++ b/developers/component_visibility/index.html @@ -171,6 +171,7 @@ You can set a suggestion for your entity’s visibility by setting the Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/creating_components/index.html b/developers/creating_components/index.html index 2d94d6591c..224ad4a917 100644 --- a/developers/creating_components/index.html +++ b/developers/creating_components/index.html @@ -177,6 +177,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/credits/index.html b/developers/credits/index.html index f439e36e1a..828bad3c1a 100644 --- a/developers/credits/index.html +++ b/developers/credits/index.html @@ -95,7 +95,7 @@

    Author

    Contributors

    @@ -106,19 +106,22 @@
  • Aaron Linville (@linville)
  • Aaron Malone (@aaroncm)
  • Aaron Morris (@Morrisai)
  • +
  • Aaron Polley (@xarnze)
  • Abhishek Anand (@aa755)
  • abmantis (@abmantis)
  • Adam Garcia (@pancho-villa)
  • -
  • Adam Mills (@armills)
  • +
  • Adam Mills (@armills)
  • ADeeds (@ADeeds)
  • AdithyanI (@AdithyanI)
  • Aditya Shevade (@adibis)
  • Adrien Brault (@adrienbrault)
  • +
  • Adrián López (@adrianlzt)
  • Alan Bowman (@alanbowman)
  • Albert Lee (@trisk)
  • -
  • Alberto Arias Maestro (@albertoarias)
  • +
  • Alberto Arias Maestro (@albertoarias)
  • Aleksey Gureiev (@alg)
  • -
  • Alex (@asbach)
  • +
  • Alessandro Mogavero (@alexmogavero)
  • +
  • Alex (@asbach)
  • Alex Harvey (@infamy)
  • Alex Mekkering (@AlexMekkering)
  • Alex Popov (@AlexVPopov)
  • @@ -130,19 +133,20 @@
  • Alexandre Perrin (@kAworu)
  • Alfie Day (@Azelphur)
  • Allan Glen (@allanglen)
  • -
  • Alok Saboo (@arsaboo)
  • +
  • Alok Saboo (@arsaboo)
  • AlucardZero (@AlucardZero)
  • amahlaka (@amahlaka)
  • amorsillo (@fignuts)
  • Anastasia A. (@Sacret)
  • Anders Gjendem (@agjendem)
  • +
  • Andreas Cambitsis (@acambitsis)
  • Andreas Jacobsen (@andreasjacobsen93)
  • Andreas Rammhold (@andir)
  • Andreas Renberg (@IQAndreas)
  • Andreea-Daniela Ene (@AndreeaEne)
  • Andrew (@aoakeson)
  • Andrew (@aneisch)
  • -
  • Andrew Cockburn (@acockburn)
  • +
  • Andrew Cockburn (@acockburn)
  • Andrew LeCody (@aceat64)
  • Andrew McClure (@nzfarmer1)
  • Andrew Patton (@acusti)
  • @@ -151,8 +155,8 @@
  • Andrew Thigpen (@andythigpen)
  • Andrew Williams (@nikdoof)
  • andrew-curtis (@andrew-curtis)
  • -
  • andrey-git (@andrey-git)
  • -
  • Andrzej (@andriej)
  • +
  • Andrey (@andrey-git)
  • +
  • Andrzej (@andriej)
  • Andy Lindeman (@alindeman)
  • Andy Loughran (@andylockran)
  • andyat (@andyat)
  • @@ -163,6 +167,7 @@
  • Anurag El Dorado (@aedorado)
  • Ardetus (@Ardetus)
  • Ardi Mehist (@omgapuppy)
  • +
  • arjenfvellinga (@arjenfvellinga)
  • Arnaud Bétrémieux (@arnoo)
  • Arno (@aetjansen)
  • Arthur Leonard Andersen (@leoc)
  • @@ -176,12 +181,15 @@
  • Bart274 (@Bart274)
  • Bartek Celary (@bcelary)
  • Bas Stottelaar (@basilfx)
  • +
  • bbrendon (@bbrendon)
  • Beau Simensen (@simensen)
  • Ben Bangert (@bbangert)
  • Ben Doerr (@bendoerr)
  • Ben Miller (@beepmill)
  • Ben Origas (@borigas)
  • Ben Thomas (@wazoo)
  • +
  • Ben Van Mechelen (@benvm)
  • +
  • Benjamin Affolter (@bliemli)
  • Benjamin Bryan (@ahnooie)
  • Benoit BESSET (@bbesset)
  • bestlibre (@bestlibre)
  • @@ -190,6 +198,7 @@
  • blackdog70 (@blackdog70)
  • Blanyal D’Souza (@blanyal)
  • Boced66 (@boced66)
  • +
  • Boris K (@bokub)
  • Brad Buran (@bburan)
  • Brad Johnson (@bradsk88)
  • BradleyDHobbs (@BradleyDHobbs)
  • @@ -198,18 +207,19 @@
  • Brandon Weeks (@brandonweeks)
  • Brendan Berg (@captainnapalm)
  • Brent Hughes (@bah2830)
  • -
  • Brian J King (@brianjking)
  • +
  • Brent Saltzman (@brent20)
  • +
  • Brian J King (@brianjking)
  • Brian Karani Ndwiga (@rayrayndwiga)
  • Brian Torres-Gil (@btorresgil)
  • Brigham Brown (@brigham)
  • Britton Clapp (@britton-clapp)
  • Bruno Adele (@badele)
  • -
  • Bryce Edwards (@hoopty)
  • +
  • Bryce Edwards (@hoopty)
  • Buut (@buut-vrij)
  • Caius Cioran (@caiuspb)
  • Caleb (@finish06)
  • Cameron Bulock (@cbulock)
  • -
  • Carlo Costanzo (@CCOSTAN)
  • +
  • Carlo Costanzo (@CCOSTAN)
  • carlosmgr (@carlosmgr)
  • Carter (@BluGeni)
  • chanders (@chanders)
  • @@ -217,27 +227,32 @@
  • Charles Spirakis (@srcLurker)
  • Chayoung You (@yous)
  • Chema García (@sch3m4)
  • +
  • Chris Aloi (@ctaloi)
  • Chris Baumgartner (@mchrisb03)
  • +
  • Chris Huegle (@chuegle)
  • Chris LaRose (@cjlarose)
  • -
  • Chris Monteiro (@funstuff234)
  • +
  • Chris Monteiro (@cmonteiro128)
  • Chris Mulder (@chrisvis)
  • Chris R. Miller (@mysteriouspants)
  • Chris Sims (@jcsims)
  • chris-thorn (@chris-thorn)
  • Christiaan Blom (@Deinara)
  • -
  • Christian Brædstrup (@LinuxChristian)
  • +
  • Christian Brædstrup (@LinuxChristian)
  • +
  • Christian Studer (@cstuder)
  • Christoph Wagner (@Christoph-Wagner)
  • Christopher Viel (@Chris-V)
  • chrom3 (@chrom3)
  • Chun-wei Kuo (@Domon)
  • +
  • chz^3 (@chzchzchz)
  • Ciquattro (@CiquattroFPV)
  • -
  • clach04 (@clach04)
  • +
  • clach04 (@clach04)
  • Clemens Wolff (@c-w)
  • Cláudio Ribeiro (@DailyMatters)
  • codeavenger07 (@codeavenger07)
  • -
  • Colin O’Dell (@colinodell)
  • -
  • Corban Mailloux (@corbanmailloux)
  • -
  • Craig J. Ward (@wardcraigj)
  • +
  • Colin O’Dell (@colinodell)
  • +
  • Cooper Dale (@Cooper-Dale)
  • +
  • Corban Mailloux (@corbanmailloux)
  • +
  • Craig J. Ward (@wardcraigj)
  • dainok (@dainok)
  • Dale Higgs (@dale3h)
  • Dan (@danieljkemp)
  • @@ -249,24 +264,25 @@
  • Dan Sullivan (@dansullivan86)
  • Dani (@danichispa)
  • Daniel Escoz (@Darkhogg)
  • -
  • Daniel Høyer Iversen (@Danielhiversen)
  • +
  • Daniel Høyer Iversen (@Danielhiversen)
  • Daniel Matuschek (@usul27)
  • -
  • Daniel Perna (@danielperna84)
  • +
  • Daniel Perna (@danielperna84)
  • Daniel Peukert (@dpeukert)
  • +
  • Daniel Wiberg (@dannew)
  • Danijel Stojnic (@danijelst)
  • Daphne L (@daphotron)
  • dasos (@dasos)
  • Dave Banks (@djbanks)
  • DaveSergeant (@dethpickle)
  • +
  • David (@fanaticDavid)
  • David (@dschoorisse)
  • -
  • David (@fanaticDavid)
  • David Baumann (@daBONDi)
  • David De Sloovere (@DavidDeSloovere)
  • -
  • David McNett (@nugget)
  • +
  • David McNett (@nugget)
  • David Straub (@DavidMStraub)
  • David Tchepak (@dtchepak)
  • David Thomas (@synth3tk)
  • -
  • David-Leon Pohl (@DavidLP)
  • +
  • David-Leon Pohl (@DavidLP)
  • davidedmundson (@davidedmundson)
  • Dean Camera (@abcminiuser)
  • Dean Galvin (@FreekingDean)
  • @@ -275,14 +291,17 @@
  • Dennis Karpienski (@TheRealLink)
  • Dennis Sutch (@sutch)
  • devdelay (@devdelay)
  • +
  • diplix (@diplix)
  • Dmytro Kytsmen (@Kietzmann)
  • doudz (@doudz)
  • dpressle (@dpressle)
  • +
  • dramamoose (@dramamoose)
  • Drew Wells (@drewwells)
  • DrewSK (@dzsquared)
  • -
  • Duoxilian (@Duoxilian)
  • +
  • Duoxilian (@Duoxilian)
  • Dustin S (@texnofobix)
  • Dylan Barlett (@dbarlett)
  • +
  • ecksun (@ecksun)
  • Edward Romano (@oudeismetis)
  • Edwin Smulders (@Dutchy-)
  • eieste (@eieste)
  • @@ -295,14 +314,16 @@
  • Eric Jansen (@ej81)
  • Eric Rolf (@xrolfex)
  • Eric Thompson (@er0ck)
  • -
  • Erik Eriksson (@molobrakos)
  • +
  • Erik Eriksson (@molobrakos)
  • ettisan (@ettisan)
  • -
  • Fabian Affolter (@fabaff)
  • +
  • Fabian Affolter (@fabaff)
  • Fabian Heredia Montiel (@fabianhjr)
  • +
  • fakezeta (@fakezeta)
  • Fares Rihani (@anchepiece)
  • Farzad Noorian (@fnoorian)
  • Felipe Cypriano (@fcy)
  • Felix (@xifle)
  • +
  • Felix Fischer (@felixfischer)
  • Ferry van Zeelst (@StaticCube)
  • Finbarr Brady (@fbradyirl)
  • Flavio Castelli (@flavio)
  • @@ -312,7 +333,8 @@
  • Frantz (@rofrantz)
  • Frederic Hemberger (@fhemberger)
  • Fredrik Haglund (@PetitCircuitLab)
  • -
  • Fredrik Lindqvist (@Landrash)
  • +
  • Fredrik Lindqvist (@Landrash)
  • +
  • freol35241 (@freol35241)
  • froz (@froz)
  • fuga2136 (@fuga2136)
  • GadgetReactor (@GadgetReactor)
  • @@ -320,23 +342,24 @@
  • garrettbeachy (@garrettbeachy)
  • Gaurav Kulkarni (@gauravkulkarni96)
  • Geoff Norton (@kangaroo)
  • -
  • George.M (@nodinosaur)
  • +
  • George.M (@nodinosaur)
  • Georgi Kirichkov (@kirichkov)
  • Georgii Staroselskii (@staroselskii)
  • Gergely Imreh (@imrehg)
  • Gert (@Gerto)
  • -
  • Gianluca Barbaro (@MrMep)
  • +
  • Gianluca Barbaro (@MrMep)
  • Giannie (@Giannie)
  • Giel Janssens (@gieljnssns)
  • Gilles Margerie (@Gilles95)
  • Glyn Hudson (@glynhudson)
  • GMFalka (@GMFalka)
  • -
  • godloth (@godloth)
  • -
  • Gopal Kildoliya (@gopalkildoliya)
  • +
  • godloth (@godloth)
  • +
  • Gopal Kildoliya (@gopalkildoliya)
  • Graeme Smith (@Instagraeme)
  • Graham Christensen (@grahamc)
  • Greg (@theCMack)
  • Greg Dowling (@pavoni)
  • +
  • Greg MacLellan (@gregmac)
  • Greg Stevenson (@gstevenson)
  • Gregor Gruener (@ggruner)
  • gross1989 (@gross1989)
  • @@ -346,7 +369,7 @@
  • gwendalg (@gwendalg)
  • Hajime Morrita (@omo)
  • Hao Hu (@howiehu)
  • -
  • happyleavesaoc (@happyleavesaoc)
  • +
  • happyleavesaoc (@happyleavesaoc)
  • Harald Nagel (@haraldnagel)
  • Hari Menon (@floydpink)
  • Harris Borawski (@hborawski)
  • @@ -354,19 +377,19 @@
  • HBDK (@HBDK)
  • hcooper (@hcooper)
  • Heath Paddock (@heathbar)
  • -
  • Heiko Rothe (@mKeRix)
  • +
  • Heiko Rothe (@mKeRix)
  • Hellowlol (@Hellowlol)
  • Henning Dickten (@hensing)
  • Henryk Plötz (@henryk)
  • +
  • Hermann Kraus (@herm)
  • Hernán R (@hmronline)
  • -
  • HerrHofrat (@HerrHofrat)
  • hexa- (@mweinelt)
  • hexxter (@hexxter)
  • heytcass (@heytcass)
  • Hillary Fraley (@hillaryfraley)
  • hokagegano (@hokagegano)
  • Horea Christian (@TheChymera)
  • -
  • Hugo Dupras (@jabesq)
  • +
  • Hugo Dupras (@jabesq)
  • Huw Davies (@beardedgeek)
  • Hydreliox (@HydrelioxGitHub)
  • Ian Copp (@icopp)
  • @@ -378,6 +401,7 @@
  • irvingwa (@irvingwa)
  • Issac Kelly (@issackelly)
  • Ivo Wever (@Confusion)
  • +
  • J-CMartin (@J-CMartin)
  • J. B. Rainsberger (@jbrains)
  • jack (@jackmakesthings)
  • Jack Chapple (@jchapple)
  • @@ -386,10 +410,13 @@
  • Jake McCrary (@jakemcc)
  • James Cole (@jamespcole)
  • Jamie van Dyke (@fearoffish)
  • -
  • Jan Harkes (@jaharkes)
  • -
  • Jan Losinski (@janLo)
  • -
  • Jan Pobořil (@iBobik)
  • +
  • JammyDodger231 (@JammyDodger231)
  • +
  • Jan Harkes (@jaharkes)
  • +
  • Jan Losinski (@janLo)
  • +
  • Jan Pobořil (@iBobik)
  • +
  • Jan Wh (@janwh)
  • Jan-Preben Mossin (@jpmossin)
  • +
  • Janne Grunau (@jannau)
  • Janos Racz (@rczjns)
  • Jared Beckham (@jtbeckha)
  • Jared J. (@jjensn)
  • @@ -402,14 +429,17 @@
  • Jean Regisser (@jeanregisser)
  • Jean-Philippe Bouillot (@Jypy)
  • Jed Lippold (@jlippold)
  • -
  • Jeff Schroeder (@SEJeff)
  • -
  • Jeff Wilson (@jawilson)
  • +
  • Jeff Schroeder (@SEJeff)
  • +
  • Jeff Wilson (@jawilson)
  • Jeffrey Lin (@linjef)
  • Jeremiah Wuenschel (@jer)
  • Jeremy (@Wutname1)
  • +
  • jeremydk (@jeremydk)
  • Jerod Santo (@jerodsanto)
  • Jerold Albertson (@jeroldalbertson-wf)
  • +
  • Jerry Workman (@JerryWorkman)
  • Jesse Newland (@jnewland)
  • +
  • Jesse Osiecki (@stratosmacker)
  • Jesse Zoldak (@jzoldak)
  • jgriff2 (@jgriff2)
  • Jim Rollenhagen (@jimrollenhagen)
  • @@ -419,35 +449,38 @@
  • Job Vermeulen (@jmvermeulen)
  • Joe Lee (@xnoodle)
  • Joe Rocklin (@joerocklin)
  • -
  • Joeboyc2 (@Joeboyc2)
  • +
  • Joeboyc2 (@Joeboyc2)
  • Joel Asher Friedman (@joelash)
  • Joel Clermont (@joelclermont)
  • joemcmonagle (@joemcmonagle)
  • -
  • Johan Bloemberg (@aequitas)
  • +
  • Johan Bloemberg (@aequitas)
  • Johan Carlquist (@theseal)
  • Johan Klintberg (@moogblob)
  • Johan Svensson (@jsvensson)
  • -
  • Johann Kellerman (@kellerza)
  • -
  • John Arild Berentsen (@turbokongen)
  • +
  • Johann Kellerman (@kellerza)
  • +
  • John Arild Berentsen (@turbokongen)
  • John Lindley (@jwl17330536)
  • John McLaughlin (@loghound)
  • -
  • John Mihalic (@mezz64)
  • +
  • John Mihalic (@mezz64)
  • John W. Long (@jlong)
  • John Williams (@Jaidan)
  • +
  • Jon (@JonMurphy)
  • Jon Caruana (@joncar)
  • Jon Evans (@craftyjon)
  • Jon Maddox (@maddox)
  • Jonatan Castro (@jcastro)
  • -
  • Jonathan Baginski (@jbags81)
  • +
  • Jonathan Baginski (@jbags81)
  • Jonathan Martens (@jmartens)
  • joopert (@joopert)
  • Jordan Keith (@zeddD1abl0)
  • +
  • Jose Juan Montes (@jjmontesl)
  • Josep del Rio (@joseprio)
  • -
  • Joseph Carter (@iKarith)
  • +
  • Joseph Carter (@iKarith)
  • Joseph Hassell (@poster983)
  • -
  • Joseph Piron (@eagleamon)
  • +
  • Joseph Piron (@eagleamon)
  • +
  • Josh Anderson (@andersonshatch)
  • Josh Nichols (@technicalpickles)
  • -
  • Josh Wright (@JshWright)
  • +
  • Josh Wright (@JshWright)
  • JSprengard (@JSprengard)
  • JTimNolan (@JTimNolan)
  • jtscott (@jtscott)
  • @@ -455,10 +488,11 @@
  • juggie (@juggie)
  • Julien Danjou (@jd)
  • jumpkick (@jumpkick)
  • +
  • Justin Dray (@justin8)
  • Justin Good (@justingood)
  • Justin Hayes (@GussyH)
  • Justin Moy (@justincmoy)
  • -
  • Justin Weberg (@justweb1)
  • +
  • Justin Weberg (@justweb1)
  • Justyn Shull (@justyns)
  • Kai (@luxus)
  • KAMAL AWASTHI (@KamalAwasthi)
  • @@ -474,17 +508,20 @@
  • Kevin Gisi (@gisikw)
  • Kevin Gottsman (@gottsman)
  • Kevin Panaro (@kevinpanaro)
  • +
  • Kevin Tawaststjerna (@ktawaststjerna)
  • Keyasha Brothern (@KMBrothern)
  • kireyeu (@kireyeu)
  • KiXaM 刻む (@kixam)
  • Klaas Hoekema (@KlaasH)
  • -
  • KmanOz (@KmanOz)
  • koen01 (@koen01)
  • Krasimir Chariyski (@Chariyski)
  • +
  • Krasimir Zhelev (@zhelev)
  • Kumar Gaurav Pandey (@gaurav1911)
  • Kyle Gordon (@kylegordon)
  • -
  • Kyle Hendricks (@kylehendricks)
  • +
  • Kyle Hendricks (@kylehendricks)
  • +
  • lamiskin (@lamiskin)
  • Lars Alexander Blumberg (@larsblumberg)
  • +
  • lee-js (@lee-js)
  • Leon (@leonsim)
  • Leonardo Saraiva (@vyper)
  • Lewis Juggins (@lwis)
  • @@ -493,10 +530,10 @@
  • Lindsay Ward (@lindsaymarkward)
  • linuxlurak (@linuxlurak)
  • LucaSoldi (@LucaSoldi)
  • -
  • Lukas (@lukas-hetzenecker)
  • +
  • Lukas (@lukas-hetzenecker)
  • Luke Armstrong (@lukearmstrong)
  • Luke Karrys (@lukekarrys)
  • -
  • Lupin Demid (@lupin-de-mid)
  • +
  • Lupin Demid (@lupin-de-mid)
  • Madhan Sundaram (@madhan5000)
  • Magas (@magas0)
  • Maggi Trymbill (@trymbill)
  • @@ -514,31 +551,35 @@
  • Marc Plano-Lesay (@Kernald)
  • Marcel (@MTRNord)
  • Marcel030nl (@Marcel030nl)
  • -
  • Marcelo Moreira de Mello (@tchellomello)
  • +
  • Marcelo Moreira de Mello (@tchellomello)
  • +
  • Marcin Jaworski (@yawor)
  • Marijn Giesen (@marijngiesen)
  • Mark (@scmmmh)
  • Mark Huson (@mehuman)
  • Mark King (@vemek)
  • Mark Nichols (@zanshin)
  • +
  • Mark Oude Veldhuis (@markoudev)
  • +
  • markcarline (@markcarline)
  • markferry (@markferry)
  • Markus Peter (@bimbar)
  • Markus Stenberg (@fingon)
  • Markus Thiel (@mackelito)
  • Martin Bernstorff (@ryqiem)
  • Martin Elwin (@melwin)
  • -
  • Martin Hjelmare (@MartinHjelmare)
  • +
  • Martin Hjelmare (@MartinHjelmare)
  • Martin J. Laubach (@mjl)
  • -
  • Martin Rowan (@shortbloke)
  • +
  • Martin Rowan (@shortbloke)
  • Martin Vacula (@MatoKafkac)
  • martst (@martst)
  • Masahiro Kamata (@kamatari)
  • Mason Stewart (@masondesu)
  • -
  • Mathew Peterson (@mathewpeterson)
  • +
  • Mathew Peterson (@mathewpeterson)
  • Mathieu Maret (@mmaret-geny)
  • Mathieu Maret (@mmaret)
  • +
  • Matt Cahill (@matt-cahill)
  • Matt Enright (@wickedshimmy)
  • Matt Hall (@Neko22)
  • -
  • Matt N. (@mnoorenberghe)
  • +
  • Matt N. (@mnoorenberghe)
  • Matt Rogers (@rogersmj)
  • Matteo Lampugnani (@t30)
  • Matthew Bowen (@mgbowen)
  • @@ -548,6 +589,7 @@
  • Matthias Urlichs (@smurfix)
  • Max Rumpf (@Maxr1998)
  • Mel Riffe (@melriffe)
  • +
  • mertenats (@mertenats)
  • Micha LaQua (@milaq)
  • Michael (@hartmms)
  • Michael Auchter (@auchter)
  • @@ -555,95 +597,85 @@
  • Michael G. Schwern (@schwern)
  • Michael Gilbert (@Zyell)
  • Michael Kutý (@michaelkuty)
  • -
  • Michael Liu (@icefalcn)
  • +
  • Michael Luggen (@l00mi)
  • Michael Requeny (@requenym)
  • Michael Shim (@shimeez)
  • -
  • MichaelSprague (@MichaelSprague)
  • -
  • Michaël Arnauts (@michaelarnauts)
  • +
  • Michaël Arnauts (@michaelarnauts)
  • Michel Settembrino (@MS-Informatique)
  • Mikayla Hutchinson (@mhutch)
  • -
  • Mike Ballou (@ballou88)
  • Mike Hennessy (@henworth)
  • -
  • Mike Nicholson (@themikenicholson)
  • mikebarris (@mikebarris)
  • mikey (@pfista)
  • Mikkel Høgh (@mikl)
  • Milas Bowman (@milas)
  • MinchinWeb (@MinchinWeb)
  • -
  • miniconfig (@miniconfig)
  • +
  • miniconfig (@miniconfig)
  • mnestor (@mnestor)
  • -
  • Mokilok (@Mokilok)
  • -
  • Molodax (@Molodax)
  • +
  • Molodax (@Molodax)
  • Moon Shot (@moonshot)
  • moskovskiy82 (@moskovskiy82)
  • mtl010957 (@mtl010957)
  • myoung34 (@myoung34)
  • -
  • Naren Salem (@naren8642)
  • -
  • Nathan Broadbent (@ndbroadbent)
  • -
  • Nathan Freitas (@n8fr8)
  • -
  • Nathan Henrie (@n8henrie)
  • -
  • Nathan Long (@nathanl)
  • +
  • Nathan Henrie (@n8henrie)
  • Neil Lathwood (@laf)
  • -
  • NeLLyMerC (@NeLLyMerC)
  • Nemanja Stefanovic (@nemik)
  • +
  • neonbunny (@neonbunny)
  • Ness (@Xx-Ness-xX)
  • Nicholas Sideras (@nsideras)
  • -
  • Nick Hammond (@nickhammond)
  • -
  • Nick Sabinske (@quadportnick)
  • -
  • Nick Touran (@partofthething)
  • -
  • Nick Vella (@nvella)
  • -
  • Nick Waring (@nickwaring)
  • +
  • Nick Sabinske (@quadportnick)
  • +
  • Nick Touran (@partofthething)
  • +
  • Nick Vella (@nvella)
  • +
  • Nick Waring (@nickwaring)
  • Nicolas Graziano (@ngraziano)
  • +
  • Nicolas Martignoni (@martignoni)
  • Nils Uliczka (@darookee)
  • NMA (@nma83)
  • -
  • nodomain (@nodomain)
  • +
  • nodomain (@nodomain)
  • Nolan Gilley (@nkgilley)
  • -
  • nordlead2005 (@nordlead2005)
  • +
  • nordlead2005 (@nordlead2005)
  • Nuno Sousa (@nunofgs)
  • -
  • OGINO Masanori (@omasanori)
  • +
  • nunojusto (@nunojusto)
  • OLD PROFILE! Go to /dennisreimann (@dbloete)
  • -
  • Olimpiu Rob (@olimpiurob)
  • +
  • Ole-Kenneth (@olekenneth)
  • +
  • Oleksii Serdiuk (@leppa)
  • +
  • Olimpiu Rob (@olimpiurob)
  • +
  • Oliv3rDog (@Oliv3rDog)
  • Oliver (@scarface-4711)
  • Oliver van Porten (@mcdeck)
  • Open Home Automation (@open-homeautomation)
  • -
  • OpenDave15 (@OpenDave15)
  • -
  • Otto Winter (@OttoWinter)
  • +
  • OpenDave15 (@OpenDave15)
  • +
  • Otto Winter (@OttoWinter)
  • Parker Moore (@parkr)
  • Pascal Bach (@bachp)
  • -
  • Pascal Vizeli (@pvizeli)
  • +
  • Pascal Vizeli (@pvizeli)
  • patkap (@patkap)
  • Patrick Aikens (@duckpuppy)
  • -
  • Patrick Hobusch (@pathob)
  • Patrick White (@pw)
  • -
  • Paul (@PollieKrismis)
  • Paul Philippov (@themactep)
  • Pavel Ponomarev (@awsum)
  • -
  • Pavel Pravosud (@rwz)
  • -
  • Pedro Navarro (@pedronavf)
  • +
  • Pedro Navarro (@pedronavf)
  • Pedro Pombeiro (@PombeirP)
  • Per Sandström (@persandstrom)
  • -
  • Petar Petrov (@MindFreeze)
  • Pete Peterson (@petey)
  • -
  • Petr Vraník (@konikvranik)
  • +
  • Petr Vraník (@konikvranik)
  • phardy (@phardy)
  • Phil Haack (@Haacked)
  • Phil Hansen (@Hansen8601)
  • -
  • Phil Hawthorne (@philhawthorne)
  • -
  • Phil Kates (@philk)
  • +
  • Phil Hawthorne (@philhawthorne)
  • +
  • Phil Kates (@philk)
  • Phileep (@Phileep)
  • Philip Hofstetter (@pilif)
  • Philip Lundrigan (@philipbl)
  • -
  • Pierre Ståhl (@postlund)
  • +
  • Philipp Schmitt (@pschmitt)
  • +
  • Pierre Ståhl (@postlund)
  • pinksocks (@pinksocks)
  • Piratonym (@Piratonym)
  • -
  • Pratyush Mohapatra (@Ativerc)
  • PuckStar (@PuckStar)
  • -
  • Qwertee (@Qwertee)
  • r-jordan (@r-jordan)
  • R1chardTM (@R1chardTM)
  • -
  • Randall Mason (@ClashTheBunny)
  • -
  • Rashmi Yadav (@raysrashmi)
  • -
  • René (@rretsiem)
  • +
  • ray0711 (@ray0711)
  • +
  • rbflurry (@rbflurry)
  • +
  • RBHR (@rbhr)
  • René Kliment (@renekliment)
  • Rev Michael Greb (@mikegrb)
  • rhooper (@rhooper)
  • @@ -651,48 +683,43 @@
  • Richard Arends (@Mosibi)
  • Richard Cox (@Khabi)
  • Richard Cunningham (@rythie)
  • -
  • Richard Huish (@Genestealer)
  • rkabadi (@rkabadi)
  • -
  • rmevans9 (@rmevans9)
  • Rob Capellini (@capellini)
  • -
  • Rob Cranfill (@RobCranfill)
  • -
  • Rob Johnson (@robjohnson189)
  • +
  • Rob Johnson (@robjohnson189)
  • Rob Slifka (@rslifka)
  • -
  • Robbie Trencheny (@robbiet480)
  • -
  • Robby Grossman (@freerobby)
  • -
  • Robert Kowalski (@robertkowalski)
  • -
  • Robin Laurén (@llauren)
  • -
  • Roddie Hasan (@eiddor)
  • -
  • Roi Dayan (@roidayan)
  • -
  • Ron Klinkien (@cyberjunky)
  • +
  • Robbie Trencheny (@robbiet480)
  • +
  • Robby Grossman (@freerobby)
  • +
  • Robin Laurén (@llauren)
  • +
  • Roddie Hasan (@eiddor)
  • +
  • Roi Dayan (@roidayan)
  • +
  • Roman (@HerrHofrat)
  • +
  • Ron Klinkien (@cyberjunky)
  • Ronald Dehuysser (@rdehuyss)
  • roqeer (@roqeer)
  • Rowan (@GreenTurtwig)
  • rpr69 (@rpr69)
  • RubenKelevra (@RubenKelevra)
  • rubund (@rubund)
  • -
  • Russ Nelson (@RussNelson)
  • Russell Cloran (@rcloran)
  • Ryan Borstelmann (@ryanborstelmann)
  • Ryan Bray (@rbray89)
  • Ryan Daigle (@rwdaigle)
  • -
  • Ryan Gibbons (@rtgibbons)
  • -
  • Ryan Kraus (@rmkraus)
  • -
  • Ryan Spicer (@alterscape)
  • +
  • Ryan Kraus (@rmkraus)
  • +
  • Ryan Parrish (@stickystyle)
  • Ryan Turner (@ryanturner)
  • s1gnalrunner (@s1gnalrunner)
  • +
  • Sam Holmes (@sam3d)
  • Sam Riley (@samriley)
  • Sam Whited (@SamWhited)
  • sam-io (@sam-io)
  • Samuel Bétrisey (@betrisey)
  • -
  • Samuel Mertenat (@mertenats)
  • Sander de Leeuw (@sdeleeuw)
  • sander76 (@sander76)
  • schneefux (@schneefux)
  • Scott Bartuska (@bing281)
  • Scott O’Neil (@americanwookie)
  • Scott Reston (@ih8gates)
  • -
  • Sean Dague (@sdague)
  • +
  • Sean Dague (@sdague)
  • Sebastian Hartnick (@goir)
  • Sebastian von Minckwitz (@teodoc)
  • sfam (@sfam)
  • @@ -701,29 +728,34 @@
  • Simon Elsbrock (@else)
  • Simon Szustkowski (@simonszu)
  • Sjors Spoorendonk (@sjorsjes)
  • -
  • smolz (@smolz)
  • +
  • smolz (@smolz)
  • +
  • snagytx (@snagytx)
  • snizzleorg (@snizzleorg)
  • srirams (@srirams)
  • St. John Johnson (@stjohnjohnson)
  • Stefan Jonasson (@stefan-jonasson)
  • +
  • Stefano Scipioni (@scipioni)
  • Stephen Edgar (@ntwb)
  • Stephen Hoekstra (@shoekstra)
  • Stephen Spalding (@fotoetienne)
  • Steven Barnes (@salt-lick)
  • Steven Webb (@cy1701)
  • -
  • Stu Gott (@stu-gott)
  • +
  • Stu Gott (@stu-gott)
  • +
  • Stéphane Bidoul (ACSONE) (@sbidoul)
  • sustah (@sustah)
  • +
  • System Tester (@systemtester)
  • Sytone (@sytone)
  • Sören Oldag (@soldag)
  • -
  • Teagan Glenn (@Teagan42)
  • +
  • Teagan Glenn (@Teagan42)
  • techtrails (@techtrails)
  • Teemu Mikkonen (@T3m3z)
  • Teemu Patja (@tpatja)
  • -
  • Teemu R. (@rytilahti)
  • +
  • Teemu R. (@rytilahti)
  • Teguh Sobirin (@tjstyle)
  • Terry Carlin (@terrycarlin)
  • The Gitter Badger (@gitter-badger)
  • Theb-1 (@Theb-1)
  • +
  • thecynic (@thecynic)
  • thejacko12354 (@thejacko12354)
  • Theodor Lindquist (@theolind)
  • Thiago Oliveira (@chilicheech)
  • @@ -732,6 +764,16 @@
  • Thom Troy (@ttroy50)
  • Thomas (@ktpx)
  • Thomas Friedel (@tfriedel)
  • +
  • + + + + + + + +
    [ThUnD3rGr33n (@thundergreen)](https://github.com/thundergreen “4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io”)
    +
  • Tim (@tinglis1)
  • Tim Gray (@tgray)
  • Tim Harton (@timharton)
  • @@ -741,13 +783,14 @@
  • Tom Dickman (@tdickman)
  • Tom Duijf (@tomduijf)
  • Tom Hoover (@tomhoover)
  • -
  • Tom Matheussen (@Tommatheussen)
  • +
  • Tom Matheussen (@Tommatheussen)
  • Tomi Tuhkanen (@ttu)
  • Touliloup (@RiRomain)
  • tradiuz (@tradiuz)
  • +
  • Trevor (@tboyce1)
  • Trey Hunner (@treyhunner)
  • trollkarlen (@trollkarlen)
  • -
  • Valentin Alexeev (@valentinalexeev)
  • +
  • Valentin Alexeev (@valentinalexeev)
  • Valentin VĂLCIU (@axiac)
  • Vitor Espindola (@vitorespindola)
  • Vittorio Monaco (@vittoriom)
  • @@ -763,11 +806,14 @@
  • Will Heid (@bassclarinetl2)
  • Will Hughes (@insertjokehere)
  • Willems Davy (@joyrider3774)
  • -
  • William Scanlon (@w1ll1am23)
  • +
  • William Scanlon (@w1ll1am23)
  • wind-rider (@wind-rider)
  • wokar (@wokar)
  • -
  • XECDesign (@XECDesign)
  • +
  • Wolf-Bastian Pöttner (@BastianPoe)
  • +
  • XECDesign (@XECDesign)
  • Xorso (@Xorso)
  • +
  • Yannic-HAW (@Yannic-HAW)
  • +
  • Yannick Simard (@TheRaven)
  • yasin (@yasinS)
  • Zac Hatfield Dodds (@Zac-HD)
  • Zac Mrowicki (@zmrow)
  • @@ -779,7 +825,7 @@

    This page is irregularly updated using the credits_generator tool. If you think that you are missing, please let us know.

    -

    This page was last updated Sunday, January 22nd 2017, 3:58:53 am UTC.

    +

    This page was last updated Saturday, February 11th 2017, 9:38:58 pm UTC.

    @@ -851,6 +897,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development/index.html b/developers/development/index.html index fcef853c91..10dc88cb3a 100644 --- a/developers/development/index.html +++ b/developers/development/index.html @@ -188,6 +188,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_catching_up/index.html b/developers/development_catching_up/index.html index 1d9c195fc5..4be01ffecd 100644 --- a/developers/development_catching_up/index.html +++ b/developers/development_catching_up/index.html @@ -186,6 +186,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_checklist/index.html b/developers/development_checklist/index.html index e1fbdfbbfb..590355fced 100644 --- a/developers/development_checklist/index.html +++ b/developers/development_checklist/index.html @@ -174,6 +174,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_environment/index.html b/developers/development_environment/index.html index bef90bee66..bfd92a9682 100644 --- a/developers/development_environment/index.html +++ b/developers/development_environment/index.html @@ -237,6 +237,7 @@ logging to DEBUG to see even more details about what is going on.

  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_submitting/index.html b/developers/development_submitting/index.html index f3dd6c3404..6a1eaa212c 100644 --- a/developers/development_submitting/index.html +++ b/developers/development_submitting/index.html @@ -199,6 +199,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_testing/index.html b/developers/development_testing/index.html index 7e94470c7f..214e00f90e 100644 --- a/developers/development_testing/index.html +++ b/developers/development_testing/index.html @@ -214,6 +214,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/development_validation/index.html b/developers/development_validation/index.html index 7ecac41243..71e87aedd0 100644 --- a/developers/development_validation/index.html +++ b/developers/development_validation/index.html @@ -240,6 +240,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/frontend/index.html b/developers/frontend/index.html index 44ca5f30b4..3807bc4236 100644 --- a/developers/frontend/index.html +++ b/developers/frontend/index.html @@ -229,6 +229,7 @@ Do not use development mode in production. Home Assistant uses aggressive cachin
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/frontend_add_card/index.html b/developers/frontend_add_card/index.html index ed1e22346e..218bf3b27b 100644 --- a/developers/frontend_add_card/index.html +++ b/developers/frontend_add_card/index.html @@ -180,6 +180,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/frontend_add_more_info/index.html b/developers/frontend_add_more_info/index.html index c3f13d5ea3..e7d24be0f6 100644 --- a/developers/frontend_add_more_info/index.html +++ b/developers/frontend_add_more_info/index.html @@ -175,6 +175,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/frontend_creating_custom_panels/index.html b/developers/frontend_creating_custom_panels/index.html index 64b21da7cf..016a270d26 100644 --- a/developers/frontend_creating_custom_panels/index.html +++ b/developers/frontend_creating_custom_panels/index.html @@ -226,6 +226,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/frontend_creating_custom_ui/index.html b/developers/frontend_creating_custom_ui/index.html new file mode 100644 index 0000000000..101b197ae8 --- /dev/null +++ b/developers/frontend_creating_custom_ui/index.html @@ -0,0 +1,256 @@ + + + + + + + + + + Creating custom UI - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Creating Custom UI +

    +
    +
    + + +

    If you would like to use your own State card without merging your code into home-assistant-polymer you can create your own implementation.

    + +
      +
    • Put the element source file and its dependencies in www/custom_ui/ directory under you homeassistant config.
    • +
    + +

    For example if creating a state card for the light domain named my_custom_light_card put state-card-my_custom_light_card.html in www/custom_ui/.

    + +

    That file should implement <state-card-my_custom_light_card> tag with Polymer.

    + +

    In state-card-my_custom_light_card.html you should use <link rel="import"> to import all the dependencies not used by Homeassistant UI. +Do not import any dependencies used by Homeassistant UI. +Importing those will work in development: 1 mode, but will fail in production mode.

    + +
      +
    • In the customize: section of configuration.yaml put custom_ui_state_card: <element-name>.
    • +
    + +

    For example:

    +
    homeassistant:
    +  customize:
    +    - entity_id: light
    +      custom_ui_state_card: my_custom_light_card
    +
    +
    + +

    For more possibilities, see the Custom UI section on our Examples page.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/developers/helpers/index.html b/developers/helpers/index.html index 1bd8e418a5..41df77467f 100644 --- a/developers/helpers/index.html +++ b/developers/helpers/index.html @@ -170,6 +170,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/index.html b/developers/index.html index a4612f9fee..29a8ca0231 100644 --- a/developers/index.html +++ b/developers/index.html @@ -174,6 +174,7 @@ Diagram showing interaction between components and the Home Assistant core.
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/license/index.html b/developers/license/index.html index 6bd3b50101..e70ba2807b 100644 --- a/developers/license/index.html +++ b/developers/license/index.html @@ -366,6 +366,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/maintenance/index.html b/developers/maintenance/index.html index 3d3d9c9400..21828d14a2 100644 --- a/developers/maintenance/index.html +++ b/developers/maintenance/index.html @@ -190,6 +190,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/multiple_instances/index.html b/developers/multiple_instances/index.html index a408e7cd10..3279582203 100644 --- a/developers/multiple_instances/index.html +++ b/developers/multiple_instances/index.html @@ -193,6 +193,7 @@ Because each slave maintains its own Service Registry it is possible to have mul
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/platform_example_light/index.html b/developers/platform_example_light/index.html index c83077877e..8b05a9aa6e 100644 --- a/developers/platform_example_light/index.html +++ b/developers/platform_example_light/index.html @@ -273,6 +273,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/platform_example_sensor/index.html b/developers/platform_example_sensor/index.html index 8449f44bc0..9a2b0a9c44 100644 --- a/developers/platform_example_sensor/index.html +++ b/developers/platform_example_sensor/index.html @@ -216,6 +216,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/python_api/index.html b/developers/python_api/index.html index 5357c8745d..990dda13e4 100644 --- a/developers/python_api/index.html +++ b/developers/python_api/index.html @@ -346,6 +346,7 @@ longer timeout.

  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/releasing/index.html b/developers/releasing/index.html index f398560cfb..dfb4b82e17 100644 --- a/developers/releasing/index.html +++ b/developers/releasing/index.html @@ -200,6 +200,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/rest_api/index.html b/developers/rest_api/index.html index d82c0e3240..a12f4d79d4 100644 --- a/developers/rest_api/index.html +++ b/developers/rest_api/index.html @@ -651,6 +651,7 @@ If your client does not support DELETE HTTP requests you can add an
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/server_sent_events/index.html b/developers/server_sent_events/index.html index 8ab0a777eb..a5cc97646b 100644 --- a/developers/server_sent_events/index.html +++ b/developers/server_sent_events/index.html @@ -223,6 +223,7 @@
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/website/index.html b/developers/website/index.html index 7b54ee4b38..eaa00b4fb1 100644 --- a/developers/website/index.html +++ b/developers/website/index.html @@ -293,6 +293,7 @@ redirect_from: /getting-started/android/
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/developers/websocket_api/index.html b/developers/websocket_api/index.html index b948ec48bd..529d1904de 100644 --- a/developers/websocket_api/index.html +++ b/developers/websocket_api/index.html @@ -526,6 +526,7 @@ b. Server can send results of previous commands.
  • Add State Card
  • Add More Info Dialog
  • Add Custom Panels
  • +
  • Add Custom UI
  • diff --git a/ecosystem/ios/index.html b/ecosystem/ios/index.html index 93ea4a7dd2..6986e787f7 100644 --- a/ecosystem/ios/index.html +++ b/ecosystem/ios/index.html @@ -120,7 +120,7 @@ Currently, the app is only available via a closed beta. It will be on the App St

    The ios component is the companion component for the Home Assistant iOS app. While not required, adding the ios component to your setup will greatly enhance the iOS app with new notification, location and sensor functions not possible with a standalone app.

    -

    Loading the ios component will also load the device_tracker and zeroconf components. It also provides functionality required for the iOS notify platform but will not automatically load the notify component or platform as of 0.31.1. You must manually load it. See the iOS notify platform for more information.

    +

    Loading the ios component will also load the device_tracker, zeroconf and notify platforms.

    Setup

    diff --git a/ecosystem/ios/notifications/index.html b/ecosystem/ios/notifications/index.html index a4dc583f1a..409d03f1d2 100644 --- a/ecosystem/ios/notifications/index.html +++ b/ecosystem/ios/notifications/index.html @@ -94,19 +94,7 @@

    The ios notify platform enables sending push notifications to the Home Assistant iOS app.

    -

    Setup

    - -
    # Example configuration.yaml entry
    -notify:
    -  - platform: ios
    -
    -
    - -

    Configuration variables:

    - -
      -
    • name (Optional): The name of the service.
    • -
    +

    The ‘ios’ component will automatically load the notify serivce. No extra configuration is needed or supported.

    diff --git a/images/blog/2017-02-0.38/social.png b/images/blog/2017-02-0.38/social.png new file mode 100644 index 0000000000000000000000000000000000000000..b0446f46f9297cff36560370b7b6de082646ced6 GIT binary patch literal 113811 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 znt�_CS3yr(G&~jr1?B`7#wGkdw5y%z$GHFLvEB;^XH}?*H&thhF=;J%nH#ogLqF z9MlC#4FP#P2Hg~-nR(|T#0W$U!nW9$^JO9A{666N(O!{v6Il1!!JhUP=^VEDmx~jx zA)ejTes1h}*Uh+_v${Sn31nMTvMaA{WuRUOwjF~k?{wK3>o^)-rid#_r@q`y22UA48qd1OqDUtgCn*Is0Rog<_uD~p=kHRijpyVJVw93ze? z*9W}Dbi*AC#hLoC1_|pmRonS#x9V5rtSn4#)Z17v5|jD04@T7Yk5H)nq=OZ~Xf+j_ zYdy4vU(daJL;P&yW>~d@DJsp23W!x?|JDhqtgnY{YdTlUA0(?0HF3TszG@LayN{Ex zA5q4_$f6jP*Tef@O9*ZLz9cq#JhA(iqK$p5+ZSfs>~CL~__7zCJs|6ilE=m&xm_^U z_j-FhmKj&TPeD2HJ=>Ck%*T%`rK~2M@9462%JZ=U@nl4ZtnQW^Z5J?~CKz;lkx&qs z-n`$W)r^HF(V*g#nV+%37m|OUt6-?mbNHETb8KbF!_MLMLWlTX&2hfpZb2Vo$DO@} zf7lUpthOjNNd`%p`kHe@A7;;|-@FoNl2PDsGs7*-B;rSMp1h$$a6mK7fcHws>1ULJ z;d90>1&7>M`=WF>>M`FMCtN?8SLLs;6-&Y#pKDVkV`?RT98qeiF8cGKc92%3!{_x{ z8NAWv9R6FFS#DG$iXSV^o6NXtvq{XIAgRtNLel ze^}StilcAOgftoD=7*SQA@~yMbp@e^lyhHSyX&hMJUTvtNUI*ij|m+F|Nc-@R{jO= zE}qY{{dmi$n5%LvnUWHTaU$)yv~6o+ud`RYorm3KP3!xg!9&@`*-G!w@tpRPmLMCt zqt(|vZS5shRnl^#t~Pg_^iLl3mTs!Qc2r2kp?fmr#nJWG^>)k{C_{n- zA=aTdZan|OXetV$_IV9o6T|Di59s3vG(`J`@n`l;e@)`eyuCp zb!cF~XtZlyoDyX-s;H#I4sRowHBvKloMMcY0W)ao2RW~zIZ?a->Td4Hxk2m9OJe_a z1-41mQcu>Xlu%z=3J+41WomYcOljHROOU$-o@)<{FUHr8E5vbQ_DjImc;;a{Ym&jxge zQPVlR-hR)(TIcA9|J`zXDg5r~TC4i8@wKa$k{2G`qh*f%qCp#ps@My#Ij^kyBo|&_ z=&W##CHz!Z$kE;pKN1@WkrvibNhm*8yA3fIUIzx~r@Bq~0Tu+3o!A70wq+fy|B_qT=(a6%Taj$B$$a!`@XjKAyRfQDrQ|MW6nhx;5T&jrg2z@J&a;bB6?z zh%8b?OPXOAK=dZx7ZRmW%p}S+=_4SoV3v ze3lU+v*q!FNNGBU(Rz($l=7Q3PDg>`rAPjB4$bnYi;zNNyc<2| zll5(`Ymyr)BVDrv`E>Nwne?3gBDU7_puPNBkO?!Fl6<0*`{1lgU~#PY_EoiE*YJd?C+&N(Cy{Fd$~_``)ZAYE zB5iC9)s?nbtb#qB7{yX6$gyX|^GafQ1TfHk0@*)5E zXt>Ar`!}A>gALm>kH$(gj+(KQEzb^l12-`i1+DzkXJbX{qzvB<31|f?i=T1{{rS4` zDF42Y>CnP=6szphDMLDoM?dcW(bq?Rq0`T)Wcjo9&(m~>FM8kV{mcF1k;h33rTkC6 zSo(cmj43S~Z!N(+dCV86lEjzsIqFN0W}7LK&71jNh103O!Tx8RGHJ}X_!2@1?P4_( ze82Z6uGlp+&^R6CVkWd-&Qu`pYcqChCm0&5j@RzA&8D7Wc`2~zev{r!ZzaSN`->T! zLY-2Uu;CYGzYjNyrj|qBjcrb;7YZ6~@v2OO$gY$jI~aH{^`r$Ya0J{eom}B=oY?N*Gr?4W{%0 zPatnuCuhiS@6g116K$+_xOe{T)1Y?gK5MSzpt`%Bk5OCv%MA%A#O;iyG?a7kOBJXJ zy_YN){7>{A8`hnX%Hgyiir-Z{6Qnr?IjitCP)^Y0^*r_l?3CF@9&sSeDUtY@t1GF5 zGPcP=Datzh;f4yNKK?znv_FYeA;b-E-Sow37Q}k4r`{ZL`(g85Uov^^#o8x><|r;< z-&ifSotGrv>d$Jqra2V+q7(Cu(L6Y&42#SXhEq4oOSWUUhL1B6m))jlj#J$e_Uk8p z1s3TxCpfTCA2qwrB!qO8K5sBIopfS!8qx_UuOX(nQq?78aLk?WeXg3%cK#{Jch@jV z_ZOHAjDPvL@s7OdWUbeq8cuOC~b}x97WE z872xug>ktJJDc466;iekQLBc;uln{lrk3Q)%y;hv%}{iS^ojSEsyNb!C_lGu9lSU8 zmY4fuw^NRwLdHfgVyw~YN% zpa%6RW*XZQqimP1`z&po;eiTfZzfL`S5%p%zz^)S{#ruUIiWc6N!1Fh|?bH|!b zU^`mM4Ku~FBZ`f9uc|sHhW%MLSxTeX5G9?r zDS3jOEG8o=6uTTtW7eCC>!%m$_g1n_-=xQ%WBr{4T6g5KNN?FlKPBXP>Xb~VZMyl5 zijAaVK9%24P1s1YWRkFZ-Vhh%`cD+w)yV5!y-(e{c(qF;PXf1Aam(xbo8r({+MnFq zJTX}(4iI?ZU%R#>_h#j<(M$Ikfp}gLl)tn{j=)-$6Lsru8^#@qmx|pPgu6`g4{t_r zTZO%TVDQwUm+0~EV4{JPPskUkrlNvOyu`X&@Ah{t9`%^}!dEPqdZR zMr-HGx5k5fOebisgu46Am-2Fdg%)0ovscRFDVqiznk>|J`4*X0buGPTDBN;?Nf<>b zJB0HyQ}@B+d#Sb0l0Il~v|zRCebzR$;9PBfA!ABk8}+WXip8XelKQZ}@3JpJQJzw4 zrL^azaYtW_cld^h4sB}JHDA+JObMddt!B1@471DL7WP%!*e$$x z6#2(kR3oIHOud;S8D)ZROOyo7SN1@rU@4L39H@8dmt^Fk>)aU=?B?`matBhmfZ5yynv2^0nIcJU<^6S}WEv*H0e4gq|gIQfK z1VS}57_nUQ9v^)4?VIQHqf-)(`YeZAc@n0GGn~hEus^kOTd1l8FN@Y)oZjBAy>m?6Ge+|YM5&F#bd*Nb;rf=^NrhE1`4(L z@Xo@`!N*TC*#jii5@0^z>94RmD5qv_eNI}JVy~@2g*UwZQ2IwBhlJU% zDR11;+KLFbgHu^0OLr4XkeiTa~ZVh4$#Cw%ojU#q)33u@PiWd;?u zR_{xyab!M!FC3~Kj~!Kt`^24HzJrAGXLaXmQM8m&27{{l?9y5_clMYLp(e{o_f1G_ zTK&_aX*o6=kM(bu`PnYGzlGeh=y5JG7;U)mC&73_ih`-(5g+#N`S0{8pXa<{NW@f` zzv7y?F_1)FM$$LB9_BU8Kli~Wv9ICK@}khXP6&>(YSqKY`hMCmNIL$boGYYOF}3;Z zq|)BnF7pD@zg6epobIx}*z1!;QcbLn=99j^6`LHm@9b3Dk@qey z^{DbNY_@m1ly`XL{HDyr{xSLdo>BO0V2>m+-@iqvnx3hq6xnIkr9Z2mIU2Jt$K)J4 zT4C52hW$G>FO%2(NKG7pSthCFe*ReTO2}*U-M53G+!3@qA(&?`mJr)30r4W;#P8 z*`7~(_f^mb)vC8YV~J42rl*a`ni!W0h;6kE za1MCKK9@7SF0}_|0*&yZFZPV>_qF|T8Fkz{#7tHBsFWPVg+?pFOB#fwKkD0y;N4U4 zxH{7cOV;_7uD>ytmxCHi|G>lM)1XPyfwgbuN%^*R!$l!-{mi-(>uxG`le{uLcHYv_ z&_Eb($_I<6Va}z|!gpugWA-Rvsq!ke^XI=^*7Rgpuh>6I%jH3>DanQ9{s`y3IJIw> zp4fE%d&9rvRs1N*&qFgdF$9`Y!kVVnw>Vd~$1ghN=%d$a!wiXQX5Fb%o%DF*@O8(e zP4AEHh@3bwy&OB%F|n4M=zFs<+~u)dpq~K-OLG16@vmfuz(i2T(L_xRjtw3rvOBUj ze_70#uJE2%eE}YgG&H3;?nW1HChc_e%dR5*n%g!T6=sOoURGI&#D%_nos~^Xk4%$D zdyYD1nbsCE=@lNA9=^djhx#%^>0G&9FX#GX%q3jVFT!e(hlMsQk`&*^H)c&a%Ix)- z2oeUdS#sYA{6(GEy<2Ne9ky+SjPEQVM3_ z7G4Uf+m(>~a5KN~8ibI_Y&Z;MMKMoA0N%Ef={aZoNIbJ&3DSYG0yFw9hH za~UIoReb-$PA~B_y)Ihntl(;1s!*NnExPDrT4YqUOm_X{Jn23$ogT&oSI5tf6)X^M zo~6OoK@I01Pb``qU*<}nIwxLo^kii;I?Asd68QujiYzwM0igur!wm!is$oubc91qTi2K8CGSNg!@u|hU6>m#5w&9!9${mjf_!= z-hlcYMh9l&(JJPV*pSD~kwlmU>y)J&6A@8-I4fl>1DZtPH0=L1IA-YU;NX>#9Wt1( z8)Z93!uLK=si$j~8fw#4mpJBWls`6!kD4ltb}%DSXAXo;)s%x$_zO)TA}4TwlOWuG zMv~I3r>ZfSA(47|LVP=0-?kpZy=;r4A8bowUp$Jqe+*>Bmg=z|O{63n!1u7`p7YDk z4;mcntbYC~DERf$8^vGM5{I2Gx1_yZYQrDE?1n#+3J0#M?Q1PaWA~gH=`!l76 z2A%{Ph@V&QQcXJl@;$rST#Z;S|4~%TXntPQJ@E1~zP&%qn!##4zk6~VV@o3E`cEQK z0==!Ohf>mw6ItwZlx`|`;p{?1?o&Hu+q>#dM!5onSc!8&W5P7*S17` zj{RP5M8l*eDs|r?$Hmw)>2HSo8;i$0=R~)HI&6D!J^tnW`-VepB!=4P6V<-zu#}B96X1sTl5W$;KEaH5`felG zLo+U`alAjLq9KK^E(V0s(+Xy>za_A=C**vTg_>N4FHr9lp^_u<>(HVmNv7B2WsoQd zNH(hmTkccZL5ar#1F9r*QR1S3{qqDgPuQie2@ke!~=u zdq=$r>o7L6z}0OChmOiqr!kfuIWC4X4jI)=wHu-b?H$`-NGV*84RK&}W(%9Lo997U zEuloewLE3_wZ;!arOfSr4xewFRk?Ts%SN8bTS@;cP=1Izwf74P3J@NfXEMw!ndm;O ztgQF$U9?M4<7X@vem7oV^Xlm6_q;vA2`4!YJ`=rmKXDz__q;0}tUz(ft*^_{So?S1 z%A_7!Waz2C-}rg(&DTwA?>5*k*)O@~eH~ApFETyWRM}}$w{_R5`O@`Cf^fL*1eZf$ zjVoSnZ!|3RvsiMHJvr0?`%xlY&PJT+Gbi$q2C(jhV=4dn+Ovt#6!63Gfz7T+UJS!8 zWV$lMCATUH|NOxdstETS868#B*5+vJPYia=FGyZHASxmF_(sd+ZGPh3BBf!jGV%2E zxWyeVoS)Iply8N6yzNUZL73wEOD*<6V$+XpqI4(p_S{q-KCkh1}HV<&=>X@m-S+}h8CGdbe@2$k}sEz*?OSOUSP>Cg-71<)spgFYSLTl9% zStW5epqZhBGmPd+-i&)&Gp7sHr+3;mN9}WhBHmnm4c+B=#mjfC$gtFnUez!#??Sh= zMT20H)53VIy+YWYRcLvif5 zUC2*`+oC6jdh2V>&sTrTHOGnRlPbS4?Um+pbw|qKayzw~GvCj6+{Z_2gW*rOjpBIj z!;~!)^hqm6p|2)xcMMcK)R^v&4H6r^2~1bx_qR8TGZ=nZ1EI{PhTx zjL35kOrn+-YY#&Xcg^H!*OVAh&9mfqHzV-WD?3~^dT(P{Iy`8}BCESz7eIC4)N;c^ zZeZ4v<8626K>wKR9_3pPKYji7Bm%9JsOGK|vA0gPuZ0?%R{y@VTkKGpGxEkuG@;An zwg|;%wN#5n`>_XJE)s&F?H^BFX=|&iw-ipa5BwAfvP_h0+U8}?($h2D1za#bRp&&$ zwKVI|U^SXH6O!B&4L88T+|}KdRgx-yXR^xX)s?T(Z!kA1Y{-bNJl4g5q3qxH^|IbR zC3u$qm)gV_y1lv-cvmpsvKc+1o#gMJ8#bxBeUc{|-%C>_mpk{?%Zq|=c{wIN7I*K$ z-ir5gYsaqh*!63_$oq2R6{~f}6P5N9$!#kv4qm4+mEMPTwb$EkN4*y(rG~`z-S$U^ z=h6ofI3kR>y_pl+g4$F03am2Mo(IkHSkKlNi}r~8<%XQ&+RyD0pMLHeW54H3BLA>8 zI;*lw$&=Nq#B@(DNEfu@?~wBCNUo?ikW=xkzQ3@#)HI?nvk%&m<&X1lw+fMP2pVkM zI#{&Z8zkabBbGHxw2*{T>x?~zkLbvRD^PRyj@M31JL;$jaBAaM4sPXB2Ox8*%1Ii3 zzbvO)@AjQ~jR&V;=`am(YCE5GTLo)sMR8`Uu#0}!Kx1!ckrcl+-wBPu6MxaE7?l0k z9c=n5eHHqcmQ!l7zfTDvOVP*OMRQSA-wpYL?}%R6@#g{3_+T<^l1=@S%9yr4QOBva z>e~TjHT?4ZB{a%VpBearzuK!8T_(V$r~4H&2N_NZXJNp6mb9&Td7RRyBKn16lFX+w z$Is^7zg^lTXgFkF+3kE?zFdpOA0%vEe18N_nHS_zvocJgUe#H>T)Lel*Ln7250(`C z*8+3+EM%y9sxY3P*VPy;c+l;ai;vkv1!mv&s1^BHkijUwW4J4o)bgc6NeFa*f)^K z%=-H`u%R?9l4lhEDU0%-juRI}Wu{9!AG0+1MNDC_u@Ffrb*9ne%Ta`XenQWu)s(9;cPR)KVLKM@lD5DX1JV;So#Z}3PXZTNXMW=^TakyXlqMY}=f;+F(vl{6NVU`hYN&sa z94Yz4E0K$-QO(1irxD;4=R-OD(U%>XCmm(YnP?vQ3n`*4(gEEkR$Jjc&5}<{IHKYL zzGKu|C@1Z{MCHx@_CdI5O0;E4eBvn$26YIn%44!(g@MdBSqpt!I=HC4uP(l1elVNl zuFc2trD4OIqY z_x+y`>Ue}7m7%Bqcv3%y~A76_La&y8e%LK1WdD|jx}Ltl&nOm~PDSVk3o zT(M%i*IX{SQM{gPwd&#Lb=AV%PbwWY=lv5kkq6v2L5Y3`DGrq z?90o;l+ezL#m?wwUT%~g#C!s>&4Hbn64ZQ-6{T0dD=P|oT|BN(JP4O-)Yyr+8sEIP zHtwuye03dSflNZe9%`aKMDW?cjKS(gQ>Harzw5gg^WsH)u#fgm#rOGW!^wW{mm^Ic zN#p-86BsDM8E|Zd=bbDpRqy_GT`DMQ(SH50!HB^xXCb_OP0I~?BwgR=%j(}ykE z9=H?eZOdhT(~{4l8cMcZtwr=*t2Y*21pGlJpMGW({X+9*?Kv&Wdlt^1tsD_%Xrhyf z{)jLYFWp$?b7qJ-;eJN4ZItpCGvoRTr+w}x?}DDLSIBdpFd5LYN6jZ%Cg!UwN!!c* zFmf;{eji@Ay$o}*GVaOKUN)Dv1uy5i)Ehli?+WRfs5?@G7w$5U4Sd6JmnP=czKBZU zoBU)rfzcsH8?mZpLF$lIeA?E-^6820L@O?SOUko4&eM7^_JpV3SodIv(XEkFT4NbZ z;-#}fbe-Uf5K$ovIwYfch3j+UnL`*(UwsxJqbk04F0Pg(o1FdFjS<^DL4#;1kViQr zOE#>KE$fA)qzZx45d#yd`I9ug-={khzcs?Y8On&`48;jtOHf*UVoH*^dbcU3h%;b8 zDr38~B%&PGtJw0!2=<;Wzof^yYd1(V(Vn2&HS?TOZ>SZvZ|FbIC($K@tNCcCoV6Y} z3FNo@-Voq+5L+jc-<}Bw4(^eRyRxRe&Byfiy%H|I_a%)?AHRQ}@RZ;A5r@kklsKHM zYzOp#u>BRONr`(ts83qOzU5~vP5ofH`klK+K)5|PFz&gU*>$6(gnQ0m`sm=`soO zHL|a1T6$4UBVuE%EkpuM{_Pv%E4QdgXZEuye(AJB>2j%rk9E7^@88kdogv}zJ4H;D z-<_=79~p_#Z18Itl7G2>@lf+bU>zPcnm*&~(&6e@UPL8F(X$IrKwLbbwH0IP=22Q8 zJ}O&+!kbAaWqxgGXJ-|M?ykI#w<;|%%t_iADEbE|t!Y@O(8{kmy%!4dvs`55HBV5T zrX6`&PlcsO%pBFCqZU+%%&@ZYA0!A)y)IU8R>1yd9CUEN{+z!~iWW~cZ3^Qj>HF^t zIH)!^cd%`b1||QDjD+UrBaCnE-2>-f6Jujvb50p6E6iqti0w&du#irC?#M2JI^$ta zlTAOIa;M@S2l`ldyO~grbcwXtPmvL*>%NZ}Fc~Uep)&ADY7jQs7;|X|mwYNO z{Hm!=-=>;@`WZGEF=DMJl05GF`GXdW4Z@NLsFKR~vZ#AMkxHzQy_@%aXi`7J-9qK) znkAPUV==@XVer!EHig{0Z)D5^u$~pOe}`t>53Rhe~@~SX~f$;RVz^IhsmiH!A-t9vCu^oSF|+`(rcLT z+=5(+{ReY6VqwiOGClQ5nm!gKL6u^zV!KtAaUXx*^2{+-+T^7l9=%t13rrdotr?G# zD0H`Q>e7du=zR~;N&lU1K2C*23H5EVl?>Nq*$jA`8S>2W6xqf;&@tE!UiLQ6e9hSs40;ELQvh&CKxfg4hsFW3`4J8pr zKX0}6vze`R<(Ay~mhWOknpx==bl6A5jn}$(Y@GE=a($O_u7lKD#MPB4mXNT#vI0L; zg75J65MboFN;OludZAV;!yLOXDm){vrbY+on&n^Ok|j>lZhG!kcVSuXpo~37)?#I! z;Tkw-fZjv{2u$eC4h0+vb=fL~G0biKx6N_PD_oIr$t_N(#n}F?Z%kOEPpH`3Ag6%H zn@x1hnct4BOvkmIBL)(wa(~l!9#)k`Um%Mp;RXe%a^+%aIN3@lbb`LG3>+sU=soFz_;h$gw^#c179$TEyX%|?@mRc=f>V-;U(L;H6P{_|PAkYh3( zFqw-`y-gsv=SY1!wJSR;@8{>k9#@OaN86v6pe!Cx<>>n-qOaoA>TBaKe@T_~@Q0l7 z_cVE*wMccFnmR`Kj~&}~e8)@bN!5}Sq(PziHhn1kgQ_IQWaxRsm!g6GHay|d^3aHq zZ;v~!3f%M9u%2>!Da~Q&P@tUrs6Yfk0shy9e+?2I2?cUc)^>pEQdx3wB+!e33u332LsE7L5$A zY^KGT*-n}xxJBq7IW%=}<`g9QoFo4rAlK^pFmQY6u7}tn)5_=yuACNfJvvjXshi`P zV3+`uH}3@A>5xLQt6`fU;X$N{n8&J5YKWiQ&-A`!WQ=S$i5h;7g^WV~$%9T_5v7^5 zk4swwxA@btmMryi7Qi)g{5t(cZZMaX)^3feeD<2?ZSff^%gyzj+TGgZ0|kAlX^o~3 zldMuaw4=+CXpQn$d9TNArth*$j@un`1r$!MdmcR#Xs2Ur{u0fQwdqT*V7e60ikt7J zsJh|h!V;;WpLxvFL^Ck{Vj{jNK$euYvRu(-Vc%iqnyA)!E9-=RHsc6CH*#aEO+#1Q z=Hy9tpKy5FN$Qc{KCPP)ZpD~q`X!Nm##QCy{)no|b$frbuo-tUt8>g8SeaUp>Z{RV z!mpfo*Ckb3(Qsk5Rt5^!g$&#G*xBX9A&V-#P})nNZ`sUV&*jNHyLzWzm4->mGdRro zF{4F9b_j?^L1BIJ^?Gda9$siX)0ZmN)z{C#-D?+od_>_~P@{KmECwd#;qXvDf{cFH z``!aHe5@x&P8;}CNa2Df$hm2?34Z^cd;OynHe1Y*^Vr>Z>~d7v>ADozsi+o9TGSNB zGo#th(f?#IqUJ{;=QlL(oVmgtNrJ@VwUBdu(w&?31c<#lND(<|GEc!*qo0D z2*i77Swj52KcCN?xU6wLM$^SIs63^^eYl(D^9WDT-jxZ?Wm3edn8xij_0%egt<2E9 z{7di8-th|W=8?}^ zc0YYL|BdG!pP>v@CFUWi=ex~^UwKS9a1`cG&9hh}qudQukeR4vi*2_b;#Z$EKDa)y zBkJUmOi+sLU)iDcR|qJ{=4pl@?)X{n`cj!8y8F{qLw@lLNAm!A~W7QnD7ZFlC$HgAOz2&eZ-akN*8;Z?Rv6T9aY! zkmjIyQG==(k?!e~N}p2t|YJ)y8{!>M{79=Y-w;!bF)>*c>Eu(?fCw z%J_iZl{^|5TWj33M(T}zdU3Br@=b#0mF5Ie^~5FfWX|Q(kJ2HFzeP8=Z<)cni1ujT zFTMN;XAkwG<|4-2>rNhAzP4{o#+vjL;r;*!-CywwHLsNbF;`ryB`4=d*lh4&ex5O0 z=!CaGPrvv3YYx~CMc&Wm9SNq|D$2^ghneUEE`KeixU|@+s>dB(2v12on#--qjR#8K zXTBe1rSrW!t_SG~r5@+6U@P;dF@61BAb+iIY;;tz_iLg_PbS&hdL}c53EczfS>QB8R73|UISs_}qfX358!^7ze&*g({~XLe zaYy0A7;QtEPCKnjC$NzOR)|5E2_%X9%#4znR28eg?1U>?x$?uNauJ#4dHjQiA&FUX z(omDC{77JOPEjOKahuLEWg+0@)L9q(j@Cr4Xn}iRjurib3m6oxHgedt`2+k>D_xkL zPf|2tHMy|Q(Sp|+kK+mRL4!bbZ8~I4_%c2hWcO;Bt5=RBti8Xcy6f#`GJbh;M@S7v zL7O-(%aT`)+G>9{SK-l|tN$T3Vwxd22E1YYXrkf*GmdZK+X z#BGv4;&jH72Z=wnWvVQ;Et$0R!(0rLi%bv%ZyMFufg_8APoGphcYd_-SeecxuKr49 z|NJX5Sh1c$B$|PSGjwli0#(k)c>B3PwnpMTKUV5{){)> z@u*x1EyQG5OT+DJ;-8OhjMIcODVs;wCp+Ef&mp`iPswU;M~r{>`#CvK2W&fBBo zV-6ELj;lL&hDSyf_4Fj(>k9)5=SyQF78P=7BtVyCSBF&;B>qN?j&kQSKL!pZbMOOl zdHwg44Go@a6xfpFHHiJjxLE!c=6S0b_xnYa2vF|%CvrQY=cZN?7kBnlTJiJ#TN8(~ zgHL&RrC>48^(&576XlIi4Cd_pJ9qB52vBg!^`J>hF=78cT%+;fz$FkEvHIhGuU(dg zgMyq287UHf9Y^FPE_%>{i(AUwryU6@#vw-cyN{*;JV#r0VKB}09C`t?&{GflqLS3e8v zbnKCt=t%1pzFP;wK2#pZ#ta%e4D5EP^w@@n+yzf~oEWDkM^{ zhUWT%qc0{1C;hczS84Qpd%T&~vC75yb0Y*B=vPn7G4PM_Gkx%RCDKhkftmNq)PEwv z_8SKS1f2%Y--!5%Znnhu3u3fkRvu>)%Oowia$&v4I6S8*=y*u}8oOvVlf8;N9j34R z`yOIQ%(|jXuue~aEC@Rnd3Oiw`V!Q9Bvm>*ceXvHN1Zzud&d%WaE)bLAFYy4l8T_3 zjxGH#7fC29A!_wGPJOmuaepXIwh+~}D?_Hcb;h&u@TJ|CG|79+aVB3)Mf1+j(1c8c z-=FYS^KQ9Opi$wpwzdMXRrwnMkbpWmI45@50_%%9UXKv$4~u(F-~7&}cTmDIQC% z`=uGToF=*Z@m<0oN2-Na_4NJ9Hkn-9_u2gyR5aP4`R*_9b#$W_#?kxD17dpk7hVX4 zm*J*NxQXpL;>C9R#xecUng6rp<@=#%o-_Vx8`BLBNi9iAA!5BfiZXpNBxg&n&g`A= z54OZgTC3+Hbp%v<>zRBC?j*^JBG(^$4f)02*&YPe*9P6N{B?O;7PVa0D6Eb8+@0(l z)3e`OrH1K$uKV2EwNK0xJh`7p{<%s;f1;_pB7-7@CXr+Pwdh;kVkZ6R{d*g(4qu|= zbN5{Y7G;7xbcnT;>DwWaU)iTU8jv+b3%{!#Ys(U;wg-m>}~CscLYlW$)I*mex?vLAmz{_?qX zsW(-0W{R(lGXLGo7_0Ks>kbmB%G4T*$KBO$N{uY3P13pw6-~c=|2~IkZXJx9#=qlW zd$^wAT=K=Z@g}oJFzYw6vlA+cY%X!Bz#|W?u-XJg0_xhOOS`U8!p7fXZr-Q8%U86? zQ4-c~>Q@6}8a5Bz6B*s@DMI(zOqZAR-#*M3+xtM+`T)J9GC_&_r3T>>GRQgw^nyz9`)znvdkoQI>Fv2rStd{J9@hZVYCnZCN*G~APnKw_h zgz^KblcfF_4ixq#=Sl1LX&JhhkN(%Ad5%|vU%a!V{2Dm1ofQ+7KRzDK zNcy+hf06UVkM9I!qb=Hu^0B*T|4drXs5pt$`(3MQzd_0Lca81RBSP}|e&&BkFbk*q zJxM4173nb;NvYTDY<^Vjy71gtBFDNbjvAHIPP6Hzm=(%``~WFD)_5M7fp)hr=lFHz zyw&k8`6Ihp&i~#EQ17g7Rj+U4^?v3{)lhxZ4`XNV-FvnYJDZxd8Xv+RWExIV?%LFa zPp*2wV@35)bgeKqB&)1l3G6#@1?gaU`4VHk@8bV}|FzR^uDZHjrELCnGXLVct%{OD zP9#OO&|0L>m4om3)7RU%Q26kRV&QA;oQz)TE1n@4ld`k5<(vD}ezUvkwS{@R=;P8s z+Al0hIeb~BL%dhaT$E^m%(VBWQkNyxPyzh zh=FacKkGgI=pNC_g%)Xdk6x|_9UUQJojc9T+jIZ^LRtR*emdqzq+#v;|9*^YLTQQq z=M(=79y9oVK0U-bG+jU!{qK(nMp5JvP{jWG!;bQw$FTkH&%;lav^CZL^9gC@iu%9z zhHw5q-2M;$Tt+afh!O$#?UnX#WASf2B@my-Pd{tppXp5Dv+row-D|~Og~Mweo!ijn z8bTra*M@+Vs#(uThFvriuq6gueX)cuZM@EV^kLkeI-lxb-GX1+32PNR1XwqgxRTQa z!tHk`{hAXvHfJwRn>IbimOq(vMbR+^wSb*#)0h`+EnwE>d
    azHV`^ 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 Xf(i+V6)$Tr;4f80ltQ_j>68Bj+Rjdq literal 0 HcmV?d00001 diff --git a/images/supported_brands/apple.png b/images/supported_brands/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..37af65d5fedd8292c8c3bdee8c467d35950c5e1d GIT binary patch literal 3576 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≤GVPm5e1V} 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/orange.png b/images/supported_brands/orange.png new file mode 100644 index 0000000000000000000000000000000000000000..69ac6fab341bb67727b23ba2c4a29a5e7f3b992d GIT binary patch literal 8017 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 a3d4sxmdIcCjdw@R2hcOst$FzP_5T6ma_7Gp5 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/rflink.png b/images/supported_brands/rflink.png new file mode 100644 index 0000000000000000000000000000000000000000..e044a89afdb89e873a4fabad2c4f56eb4ae477c3 GIT binary patch literal 3920 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 314d1eab95..9dfc9bc4db 100644 --- a/index.html +++ b/index.html @@ -115,11 +115,11 @@ Home Assistant is an open-source home automation platform running on Python 3. T
    diff --git a/sitemap.xml b/sitemap.xml index 316cf956a9..8a83f88882 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,6 +1,10 @@ +https://home-assistant.io/blog/2017/02/11/alert-appletv-mqtt-yeelight/ +2017-02-11T08:04:05+00:00 + + https://home-assistant.io/blog/2017/02/04/hassbian-toybox/ 2017-02-04T09:00:00+00:00 @@ -564,6 +568,9 @@ https://home-assistant.io/developers/frontend_creating_custom_panels/ +https://home-assistant.io/developers/frontend_creating_custom_ui/ + + https://home-assistant.io/getting-started/getting-started-alternatives/ @@ -1308,6 +1315,18 @@ https://home-assistant.io/components/sensor.sma/ +https://home-assistant.io/components/light.rflink/ + + +https://home-assistant.io/components/rflink/ + + +https://home-assistant.io/components/sensor.rflink/ + + +https://home-assistant.io/components/switch.rflink/ + + https://home-assistant.io/components/sensor.yr/ @@ -1911,7 +1930,10 @@ https://home-assistant.io/components/cover.rfxtrx/ -https://home-assistant.io/components/binary_sensor.ffmpeg/ +https://home-assistant.io/components/binary_sensor.ffmpeg_motion/ + + +https://home-assistant.io/components/binary_sensor.ffmpeg_noise/ https://home-assistant.io/components/emulated_hue/ @@ -2412,6 +2434,9 @@ https://home-assistant.io/components/fan.wink/ +https://home-assistant.io/components/alert/ + + https://home-assistant.io/components/tts.yandextts/ @@ -2430,12 +2455,21 @@ https://home-assistant.io/components/sensor.wsdot/ +https://home-assistant.io/components/switch.fritzdect/ + + +https://home-assistant.io/components/image_processing.microsoft_face_detect/ + + https://home-assistant.io/components/image_processing.microsoft_face_identify/ https://home-assistant.io/components/microsoft_face/ +https://home-assistant.io/components/media_player.liveboxplaytv/ + + https://home-assistant.io/components/device_tracker.sky_hub/ @@ -2445,6 +2479,27 @@ https://home-assistant.io/components/lutron/ +https://home-assistant.io/components/sensor.qnap/ + + +https://home-assistant.io/components/lock.nuki/ + + +https://home-assistant.io/components/sensor.openevse/ + + +https://home-assistant.io/components/sensor.moon/ + + +https://home-assistant.io/components/device_tracker.mysensors/ + + +https://home-assistant.io/components/notify.mailgun/ + + +https://home-assistant.io/components/media_player.apple_tv/ + + https://home-assistant.io/components/sensor.ted5000/ @@ -2580,6 +2635,9 @@ https://home-assistant.io/cookbook/sonos_say/ +https://home-assistant.io/cookbook/custom_ui_by_andrey-git/ + + https://home-assistant.io/details/webserver/ @@ -2737,62 +2795,62 @@ https://home-assistant.io/demo/frontend.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/index.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-event.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-info.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-service.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-state.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-template.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-history.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-iframe.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-logbook.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/demo/panels/ha-panel-map.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/googlef4f3693c209fe788.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 https://home-assistant.io/static/mdi-demo.html -2017-02-11T22:27:34+00:00 +2017-02-11T22:47:02+00:00 diff --git a/topics/templating/index.html b/topics/templating/index.html index 00e2ffb2d9..303de029d7 100644 --- a/topics/templating/index.html +++ b/topics/templating/index.html @@ -161,6 +161,8 @@ The frontend has a template editor developer tool to help develop and debug temp
  • Filter timestamp_local will convert an UNIX timestamp to local time/data.
  • Filter timestamp_utc will convert an UNIX timestamp to UTC time/data.
  • Filter timestamp_custom(format_string, local_boolean) will convert an UNIX timestamp to a custom format, the use of a local timestamp is default, supporting Python format options.
  • +
  • Filter max will obtain the larget item in a sequence.
  • +
  • Filter min will obtain the smallest item in a sequence.
  • Examples

    diff --git a/version.json b/version.json index 0dd9582274..caaa9509c9 100644 --- a/version.json +++ b/version.json @@ -1,15 +1,15 @@ { - "current_version": "0.37.1", - "release_date": "2017-02-02T00:00:00+00:00", - "release_notes": "https://home-assistant.io/blog/2017/01/28/face-coffee-wink/", - "release_notes_path": "/blog/2017/01/28/face-coffee-wink/", - "release_title": "0.37: Face detection, Coffee, Wink", - "release_description": "Governance, Face recognition, improved camera security, and a coffee maker", - "patch_version_notes": "#release-0371---february-2", + "current_version": "0.38.0", + "release_date": "2017-02-11T00:00:00+00:00", + "release_notes": "https://home-assistant.io/blog/2017/02/11/alert-appletv-mqtt-yeelight/", + "release_notes_path": "/blog/2017/02/11/alert-appletv-mqtt-yeelight/", + "release_title": "0.38: Alert, AppleTV, MQTT discovery, and Yeelight", + "release_description": "Faster and more configurable frontend, configuration check, and complete move to async for core", + "patch_version_notes": "#", "root_url": "https://home-assistant.io", "semantic_version": { "major": 0, - "minor": 37, - "patch": 1 + "minor": 38, + "patch": 0 } }