From 709c211c8f290c9c9222a1ccceb685927c7313bb Mon Sep 17 00:00:00 2001 From: Travis CI Date: Thu, 29 Sep 2016 04:44:35 +0000 Subject: [PATCH] Site updated at 2016-09-29 04:44:35 UTC --- atom.xml | 111 +++-- 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 | 8 +- .../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 | 315 ++++++++++++++ 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 | 242 ++++++----- 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 | 158 ++++--- blog/posts/2/index.html | 119 +++--- blog/posts/3/index.html | 135 +++--- blog/posts/4/index.html | 151 +++---- blog/posts/5/index.html | 131 ++++-- blog/posts/6/index.html | 92 ++-- blog/posts/7/index.html | 113 ++--- blog/posts/8/index.html | 121 +++--- blog/posts/9/index.html | 53 +++ components/apcupsd/index.html | 9 + components/arduino/index.html | 6 + components/automation/index.html | 3 + components/binary_sensor.apcupsd/index.html | 9 + components/binary_sensor.arest/index.html | 9 + components/binary_sensor.bloomsky/index.html | 9 + .../binary_sensor.command_line/index.html | 9 + components/binary_sensor.ecobee/index.html | 12 + components/binary_sensor.enocean/index.html | 9 + .../binary_sensor.envisalink/index.html | 9 + components/binary_sensor.ffmpeg/index.html | 24 +- components/binary_sensor.homematic/index.html | 9 + components/binary_sensor.http/index.html | 9 + components/binary_sensor.isy994/index.html | 263 ++++++++++++ components/binary_sensor.knx/index.html | 12 + components/binary_sensor.modbus/index.html | 276 ++++++++++++ components/binary_sensor.mqtt/index.html | 9 + components/binary_sensor.mysensors/index.html | 12 + components/binary_sensor.nest/index.html | 12 + components/binary_sensor.nx584/index.html | 44 +- components/binary_sensor.octoprint/index.html | 9 + components/binary_sensor.rest/index.html | 9 + components/binary_sensor.rpi_gpio/index.html | 9 + components/binary_sensor.sleepiq/index.html | 249 +++++++++++ components/binary_sensor.tcp/index.html | 9 + components/binary_sensor.template/index.html | 9 + components/binary_sensor.trend/index.html | 9 + components/binary_sensor.vera/index.html | 15 + components/binary_sensor.wink/index.html | 9 + components/binary_sensor.zigbee/index.html | 9 + components/binary_sensor.zwave/index.html | 9 + components/binary_sensor/index.html | 9 + components/bloomsky/index.html | 9 + components/browser/index.html | 3 + components/camera.ffmpeg/index.html | 27 +- components/climate.ecobee/index.html | 6 + components/climate.eq3btsmart/index.html | 6 + .../climate.generic_thermostat/index.html | 6 + components/climate.heatmiser/index.html | 6 + components/climate.homematic/index.html | 6 + components/climate.honeywell/index.html | 6 + components/climate.knx/index.html | 9 + components/climate.mysensors/index.html | 339 +++++++++++++++ components/climate.nest/index.html | 9 + components/climate.proliphix/index.html | 6 + components/climate.radiotherm/index.html | 11 +- components/climate.vera/index.html | 224 ++++++++++ components/climate.zwave/index.html | 6 + components/climate/index.html | 6 + components/configurator/index.html | 3 + components/cover.command_line/index.html | 6 + components/cover.homematic/index.html | 6 + components/cover.isy994/index.html | 219 ++++++++++ components/cover.mqtt/index.html | 6 + components/cover.rfxtrx/index.html | 6 + components/cover.rpi_gpio/index.html | 6 + components/cover.scsgate/index.html | 6 + components/cover.vera/index.html | 221 ++++++++++ components/cover.wink/index.html | 6 + components/cover.zwave/index.html | 6 + components/cover/index.html | 107 +++++ components/demo/index.html | 3 + .../device_sun_light_trigger/index.html | 3 + components/discovery/index.html | 3 + components/ecobee/index.html | 9 + components/emulated_hue/index.html | 9 + components/enocean/index.html | 9 + components/fan.isy994/index.html | 195 +++++++++ components/fan.mqtt/index.html | 6 + components/fan.nest/index.html | 202 +++++++++ components/fan/index.html | 6 + components/feedreader/index.html | 3 + components/ffmpeg/index.html | 285 ++++++++++++ components/hdmi_cec/index.html | 3 + components/homematic/index.html | 9 + components/http/index.html | 7 + components/ifttt/index.html | 3 + components/index.html | 402 ++++++++++++++++- components/input_boolean/index.html | 3 + components/input_select/index.html | 3 + components/input_slider/index.html | 3 + components/insteon_hub/index.html | 9 + components/introduction/index.html | 3 + components/isy994/index.html | 138 ++++-- components/joaoapps_join/index.html | 9 + components/keyboard/index.html | 3 + components/keyboard_remote/index.html | 230 ++++++++++ components/knx/index.html | 12 +- components/light.blinksticklight/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 | 3 + components/light.hyperion/index.html | 3 + components/light.insteon_hub/index.html | 3 + components/light.isy994/index.html | 258 +++++++++++ components/light.lifx/index.html | 3 + components/light.limitlessled/index.html | 3 + components/light.mqtt/index.html | 3 + components/light.mqtt_json/index.html | 3 + components/light.mysensors/index.html | 6 + components/light.osramlightify/index.html | 3 + components/light.qwikswitch/index.html | 3 + components/light.rfxtrx/index.html | 3 + components/light.scsgate/index.html | 3 + components/light.tellstick/index.html | 3 + components/light.vera/index.html | 9 + components/light.wemo/index.html | 3 + components/light.wink/index.html | 3 + components/light.x10/index.html | 7 +- components/light.zigbee/index.html | 3 + components/light.zwave/index.html | 3 + components/light/index.html | 3 + components/lirc/index.html | 3 + components/lock.isy994/index.html | 204 +++++++++ components/lock.mqtt/index.html | 3 + components/lock.vera/index.html | 9 + components/lock.verisure/index.html | 3 + components/lock.wink/index.html | 3 + components/lock.zwave/index.html | 3 + components/lock/index.html | 3 + components/logbook/index.html | 29 ++ components/logger/index.html | 3 + components/media_player.kodi/index.html | 8 + components/media_player.yamaha/index.html | 6 +- components/modbus/index.html | 14 +- components/mqtt/index.html | 42 +- components/mqtt_eventstream/index.html | 3 + components/mysensors/index.html | 12 + components/nest/index.html | 18 +- components/netatmo/index.html | 9 + components/notify.aws_lambda/index.html | 6 + components/notify.aws_sns/index.html | 6 + components/notify.aws_sqs/index.html | 6 + components/notify.command_line/index.html | 6 + components/notify.ecobee/index.html | 6 + components/notify.file/index.html | 6 + components/notify.free_mobile/index.html | 6 + components/notify.gntp/index.html | 6 + components/notify.group/index.html | 6 + components/notify.html5/index.html | 6 + components/notify.instapush/index.html | 6 + components/notify.joaoapps_join/index.html | 6 + components/notify.kodi/index.html | 310 ++++++++++++++ .../notify.llamalab_automate/index.html | 6 + components/notify.message_bird/index.html | 6 + components/notify.mqtt/index.html | 6 + components/notify.nma/index.html | 6 + components/notify.pushbullet/index.html | 6 + components/notify.pushetta/index.html | 6 + components/notify.pushover/index.html | 6 + components/notify.rest/index.html | 6 + components/notify.sendgrid/index.html | 6 + components/notify.simplepush/index.html | 275 ++++++++++++ components/notify.slack/index.html | 10 + components/notify.smtp/index.html | 6 + components/notify.syslog/index.html | 6 + components/notify.telegram/index.html | 6 + components/notify.twilio_sms/index.html | 6 + components/notify.twitter/index.html | 6 + components/notify.webostv/index.html | 6 + components/notify.xmpp/index.html | 6 + components/notify/index.html | 6 + components/nuimo_controller/index.html | 303 +++++++++++++ components/octoprint/index.html | 9 + components/openalpr/index.html | 309 ++++++++++++++ components/persistent_notification/index.html | 3 + components/pilight/index.html | 9 + components/proximity/index.html | 3 + components/qwikswitch/index.html | 9 + components/rfxtrx/index.html | 9 + components/rpi_gpio/index.html | 6 + .../scene.hunterdouglas_powerview/index.html | 6 + components/script/index.html | 3 + components/scsgate/index.html | 9 + components/sensor.apcupsd/index.html | 12 + components/sensor.arduino/index.html | 6 + components/sensor.arest/index.html | 12 + components/sensor.bitcoin/index.html | 3 + components/sensor.bloomsky/index.html | 12 + components/sensor.bom/index.html | 247 +++++++++++ components/sensor.coinmarketcap/index.html | 3 + components/sensor.command_line/index.html | 12 + components/sensor.dht/index.html | 6 + components/sensor.dweet/index.html | 12 + components/sensor.emoncms/index.html | 404 ++++++++++++++++++ components/sensor.enocean/index.html | 12 + components/sensor.envisalink/index.html | 12 + components/sensor.fixer/index.html | 3 + components/sensor.forecast/index.html | 3 + components/sensor.gpsd/index.html | 12 + components/sensor.homematic/index.html | 12 + components/sensor.http/index.html | 12 + components/sensor.imap/index.html | 15 + .../sensor.imap_email_content/index.html | 310 ++++++++++++++ components/sensor.isy994/index.html | 299 +++++++++++++ components/sensor.knx/index.html | 277 ++++++++++++ components/sensor.mfi/index.html | 12 + components/sensor.mhz19/index.html | 12 + components/sensor.miflora/index.html | 223 ++++++++++ components/sensor.modbus/index.html | 79 ++-- components/sensor.moldindicator/index.html | 12 + components/sensor.mqtt/index.html | 12 + components/sensor.mqtt_room/index.html | 2 + components/sensor.mysensors/index.html | 15 + components/sensor.nest/index.html | 15 + components/sensor.nest_weather/index.html | 3 + components/sensor.netatmo/index.html | 3 + components/sensor.neurio_energy/index.html | 12 + components/sensor.octoprint/index.html | 12 + components/sensor.onewire/index.html | 12 + .../sensor.openexchangerates/index.html | 3 + components/sensor.openweathermap/index.html | 3 + components/sensor.rest/index.html | 12 + components/sensor.rfxtrx/index.html | 12 + components/sensor.serial_pm/index.html | 6 + components/sensor.sleepiq/index.html | 285 ++++++++++++ .../sensor.swiss_hydrological_data/index.html | 3 + components/sensor.tcp/index.html | 12 + components/sensor.tellduslive/index.html | 12 + components/sensor.tellstick/index.html | 12 + components/sensor.temper/index.html | 12 + components/sensor.template/index.html | 12 + components/sensor.thinkingcleaner/index.html | 12 + components/sensor.vera/index.html | 18 + components/sensor.verisure/index.html | 12 + components/sensor.wink/index.html | 12 + components/sensor.wunderground/index.html | 3 + components/sensor.yahoo_finance/index.html | 203 +++++++++ components/sensor.yr/index.html | 3 + components/sensor.yweather/index.html | 3 + components/sensor.zigbee/index.html | 12 + components/sensor.zwave/index.html | 12 + components/sensor/index.html | 24 ++ components/shell_command/index.html | 3 + components/sleepiq/index.html | 273 ++++++++++++ components/sun/index.html | 3 + components/switch.acer_projector/index.html | 3 + components/switch.arduino/index.html | 6 + components/switch.arest/index.html | 3 + components/switch.command_line/index.html | 3 + components/switch.dlink/index.html | 3 + components/switch.edimax/index.html | 3 + components/switch.enocean/index.html | 3 + components/switch.flux/index.html | 3 + components/switch.hikvision/index.html | 3 + components/switch.homematic/index.html | 3 + components/switch.isy994/index.html | 294 +++++++++++++ components/switch.knx/index.html | 9 + components/switch.mfi/index.html | 3 + components/switch.modbus/index.html | 50 +-- components/switch.mqtt/index.html | 3 + components/switch.mysensors/index.html | 6 + components/switch.mystrom/index.html | 3 + components/switch.netio/index.html | 3 + components/switch.orvibo/index.html | 3 + components/switch.pilight/index.html | 3 + .../switch.pulseaudio_loopback/index.html | 3 + components/switch.qwikswitch/index.html | 3 + components/switch.rest/index.html | 3 + components/switch.rfxtrx/index.html | 3 + components/switch.rpi_gpio/index.html | 3 + components/switch.rpi_rf/index.html | 3 + components/switch.scsgate/index.html | 3 + components/switch.tellduslive/index.html | 3 + components/switch.tellstick/index.html | 3 + components/switch.template/index.html | 3 + components/switch.thinkingcleaner/index.html | 3 + components/switch.tplink/index.html | 3 + components/switch.vera/index.html | 9 + components/switch.verisure/index.html | 3 + components/switch.wake_on_lan/index.html | 3 + components/switch.wemo/index.html | 3 + components/switch.wink/index.html | 3 + components/switch.zigbee/index.html | 3 + components/switch.zwave/index.html | 3 + components/switch/index.html | 3 + components/tellduslive/index.html | 9 + components/tellstick/index.html | 9 + components/thermostat.knx/index.html | 3 + components/thermostat.nest/index.html | 3 + components/updater/index.html | 3 + components/upnp/index.html | 3 + components/vera/index.html | 15 + components/verisure/index.html | 9 + components/wemo/index.html | 9 + components/wink/index.html | 9 + components/zeroconf/index.html | 3 + components/zigbee/index.html | 6 + components/zwave/index.html | 9 + developers/credits/index.html | 8 + font/fontawesome-webfont.eot | Bin font/fontawesome-webfont.svg | 0 font/fontawesome-webfont.ttf | Bin font/fontawesome-webfont.woff | Bin getting-started/android/index.html | 2 +- getting-started/automation-action/index.html | 2 +- .../automation-condition/index.html | 2 +- .../automation-create-first/index.html | 2 +- .../automation-examples/index.html | 2 +- .../automation-templating/index.html | 2 +- getting-started/automation-trigger/index.html | 2 +- .../automation-troubleshooting/index.html | 2 +- getting-started/automation/index.html | 2 +- getting-started/autostart-macos/index.html | 2 +- getting-started/autostart-synology/index.html | 2 +- getting-started/autostart-systemd/index.html | 2 +- getting-started/autostart-upstart/index.html | 2 +- getting-started/autostart/index.html | 2 +- getting-started/basic/index.html | 2 +- getting-started/browsers/index.html | 2 +- getting-started/configuration/index.html | 2 +- .../customizing-devices/index.html | 75 +++- getting-started/devices/index.html | 2 +- getting-started/index.html | 2 +- .../installation-docker/index.html | 2 +- .../index.html | 2 +- .../installation-raspberry-pi/index.html | 2 +- .../installation-synology/index.html | 2 +- .../installation-vagrant/index.html | 2 +- .../installation-virtualenv/index.html | 2 +- getting-started/presence-detection/index.html | 2 +- getting-started/scripts-conditions/index.html | 2 +- .../scripts-service-calls/index.html | 2 +- getting-started/scripts/index.html | 2 +- .../troubleshooting-configuration/index.html | 2 +- getting-started/troubleshooting/index.html | 2 +- getting-started/updating/index.html | 2 +- getting-started/yaml/index.html | 2 +- getting-started/z-wave-controllers/index.html | 21 +- .../z-wave-device-specific/index.html | 10 +- getting-started/z-wave-settings/index.html | 8 +- getting-started/z-wave/index.html | 69 +-- images/isy994/isy994_CoverExample.png | Bin 0 -> 17584 bytes images/supported_brands/aws_lambda.png | Bin images/supported_brands/aws_sns.png | Bin images/supported_brands/aws_sqs.png | Bin images/supported_brands/bom.png | Bin 0 -> 8499 bytes images/supported_brands/emoncms.png | Bin 0 -> 10385 bytes images/supported_brands/nuimo.png | Bin 0 -> 10966 bytes images/supported_brands/openalpr.png | Bin 0 -> 66606 bytes images/supported_brands/sleepiq.png | Bin 0 -> 10096 bytes images/supported_brands/uber.png | Bin images/supported_brands/yahoo_finance.png | Bin 0 -> 65629 bytes index.html | 16 +- sitemap.xml | 115 ++++- topics/platform_options/index.html | 12 +- 482 files changed, 11714 insertions(+), 1562 deletions(-) create mode 100644 blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html create mode 100644 components/binary_sensor.isy994/index.html create mode 100644 components/binary_sensor.modbus/index.html create mode 100644 components/binary_sensor.sleepiq/index.html create mode 100644 components/climate.mysensors/index.html create mode 100644 components/climate.vera/index.html create mode 100644 components/cover.isy994/index.html create mode 100644 components/cover.vera/index.html create mode 100644 components/fan.isy994/index.html create mode 100644 components/fan.nest/index.html create mode 100644 components/ffmpeg/index.html create mode 100644 components/keyboard_remote/index.html create mode 100644 components/light.isy994/index.html create mode 100644 components/lock.isy994/index.html create mode 100644 components/notify.kodi/index.html create mode 100644 components/notify.simplepush/index.html create mode 100644 components/nuimo_controller/index.html create mode 100644 components/openalpr/index.html create mode 100644 components/sensor.bom/index.html create mode 100644 components/sensor.emoncms/index.html create mode 100644 components/sensor.imap_email_content/index.html create mode 100644 components/sensor.isy994/index.html create mode 100644 components/sensor.knx/index.html create mode 100644 components/sensor.miflora/index.html create mode 100644 components/sensor.sleepiq/index.html create mode 100644 components/sensor.yahoo_finance/index.html create mode 100644 components/sleepiq/index.html create mode 100644 components/switch.isy994/index.html mode change 100755 => 100644 font/fontawesome-webfont.eot mode change 100755 => 100644 font/fontawesome-webfont.svg mode change 100755 => 100644 font/fontawesome-webfont.ttf mode change 100755 => 100644 font/fontawesome-webfont.woff create mode 100644 images/isy994/isy994_CoverExample.png mode change 100755 => 100644 images/supported_brands/aws_lambda.png mode change 100755 => 100644 images/supported_brands/aws_sns.png mode change 100755 => 100644 images/supported_brands/aws_sqs.png create mode 100644 images/supported_brands/bom.png create mode 100644 images/supported_brands/emoncms.png create mode 100644 images/supported_brands/nuimo.png create mode 100644 images/supported_brands/openalpr.png create mode 100644 images/supported_brands/sleepiq.png mode change 100755 => 100644 images/supported_brands/uber.png create mode 100644 images/supported_brands/yahoo_finance.png diff --git a/atom.xml b/atom.xml index 49d99ac091..c1abbe0b85 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ @@ -13,6 +13,81 @@ Octopress + + <![CDATA[0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants]]> + + 2016-09-29T03:04:05+00:00 + https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks + Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

+ +

This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

+ +

This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

+ +

SleepIQ and OpenALPR

+ +

There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

+ +

Configuration validation

+ +

On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

+ +

Delayed Release

+ +

As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

+ +

All changes

+ +

+ + + +

Breaking changes

+ +
    +
  • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
  • +
  • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
  • +
  • Config has changed for X10 lights.
  • +
+ +

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 the former communication channels. Thanks.

+ +]]>
+
+ <![CDATA[0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats]]> @@ -1813,40 +1888,6 @@ target_dir /tmp
  • Add support for OPTIONS HTTP command to get CORS working (@JshWright)
  • -]]> -
    - - - <![CDATA[Community Highlights]]> - - 2016-06-01T18:34:00+00:00 - https://home-assistant.io/blog/2016/06/01/community-highlights - Our community is amazingly helpful and creative. If you haven’t been there yet, make sure to stop by our chat room and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community.

    - -

    SceneGen - cli for making scenes

    - -

    SceneGen is a new command line utility developed by Andrew Cockburn that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states.

    - -

    Videos

    - -

    Nick Touran has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up a blog post and has put out a video showing the new integration, very cool!

    - -
    - -
    - -

    Ben from BRUH Automation has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks.

    - -
    - -
    - -

    Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS.

    - -
    - -
    - ]]>
    diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index 95500a35ba..b5f4cc5785 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -169,6 +169,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 04b6e6b918..9a32f2b132 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 @@ -224,6 +224,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 bc53cd8637..214b75f2cc 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 @@ -204,6 +204,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 f1aebb669d..9d34166017 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 @@ -181,6 +181,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 0b5c6dd945..9826f8f322 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -184,6 +184,12 @@ diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index c7ae8560fd..933016eaef 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -192,6 +192,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 833f8f27ab..cae54945f4 100644 --- a/blog/2015/02/08/looking-at-the-past/index.html +++ b/blog/2015/02/08/looking-at-the-past/index.html @@ -200,6 +200,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 65ca7a6639..4ac7b91677 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -185,6 +185,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 ebde579b3b..0b7103ad58 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 @@ -175,6 +175,12 @@ diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index a265f3a377..3796063633 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -176,6 +176,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 27c7ba3087..10003e587b 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -209,6 +209,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 a64b91244e..1c3f92cfaa 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -244,6 +244,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 f21ced9c21..1a91b7ab78 100644 --- a/blog/2015/04/25/release-notes/index.html +++ b/blog/2015/04/25/release-notes/index.html @@ -255,6 +255,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 7b0f763db9..736c17ec66 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -196,6 +196,12 @@ diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index c7d340dafd..06a1ef7651 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -276,6 +276,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 20eaf9699b..b9b5aea584 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -327,6 +327,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 12904621ba..a52d186939 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 @@ -283,6 +283,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 4c5323a46f..c259256872 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 @@ -268,6 +268,12 @@ Support for Temper temperature sensors has been contributed by +
  • + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +
  • + + +
  • 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats
  • @@ -291,12 +297,6 @@ Support for Temper temperature sensors has been contributed by - We Have Apps Now - - - 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 e0ac17ddfb..1b0dd40490 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 @@ -192,6 +192,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 d734c732a3..b4ce405cf4 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 @@ -305,6 +305,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 c549771838..2deca044e0 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 @@ -269,6 +269,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 e26d1e4d19..1e5c42a18b 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 @@ -360,6 +360,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 0bba9d89a2..d8b8909fa4 100644 --- a/blog/2015/09/13/home-assistant-meets-ifttt/index.html +++ b/blog/2015/09/13/home-assistant-meets-ifttt/index.html @@ -341,6 +341,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 70b4274777..ba092a018c 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 @@ -234,6 +234,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 08cd2816ee..cd6a53c144 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 @@ -219,6 +219,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 2997360d05..9a5a70efd2 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 @@ -199,6 +199,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 924dd14d43..fa249f47d6 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 @@ -408,6 +408,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 66641450d6..e334f3fff5 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 @@ -188,6 +188,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 2a7f0ab5bb..c6cdd82daf 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 @@ -210,6 +210,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 88bdf5aca2..04ccfb32bb 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 @@ -204,6 +204,12 @@ diff --git a/blog/2015/11/22/survey-november-2015/index.html b/blog/2015/11/22/survey-november-2015/index.html index 38a6bfd304..a621494c8d 100644 --- a/blog/2015/11/22/survey-november-2015/index.html +++ b/blog/2015/11/22/survey-november-2015/index.html @@ -246,6 +246,12 @@ diff --git a/blog/2015/12/05/community-highlights/index.html b/blog/2015/12/05/community-highlights/index.html index 6ead18acf6..28651cfd92 100644 --- a/blog/2015/12/05/community-highlights/index.html +++ b/blog/2015/12/05/community-highlights/index.html @@ -181,6 +181,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 aeec23463b..2b903ff73d 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 @@ -188,6 +188,12 @@ diff --git a/blog/2015/12/07/influxdb-and-grafana/index.html b/blog/2015/12/07/influxdb-and-grafana/index.html index 74e93f3f86..a6b52db79e 100644 --- a/blog/2015/12/07/influxdb-and-grafana/index.html +++ b/blog/2015/12/07/influxdb-and-grafana/index.html @@ -263,6 +263,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 4f8b07dd8c..1f3b5ad960 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 @@ -225,6 +225,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 a30fe0d635..ec30cde0e4 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 @@ -201,6 +201,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 6ebe841dff..c1389221b2 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 @@ -260,6 +260,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 b45dccc96d..a0af573b24 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 @@ -220,6 +220,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 0632bf6d4b..39cb2d5d41 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 @@ -202,6 +202,12 @@ diff --git a/blog/2016/01/19/perfect-home-automation/index.html b/blog/2016/01/19/perfect-home-automation/index.html index 677943641d..9ad47bd51d 100644 --- a/blog/2016/01/19/perfect-home-automation/index.html +++ b/blog/2016/01/19/perfect-home-automation/index.html @@ -206,6 +206,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 20241c70b7..92aa31c6f8 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 @@ -208,6 +208,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 a1420ebbf0..a90d8d7fb6 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 @@ -379,6 +379,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 6877ed86bb..3092f23326 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 @@ -345,6 +345,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 4d0ec023d8..91d90d9a45 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 @@ -211,6 +211,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 9f86666d91..72f6fd296f 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 @@ -295,6 +295,12 @@ diff --git a/blog/2016/02/20/community-highlights/index.html b/blog/2016/02/20/community-highlights/index.html index ee81264eff..ef493ad1ed 100644 --- a/blog/2016/02/20/community-highlights/index.html +++ b/blog/2016/02/20/community-highlights/index.html @@ -219,6 +219,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 1043b35334..e6f7851d03 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 @@ -210,6 +210,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 2ce35aaa03..134c35b910 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 @@ -214,6 +214,12 @@ player state attributes. This change affects automations, scripts and scenes. +
  • + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +
  • + + +
  • 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats
  • @@ -237,12 +243,6 @@ player state attributes. This change affects automations, scripts and scenes. - -
  • - We Have Apps Now -
  • - - 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 d233ce1ab4..ffc5e1e024 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 @@ -223,6 +223,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 247fc86dca..7b94d46f31 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 @@ -179,6 +179,12 @@ diff --git a/blog/2016/04/07/static-website/index.html b/blog/2016/04/07/static-website/index.html index 1d3f4faef6..f0db2f4df4 100644 --- a/blog/2016/04/07/static-website/index.html +++ b/blog/2016/04/07/static-website/index.html @@ -185,6 +185,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 100429b754..aabb9ceff4 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 @@ -193,6 +193,12 @@ diff --git a/blog/2016/04/17/updated-documentation/index.html b/blog/2016/04/17/updated-documentation/index.html index 8da5c5dd01..24673f59ff 100644 --- a/blog/2016/04/17/updated-documentation/index.html +++ b/blog/2016/04/17/updated-documentation/index.html @@ -177,6 +177,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 dc86021f56..8cc9f1abb6 100644 --- a/blog/2016/04/19/to-infinity-and-beyond/index.html +++ b/blog/2016/04/19/to-infinity-and-beyond/index.html @@ -194,6 +194,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 d097d46857..0b80b95523 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 @@ -212,6 +212,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 c3fe9c6c13..977132d2ee 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 @@ -299,6 +299,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 51a4977741..7397b94fc2 100644 --- a/blog/2016/05/06/open-iot-summit-talk/index.html +++ b/blog/2016/05/06/open-iot-summit-talk/index.html @@ -175,6 +175,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 fe8bc41f59..0e212402a8 100644 --- a/blog/2016/05/07/empowering-scripts-and-alexa/index.html +++ b/blog/2016/05/07/empowering-scripts-and-alexa/index.html @@ -257,6 +257,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 a987d95ca4..5af2b9a91f 100644 --- a/blog/2016/05/12/video-configuring-home-assistant/index.html +++ b/blog/2016/05/12/video-configuring-home-assistant/index.html @@ -175,6 +175,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 d2f02b8813..054993a1ca 100644 --- a/blog/2016/05/18/why-we-use-polymer/index.html +++ b/blog/2016/05/18/why-we-use-polymer/index.html @@ -189,6 +189,12 @@ diff --git a/blog/2016/05/21/release-020/index.html b/blog/2016/05/21/release-020/index.html index ce1a087b6e..71a4366fe1 100644 --- a/blog/2016/05/21/release-020/index.html +++ b/blog/2016/05/21/release-020/index.html @@ -208,6 +208,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 0559147155..2d09f06c75 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 @@ -179,6 +179,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 b93bc21cdd..09933aa0c7 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 @@ -315,6 +315,12 @@ diff --git a/blog/2016/06/01/community-highlights/index.html b/blog/2016/06/01/community-highlights/index.html index 52171d81d2..49ba8d47a4 100644 --- a/blog/2016/06/01/community-highlights/index.html +++ b/blog/2016/06/01/community-highlights/index.html @@ -195,6 +195,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 f27d972dec..b3e927d240 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 @@ -229,6 +229,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 218870a6d5..db7f8103ff 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 @@ -200,6 +200,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 c80d34deb9..e2dfe218ab 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 @@ -222,6 +222,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 c4f2afc49f..3e76a07c05 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 @@ -276,6 +276,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 aafc1cec8a..5bce387d56 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 @@ -223,6 +223,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 9e030c18cf..77ee715c1f 100644 --- a/blog/2016/07/06/pocketchip-running-home-assistant/index.html +++ b/blog/2016/07/06/pocketchip-running-home-assistant/index.html @@ -218,6 +218,12 @@ Over a year ago I participated in the +
  • + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +
  • + + +
  • 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats
  • @@ -241,12 +247,6 @@ Over a year ago I participated in the - We Have Apps Now - - - 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 e56e1dd1eb..efaa95cc7f 100644 --- a/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html +++ b/blog/2016/07/16/sqlalchemy-knx-join-simplisafe/index.html @@ -218,6 +218,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 264ffe5aaa..82558900f7 100644 --- a/blog/2016/07/19/visualizing-your-iot-data/index.html +++ b/blog/2016/07/19/visualizing-your-iot-data/index.html @@ -270,6 +270,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 68edbcce7a..15f823f340 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 @@ -235,6 +235,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 0b49585ac4..0cc7e30af1 100644 --- a/blog/2016/07/28/esp8266-and-micropython-part1/index.html +++ b/blog/2016/07/28/esp8266-and-micropython-part1/index.html @@ -322,6 +322,12 @@ If a module is missing then you need to download it from the +
  • + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +
  • + + +
  • 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats
  • @@ -345,12 +351,6 @@ If a module is missing then you need to download it from the - We Have Apps Now - - - 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 5d087dab5c..d464feb2ec 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 @@ -237,6 +237,12 @@ diff --git a/blog/2016/08/03/laundry-automation-update/index.html b/blog/2016/08/03/laundry-automation-update/index.html index b6b693353f..ed163696ee 100644 --- a/blog/2016/08/03/laundry-automation-update/index.html +++ b/blog/2016/08/03/laundry-automation-update/index.html @@ -274,6 +274,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 8395c17d67..0c31b95b6b 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 @@ -310,6 +310,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 7863f866b1..8dae364ccb 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 @@ -236,6 +236,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 c231149fcb..ed211fbc8f 100644 --- a/blog/2016/08/16/we-have-apps-now/index.html +++ b/blog/2016/08/16/we-have-apps-now/index.html @@ -290,6 +290,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 8f698a449a..66644e5112 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 @@ -176,6 +176,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 a116beb3ad..25ea5cecd0 100644 --- a/blog/2016/08/28/notifications-hue-fake-unification/index.html +++ b/blog/2016/08/28/notifications-hue-fake-unification/index.html @@ -371,6 +371,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 05d85b2a4c..d8fed47b27 100644 --- a/blog/2016/08/31/esp8266-and-micropython-part2/index.html +++ b/blog/2016/08/31/esp8266-and-micropython-part2/index.html @@ -266,6 +266,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 a176992d08..c6245686d1 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 @@ -269,6 +269,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 new file mode 100644 index 0000000000..da2bdc760b --- /dev/null +++ b/blog/2016/09/29/async-sleepiq-emoncms-stocks/index.html @@ -0,0 +1,315 @@ + + + + + + + + + + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + +
    + +

    0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants

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

    Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

    + +

    This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

    + +

    This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

    + +

    SleepIQ and OpenALPR

    + +

    There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

    + +

    Configuration validation

    + +

    On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

    + +

    Delayed Release

    + +

    As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

    + +

    All changes

    + +

    + + + +

    Breaking changes

    + +
      +
    • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
    • +
    • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
    • +
    • Config has changed for X10 lights.
    • +
    + +

    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 the former communication channels. Thanks.

    +
    + + +
    +

    Comments

    +
    +
    + + +
    + + + + +
    +
    + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index cec814d5f0..0c7e5401f7 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -2801,6 +2801,38 @@ + + + + @@ -2858,6 +2890,12 @@ diff --git a/blog/categories/community/atom.xml b/blog/categories/community/atom.xml index 0beda0f8c8..d77995da4b 100644 --- a/blog/categories/community/atom.xml +++ b/blog/categories/community/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Community | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/community/index.html b/blog/categories/community/index.html index 6f6266adf2..2f3ad0472b 100644 --- a/blog/categories/community/index.html +++ b/blog/categories/community/index.html @@ -258,6 +258,12 @@ diff --git a/blog/categories/device-tracking/atom.xml b/blog/categories/device-tracking/atom.xml index 1e39b0d1d4..ccd003179c 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/device-tracking/index.html b/blog/categories/device-tracking/index.html index 4cff5aeea4..f6eb067803 100644 --- a/blog/categories/device-tracking/index.html +++ b/blog/categories/device-tracking/index.html @@ -189,6 +189,12 @@ diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index 634e75b98a..2950ff5bf2 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: ESP8266 | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index 78f383eb11..18ac76e62a 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -266,6 +266,12 @@ diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index c85534e41a..9a75aee861 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/how-to/index.html b/blog/categories/how-to/index.html index 2ecf9e9b13..be4d9972b0 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -758,6 +758,12 @@ diff --git a/blog/categories/ibeacons/atom.xml b/blog/categories/ibeacons/atom.xml index fd99ad4452..d554753a71 100644 --- a/blog/categories/ibeacons/atom.xml +++ b/blog/categories/ibeacons/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: iBeacons | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/ibeacons/index.html b/blog/categories/ibeacons/index.html index 18d873d910..1f9e22add2 100644 --- a/blog/categories/ibeacons/index.html +++ b/blog/categories/ibeacons/index.html @@ -225,6 +225,12 @@ diff --git a/blog/categories/internet-of-things/atom.xml b/blog/categories/internet-of-things/atom.xml index 3fc724eda8..df507b94f3 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+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 1808a35c9d..39094b502e 100644 --- a/blog/categories/internet-of-things/index.html +++ b/blog/categories/internet-of-things/index.html @@ -284,6 +284,12 @@ diff --git a/blog/categories/iot-data/atom.xml b/blog/categories/iot-data/atom.xml index e9ed01ee20..eafbb1c49f 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/iot-data/index.html b/blog/categories/iot-data/index.html index 5d58ef2b31..d4ef00dfc8 100644 --- a/blog/categories/iot-data/index.html +++ b/blog/categories/iot-data/index.html @@ -255,6 +255,12 @@ diff --git a/blog/categories/micropython/atom.xml b/blog/categories/micropython/atom.xml index 665e4216bd..ba633222a0 100644 --- a/blog/categories/micropython/atom.xml +++ b/blog/categories/micropython/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Micropython | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/micropython/index.html b/blog/categories/micropython/index.html index acb4feeec2..b9494fbe26 100644 --- a/blog/categories/micropython/index.html +++ b/blog/categories/micropython/index.html @@ -227,6 +227,12 @@ diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index 3ca78a9ea7..0e41e594c5 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: MQTT | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 54799bf87f..d93e8c9d4a 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -298,6 +298,12 @@ diff --git a/blog/categories/organisation/atom.xml b/blog/categories/organisation/atom.xml index 334c1dee80..f3ffcbd400 100644 --- a/blog/categories/organisation/atom.xml +++ b/blog/categories/organisation/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Organisation | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/organisation/index.html b/blog/categories/organisation/index.html index 7c40dc3cdf..1369196a3a 100644 --- a/blog/categories/organisation/index.html +++ b/blog/categories/organisation/index.html @@ -220,6 +220,12 @@ diff --git a/blog/categories/owntracks/atom.xml b/blog/categories/owntracks/atom.xml index 0b8c667ec5..f2dfeda3e9 100644 --- a/blog/categories/owntracks/atom.xml +++ b/blog/categories/owntracks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: OwnTracks | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/owntracks/index.html b/blog/categories/owntracks/index.html index 51c17852e3..8e3249c533 100644 --- a/blog/categories/owntracks/index.html +++ b/blog/categories/owntracks/index.html @@ -225,6 +225,12 @@ diff --git a/blog/categories/presence-detection/atom.xml b/blog/categories/presence-detection/atom.xml index 59d080a742..12f4e7f4cf 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/presence-detection/index.html b/blog/categories/presence-detection/index.html index cce29c9972..f4e8c550ca 100644 --- a/blog/categories/presence-detection/index.html +++ b/blog/categories/presence-detection/index.html @@ -189,6 +189,12 @@ diff --git a/blog/categories/public-service-announcement/atom.xml b/blog/categories/public-service-announcement/atom.xml index c5515be3b0..bd8f721272 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+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 82a5199c06..13293152fe 100644 --- a/blog/categories/public-service-announcement/index.html +++ b/blog/categories/public-service-announcement/index.html @@ -185,6 +185,12 @@ diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index c7273b9dbc..c55d1d5c06 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ @@ -13,6 +13,151 @@ Octopress + + <![CDATA[0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants]]> + + 2016-09-29T03:04:05+00:00 + https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks + SleepIQ and OpenALPR + +There now is support for two new super cool things: Beds and license plates. [@technicalpickles] created a [SleepIQ] component that let you monitor the sensor data of your bed. [@pvizeli] has added license plate recognition based on [OpenALPR]! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to [@pvizeli] for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!). + +### Configuration validation + +On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues. + +### Delayed Release + +As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: [@bbangert], [@turbokongen], [@lwis], [@kellerza], [@technicalpickles], [@pvizeli], [@persandstrom] and [@joyrider3774]. I am grateful to have all of you as part of the Home Assistant community. + +### All changes + + + +- Convert core from thread-based to be async-based ([@bbangert], [@balloob]) +- New [SleepIQ] support ([@technicalpickles]) +- Cover: [Vera] is now supported ([@pavoni]) +- Climate: Vera [climate] devices are now supported ([@robjohnson189]) +- Climate: [MySensors] is now supported ([@kaustubhphatak]) +- Control Home Assistant with [keyboard shortcuts][keyboard_remote] ([@deisi]) +- More voluptuous config validations ([@fabaff], [@kellerza], [@balloob]) +- New [Nuimo] controller support added ([@gross1989]) +- Sensor: [BOM] Weather component ([@tinglis1]) +- Automation: Option added to hide entity ([@milaq]) +- Sensor: [Emoncms] feeds now supported ([@joyrider]) +- Sensor: Mi Flora [plant] sensor now supported ([@open-homeautomation]) +- Logbook: Allow [filtering] entities and hide hidden entities ([@wokar]) +- Notify: [Kodi] support added ([@chrom3]) +- Notify: Support for [Simplepush] added ([@fabaff]) +- Sensor: [KNX] sensors now supported ([@daBONDi]) +- [Wink] improvements ([@w1ll1am23]) +- [ISY] improvements ([@Teagan42]) +- Link to relevant docs in config validation error messages ([@fabaff]) +- Greatly improve the performance of templates ([@balloob], [@pvizeli]) +- Notify - [Slack]: Support for username/icon ([@Khabi]) +- MQTT room detection: Away [timeout] now supported ([@mKeRix]) +- Climate: [Nest] can now control the fan ([@jawilson]) +- Modbus: Major cleanup for [Modbus] switches and sensors ([@persandstrom]) +- HTTP: Allow [passwordless] logins from whitelisted IP addresses ([@Danielhiversen]) +- Sensor: Yahoo! Finance [stocks] now supported ([@tchellomello]) +- Sensor: Set value based on incoming [email] ([@sam-io]) +- Light: White value now supported ([@mxtra], [@MartinHjelmare]) +- [InfluxDB] now allows attaching extra data ([@lwis]) +- [OpenALPR] support ([@pvizeli]) +- Minor features and bug fixes by [@fabaff], [@w1ll1am23], [@turbokongen], [@clach04], [@mKeRix], [@pvizeli], [@DavidLP], [@nvella], [@Teagan42], [@ericwclymer], [@wokar], [@kellerza], [@nkgilley], [@jawilson], [@Danielhiversen], [@ej81], [@danieljkemp], [@balloob], [@philhawthorne], [@LinuxChristian], [@milas], [@simonszu], [@Cinntax], [@irvingwa], [@sytone], [@kk7ds], [@robbiet480]. + +### Breaking changes + + - `yahooweather` default name is now `yweather`. Also min and max temperature are now correctly called `Temperature Min` and `Temperature Max`. + - `ffmpeg` is now a component for manage some things central. All `ffmpeg_bin` options have moved to this compoment from platforms. + - Config has changed for [X10] lights. + +### If you need help... +...don't hesitate to use our [Forum](https://community.home-assistant.io/) or join us for a little [chat](https://gitter.im/home-assistant/home-assistant). The release notes have comments enabled but it's preferred if you the former communication channels. Thanks. + +[@joyrider3774]: https://github.com/joyrider3774 +[@balloob]: https://github.com/balloob +[@bbangert]: https://github.com/bbangert +[@chrom3]: https://github.com/chrom3 +[@Cinntax]: https://github.com/Cinntax +[@clach04]: https://github.com/clach04 +[@daBONDi]: https://github.com/daBONDi +[@Danielhiversen]: https://github.com/Danielhiversen +[@danieljkemp]: https://github.com/danieljkemp +[@DavidLP]: https://github.com/DavidLP +[@deisi]: https://github.com/deisi +[@ej81]: https://github.com/ej81 +[@ericwclymer]: https://github.com/ericwclymer +[@fabaff]: https://github.com/fabaff +[@gross1989]: https://github.com/gross1989 +[@irvingwa]: https://github.com/irvingwa +[@jawilson]: https://github.com/jawilson +[@joyrider]: https://github.com/joyrider +[@kaustubhphatak]: https://github.com/kaustubhphatak +[@kellerza]: https://github.com/kellerza +[@Khabi]: https://github.com/Khabi +[@kk7ds]: https://github.com/kk7ds +[@LinuxChristian]: https://github.com/LinuxChristian +[@lwis]: https://github.com/lwis +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@milaq]: https://github.com/milaq +[@milas]: https://github.com/milas +[@mKerix]: https://github.com/mKerix +[@mxtra]: https://github.com/mxtra +[@nkgilley]: https://github.com/nkgilley +[@nvella]: https://github.com/nvella +[@open-homeautomation]: https://github.com/open-homeautomation +[@pavoni]: https://github.com/pavoni +[@persandstrom]: https://github.com/persandstrom +[@philhawthorne]: https://github.com/philhawthorne +[@pvizeli]: https://github.com/pvizeli +[@robbiet480]: https://github.com/robbiet480 +[@robjohnson189]: https://github.com/robjohnson189 +[@sam-io]: https://github.com/sam-io +[@simonszu]: https://github.com/simonszu +[@sytone]: https://github.com/sytone +[@tchellomello]: https://github.com/tchellomello +[@Teagan42]: https://github.com/Teagan42 +[@technicalpickles]: https://github.com/technicalpickles +[@tinglis1]: https://github.com/tinglis1 +[@turbokongen]: https://github.com/turbokongen +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wokar]: https://github.com/wokar + +[BOM]: /components/sensor.bom/ +[climate]: /components/climate.vera/ +[email]: /components/sensor.imap_email_content/ +[Emoncms]: /components/sensor.emoncms/ +[filtering]: /components/logbook/ +[InfluxDB]: /components/influxdb/ +[ISY]: /components/isy994/ +[KNX]: /components/sensor.knx/ +[Kodi]: /components/notify.kodi/ +[Modbus]: /components/modbus/ +[Nest]: /components/fan.nest/ +[Nuimo]: /components/nuimo_controller/ +[OpenALPR]: /components/openalpr/ +[passwordless]: /components/http/ +[Simplepush]: /components/notify.simplepush/ +[Slack]: /components/notify.slack/ +[SleepIQ]: /components/sleepiq/ +[stocks]: /components/sensor.yahoo_finance/ +[timeout]: /components/sensor.mqtt_room/ +[Vera]: /components/cover.vera/ +[Wink]: /components/wink/ +[plant]: /components/sensor.miflora/ +[MySensors]: /components/climate.mysensors/ +[keyboard_remote]: /components/keyboard_remote +[X10]: /components/light.x10/ +]]> + + <![CDATA[0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats]]> @@ -675,101 +820,6 @@ I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] da [Nest]: /components/thermostat.nest/ [filters]: /topics/templating/#home-assistant-template-extensions [Hyperion]: /components/light.hyperion/ -]]> - - - - <![CDATA[0.24: SQLAlchemy, KNX, Join by Joaoapps, and SimpliSafe.]]> - - 2016-07-16T12:00:00+00:00 - https://home-assistant.io/blog/2016/07/16/sqlalchemy-knx-join-simplisafe - - -- Config: Improved support for storing [secrets][secrets] ([@kellerza]) -- Sensor: Support for [Yahoo! Weather][yahoo-weather] ([@pvizeli]) -- Add scripts to command line to expose advanced options ([@balloob]) -- Alarm: [SimpliSafe][simplisafe] is now supported ([@w1ll1am23]) -- Core: Switch to SQLAlchemy for the Recorder component ([@rhooper]) -- Support for [Join by Joaoapps][join-joaoapps] added incl. [Join Notify][join-notify] ([@nkgilley]) -- Media Player: [Plex] will no longer spam the logs if server goes offline ([@dale3h]) -- Sensor: [APCUPSd Sensor][apcupsd-sensor] now supports names, icons and units ([@dale3h]) -- Lock: [Verisure] entities will now use name instead of serial number for entity id ([@turbokongen]) -- [StatsD] can now also export attributes ([@bah2830]) -- Support for [KNX] added ([@usul27]) -- Switch: [TPLink] HS100/HS110 now supported ([@GadgetReactor]) -- Stability fixes for [RFXtrx] ([@Danielhiversen]) -- Tweaks to [Z-Wave] ([@turbokongen]) -- Light: [Brightness] now clamped to 0-255 ([@keatontaylor]) -- Thermostat: [Radiotherm] HVAC mode now supported ([@danieljkemp]) -- Sensor: [Google Travel] times can now use dynamic locations for start/end ([@bah2830]) -- Notify: Allow sending photos to [Telegram] ([@pvizeli]) -- Frontend: Improve loading times ([@balloob]) -- Frontend: Fix stream not reconnecting after standby ([@balloob]) -- Frontend: Wait up to two seconds for new state before resetting toggle after toggling state ([@balloob]) - -### Hotfix 0.24.1 - July 21 - -Quick hot fix after we found a bug in the migrator where it wouldn't work with a database in a non-standard location. Thanks to [@n8henrie] and [@AlucardZero]. - -### Breaking changes - -- Migrating existing databases (see above). -- The [APCUPSd Sensor][apcupsd-sensor] was updated. This will need that you modify your `configuration.yaml` file. -- Entity IDs of Verisure locks will change. This is a one time change but should improve readability. - -[@bah2830]: https://github.com/bah2830/ -[@balloob]: https://github.com/balloob/ -[@dale3h]: https://github.com/dale3h/ -[@danieljkemp]: https://github.com/danieljkemp -[@GadgetReactor]: https://github.com/GadgetReactor -[@keatontaylor]: https://github.com/keatontaylor -[@kellerza]: https://github.com/kellerza/ -[@nkgilley]: https://github.com/nkgilley -[@pvizeli]: https://github.com/pvizeli/ -[@rhooper]: https://github.com/rhooper/ -[@turbokongen]: https://github.com/turbokongen/ -[@usul27]: https://github.com/usul27 -[@w1ll1am23]: https://github.com/w1ll1am23/ -[@n8henrie]: https://github.com/n8henrie/ -[@AlucardZero]: https://github.com/AlucardZero/ -[@Danielhiversen]: https://github.com/danielhiversen - - -[apcupsd-sensor]: /components/sensor.apcupsd/ -[Brightness]: /components/light/ -[CARTO]: https://carto.com/ -[Google Travel]: /components/sensor.google_travel_time/ -[imap-sensor]: /component/sensor.imap/ -[join-joaoapps]: /components/joaoapps_join/ -[join-notify]: /components/notify.joaoapps_join/ -[KNX]: /components/knx/ -[MapQuest]: https://www.mapquest.com/ -[Plex]: /components/media_player.plex/ -[Radiotherm]: /components/thermostat.radiotherm/ -[recorder]: /components/recorder/ -[secrets]: /topics/secrets/ -[simplisafe]: /components/alarm_control_panel.simplisafe/ -[SQLAlchemy]: http://www.sqlalchemy.org/ -[StatsD]: /components/statsd/ -[Telegram]: /components/notify.telegram/ -[TPLink]: /components/switch.tplink/ -[Verisure]: /components/lock.verisure/ -[yahoo-weather]: /components/sensor.yweather/ -[Z-Wave]: /components/zwave/ -[RFXtrx]: //components/rfxtrx/ ]]> diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index cf71b954e3..7b58ff8dd8 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -98,6 +98,38 @@

    2016

    + + + +
    @@ -1534,6 +1566,12 @@ diff --git a/blog/categories/survey/atom.xml b/blog/categories/survey/atom.xml index 3b592775d0..6df233844f 100644 --- a/blog/categories/survey/atom.xml +++ b/blog/categories/survey/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Survey | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/survey/index.html b/blog/categories/survey/index.html index 714d725a3c..2c7375f261 100644 --- a/blog/categories/survey/index.html +++ b/blog/categories/survey/index.html @@ -185,6 +185,12 @@ diff --git a/blog/categories/talks/atom.xml b/blog/categories/talks/atom.xml index b5cd6980a0..8090e7c5a1 100644 --- a/blog/categories/talks/atom.xml +++ b/blog/categories/talks/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Talks | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/talks/index.html b/blog/categories/talks/index.html index cf7b7249ed..acfa6bec2f 100644 --- a/blog/categories/talks/index.html +++ b/blog/categories/talks/index.html @@ -187,6 +187,12 @@ diff --git a/blog/categories/technology/atom.xml b/blog/categories/technology/atom.xml index 580ddb46c0..97d0a42e0e 100644 --- a/blog/categories/technology/atom.xml +++ b/blog/categories/technology/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Technology | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/technology/index.html b/blog/categories/technology/index.html index fcf17daf30..565eafd486 100644 --- a/blog/categories/technology/index.html +++ b/blog/categories/technology/index.html @@ -217,6 +217,12 @@ diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index 81bfec0788..6648706b44 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]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 048545c1ab..733684b0fd 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -220,6 +220,12 @@ diff --git a/blog/categories/video/atom.xml b/blog/categories/video/atom.xml index f9a2ccd116..5804c693ff 100644 --- a/blog/categories/video/atom.xml +++ b/blog/categories/video/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Video | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/video/index.html b/blog/categories/video/index.html index 1b5f02a396..50e70aed19 100644 --- a/blog/categories/video/index.html +++ b/blog/categories/video/index.html @@ -388,6 +388,12 @@ diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index 03ace7efb2..811421607c 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: Website | Home Assistant]]> - 2016-09-28T08:38:15+00:00 + 2016-09-29T04:42:54+00:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index dfbd7b7a58..f27a8a4ce0 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -220,6 +220,12 @@ diff --git a/blog/index.html b/blog/index.html index 50ba9af56e..725fc7b6c3 100644 --- a/blog/index.html +++ b/blog/index.html @@ -78,6 +78,113 @@ +
    +
    + +

    + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants +

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

    Two weeks ago, September 17 marked our 3 year anniversary. In this time Home Assistant managed to grow from a simple script that turned on my lights when the sun set to a kick ass open source project with the best community an open-source project could wish for. This release contains features, bug fixes and performance tweaks by a total of 50 different people! We have also managed to cross the 1000 forks on GitHub. Talking about momentum!

    + +

    This is a big release as we’ve completely overhauled the internals of Home Assistant. When I initially wrote Home Assistant, still figuring out the ins and outs of Python, I went for an approach that I was familiar with for an application with many moving parts: threads and locks. This approach has served us well over the years but it was slower than it needed to be, especially on limited hardware.

    + +

    This all changed when @bbangert came around and took on the tough job to migrate the core over to use asynchronous programming. He did an amazing job and I am happy to say that the initial port has been done and is included in this release! On top of that, we have been able to keep our simple and straightforward API at the same time. We are still in the process of migrating more and more components over to the asynchronous API, so expect more speedups and awesome features in the upcoming releases.

    + +

    SleepIQ and OpenALPR

    + +

    There now is support for two new super cool things: Beds and license plates. @technicalpickles created a SleepIQ component that let you monitor the sensor data of your bed. @pvizeli has added license plate recognition based on OpenALPR! This means that you can now be notified about which car is parked on your driveway or in your garage. I also would like to use this opportunity to give a big shoutout to @pvizeli for being such an awesome member of our community. He joined us at the end of June and has helped crush bugs and add awesome features ever since (65 pull requests already!).

    + +

    Configuration validation

    + +

    On the voluptuous front we have also made great progress. We were able to fully remove the legacy config helpers and have migrated 323 of the 346 components and platforms that needed migrating! This does mean that for some components the configuration has slightly changed, make sure to check out the breaking changes section at the bottom for more info. Thanks everybody for reviewing the Pull requests, testing the changes, and reporting issues.

    + +

    Delayed Release

    + +

    As you might have noticed, this release has been delayed by 5 days. This was due to a rare, difficult to reproduce problem with the Python interpreter. A huuuuge thanks to all the people that have helped countless hours in researching, debugging and fixing this issue: @bbangert, @turbokongen, @lwis, @kellerza, @technicalpickles, @pvizeli, @persandstrom and @joyrider3774. I am grateful to have all of you as part of the Home Assistant community.

    + +

    All changes

    + +

    + + + +

    Breaking changes

    + +
      +
    • yahooweather default name is now yweather. Also min and max temperature are now correctly called Temperature Min and Temperature Max.
    • +
    • ffmpeg is now a component for manage some things central. All ffmpeg_bin options have moved to this compoment from platforms.
    • +
    • Config has changed for X10 lights.
    • +
    + +

    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 the former communication channels. Thanks.

    + + + +
    +
    +
    +
    @@ -943,57 +1050,6 @@ Heatmap -
    -
    -
    - -
    -
    - -

    - ESP8266 and MicroPython - Part 1 -

    - - - -
    - - - six minutes reading time - - -
      - - -
    • ESP8266
    • - -
    • How-To
    • - -
    • Micropython
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    -The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The documentation covers a lot of ground. This post is providing only a little summary which should get you started.

    - -

    Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for download.

    - - - - Read on → -

    diff --git a/blog/posts/2/index.html b/blog/posts/2/index.html index aa7e37f6a9..bfaa85017d 100644 --- a/blog/posts/2/index.html +++ b/blog/posts/2/index.html @@ -78,6 +78,57 @@ +
    +
    + +

    + ESP8266 and MicroPython - Part 1 +

    + + + +
    + + + six minutes reading time + + +
      + + +
    • ESP8266
    • + +
    • How-To
    • + +
    • Micropython
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    +The first release of Micropython for ESP8266 was delivered a couple of weeks ago. The documentation covers a lot of ground. This post is providing only a little summary which should get you started.

    + +

    Until a couple of weeks ago, the pre-built MicroPython binary for the ESP8266 was only available to backers of the Kickstarter campaign. This has changed now and it is available to the public for download.

    + + + + Read on → + +
    +
    +
    +
    @@ -720,74 +771,6 @@ In the past month I was thinking about ways to integrate USB webcams into Home A - -
    -
    - -
    -
    - -

    - Community Highlights -

    - - - -
    - - - 1 minute reading time - - -
      - - -
    • Community
    • - -
    • Video
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    Our community is amazingly helpful and creative. If you haven’t been there yet, make sure to stop by our chat room and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community.

    - -

    SceneGen - cli for making scenes

    - -

    SceneGen is a new command line utility developed by Andrew Cockburn that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states.

    - -

    Videos

    - -

    Nick Touran has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up a blog post and has put out a video showing the new integration, very cool!

    - -
    - -
    - -

    Ben from BRUH Automation has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks.

    - -
    - -
    - -

    Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS.

    - -
    - -
    - - -

    diff --git a/blog/posts/3/index.html b/blog/posts/3/index.html index 01c45d103e..201e63d05c 100644 --- a/blog/posts/3/index.html +++ b/blog/posts/3/index.html @@ -78,6 +78,74 @@ +
    +
    + +

    + Community Highlights +

    + + + +
    + + + 1 minute reading time + + +
      + + +
    • Community
    • + +
    • Video
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    Our community is amazingly helpful and creative. If you haven’t been there yet, make sure to stop by our chat room and come hang out with us. In this blog post I want to highlight a few recent awesome projects and videos from the community.

    + +

    SceneGen - cli for making scenes

    + +

    SceneGen is a new command line utility developed by Andrew Cockburn that helps with creating scene configurations for Home Assistant. To use it, you put your house in the preferred state, run SceneGen and it will print the scene configuration for your current states.

    + +

    Videos

    + +

    Nick Touran has been working on integrating IR remotes with Home Assistant. He made it into a component which should be available in the next release which should arrive in a couple of days. In the meanwhile, he wrote up a blog post and has put out a video showing the new integration, very cool!

    + +
    + +
    + +

    Ben from BRUH Automation has put out another great video how to get started tracking your location in Home Assistant using MQTT and OwnTracks.

    + +
    + +
    + +

    Muhammed Kilic has created a video how to make your Home Assistant instance accessible from the internet using the free dynamic DNS service DuckDNS.

    + +
    + +
    + + + +
    +
    +
    +
    @@ -689,73 +757,6 @@ - -
    -
    - -
    -
    - -

    - To Infinity and Beyond πŸš€ -

    - - - -
    - - - two minutes reading time - - -
      - - -
    • Organisation
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    After 2.5 years I think we can proudly say: Home Assistant is a success. I write we because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own organisation on GitHub.

    - -

    On our journey we’ve reached many noteworthy milestones:

    - -
      -
    • #1 on HackerNews
    • -
    • Featured on ProductHunt
    • -
    • Trending repository on GitHub
    • -
    • 3000 stars on GitHub
    • -
    • 1.5 million page views on our website
    • -
    • Speaker at OpenIoT Summit 2016
    • -
    - -

    All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation for everyone.

    - -

    Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things.

    - -

    There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I’m sure that we’ll be able to eventually achieve these goals. I can’t say yet how or when. As with everything Home Assistant, we’ll take tiny steps, gathering feedback along the way to make sure we’re solving the right problems.

    - -

    I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It’s as simple as filling in the blanks.

    - -

    I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn’t matter if it is form of code, documentation or giving support in our chat room or forums. You. all. rock.

    - -

    Cheers to the future!

    - -

    Paulus

    - - -

    diff --git a/blog/posts/4/index.html b/blog/posts/4/index.html index 46157013c9..26949b3d90 100644 --- a/blog/posts/4/index.html +++ b/blog/posts/4/index.html @@ -78,6 +78,73 @@ +
    +
    + +

    + To Infinity and Beyond πŸš€ +

    + + + +
    + + + two minutes reading time + + +
      + + +
    • Organisation
    • + + +
    +
    + + Comments + +
    + +
    + + +
    +

    After 2.5 years I think we can proudly say: Home Assistant is a success. I write we because Home Assistant is no longer a one-person side project. It has become the side project of many people who spend countless hours on making Home Assistant the best home automation software out there. To acknowledge this we migrated the repositories from being under my name to be under our own organisation on GitHub.

    + +

    On our journey we’ve reached many noteworthy milestones:

    + +
      +
    • #1 on HackerNews
    • +
    • Featured on ProductHunt
    • +
    • Trending repository on GitHub
    • +
    • 3000 stars on GitHub
    • +
    • 1.5 million page views on our website
    • +
    • Speaker at OpenIoT Summit 2016
    • +
    + +

    All these accomplishments are a nice pat on the back but our journey is far from over. There are a lot of challenges ahead if we want to become the go to solution for home automation for everyone.

    + +

    Until now the focus has been on making a platform that developers love to use. A platform that is simple but customizable. A platform that is both powerful and reliable. But most important: a platform that is local and open. Home Assistant does a great job at all these things.

    + +

    There will be some major challenges ahead of us to target groups other than developers. Easy installation and easy configuration being the #1. I’m sure that we’ll be able to eventually achieve these goals. I can’t say yet how or when. As with everything Home Assistant, we’ll take tiny steps, gathering feedback along the way to make sure we’re solving the right problems.

    + +

    I am confident that we will get there because we are set up for success: we have a robust architecture, high test coverage and an active community of world class developers and users. On top of that, we use Python which allows us to move fast and tackle complex problems in elegant ways. It is so easy to learn that it allows any programmer, experienced or not, to contribute support for devices and services. It’s as simple as filling in the blanks.

    + +

    I would like to put out a big thank you to all our contributors who make Home Assistant what it is today. It doesn’t matter if it is form of code, documentation or giving support in our chat room or forums. You. all. rock.

    + +

    Cheers to the future!

    + +

    Paulus

    + + + +
    +
    +
    +
    @@ -702,90 +769,6 @@ Hold your NFC tag against the belly of Garfield to unlock the alarm. Read on → - -
    -
    - -
    -
    - -

    - 0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors -

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

    The focus of 0.13 was on test coverage, big cheers to @rmkraus for his hard work on this. I’m proud to announce that we’ve hit the 90% test coverage of the core + important components. A big milestone for the project.

    - -

    - - Examples of the new input_select and weblink components. -

    - -

    Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms:

    - -

    - - - - -

    diff --git a/blog/posts/5/index.html b/blog/posts/5/index.html index 58d501c004..9a4a15e51f 100644 --- a/blog/posts/5/index.html +++ b/blog/posts/5/index.html @@ -78,6 +78,90 @@ +
    +
    + +

    + 0.13: Speedtest.net, Bloomsky, Splunk and Garage Doors +

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

    The focus of 0.13 was on test coverage, big cheers to @rmkraus for his hard work on this. I’m proud to announce that we’ve hit the 90% test coverage of the core + important components. A big milestone for the project.

    + +

    + + Examples of the new input_select and weblink components. +

    + +

    Not only did we gain a lot of test coverage, we also attracted a lot of new developers that contributed a variety of components and platforms:

    + +

    + + + + + +
    +
    +
    +
    @@ -657,53 +741,6 @@ In this tutorial I will explain how you can activate Tasker tasks from Home Assi

    -
    -
    - -

    - InfluxDB and Grafana -

    - - - -
    - - - two minutes reading time - - -
      - - -
    • How-To
    • - - -
    -
    - - Comments - -
    - -
    - - -
    -

    -The InfluxDB database is a so-called time series database primarly designed to store sensor data and real-time analytics.

    - -

    The influxdb component makes it possible to transfer all state changes from Home Assistant to an external InfluxDB database.

    - - - - Read on → - -
    -
    -
    - @@ -160,7 +153,6 @@ You need the ffmpeg binary in your system
  • input (Required): A ffmpeg compatible input file, stream, or feed.
  • tool (Required): Is fix set to motion.
  • name (Optional): This parameter allows you to override the name of your camera.
  • -
  • ffmpeg_bin (Optional): Default ffmpeg.
  • changes (Optional): Default 10 percent. A lower value is more sensitive. I use 4 / 3.5 on my cameras. It describes how much needs to change between two frames to detect it as motion. See on descripton.
  • reset (Optional): Default 20 seconds. The time to reset the state after no new motion is detected.
  • repeat (Optional): Default 0 repeats (deactivate). How many events need to be detected in repeat_time in order to trigger a motion.
  • @@ -174,7 +166,7 @@ You need the ffmpeg binary in your system -

    If you are running into trouble with this sensor, please refer to this Troubleshooting section.

    +

    If you are running into trouble with this sensor, please refer to this Troubleshooting section.

    @@ -201,6 +193,9 @@ You need the ffmpeg binary in your system

    Related components

    @@ -159,12 +165,18 @@
  • Homematic Binary Sensor
  • +
  • + ISY994 Binary Sensor +
  • KNX Binary Sensor
  • MQTT Binary Sensor
  • +
  • + Modbus Binary Sensor +
  • MySensors Binary Sensor
  • @@ -183,6 +195,9 @@
  • Raspberry PI GPIO Binary Sensor
  • +
  • + SleepIQ Binary Sensor +
  • TCP Binary Sensor
  • diff --git a/components/binary_sensor.wink/index.html b/components/binary_sensor.wink/index.html index 7c0171b81b..d848b20b44 100644 --- a/components/binary_sensor.wink/index.html +++ b/components/binary_sensor.wink/index.html @@ -169,12 +169,18 @@
  • Homematic Binary Sensor
  • +
  • + ISY994 Binary Sensor +
  • KNX Binary Sensor
  • MQTT Binary Sensor
  • +
  • + Modbus Binary Sensor +
  • MySensors Binary Sensor
  • @@ -193,6 +199,9 @@
  • Raspberry PI GPIO Binary Sensor
  • +
  • + SleepIQ Binary Sensor +
  • TCP Binary Sensor
  • diff --git a/components/binary_sensor.zigbee/index.html b/components/binary_sensor.zigbee/index.html index 2e67cb1ff1..627d9e7a69 100644 --- a/components/binary_sensor.zigbee/index.html +++ b/components/binary_sensor.zigbee/index.html @@ -179,12 +179,18 @@
  • Homematic Binary Sensor
  • +
  • + ISY994 Binary Sensor +
  • KNX Binary Sensor
  • MQTT Binary Sensor
  • +
  • + Modbus Binary Sensor +
  • MySensors Binary Sensor
  • @@ -203,6 +209,9 @@
  • Raspberry PI GPIO Binary Sensor
  • +
  • + SleepIQ Binary Sensor +
  • TCP Binary Sensor
  • diff --git a/components/binary_sensor.zwave/index.html b/components/binary_sensor.zwave/index.html index 3aa910e108..af0bbcbb69 100644 --- a/components/binary_sensor.zwave/index.html +++ b/components/binary_sensor.zwave/index.html @@ -175,12 +175,18 @@
  • Homematic Binary Sensor
  • +
  • + ISY994 Binary Sensor +
  • KNX Binary Sensor
  • MQTT Binary Sensor
  • +
  • + Modbus Binary Sensor +
  • MySensors Binary Sensor
  • @@ -199,6 +205,9 @@
  • Raspberry PI GPIO Binary Sensor
  • +
  • + SleepIQ Binary Sensor +
  • TCP Binary Sensor
  • diff --git a/components/binary_sensor/index.html b/components/binary_sensor/index.html index a8f97fe8f5..c161c1d7fb 100644 --- a/components/binary_sensor/index.html +++ b/components/binary_sensor/index.html @@ -160,12 +160,18 @@
  • Homematic Binary Sensor
  • +
  • + ISY994 Binary Sensor +
  • KNX Binary Sensor
  • MQTT Binary Sensor
  • +
  • + Modbus Binary Sensor +
  • MySensors Binary Sensor
  • @@ -184,6 +190,9 @@
  • Raspberry PI GPIO Binary Sensor
  • +
  • + SleepIQ Binary Sensor +
  • TCP Binary Sensor
  • diff --git a/components/bloomsky/index.html b/components/bloomsky/index.html index 6df6770755..1276b3f302 100644 --- a/components/bloomsky/index.html +++ b/components/bloomsky/index.html @@ -161,6 +161,9 @@
  • EnOcean
  • +
  • + FFmpeg +
  • Homematic
  • @@ -188,6 +191,9 @@
  • Netatmo
  • +
  • + Nuimo controller +
  • OctoPrint
  • @@ -203,6 +209,9 @@
  • SCSGate
  • +
  • + SleepIQ +
  • TellStick
  • diff --git a/components/browser/index.html b/components/browser/index.html index 320bc90a47..32bce6a0c3 100644 --- a/components/browser/index.html +++ b/components/browser/index.html @@ -167,6 +167,9 @@
  • Introduction
  • +
  • + Keyboard +
  • Logger
  • diff --git a/components/camera.ffmpeg/index.html b/components/camera.ffmpeg/index.html index f6b5b7f6af..95c99d0c1b 100644 --- a/components/camera.ffmpeg/index.html +++ b/components/camera.ffmpeg/index.html @@ -91,10 +91,6 @@

    The ffmpeg platform allows you to use every video feed with FFmpeg as camera in Home Assistant. The input for ffmpeg need to support that could have multiple connection to source (input) in same time. For every user in UI and all 10 seconds (snapshot image) it make a new connection/reading to source. Normally that should never be a trouble only in strange selfmade constructs can be make mistakes.

    -

    -You need a ffmpeg binary in your system path. On Debain 8 you can install it from backports. If you want Hardware support on a Raspberry Pi you need tobuild from source by yourself. Windows binary are avilable on the FFmpeg website. -

    -

    To enable your FFmpeg feed in your installation, add the following to your configuration.yaml file:

    # Example configuration.yaml entry
    @@ -102,7 +98,6 @@ You need a ffmpeg binary in your system p
       - platform: ffmpeg
         input: FFMPEG_SUPPORTED_INPUT
         name: FFmpeg
    -    ffmpeg_bin: /usr/bin/ffmpeg
         extra_arguments: -q:v 2
     
    @@ -112,7 +107,6 @@ You need a ffmpeg binary in your system p
    • input (Required): A ffmpeg compatible input file, stream or feed.
    • name (Optional): This parameter allows you to override the name of your camera.
    • -
    • ffmpeg_bin (Optional): Default β€˜ffmpeg’.
    • extra_arguments (Optional): Extra option they will pass to ffmpeg. i.e. image quality or video filter options.
    @@ -120,23 +114,7 @@ You need a ffmpeg binary in your system p

    You can control the image quality with extra_arguments -q:v 2-32 or with lossless option -pred 1.

    -

    Troubleshooting

    - -

    In most of case, ffmpeg autodetect all needed options to read a video/audio stream or file. But it is possible in rare cases that’s needed to set a option to help ffmpeg. Per default ffmpeg use 5 seconds to detect all options or abort.

    - -

    First check, if your stream playable by ffmpeg with (use option -an or -vn to disable video or audio stream):

    - -
    $ ffmpeg -i INPUT -an -f null -
    -
    -
    - -

    Now you can see what going wrong. Following list could be help to solve your trouble:

    - -
      -
    • [rtsp @ ...] UDP timeout, retrying with TCP: You need to set RTSP transport in the configuration with: input: -rtsp_transport tcp -i INPUT
    • -
    • [rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size: FFmpeg need more data or time for autodetect. You can set the analyzeduration and/or probesize option, play with this value. If you know the needed value you can set it with: input: -analyzeduration xy -probesize xy -i INPUT. More information about that can be found on FFmpeg.
    • -
    - +

    If you are running into trouble with this sensor, please refer to this Troubleshooting section.

    @@ -164,6 +142,9 @@ You need a ffmpeg binary in your system p

    Related components

      +
    • + FFmpeg +
    • FFmpeg Binary Sensor
    • diff --git a/components/climate.ecobee/index.html b/components/climate.ecobee/index.html index 02a3b3fcfd..df62c5630e 100644 --- a/components/climate.ecobee/index.html +++ b/components/climate.ecobee/index.html @@ -152,6 +152,9 @@
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -161,6 +164,9 @@
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.eq3btsmart/index.html b/components/climate.eq3btsmart/index.html index 7c2c91c77a..23b9af5342 100644 --- a/components/climate.eq3btsmart/index.html +++ b/components/climate.eq3btsmart/index.html @@ -190,6 +190,9 @@ Notification handle = 0x0421 value: 02 01 09 14 04 2d
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -199,6 +202,9 @@ Notification handle = 0x0421 value: 02 01 09 14 04 2d
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.generic_thermostat/index.html b/components/climate.generic_thermostat/index.html index 7f7ffd8f4f..3dd600c263 100644 --- a/components/climate.generic_thermostat/index.html +++ b/components/climate.generic_thermostat/index.html @@ -164,6 +164,9 @@
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -173,6 +176,9 @@
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.heatmiser/index.html b/components/climate.heatmiser/index.html index 854ea8327c..8eb827239e 100644 --- a/components/climate.heatmiser/index.html +++ b/components/climate.heatmiser/index.html @@ -170,6 +170,9 @@
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -179,6 +182,9 @@
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.homematic/index.html b/components/climate.homematic/index.html index 1f9109510e..7343e2365d 100644 --- a/components/climate.homematic/index.html +++ b/components/climate.homematic/index.html @@ -166,6 +166,9 @@
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -175,6 +178,9 @@
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.honeywell/index.html b/components/climate.honeywell/index.html index 7b4acc0fee..c9afb8adab 100644 --- a/components/climate.honeywell/index.html +++ b/components/climate.honeywell/index.html @@ -159,6 +159,9 @@
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -168,6 +171,9 @@
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.knx/index.html b/components/climate.knx/index.html index 6da1205767..6065fe49ea 100644 --- a/components/climate.knx/index.html +++ b/components/climate.knx/index.html @@ -149,6 +149,9 @@
    • KNX Binary Sensor
    • +
    • + KNX Sensor +
    • KNX Switch
    • @@ -175,12 +178,18 @@
    • KNX
    • +
    • + KNX Sensor +
    • KNX Switch
    • KNX Thermostat
    • +
    • + Mi Flora plant sensor +
    • Particulate matter Sensor
    • diff --git a/components/climate.mysensors/index.html b/components/climate.mysensors/index.html new file mode 100644 index 0000000000..8f03edcc1e --- /dev/null +++ b/components/climate.mysensors/index.html @@ -0,0 +1,339 @@ + + + + + + + + + + MySensors HVAC - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      +
      + + + +
      +
      + +
      + + +
      + + + + +
      +

      + MySensors HVAC +

      +
      +
      + + +

      Integrates MySensors HVAC into Home Assistant. See the main component for configuration instructions.

      + +

      The following actuator types are supported:

      + +
      MySensors version 1.5 and higher
      + + + + + + + + + + + + + + +
      S_TYPEV_TYPE
      S_HVACV_HVAC_FLOW_STATE*, V_HVAC_SETPOINT_HEAT, V_HVAC_SETPOINT_COOL, V_HVAC_SPEED
      + +

      V_HVAC_FLOW_STATE is mapped to the state of the Climate component in HA as follows:

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Home Assistant StateMySensors State
      STATE_COOLCoolOn
      STATE_HEATHeatOn
      STATE_AUTOOff
      STATE_OFFAutoChangeOver
      + +

      Currently humidity, away_mode, aux_heat, swing_mode is not supported. This will be included in later versions as feasible.

      + +

      Set the target temperature using V_HVAC_SETPOINT_HEAT in Heat mode, and V_HVAC_SETPOINT_COOL in Cool Mode. In case of any Auto Change Over mode you can use V_HVAC_SETPOINT_HEAT as well as V_HVAC_SETPOINT_COOL to set the both the low bound and the high bound temperature of the device.

      + +

      You can use V_HVAC_SPEED to control the Speed setting of the Fan in the HVAC.

      + +

      For more information, visit the serial api of MySensors.

      + +

      Example sketch

      + +
      /*
      + * Documentation: http://www.mysensors.org
      + * Support Forum: http://forum.mysensors.org
      + *
      + */
      +
      +#include <MySensor.h>
      +/* Include all the other Necessary code here. The example code is limited to message exchange for mysensors with the controller (ha)*/
      +
      +#define CHILD_ID_HVAC  0  // childId
      +MyMessage msgHVACSetPointC(CHILD_ID_HVAC, V_HVAC_SETPOINT_COOL);
      +MyMessage msgHVACSpeed(CHILD_ID_HVAC, V_HVAC_SPEED);
      +MyMessage msgHVACFlowState(CHILD_ID_HVAC, V_HVAC_FLOW_STATE);
      +
      +/* Include all the other Necessary code here. The example code is limited to message exchange for mysensors with the controller (ha)*/
      +
      +void setup()
      +{
      +
      +        // Startup and initialize MySensors library. Set callback for incoming messages.
      +        gw.begin(incomingMessage);
      +
      +        // Send the sketch version information to the gateway and Controller
      +        gw.sendSketchInfo("HVAC", "0.1");
      +
      +        gw.present(CHILD_ID_HVAC, S_HVAC, "Thermostat");
      +        gw.send(msgHVACFlowState.set("Off"));
      +        gw.send(msgHVACSetPointC.set(target_temp));
      +        gw.send(msgHVACSpeed.set("Max"));
      +}
      +
      +void incomingMessage(const MyMessage &message) {
      +        String recvData = message.data;
      +        recvData.trim();
      +        switch (message.type) {
      +        case V_HVAC_SPEED:
      +                if(recvData.equalsIgnoreCase("auto")) fan_speed = 0;
      +                else if(recvData.equalsIgnoreCase("min")) fan_speed = 1;
      +                else if(recvData.equalsIgnoreCase("normal")) fan_speed = 2;
      +                else if(recvData.equalsIgnoreCase("max")) fan_speed = 3;
      +                processHVAC();
      +                break;
      +        case V_HVAC_SETPOINT_COOL:
      +                target_temp = message.getFloat();
      +                processHVAC();
      +                break;
      +        case V_HVAC_FLOW_STATE:
      +                if(recvData.equalsIgnoreCase("coolon") && (!Present_Power_On )){
      +                  togglePower();
      +                }
      +                else if(recvData.equalsIgnoreCase("off") && Present_Power_On ){
      +                  togglePower();
      +                }
      +                break;
      +        }
      +}
      +
      +void loop() {
      +
      +        // Process incoming messages (like config from server)
      +        gw.process();
      +
      +}
      +
      +
      + + + +
      + + +
      + + + + +
      +
      + + + + + + \ No newline at end of file diff --git a/components/climate.nest/index.html b/components/climate.nest/index.html index c262a0022b..faff26908e 100644 --- a/components/climate.nest/index.html +++ b/components/climate.nest/index.html @@ -136,6 +136,9 @@ You must have the Nest component configured to u
    • Nest Binary Sensor
    • +
    • + Nest Fan +
    • Nest Sensor
    • @@ -165,6 +168,9 @@ You must have the Nest component configured to u
    • Honeywell Thermostat
    • +
    • + MySensors HVAC +
    • Nest Thermostat
    • @@ -174,6 +180,9 @@ You must have the Nest component configured to u
    • Radiotherm Thermostat
    • +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.proliphix/index.html b/components/climate.proliphix/index.html index 2faaad6e86..eba8386bac 100644 --- a/components/climate.proliphix/index.html +++ b/components/climate.proliphix/index.html @@ -171,6 +171,9 @@ of OID values. A complete collection of the API is available in this Radiotherm Thermostat +
    • + Vera Thermostat +
    • Z-Wave Thermostat
    • diff --git a/components/climate.radiotherm/index.html b/components/climate.radiotherm/index.html index f9553b8416..982e3c3d6d 100644 --- a/components/climate.radiotherm/index.html +++ b/components/climate.radiotherm/index.html @@ -92,6 +92,7 @@

      The radiotherm climate platform let you control a thermostat from Radio Thermostat.

      The underlaying library supports:

      +
      • CT50 V1.09
      • CT50 V1.88
      • @@ -113,8 +114,8 @@

        Configuration variables:

          -
        • host (Required): List of your Radiotherm thermostats
        • -
        • hold_temp (Required): Boolean to control if Home Assistant temperature adjustments hold (True) or are temporary (False).
        • +
        • host (Optional): List of your Radiotherm thermostats. If not provided the thermostats will be auto-detected.
        • +
        • hold_temp (Optional): Boolean to control if Home Assistant temperature adjustments hold (True) or are temporary (False). Defaults to False.

        Temperature settings from Home Assistant will be sent to thermostat and then hold at that temperature. Set to False if you set a thermostat schedule on the thermostat itself and just want Home Assistant to send temporary temperature changes.

        @@ -169,6 +170,9 @@
      • Honeywell Thermostat
      • +
      • + MySensors HVAC +
      • Nest Thermostat
      • @@ -178,6 +182,9 @@
      • Radiotherm Thermostat
      • +
      • + Vera Thermostat +
      • Z-Wave Thermostat
      • diff --git a/components/climate.vera/index.html b/components/climate.vera/index.html new file mode 100644 index 0000000000..4239b7ea11 --- /dev/null +++ b/components/climate.vera/index.html @@ -0,0 +1,224 @@ + + + + + + + + + + Vera Thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Vera Thermostat +

        +
        +
        + + +

        The vera climate platform allows you to control your Vera thermostats from within Home Assistant.

        + +

        They will be automatically discovered if the vera component is loaded.

        + +

        For more configuration information see the Vera component documentation.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/climate.zwave/index.html b/components/climate.zwave/index.html index 59393309bd..2738819872 100644 --- a/components/climate.zwave/index.html +++ b/components/climate.zwave/index.html @@ -179,6 +179,9 @@ If the thermostat support different operationg modes, you will get one thermosta
      • Honeywell Thermostat
      • +
      • + MySensors HVAC +
      • Nest Thermostat
      • @@ -188,6 +191,9 @@ If the thermostat support different operationg modes, you will get one thermosta
      • Radiotherm Thermostat
      • +
      • + Vera Thermostat +
      • Z-Wave Thermostat
      • diff --git a/components/climate/index.html b/components/climate/index.html index 9944cc8382..27bd6630fc 100644 --- a/components/climate/index.html +++ b/components/climate/index.html @@ -138,6 +138,9 @@
      • KNX Thermostat
      • +
      • + MySensors HVAC +
      • Nest Thermostat
      • @@ -147,6 +150,9 @@
      • Radiotherm Thermostat
      • +
      • + Vera Thermostat +
      • Z-Wave Thermostat
      • diff --git a/components/configurator/index.html b/components/configurator/index.html index 9ed68da423..97459b97ea 100644 --- a/components/configurator/index.html +++ b/components/configurator/index.html @@ -145,6 +145,9 @@ This component is intended for developers.
      • Introduction
      • +
      • + Keyboard +
      • Logger
      • diff --git a/components/cover.command_line/index.html b/components/cover.command_line/index.html index ef0afb6bee..4252e177e6 100644 --- a/components/cover.command_line/index.html +++ b/components/cover.command_line/index.html @@ -186,6 +186,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -201,6 +204,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.homematic/index.html b/components/cover.homematic/index.html index af566fc245..73bffab3ff 100644 --- a/components/cover.homematic/index.html +++ b/components/cover.homematic/index.html @@ -154,6 +154,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -169,6 +172,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.isy994/index.html b/components/cover.isy994/index.html new file mode 100644 index 0000000000..4332badc1b --- /dev/null +++ b/components/cover.isy994/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + ISY994 Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + ISY994 Cover +

        +
        +
        + + +

        The isy994 platform allows you to get data from your ISY994 cover from within Home Assistant.

        + +

        They will be automatically discovered if the isy994 component is loaded.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/cover.mqtt/index.html b/components/cover.mqtt/index.html index 6f7632a14a..b6d02abb19 100644 --- a/components/cover.mqtt/index.html +++ b/components/cover.mqtt/index.html @@ -216,6 +216,9 @@ state from state_topic. If these messages
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -231,6 +234,9 @@ state from state_topic. If these messages
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.rfxtrx/index.html b/components/cover.rfxtrx/index.html index 83aca9e972..7e8d76d485 100644 --- a/components/cover.rfxtrx/index.html +++ b/components/cover.rfxtrx/index.html @@ -198,6 +198,9 @@ Then you should update your configuration to:

      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -213,6 +216,9 @@ Then you should update your configuration to:

      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.rpi_gpio/index.html b/components/cover.rpi_gpio/index.html index f9772b02bf..69c6745468 100644 --- a/components/cover.rpi_gpio/index.html +++ b/components/cover.rpi_gpio/index.html @@ -181,6 +181,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -196,6 +199,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.scsgate/index.html b/components/cover.scsgate/index.html index 48a2b446ac..6f21349dd1 100644 --- a/components/cover.scsgate/index.html +++ b/components/cover.scsgate/index.html @@ -169,6 +169,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -184,6 +187,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.vera/index.html b/components/cover.vera/index.html new file mode 100644 index 0000000000..d9b085cb45 --- /dev/null +++ b/components/cover.vera/index.html @@ -0,0 +1,221 @@ + + + + + + + + + + Vera Cover - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Vera Cover +

        +
        +
        + + +

        The vera cover platform allows you to control your Vera covers from within Home Assistant.

        + +

        They will be automatically discovered if the Vera component is loaded.

        + +

        For more configuration information see the Vera component documentation.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/cover.wink/index.html b/components/cover.wink/index.html index b4e56f3a2a..6e3c26819e 100644 --- a/components/cover.wink/index.html +++ b/components/cover.wink/index.html @@ -160,6 +160,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -175,6 +178,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover.zwave/index.html b/components/cover.zwave/index.html index 899f86b35a..ddfacd81e0 100644 --- a/components/cover.zwave/index.html +++ b/components/cover.zwave/index.html @@ -163,6 +163,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -178,6 +181,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/cover/index.html b/components/cover/index.html index 5a3ea5c9d8..0791ff6d43 100644 --- a/components/cover/index.html +++ b/components/cover/index.html @@ -91,6 +91,107 @@

        Home Assistant can give you an interface to control covers such as rollershutters and garage doors.

        +

        Services

        + +

        Cover control services

        +

        Available services: cover.open_cover, cover.close_cover, cover.stop_cover, cover.open_cover_tilt, cover.close_cover_tilt, cover.stop_cover_tilt

        + + + + + + + + + + + + + + + + +
        Service data attributeOptionalDescription
        entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
        + +

        Service cover.set_cover_position

        + +

        Set cover position of one or multiple covers.

        + + + + + + + + + + + + + + + + + + + + + +
        Service data attributeOptionalDescription
        entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
        positionnoInteger between 0 and 100.
        + +

        Automation example

        + +
        automation:
        +  trigger:
        +    platform: time
        +    after: "07:15:00"
        +  action:
        +    - service: cover.set_cover_position
        +      data:
        +        entity_id: cover.demo
        +        position: 50
        +
        +
        + +

        Service cover.set_cover_tilt_position

        + +

        Set cover tilt position of one or multiple covers.

        + + + + + + + + + + + + + + + + + + + + + +
        Service data attributeOptionalDescription
        entity_idyesString or list of strings that point at entity_id’s of covers. Else targets all.
        positionnoInteger between 0 and 100.
        + +

        Automation example

        + +
        automation:
        +  trigger:
        +    platform: time
        +    after: "07:15:00"
        +  action:
        +    - service: cover.set_cover_tilt_position
        +      data:
        +        entity_id: cover.demo
        +        position: 50
        +
        +
        @@ -115,6 +216,9 @@ rollershutters and garage doors.

      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -127,6 +231,9 @@ rollershutters and garage doors.

      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/demo/index.html b/components/demo/index.html index 69c6a24304..f550a4e276 100644 --- a/components/demo/index.html +++ b/components/demo/index.html @@ -161,6 +161,9 @@
      • Introduction
      • +
      • + Keyboard +
      • Logger
      • diff --git a/components/device_sun_light_trigger/index.html b/components/device_sun_light_trigger/index.html index 1e7c8795f8..e52171d6d5 100644 --- a/components/device_sun_light_trigger/index.html +++ b/components/device_sun_light_trigger/index.html @@ -166,6 +166,9 @@
      • LIRC
      • +
      • + OpenAlpr +
      • Presence based lights
      • diff --git a/components/discovery/index.html b/components/discovery/index.html index 10c22c6d33..65057e7dd3 100644 --- a/components/discovery/index.html +++ b/components/discovery/index.html @@ -167,6 +167,9 @@ If you see Not initializing discovery because co
      • Introduction
      • +
      • + Keyboard +
      • Logger
      • diff --git a/components/ecobee/index.html b/components/ecobee/index.html index 2961ad7c47..7694b17ace 100644 --- a/components/ecobee/index.html +++ b/components/ecobee/index.html @@ -196,6 +196,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -223,6 +226,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -238,6 +244,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/emulated_hue/index.html b/components/emulated_hue/index.html index 45a68896f0..724da60efa 100644 --- a/components/emulated_hue/index.html +++ b/components/emulated_hue/index.html @@ -208,6 +208,9 @@ entities. The driving use case behind this functionality is to allow Home Assist
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -235,6 +238,9 @@ entities. The driving use case behind this functionality is to allow Home Assist
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -250,6 +256,9 @@ entities. The driving use case behind this functionality is to allow Home Assist
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/enocean/index.html b/components/enocean/index.html index b7cabeda40..b03e4694a2 100644 --- a/components/enocean/index.html +++ b/components/enocean/index.html @@ -181,6 +181,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -208,6 +211,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -223,6 +229,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/fan.isy994/index.html b/components/fan.isy994/index.html new file mode 100644 index 0000000000..d4ade6adbd --- /dev/null +++ b/components/fan.isy994/index.html @@ -0,0 +1,195 @@ + + + + + + + + + + ISY994 Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + ISY994 Fan +

        +
        +
        + + +

        The isy994 platform allows you to get data from your ISY994 fan from within Home Assistant.

        + +

        They will be automatically discovered if the isy994 component is loaded.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/fan.mqtt/index.html b/components/fan.mqtt/index.html index 3676e9f62a..d4cbaa6edb 100644 --- a/components/fan.mqtt/index.html +++ b/components/fan.mqtt/index.html @@ -202,9 +202,15 @@ Make sure that your topic match exact. some-topi

        Category Fan

        diff --git a/components/fan.nest/index.html b/components/fan.nest/index.html new file mode 100644 index 0000000000..e7f5595333 --- /dev/null +++ b/components/fan.nest/index.html @@ -0,0 +1,202 @@ + + + + + + + + + + Nest Fan - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Nest Fan +

        +
        +
        + + +

        The nest fan platform let you control a fan from Nest.

        + +

        +You must have the Nest component configured to use those thermostats. +

        + +

        To set it up, add the following information to your configuration.yaml file:

        + +
        fan:
        +  platform: nest
        +
        +
        + + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/fan/index.html b/components/fan/index.html index 0591c78615..45798fed61 100644 --- a/components/fan/index.html +++ b/components/fan/index.html @@ -117,9 +117,15 @@

    Platforms

    diff --git a/components/feedreader/index.html b/components/feedreader/index.html index 11aee64d2f..6aea31127f 100644 --- a/components/feedreader/index.html +++ b/components/feedreader/index.html @@ -172,6 +172,9 @@
  • Introduction
  • +
  • + Keyboard +
  • Logger
  • diff --git a/components/ffmpeg/index.html b/components/ffmpeg/index.html new file mode 100644 index 0000000000..7b1ddf8a02 --- /dev/null +++ b/components/ffmpeg/index.html @@ -0,0 +1,285 @@ + + + + + + + + + + FFmpeg - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + FFmpeg +

    +
    +
    + + +

    It allow other Home-Assistant components to process video/audio streams. It need a ffmpeg binary in your system path. It support all ffmpeg version since 3.0.0. If you have a older version, please update.

    + +

    +You need a ffmpeg binary in your system path. On Debain 8 or Raspbian (Jessie) you can install it from backports. If you want Hardware support on a Raspberry Pi you need to build from source by yourself. Windows binary are avilable on the FFmpeg website. +

    + +

    To set it up, add the following information to your configuration.yaml file:

    + +
    ffmpeg:
    +  ffmpeg_bin: /usr/bin/ffmpeg
    +  run_test: True
    +
    +
    + +

    Configuration variables:

    + +
      +
    • ffmpeg_bin (Optional): Default β€˜ffmpeg’. Set the ffmpeg binary.
    • +
    • run_test (Optional): Default True. Check if input is usable by ffmpeg.
    • +
    + +

    Troubleshooting

    + +

    In most of case, ffmpeg autodetect all needed options to read a video/audio stream or file. But it is possible in rare cases that’s needed to set a option to help ffmpeg. Per default ffmpeg use 5 seconds to detect all options or abort.

    + +

    First check, if your stream playable by ffmpeg with (use option -an or -vn to disable video or audio stream):

    + +
    $ ffmpeg -i INPUT -an -f null -
    +
    +
    + +

    Now you can see what going wrong. Following list could be help to solve your trouble:

    + +
      +
    • [rtsp @ ...] UDP timeout, retrying with TCP: You need to set RTSP transport in the configuration with: input: -rtsp_transport tcp -i INPUT
    • +
    • [rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size: FFmpeg need more data or time for autodetect. You can set the analyzeduration and/or probesize option, play with this value. If you know the needed value you can set it with: input: -analyzeduration xy -probesize xy -i INPUT. More information about that can be found on FFmpeg.
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/hdmi_cec/index.html b/components/hdmi_cec/index.html index 7f6b0be9e8..0b4af779c8 100644 --- a/components/hdmi_cec/index.html +++ b/components/hdmi_cec/index.html @@ -220,6 +220,9 @@
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/homematic/index.html b/components/homematic/index.html index 2c9783060f..b232c1e5e6 100644 --- a/components/homematic/index.html +++ b/components/homematic/index.html @@ -262,6 +262,9 @@ The name depends on if you chose to resolve names or not. If not, it will be the
  • EnOcean
  • +
  • + FFmpeg +
  • Homematic
  • @@ -289,6 +292,9 @@ The name depends on if you chose to resolve names or not. If not, it will be the
  • Netatmo
  • +
  • + Nuimo controller +
  • OctoPrint
  • @@ -304,6 +310,9 @@ The name depends on if you chose to resolve names or not. If not, it will be the
  • SCSGate
  • +
  • + SleepIQ +
  • TellStick
  • diff --git a/components/http/index.html b/components/http/index.html index e31042d991..e95f3d8a2e 100644 --- a/components/http/index.html +++ b/components/http/index.html @@ -104,6 +104,9 @@ It’s HIGHLY recommended that you set the api_p cors_allowed_origins: - https://google.com - https://home-assistant.io + approved_ips: + - 127.0.0.1 + - 192.168.1.9
    @@ -117,6 +120,7 @@ It’s HIGHLY recommended that you set the api_p
  • ssl_certificate (Optional): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection.
  • ssl_key (Optional): Path to your TLS/SSL key to serve Home Assistant over a secure connection.
  • cors_allowed_origins (Optional): A list of origin domain names to allow CORS requests from. Enabling this will set the Access-Control-Allow-Origin header to the Origin header if it is found in the list, and the Access-Control-Allow-Headers header to Origin, Accept, X-Requested-With, Content-type, X-HA-access. You must provide the exact Origin, i.e. https://home-assistant.io will allow requests from https://home-assistant.io but not http://home-assistant.io.
  • +
  • approved_ips (Optional): A list of approved ips. Then it will be possible to login from given ips without providing a password.
  • The Set up encryption using Let’s Encrypt blog post gives you details about the encryption of your traffic using free certificates from Let’s Encrypt.

    @@ -182,6 +186,9 @@ It’s HIGHLY recommended that you set the api_p
  • Introduction
  • +
  • + Keyboard +
  • Logger
  • diff --git a/components/ifttt/index.html b/components/ifttt/index.html index 87bfa7d0b3..ef641508f5 100644 --- a/components/ifttt/index.html +++ b/components/ifttt/index.html @@ -234,6 +234,9 @@ You need to setup a unique trigger for each event you sent to IFTTT.
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/index.html b/components/index.html index 032366491a..db8b3f1598 100644 --- a/components/index.html +++ b/components/index.html @@ -103,7 +103,7 @@ Support for these components is provided by the Home Assistant community.
    - All (407) + All (434) Featured @@ -119,14 +119,14 @@ Support for these components is provided by the Home Assistant community. Automation - (13) + (14) Binary Sensor - (24) + (27) @@ -147,21 +147,21 @@ Support for these components is provided by the Home Assistant community. Climate - (10) + (12) Cover - (9) + (11) DIY - (10) + (12) @@ -189,14 +189,14 @@ Support for these components is provided by the Home Assistant community. Fan - (1) + (3) Finance - (4) + (5) @@ -224,21 +224,21 @@ Support for these components is provided by the Home Assistant community. Hub - (26) + (29) Light - (23) + (24) Lock - (5) + (6) @@ -252,7 +252,7 @@ Support for these components is provided by the Home Assistant community. Notifications - (29) + (31) @@ -275,7 +275,7 @@ Support for these components is provided by the Home Assistant community. Sensor - (35) + (39) @@ -289,7 +289,7 @@ Support for these components is provided by the Home Assistant community. Switch - (35) + (36) @@ -317,7 +317,7 @@ Support for these components is provided by the Home Assistant community. Weather - (9) + (10) @@ -1190,6 +1190,20 @@ Support for these components is provided by the Home Assistant community. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2306,6 +2472,20 @@ Support for these components is provided by the Home Assistant community. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/input_select/index.html b/components/input_select/index.html index 052ef3a3a8..575c7c4535 100644 --- a/components/input_select/index.html +++ b/components/input_select/index.html @@ -172,6 +172,9 @@
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/input_slider/index.html b/components/input_slider/index.html index 2041da4b90..8db8da3bc1 100644 --- a/components/input_slider/index.html +++ b/components/input_slider/index.html @@ -239,6 +239,9 @@
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/insteon_hub/index.html b/components/insteon_hub/index.html index fad37c7a8d..513395041c 100644 --- a/components/insteon_hub/index.html +++ b/components/insteon_hub/index.html @@ -153,6 +153,9 @@
  • EnOcean
  • +
  • + FFmpeg +
  • Homematic
  • @@ -180,6 +183,9 @@
  • Netatmo
  • +
  • + Nuimo controller +
  • OctoPrint
  • @@ -195,6 +201,9 @@
  • SCSGate
  • +
  • + SleepIQ +
  • TellStick
  • diff --git a/components/introduction/index.html b/components/introduction/index.html index 4c53f3ced7..0c32fb9c8a 100644 --- a/components/introduction/index.html +++ b/components/introduction/index.html @@ -140,6 +140,9 @@
  • Introduction
  • +
  • + Keyboard +
  • Logger
  • diff --git a/components/isy994/index.html b/components/isy994/index.html index 537755800a..0ab7b4fb79 100644 --- a/components/isy994/index.html +++ b/components/isy994/index.html @@ -89,12 +89,12 @@
    -

    The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. The controller is also capable of controlling Z-Wave devices but that functionality has not yet been confirmed with Home Assistant. +

    The ISY994 is a home automation controller that is capable of controlling Insteon and X10 devices. Some models of the ISY994 can even control Z-Wave devices. The ISY994 controller is manufactured by Universal Devices.

    Basic Configuration

    -

    Home Assistant is capable of communicating with any switch, sensor, and light that is configured on the controller. Using the programs on the controller, custom switches and sensors can also be created.

    +

    Home Assistant is capable of communicating with any binary sensor, cover, fan, light, lock, sensor and switch that is configured on the controller. Using the programs on the controller, custom binary sensors, cover, fan, lock, and switches can also be created.

    To integrate your ISY994 controller with Home Assistant, add the following section to your configuration.yaml file:

    @@ -116,30 +116,89 @@ The ISY994 controller is manufactured by Creating Custom Switches +

    Creating Custom Devices

    -

    Using the Programs tab in the controller’s Administrative Console, custom switches can be created that will appear natively inside of Home Assistant. Home Assistant will scan two different directories for switch configurations on the controller. These directories must exist at the root level. The two directories used to make switches are HA.doors and HA.switches. Currently, the two receive identical treatment in Home Assistant.

    +

    Using the Programs tab in the controller’s Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains:

    -

    A switch is created by creating a directory under either of these root dirctories with the name you would like to call the switch. Two programs are then required in this directory: status and actions. The image below shows a sample configuration. This sample includes an extra program called auto on. This is ignored by Home Assistant.

    +
    My Programs
    +β”œβ”€β”€ HA.binary_sensor
    +|   β”œβ”€β”€ Movement In House
    +|   |   └── status
    +|   └── Garage Open
    +|   |   └── status
    +β”œβ”€β”€ HA.cover
    +|   β”œβ”€β”€ Left Garage Door
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +|   β”œβ”€β”€ Living Room Blinds
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +β”œβ”€β”€ HA.fan
    +|   β”œβ”€β”€ Desk Fan
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +|   β”œβ”€β”€ Living Room Fan
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +β”œβ”€β”€ HA.lock
    +|   β”œβ”€β”€ Front Door
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +|   β”œβ”€β”€ Back Door
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +β”œβ”€β”€ HA.switch
    +|   β”œβ”€β”€ Dining Lights
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +|   β”œβ”€β”€ Sleep Mode
    +|   |   β”œβ”€β”€ actions
    +|   |   └── status
    +
    +
    + +

    A device is created by creating a directory, with the name for the device, under any of the following root directories:

    +
      +
    • HA.binary_sensor will create a binary sensor (see Customizing Devices to set the sensor class)
    • +
    • HA.cover will create a cover
    • +
    • HA.fan will create a fan
    • +
    • HA.lock will create a lock
    • +
    • HA.switch will create a switch
    • +
    + +

    A program, named status, is required under the program device directory. A program, named actions, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored.

    - +

    -

    The status program in this directory is what indicates if the switch is on or off. Only the IF clause is evaluated. If the clause returns True, the switch will be on. False will indicate the switch is off.

    +

    The status program in this directory is what indicates the state of the device:

    +
      +
    • binary_sensor on if the clause returns true, otherwise off
    • +
    • cover closed if the clause returns true, otherwise open
    • +
    • fan on if the clause returns true, otherwise off
    • +
    • lock locked if the clause returns true, otherwise unlocked
    • +
    • switch on if the clause returns true, otherwise off
    • +

    -

    The actions program indicates what should be performed to turn the switch on or off. The THEN clause gives instructions for turning the switch on while the ELSE clause gives instructions for turning the switch off. Below is an example.

    +

    The actions program indicates what should be performed for the following device services:

    +
      +
    • cover the THEN clause is evaluated for the open_cover service, the ELSE clause is evaluated for the close_cover service
    • +
    • fan the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service
    • +
    • lock the THEN clause is evaluated for the lock service, the ELSE clause is evaluated for the unlock service
    • +
    • switch the THEN clause is evaluated for the turn_on srevice, the ELSE clause is evaluated for the turn_off service
    • +

    @@ -147,28 +206,6 @@ The ISY994 controller is manufactured by Creating Custom Sensors - -

    Custom sensors can also be created using the Programs tab in the ISY controller’s Administrative Console. For programs, three different root level folders are evaluated that are all handled a little differently inside of Home Assistant.

    - -
      -
    • HA.sensors will have states of Open or Closed
    • -
    • HA.states will have states of On or Off
    • -
    • HA.locations will have states of Home or Away
    • -
    - -

    To create a custom sensor, create a program under any of the three root directories. The name of the program will be the name of the sensor. An example below shows a location indicator setup.

    - -

    - -

    - -

    The program created only needs an IF clause. It will be evaluated to either Open/On/Home when it returns True and Closed/Off/Away when it returns False. An example is below.

    - -

    - -

    - @@ -186,7 +223,33 @@ The ISY994 controller is manufactured by Category Hub @@ -206,6 +269,9 @@ The ISY994 controller is manufactured by Netatmo +
  • + Nuimo controller +
  • OctoPrint
  • @@ -248,6 +317,9 @@ The ISY994 controller is manufactured by + + + + + + + + Keyboard - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Keyboard +

    +
    +
    + + +

    Recieve signals from a keyboard and use it as a remote control.

    + +

    This component allows to use a keyboard as remote control. It will +fire Β΄keyboard_remote_command_receivedΒ΄ events witch can then be used +in automation rules.

    + +

    The evdev package is used to interface with the keyboard and thus this +is Linux only. It also means you can’t use your normal keyboard for this, +because evdev will block it.

    + +
    # Example configuration.yaml entry
    +keyboard_remote:
    +  device_descriptor: '/dev/input/by-id/foo'
    +  key_value: 'key_up' # optional alternaive 'key_down' and 'key_hold'
    +  # be carefull, 'key_hold' fires a lot of events
    +
    +
    + +

    And an automation rule to bring breath live into it.

    + +
    automation:
    +  alias: Keyboard All light on
    +  trigger:
    +    platform: event
    +    event_type: keyboard_remote_command_received
    +    event_data:
    +      key_code: 107 # inspect log to obtain desired keycode
    +  action:
    +    service: light.turn_on
    +    entity_id: light.all
    +
    +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/knx/index.html b/components/knx/index.html index 28f7bc27df..fca31d048c 100644 --- a/components/knx/index.html +++ b/components/knx/index.html @@ -95,6 +95,7 @@ @@ -109,7 +110,7 @@
      -
    • host (Required): The IP address of the KNX/IP interface to use. You can use β€œ0.0.0.0” if your KNX/IP gateway supports discovery.
    • +
    • host (Optional): The IP address of the KNX/IP interface to use. It defaults to 0.0.0.0 which will start discovery for your KNX/IP gateway.
    • port (Optional): The UDP port number. Defaults to 3671.
    @@ -141,6 +142,9 @@
  • KNX Binary Sensor
  • +
  • + KNX Sensor +
  • KNX Switch
  • @@ -170,12 +174,18 @@
  • KNX
  • +
  • + KNX Sensor +
  • KNX Switch
  • KNX Thermostat
  • +
  • + Mi Flora plant sensor +
  • Particulate matter Sensor
  • diff --git a/components/light.blinksticklight/index.html b/components/light.blinksticklight/index.html index c94b7fceeb..964b5d191b 100644 --- a/components/light.blinksticklight/index.html +++ b/components/light.blinksticklight/index.html @@ -152,6 +152,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.enocean/index.html b/components/light.enocean/index.html index 97db8a0518..61ef086447 100644 --- a/components/light.enocean/index.html +++ b/components/light.enocean/index.html @@ -171,6 +171,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.flux_led/index.html b/components/light.flux_led/index.html index 62b26799df..12e75cd14f 100644 --- a/components/light.flux_led/index.html +++ b/components/light.flux_led/index.html @@ -204,6 +204,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.homematic/index.html b/components/light.homematic/index.html index 3ad9b70d9d..301510ced8 100644 --- a/components/light.homematic/index.html +++ b/components/light.homematic/index.html @@ -166,6 +166,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.hue/index.html b/components/light.hue/index.html index e924b3f4f4..e8d74f90a8 100644 --- a/components/light.hue/index.html +++ b/components/light.hue/index.html @@ -159,6 +159,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.hyperion/index.html b/components/light.hyperion/index.html index f80b5bff0a..99f4eaea39 100644 --- a/components/light.hyperion/index.html +++ b/components/light.hyperion/index.html @@ -143,6 +143,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.insteon_hub/index.html b/components/light.insteon_hub/index.html index c880877d7b..660b2cf225 100644 --- a/components/light.insteon_hub/index.html +++ b/components/light.insteon_hub/index.html @@ -145,6 +145,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.isy994/index.html b/components/light.isy994/index.html new file mode 100644 index 0000000000..21f179b87c --- /dev/null +++ b/components/light.isy994/index.html @@ -0,0 +1,258 @@ + + + + + + + + + + ISY994 Light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + ISY994 Light +

    +
    +
    + + +

    The isy994 platform allows you to get data from your ISY994 light from within Home Assistant.

    + +

    They will be automatically discovered if the isy994 component is loaded.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/light.lifx/index.html b/components/light.lifx/index.html index cf420a5751..536a1ce105 100644 --- a/components/light.lifx/index.html +++ b/components/light.lifx/index.html @@ -153,6 +153,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.limitlessled/index.html b/components/light.limitlessled/index.html index 75f23a1fd5..98ce33dbdb 100644 --- a/components/light.limitlessled/index.html +++ b/components/light.limitlessled/index.html @@ -216,6 +216,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.mqtt/index.html b/components/light.mqtt/index.html index 22bb07af52..84d0fdf672 100644 --- a/components/light.mqtt/index.html +++ b/components/light.mqtt/index.html @@ -245,6 +245,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.mqtt_json/index.html b/components/light.mqtt_json/index.html index 6a0fe3191e..daa08a9b90 100644 --- a/components/light.mqtt_json/index.html +++ b/components/light.mqtt_json/index.html @@ -204,6 +204,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.mysensors/index.html b/components/light.mysensors/index.html index 6d88d4befa..adbd147882 100644 --- a/components/light.mysensors/index.html +++ b/components/light.mysensors/index.html @@ -243,6 +243,9 @@
  • MySensors Binary Sensor
  • +
  • + MySensors HVAC +
  • MySensors Sensor
  • @@ -272,6 +275,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.osramlightify/index.html b/components/light.osramlightify/index.html index 76b0cad86a..f3affeaac9 100644 --- a/components/light.osramlightify/index.html +++ b/components/light.osramlightify/index.html @@ -148,6 +148,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.qwikswitch/index.html b/components/light.qwikswitch/index.html index 59df3d0727..abbe3c5684 100644 --- a/components/light.qwikswitch/index.html +++ b/components/light.qwikswitch/index.html @@ -151,6 +151,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.rfxtrx/index.html b/components/light.rfxtrx/index.html index 9c622f9a9c..f50401120b 100644 --- a/components/light.rfxtrx/index.html +++ b/components/light.rfxtrx/index.html @@ -204,6 +204,9 @@ Then you should update your configuration to:

  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.scsgate/index.html b/components/light.scsgate/index.html index 05df7efdb0..54ef9f3617 100644 --- a/components/light.scsgate/index.html +++ b/components/light.scsgate/index.html @@ -170,6 +170,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.tellstick/index.html b/components/light.tellstick/index.html index a153c4446a..dba23e1aae 100644 --- a/components/light.tellstick/index.html +++ b/components/light.tellstick/index.html @@ -157,6 +157,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.vera/index.html b/components/light.vera/index.html index 15cdcac640..dd10af5a72 100644 --- a/components/light.vera/index.html +++ b/components/light.vera/index.html @@ -128,6 +128,9 @@
  • Vera Binary Sensor
  • +
  • + Vera Cover +
  • Vera Lock
  • @@ -137,6 +140,9 @@
  • Vera Switch
  • +
  • + Vera Thermostat +
  • @@ -160,6 +166,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.wemo/index.html b/components/light.wemo/index.html index 35f98133bd..4110bf6f5c 100644 --- a/components/light.wemo/index.html +++ b/components/light.wemo/index.html @@ -154,6 +154,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.wink/index.html b/components/light.wink/index.html index c3b913b445..947c1ce843 100644 --- a/components/light.wink/index.html +++ b/components/light.wink/index.html @@ -163,6 +163,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.x10/index.html b/components/light.x10/index.html index 17d42eecef..8415e00c41 100644 --- a/components/light.x10/index.html +++ b/components/light.x10/index.html @@ -98,7 +98,7 @@
    # Example configuration.yaml entry
     light:
       - platform: x10
    -    lights:
    +    devices:
           - name: Living Room Lamp
             id: a2
           - name: Bedroom Lamp
    @@ -109,7 +109,7 @@
     

    Configuration variables:

      -
    • id (Required): Device identifier. Composed of house code + unit id.
    • +
    • id (Required): Device identifier. Composed of house code und unit id.
    • name (Optional): A friendly name for the device. By default id from the device is used.
    @@ -160,6 +160,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.zigbee/index.html b/components/light.zigbee/index.html index c72493015d..abb8b59c3a 100644 --- a/components/light.zigbee/index.html +++ b/components/light.zigbee/index.html @@ -175,6 +175,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light.zwave/index.html b/components/light.zwave/index.html index 411823c3f2..09baabd95b 100644 --- a/components/light.zwave/index.html +++ b/components/light.zwave/index.html @@ -170,6 +170,9 @@
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/light/index.html b/components/light/index.html index e6fcf38191..c8236fc63c 100644 --- a/components/light/index.html +++ b/components/light/index.html @@ -261,6 +261,9 @@ The light component supports multiple entries in configuration.yaml
  • Hyperion
  • +
  • + ISY994 Light +
  • Insteon Hub Light
  • diff --git a/components/lirc/index.html b/components/lirc/index.html index 712510a0f9..4623a05c25 100644 --- a/components/lirc/index.html +++ b/components/lirc/index.html @@ -249,6 +249,9 @@ end
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/lock.isy994/index.html b/components/lock.isy994/index.html new file mode 100644 index 0000000000..884c3af63f --- /dev/null +++ b/components/lock.isy994/index.html @@ -0,0 +1,204 @@ + + + + + + + + + + ISY994 Lock - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + ISY994 Lock +

    +
    +
    + + +

    The isy994 platform allows you to get data from your ISY994 lock from within Home Assistant.

    + +

    They will be automatically discovered if the isy994 component is loaded.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/lock.mqtt/index.html b/components/lock.mqtt/index.html index 6b282cf41d..2f985a36ab 100644 --- a/components/lock.mqtt/index.html +++ b/components/lock.mqtt/index.html @@ -202,6 +202,9 @@ Make sure that your topic match exact. some-topi

    Category Lock

    Category Lock

      +
    • + ISY994 Lock +
    • MQTT Lock
    • diff --git a/components/lock.verisure/index.html b/components/lock.verisure/index.html index b577706e34..57c23463ba 100644 --- a/components/lock.verisure/index.html +++ b/components/lock.verisure/index.html @@ -137,6 +137,9 @@

      Category Lock

        +
      • + ISY994 Lock +
      • MQTT Lock
      • diff --git a/components/lock.wink/index.html b/components/lock.wink/index.html index d905e12659..4eb18deb7b 100644 --- a/components/lock.wink/index.html +++ b/components/lock.wink/index.html @@ -149,6 +149,9 @@

        Category Lock

          +
        • + ISY994 Lock +
        • MQTT Lock
        • diff --git a/components/lock.zwave/index.html b/components/lock.zwave/index.html index ce03eb01d0..1870b1cd9b 100644 --- a/components/lock.zwave/index.html +++ b/components/lock.zwave/index.html @@ -155,6 +155,9 @@

          Category Lock

            +
          • + ISY994 Lock +
          • MQTT Lock
          • diff --git a/components/lock/index.html b/components/lock/index.html index 1fc7adaa33..a72b13f167 100644 --- a/components/lock/index.html +++ b/components/lock/index.html @@ -138,6 +138,9 @@

          Platforms

            +
          • + ISY994 Lock +
          • MQTT Lock
          • diff --git a/components/logbook/index.html b/components/logbook/index.html index 9ef3763e8f..d73384dbe4 100644 --- a/components/logbook/index.html +++ b/components/logbook/index.html @@ -97,6 +97,35 @@ logbook:
    +

    If you want to exclude messages of some entities or domains from the logbook just add the exclude parameter like:

    +
    # Example configuration.yaml entry
    +logbook:
    +  exclude:
    +    entities:
    +      - sensor.last_boot
    +      - sensor.date
    +    domains:
    +      - sun
    +      - weblink
    +
    +
    + +

    Configuration variables:

    + +
      +
    • exclude (Optional): Configure which components should not create logbook enties.
    • +
    • entities (Optional): The list of entity ids to be excluded from creating logbook entries.
    • +
    • domains (Optional): The list of domains to be excluded from creating logbook entries.
    • +
    + +

    Exclude Events

    + +

    Entities customized as hidden are excluded from the logbook by default, but sometimes you want to show the entity in the UI and not in the logbook. For instance you use the sensor.dateto show the current date in the UI, but you do not want an logbook entry for that sensor every day. +To exclude these entities just add them to the exclude > entities list in the configuration of the logbook.

    + +

    To exclude all events from a whole domain add it to the exclude > domain list. For instance you use the sun domain only to trigger automations on the `azimuth attribute, then you possible are not interested in the logbook entries for sun rise and sun set.

    + +

    Custom Entries

    It is possible to add custom entries to the logbook by using the script component to fire an event.

    diff --git a/components/logger/index.html b/components/logger/index.html index c763c9991c..1b0ef36bc4 100644 --- a/components/logger/index.html +++ b/components/logger/index.html @@ -171,6 +171,9 @@
  • Introduction
  • +
  • + Keyboard +
  • Logger
  • diff --git a/components/media_player.kodi/index.html b/components/media_player.kodi/index.html index 9b75600eaa..ae9cdcdf24 100644 --- a/components/media_player.kodi/index.html +++ b/components/media_player.kodi/index.html @@ -138,6 +138,14 @@
    This is a platform for the Media Player component. +
    +
    +

    Related components

    +

    Category Media Player

    diff --git a/components/media_player.yamaha/index.html b/components/media_player.yamaha/index.html index eff7ac12ce..b7da78e452 100644 --- a/components/media_player.yamaha/index.html +++ b/components/media_player.yamaha/index.html @@ -107,6 +107,7 @@
    # Example configuration.yaml entry
     media_player:
       platform: yamaha
    +  host: 192.168.1.100
       name: 'Basement Receiver'
     
    @@ -114,12 +115,15 @@
    • name (Optional): Name of the device
    • +
    • host (Optional): IP address or hostname of the device

    A few notes:

      -
    • This will automatically search your network for Yamaha receivers. It will add a media player device for each one.
    • +
    • Not specifying the host variable will result in automatically searching your network for Yamaha Receivers. It will add a media player device for each one.
    • +
    • In some cases, autodiscovery fails due to a known bug in the receiver’s firmware. It is possible to manually specify the reveiver’s IP address or via it’s hostname (if it is discoverably by your DNS) then.
    • +
    • Please note: If adding the IP address or hostname manually, you must enable network standby on your receiver, or else startup of Home Assistant will hang if you have your receiver switched off.
    • Currently the only controls that are available is Power On/Off, Mute, and Volume control. Other functions such as source select are in progress of being developed.
    diff --git a/components/modbus/index.html b/components/modbus/index.html index 7374e934e9..93a90182a5 100644 --- a/components/modbus/index.html +++ b/components/modbus/index.html @@ -157,12 +157,12 @@

    Building on top of Modbus

    - @@ -184,6 +184,9 @@

    Related components

      +
    • + Modbus Binary Sensor +
    • Modbus Sensor
    • @@ -210,6 +213,9 @@
    • EnOcean
    • +
    • + FFmpeg +
    • Homematic
    • @@ -237,6 +243,9 @@
    • Netatmo
    • +
    • + Nuimo controller +
    • OctoPrint
    • @@ -252,6 +261,9 @@
    • SCSGate
    • +
    • + SleepIQ +
    • TellStick
    • diff --git a/components/mqtt/index.html b/components/mqtt/index.html index 11b3008224..4162c384e8 100644 --- a/components/mqtt/index.html +++ b/components/mqtt/index.html @@ -109,13 +109,13 @@

      Configuration variables:

        -
      • broker (Required): The IP address of your MQTT broker, e.g. 192.168.1.32.
      • +
      • broker (Required): The IP address or hostname of your MQTT broker, e.g. 192.168.1.32.
      • port (Optional): The network port to connect to. Default is 1883.
      • -
      • client_id (Optional): Client ID that Home Assistant will use. Has to be unique on the server. Default is a random generated one.
      • -
      • keepalive (Optional): The keep alive in seconds for this client. Default is 60.
      • +
      • client_id (Optional): The client ID that Home Assistant will use. Has to be unique on the server. Default is a randomly generated one.
      • +
      • keepalive (Optional): The time in seconds between sending keep alive messages for this client. Default is 60.
      • username (Optional): The username to use with your MQTT broker.
      • password (Optional): The corresponding password for the username to use with your MQTT broker.
      • -
      • certificate (Optional): Certificate to use to encrypt communication with the broker.
      • +
      • certificate (Optional): The certificate authority certificate file that is to be treated as trusted by this client. This file should contain the root certificate of the certificate authority that signed your broker’s certificate, but may contain multiple certificates. Example: /home/user/identrust-root.pem
      • client_key (Optional): Client key (example: /home/user/owntracks/cookie.key)
      • client_cert (Optional): Client certificate (example: /home/user/owntracks/cookie.crt)
      • protocol (Optional): Protocol to use: 3.1 or 3.1.1. By default it connects with 3.1.1 and falls back to 3.1 if server does not support 3.1.
      • @@ -127,7 +127,7 @@

        Embedded broker

        -

        Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the HBMQTT broker is started and Home Asssistant connects to it. Embedded broker default configuration:

        +

        Home Assistant contains an embedded MQTT broker. If no broker configuration is given, the HBMQTT broker is started and Home Assistant connects to it. Embedded broker default configuration:

        @@ -180,7 +180,7 @@ This broker does not currently work with OwnTracks because of a protocol version

        Run your own

        -

        Most private option but requires a bit more work. There are two free and open-source brokers to pick from: Mosquitto and Mosca.

        +

        This is the most private option but requires a bit more work. There are two free and open-source brokers to pick from: Mosquitto and Mosca.

        # Example configuration.yaml entry
         mqtt:
        @@ -199,7 +199,7 @@ There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Speci
         
         

        Public broker

        -

        The Mosquitto project runs a public broker. Easiest to setup but there is 0 privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices.

        +

        The Mosquitto project runs a public broker. This is the easiest to set up, but there is no privacy as all messages are public. Use this only for testing purposes and not for real tracking of your devices.

        mqtt:
           broker: test.mosquitto.org
        @@ -215,7 +215,7 @@ There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Speci
         
         

        CloudMQTT

        -

        CloudMQTT is a hosted private MQTT instance that is free up to 10 connected devices. This is enough to get started with for example OwnTracks and give you a taste of what is possible.

        +

        CloudMQTT is a hosted private MQTT instance that is free for up to 10 connected devices. This is enough to get started with for example OwnTracks and give you a taste of what is possible.

        Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks. @@ -228,8 +228,11 @@ Home Assistant is not affiliated with CloudMQTT nor will receive any kickbacks.

      • From the control panel, click on the Details button.
      • Create unique users for Home Assistant and each phone to connect
        (CloudMQTT does not allow two connections from the same user) - a. Under manage users, fill in username, password and click add - b. Under ACLs, select user, topic #, check β€˜read access’ and β€˜write access’
      • +
          +
        1. Under manage users, fill in username, password and click add
        2. +
        3. Under ACLs, select user, topic #, check β€˜read access’ and β€˜write access’
        4. +
        +
      • Copy the instance info to your configuration.yaml:
      • @@ -294,19 +297,19 @@ Home Assistant will automatically load the correct certificate if you connect to

        Testing your setup

        -

        The mosquitto broker package is shipping commandline tools to send and recieve MQTT messages. As an alternative have a look at hbmqtt_pub and hbmqtt_sub which are provied by HBMQTT. For sending test messages to a broker running on localhost check the example below:

        +

        The mosquitto broker package ships commandline tools to send and recieve MQTT messages. As an alternative have a look at hbmqtt_pub and hbmqtt_sub which are provied by HBMQTT. For sending test messages to a broker running on localhost check the example below:

        $ mosquitto_pub -h 127.0.0.1 -t home-assistant/switch/1/on -m "Switch is ON"
         
        -

        If you are using the embeeded MQTT broker, the command looks a little different because you need to add the MQTT protocol version.

        +

        If you are using the embedded MQTT broker, the command looks a little different because you need to add the MQTT protocol version.

        $ mosquitto_pub -V mqttv311 -t "hello" -m world
         
        -

        or if you are using a API password.

        +

        or if you are using a API password:

        $ mosquitto_pub -V mqttv311 -u homeassistant -P <your api password> -t "hello" -m world
         
        @@ -333,7 +336,7 @@ Home Assistant will automatically load the correct certificate if you connect to
        -

        For the embeeded MQTT broker the command looks like the sample below.

        +

        For the embedded MQTT broker the command looks like:

        $ mosquitto_sub -v -V mqttv311 -t "#"
         
        @@ -343,7 +346,7 @@ Home Assistant will automatically load the correct certificate if you connect to

        Processing JSON

        -

        The MQTT switch and sensor platforms support processing JSON over MQTT messages and parse them using JSONPath. JSONPath allows you to specify where in the JSON the value resides that you want to use. The following examples will always return the value 100.

        +

        The MQTT switch and sensor platforms support processing JSON over MQTT messages and parsing them using JSONPath. JSONPath allows you to specify where in the JSON the value resides that you want to use. The following examples will always return the value 100.

        @@ -460,6 +463,9 @@ Home Assistant will automatically load the correct certificate if you connect to
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -487,6 +493,9 @@ Home Assistant will automatically load the correct certificate if you connect to
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -502,6 +511,9 @@ Home Assistant will automatically load the correct certificate if you connect to
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/mqtt_eventstream/index.html b/components/mqtt_eventstream/index.html index b3572b626c..81167e7c53 100644 --- a/components/mqtt_eventstream/index.html +++ b/components/mqtt_eventstream/index.html @@ -151,6 +151,9 @@
      • Introduction
      • +
      • + Keyboard +
      • Logger
      • diff --git a/components/mysensors/index.html b/components/mysensors/index.html index 1854605d9b..d4d270e4f5 100644 --- a/components/mysensors/index.html +++ b/components/mysensors/index.html @@ -279,6 +279,9 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway
      • MySensors Binary Sensor
      • +
      • + MySensors HVAC +
      • MySensors Light
      • @@ -308,6 +311,9 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -335,6 +341,9 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -350,6 +359,9 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/nest/index.html b/components/nest/index.html index acd93c763a..53b5c67f6c 100644 --- a/components/nest/index.html +++ b/components/nest/index.html @@ -96,7 +96,7 @@ username: USERNAME password: PASSWORD -thermostat: +climate: platform: nest
        @@ -107,7 +107,7 @@ password:PASSWORDstructure:Vacation -thermostat: +climate:platform:nest @@ -120,7 +120,7 @@ -Vacation-Primary -thermostat: +climate:platform:nest @@ -155,6 +155,9 @@
      • Nest Binary Sensor
      • +
      • + Nest Fan +
      • Nest Sensor
      • @@ -184,6 +187,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -211,6 +217,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -226,6 +235,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/netatmo/index.html b/components/netatmo/index.html index 5834d0d8dc..00c988b9a1 100644 --- a/components/netatmo/index.html +++ b/components/netatmo/index.html @@ -183,6 +183,9 @@ The Home Assistant NetAtmo platform has only be tested with the classic indoor,
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -210,6 +213,9 @@ The Home Assistant NetAtmo platform has only be tested with the classic indoor,
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -225,6 +231,9 @@ The Home Assistant NetAtmo platform has only be tested with the classic indoor,
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/notify.aws_lambda/index.html b/components/notify.aws_lambda/index.html index 96712d2c06..55929f0d03 100644 --- a/components/notify.aws_lambda/index.html +++ b/components/notify.aws_lambda/index.html @@ -215,6 +215,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -254,6 +257,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.aws_sns/index.html b/components/notify.aws_sns/index.html index 355bd79fdb..af975ee2a1 100644 --- a/components/notify.aws_sns/index.html +++ b/components/notify.aws_sns/index.html @@ -203,6 +203,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -242,6 +245,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.aws_sqs/index.html b/components/notify.aws_sqs/index.html index d43d750f5a..dd4f13474b 100644 --- a/components/notify.aws_sqs/index.html +++ b/components/notify.aws_sqs/index.html @@ -190,6 +190,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -229,6 +232,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.command_line/index.html b/components/notify.command_line/index.html index 0be64849b1..db3f45af44 100644 --- a/components/notify.command_line/index.html +++ b/components/notify.command_line/index.html @@ -189,6 +189,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -228,6 +231,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.ecobee/index.html b/components/notify.ecobee/index.html index b3d5ce49b3..f905778d84 100644 --- a/components/notify.ecobee/index.html +++ b/components/notify.ecobee/index.html @@ -185,6 +185,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -224,6 +227,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.file/index.html b/components/notify.file/index.html index 758397940d..9311d09ae3 100644 --- a/components/notify.file/index.html +++ b/components/notify.file/index.html @@ -171,6 +171,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -210,6 +213,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.free_mobile/index.html b/components/notify.free_mobile/index.html index 18e0dba3e5..c5722a01cc 100644 --- a/components/notify.free_mobile/index.html +++ b/components/notify.free_mobile/index.html @@ -179,6 +179,9 @@ If you disable and re-enable the SMS API option, please be sure to update your t
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -218,6 +221,9 @@ If you disable and re-enable the SMS API option, please be sure to update your t
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.gntp/index.html b/components/notify.gntp/index.html index 4c03713270..7889443ead 100644 --- a/components/notify.gntp/index.html +++ b/components/notify.gntp/index.html @@ -172,6 +172,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -211,6 +214,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.group/index.html b/components/notify.group/index.html index ae7cad721b..ac90f4a4ad 100644 --- a/components/notify.group/index.html +++ b/components/notify.group/index.html @@ -184,6 +184,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -223,6 +226,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.html5/index.html b/components/notify.html5/index.html index c79cb58ec7..57a55fce5a 100644 --- a/components/notify.html5/index.html +++ b/components/notify.html5/index.html @@ -377,6 +377,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -416,6 +419,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.instapush/index.html b/components/notify.instapush/index.html index 215f64a972..73f400bb6d 100644 --- a/components/notify.instapush/index.html +++ b/components/notify.instapush/index.html @@ -208,6 +208,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -247,6 +250,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.joaoapps_join/index.html b/components/notify.joaoapps_join/index.html index 26c200b6bc..1ecd4bd22a 100644 --- a/components/notify.joaoapps_join/index.html +++ b/components/notify.joaoapps_join/index.html @@ -159,6 +159,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -198,6 +201,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.kodi/index.html b/components/notify.kodi/index.html new file mode 100644 index 0000000000..6477d42ff8 --- /dev/null +++ b/components/notify.kodi/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + Kodi - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Kodi +

        +
        +
        + + +

        The Kodi platform allows you so send messages to your Kodi multimedia system from Home Assistant.

        + +

        To add Kodi to your installation, add the following to your configuration.yaml file:

        + +

        Configuration

        +
        # Example configuration.yaml entry
        +notify:
        +  platform: kodi
        +  name: NOTIFIER_NAME
        +  host: http://192.168.0.123
        +  port: 8080
        +  username: USERNAME
        +  password: PASSWORD
        +
        +
        + +
          +
        • name (Optional): Name displayed in the frontend. The notifier will bind to the service notify.NOTIFIER_NAME.
        • +
        • host (Required): The host name or address of the device that is running Kodi.
        • +
        • port (optional): The port number, the default value is 8080.
        • +
        • username (Optional): The XBMC/Kodi HTTP username.
        • +
        • password (Optional): The XBMC/Kodi HTTP password.
        • +
        + +

        script.yaml example

        +
        ################################################################
        +## Script / Notify KODI
        +################################################################
        +kodi_notification:
        +  sequence:
        +  - service: notify.NOTIFIER_NAME
        +    data:
        +      title: "Home Assistant"
        +      message: "Message to KODI from Home Assistant!"
        +      data:
        +        displaytime: 20000
        +        icon: "warning"
        +
        +
        +

        message variables:

        +
          +
        • title (Optional): Title that is displayed on the message.
        • +
        • message (Required): Message to be displayed.
        • +
        • data (Optional) +
            +
          • icon (Optional): Kodi comes with 3 default icons: info, warning and error, an URL to an image is also valid. Defaults to info
          • +
          • displaytime (Optional): Length in milliseconds the message stays on screen. Defaults to 10000 ms
          • +
          +
        • +
        + +

        To use notifications, please see the getting started with automation page.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/notify.llamalab_automate/index.html b/components/notify.llamalab_automate/index.html index 19edd27461..2361a8044c 100644 --- a/components/notify.llamalab_automate/index.html +++ b/components/notify.llamalab_automate/index.html @@ -188,6 +188,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -227,6 +230,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.message_bird/index.html b/components/notify.message_bird/index.html index 1c83d45794..54f6590d15 100644 --- a/components/notify.message_bird/index.html +++ b/components/notify.message_bird/index.html @@ -182,6 +182,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -221,6 +224,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.mqtt/index.html b/components/notify.mqtt/index.html index d93564cfe3..c0952cbabe 100644 --- a/components/notify.mqtt/index.html +++ b/components/notify.mqtt/index.html @@ -208,6 +208,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -247,6 +250,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.nma/index.html b/components/notify.nma/index.html index 1ed505006e..da1af1134c 100644 --- a/components/notify.nma/index.html +++ b/components/notify.nma/index.html @@ -173,6 +173,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -212,6 +215,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.pushbullet/index.html b/components/notify.pushbullet/index.html index 52f95d2c62..5d4bf77f20 100644 --- a/components/notify.pushbullet/index.html +++ b/components/notify.pushbullet/index.html @@ -214,6 +214,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -253,6 +256,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.pushetta/index.html b/components/notify.pushetta/index.html index c2d4d063f3..a06e6a83ed 100644 --- a/components/notify.pushetta/index.html +++ b/components/notify.pushetta/index.html @@ -185,6 +185,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -224,6 +227,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.pushover/index.html b/components/notify.pushover/index.html index 4beb600e6e..be97384a30 100644 --- a/components/notify.pushover/index.html +++ b/components/notify.pushover/index.html @@ -181,6 +181,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -220,6 +223,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.rest/index.html b/components/notify.rest/index.html index 5a740f0153..2b1161e934 100644 --- a/components/notify.rest/index.html +++ b/components/notify.rest/index.html @@ -191,6 +191,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -230,6 +233,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.sendgrid/index.html b/components/notify.sendgrid/index.html index ad607cb7a2..0f84ef28a9 100644 --- a/components/notify.sendgrid/index.html +++ b/components/notify.sendgrid/index.html @@ -170,6 +170,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -209,6 +212,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.simplepush/index.html b/components/notify.simplepush/index.html new file mode 100644 index 0000000000..004aa231b4 --- /dev/null +++ b/components/notify.simplepush/index.html @@ -0,0 +1,275 @@ + + + + + + + + + + Simplepush - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Simplepush +

        +
        +
        + + +

        The simplepush platform uses Simplepush to delivery notifications from Home Assistant to your Android device.

        + +

        To add Simplepush to your installation, add the following to your configuration.yaml file:

        + +
        # Example configuration.yaml entry
        +notify:
        +  - name: NOTIFIER_NAME
        +    platform: simplepush
        +    device_key: ABCDE
        +
        +
        + +

        Configuration variables:

        + +
          +
        • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
        • +
        • device_key (Required): The device key of your device.
        • +
        + +

        To test if the service works, just send a message with curl from the command-line.

        + +
        $ curl 'https://api.simplepush.io/send/device_key/title/message'
        +
        +
        + +

        To use notifications, please see the getting started with automation page.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/notify.slack/index.html b/components/notify.slack/index.html index 85338ce9cb..7e29624433 100644 --- a/components/notify.slack/index.html +++ b/components/notify.slack/index.html @@ -105,6 +105,8 @@ platform:slackapi_key:ABCDEFGHJKLMNOPQRSTUVXYZdefault_channel:'#general' + icon:':robot_face:' + username:'Home-Assistant' @@ -114,6 +116,8 @@
      • name (Optional): Setting the optional parameter name allows multiple notifiers to be created. The default value is notify. The notifier will bind to the service notify.NOTIFIER_NAME.
      • api_key (Required): The slack API token to use for sending slack messages.
      • default_channel (Required): The default channel to post to if no channel is explicitly specified when sending the notification message.
      • +
      • username (Optional): Setting username will allow homeassistant to post to slack using the username specified. By default not setting this will post to slack using the user account or botname that you generated the api_key as.
      • +
      • icon (Optional): Use one of the slack emoji’s as an Icon for the supplied username. Slack uses the standard emoji sets used here.
      • To use notifications, please see the getting started with automation page.

        @@ -178,6 +182,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -217,6 +224,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.smtp/index.html b/components/notify.smtp/index.html index 4f1c71f9cd..93c6c1debb 100644 --- a/components/notify.smtp/index.html +++ b/components/notify.smtp/index.html @@ -212,6 +212,9 @@ which need special attention. By default, the usage by external applications, es
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -251,6 +254,9 @@ which need special attention. By default, the usage by external applications, es
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.syslog/index.html b/components/notify.syslog/index.html index c421e335ba..1d7d90faed 100644 --- a/components/notify.syslog/index.html +++ b/components/notify.syslog/index.html @@ -278,6 +278,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -317,6 +320,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.telegram/index.html b/components/notify.telegram/index.html index a74a6990b3..0ff2f1de41 100644 --- a/components/notify.telegram/index.html +++ b/components/notify.telegram/index.html @@ -270,6 +270,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -309,6 +312,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.twilio_sms/index.html b/components/notify.twilio_sms/index.html index 9deb681ba6..8ba9f3a99d 100644 --- a/components/notify.twilio_sms/index.html +++ b/components/notify.twilio_sms/index.html @@ -191,6 +191,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -230,6 +233,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.twitter/index.html b/components/notify.twitter/index.html index d74bd88757..1cc06fca5c 100644 --- a/components/notify.twitter/index.html +++ b/components/notify.twitter/index.html @@ -177,6 +177,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -216,6 +219,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.webostv/index.html b/components/notify.webostv/index.html index 8ac85c28fa..495299e529 100644 --- a/components/notify.webostv/index.html +++ b/components/notify.webostv/index.html @@ -196,6 +196,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -235,6 +238,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify.xmpp/index.html b/components/notify.xmpp/index.html index 9dc794e569..9675c1a9b2 100644 --- a/components/notify.xmpp/index.html +++ b/components/notify.xmpp/index.html @@ -175,6 +175,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -214,6 +217,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/notify/index.html b/components/notify/index.html index 12686cc3be..8d16f1e064 100644 --- a/components/notify/index.html +++ b/components/notify/index.html @@ -238,6 +238,9 @@
      • Join Notify
      • +
      • + Kodi +
      • LG WebOS TV notifications
      • @@ -277,6 +280,9 @@
      • SendGrid
      • +
      • + Simplepush +
      • Slack
      • diff --git a/components/nuimo_controller/index.html b/components/nuimo_controller/index.html new file mode 100644 index 0000000000..e121aceb73 --- /dev/null +++ b/components/nuimo_controller/index.html @@ -0,0 +1,303 @@ + + + + + + + + + + Nuimo controller - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Nuimo Controller +

        +
        +
        + + +

        The nuimo_controller component allows you to connect to a Nuimo device for receiving input events and displaying on the LED matrix via the Nuimo SDK for Python on Linux.

        + +

        To connect to a Nuimo device add the following section to your configuration.yaml file:

        + +
        nuimo_controller:
        +  mac: 'CE:B5:12:25:21:89'
        +  name: 
        +
        +
        + +

        Configuration variables:

        + +
          +
        • mac (Optional): Skip discovery and connect to this device address.
        • +
        • name (Optional): To handle more than one device by names, add the name of the device.
        • +
        + +

        Example for testing rotation value and sending to the LED matrix:

        + +
        automation Nuimo_rotate_right:
        +  trigger:
        +    platform: event
        +    event_type: nuimo_input
        +    event_data:
        +      type: ROTATE
        +  condition:
        +    condition: template
        +    value_template: '{{ trigger.event.data.value > 100 }}'
        +  action:
        +    service: nuimo_controller.led_matrix
        +    data: 
        +      matrix:
        +            '........
        +             0000000.
        +             .000000.
        +             ..00000.
        +             .0.0000.
        +             .00.000.
        +             .000000.
        +             .000000.
        +             ........ '
        +      interval: 0.5
        +
        +
        + +

        Troubleshooting:

        + +
          +
        • +

          use hcitool lescan to see the mac address of your device

          +
        • +
        • +

          allow non-root user access to Bluetooth LE with sudo setcap cap_net_raw+eip $(eval readlink -f $(which python))

          +
        • +
        • +

          install the newest version of pygattlib from the repository, either because there is no binary package for your system or the pip version contains errors, with pip install hg+https://bitbucket.org/OscarAcena/pygattlib --target $HOME/.homeassistant/deps. +(Dependencies of pygattlib: sudo apt-get install pkg-config libboost-python-dev libboost-thread-dev libbluetooth-dev libglib2.0-dev python-dev) +Then invoke home-assistant with hass --skip-pip.

          +
        • +
        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/octoprint/index.html b/components/octoprint/index.html index e27a6abfc9..c9863144a4 100644 --- a/components/octoprint/index.html +++ b/components/octoprint/index.html @@ -156,6 +156,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -183,6 +186,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -198,6 +204,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/openalpr/index.html b/components/openalpr/index.html new file mode 100644 index 0000000000..8a8c169548 --- /dev/null +++ b/components/openalpr/index.html @@ -0,0 +1,309 @@ + + + + + + + + + + OpenAlpr - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + OpenAlpr +

        +
        +
        + + +

        OpenAlpr integration for Home Assistant allows you to process licences plates from a camera. You can use them to open a garage door or trigger any other automation.

        + +

        +If you want use a video stream. You need setup the ffmpeg component. See also there for troubleshooting local ffmpeg installation. +

        + +

        Local installation

        + +

        If you want process all data local you need the command line tool alpr in version > 2.3.1

        + +

        If you don’t found binarys for you distribution you can compile from source. A documention how to build a openalpr is found here.

        + +

        On a debian system you can use this cmake command to build only the command line tool:

        +
        cmake -DWITH_TEST=FALSE -DWITH_BINDING_JAVA=FALSE --DWITH_BINDING_PYTHON=FALSE --DWITH_BINDING_GO=FALSE -DWITH_DAEMON=FALSE -DCMAKE_INSTALL_PREFIX:PATH=/usr
        +
        +
        + +

        Configuration Home Assistant

        + +
        # Example configuration.yaml entry
        +openalpr:
        +  engine: local
        +  region: eu
        +  confidence: 80.0
        +  entities:
        +   - name: Camera garage 1
        +     interval: 5
        +     render: ffmpeg
        +     input: INPUT_STREAM
        +     extra_arguments: SOME OTHER FFMPEG STUFF
        +   - name: Camera garage 2
        +     interval: 5
        +     render: image
        +     input: https://camera_ip/still_image.jpg
        +     username: admin
        +     password: bla
        +
        +
        +

        Configuration variables:

        + +
          +
        • engine (Required): local or cloud for processing
        • +
        • region (Required): Country or region. List of Supported value.
        • +
        • confidence (Optional): Default 80. The minimum of confidence in percent to process with Home-Assistant.
        • +
        • entities (Required): A list of device to add in Home-Assistant.
        • +
        • name (Optional): This parameter allows you to override the name of your openalpr entitie.
        • +
        • interval (Optional): Default 2. Time in seconds to poll a picture. If the interval is 0 It don’t poll and it only process data with openalpr.scan service.
        • +
        • render (Optional): default is with ffmpeg. How is Home-Assistant to get a picture from. It support ffmpeg for video streams and image for a still image.
        • +
        • input (Required): The source from getting pictures. With ffmpeg it could by all supported input. Image only support a url.
        • +
        • extra_arguments (Optional): Only available with ffmpeg.
        • +
        • username (Optional): Only available with image for http authentification.
        • +
        • password (Optional): Only available with image for http authentification.
        • +
        + +

        Configuration Home Assistant local processing

        + +
        # Example configuration.yaml entry
        +openalpr:
        +  engine: local
        +  region: eu
        +  alpr_binary: /usr/bin/alpr
        +  entities:
        +...
        +
        +
        +

        Configuration variables:

        + +
          +
        • alpr_binary (Optional): Default alpr. The command line tool alpr from OpenAlpr software for local processing.
        • +
        + +

        Configuration Home Assistant cloud processing

        + +
        # Example configuration.yaml entry
        +openalpr:
        +  engine: local
        +  region: eu
        +  api_key: SK_AAABBBBCCCEEEE
        +  entities:
        +...
        +
        +
        +

        Configuration variables:

        + + + +

        Service

        + +
          +
        • openalpr.scan: Scan immediately a picture from input.
        • +
        • openalpr.restart: Restart a ffmpeg process
        • +
        + +

        Events

        + +
        # Example configuration.yaml automation entry
        +automation:
        +- alias: Open garage door
        +  trigger:
        +    platform: event
        +    Event_type: openalpr.found
        +    Event_data:
        +      entity_id: openalpr.camera_garage_1
        +      plate: BE2183423
        +...
        +
        +
        + +

        This event is trigger after openalpr found a new licence plate.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/persistent_notification/index.html b/components/persistent_notification/index.html index 437b417c4c..e53525fe08 100644 --- a/components/persistent_notification/index.html +++ b/components/persistent_notification/index.html @@ -196,6 +196,9 @@
      • Introduction
      • +
      • + Keyboard +
      • Logger
      • diff --git a/components/pilight/index.html b/components/pilight/index.html index 421666cab8..07511bfd70 100644 --- a/components/pilight/index.html +++ b/components/pilight/index.html @@ -181,6 +181,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -208,6 +211,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -223,6 +229,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/proximity/index.html b/components/proximity/index.html index 6b89b96fdd..4792d0330a 100644 --- a/components/proximity/index.html +++ b/components/proximity/index.html @@ -208,6 +208,9 @@
      • LIRC
      • +
      • + OpenAlpr +
      • Presence based lights
      • diff --git a/components/qwikswitch/index.html b/components/qwikswitch/index.html index d0a890c090..0acb5501bf 100644 --- a/components/qwikswitch/index.html +++ b/components/qwikswitch/index.html @@ -184,6 +184,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -211,6 +214,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -226,6 +232,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/rfxtrx/index.html b/components/rfxtrx/index.html index 8a99d0357b..2a5108dea8 100644 --- a/components/rfxtrx/index.html +++ b/components/rfxtrx/index.html @@ -166,6 +166,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -193,6 +196,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -208,6 +214,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/rpi_gpio/index.html b/components/rpi_gpio/index.html index 8807bd415a..1289a68b69 100644 --- a/components/rpi_gpio/index.html +++ b/components/rpi_gpio/index.html @@ -146,12 +146,18 @@
      • KNX
      • +
      • + KNX Sensor +
      • KNX Switch
      • KNX Thermostat
      • +
      • + Mi Flora plant sensor +
      • Particulate matter Sensor
      • diff --git a/components/scene.hunterdouglas_powerview/index.html b/components/scene.hunterdouglas_powerview/index.html index bb4d505095..34deebc67f 100644 --- a/components/scene.hunterdouglas_powerview/index.html +++ b/components/scene.hunterdouglas_powerview/index.html @@ -138,6 +138,9 @@
      • Homematic Cover
      • +
      • + ISY994 Cover +
      • MQTT Cover
      • @@ -153,6 +156,9 @@
      • SCSGate Cover
      • +
      • + Vera Cover +
      • Wink Cover
      • diff --git a/components/script/index.html b/components/script/index.html index a0cfd698f7..1f1f03addb 100644 --- a/components/script/index.html +++ b/components/script/index.html @@ -192,6 +192,9 @@
      • LIRC
      • +
      • + OpenAlpr +
      • Presence based lights
      • diff --git a/components/scsgate/index.html b/components/scsgate/index.html index bb275ef085..66420f6926 100644 --- a/components/scsgate/index.html +++ b/components/scsgate/index.html @@ -167,6 +167,9 @@
      • EnOcean
      • +
      • + FFmpeg +
      • Homematic
      • @@ -194,6 +197,9 @@
      • Netatmo
      • +
      • + Nuimo controller +
      • OctoPrint
      • @@ -209,6 +215,9 @@
      • SCSGate
      • +
      • + SleepIQ +
      • TellStick
      • diff --git a/components/sensor.apcupsd/index.html b/components/sensor.apcupsd/index.html index a79de99d8f..643bd2565a 100644 --- a/components/sensor.apcupsd/index.html +++ b/components/sensor.apcupsd/index.html @@ -231,6 +231,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -246,9 +249,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -282,6 +291,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.arduino/index.html b/components/sensor.arduino/index.html index 631fd19d42..2dffc384d9 100644 --- a/components/sensor.arduino/index.html +++ b/components/sensor.arduino/index.html @@ -168,12 +168,18 @@
      • KNX
      • +
      • + KNX Sensor +
      • KNX Switch
      • KNX Thermostat
      • +
      • + Mi Flora plant sensor +
      • Particulate matter Sensor
      • diff --git a/components/sensor.arest/index.html b/components/sensor.arest/index.html index 7a697ef159..bca87e54c3 100644 --- a/components/sensor.arest/index.html +++ b/components/sensor.arest/index.html @@ -212,6 +212,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -227,9 +230,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -263,6 +272,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.bitcoin/index.html b/components/sensor.bitcoin/index.html index b664136cef..b04c4b6450 100644 --- a/components/sensor.bitcoin/index.html +++ b/components/sensor.bitcoin/index.html @@ -191,6 +191,9 @@
      • Open Exchange Rates
      • +
      • + Yahoo Finance +
      • diff --git a/components/sensor.bloomsky/index.html b/components/sensor.bloomsky/index.html index 534e814f1c..d0021704a9 100644 --- a/components/sensor.bloomsky/index.html +++ b/components/sensor.bloomsky/index.html @@ -179,6 +179,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -194,9 +197,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -230,6 +239,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.bom/index.html b/components/sensor.bom/index.html new file mode 100644 index 0000000000..8a0679bdfa --- /dev/null +++ b/components/sensor.bom/index.html @@ -0,0 +1,247 @@ + + + + + + + + + + Weather data by the Bureau of Meteorology Australia - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Weather Data by the Bureau of Meteorology Australia +

        +
        +
        + + +

        The bom platform allows you to get the current weather conditions from the Bureau of Meteorology (BOM) Australia.

        + +
          +
        • Each sensor will be given the device_id of β€œbom [optionalname] friendlyname units”
        • +
        • Get the station ID for your local BOM station from the BOM website: State -> Observations -> Latest Observations -> Choose the station
        • +
        • The URL will look like http://www.bom.gov.au/products/IDS60801/IDS60801.94675.shtml. This is for Adelaide. The URL is read as: http://www.bom.gov.au/products/[zone_id]/[zone_id].[wmo_id].shtml
        • +
        • A name is optional but if multiple BOM weather stations are used a name will be required.
        • +
        • The sensor will update every minute 35 minutes after last data timestamp. This allows for the 30 minute observation cycle and the approximate 5 minute update delay in publishing the data.
        • +
        + +

        To add the BOM weather observation to your installation, add the following to your configuration.yaml file:

        + +
        # Example configuration.yaml entry
        +sensor:
        +  - platform: bom
        +    name: "optional name"
        +    zone_id: IDS60801
        +    wmo_id: 94675
        +    monitored_conditions:
        +      - wmo
        +      - name
        +      - history_product
        +      - local_date_time
        +      - local_date_time_full
        +      - aifstime_utc
        +      - lat
        +      - lon
        +      - apparent_t
        +      - cloud
        +      - cloud_base_m
        +      - cloud_oktas
        +      - cloud_type_id
        +      - cloud_type
        +      - delta_t
        +      - gust_kmh
        +      - gust_kt
        +      - air_temp
        +      - dewpt
        +      - press
        +      - press_qnh
        +      - press_msl
        +      - press_tend
        +      - rain_trace
        +      - rel_hum
        +      - sea_state
        +      - swell_dir_worded
        +      - swell_height
        +      - swell_period
        +      - vis_km
        +      - weather
        +      - wind_dir
        +      - wind_spd_kmh
        +      - wind_spd_kt
        +
        +
        + +

        Configuration variables:

        + +
          +
        • zone_id (Required): The zone_id as identified from the BOM website.
        • +
        • wmo_id (Required): The wmo as identified from the BOM website.
        • +
        • name (Optional): The name you would like to give to the weather station.
        • +
        • monitored_conditions (Required): A list of the conditions to monitor.
        • +
        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/sensor.coinmarketcap/index.html b/components/sensor.coinmarketcap/index.html index d374e86260..a6c7016f8f 100644 --- a/components/sensor.coinmarketcap/index.html +++ b/components/sensor.coinmarketcap/index.html @@ -143,6 +143,9 @@
      • Open Exchange Rates
      • +
      • + Yahoo Finance +
      • diff --git a/components/sensor.command_line/index.html b/components/sensor.command_line/index.html index e82885d9d6..7fcb0c6ab7 100644 --- a/components/sensor.command_line/index.html +++ b/components/sensor.command_line/index.html @@ -260,6 +260,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -275,9 +278,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -311,6 +320,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.dht/index.html b/components/sensor.dht/index.html index 2821d02e70..f257781c68 100644 --- a/components/sensor.dht/index.html +++ b/components/sensor.dht/index.html @@ -164,12 +164,18 @@
      • KNX
      • +
      • + KNX Sensor +
      • KNX Switch
      • KNX Thermostat
      • +
      • + Mi Flora plant sensor +
      • Particulate matter Sensor
      • diff --git a/components/sensor.dweet/index.html b/components/sensor.dweet/index.html index d43ac746d3..c1c1b8c61a 100644 --- a/components/sensor.dweet/index.html +++ b/components/sensor.dweet/index.html @@ -189,6 +189,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -204,9 +207,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -240,6 +249,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.emoncms/index.html b/components/sensor.emoncms/index.html new file mode 100644 index 0000000000..07d16dd7dc --- /dev/null +++ b/components/sensor.emoncms/index.html @@ -0,0 +1,404 @@ + + + + + + + + + + Emoncms Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + Emoncms Sensor +

        +
        +
        + + +

        The emoncms sensor platform creates sensors for the feeds available in your local or cloud based version of emoncms.

        + +

        To enable this sensor, add the following lines to your configuration.yaml, it will list all feeds as a sensor:

        + +
        # Example configuration.yaml entry using cloud based emoncms
        +sensor:
        +  platform: emoncms
        +  api_key: put your emoncms read api key here
        +  url: https://emoncms.org
        +  id: 1
        +
        +
        + +

        Configuration variables

        + +
          +
        • api_key (Required): The read api key for your emoncms user.
        • +
        • url (Required): The base url of emoncms, use β€œhttps://emoncms.org” for the cloud based version.
        • +
        • id (Required): Positive Integer identifier for the sensor. Must be unique if you specify multiple emoncms sensors.
        • +
        • include_only_feed_id (optional): Positive integer list of emoncms feed id’s. Only the feeds with feed id’s specified here will be displayed. Can not be specified if exclude_feed_id is specified.
        • +
        • exclude_feed_id (optional): Positive integer list of emoncms feed id’s. All the feeds will be displayed as sensors except the ones listed here. Can not be specified if include_only_feed_id is specified.
        • +
        • sensor_names (optional): Dictionary of names for the sensors created that are created based on feedid. The dictionary consists of feedid:name pairs. Sensors for feeds with their feedid mentioned here will get the chosen name instead of the default name
        • +
        • value_template (Optional): Defines a template to alter the feed value.
        • +
        • scan_interval (Optional): Defines the update interval of the sensor in seconds.
        • +
        • unit_of_measurement (Optional): Defines the unit of measurement of for all the sensors. default is β€œW”.
        • +
        + +

        Default naming scheme

        + +

        The names of the sensors created by this component, will be a combination of static text, id from the config and feedid from the emoncms feed, unless sensor_names is used. +An example name would be β€œemoncms1_feedid_10”

        + +

        Examples

        + +

        In this section you find some more examples of how this sensor can be used.

        + +
        # Display only feeds with their feed id's specified in "include_only_feed_id"
        +sensor:
        +  - platform: emoncms
        +    api_key: put your emoncms read api key here
        +    url: https://emoncms.org
        +    id: 1
        +    unit_of_measurement: "W"
        +    include_only_feed_id:
        +      - 107
        +      - 106
        +      - 105
        +
        +
        + +
        # Display all feeds except feeds with their feed id specified in "exclude_feed_id" 
        +sensor:
        +  - platform: emoncms
        +    api_key: put your emoncms read api key here
        +    url: https://emoncms.org
        +    id: 1
        +    unit_of_measurement: "KWH" 
        +    exclude_feed_id:
        +      - 107
        +      - 106
        +      - 105
        +
        +
        + +
        # Display only feeds with their feed id's specified in "include_only_feed_id" and give the feed sensors a name using "sensor_names". You don't have to specify all feeds names in "sensor_names", the remaining sensor names will be chosen based on "id" and the emoncms feedid
        +sensor:
        +  - platform: emoncms
        +    api_key: put your emoncms read api key here
        +    url: https://emoncms.org   
        +    id: 1
        +    unit_of_measurement: "KW" 
        +    include_only_feed_id:
        +      - 5
        +      - 18
        +      - 29
        +      - 48
        +      - 61
        +      - 110
        +      - 116
        +      - 120
        +    sensor_names:
        +      5: "feed 1"
        +      18: "feed 2"
        +      29: "feed 3"
        +      48: "kwh feed"
        +      61: "amp feed"
        +      110: "watt feed"
        +
        +
        + +
        # Use a "value_template" to add 1500 to the feed value for all specified feed id's in "include_feed_id"
        +sensor:
        +  - platform: emoncms
        +    api_key: put your emoncms read api key here
        +    url: https://emoncms.org
        +    scan_interval: 15
        +    id: 1
        +    value_template: "{{ value | float + 1500 }}"
        +    include_only_feed_id:
        +      - 107
        +      - 106
        +      - 105
        +      - 61
        +
        +
        + +
        # Display feeds from the same emoncms instance with 2 groups of feeds, diffrent scan_interval and a diffrent unit_of_measurement
        +sensor:
        +  - platform: emoncms
        +    api_key: put your emoncms read api key here
        +    url: https://emoncms.org
        +    scan_interval: 30
        +    id: 1
        +    unit_of_measurement: "W" 
        +    include_only_feed_id:
        +      - 107
        +      - 106
        +      - 105
        +  - platform: emoncms
        +    api_key:  put your emoncms read api key here
        +    url: https://emoncms.org
        +    id: 2
        +    scan_interval: 60
        +    unit_of_measurement: "A" 
        +    include_only_feed_id:
        +      - 108
        +      - 109
        +      - 110
        +      - 61
        +
        +
        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/sensor.enocean/index.html b/components/sensor.enocean/index.html index 314d23e428..54bae25751 100644 --- a/components/sensor.enocean/index.html +++ b/components/sensor.enocean/index.html @@ -163,6 +163,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -178,9 +181,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -214,6 +223,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.envisalink/index.html b/components/sensor.envisalink/index.html index bddd4ba5ba..5f6b150aca 100644 --- a/components/sensor.envisalink/index.html +++ b/components/sensor.envisalink/index.html @@ -148,6 +148,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -163,9 +166,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -199,6 +208,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.fixer/index.html b/components/sensor.fixer/index.html index 1d16bb41d4..e91f6566ce 100644 --- a/components/sensor.fixer/index.html +++ b/components/sensor.fixer/index.html @@ -150,6 +150,9 @@
      • Open Exchange Rates
      • +
      • + Yahoo Finance +
      • diff --git a/components/sensor.forecast/index.html b/components/sensor.forecast/index.html index 8b92d80f8b..a766bbe2a4 100644 --- a/components/sensor.forecast/index.html +++ b/components/sensor.forecast/index.html @@ -211,6 +211,9 @@
      • Weather Underground (WUnderground)
      • +
      • + Weather data by the Bureau of Meteorology Australia +
      • YR
      • diff --git a/components/sensor.gpsd/index.html b/components/sensor.gpsd/index.html index 931030d422..4e687be6da 100644 --- a/components/sensor.gpsd/index.html +++ b/components/sensor.gpsd/index.html @@ -176,6 +176,9 @@ Escape character is '^]'.
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -191,9 +194,15 @@ Escape character is '^]'.
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -227,6 +236,9 @@ Escape character is '^]'.
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.homematic/index.html b/components/sensor.homematic/index.html index cd24ec3201..701718c820 100644 --- a/components/sensor.homematic/index.html +++ b/components/sensor.homematic/index.html @@ -159,6 +159,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -174,9 +177,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -210,6 +219,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.http/index.html b/components/sensor.http/index.html index 7ce7043471..9349f1bf14 100644 --- a/components/sensor.http/index.html +++ b/components/sensor.http/index.html @@ -182,6 +182,9 @@ You should choose a unique device name (DEVICE_NAME) to avoid clashes with other
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -197,9 +200,15 @@ You should choose a unique device name (DEVICE_NAME) to avoid clashes with other
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -233,6 +242,9 @@ You should choose a unique device name (DEVICE_NAME) to avoid clashes with other
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.imap/index.html b/components/sensor.imap/index.html index c6b155d097..7836067236 100644 --- a/components/sensor.imap/index.html +++ b/components/sensor.imap/index.html @@ -130,6 +130,9 @@
        +
        + IoT class: Local Polling +
        Introduced in release: 0.25
        @@ -151,6 +154,9 @@
      • Ecobee Binary Sensor
      • +
      • + Emoncms Sensor +
      • EnOcean Sensor
      • @@ -166,9 +172,15 @@
      • Homematic Sensor
      • +
      • + IMAP Email Content +
      • IMAP Unread E-mail
      • +
      • + ISY994 Sensor +
      • MH-Z19 CO2 Sensor
      • @@ -202,6 +214,9 @@
      • RFXtrx Sensor
      • +
      • + SleepIQ Sensor +
      • TCP Sensor
      • diff --git a/components/sensor.imap_email_content/index.html b/components/sensor.imap_email_content/index.html new file mode 100644 index 0000000000..0b03f04ab8 --- /dev/null +++ b/components/sensor.imap_email_content/index.html @@ -0,0 +1,310 @@ + + + + + + + + + + IMAP Email Content - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + IMAP Email Content +

        +
        +
        + + +

        The imap_email_content sensor platform will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email.

        + +

        To enable this sensor, add the following lines to your configuration.yaml file:

        + +
        # Example configuration.yaml entry
        +sensor:
        +  - platform: imap_email_content
        +    server: imap.gmail.com
        +    port: 993
        +    name: Emails
        +    username: USERNAME
        +    password: PASSWORD
        +    senders:
        +      - example@gmail.com
        +    value_template: TEMPLATE
        +
        +
        + +

        Configuration variables:

        + +
          +
        • server (Required): The IP address or hostname of the IMAP server.
        • +
        • port (Required): The port where the server is accessible.
        • +
        • name (Optional): Name of the IMAP sensor to use in the frontend.
        • +
        • username (Required): Username for the IMAP server.
        • +
        • password (Required): Password for the IMAP server.
        • +
        • senders (Required): A list of sender email addresses that are allowed to report state via email. Only emails recieved from these addresses will be processed.
        • +
        • +

          value_template (Optional): If specified this template will be used to render the state of sensor. If a template is not supplied the raw message body will be used for the sensor value. The following attributes will be supplied to the template:

          + +
            +
          • from: The from address of the email
          • +
          • body: The body of the email
          • +
          • subject: The subject of the email
          • +
          • date: The date and time the email was sent
          • +
          +
        • +
        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/sensor.isy994/index.html b/components/sensor.isy994/index.html new file mode 100644 index 0000000000..e2ed00258d --- /dev/null +++ b/components/sensor.isy994/index.html @@ -0,0 +1,299 @@ + + + + + + + + + + ISY994 Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + ISY994 Sensor +

        +
        +
        + + +

        The isy994 platform allows you to get data from your ISY994 sensor from within Home Assistant.

        + +

        They will be automatically discovered if the isy994 component is loaded.

        + + +
        + + +
        + + + + +
        +
        + + + + + + \ No newline at end of file diff --git a/components/sensor.knx/index.html b/components/sensor.knx/index.html new file mode 100644 index 0000000000..4364d57fd2 --- /dev/null +++ b/components/sensor.knx/index.html @@ -0,0 +1,277 @@ + + + + + + + + + + KNX Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        +
        + + + +
        +
        + +
        + + +
        + + + + +
        +

        + KNX Sensor +

        +
        +
        + + +

        The knx sensor platform allows you to monitor KNX sensors.

        + +

        The knx component must be configured correctly, see KNX Component.

        + +

        There is currently support for the following KNX data point types:

        + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        ConditionKNX Datapoint TypeUnit of measurementData type
        Temperature9.001Β°C2 Byte Float
        Speed (Wind speed)9.005m/s2 Byte Float
        Illuminance (Lux)9.004Lux2 Byte Float
        + +

        To use your KNX sensor in your installation, add the following to your configuration.yaml file:

        + +
        # Example configuration.yaml entry
        +sensor:
        +  - platform: knx
        +    name: knxweather_temp
        +    type: temperature
        +    address: 1/0/3
        +
        +  - platform: knx
        +    name: knxweather_wind
        +    type: speed_ms
        +    address: 1/0/0
        +
        +  - platform: knx
        +    name: knxweather_lux
        +    type: illuminance
        +    address: 1/0/1
        +
        +
        + +

        Configuration variables:

        + +
          +
        • type (Required): The type of the sensor. See table above for available options.
        • +
        • address (Required): The address of the sensor on the bus.
        • +
        • name (Optional): The name to use in the frontend.
        • +
        • minimum (Optional): Minimum sensor value who gets processed. Defaults to a hardcoded default values.
        • +
        • maxmimum (Optional): Maxmimum sensor value who gets processed. Defaults to a hardcoded default.
        • +
        + + + + + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.mfi/index.html b/components/sensor.mfi/index.html index 89f377af3a..c6b825eeb6 100644 --- a/components/sensor.mfi/index.html +++ b/components/sensor.mfi/index.html @@ -159,6 +159,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -174,9 +177,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -210,6 +219,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.mhz19/index.html b/components/sensor.mhz19/index.html index f543ee2a23..16d99e15c3 100644 --- a/components/sensor.mhz19/index.html +++ b/components/sensor.mhz19/index.html @@ -144,6 +144,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -159,9 +162,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -195,6 +204,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.miflora/index.html b/components/sensor.miflora/index.html new file mode 100644 index 0000000000..7260f11fa6 --- /dev/null +++ b/components/sensor.miflora/index.html @@ -0,0 +1,223 @@ + + + + + + + + + + Mi Flora plant sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Mi Flora Plant Sensor +

    +
    +
    + + +

    The Mi Flora plant sensor is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and +conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case.

    + +

    To use your Mi Flora plant sensor in your installation, add the following to your configuration.yaml file:

    + +
    # Example configuration.yaml entry
    +sensor
    +  platform: miflora
    +  mac: xx:xx:xx:xx:xx:xx
    +  name: Flower 1
    +  force_update: false
    +  median: 3
    +  monitored_conditions:
    +   - moisture
    +   - light
    +   - temperature
    +   - conductivity
    +
    +
    + +
      +
    • mac (Required): The MAC address of your sensor. You can find this be running hcitool lescan from command line.
    • +
    • name (Optional): The name displayed in the frontend.
    • +
    • force_update (Optional): Sends update events even if the value hasn’t changed.
    • +
    • median (Optional): Sometimes the sensor measurements show spikes. Using this parameter, the poller will report the median of the last +3 (you can also use larger values) measurements. This filters out single spikes. Median: 5 will also filter double spikes. +If you never have problems with spikes, median=1 will work fine.
    • +
    • monitored_conditions (Required): The paramaters that should be monitored.
    • +
    + +

    Note that by default the sensor is only polled once every 15 minutes. This means with the median=3 setting, it will take as least 30 minutes before the sensor will report a value after a Home Assistant restart. As the values usually change very slowly, this isn’t a big problem. +Reducing polling intervals will have a negative effect on the battery life.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.modbus/index.html b/components/sensor.modbus/index.html index ad85ef588e..7bada284bd 100644 --- a/components/sensor.modbus/index.html +++ b/components/sensor.modbus/index.html @@ -89,64 +89,50 @@
    -

    The modbus sensor platform allows you to gather data from your Modbus sensors.

    +

    The modbus sensor allows you to gather data from Modbus registers.

    To use your Modbus sensors in your installation, add the following to your configuration.yaml file:

    # Example configuration.yml entry
     sensor:
       platform: modbus
    -  slave: 1
       registers:
    -    16:
    -      name: My integer sensor
    -      unit: C
    -    24:
    -      bits:
    -        0:
    -          name: My boolean sensor
    -        2:
    -          name: My other boolean sensor
    -  coils:
    -    0:
    -      name: My coil switch
    +    - name: Sensor1
    +      unit_of_measurement: Β°C
    +      slave: 1
    +      register: 100
    +    - name: Sensor2
    +      unit_of_measurement: mg
    +      slave: 1
    +      register: 110
    +      count: 2
    +    - name: Sensor3
    +      unit_of_measurement: Β°C
    +      slave: 1
    +      register: 120
    +      scale: 0.01
    +      offset: -273.16
    +      precision: 2
     

    Configuration variables:

      -
    • slave (Required): The number of the slave (ignored and can be omitted if not serial Modbus).
    • registers array (Required): The array contains a list of relevant registers to read from.
        -
      • number of register (Required): Listing relevant bits. It must contain a bits section. -
          -
        • bits array (Required): Listing relevant bits. It must contain a bits section. -
            -
          • name (Required): Name of the sensor.
          • -
          • unit (Required): Unit to attach to value (optional, ignored for boolean sensors).
          • -
          -
        • -
        -
      • -
      -
    • -
    • coils (Optional): A list of relevant coils to read from/write to -
        -
      • number of coil array (Required): -
          -
        • name (Required): Name of the coil.
        • -
        -
      • +
      • name (Required): Name of the sensor.
      • +
      • slave (Required): The number of the slave (Optional for tcp and upd Modbus).
      • +
      • register (Required): Register number.
      • +
      • unit_of_measurement (Optional): Unit to attach to value.
      • +
      • count (Optional): Number of registers to read.
      • +
      • scale (Optional): Scale factor (output = scale * value + offset), default 1
      • +
      • offset (Optional): Final offset (output = scale * value + offset), default 0
      • +
      • precision (Optional): Number of valid decimals, default 0
    -

    -Each named register will create an integer sensor and each named bit will create a boolean sensor. -

    - - @@ -172,6 +158,9 @@ Each named register will create an integer sensor and each named bit will create
  • Modbus
  • +
  • + Modbus Binary Sensor +
  • Modbus Switch
  • @@ -195,6 +184,9 @@ Each named register will create an integer sensor and each named bit will create
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -210,9 +202,15 @@ Each named register will create an integer sensor and each named bit will create
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -246,6 +244,9 @@ Each named register will create an integer sensor and each named bit will create
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.moldindicator/index.html b/components/sensor.moldindicator/index.html index fe41d72b31..cef55e239b 100644 --- a/components/sensor.moldindicator/index.html +++ b/components/sensor.moldindicator/index.html @@ -152,6 +152,9 @@ With the three measured temperatures (in Celsius or Fahrenheit), the calibration
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -167,9 +170,15 @@ With the three measured temperatures (in Celsius or Fahrenheit), the calibration
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -203,6 +212,9 @@ With the three measured temperatures (in Celsius or Fahrenheit), the calibration
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.mqtt/index.html b/components/sensor.mqtt/index.html index 62629e59d5..d53028e9a5 100644 --- a/components/sensor.mqtt/index.html +++ b/components/sensor.mqtt/index.html @@ -250,6 +250,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -265,9 +268,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -301,6 +310,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.mqtt_room/index.html b/components/sensor.mqtt_room/index.html index f201f89b55..5d85df49b5 100644 --- a/components/sensor.mqtt_room/index.html +++ b/components/sensor.mqtt_room/index.html @@ -100,6 +100,7 @@ name: 'Cool device' state_topic: 'room_presence' timeout: 5 + away_timeout: 60
    @@ -110,6 +111,7 @@
  • name (Optional): The name of the sensor.
  • state_topic (Optional): The topic that contains all subtopics for the rooms.
  • timeout (Optional): The time in seconds after which a room presence state is considered old. An example: device1 is reported at scanner1 with a distance of 1. No further updates are sent from scanner1. After 5 secoonds scanner2 reports device with a distance of 2. The old location info is discarded in favor of the new scanner2 information as the timeout has passed.
  • +
  • away_timeout (Optional): The time in seconds after which the state should be set to away if there were no updates. 0 disables the check and is the default.
  • Example JSON that should be published to the room topics:

    diff --git a/components/sensor.mysensors/index.html b/components/sensor.mysensors/index.html index 2f7bf98fc6..9802f8d4b2 100644 --- a/components/sensor.mysensors/index.html +++ b/components/sensor.mysensors/index.html @@ -297,6 +297,9 @@
  • MySensors Binary Sensor
  • +
  • + MySensors HVAC +
  • MySensors Light
  • @@ -323,6 +326,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -338,9 +344,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -374,6 +386,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.nest/index.html b/components/sensor.nest/index.html index b6594017f0..d5aecec240 100644 --- a/components/sensor.nest/index.html +++ b/components/sensor.nest/index.html @@ -171,6 +171,9 @@ You must have the Nest component configured to u
  • Nest Binary Sensor
  • +
  • + Nest Fan +
  • Nest Thermostat
  • @@ -197,6 +200,9 @@ You must have the Nest component configured to u
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -212,9 +218,15 @@ You must have the Nest component configured to u
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -248,6 +260,9 @@ You must have the Nest component configured to u
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.nest_weather/index.html b/components/sensor.nest_weather/index.html index e2ae6b7bef..d253f01ac5 100644 --- a/components/sensor.nest_weather/index.html +++ b/components/sensor.nest_weather/index.html @@ -166,6 +166,9 @@ You must have the Nest component configured to u
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.netatmo/index.html b/components/sensor.netatmo/index.html index 9263706c43..9bcfba54d3 100644 --- a/components/sensor.netatmo/index.html +++ b/components/sensor.netatmo/index.html @@ -219,6 +219,9 @@
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.neurio_energy/index.html b/components/sensor.neurio_energy/index.html index 532afea87d..8335ccbf16 100644 --- a/components/sensor.neurio_energy/index.html +++ b/components/sensor.neurio_energy/index.html @@ -151,6 +151,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -166,9 +169,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -202,6 +211,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.octoprint/index.html b/components/sensor.octoprint/index.html index a57720b58c..7dde15016b 100644 --- a/components/sensor.octoprint/index.html +++ b/components/sensor.octoprint/index.html @@ -169,6 +169,9 @@ You must have the OctoPrint component confi
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -184,9 +187,15 @@ You must have the OctoPrint component confi
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -220,6 +229,9 @@ You must have the OctoPrint component confi
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.onewire/index.html b/components/sensor.onewire/index.html index d2099ab254..1656a854a1 100644 --- a/components/sensor.onewire/index.html +++ b/components/sensor.onewire/index.html @@ -158,6 +158,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -173,9 +176,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -209,6 +218,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.openexchangerates/index.html b/components/sensor.openexchangerates/index.html index b99e99bfab..2b15296c13 100644 --- a/components/sensor.openexchangerates/index.html +++ b/components/sensor.openexchangerates/index.html @@ -151,6 +151,9 @@
  • Open Exchange Rates
  • +
  • + Yahoo Finance +
  • diff --git a/components/sensor.openweathermap/index.html b/components/sensor.openweathermap/index.html index bf5bd5c7f9..7fc0bcc157 100644 --- a/components/sensor.openweathermap/index.html +++ b/components/sensor.openweathermap/index.html @@ -179,6 +179,9 @@
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.rest/index.html b/components/sensor.rest/index.html index c2b8b986e5..2cd76df113 100644 --- a/components/sensor.rest/index.html +++ b/components/sensor.rest/index.html @@ -236,6 +236,9 @@ Make sure that the URL matches exactly your endpoint or resource.
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -251,9 +254,15 @@ Make sure that the URL matches exactly your endpoint or resource.
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -287,6 +296,9 @@ Make sure that the URL matches exactly your endpoint or resource.
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.rfxtrx/index.html b/components/sensor.rfxtrx/index.html index e6636b4ba0..714af40f80 100644 --- a/components/sensor.rfxtrx/index.html +++ b/components/sensor.rfxtrx/index.html @@ -211,6 +211,9 @@ Then you should update your configuration to:

  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -226,9 +229,15 @@ Then you should update your configuration to:

  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -262,6 +271,9 @@ Then you should update your configuration to:

  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.serial_pm/index.html b/components/sensor.serial_pm/index.html index cb70529f71..4151949d1e 100644 --- a/components/sensor.serial_pm/index.html +++ b/components/sensor.serial_pm/index.html @@ -159,12 +159,18 @@
  • KNX
  • +
  • + KNX Sensor +
  • KNX Switch
  • KNX Thermostat
  • +
  • + Mi Flora plant sensor +
  • Particulate matter Sensor
  • diff --git a/components/sensor.sleepiq/index.html b/components/sensor.sleepiq/index.html new file mode 100644 index 0000000000..5cdfaabe56 --- /dev/null +++ b/components/sensor.sleepiq/index.html @@ -0,0 +1,285 @@ + + + + + + + + + + SleepIQ Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + SleepIQ Sensor +

    +
    +
    + + +

    To get your SleepIQ sensors working with Home Assistant, follow the instructions for the general SleepIQ component.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.swiss_hydrological_data/index.html b/components/sensor.swiss_hydrological_data/index.html index 5d8897c2b4..d4702cca07 100644 --- a/components/sensor.swiss_hydrological_data/index.html +++ b/components/sensor.swiss_hydrological_data/index.html @@ -170,6 +170,9 @@
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.tcp/index.html b/components/sensor.tcp/index.html index 0975a7eaa3..91f2e67b94 100644 --- a/components/sensor.tcp/index.html +++ b/components/sensor.tcp/index.html @@ -225,6 +225,9 @@ Escape character is '^]'.
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -240,9 +243,15 @@ Escape character is '^]'.
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -276,6 +285,9 @@ Escape character is '^]'.
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.tellduslive/index.html b/components/sensor.tellduslive/index.html index 7a0fa3196a..5782d9823f 100644 --- a/components/sensor.tellduslive/index.html +++ b/components/sensor.tellduslive/index.html @@ -137,6 +137,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -152,9 +155,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -188,6 +197,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.tellstick/index.html b/components/sensor.tellstick/index.html index 8415e720f5..9c3fa9bc42 100644 --- a/components/sensor.tellstick/index.html +++ b/components/sensor.tellstick/index.html @@ -162,6 +162,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -177,9 +180,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -213,6 +222,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.temper/index.html b/components/sensor.temper/index.html index cea18ad24b..b054785df9 100644 --- a/components/sensor.temper/index.html +++ b/components/sensor.temper/index.html @@ -146,6 +146,9 @@ The calculation follows the formula scale * sens
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -161,9 +164,15 @@ The calculation follows the formula scale * sens
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -197,6 +206,9 @@ The calculation follows the formula scale * sens
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.template/index.html b/components/sensor.template/index.html index 3935f49e6c..aa4e0a1c22 100644 --- a/components/sensor.template/index.html +++ b/components/sensor.template/index.html @@ -268,6 +268,9 @@ Please note the blank line to close the multi-line template.
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -283,9 +286,15 @@ Please note the blank line to close the multi-line template.
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -319,6 +328,9 @@ Please note the blank line to close the multi-line template.
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.thinkingcleaner/index.html b/components/sensor.thinkingcleaner/index.html index c7a4f8f279..73cd1f6d9f 100644 --- a/components/sensor.thinkingcleaner/index.html +++ b/components/sensor.thinkingcleaner/index.html @@ -149,6 +149,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -164,9 +167,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -200,6 +209,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.vera/index.html b/components/sensor.vera/index.html index ea02d23e97..90aa39b2f5 100644 --- a/components/sensor.vera/index.html +++ b/components/sensor.vera/index.html @@ -122,6 +122,9 @@
  • Vera Binary Sensor
  • +
  • + Vera Cover +
  • Vera Light
  • @@ -131,6 +134,9 @@
  • Vera Switch
  • +
  • + Vera Thermostat +
  • @@ -151,6 +157,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -166,9 +175,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -202,6 +217,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.verisure/index.html b/components/sensor.verisure/index.html index 82a1dc0f3f..80125e520e 100644 --- a/components/sensor.verisure/index.html +++ b/components/sensor.verisure/index.html @@ -151,6 +151,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -166,9 +169,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -202,6 +211,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.wink/index.html b/components/sensor.wink/index.html index 1846237d1d..0388ffc63a 100644 --- a/components/sensor.wink/index.html +++ b/components/sensor.wink/index.html @@ -157,6 +157,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -172,9 +175,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -208,6 +217,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.wunderground/index.html b/components/sensor.wunderground/index.html index 32bb1bcf5a..f7a6802b88 100644 --- a/components/sensor.wunderground/index.html +++ b/components/sensor.wunderground/index.html @@ -220,6 +220,9 @@ Obtain a WUnderground API key Weather Underground (WUnderground) +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.yahoo_finance/index.html b/components/sensor.yahoo_finance/index.html new file mode 100644 index 0000000000..4064d242c6 --- /dev/null +++ b/components/sensor.yahoo_finance/index.html @@ -0,0 +1,203 @@ + + + + + + + + + + Yahoo Finance - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + Yahoo Finance +

    +
    +
    + + +

    The yahoo_finance platform uses Yahoo Finance to monitor the stock market.

    + +

    To enable the yahoo_finance platform, add the following lines to your configuration.yaml file:

    + +
    # Example configuration.yaml entry
    +sensor:
    +  - platform: yahoo_finance
    +    name: Red Hat Inc.
    +    symbol: RHT
    +
    +
    + +

    Configuration variables:

    + +
      +
    • name (Optional): The name of the sensor. If not specified, it defaults to Yahoo Stock.
    • +
    • symbol (Optional): The stock market symbol for a given company. If not specified, it defaults to Yahoo (YHOO).
    • +
    + +

    Example configuration:

    + +
    # Example configuration.yaml entry
    +sensor:
    +  - platform: yahoo_finance
    +    name: Red Hat Inc.
    +    symbol: RHT
    +
    +  - platform: yahoo_finance
    +    name: Google
    +    symbol: GOOGL
    +
    +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sensor.yr/index.html b/components/sensor.yr/index.html index 05d68c7df4..3b90373eb5 100644 --- a/components/sensor.yr/index.html +++ b/components/sensor.yr/index.html @@ -191,6 +191,9 @@ weather forecast is delivered by the Norwegian Meteorological Institute and the
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.yweather/index.html b/components/sensor.yweather/index.html index 6a08a18b4f..ee8dbf4a85 100644 --- a/components/sensor.yweather/index.html +++ b/components/sensor.yweather/index.html @@ -195,6 +195,9 @@ Use of the Yahoo Weather API should not exceed reasonable request volume. Access
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/sensor.zigbee/index.html b/components/sensor.zigbee/index.html index a570a3dd1d..29986560d7 100644 --- a/components/sensor.zigbee/index.html +++ b/components/sensor.zigbee/index.html @@ -211,6 +211,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -226,9 +229,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -262,6 +271,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor.zwave/index.html b/components/sensor.zwave/index.html index 981d13ebdf..4d9b913ea9 100644 --- a/components/sensor.zwave/index.html +++ b/components/sensor.zwave/index.html @@ -163,6 +163,9 @@
  • Ecobee Binary Sensor
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -178,9 +181,15 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • MH-Z19 CO2 Sensor
  • @@ -214,6 +223,9 @@
  • RFXtrx Sensor
  • +
  • + SleepIQ Sensor +
  • TCP Sensor
  • diff --git a/components/sensor/index.html b/components/sensor/index.html index 4602bcedd2..b6a1f2d384 100644 --- a/components/sensor/index.html +++ b/components/sensor/index.html @@ -150,6 +150,9 @@
  • Eliqonline
  • +
  • + Emoncms Sensor +
  • EnOcean Sensor
  • @@ -189,9 +192,18 @@
  • Homematic Sensor
  • +
  • + IMAP Email Content +
  • IMAP Unread E-mail
  • +
  • + ISY994 Sensor +
  • +
  • + KNX Sensor +
  • Last.fm
  • @@ -210,6 +222,9 @@
  • MQTT Sensor
  • +
  • + Mi Flora plant sensor +
  • Modbus Sensor
  • @@ -273,6 +288,9 @@
  • SNMP
  • +
  • + SleepIQ Sensor +
  • Speedtest.net
  • @@ -333,6 +351,9 @@
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • Wink Sensor
  • @@ -345,6 +366,9 @@
  • YR
  • +
  • + Yahoo Finance +
  • Yahoo Weather
  • diff --git a/components/shell_command/index.html b/components/shell_command/index.html index 4e3b5dc327..def7f46834 100644 --- a/components/shell_command/index.html +++ b/components/shell_command/index.html @@ -170,6 +170,9 @@
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/sleepiq/index.html b/components/sleepiq/index.html new file mode 100644 index 0000000000..7e94326380 --- /dev/null +++ b/components/sleepiq/index.html @@ -0,0 +1,273 @@ + + + + + + + + + + SleepIQ - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + SleepIQ +

    +
    +
    + + +

    The SleepIQ implementation lets you view sensor data from SleepIQ by SleepNumber. In particular, it lets you see the occupancy and current SleepNumber (ie current firmness) of each side of a SleepNumber bed.

    + +

    You will need an account on SleepIQ to use this component.

    + +

    To set it up, add the following information to your configuration.yaml file:

    + +
    # Example configuration.yaml entry
    +sleepiq:
    +  username: you@example.com
    +  password: omgsecure
    +
    +
    + +

    Configuration variables:

    + +
      +
    • username (Required): Your SleepIQ username (usually an email address).
    • +
    • password (Required): Your SleepIQ password.
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/sun/index.html b/components/sun/index.html index 820a60f90a..d29deee7f0 100644 --- a/components/sun/index.html +++ b/components/sun/index.html @@ -214,6 +214,9 @@
  • Weather Underground (WUnderground)
  • +
  • + Weather data by the Bureau of Meteorology Australia +
  • YR
  • diff --git a/components/switch.acer_projector/index.html b/components/switch.acer_projector/index.html index 5644e2d677..5b22e35b8a 100644 --- a/components/switch.acer_projector/index.html +++ b/components/switch.acer_projector/index.html @@ -166,6 +166,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.arduino/index.html b/components/switch.arduino/index.html index bb1c8617f4..a09f8367ac 100644 --- a/components/switch.arduino/index.html +++ b/components/switch.arduino/index.html @@ -176,12 +176,18 @@
  • KNX
  • +
  • + KNX Sensor +
  • KNX Switch
  • KNX Thermostat
  • +
  • + Mi Flora plant sensor +
  • Particulate matter Sensor
  • diff --git a/components/switch.arest/index.html b/components/switch.arest/index.html index c976529119..84fb61cf94 100644 --- a/components/switch.arest/index.html +++ b/components/switch.arest/index.html @@ -214,6 +214,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.command_line/index.html b/components/switch.command_line/index.html index 12802f6c55..62a8c76a4c 100644 --- a/components/switch.command_line/index.html +++ b/components/switch.command_line/index.html @@ -267,6 +267,9 @@ This switch will shutdown your host immediately, there will be no confirmation.
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.dlink/index.html b/components/switch.dlink/index.html index d42c65ffac..5af1976e08 100644 --- a/components/switch.dlink/index.html +++ b/components/switch.dlink/index.html @@ -175,6 +175,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.edimax/index.html b/components/switch.edimax/index.html index bb328c492a..7d097fa15e 100644 --- a/components/switch.edimax/index.html +++ b/components/switch.edimax/index.html @@ -163,6 +163,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.enocean/index.html b/components/switch.enocean/index.html index ca4a54ca22..6c09ef1ddc 100644 --- a/components/switch.enocean/index.html +++ b/components/switch.enocean/index.html @@ -175,6 +175,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.flux/index.html b/components/switch.flux/index.html index 11901db143..c22a47eb6c 100644 --- a/components/switch.flux/index.html +++ b/components/switch.flux/index.html @@ -184,6 +184,9 @@
  • LIRC
  • +
  • + OpenAlpr +
  • Presence based lights
  • diff --git a/components/switch.hikvision/index.html b/components/switch.hikvision/index.html index 529c845e1e..ab8eeb5547 100644 --- a/components/switch.hikvision/index.html +++ b/components/switch.hikvision/index.html @@ -168,6 +168,9 @@ Currently works using default https port only.
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.homematic/index.html b/components/switch.homematic/index.html index 1df87e56b3..d25061d4ca 100644 --- a/components/switch.homematic/index.html +++ b/components/switch.homematic/index.html @@ -172,6 +172,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.isy994/index.html b/components/switch.isy994/index.html new file mode 100644 index 0000000000..cf94cb80a8 --- /dev/null +++ b/components/switch.isy994/index.html @@ -0,0 +1,294 @@ + + + + + + + + + + ISY994 Switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + + + +
    +
    + +
    + + +
    + + + + +
    +

    + ISY994 Switch +

    +
    +
    + + +

    The isy994 platform allows you to get data from your ISY994 switch from within Home Assistant.

    + +

    They will be automatically discovered if the isy994 component is loaded.

    + + +
    + + +
    + + + + +
    +
    + + + + + + \ No newline at end of file diff --git a/components/switch.knx/index.html b/components/switch.knx/index.html index 1cb5bad1e5..7bc3fc4dfa 100644 --- a/components/switch.knx/index.html +++ b/components/switch.knx/index.html @@ -145,6 +145,9 @@ For switching actuators that are only controlled by a single group address and c
  • KNX Binary Sensor
  • +
  • + KNX Sensor +
  • KNX Thermostat
  • @@ -171,12 +174,18 @@ For switching actuators that are only controlled by a single group address and c
  • KNX
  • +
  • + KNX Sensor +
  • KNX Switch
  • KNX Thermostat
  • +
  • + Mi Flora plant sensor +
  • Particulate matter Sensor
  • diff --git a/components/switch.mfi/index.html b/components/switch.mfi/index.html index 3313f4ffd6..33c183e4a2 100644 --- a/components/switch.mfi/index.html +++ b/components/switch.mfi/index.html @@ -171,6 +171,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.modbus/index.html b/components/switch.modbus/index.html index 3b0d616f68..0e3bb4a599 100644 --- a/components/switch.modbus/index.html +++ b/components/switch.modbus/index.html @@ -89,7 +89,7 @@
    -

    The modbus switch platform allows you to control Modbus switches.

    +

    The modbus switch platform allows you to control Modbus coils.

    To use your Modbus switches in your installation, add the following to your configuration.yaml file:

    @@ -97,52 +97,28 @@ switch: platform: modbus slave: 1 - registers: - 24: - bits: - 0: - name: My switch - 2: - name: My other switch coils: - 0: - name: My coil switch + - name: Switch1 + slave: 1 + coil: 13 + - name: Switch2 + slave: 2 + coil: 14

    Configuration variables:

      -
    • slave (Required): The number of the slave (ignored and can be omitted if not serial Modbus).
    • -
    • registers array (Required): The array contains a list of relevant registers to read from. -
        -
      • number of register (Required): Listing relevant bits. It must contain a bits section. -
          -
        • bits array (Required): Listing relevant bits. It must contain a bits section. -
            -
          • name (Required): Name of the switch.
          • -
          -
        • -
        -
      • -
      -
    • coils (Optional): A list of relevant coils to read from/write to
        -
      • number of coil array (Required): -
          -
        • name (Required): Name of the coil.
        • -
        -
      • +
      • slave (Required): The number of the slave (can be omitted for tcp and udp Modbus).
      • +
      • name (Required): Name of the sensor
      • +
      • coil (Required): Coil number
    -

    -Each named bit will create a switch. -

    - - @@ -172,6 +148,9 @@ Each named bit will create a switch.
  • Modbus
  • +
  • + Modbus Binary Sensor +
  • Modbus Sensor
  • @@ -204,6 +183,9 @@ Each named bit will create a switch.
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.mqtt/index.html b/components/switch.mqtt/index.html index b290eb3662..7f931aeb14 100644 --- a/components/switch.mqtt/index.html +++ b/components/switch.mqtt/index.html @@ -226,6 +226,9 @@ Make sure that your topic match exact. some-topi
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.mysensors/index.html b/components/switch.mysensors/index.html index 2dbbc0efda..80c0821cdb 100644 --- a/components/switch.mysensors/index.html +++ b/components/switch.mysensors/index.html @@ -368,6 +368,9 @@
  • MySensors Binary Sensor
  • +
  • + MySensors HVAC +
  • MySensors Light
  • @@ -403,6 +406,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.mystrom/index.html b/components/switch.mystrom/index.html index 9e61ca3382..2e545ab627 100644 --- a/components/switch.mystrom/index.html +++ b/components/switch.mystrom/index.html @@ -172,6 +172,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.netio/index.html b/components/switch.netio/index.html index 248d005df4..cde62773ea 100644 --- a/components/switch.netio/index.html +++ b/components/switch.netio/index.html @@ -221,6 +221,9 @@ with an β€˜Always’ schedule:

  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.orvibo/index.html b/components/switch.orvibo/index.html index fb35355c96..a3303d5414 100644 --- a/components/switch.orvibo/index.html +++ b/components/switch.orvibo/index.html @@ -171,6 +171,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.pilight/index.html b/components/switch.pilight/index.html index 66c29ecc06..652a2e3a57 100644 --- a/components/switch.pilight/index.html +++ b/components/switch.pilight/index.html @@ -207,6 +207,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.pulseaudio_loopback/index.html b/components/switch.pulseaudio_loopback/index.html index 2f82619d1d..d8c90d61c5 100644 --- a/components/switch.pulseaudio_loopback/index.html +++ b/components/switch.pulseaudio_loopback/index.html @@ -180,6 +180,9 @@ This component relies on raw TCP commands to PulseAudio. In order for PulseAudio
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.qwikswitch/index.html b/components/switch.qwikswitch/index.html index 87112df65c..7270477537 100644 --- a/components/switch.qwikswitch/index.html +++ b/components/switch.qwikswitch/index.html @@ -159,6 +159,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.rest/index.html b/components/switch.rest/index.html index c5c4efecd4..f8e3dc28da 100644 --- a/components/switch.rest/index.html +++ b/components/switch.rest/index.html @@ -180,6 +180,9 @@ Make sure that the URL matches exactly your endpoint or resource.
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.rfxtrx/index.html b/components/switch.rfxtrx/index.html index ca13008046..f449ff15d8 100644 --- a/components/switch.rfxtrx/index.html +++ b/components/switch.rfxtrx/index.html @@ -215,6 +215,9 @@ Then you should update your configuration to:

  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.rpi_gpio/index.html b/components/switch.rpi_gpio/index.html index c74af92f4a..fb19948040 100644 --- a/components/switch.rpi_gpio/index.html +++ b/components/switch.rpi_gpio/index.html @@ -184,6 +184,9 @@
  • Homematic Switch
  • +
  • + ISY994 Switch +
  • MQTT Switch
  • diff --git a/components/switch.rpi_rf/index.html b/components/switch.rpi_rf/index.html index af1da9b214..be88ec62f0 100644 --- a/components/switch.rpi_rf/index.html +++ b/components/switch.rpi_rf/index.html @@ -184,6 +184,9 @@ For more info see the PyPi module description: Charles Spirakis
  • Chris Mulder
  • Christian Braedstrup
  • +
  • chrom3
  • Corban Mailloux
  • coteyr
  • Dale Higgs
  • @@ -170,6 +171,7 @@
  • Geoff Norton
  • goir
  • Greg Dowling
  • +
  • gross1989
  • Guillem Barba
  • Gustav Ahlberg
  • gwendalg
  • @@ -206,11 +208,13 @@
  • Joseph Piron
  • Josh Nichols
  • Josh Wright
  • +
  • joyrider
  • Juggels
  • Julien Danjou
  • Justin Moy
  • Justyn Shull
  • Karen Goode
  • +
  • kaustubhphatak
  • Keaton Taylor
  • kennedyshead
  • Kevin Gottsman
  • @@ -225,6 +229,7 @@
  • Malte Deiseroth
  • Manoj
  • Marcelo Moreira de Mello
  • +
  • Marc Pabst
  • Markus Peter
  • Markus Stenberg
  • Martin Hjelmare
  • @@ -260,12 +265,14 @@
  • Richard Cox
  • rkabadi
  • Robbie Trencheny
  • +
  • Rob Johnson
  • Rob Olimpiu
  • Roi Dayan
  • Rowan Hine
  • rubund
  • Ryan Kraus
  • Ryan Turner
  • +
  • sam-io
  • sander76
  • schneefux
  • Scott O’Neil
  • @@ -281,6 +288,7 @@
  • Theodor Lindquist
  • tilutza
  • Tim Harton
  • +
  • Tim
  • Tobie Booth
  • toddeye
  • Tom Duijf
  • diff --git a/font/fontawesome-webfont.eot b/font/fontawesome-webfont.eot old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.svg b/font/fontawesome-webfont.svg old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.ttf b/font/fontawesome-webfont.ttf old mode 100755 new mode 100644 diff --git a/font/fontawesome-webfont.woff b/font/fontawesome-webfont.woff old mode 100755 new mode 100644 diff --git a/getting-started/android/index.html b/getting-started/android/index.html index e2a451ee8d..1a7e69f245 100644 --- a/getting-started/android/index.html +++ b/getting-started/android/index.html @@ -175,7 +175,7 @@
  • Z-Wave diff --git a/getting-started/automation-action/index.html b/getting-started/automation-action/index.html index bb653cb36a..6a3f83fb3a 100644 --- a/getting-started/automation-action/index.html +++ b/getting-started/automation-action/index.html @@ -205,7 +205,7 @@
  • Z-Wave diff --git a/getting-started/automation-condition/index.html b/getting-started/automation-condition/index.html index c5a60afc37..c95e1905cc 100644 --- a/getting-started/automation-condition/index.html +++ b/getting-started/automation-condition/index.html @@ -181,7 +181,7 @@
  • Z-Wave diff --git a/getting-started/automation-create-first/index.html b/getting-started/automation-create-first/index.html index c7e6a18d47..48474d3884 100644 --- a/getting-started/automation-create-first/index.html +++ b/getting-started/automation-create-first/index.html @@ -249,7 +249,7 @@
  • Z-Wave diff --git a/getting-started/automation-examples/index.html b/getting-started/automation-examples/index.html index c7976782d6..8d7aa9b41d 100644 --- a/getting-started/automation-examples/index.html +++ b/getting-started/automation-examples/index.html @@ -203,7 +203,7 @@
  • Z-Wave diff --git a/getting-started/automation-templating/index.html b/getting-started/automation-templating/index.html index a2b1f6de7c..ebe2b946c6 100644 --- a/getting-started/automation-templating/index.html +++ b/getting-started/automation-templating/index.html @@ -414,7 +414,7 @@
  • Z-Wave diff --git a/getting-started/automation-trigger/index.html b/getting-started/automation-trigger/index.html index eb415a6915..16b6d5e1e3 100644 --- a/getting-started/automation-trigger/index.html +++ b/getting-started/automation-trigger/index.html @@ -282,7 +282,7 @@
  • Z-Wave diff --git a/getting-started/automation-troubleshooting/index.html b/getting-started/automation-troubleshooting/index.html index 1ffd932dbf..6a1486d1be 100644 --- a/getting-started/automation-troubleshooting/index.html +++ b/getting-started/automation-troubleshooting/index.html @@ -162,7 +162,7 @@ INFO [homeassistant.components.automation] Initialized rule Rain is over
  • Z-Wave diff --git a/getting-started/automation/index.html b/getting-started/automation/index.html index c3528a3d34..b89c9a6b81 100644 --- a/getting-started/automation/index.html +++ b/getting-started/automation/index.html @@ -212,7 +212,7 @@ The difference between a condition and a trigger can be confusing as they are ve
  • Z-Wave diff --git a/getting-started/autostart-macos/index.html b/getting-started/autostart-macos/index.html index 9fa8d70a97..c7376ecdf9 100644 --- a/getting-started/autostart-macos/index.html +++ b/getting-started/autostart-macos/index.html @@ -169,7 +169,7 @@ Home Assistant has been uninstalled.
  • Z-Wave diff --git a/getting-started/autostart-synology/index.html b/getting-started/autostart-synology/index.html index 5c65030a43..7c660e8090 100644 --- a/getting-started/autostart-synology/index.html +++ b/getting-started/autostart-synology/index.html @@ -188,7 +188,7 @@ stop on runlevel [06]
  • Z-Wave diff --git a/getting-started/autostart-systemd/index.html b/getting-started/autostart-systemd/index.html index 460682555b..fcb18a3f75 100644 --- a/getting-started/autostart-systemd/index.html +++ b/getting-started/autostart-systemd/index.html @@ -214,7 +214,7 @@ EOF'
  • Z-Wave diff --git a/getting-started/autostart-upstart/index.html b/getting-started/autostart-upstart/index.html index b9dcbb17be..4ba6e980b7 100644 --- a/getting-started/autostart-upstart/index.html +++ b/getting-started/autostart-upstart/index.html @@ -170,7 +170,7 @@
  • Z-Wave diff --git a/getting-started/autostart/index.html b/getting-started/autostart/index.html index 6b278320f1..733cb95565 100644 --- a/getting-started/autostart/index.html +++ b/getting-started/autostart/index.html @@ -158,7 +158,7 @@
  • Z-Wave diff --git a/getting-started/basic/index.html b/getting-started/basic/index.html index ede93cbf0c..960c06ae9c 100644 --- a/getting-started/basic/index.html +++ b/getting-started/basic/index.html @@ -207,7 +207,7 @@ If you are planing to expose your Home Assistant instance to the internet and do
  • Z-Wave diff --git a/getting-started/browsers/index.html b/getting-started/browsers/index.html index feda0d63c5..f307a12758 100644 --- a/getting-started/browsers/index.html +++ b/getting-started/browsers/index.html @@ -363,7 +363,7 @@
  • Z-Wave diff --git a/getting-started/configuration/index.html b/getting-started/configuration/index.html index a4387b9c8f..d512ab9bc3 100644 --- a/getting-started/configuration/index.html +++ b/getting-started/configuration/index.html @@ -192,7 +192,7 @@
  • Z-Wave diff --git a/getting-started/customizing-devices/index.html b/getting-started/customizing-devices/index.html index c5779ae3f1..2d3876fc70 100644 --- a/getting-started/customizing-devices/index.html +++ b/getting-started/customizing-devices/index.html @@ -135,7 +135,7 @@ entity_picture - url to use as picture for entity + Url to use as picture for entity icon @@ -145,6 +145,77 @@ assumed_state For switches with an assumed state two buttons are shown (turn off, turn on) instead of a switch. By setting assumed_state to false you will get the default switch icon. + + sensor_class + Sets the class of the sensor, changing the device state and icon that is displayed on the UI (see below). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    sensor_classDescription
    coldOn means cold (or too cold)
    connectivityOn meanse connection present, Off means no connection
    gasCO, CO2, etc.
    heatOn means hot (or too hot)
    lightLightness threshold
    moistureSpecifically a wetness sensor
    motionMotion sensor
    movingOn means moving, Off means stopped
    openingDoor, window, etc.
    powerPower, over-current, etc.
    safetyOn meanse unsafe, Off means safe
    smokeSmoke detector
    soundOn means sound detected, Off meanse no sound
    vibrationOn means vibration detected, Off meanse no vibration
    @@ -218,7 +289,7 @@ New customize information will be applied the next time the state of the entity
  • Z-Wave diff --git a/getting-started/devices/index.html b/getting-started/devices/index.html index f4538d18c8..5934ea14b6 100644 --- a/getting-started/devices/index.html +++ b/getting-started/devices/index.html @@ -209,7 +209,7 @@ Each group consists of a name and a list of entity IDs. Entity IDs can be retrie
  • Z-Wave diff --git a/getting-started/index.html b/getting-started/index.html index 668de0f209..9bbf7db75d 100644 --- a/getting-started/index.html +++ b/getting-started/index.html @@ -195,7 +195,7 @@
  • Z-Wave diff --git a/getting-started/installation-docker/index.html b/getting-started/installation-docker/index.html index 569d28bf69..f3718c7dba 100644 --- a/getting-started/installation-docker/index.html +++ b/getting-started/installation-docker/index.html @@ -183,7 +183,7 @@ To do that you have 2 options.

  • Z-Wave diff --git a/getting-started/installation-raspberry-pi-all-in-one/index.html b/getting-started/installation-raspberry-pi-all-in-one/index.html index 013ac0083e..d375f3bd79 100644 --- a/getting-started/installation-raspberry-pi-all-in-one/index.html +++ b/getting-started/installation-raspberry-pi-all-in-one/index.html @@ -246,7 +246,7 @@
  • Z-Wave diff --git a/getting-started/installation-raspberry-pi/index.html b/getting-started/installation-raspberry-pi/index.html index a6bd1707e5..2d08ca58fd 100644 --- a/getting-started/installation-raspberry-pi/index.html +++ b/getting-started/installation-raspberry-pi/index.html @@ -305,7 +305,7 @@ To enable One Wire support add the following line to the end of au
  • Z-Wave diff --git a/getting-started/installation-virtualenv/index.html b/getting-started/installation-virtualenv/index.html index 8b23a31dd4..8e132787ad 100644 --- a/getting-started/installation-virtualenv/index.html +++ b/getting-started/installation-virtualenv/index.html @@ -271,7 +271,7 @@
  • Z-Wave diff --git a/getting-started/presence-detection/index.html b/getting-started/presence-detection/index.html index a6b963105b..d851249cad 100644 --- a/getting-started/presence-detection/index.html +++ b/getting-started/presence-detection/index.html @@ -186,7 +186,7 @@ OwnTracks communicates directly with your MQTT broker, no data will pass through
  • Z-Wave diff --git a/getting-started/scripts-conditions/index.html b/getting-started/scripts-conditions/index.html index 0c62ba764c..596d4ebf5a 100644 --- a/getting-started/scripts-conditions/index.html +++ b/getting-started/scripts-conditions/index.html @@ -305,7 +305,7 @@ This allows you to mix several AND and OR conditions together.

  • Z-Wave diff --git a/getting-started/scripts-service-calls/index.html b/getting-started/scripts-service-calls/index.html index a42b345b3a..c767861fe0 100644 --- a/getting-started/scripts-service-calls/index.html +++ b/getting-started/scripts-service-calls/index.html @@ -221,7 +221,7 @@ Service Data: { Z-Wave diff --git a/getting-started/scripts/index.html b/getting-started/scripts/index.html index 521c08ca88..c469ccb240 100644 --- a/getting-started/scripts/index.html +++ b/getting-started/scripts/index.html @@ -229,7 +229,7 @@
  • Z-Wave diff --git a/getting-started/troubleshooting-configuration/index.html b/getting-started/troubleshooting-configuration/index.html index dd5b719c9d..42f5fd6b30 100644 --- a/getting-started/troubleshooting-configuration/index.html +++ b/getting-started/troubleshooting-configuration/index.html @@ -229,7 +229,7 @@ Whenever you report an issue, be aware that we are volunteers who do not have ac
  • Z-Wave diff --git a/getting-started/troubleshooting/index.html b/getting-started/troubleshooting/index.html index 6d32f7e1aa..2d3d0a46bc 100644 --- a/getting-started/troubleshooting/index.html +++ b/getting-started/troubleshooting/index.html @@ -217,7 +217,7 @@ chrome -> settings -> site settings -> storage -> search for your UR
  • Z-Wave diff --git a/getting-started/updating/index.html b/getting-started/updating/index.html index 13560ee4b3..63d2e0ef4f 100644 --- a/getting-started/updating/index.html +++ b/getting-started/updating/index.html @@ -176,7 +176,7 @@
  • Z-Wave diff --git a/getting-started/yaml/index.html b/getting-started/yaml/index.html index a593492f1b..b7edfa7392 100644 --- a/getting-started/yaml/index.html +++ b/getting-started/yaml/index.html @@ -203,7 +203,7 @@ The other properties (like name) are specified using mappings. Note that the sec
  • Z-Wave diff --git a/getting-started/z-wave-controllers/index.html b/getting-started/z-wave-controllers/index.html index d3f3778b40..39a18d6433 100644 --- a/getting-started/z-wave-controllers/index.html +++ b/getting-started/z-wave-controllers/index.html @@ -7,7 +7,7 @@ - Z-Wave USB Controllers - Home Assistant + Z-Wave Controllers - Home Assistant @@ -15,7 +15,7 @@ - + @@ -25,7 +25,7 @@ - + @@ -83,7 +83,7 @@

    - Z-Wave USB Controllers + Z-Wave Controllers


    @@ -92,10 +92,10 @@

    Z-Wave is a popular home automation protocol that is not always straightforward to setup. This page will try to help you make sense of it all.

    -Upon first run, the z-wave component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess. +Upon first run, the zwave component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expidite this proccess.

    -

    Supported Z-Wave Sticks

    +

    Supported Z-Wave USB Sticks & Hardware Modules

    @@ -119,6 +119,12 @@ Upon first run, the z-wave component will take time to initialize entities and e + + + + + + @@ -140,6 +146,7 @@ Upon first run, the z-wave component will take time to initialize entities and e @@ -202,7 +209,7 @@ Upon first run, the z-wave component will take time to initialize entities and e
  • Z-Wave diff --git a/getting-started/z-wave-device-specific/index.html b/getting-started/z-wave-device-specific/index.html index a2630d8b0a..f522aead5b 100644 --- a/getting-started/z-wave-device-specific/index.html +++ b/getting-started/z-wave-device-specific/index.html @@ -91,15 +91,15 @@
    Motion or alarm sensors
    -

    In order for Home Assistant to recognize well the sensor, you will need to change its configuration from Basic Set (default) to Binary Sensor report or Alarm report. Currently there’s no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it +

    In order for Home Assistant to recognize well the sensor, you will need to change its configuration from Basic Set (default) to Binary Sensor report or Alarm report. Currently there’s no way to do this in Home Assistant but you can use ozwcp (OpenZWave control panel), Domoticz or similar to do it. These devices will either show as a binary sensor or a sensor called Alarm xxxx and will report a numeric value. Test to see what value is what. Sometimes this is noted in the device manual.

    Locks and other secure devices
    -

    These devices require a network key to be set for the zwave network before they are paired. This key is set in OpenZwave’s options.xml which is located in Open Zwave’s directory. This should also be the same directory as config_path: in your configuration.yaml. If it’s not, make sure you have the same values in all the files you are using. +

    These devices require a network key to be set for the Z-Wave network before they are paired. This key is set in OpenZwave’s options.xml which is located in OpenZWave’s directory. This should also be the same directory as config_path: in your configuration.yaml. If it’s not, make sure you have the same values in all the files you are using. The option is commented out by default in options.xml and is a default key. Make your own unique key. The key is in Hexadecimals. -It is best to pair these devices in Open Zwave Control Panel or other Zwave tool that can show you logs while pairing. Test the device before you save the configuration. -Make sure you copy the newly saved zwcfg_[home_id].xmlinto your HomeAssistant config directory.

    +It is best to pair these devices in OpenZWave Control Panel or other Z-wave tool that can show you logs while pairing. Test the device before you save the configuration. +Make sure you copy the newly saved zwcfg_[home_id].xmlinto your Home Assistant configuration directory.

    Aeon Minimote
    @@ -231,7 +231,7 @@ Make sure you copy the newly saved zwcfg_[home_i
  • Z-Wave diff --git a/getting-started/z-wave-settings/index.html b/getting-started/z-wave-settings/index.html index 403cb50a7d..8a8a8ae464 100644 --- a/getting-started/z-wave-settings/index.html +++ b/getting-started/z-wave-settings/index.html @@ -89,13 +89,13 @@
    -

    You may wish to modify the Z-Wave settings in your ozw*.xml file stored in the .homeassistant directory, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize Open-Zwave Control Panel. Alternatively, use Domoticz, which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image.

    +

    You may wish to modify the Z-Wave settings in your ozw*.xml file stored in the .homeassistant configuration directory, or certain situations/devices may require it (i.e. Aeon Multisensor 6). To do this, utilize Open-Zwave Control Panel. Alternatively, use Domoticz, which incorporates the Open-Zwave Control Panel project into an easy to use Raspberry Pi image.

    -

    The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the .homeassistant folder acts as a settings/values cache for the Z-Wave network, so modifying it directly won’t change the network values. The Open-Zwave Control Panel writes values directly to the network and will provide you with an updated .xml file to overwrite in your .homeassistant folder. This is the most foolproof way to make modifications to your Z-Wave devices.

    +

    The reasoning for using these tools is that your Z-Wave controller stores the values and data that are used to control the network. The XML file in the .homeassistant configuration directory acts as a settings/values cache for the Z-Wave network, so modifying it directly won’t change the network values. The Open-Zwave Control Panel writes values directly to the network and will provide you with an updated .xml file to overwrite in your .homeassistant configuration directory. This is the most foolproof way to make modifications to your Z-Wave devices.

    Although totally normal for your Z-Wave stick (Aeon Aeotec Z-Stick Gen5 for example) to cycle through its LEDs (Yellow, Blue and Red) while plugged into your system. If you don like this behaviour then you could turn it off.

    -

    Use the following commands from a terminal session to your Pi where your Z-Wave stick is connected as an example.

    +

    Use the following commands from a terminal session on your Pi where your Z-Wave stick is connected as an example.

    Turn off β€œDisco lights”:

    @@ -169,7 +169,7 @@
  • Z-Wave diff --git a/getting-started/z-wave/index.html b/getting-started/z-wave/index.html index a518a9fb95..0649552bb2 100644 --- a/getting-started/z-wave/index.html +++ b/getting-started/z-wave/index.html @@ -89,9 +89,9 @@
    -

    Z-Wave integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a supported Z-Wave USB stick to be plugged into the host.

    +

    Z-Wave integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a supported Z-Wave USB stick or module to be plugged into the host.

    -

    There is currently support for switches, lights and sensors. All will be picked up automatically after configuring this platform.

    +

    There is currently support for climate, covers, lights, locks, sensors, switches and thermostats. All will be picked up automatically after configuring this platform.

    Installation

    @@ -148,8 +148,8 @@ Instead of make install, you can alternat
    • usb_path (Required): The port where your device is connected to your Home Assistant host.
    • -
    • config_path (Optional): The path to the Python Open Z-Wave configuration files.
    • -
    • autoheal (Optional): Allows disabling auto ZWave heal at midnight. Defaults to True.
    • +
    • config_path (Optional): The path to the Python OpenZWave configuration files.
    • +
    • autoheal (Optional): Allows disabling auto Z-Wave heal at midnight. Defaults to True.
    • polling_interval (Optional): The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems.
    • customize (Optional): This attribute contains node-specific override values:
        @@ -158,7 +158,7 @@ Instead of make install, you can alternat
      -

      To find the path of your Z-Wave stick, run:

      +

      To find the path of your Z-Wave USB stick or module, run:

      $ ls /dev/ttyUSB*
       
      @@ -170,6 +170,12 @@ Instead of make install, you can alternat
      +

      Or, on some other systems (such as Pine 64), use:

      + +
      $ ls /dev/ttyS*
      +
      +
      +

      Or, on macOS, use:

      $ ls /dev/cu.usbmodem*
      @@ -182,9 +188,9 @@ Depending on what’s plugged into your USB ports, the name found above may chan
       
       

      Adding Security Devices

      -

      Security Z-Wave devices require a network key before being added to the network using the zwave.add_node_secure service. You must edit the options.xml file, located in your python-openzwave config_path to use a network key before adding these devices.

      +

      Security Z-Wave devices require a network key before being added to the network using the zwave.add_node_secure service. You must edit the options.xml file, located in your python-openzwave config_path to use a network key before adding these devices.

      -

      Edit your options.xml file:

      +

      Edit your options.xml file:

        <!-- <Option name="NetworkKey" value="0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F 0x10" /> -->
       
      @@ -194,14 +200,14 @@ Depending on what’s plugged into your USB ports, the name found above may chan
      -

      You can replace these values with your own 16 byte network key. For more information on this process see the Open-Zwave wiki article Adding Security Devices to OZW

      +

      You can replace these values with your own 16 byte network key. For more information on this process see the OpenZwave wiki article Adding Security Devices to OZW

      Events

      zwave.network_complete

      -

      HomeAssistant will trigger a event when the zwave network is complete. Meaning all of the nodes on the network have been queried. This can take quite som time, depending on wakeup intervals on the battery powered devices on the network.

      +

      Home Assistant will trigger a event when the Z-Wave network is complete. Meaning all of the nodes on the network have been queried. This can take quite som time, depending on wakeup intervals on the battery powered devices on the network.

      -
       - alias: ZWave network is complete
      +
       - alias: Z-Wave network is complete
          trigger:
            platform: event
            event_type: zwave.network_complete
      @@ -209,9 +215,9 @@ Depending on what’s plugged into your USB ports, the name found above may chan
       

      zwave.network_ready

      -

      HomeAssistant will trigger a event when the zwave network is ready for use. Between zwave.network_start and zwave.network_ready HomeAssistant will feel sluggish when trying to send commands to zwave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered all awake nodes have been queried and sleeping nodes will be queried when they awake.

      +

      Home Assistant will trigger a event when the Z-Wave network is ready for use. Between zwave.network_start and zwave.network_ready Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered all awake nodes have been queried and sleeping nodes will be queried when they awake.

      -
       - alias: ZWave network is ready
      +
       - alias: Z-Wave network is ready
          trigger:
            platform: event
            event_type: zwave.network_ready
      @@ -219,9 +225,9 @@ Depending on what’s plugged into your USB ports, the name found above may chan
       

      zwave.network_start

      -

      HomeAssistant will trigger a event when the zwave network is set up to be started.

      +

      Home Assistant will trigger a event when the Z-Wave network is set up to be started.

      -
       - alias: ZWave network is starting
      +
       - alias: Z-Wave network is starting
          trigger:
            platform: event
            event_type: zwave.network_start
      @@ -229,9 +235,9 @@ Depending on what’s plugged into your USB ports, the name found above may chan
       

      zwave.network_stop

      -

      HomeAssistant will trigger a event when the zwave network stopping.

      +

      Home Assistant will trigger a event when the Z-Wave network stopping.

      -
       - alias: ZWave network is stopping
      +
       - alias: Z-Wave network is stopping
          trigger:
            platform: event
            event_type: zwave.network_stop
      @@ -239,7 +245,7 @@ Depending on what’s plugged into your USB ports, the name found above may chan
       

      zwave.node_event

      -

      HomeAssistant will trigger a event when command_class_basic changes value on a node. +

      Home Assistant will trigger a event when command_class_basic changes value on a node. This can be virtually anything, so tests have to be made to determine what value equals what. You can use this for automations.

      @@ -257,8 +263,8 @@ You can use this for automations.

      The object_id and basic_level of all triggered events can be seen in the console output.

      -

      zwave.scene_activated -Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch):

      +

      zwave.scene_activated

      +

      Some devices can also trigger scene activation events, which can be used in automation scripts (for example the press of a button on a wall switch):

      # Example configuration.yaml automation entry
       automation:
      @@ -276,7 +282,7 @@ Some devices can also trigger scene activation events, which can be used in auto
       
       

      Services

      -

      The Z-Wave component exposes seven services to help maintain the network.

      +

      The zwave component exposes ten services to help maintain the network.

  • Β  Β 
    Pine64 Z-Wave Moduleβœ“Β Β 
    Razberry GPIO Module βœ“
    @@ -288,28 +294,36 @@ Some devices can also trigger scene activation events, which can be used in auto - + - + - + - + - + + + + + + + + + @@ -321,8 +335,7 @@ Some devices can also trigger scene activation events, which can be used in auto
    add_nodePut the zwave controller in inclusion mode. Allows one to add a new device to the zwave network.Put the Z-Wave controller in inclusion mode. Allows one to add a new device to the Z-Wave network.
    add_node_securePut the zwave controller in secure inclusion mode. Allows one to add a new device with secure communications to the zwave network.Put the Z-Wave controller in secure inclusion mode. Allows one to add a new device with secure communications to the Z-Wave network.
    cancel_commandCancels a running zwave command. If you have started a add_node or remove_node command, and decides you are not going to do it, then this must be used to stop the inclusion/exclusion command.Cancels a running Z-Wave command. If you have started a add_node or remove_node command, and decides you are not going to do it, then this must be used to stop the inclusion/exclusion command.
    heal_networkTells the controller to β€œheal” the network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.Tells the controller to β€œheal” the Z-Wave network. Bascially asks the nodes to tell the controller all of their neighbors so the controller can refigure out optimal routing.
    remove_nodePut the zwave controller in exclusion mode. Allows one to remove a device from the zwave network.Put the Z-Wave controller in exclusion mode. Allows one to remove a device from the Z-Wave network.
    soft_reset Tells the controller to do a β€œsoft reset”. This is not supposed to lose any data, but different controllers can behave differently to a β€œsoft reset” command.
    start_networkStarts the Z-Wave network.
    stop_networkStops the Z-Wave network.
    test_network Tells the controller to send no-op commands to each node and measure the time for a response. In theory, this can also bring back nodes which have been marked β€œpresumed dead”.
    -

    The soft_reset and heal_network commands can be used as part of an automation script -to help keep a zwave network running relliably. For example:

    +

    The soft_reset and heal_network commands can be used as part of an automation script to help keep a Z-Wave network running reliably as shown in the example below. By default, Home Assistant will run a heal_network at midnight. This is a configuration option for the zwave component, the option defaults to true but can be disabled by setting auto_heal to false. Using the soft_reset function with some Z-Wave controllers can cause the Z-Wave network to hang. If you’re having issues with your Z-Wave network try disabling this automation.

    # Example configuration.yaml automation entry
     automation:
    @@ -402,7 +415,7 @@ to help keep a zwave network running relliably. For example:

  • Z-Wave diff --git a/images/isy994/isy994_CoverExample.png b/images/isy994/isy994_CoverExample.png new file mode 100644 index 0000000000000000000000000000000000000000..49065e47bb3b24aefd8822609983842d72e6e684 GIT binary patch literal 17584 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/aws_lambda.png b/images/supported_brands/aws_lambda.png old mode 100755 new mode 100644 diff --git a/images/supported_brands/aws_sns.png b/images/supported_brands/aws_sns.png old mode 100755 new mode 100644 diff --git a/images/supported_brands/aws_sqs.png b/images/supported_brands/aws_sqs.png old mode 100755 new mode 100644 diff --git a/images/supported_brands/bom.png b/images/supported_brands/bom.png new file mode 100644 index 0000000000000000000000000000000000000000..6726186d9b21ed3c252989d8c0e4952c1f0317c0 GIT binary patch literal 8499 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/emoncms.png b/images/supported_brands/emoncms.png new file mode 100644 index 0000000000000000000000000000000000000000..89e14541d2dffce923c201dbe5bbd9c1518c0d53 GIT binary patch literal 10385 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/nuimo.png b/images/supported_brands/nuimo.png new file mode 100644 index 0000000000000000000000000000000000000000..1bc4549b42487dc9b439d368a44a2c52c2e0a6d6 GIT binary patch literal 10966 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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
  • + 0.29: 🎈 Async, SleepIQ, OpenALPR, EmonCMS, stocks, and plants + September 24, 2016 +
  • +
  • 0.28: Reload automation and groups, API documentation, car tracking, Pi-Hole stats September 10, 2016 @@ -148,11 +153,6 @@ Home Assistant is an open-source home automation platform running on Python 3. T August 31, 2016
  • -
  • - 0.27 is here to break eggs and take names: notifications, Hue fakery, safety and unification come to Home Assistant - August 27, 2016 -
  • -
    diff --git a/sitemap.xml b/sitemap.xml index dfb66a8804..2d6e030f95 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,6 +1,10 @@ +https://home-assistant.io/blog/2016/09/29/async-sleepiq-emoncms-stocks/ +2016-09-29T03:04:05+00:00 + + https://home-assistant.io/blog/2016/09/10/notify-group-reload-api-pihole/ 2016-09-10T06:00:00+00:00 @@ -759,6 +763,9 @@ https://home-assistant.io/components/device_tracker.ubus/ +https://home-assistant.io/components/fan.nest/ + + https://home-assistant.io/components/group/ @@ -1812,6 +1819,9 @@ https://home-assistant.io/components/notify.group/ +https://home-assistant.io/components/sensor.knx/ + + https://home-assistant.io/components/sensor.mqtt_room/ @@ -1860,6 +1870,18 @@ https://home-assistant.io/components/sensor.xbox_live/ +https://home-assistant.io/components/binary_sensor.sleepiq/ + + +https://home-assistant.io/components/sensor.sleepiq/ + + +https://home-assistant.io/components/sleepiq/ + + +https://home-assistant.io/components/nuimo_controller/ + + https://home-assistant.io/components/rpi_gpio/ @@ -1872,15 +1894,78 @@ https://home-assistant.io/components/sensor.pi_hole/ +https://home-assistant.io/components/binary_sensor.isy994/ + + +https://home-assistant.io/components/cover.isy994/ + + +https://home-assistant.io/components/fan.isy994/ + + +https://home-assistant.io/components/light.isy994/ + + +https://home-assistant.io/components/lock.isy994/ + + +https://home-assistant.io/components/sensor.isy994/ + + +https://home-assistant.io/components/switch.isy994/ + + https://home-assistant.io/components/binary_sensor.trend/ https://home-assistant.io/components/sensor.linux_battery/ +https://home-assistant.io/components/sensor.emoncms/ + + +https://home-assistant.io/components/sensor.imap_email_content/ + + https://home-assistant.io/components/light.insteon_hub/ +https://home-assistant.io/components/notify.simplepush/ + + +https://home-assistant.io/components/notify.kodi/ + + +https://home-assistant.io/components/binary_sensor.modbus/ + + +https://home-assistant.io/components/sensor.bom/ + + +https://home-assistant.io/components/ffmpeg/ + + +https://home-assistant.io/components/climate.mysensors/ + + +https://home-assistant.io/components/sensor.yahoo_finance/ + + +https://home-assistant.io/components/sensor.miflora/ + + +https://home-assistant.io/components/climate.vera/ + + +https://home-assistant.io/components/cover.vera/ + + +https://home-assistant.io/components/openalpr/ + + +https://home-assistant.io/components/keyboard_remote/ + + https://home-assistant.io/cookbook/automation_for_rainy_days/ @@ -2017,62 +2102,62 @@ https://home-assistant.io/demo/frontend.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/index.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-event.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-info.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-service.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-state.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-dev-template.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-history.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-iframe.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-logbook.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/demo/panels/ha-panel-map.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/googlef4f3693c209fe788.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/static/fonts/roboto/DESCRIPTION.en_us.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/static/fonts/robotomono/DESCRIPTION.en_us.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 https://home-assistant.io/static/mdi-demo.html -2016-09-28T08:37:24+00:00 +2016-09-29T04:42:16+00:00 diff --git a/topics/platform_options/index.html b/topics/platform_options/index.html index 321c693256..8d1a6bfd03 100644 --- a/topics/platform_options/index.html +++ b/topics/platform_options/index.html @@ -170,6 +170,12 @@