From adcde053bb5bbd831e3b2de43f6c25a6e8868ff1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 26 Oct 2015 21:59:24 -0700 Subject: [PATCH] Site updated at 2015-10-27 04:59:24 UTC --- atom.xml | 79 +- blog/2014/12/18/website-launched/index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- blog/2015/01/13/nest-in-da-house/index.html | 22 +- blog/2015/01/24/release-notes/index.html | 22 +- .../2015/02/08/looking-at-the-past/index.html | 22 +- blog/2015/02/24/streaming-updates/index.html | 22 +- .../index.html | 22 +- blog/2015/03/08/new-logo/index.html | 22 +- blog/2015/03/11/release-notes/index.html | 22 +- blog/2015/03/22/release-notes/index.html | 22 +- blog/2015/04/25/release-notes/index.html | 22 +- .../05/09/utc-time-zone-awareness/index.html | 22 +- blog/2015/05/14/release-notes/index.html | 22 +- blog/2015/06/10/release-notes/index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../13/home-assistant-meets-ifttt/index.html | 22 +- .../index.html | 18 +- .../alarm-sonos-and-itunes-support/index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 22 +- .../index.html | 362 +++ blog/archives/index.html | 61 +- blog/categories/architecture/atom.xml | 2 +- blog/categories/architecture/index.html | 22 +- blog/categories/branding/atom.xml | 2 +- blog/categories/branding/index.html | 22 +- blog/categories/component/atom.xml | 2 +- blog/categories/component/index.html | 22 +- blog/categories/core/atom.xml | 2 +- blog/categories/core/index.html | 22 +- blog/categories/esp8266/atom.xml | 2 +- blog/categories/esp8266/index.html | 22 +- blog/categories/frontend/atom.xml | 2 +- blog/categories/frontend/index.html | 22 +- blog/categories/how-to/atom.xml | 2 +- blog/categories/how-to/index.html | 22 +- blog/categories/mqtt/atom.xml | 2 +- blog/categories/mqtt/index.html | 22 +- blog/categories/release-notes/atom.xml | 96 +- blog/categories/release-notes/index.html | 59 +- blog/categories/user-stories/atom.xml | 2 +- blog/categories/user-stories/index.html | 22 +- blog/categories/website/atom.xml | 2 +- blog/categories/website/index.html | 22 +- blog/index.html | 193 +- blog/posts/2/index.html | 166 +- blog/posts/3/index.html | 73 +- components/alarm_control_panel.html | 2002 +++++++++++++ components/alarm_control_panel.manual.html | 1676 +++++++++++ components/alarm_control_panel.mqtt.html | 1555 +++++++++- components/arduino.html | 2175 +++++++++++++- components/automation.html | 2665 ++++++++++++++--- components/browser.html | 2141 ++++++++++++- components/camera.foscam.html | 1524 +++++++++- components/camera.generic.html | 1519 +++++++++- components/configurator.html | 2144 ++++++++++++- components/conversation.html | 2141 ++++++++++++- components/device_sun_light_trigger.html | 2179 +++++++++++++- components/device_tracker.actiontec.html | 1589 +++++++++- components/device_tracker.aruba.html | 1586 +++++++++- components/device_tracker.asuswrt.html | 1584 +++++++++- components/device_tracker.ddwrt.html | 1584 +++++++++- components/device_tracker.geofancy.html | 1706 +++++++++++ components/device_tracker.html | 1995 +++++++++++- components/device_tracker.luci.html | 1589 +++++++++- components/device_tracker.mqtt.html | 1611 +++++++++- components/device_tracker.netgear.html | 1584 +++++++++- components/device_tracker.nmap_scanner.html | 1579 +++++++++- components/device_tracker.owntracks.html | 1575 +++++++++- components/device_tracker.snmp.html | 1584 +++++++++- components/device_tracker.thomson.html | 1584 +++++++++- components/device_tracker.tomato.html | 1585 +++++++++- components/device_tracker.tplink.html | 1596 +++++++++- components/device_tracker.ubus.html | 1743 +++++++++++ components/discovery.html | 2146 ++++++++++++- components/downloader.html | 2148 ++++++++++++- components/group.html | 2157 ++++++++++++- components/history.html | 2142 ++++++++++++- components/ifttt.html | 1508 +++++++++- components/ifttt.manything.html | 1603 +++++++++- components/index.html | 2564 ++++++++++++---- components/introduction.html | 2287 ++++++++++++++ components/isy994.html | 2190 +++++++++++++- components/keyboard.html | 2146 ++++++++++++- components/light.blinksticklight.html | 1539 +++++++++- components/light.html | 1890 +++++++++++- components/light.hue.html | 1534 +++++++++- components/light.hyperion.html | 1663 ++++++++++ components/light.limitlessled.html | 1546 +++++++++- components/light.rfxtrx.html | 1564 +++++++++- components/light.tellstick.html | 1687 +++++++++++ components/light.vera.html | 1710 +++++++++++ components/light.wink.html | 1682 +++++++++++ components/logbook.html | 2163 ++++++++++++- components/media_player.cast.html | 1547 +++++++++- components/media_player.denon.html | 1551 +++++++++- components/media_player.firetv.html | 1715 +++++++++++ components/media_player.html | 1901 +++++++++++- components/media_player.itunes.html | 1556 +++++++++- components/media_player.kodi.html | 1551 +++++++++- components/media_player.mpd.html | 1555 +++++++++- components/media_player.plex.html | 1558 +++++++++- components/media_player.sonos.html | 1541 +++++++++- components/media_player.squeezebox.html | 1553 +++++++++- components/modbus.html | 2298 +++++++++++++- components/mqtt.html | 2327 +++++++++++++- components/notify.file.html | 1561 +++++++++- components/notify.html | 1945 +++++++++++- components/notify.instapush.html | 1594 +++++++++- components/notify.nma.html | 1563 +++++++++- components/notify.pushbullet.html | 1557 +++++++++- components/notify.pushover.html | 1598 +++++++++- components/notify.slack.html | 1565 +++++++++- components/notify.smtp.html | 1583 +++++++++- components/notify.syslog.html | 1565 +++++++++- components/notify.telegram.html | 1572 +++++++++- components/notify.xmpp.html | 1567 +++++++++- components/rfxtrx.html | 2223 +++++++++++++- components/scene.html | 2170 +++++++++++++- components/script.html | 2208 +++++++++++++- components/sensor.arduino.html | 1558 +++++++++- components/sensor.arest.html | 1870 ++++++++++-- components/sensor.bitcoin.html | 1680 ++++++++++- components/sensor.command_sensor.html | 1717 ++++++++++- components/sensor.cpuspeed.html | 1742 +++++++++++ components/sensor.dht.html | 1528 +++++++++- components/sensor.efergy.html | 1629 +++++++++- components/sensor.forecast.html | 1546 +++++++++- components/sensor.glances.html | 1668 ++++++++++- components/sensor.html | 2117 +++++++++++++ components/sensor.modbus.html | 1810 +++++++++++ components/sensor.mqtt.html | 1648 +++++++++- components/sensor.mysensors.html | 1626 +++++++++- components/sensor.openweathermap.html | 1530 +++++++++- components/sensor.rest.html | 1733 ++++++++++- components/sensor.rfxtrx.html | 1639 +++++++++- components/sensor.rpi_gpio.html | 1563 +++++++++- components/sensor.sabnzbd.html | 1648 +++++++++- components/sensor.swiss_public_transport.html | 1609 +++++++++- components/sensor.systemmonitor.html | 1624 +++++++++- components/sensor.tellstick.html | 1774 +++++++++++ components/sensor.temper.html | 1600 +++++++++- components/sensor.time_date.html | 1624 +++++++++- components/sensor.transmission.html | 1647 +++++++++- components/sensor.vera.html | 1780 +++++++++++ components/sensor.wink.html | 1754 +++++++++++ components/sensor.worldclock.html | 1615 +++++++++- components/shell_command.html | 2293 ++++++++++++++ components/simple_alarm.html | 2137 ++++++++++++- components/sun.html | 2166 +++++++++++++- components/switch.arduino.html | 1564 +++++++++- components/switch.arest.html | 1598 +++++++++- components/switch.command_switch.html | 1620 +++++++++- components/switch.edimax.html | 1569 +++++++++- components/switch.hikvision.html | 1526 +++++++++- components/switch.html | 1925 +++++++++++- components/switch.modbus.html | 1758 +++++++++++ components/switch.mqtt.html | 1620 +++++++++- components/switch.rest.html | 1720 +++++++++++ components/switch.rfxtrx.html | 1588 +++++++++- components/switch.rpi_gpio.html | 1555 +++++++++- components/switch.tellstick.html | 1719 +++++++++++ components/switch.transmission.html | 1587 +++++++++- components/switch.vera.html | 1732 +++++++++++ components/switch.wemo.html | 1557 +++++++++- components/switch.wink.html | 1706 +++++++++++ components/tellstick.html | 2233 +++++++++++++- components/thermostat.heat_control.html | 1555 +++++++++- components/thermostat.html | 1879 +++++++++++- components/thermostat.nest.html | 1506 +++++++++- components/thermostat.radiotherm.html | 1653 ++++++++++ components/vera.html | 2232 +++++++++++++- components/verisure.html | 2184 +++++++++++++- components/wink.html | 2194 +++++++++++++- components/zone.html | 2182 +++++++++++++- components/zwave.html | 2195 +++++++++++++- cookbook/automation_for_rainy_days.html | 102 +- cookbook/automation_sun.html | 78 +- .../basic_example_use_trigger_values.html | 78 +- cookbook/dim_lights_when_playing_media.html | 224 ++ cookbook/index.html | 20 +- ...t_for_10_minutes_when_motion_detected.html | 105 +- developers/add_new_platform.html | 2 +- developers/api.html | 2 +- developers/architecture.html | 2 +- developers/creating_components.html | 20 +- developers/credits.html | 3 +- developers/frontend.html | 2 +- developers/index.html | 32 +- developers/python_api.html | 33 +- developers/rest_api.html | 2 +- developers/website.html | 2 +- getting-started/android.html | 2 +- getting-started/automation.html | 2 +- getting-started/autostart.html | 12 +- getting-started/configuration.html | 2 +- getting-started/devices.html | 4 +- getting-started/index.html | 2 +- getting-started/presence-detection.html | 2 +- .../troubleshooting-configuration.html | 2 +- getting-started/troubleshooting.html | 21 +- help/index.html | 2 +- images/supported_brands/emblem-important.png | Bin 0 -> 2897 bytes images/supported_brands/firetv.png | Bin 0 -> 4937 bytes images/supported_brands/geofancy.png | Bin 0 -> 32558 bytes .../preferences-system-privacy.png | Bin 0 -> 3059 bytes images/supported_brands/radiotherm.png | Bin 0 -> 7694 bytes images/supported_brands/weather-clear.png | Bin 0 -> 4053 bytes index.html | 2 +- sitemap.xml | 1517 +++++----- stylesheets/screen.css | 2 +- 220 files changed, 226724 insertions(+), 6116 deletions(-) create mode 100644 blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html create mode 100644 components/alarm_control_panel.html create mode 100644 components/alarm_control_panel.manual.html create mode 100644 components/device_tracker.geofancy.html create mode 100644 components/device_tracker.ubus.html create mode 100644 components/introduction.html create mode 100644 components/light.hyperion.html create mode 100644 components/light.tellstick.html create mode 100644 components/light.vera.html create mode 100644 components/light.wink.html create mode 100644 components/media_player.firetv.html create mode 100644 components/sensor.cpuspeed.html create mode 100644 components/sensor.html create mode 100644 components/sensor.modbus.html create mode 100644 components/sensor.tellstick.html create mode 100644 components/sensor.vera.html create mode 100644 components/sensor.wink.html create mode 100644 components/shell_command.html create mode 100644 components/switch.modbus.html create mode 100644 components/switch.rest.html create mode 100644 components/switch.tellstick.html create mode 100644 components/switch.vera.html create mode 100644 components/switch.wink.html create mode 100644 components/thermostat.radiotherm.html create mode 100644 cookbook/dim_lights_when_playing_media.html create mode 100644 images/supported_brands/emblem-important.png create mode 100644 images/supported_brands/firetv.png create mode 100644 images/supported_brands/geofancy.png create mode 100644 images/supported_brands/preferences-system-privacy.png create mode 100644 images/supported_brands/radiotherm.png create mode 100644 images/supported_brands/weather-clear.png diff --git a/atom.xml b/atom.xml index a1625d6850..01444de02d 100644 --- a/atom.xml +++ b/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ @@ -13,6 +13,67 @@ Octopress + + <![CDATA[0.7.6: Amazon FireTV, Radiotherm thermostats]]> + + 2015-10-26T18:10:00-07:00 + https://home-assistant.io/blog/2015/10/26/firetv-and-radiotherm-now-supported + After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main +focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been +squashed, test coverage increased to 85% and thanks to the hard work by +@fabaff and myself the component section on the website has gotten a +complete revamp.

+ +

Changes

+ +

+ +

+ + + + + + + +

Breaking changes

+ +

As part of this release we did some cleanup which introduced backwards incompatible changes:

+ +

Heat Control thermostat no longer includes scheduling features.
+This feature has been removed completely. Use the automation component +instead to control target temperature.

+ +

Config changed for calling a service from a script.
+execute_service: has been replaced with service:. See component page +for example. The old method will continue working for some time.

+ +

Scenes can no longer be turned off.
+It is no longer possible to turn a scene off after it has been activated. The way it worked was unpredictable +and causes a lot of confusion.

+ +

Downloader treats relative paths now relative to the config dir instead of the current working dir.
+This makes more sense as most people run Home Assistant as a daemon

+]]>
+
+ <![CDATA[Report the temperature with ESP8266 to MQTT]]> @@ -2828,22 +2889,6 @@ An initial version of voice control for Home Assistant has landed. The current i The old logo, the new detailed logo and the new simple logo.

-]]> -
- - - <![CDATA[Home Assistant moving to YAML]]> - - 2015-03-01T11:38:00-08:00 - https://home-assistant.io/blog/2015/03/01/home-assistant-migrating-to-yaml - Home Assistant is now using YAML for it’s configuration file. -YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

- -

The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

- -

The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

- -

Users of Home Assistant should migrate as the old configuration format is deprecated.

]]>
diff --git a/blog/2014/12/18/website-launched/index.html b/blog/2014/12/18/website-launched/index.html index 6972712b7e..e88e3b58e5 100644 --- a/blog/2014/12/18/website-launched/index.html +++ b/blog/2014/12/18/website-launched/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + 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 1117057c54..76e497800f 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + 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 844631ba0d..e4d5836264 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + 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 83e1c5e962..73ac21e94d 100644 --- a/blog/2015/01/13/nest-in-da-house/index.html +++ b/blog/2015/01/13/nest-in-da-house/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/01/24/release-notes/index.html b/blog/2015/01/24/release-notes/index.html index e25c0512db..31efb02fce 100644 --- a/blog/2015/01/24/release-notes/index.html +++ b/blog/2015/01/24/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + diff --git a/blog/2015/02/24/streaming-updates/index.html b/blog/2015/02/24/streaming-updates/index.html index 18e5df5690..17f993a0ea 100644 --- a/blog/2015/02/24/streaming-updates/index.html +++ b/blog/2015/02/24/streaming-updates/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + 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 c03d2cca0a..8d7395b7d3 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/03/08/new-logo/index.html b/blog/2015/03/08/new-logo/index.html index 2810f4d343..1bd788ffe3 100644 --- a/blog/2015/03/08/new-logo/index.html +++ b/blog/2015/03/08/new-logo/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/03/11/release-notes/index.html b/blog/2015/03/11/release-notes/index.html index 43740e2d52..9990f38644 100644 --- a/blog/2015/03/11/release-notes/index.html +++ b/blog/2015/03/11/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/03/22/release-notes/index.html b/blog/2015/03/22/release-notes/index.html index 6cee1aa4e2..e1bf82e145 100644 --- a/blog/2015/03/22/release-notes/index.html +++ b/blog/2015/03/22/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + 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 464c429c7c..c802af26ae 100644 --- a/blog/2015/05/09/utc-time-zone-awareness/index.html +++ b/blog/2015/05/09/utc-time-zone-awareness/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/05/14/release-notes/index.html b/blog/2015/05/14/release-notes/index.html index 51e762ea4b..fe1ed36fff 100644 --- a/blog/2015/05/14/release-notes/index.html +++ b/blog/2015/05/14/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/2015/06/10/release-notes/index.html b/blog/2015/06/10/release-notes/index.html index 495cca1f76..dd50e105e1 100644 --- a/blog/2015/06/10/release-notes/index.html +++ b/blog/2015/06/10/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + 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 7756f0f20b..d4fa924eed 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + 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 7117125d7a..3afa6bf625 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + 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 af42a7d859..2125f9d653 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers - + 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 d085cd63eb..0d7388af97 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 @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + 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 new file mode 100644 index 0000000000..5d20db3727 --- /dev/null +++ b/blog/2015/10/26/firetv-and-radiotherm-now-supported/index.html @@ -0,0 +1,362 @@ + + + + + + + + + + + + 0.7.6: Amazon FireTV, Radiotherm thermostats - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    + +

    0.7.6: Amazon FireTV, Radiotherm thermostats

    + + + +
    + + + + + + + + + + + + + + + + + + + two minutes reading time + + + + + + + + + Comments + +
    + +
    + + + + +

    After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main +focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been +squashed, test coverage increased to 85% and thanks to the hard work by +@fabaff and myself the component section on the website has gotten a +complete revamp.

    + +

    Changes

    + +

    + +

    + + + + + + + +

    Breaking changes

    + +

    As part of this release we did some cleanup which introduced backwards incompatible changes:

    + +

    Heat Control thermostat no longer includes scheduling features.
    +This feature has been removed completely. Use the automation component +instead to control target temperature.

    + +

    Config changed for calling a service from a script.
    +execute_service: has been replaced with service:. See component page +for example. The old method will continue working for some time.

    + +

    Scenes can no longer be turned off.
    +It is no longer possible to turn a scene off after it has been activated. The way it worked was unpredictable +and causes a lot of confusion.

    + +

    Downloader treats relative paths now relative to the config dir instead of the current working dir.
    +This makes more sense as most people run Home Assistant as a daemon

    + + +
    + + +
    +

    Comments

    +
    +
    +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/archives/index.html b/blog/archives/index.html index 9153897065..d9289a1277 100644 --- a/blog/archives/index.html +++ b/blog/archives/index.html @@ -22,7 +22,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/architecture/atom.xml b/blog/categories/architecture/atom.xml index 6b95d6ec3f..0d6fa2e659 100644 --- a/blog/categories/architecture/atom.xml +++ b/blog/categories/architecture/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: architecture | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/architecture/index.html b/blog/categories/architecture/index.html index d59d4bdc60..983a3db729 100644 --- a/blog/categories/architecture/index.html +++ b/blog/categories/architecture/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/branding/atom.xml b/blog/categories/branding/atom.xml index a63c7aa7f9..88c1d47c79 100644 --- a/blog/categories/branding/atom.xml +++ b/blog/categories/branding/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: branding | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/branding/index.html b/blog/categories/branding/index.html index 8eac7fa0f6..4cfe32efe3 100644 --- a/blog/categories/branding/index.html +++ b/blog/categories/branding/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/component/atom.xml b/blog/categories/component/atom.xml index 03cdd726d2..4c30ba82f6 100644 --- a/blog/categories/component/atom.xml +++ b/blog/categories/component/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: component | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/component/index.html b/blog/categories/component/index.html index 54819aa8d0..6c61564f6b 100644 --- a/blog/categories/component/index.html +++ b/blog/categories/component/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/core/atom.xml b/blog/categories/core/atom.xml index 3afc533fef..8d21764066 100644 --- a/blog/categories/core/atom.xml +++ b/blog/categories/core/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: core | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/core/index.html b/blog/categories/core/index.html index 6230e922fe..9b27298bb4 100644 --- a/blog/categories/core/index.html +++ b/blog/categories/core/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/esp8266/atom.xml b/blog/categories/esp8266/atom.xml index 2326a7f9e4..1b07ece41e 100644 --- a/blog/categories/esp8266/atom.xml +++ b/blog/categories/esp8266/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: esp8266 | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/esp8266/index.html b/blog/categories/esp8266/index.html index 20c1835347..67020fd1a1 100644 --- a/blog/categories/esp8266/index.html +++ b/blog/categories/esp8266/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/frontend/atom.xml b/blog/categories/frontend/atom.xml index f9a205839f..c7f3bdfc6f 100644 --- a/blog/categories/frontend/atom.xml +++ b/blog/categories/frontend/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: frontend | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/frontend/index.html b/blog/categories/frontend/index.html index 7590e15e7a..caad093319 100644 --- a/blog/categories/frontend/index.html +++ b/blog/categories/frontend/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/how-to/atom.xml b/blog/categories/how-to/atom.xml index 9b4686c5bf..91d41eaa17 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]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/how-to/index.html b/blog/categories/how-to/index.html index c0f51951e0..5e9a4ef0ec 100644 --- a/blog/categories/how-to/index.html +++ b/blog/categories/how-to/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/mqtt/atom.xml b/blog/categories/mqtt/atom.xml index 8d9b99176d..3e665b95bf 100644 --- a/blog/categories/mqtt/atom.xml +++ b/blog/categories/mqtt/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: mqtt | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/mqtt/index.html b/blog/categories/mqtt/index.html index 284283184c..4315aea04b 100644 --- a/blog/categories/mqtt/index.html +++ b/blog/categories/mqtt/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/release-notes/atom.xml b/blog/categories/release-notes/atom.xml index a31990fdc7..bb4d823255 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]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ @@ -13,6 +13,67 @@ Octopress + + <![CDATA[0.7.6: Amazon FireTV, Radiotherm thermostats]]> + + 2015-10-26T18:10:00-07:00 + https://home-assistant.io/blog/2015/10/26/firetv-and-radiotherm-now-supported + After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main +focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been +squashed, test coverage increased to 85% and thanks to the hard work by +@fabaff and myself the component section on the website has gotten a +complete revamp.

    + +

    Changes

    + +

    + +

    + + + + + + + +

    Breaking changes

    + +

    As part of this release we did some cleanup which introduced backwards incompatible changes:

    + +

    Heat Control thermostat no longer includes scheduling features.
    +This feature has been removed completely. Use the automation component +instead to control target temperature.

    + +

    Config changed for calling a service from a script.
    +execute_service: has been replaced with service:. See component page +for example. The old method will continue working for some time.

    + +

    Scenes can no longer be turned off.
    +It is no longer possible to turn a scene off after it has been activated. The way it worked was unpredictable +and causes a lot of confusion.

    + +

    Downloader treats relative paths now relative to the config dir instead of the current working dir.
    +This makes more sense as most people run Home Assistant as a daemon

    +]]>
    +
    + <![CDATA[0.7.5: Blinkstick, SNMP, Telegram]]> @@ -354,39 +415,6 @@ automation: -]]> - - - - <![CDATA[Verisure devices and modern TP-Link routers now supported]]> - - 2015-08-17T20:00:00-07:00 - https://home-assistant.io/blog/2015/08/17/verisure-and-modern-tp-link-router-support - A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

    - -

    This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

    - -

    As we didn’t want to just push out bug fixes, this release includes a few additions:

    - -
      -
    • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
    • -
    • Improved support for MQTT topic subscriptions has been contributed by @qrtn
    • -
    - - -

    Verisure Support
    - -Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

    - -
    # Example configuration.yaml entry
    -verisure:
    -  username: user@example.com
    -  password: password
    -  alarm: 1
    -  hygrometers: 0
    -  smartplugs: 1
    -  thermometers: 0
    -
    ]]>
    diff --git a/blog/categories/release-notes/index.html b/blog/categories/release-notes/index.html index 696dcd2fdc..2f0275a28a 100644 --- a/blog/categories/release-notes/index.html +++ b/blog/categories/release-notes/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/user-stories/atom.xml b/blog/categories/user-stories/atom.xml index 84a3272bde..f6d52de0bc 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]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/user-stories/index.html b/blog/categories/user-stories/index.html index 23395553a7..50cac06cf8 100644 --- a/blog/categories/user-stories/index.html +++ b/blog/categories/user-stories/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/categories/website/atom.xml b/blog/categories/website/atom.xml index be27b0c7c6..23e198513a 100644 --- a/blog/categories/website/atom.xml +++ b/blog/categories/website/atom.xml @@ -4,7 +4,7 @@ <![CDATA[Category: website | Home Assistant]]> - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 https://home-assistant.io/ diff --git a/blog/categories/website/index.html b/blog/categories/website/index.html index b959eb4db6..0c48be26b3 100644 --- a/blog/categories/website/index.html +++ b/blog/categories/website/index.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers - + diff --git a/blog/index.html b/blog/index.html index fac228029e..6d5c527c06 100644 --- a/blog/index.html +++ b/blog/index.html @@ -22,7 +22,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -99,6 +99,101 @@ +
      +
      + +

      + 0.7.6: Amazon FireTV, Radiotherm thermostats +

      + + + +
      + + + + + + + + + + + + + + + + + + + two minutes reading time + + + + + + + + + Comments + +
      + +
      + + + + +
      +

      After two weeks of hard work I’m proud to announce the release of Home Assistant v0.7.6. For this release the main +focus was bugs, test coverage and documentation. And we exceeded expectations on all three fronts. Bugs have been +squashed, test coverage increased to 85% and thanks to the hard work by +@fabaff and myself the component section on the website has gotten a +complete revamp.

      + +

      Changes

      + +

      + +

      + + + + + + Read on → +
      + +
      +
      + +
      @@ -868,100 +963,6 @@ devices. The new UI moves away from a card per entity and has cards per group an

      - -
      -
      - -

      - Verisure devices and modern TP-Link routers now supported -

      - - - -
      - - - - - - - - - - - - - - - - - - - 1 minute reading time - - - - - - - - - Comments - -
      - -
      - - - - -

      A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

      - -

      This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

      - -

      As we didn’t want to just push out bug fixes, this release includes a few additions:

      - -
        -
      • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
      • -
      • Improved support for MQTT topic subscriptions has been contributed by @qrtn
      • -
      - - -

      Verisure Support
      - -Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -verisure:
      -  username: user@example.com
      -  password: password
      -  alarm: 1
      -  hygrometers: 0
      -  smartplugs: 1
      -  thermometers: 0
      -
      - - - -
      -
      -
  • +
  • Components
  • Developers
      @@ -99,6 +99,100 @@ +
      +
      + +

      + Verisure devices and modern TP-Link routers now supported +

      + + + +
      + + + + + + + + + + + + + + + + + + + 1 minute reading time + + + + + + + + + Comments + +
      + +
      + + + + +

      A minor bug fix release to fix some issues that have come up since the last release. Please upgrade as soon as possible by running git pull from the Home Assistant directory.

      + +

      This release is a major milestone in our test coverage as we’ve crossed into the 80s! It has to be noted that this covers mainly the core and automation components. Platforms that communicate with IoT devices have been excluded.

      + +

      As we didn’t want to just push out bug fixes, this release includes a few additions:

      + +
        +
      • Support for modern TP-Link routers like the ArcherC9 line has been contributed by @chrisvis.
      • +
      • Improved support for MQTT topic subscriptions has been contributed by @qrtn
      • +
      + + +

      Verisure Support
      + +Home Assistant support to integrate your Verisure alarms, hygrometers, sensors and thermometers has been contributed by @persandstrom.

      + +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +8
      +
      # Example configuration.yaml entry
      +verisure:
      +  username: user@example.com
      +  password: password
      +  alarm: 1
      +  hygrometers: 0
      +  smartplugs: 1
      +  thermometers: 0
      +
      + + + +
      +
      + +
      @@ -929,74 +1023,6 @@ The old logo, the new detailed logo and the new simple logo. -
      -
      - - -
      -
      - -

      - Home Assistant moving to YAML -

      - - - -
      - - - - - - - - - - - - - - - - - - - less than one minute reading time - - - - - - - - - Comments - -
      - -
      - - - - -

      Home Assistant is now using YAML for it’s configuration file. -YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

      - -

      The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

      - -

      The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

      - -

      Users of Home Assistant should migrate as the old configuration format is deprecated.

      - -

      diff --git a/blog/posts/3/index.html b/blog/posts/3/index.html index 965970f466..e7f3f369bb 100644 --- a/blog/posts/3/index.html +++ b/blog/posts/3/index.html @@ -22,7 +22,8 @@ - + @@ -58,9 +59,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -99,6 +100,74 @@ +
      +
      + +

      + Home Assistant moving to YAML +

      + + + +
      + + + + + + + + + + + + + + + + + + + less than one minute reading time + + + + + + + + + Comments + +
      + +
      + + + + +

      Home Assistant is now using YAML for it’s configuration file. +YAML allows the use of lists, which should make the configuration file a bit more flexible and useful. The new configuration file format is backwards compatible with existing components. Because of this, there is no need for component developers to update their components.

      + +

      The new file is named configuration.yaml and if it can’t be found in your config directory, Home Assistant will instead try to find the old configuration file, home-assistant.conf.

      + +

      The home-assistant.conf.example has been replaced with an updated configuration.yaml.example.

      + +

      Users of Home Assistant should migrate as the old configuration format is deprecated.

      + + +
      +
      + +
      diff --git a/components/alarm_control_panel.html b/components/alarm_control_panel.html new file mode 100644 index 0000000000..41ede83c35 --- /dev/null +++ b/components/alarm_control_panel.html @@ -0,0 +1,2002 @@ + + + + + + + + + + + + Alarm Control Panels - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Alarm Control Panels +

      +
      +
      + +

      Home Assistant can give you an interface with is similar to a classic alarm system. There are several panels supported:

      + + + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/alarm_control_panel.manual.html b/components/alarm_control_panel.manual.html new file mode 100644 index 0000000000..ffe40ef045 --- /dev/null +++ b/components/alarm_control_panel.manual.html @@ -0,0 +1,1676 @@ + + + + + + + + + + + + Manual Alarm Control Panel - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Manual Alarm Control Panel +

      +
      +
      + +

      This platform enables you to set manual alarms in Home Assistant.

      + +
      # Example configuration.yaml entry
      +alarm_control_panel:
      +  platform: manual
      +  name: "HA Alarm"
      +  code: PASSCODE
      +  pending_time: 60
      +  trigger_time: 120
      +
      + +

      Configuration variables:

      + +
        +
      • name (Optional): The name of the alarm. Default is ‘HA Alarm’.
      • +
      • code (Optional): If defined, specifies a code to enable or disable the alarm in the frontend.
      • +
      • pending_time (Optional): The time in seconds of the pending time before arming the alarm. Default is 60 seconds.
      • +
      • trigger_time (Optional): The time in seconds of the trigger time in which the alarm is firing. Default is 120 seconds.
      • +
      + + +

      Examples

      + +

      In this section you find some real life examples of how to use this panel.

      + +

      Sensors

      + +

      Using sensors to trigger the alarm.

      + +
      automation:
      +- alias: 'Trigger alarm while armed away'
      +  trigger:
      +    - platform: state
      +      entity_id: sensor.pir1
      +      state: 'active'
      +    - platform: state
      +      entity_id: sensor.pir2
      +      state: 'active'
      +    - platform: state
      +      entity_id: sensor.door
      +      state: 'open'
      +    - platform: state
      +      entity_id: sensor.window
      +      state: 'open'
      +  condition:
      +    - platform: state
      +      entity_id: alarm_control_panel.ha_alarm
      +      state: armed_away
      +  action:
      +    service: alarm_control_panel.alarm_trigger
      +    entity_id: alarm_control_panel.ha_alarm
      +
      + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/alarm_control_panel.mqtt.html b/components/alarm_control_panel.mqtt.html index e2d6c53f39..a29ecff0da 100644 --- a/components/alarm_control_panel.mqtt.html +++ b/components/alarm_control_panel.mqtt.html @@ -9,7 +9,7 @@ - MQTT alarm support - Home Assistant + MQTT Alarm Control Panel - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,46 +97,30 @@
      - -

      - MQTT Alarm Support + MQTT Alarm Control Panel


      - -

      -This platform enables the possibility to control an MQTT alarm. The alarm will only change state after +

      This platform enables the possibility to control an MQTT alarm. The alarm will only change state after receiving the a new state from state_topic. If these messages are published with RETAIN flag, the MQTT alarm will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state will be unknown.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -
      # Example configuration.yaml entry
      -alarm_control_panel:
      -  platform: mqtt
      -  state_topic: "home/alarm"
      -  command_topic: "home/alarm/set"
      -  name: "MQTT Alarm"
      -  qos: 0
      -  payload_disarm: "DISARM"
      -  payload_arm_home: "ARM_HOME"
      -  payload_arm_away: "ARM_AWAY"
      -  code: "mySecretCode"
      -
      - +
      # Example configuration.yaml entry
      +alarm_control_panel:
      +  platform: mqtt
      +  state_topic: "home/alarm"
      +  command_topic: "home/alarm/set"
      +  name: "MQTT Alarm"
      +  qos: 0
      +  payload_disarm: "DISARM"
      +  payload_arm_home: "ARM_HOME"
      +  payload_arm_away: "ARM_AWAY"
      +  code: "mySecretCode"
      +

      Configuration variables:

      @@ -152,13 +136,1511 @@ the initial state will be unknown.

    - + + @@ -194,5 +1676,10 @@ the initial state will be unknown.

    + + + + + \ No newline at end of file diff --git a/components/arduino.html b/components/arduino.html index 4f2433a586..2c8037abff 100644 --- a/components/arduino.html +++ b/components/arduino.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,19 +97,14 @@
      - -

      Arduino


      - -

      - -

      The Arduino device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. The equipment depends on the type of board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins.

      +

      The Arduino device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. The equipment depends on the type of board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins.

      There are a lot of extensions (so called shields) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards.

      @@ -121,14 +116,10 @@

      To integrate an Arduino boards with Home Assistant, add the following section to your configuration.yaml file:

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -arduino:
      -  port: /dev/ttyACM0
      -
      - +
      # Example configuration.yaml entry
      +arduino:
      +  port: /dev/ttyACM0
      +

      Configuration variables:

      @@ -137,10 +128,8 @@
    -
    1
    -
    ls /dev/ttyACM*
    -
    - +
    ls /dev/ttyACM*
    +

    If that is not working, check your dmesg or journalctl -f output. Keep in mind that Arduino clones are often using a different name for the port (e.g. /dev/ttyUSB*).

    @@ -157,13 +146,2154 @@ A word of caution: The Arduino boards are not storing states. This means that wi - + + @@ -199,5 +2329,10 @@ A word of caution: The Arduino boards are not storing states. This means that wi + + + + + \ No newline at end of file diff --git a/components/automation.html b/components/automation.html index c03ca8d277..13b9bc9b78 100644 --- a/components/automation.html +++ b/components/automation.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,15 +97,12 @@
      - -

      Automation


      -

      This page will go into more detail about the various options the automation component offers. If you haven’t yet, read the getting started page on automation.

      @@ -114,110 +111,58 @@ you haven’t yet, read the getti condition_type are optional. To keep this page compact, all following sections will not show the full configuration but only the relevant part.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -22
      -23
      -24
      -25
      -26
      -27
      -28
      -29
      -30
      -31
      -32
      -33
      -34
      -35
      -36
      -37
      -38
      -39
      -40
      -41
      -42
      -43
      -44
      -45
      -46
      -47
      -48
      -49
      -50
      -51
      -
      # Example of entry in configuration.yaml
      -automation:
      -# Turns on lights 1 hour before sunset if people are home
      -# and if people get home between 16:00-23:00
      -- alias: 'Rule 1 Light on in the evening'
      -  trigger:
      -    # Prefix the first line of each trigger configuration
      -    # with a '-' to enter multiple
      -    - platform: sun
      -      event: sunset
      -      offset: '-01:00:00'
      -    - platform: state
      -      entity_id: group.all_devices
      -      state: 'home'
      -  condition:
      -    # Prefix the first line of each condition configuration
      -    # with a '-'' to enter multiple
      -    - platform: state
      -      entity_id: group.all_devices
      -      state: 'home'
      -    - platform: time
      -      after: '16:00:00'
      -      before: '23:00:00'
      -  action:
      -    service: homeassistant.turn_on
      -    entity_id: group.living_room
      -
      -# Turn off lights when everybody leaves the house
      -- alias: 'Rule 2 - Away Mode'
      -  trigger:
      -    platform: state
      -    entity_id: group.all_devices
      -    state: 'not_home'
      -  action:
      -    service: light.turn_off
      -    entity_id: group.all_lights
      -
      -# Notify when Paulus leaves the house in the evening
      -- alias: 'Leave Home notification'
      -  trigger:
      -    platform: zone
      -    event: leave
      -    zone: zone.home
      -    entity_id: device_tracker.paulus
      -  condition:
      -    platform: time
      -    after: '20:00'
      -  action:
      -    service: notify.notify
      -    data:
      -      message: 'Paulus left the house'
      -
      +
      # Example of entry in configuration.yaml
      +automation:
      +# Turns on lights 1 hour before sunset if people are home
      +# and if people get home between 16:00-23:00
      +- alias: 'Rule 1 Light on in the evening'
      +  trigger:
      +    # Prefix the first line of each trigger configuration
      +    # with a '-' to enter multiple
      +    - platform: sun
      +      event: sunset
      +      offset: '-01:00:00'
      +    - platform: state
      +      entity_id: group.all_devices
      +      state: 'home'
      +  condition:
      +    # Prefix the first line of each condition configuration
      +    # with a '-'' to enter multiple
      +    - platform: state
      +      entity_id: group.all_devices
      +      state: 'home'
      +    - platform: time
      +      after: '16:00:00'
      +      before: '23:00:00'
      +  action:
      +    service: homeassistant.turn_on
      +    entity_id: group.living_room
       
      +# Turn off lights when everybody leaves the house
      +- alias: 'Rule 2 - Away Mode'
      +  trigger:
      +    platform: state
      +    entity_id: group.all_devices
      +    state: 'not_home'
      +  action:
      +    service: light.turn_off
      +    entity_id: group.all_lights
      +
      +# Notify when Paulus leaves the house in the evening
      +- alias: 'Leave Home notification'
      +  trigger:
      +    platform: zone
      +    event: leave
      +    zone: zone.home
      +    entity_id: device_tracker.paulus
      +  condition:
      +    platform: time
      +    after: '20:00'
      +  action:
      +    service: notify.notify
      +    data:
      +      message: 'Paulus left the house'
      +
      • Jump to conditions
      • @@ -237,87 +182,54 @@ and call the action.

        Triggers when an event is being processed. Events are the raw building blocks of Home Assistant. You can match events on just the event name or also require specific event data to be present.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  trigger:
        -    platform: event
        -    event_type: MY_CUSTOM_EVENT
        -    # optional
        -    event_data:
        -      mood: happy
        -
        - +
        automation:
        +  trigger:
        +    platform: event
        +    event_type: MY_CUSTOM_EVENT
        +    # optional
        +    event_data:
        +      mood: happy
        +

        MQTT trigger

        Triggers when a specific message is received on given topic. Optionally can match on the payload being sent over the topic.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        automation:
        -  trigger:
        -    platform: mqtt
        -    topic: living_room/switch/ac
        -    # Optional
        -    payload: 'on'
        -
        - +
        automation:
        +  trigger:
        +    platform: mqtt
        +    topic: living_room/switch/ac
        +    # Optional
        +    payload: 'on'
        +

        Numeric state trigger

        On state change of a specified entity, attempts to parse the state as a number and triggers if value is above and/or below a threshold.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  trigger:
        -    platform: numeric_state
        -    entity_id: sensor.temperature
        -    # At least one of the following required
        -    above: 17
        -    below: 25
        -
        - +
        automation:
        +  trigger:
        +    platform: numeric_state
        +    entity_id: sensor.temperature
        +    # At least one of the following required
        +    above: 17
        +    below: 25
        +

        State trigger

        Triggers when the state of an entity changes. If only entity_id given will match all state changes.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  trigger:
        -    platform: state
        -    entity_id: device_tracker.paulus
        -    # Optional
        -    from: 'not_home'
        -    to: 'home'
        -
        - - - +
        automation:
        +  trigger:
        +    platform: state
        +    entity_id: device_tracker.paulus
        +    # Optional
        +    from: 'not_home'
        +    to: 'home'
        +

        Use quotes around your values for from and to to avoid the YAML parser @@ -330,22 +242,14 @@ is above and/or below a threshold.

        Trigger when the sun is setting or rising. An optional time offset can be given to have it trigger for example 45 minutes before sunset, when dusk is setting in.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  trigger:
        -    platform: sun
        -    # Possible values: sunset, sunrise
        -    event: sunset
        -    # Optional time offset. This example is 45 minutes.
        -    offset: '-00:45:00'
        -
        - +
        automation:
        +  trigger:
        +    platform: sun
        +    # Possible values: sunset, sunrise
        +    event: sunset
        +    # Optional time offset. This example is 45 minutes.
        +    offset: '-00:45:00'
        +

        Time trigger

        @@ -354,34 +258,20 @@ point in time each day. Alternatively, you can also match if the hour, minute or time has a specific value. For example, by only setting minutes in the config to 5 it will trigger every hour when it is 5 minutes past whole. You cannot use after together with hour, minute or second.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -
        automation:
        -  trigger:
        -    platform: time
        -    # All following are optional.
        -    # When 'after' is used, you cannot also match on hour, minute, seconds.
        -    # Military time format.
        -    # after: '15:32:00'
        -    hours: 0
        -    minutes: 5
        -    seconds: 0
        -    weekday:
        -      - sat
        -      - sun
        -
        - +
        automation:
        +  trigger:
        +    platform: time
        +    # All following are optional.
        +    # When 'after' is used, you cannot also match on hour, minute, seconds.
        +    # Military time format.
        +    # after: '15:32:00'
        +    hours: 0
        +    minutes: 5
        +    seconds: 0
        +    weekday:
        +      - sat
        +      - sun
        +

        You can use weekday to limit the trigger times to speific days as well (also available in conditions). Valid values for weekday are (sun, mon, tue, wed, thu, fri & sat)

        @@ -394,22 +284,14 @@ Valid values for weekday are (sun, mon, < you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the OwnTracks platform.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  trigger:
        -    platform: zone
        -    entity_id: device_tracker.paulus
        -    zone: zone.home
        -    # Event is either enter or leave
        -    event: enter
        -
        - +
        automation:
        +  trigger:
        +    platform: zone
        +    entity_id: device_tracker.paulus
        +    zone: zone.home
        +    # Event is either enter or leave
        +    event: enter
        +

        Conditions

        @@ -421,91 +303,65 @@ or off.

        An automation rule can have mulitiple triggers. By default the action will only fire if all conditions pass. An optional key condition_type: 'or' can be set on the automation rule to fire action if any -condition matches.

        - -
        1
        -2
        -
        automation:
        -  condition_type: or
        -
        +condition matches. In the example below, the automation would trigger if the time is before 05:00 OR after 20:00.

        +
        automation:
        +  condition_type: or
        +  condition:
        +   - platform: time
        +     before: '05:00'
        +   - platform: time
        +     after: '20:00'
        +

        If your triggers and conditions are exactly the same, you can use a shortcut to specify conditions. -In this case, triggers that are not valid conditions will be ignored.

        - -
        1
        -2
        -
        automation:
        -  condition: use_trigger_values
        -
        - +In this case, triggers that are not valid conditions will be ignored. +yaml +automation: + condition: use_trigger_values +

        Numeric state condition

        Attempts to parse the state of specified entity as a number and triggers if value is above and/or below a threshold.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        automation:
        -  condition:
        -    platform: numeric_state
        -    entity_id: sensor.temperature
        -    # At least one of the following required
        -    above: 17
        -    below: 25
        -
        - +
        automation:
        +  condition:
        +    platform: numeric_state
        +    entity_id: sensor.temperature
        +    # At least one of the following required
        +    above: 17
        +    below: 25
        +

        State condition

        Tests if an entity is a specified state.

        -
        1
        -2
        -3
        -4
        -5
        -
        automation:
        -  condition:
        -    platform: state
        -    entity_id: device_tracker.paulus
        -    state: not_home
        -
        - +
        automation:
        +  condition:
        +    platform: state
        +    entity_id: device_tracker.paulus
        +    state: not_home
        +

        Time condition

        The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -
        automation:
        -  condition:
        -    platform: time
        -    # At least one of the following is required.
        -    after: '15:00:00'
        -    before: '23:00:00'
        -    weekday:
        -      - mon
        -      - wed
        -      - fri
        -
        - +
        automation:
        +  condition:
        +    platform: time
        +    # At least one of the following is required.
        +    after: '15:00:00'
        +    before: '23:00:00'
        +    weekday:
        +      - mon
        +      - wed
        +      - fri
        +

        Valid values for weekday are (sun, mon, tue, wed, thu, fri & sat)

        @@ -515,63 +371,37 @@ certain day of the week

        you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the OwnTracks platform.

        -
        1
        -2
        -3
        -4
        -5
        -
        automation:
        -  condition:
        -    platform: zone
        -    entity_id: device_tracker.paulus
        -    zone: zone.home
        -
        - +
        automation:
        +  condition:
        +    platform: zone
        +    entity_id: device_tracker.paulus
        +    zone: zone.home
        +

        Actions

        When an automation rule fires, it calls a service. For this service you can specify an entity id it should apply to and optional service parameters (to specify for example the brightness).

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -
        automation:
        -  # Change the light in the kitchen and living room to 150 brightness and color red.
        -  action:
        -    service: homeassistant.turn_on
        -    entity_id:
        -      - light.kitchen
        -      - light.living_room
        -    data:
        -      brightness: 150
        -      rgb_color: [255, 0, 0]
        -
        - - - - -
        1
        -2
        -3
        -4
        -5
        -6
        -
        automation:
        -  # Notify me on my mobile phone of an event
        -  action:
        -    service: notify.notify
        -    data:
        -      message: Something just happened, better take a look!
        -
        +
        automation:
        +  # Change the light in the kitchen and living room to 150 brightness and color red.
        +  action:
        +    service: homeassistant.turn_on
        +    entity_id:
        +      - light.kitchen
        +      - light.living_room
        +    data:
        +      brightness: 150
        +      rgb_color: [255, 0, 0]
        +
        +
        automation:
        +  # Notify me on my mobile phone of an event
        +  action:
        +    service: notify.notify
        +    data:
        +      message: Something just happened, better take a look!
        +

        If you want to specify multiple services to be called or include a delay, have a look at the script component. If you want to describe how certain entities should look, @@ -582,29 +412,2145 @@ check out the scene component.

        You can verify that your automation rules are being initialized correctly by watching both the realtime logs and also the logbook. The realtime logs will show the rules being initialized (once for each trigger):

        -
        1
        -2
        -3
        -4
        -
        INFO [homeassistant.components.automation] Initialized rule Rainy Day
        -INFO [homeassistant.components.automation] Initialized rule Rainy Day
        -INFO [homeassistant.components.automation] Initialized rule Rainy Day
        -INFO [homeassistant.components.automation] Initialized rule Rain is over
        -
        - +
        INFO [homeassistant.components.automation] Initialized rule Rainy Day
        +INFO [homeassistant.components.automation] Initialized rule Rainy Day
        +INFO [homeassistant.components.automation] Initialized rule Rainy Day
        +INFO [homeassistant.components.automation] Initialized rule Rain is over
        +

        The Logbook component will show a line entry when an automation is triggered. You can look at the previous entry to determine which trigger in the rule triggered the event.

        Logbook example

        -
      + + @@ -640,5 +2586,10 @@ previous entry to determine which trigger in the rule triggered the event.

      + + + + + \ No newline at end of file diff --git a/components/browser.html b/components/browser.html index a16cb3041f..9d1493cc35 100644 --- a/components/browser.html +++ b/components/browser.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,24 +97,19 @@
      - -

      Browser


      - -

      -The browser component provides a service to open urls in the default browser on the host machine.

      +

      The browser component provides a service to open urls in the default browser on the host machine.

      To load this component, add the following lines to your configuration.yaml:

      -
      1
      -
      browser:
      - +
      browser:
      +

      Service browser/browse_url

      @@ -136,13 +131,2134 @@ The browser component provides a service to open urls in the default browser on -
      + + @@ -178,5 +2294,10 @@ The browser component provides a service to open urls in the default browser on + + + + + \ No newline at end of file diff --git a/components/camera.foscam.html b/components/camera.foscam.html index c99cc6807e..548a582df1 100644 --- a/components/camera.foscam.html +++ b/components/camera.foscam.html @@ -9,7 +9,7 @@ - Foscam IP camera support - Home Assistant + Foscam IP camera - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,39 +97,26 @@
      - -

      - Foscam IP Camera Support + Foscam IP camera


      - -

      -The foscam platform allows you to watch the live stream of your Foscam IP camera in Home Assistant.

      +

      The foscam platform allows you to watch the live stream of your Foscam IP camera in Home Assistant.

      To enable your Foscam IP camera in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -camera:
      -  platform: foscam
      -  ip: 192.168.0.123
      -  name: Door Camera
      -  port: 88
      -  username: USERNAME
      -  password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +camera:
      +  platform: foscam
      +  ip: 192.168.0.123
      +  name: Door Camera
      +  port: 88
      +  username: USERNAME
      +  password: PASSWORD
      +

      Configuration variables:

      @@ -142,13 +129,1489 @@ The foscam platform allows you to watch the live stream of your +
      + + + +
      +
      + + + +
      + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Category Camera

      +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Foscam IP camera + +
      • + + + +
      • + + Generic IP Camera + +
      • + + + + + + + + + + + + + +
      • + + Hikvision camera + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + ManyThing + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + + @@ -184,5 +1647,10 @@ The foscam platform allows you to watch the live stream of your Developers
        @@ -97,40 +97,32 @@
        - -

        Generic IP Camera


        - -

        - -

        This component allows you to integrate any IP camera into Home Assistant. It supports fetching images from a url with optional HTTP authentication.

        +

        This component allows you to integrate any IP camera into Home Assistant. It supports fetching images from a url with optional HTTP authentication.

        Home Assistant will serve the images via its server, making it possible to view your IP camera’s while outside of your network.

        +

        As part of the basic support the following features will be provided: +- MJPEG video streaming +- Saving a snapshot +- Recording(JPEG frame capture)

        +

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        # Example configuration.yaml entry
        -camera:
        -  platform: generic
        -  still_image_url: http://194.218.96.92/jpg/image.jpg
        -  name: my sample camera
        -  username: USERNAME
        -  password: PASSWORD
        -
        - +
        # Example configuration.yaml entry
        +camera:
        +  platform: generic
        +  still_image_url: http://194.218.96.92/jpg/image.jpg
        +  name: my sample camera
        +  username: USERNAME
        +  password: PASSWORD
        +

        Configuration variables:

        @@ -142,13 +134,1487 @@
      -
      + + @@ -184,5 +1650,10 @@ + + + + + \ No newline at end of file diff --git a/components/configurator.html b/components/configurator.html index 7f2ae48b72..399dbd400e 100644 --- a/components/configurator.html +++ b/components/configurator.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,34 +97,2159 @@
      - -

      Configurator


      -

      This component is intended for developers.

      -

      The configurator component allows components to request information from the user. It is currently implemented as the minimum viable product: it supports showing a text, image and button to the user. It will trigger a callback when the button is pressed.

      +

      The configurator component allows components to request information from the user. It is currently implemented as the minimum viable product:

      -

      The Hue component in the demo is implemented using the configurator. See the source of the demo component for a simple example.

      +
        +
      • It supports showing a text, image and button to the user
      • +
      • Input fields can be defined with a description, and optional type
      • +
      • It will trigger a callback when the button is pressed
      • +
      + + +

      The Hue component in the demo and Plex are implemented using the configurator. See the source of the demo component for a simple example.

      See the source for more details on how to use the configurator component.

      -
      + + @@ -160,5 +2285,10 @@ This component is intended for developers. + + + + + \ No newline at end of file diff --git a/components/conversation.html b/components/conversation.html index 1f3c202c06..9d1e38b4b4 100644 --- a/components/conversation.html +++ b/components/conversation.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,24 +97,19 @@
      - -

      Conversation


      - -

      -The conversation component can process sentences into commands for Home Assistant. It is currently limited to parsing commands in the format turn <Friendly Name> <on/off>.

      +

      The conversation component can process sentences into commands for Home Assistant. It is currently limited to parsing commands in the format turn <Friendly Name> <on/off>.

      To enable the conversion option in your installation, add the following to your configuration.yaml file:

      -
      1
      -
      conversation:
      - +
      conversation:
      +

      When this component is active and you are using a supported browser voice commands will be activated in the frontend. Browse to the demo in Chrome to see it in action.

      @@ -123,13 +118,2134 @@ The conversation component can process sentences into commands for Home Assistan

      -
      + + @@ -165,5 +2281,10 @@ The conversation component can process sentences into commands for Home Assistan + + + + + \ No newline at end of file diff --git a/components/device_sun_light_trigger.html b/components/device_sun_light_trigger.html index f7f8892198..fe4f783b03 100644 --- a/components/device_sun_light_trigger.html +++ b/components/device_sun_light_trigger.html @@ -9,7 +9,7 @@ - Automating your lights - Home Assistant + Presence based lights - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,15 +97,12 @@
      - -

      - Automating Your Lights + Presence based lights


      -

      Home Assistant has a built-in component called device_sun_light_trigger to help you automate your lights. The component will:

      @@ -116,35 +113,26 @@
    -

    This component requires the components sun, device_tracker and light to be enabled.

    +

    This component requires the components sun, device_tracker and light to be enabled.

    -

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

    +

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

    -
    1
    -2
    -3
    -4
    -5
    -6
    -7
    -8
    -9
    -10
    -11
    -
    device_sun_light_trigger:
    -  # Each of these 4 options are optional.
    -
    -  # Specify a specific light/group of lights that has to be turned on
    -  light_group: group.living_room
    -  # Specify which light profile to use when turning lights on
    -  light_profile: relax
    -  # Specify which group of devices to track
    -  device_group: group.my_devices
    -  # Disable lights being turned off when everybody leaves the house
    -  disable_turn_off: 1
    +
    # Example configuration.yaml entry
    +device_sun_light_trigger:
    +  light_group: group.living_room
    +  light_profile: relax
    +  device_group: group.my_devices
    +  disable_turn_off: 1
    +
    +

    Configuration variables:

    -

    The options light_group, light_profile and disable_turn_off are optional.

    +
      +
    • light_group (Optional): Specify a specific light/group of lights that has to be turned on.
    • +
    • light_profile (Optional): Specify which light profile to use when turning lights on.
    • +
    • device_group (Optional): Specify which group of devices to track.
    • +
    • disable_turn_off (Optional): Disable lights being turned off when everybody leaves the house.
    • +
    @@ -153,6 +141,2128 @@ + + @@ -188,5 +2298,10 @@ + + + + + \ No newline at end of file diff --git a/components/device_tracker.actiontec.html b/components/device_tracker.actiontec.html index 6234b33120..70b81a0144 100644 --- a/components/device_tracker.actiontec.html +++ b/components/device_tracker.actiontec.html @@ -9,7 +9,7 @@ - Actiontec support - Home Assistant + Actiontec - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Actiontec Support + Actiontec


      - -

      -This platform allows you to detect presence by looking at connected devices to an Actiontec device.

      +

      This platform allows you to detect presence by looking at connected devices to an Actiontec device.

      Supported devices (tested):

      @@ -122,24 +118,14 @@ This device tracker needs telnet to be enabled on the router.

      - - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: actiontec
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -  home_interval: MINUTES
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: actiontec
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +  home_interval: MINUTES
      +

      Configuration variables:

      @@ -153,13 +139,1555 @@ This device tracker needs telnet to be enabled on the router.

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -195,5 +1723,10 @@ This device tracker needs telnet to be enabled on the router. + + + + + \ No newline at end of file diff --git a/components/device_tracker.aruba.html b/components/device_tracker.aruba.html index 19a586884d..a395b8ea65 100644 --- a/components/device_tracker.aruba.html +++ b/components/device_tracker.aruba.html @@ -9,7 +9,7 @@ - Aruba support - Home Assistant + Aruba - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Aruba Support + Aruba


      - -

      -This platform allows you to detect presence by looking at connected devices to an Aruba Instant device.

      +

      This platform allows you to detect presence by looking at connected devices to an Aruba Instant device.

      Supported devices (tested):

      @@ -122,22 +118,13 @@ This device tracker needs telnet to be enabled on the router.

      - - -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: aruba
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: aruba
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -150,13 +137,1555 @@ This device tracker needs telnet to be enabled on the router.

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -192,5 +1721,10 @@ This device tracker needs telnet to be enabled on the router. + + + + + \ No newline at end of file diff --git a/components/device_tracker.asuswrt.html b/components/device_tracker.asuswrt.html index 4c862f75b3..142c869952 100644 --- a/components/device_tracker.asuswrt.html +++ b/components/device_tracker.asuswrt.html @@ -9,7 +9,7 @@ - ASUSWRT support - Home Assistant + ASUSWRT - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - ASUSWRT Support + ASUSWRT


      - -

      -This platform offers presence detection by looking at connected devices to a ASUSWRT based router.

      +

      This platform offers presence detection by looking at connected devices to a ASUSWRT based router.

      This device tracker needs telnet to be enabled on the router. @@ -117,20 +113,13 @@ This device tracker needs telnet to be enabled on the router.

      To use an ASUSWRT router in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: asuswrt
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: asuswrt
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -143,13 +132,1555 @@ This device tracker needs telnet to be enabled on the router.

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -185,5 +1716,10 @@ This device tracker needs telnet to be enabled on the router. + + + + + \ No newline at end of file diff --git a/components/device_tracker.ddwrt.html b/components/device_tracker.ddwrt.html index 6e36de7891..582a32cf39 100644 --- a/components/device_tracker.ddwrt.html +++ b/components/device_tracker.ddwrt.html @@ -9,7 +9,7 @@ - DD-WRT support - Home Assistant + DD-WRT - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,35 +97,24 @@
      - -

      - DD-WRT Support + DD-WRT


      - -

      -This platform offers presence detection by looking at connected devices to a DD-WRT based router.

      +

      This platform offers presence detection by looking at connected devices to a DD-WRT based router.

      To use a DD-WRRT router in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: ddwrt
      -  host: ROUTER_IP_ADDRESS
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: ddwrt
      +  host: ROUTER_IP_ADDRESS
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -138,13 +127,1555 @@ This platform offers presence detection by looking at connected devices to a See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -180,5 +1711,10 @@ This platform offers presence detection by looking at connected devices to a \ No newline at end of file diff --git a/components/device_tracker.geofancy.html b/components/device_tracker.geofancy.html new file mode 100644 index 0000000000..d46fb2e4b6 --- /dev/null +++ b/components/device_tracker.geofancy.html @@ -0,0 +1,1706 @@ + + + + + + + + + + + + Geofancy - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Geofancy +

      +
      +
      + +

      This platform allows you to detect presence using Geofancy. Geofancy allows users to track their location on iOS devices.

      + +

      To integrate Geofancy in Home Assistant, add the following section to your configuration.yaml file:

      + +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: geofancy
      +
      + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/device_tracker.html b/components/device_tracker.html index 44dd82a04c..4ca96b261e 100644 --- a/components/device_tracker.html +++ b/components/device_tracker.html @@ -9,7 +9,7 @@ - Device tracking - Home Assistant + Device Tracker - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,87 +97,1949 @@
      - -

      - Device Tracking + Device Tracker


      - -

      Home Assistant can get information from your wireless router to track which devices are connected. There are several brands of supported wireless routers:

      - - - - -

      Alternative trackers:

      - - +

      Home Assistant can get information from your wireless router to track which devices are connected. Please check the sidebar for a list of brands of supported wireless routers.

      +

      There are also trackers available which uses different technologies like MQTT or nmap to scan the network for devices

      To get started add the following lines to your configuration.yaml (example for Netgear):

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -
      # Example configuration.yaml entry for Netgear device
      -device_tracker:
      -  platform: netgear
      -  host: 192.168.1.1
      -  username: admin
      -  password: YOUR_PASSWORD
      -
      -  # Optional configuration
      -
      -  # If new discovered devices are tracked by default (default: yes)
      -  track_new_devices: yes
      -  # Seconds between each scan for new devices (default: 12)
      -  interval_seconds: 12
      -  # Seconds to wait till marking someone as not home after not being seen
      -  # (default: 180)
      -  consider_home: 180
      -
      +
      # Example configuration.yaml entry for Netgear device
      +device_tracker:
      +  platform: netgear
      +  host: 192.168.1.1
      +  username: admin
      +  password: YOUR_PASSWORD
       
      +  # Optional configuration
      +
      +  # If new discovered devices are tracked by default (default: yes)
      +  track_new_devices: yes
      +  # Seconds between each scan for new devices (default: 12)
      +  interval_seconds: 12
      +  # Seconds to wait till marking someone as not home after not being seen
      +  # (default: 180)
      +  consider_home: 180
      +

      Once tracking, a file will be created in your config dir called known_devices.yaml. Edit this file to adjust which devices have to be tracked. Here you can also setup a url for each device to be used as the entity picture and set whether the device will be show in the UI when in away state.

      -
      + + @@ -213,5 +2075,10 @@ + + + + + \ No newline at end of file diff --git a/components/device_tracker.luci.html b/components/device_tracker.luci.html index 86e902a66c..f617f82218 100644 --- a/components/device_tracker.luci.html +++ b/components/device_tracker.luci.html @@ -9,7 +9,7 @@ - OpenWRT support - Home Assistant + OpenWRT (luci) - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,29 @@
      - -

      - OpenWRT Support + OpenWRT (luci)


      - -

      -Before this scanner can be used you have to install the luci RPC package on OpenWRT: opkg install luci-mod-rpc.

      +

      This is one of the two ways we support OpenWRT. If you encounter problems, try ubus.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: luci
      -  host: ROUTER_IP_ADDRESS
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      +

      This is a presence detection scanner for OpenWRT using luci.

      +

      Before this scanner can be used you have to install the luci RPC package on OpenWRT:

      + +
      opkg install luci-mod-rpc
      +
      + +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: luci
      +  host: ROUTER_IP_ADDRESS
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -136,13 +132,1555 @@ Before this scanner can be used you have to install the luci RPC package on Open

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -178,5 +1716,10 @@ Before this scanner can be used you have to install the luci RPC package on Open + + + + + \ No newline at end of file diff --git a/components/device_tracker.mqtt.html b/components/device_tracker.mqtt.html index 460f9dd530..5051ac34ef 100644 --- a/components/device_tracker.mqtt.html +++ b/components/device_tracker.mqtt.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,36 +97,24 @@
      - -

      - MQTT Device Tracker + MQTT device tracker


      - -

      -This platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this +

      This platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: mqtt
      -  qos: 1
      -  devices:
      -    paulus_oneplus: /location/paulus
      -    annetherese_n4: /location/annetherese
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: mqtt
      +  qos: 1
      +  devices:
      +    paulus_oneplus: /location/paulus
      +    annetherese_n4: /location/annetherese
      +

      Configuration variables:

      @@ -136,13 +124,1583 @@ platform, you specify a unique topic for each device.

    - + + @@ -178,5 +1736,10 @@ platform, you specify a unique topic for each device.

    + + + + + \ No newline at end of file diff --git a/components/device_tracker.netgear.html b/components/device_tracker.netgear.html index e64e0d8ace..92f8314321 100644 --- a/components/device_tracker.netgear.html +++ b/components/device_tracker.netgear.html @@ -9,7 +9,7 @@ - Netgear support - Home Assistant + Netgear - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,22 @@
      - -

      - Netgear Support + Netgear


      - -

      -This platform allows you to detect presence by looking at connected devices to a Netgear device.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: netgear
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      +

      This platform allows you to detect presence by looking at connected devices to a Netgear device.

      +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: netgear
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -136,13 +125,1555 @@ This platform allows you to detect presence by looking at connected devices to a

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -178,5 +1709,10 @@ This platform allows you to detect presence by looking at connected devices to a + + + + + \ No newline at end of file diff --git a/components/device_tracker.nmap_scanner.html b/components/device_tracker.nmap_scanner.html index 2f0e1dd614..2bab33648a 100644 --- a/components/device_tracker.nmap_scanner.html +++ b/components/device_tracker.nmap_scanner.html @@ -9,7 +9,7 @@ - Nmap support - Home Assistant + Nmap - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,36 +97,26 @@
      - -

      - Nmap Support + Nmap


      - -

      -As an alternative to the router-based device tracking, it is possible to directly scan the network +

      As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (192.168.1.1/24) and the range notation (192.168.1.1-255).

      If you’re on Debian or Ubuntu, you might have to install the packages for arp and nmap. Do so by running apt-get install net-tools nmap.

      -
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: nmap_tracker
      -  hosts: 192.168.1.1/24
      -  home_interval: 10
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: nmap_tracker
      +  hosts: 192.168.1.1/24
      +  home_interval: 10
      +

      home_interval is an optional value set in minutes. This will be the number of minutes nmap will not scan this device, assuming it is home, in order to preserve the device battery.

      @@ -134,13 +124,1553 @@ scan this device, assuming it is home, in order to preserve the device battery.<

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -176,5 +1706,10 @@ configure the people to be tracked.

      + + + + + \ No newline at end of file diff --git a/components/device_tracker.owntracks.html b/components/device_tracker.owntracks.html index 521410e0cd..bb8288948a 100644 --- a/components/device_tracker.owntracks.html +++ b/components/device_tracker.owntracks.html @@ -9,7 +9,7 @@ - Owntracks device tracker - Home Assistant + Owntracks - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Owntracks Device Tracker + Owntracks


      - -

      -This platform allows you to detect presence using Owntracks. OwnTracks allows +

      This platform allows you to detect presence using Owntracks. OwnTracks allows users to track their location on Android and iOS phones and publish it to an MQTT broker. This platform will connect to the broker and monitor for new locations.

      @@ -117,15 +113,12 @@ together with the zone component.

      To integrate Owntracks in Home Assistant, add the following section to your configuration.yaml file:

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: owntracks
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: owntracks
      +
      +

      There is no further configuration needed for tracking Owntracks devices.

      @@ -133,6 +126,1549 @@ together with the zone component.

      + + @@ -168,5 +1704,10 @@ together with the zone component.

      + + + + + \ No newline at end of file diff --git a/components/device_tracker.snmp.html b/components/device_tracker.snmp.html index 8a3aee3877..96aeff759c 100644 --- a/components/device_tracker.snmp.html +++ b/components/device_tracker.snmp.html @@ -9,7 +9,7 @@ - Generic SNMP support - Home Assistant + SNMP - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Generic SNMP Support + SNMP


      - -

      -Most wifi-accesspoints (WAP) and wifi-routers (WRT) support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of insances and metrics, like network interfaces, disks, and wifi registrations.

      +

      Most wifi-accesspoints (WAP) and wifi-routers (WRT) support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of insances and metrics, like network interfaces, disks, and wifi registrations.

      This device tracker needs SNMP to be enabled on the router. @@ -121,20 +117,13 @@ This device tracker needs SNMP to be enabled on the router.

      To use the snmp platform in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: snmp
      -  hosts: 192.168.1.1
      -  community: public
      -  baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: snmp
      +  hosts: 192.168.1.1
      +  community: public
      +  baseoid: 1.3.6.1.4.1.14988.1.1.1.2.1.1
      +

      Configuration variables:

      @@ -147,13 +136,1555 @@ This device tracker needs SNMP to be enabled on the router.

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -189,5 +1720,10 @@ This device tracker needs SNMP to be enabled on the router. + + + + + \ No newline at end of file diff --git a/components/device_tracker.thomson.html b/components/device_tracker.thomson.html index f43d58ab65..ba716d9808 100644 --- a/components/device_tracker.thomson.html +++ b/components/device_tracker.thomson.html @@ -9,7 +9,7 @@ - Thomson support - Home Assistant + Thomson - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,35 +97,24 @@
      - -

      - Thomson Support + Thomson


      - -

      -Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor.

      +

      Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor.

      This platform allows you to detect presence by looking at connected devices to a Thomson device.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: thomson
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: thomson
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -138,13 +127,1555 @@ Thomson produced networking equipment (under the brand name SpeedTouch) till 201

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -180,5 +1711,10 @@ Thomson produced networking equipment (under the brand name SpeedTouch) till 201 + + + + + \ No newline at end of file diff --git a/components/device_tracker.tomato.html b/components/device_tracker.tomato.html index 389752f7b4..031d8b4b3c 100644 --- a/components/device_tracker.tomato.html +++ b/components/device_tracker.tomato.html @@ -9,7 +9,7 @@ - Tomato support - Home Assistant + Tomato - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,35 +97,23 @@
      - -

      - Tomato Support + Tomato


      - -

      -Tomato requires an extra config variable called http_id. The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: tomato
      -  host: YOUR_ROUTER_IP_ADDRESS
      -  username: YOUR_ADMIN_USERNAME
      -  password:  YOUR_ADMIN_PASSWORD
      -  http_id: YOUR_HTTP_ID
      -
      +

      Tomato requires an extra config variable called http_id. The value can be obtained by logging in to the Tomato admin interface and search for http_id in the page source code.

      +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: tomato
      +  host: YOUR_ROUTER_IP_ADDRESS
      +  username: YOUR_ADMIN_USERNAME
      +  password:  YOUR_ADMIN_PASSWORD
      +  http_id: YOUR_HTTP_ID
      +

      Configuration variables:

      @@ -139,13 +127,1553 @@ Tomato requires an extra config variable called http_id. The value

      See the device tracker component page for instructions how to configure the people to be tracked.

      -
      + + @@ -181,5 +1709,10 @@ Tomato requires an extra config variable called http_id. The value + + + + + \ No newline at end of file diff --git a/components/device_tracker.tplink.html b/components/device_tracker.tplink.html index 924d6b5540..7827f33533 100644 --- a/components/device_tracker.tplink.html +++ b/components/device_tracker.tplink.html @@ -9,7 +9,7 @@ - TP-Link support - Home Assistant + TP-Link - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,22 @@
      - -

      - TP-Link Support + TP-Link


      - -

      -This platform allows you to detect presence by looking at connected devices to a TP-Link device. This includes the ArcherC9 line.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -device_tracker:
      -  platform: tplink
      -  host: YOUR_ROUTER_IP
      -  username: YOUR_ADMIN_USERNAME
      -  password: YOUR_ADMIN_PASSWORD
      -
      +

      This platform allows you to detect presence by looking at connected devices to a TP-Link device. This includes the ArcherC9 line.

      +
      # Example configuration.yaml entry
      +device_tracker:
      +  platform: tplink
      +  host: YOUR_ROUTER_IP
      +  username: YOUR_ADMIN_USERNAME
      +  password: YOUR_ADMIN_PASSWORD
      +

      Configuration variables:

      @@ -134,8 +123,19 @@ This platform allows you to detect presence by looking at connected devices to a
    -

    See the device tracker component page for instructions how to configure the people to be tracked.

    +

    For Archer C9 models running firmware version 150811 or later please use the encrypted password you can retrieve like this:

    +
      +
    1. Go to the login page of your router. (default: 192.168.0.1)
    2. +
    3. Type in the password you use to login into the passsword field.
    4. +
    5. Click somewhere else on the page so that the password field is not selected anymore.
    6. +
    7. Open the JavaScript console of your browser (usually by pressing F12 and then clicking on “Console”).
    8. +
    9. Type document.getElementById("login-password").value;.
    10. +
    11. Copy the returned value to your Home Assistant configuration as password.
    12. +
    + + +

    See the device tracker component page for instructions how to configure the people to be tracked.

    @@ -143,6 +143,1549 @@ This platform allows you to detect presence by looking at connected devices to a + + @@ -178,5 +1721,10 @@ This platform allows you to detect presence by looking at connected devices to a + + + + + \ No newline at end of file diff --git a/components/device_tracker.ubus.html b/components/device_tracker.ubus.html new file mode 100644 index 0000000000..17a4662299 --- /dev/null +++ b/components/device_tracker.ubus.html @@ -0,0 +1,1743 @@ + + + + + + + + + + + + OpenWRT (ubus) - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + OpenWRT (ubus) +

    +
    +
    + +

    This is one of the two ways we support OpenWRT. If you encounter problems, try luci.

    + +

    This is a presence detection scanner for OpenWRT using ubus.

    + +

    Before this scanner can be used you have to install the ubus RPC package on OpenWRT:

    + +
    opkg install rpcd-mod-file
    +
    + +

    And create a read-only user to be used by setting up the ACL file /usr/share/rpcd/acl.d/user.json.

    + +
    {
    +  "user": {
    +    "description": "Read only user access role",
    +    "read": {
    +      "ubus": {
    +        "*": [ "*" ]
    +      },
    +      "uci": [ "*" ]
    +    },
    +    "write": {}
    +  }
    +}
    +
    + +

    After this is done, configure Home Assistant as follows:

    + +
    # Example configuration.yaml entry
    +device_tracker:
    +  platform: ubus
    +  host: ROUTER_IP_ADDRESS
    +  username: YOUR_ADMIN_USERNAME
    +  password: YOUR_ADMIN_PASSWORD
    +
    + +

    Configuration variables:

    + +
      +
    • host (Required): The IP address of your router, e.g. 192.168.1.1.
    • +
    • username (Required): The username of an user with administrative privileges, usually admin.
    • +
    • password (Required): The password for your given admin account.
    • +
    + + +

    See the device tracker component page for instructions how to configure the people to be tracked.

    + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/discovery.html b/components/discovery.html index b6ec97228b..57c8c0d97b 100644 --- a/components/discovery.html +++ b/components/discovery.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -97,29 +97,23 @@
      - -

      Downloader


      - -

      -The downloader component provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist.

      +

      The downloader component provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist.

      To enable it, add the following lines to your configuration.yaml:

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -downloader:
      -  download_dir: downloads
      -
      +
      # Example configuration.yaml entry
      +downloader:
      +  download_dir: downloads
      +
      +

      If the path is not absolute, it’s assumed to be relative to the HASS configuration directory.

      Service downloader/download_file

      @@ -143,13 +137,2134 @@ The downloader component provides a service to download files. It w -
      + + @@ -185,5 +2300,10 @@ The downloader component provides a service to download files. It w + + + + + \ No newline at end of file diff --git a/components/group.html b/components/group.html index 4a70beab28..c726ef856c 100644 --- a/components/group.html +++ b/components/group.html @@ -9,7 +9,7 @@ - Group support - Home Assistant + Group - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,43 +97,27 @@
      - -

      - Group Support + Group


      -

      Groups allow the user to combine multiple entities into 1. If all entities are switches or lights they can be controlled as one.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -
      # Example configuration.yaml entry
      -# A comma seperated list of states that have to be tracked as a single group
      -# Grouped states should share the same type of states (ON/OFF or HOME/NOT_HOME)
      -group:
      -  living_room:
      -    - light.Bowl
      -    - light.Ceiling
      -    - light.TV_back_light
      -  children:
      -   - device_tracker.child_1
      -   - device_tracker.child_2
      -
      - - +
      # Example configuration.yaml entry
      +# A comma seperated list of states that have to be tracked as a single group
      +# Grouped states should share the same type of states (ON/OFF or HOME/NOT_HOME)
      +group:
      +  living_room:
      +    - light.Bowl
      +    - light.Ceiling
      +    - light.TV_back_light
      +  children:
      +   - device_tracker.child_1
      +   - device_tracker.child_2
      +
      @@ -141,6 +125,2110 @@ + + @@ -176,5 +2264,10 @@ + + + + + \ No newline at end of file diff --git a/components/history.html b/components/history.html index a5cceb05fd..5501337f35 100644 --- a/components/history.html +++ b/components/history.html @@ -9,7 +9,7 @@ - History support - Home Assistant + History - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,29 +97,20 @@
      - -

      - History Support + History


      - -

      -This component will track everything that is going on within Home Assistant and allows the user to browse through it.

      +

      This component will track everything that is going on within Home Assistant and allows the user to browse through it.

      To enable the history option in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -
      # Example configuration.yaml entry
      -history:
      -
      - - - +
      # Example configuration.yaml entry
      +history:
      +

      @@ -135,7 +126,7 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D

      -

      Implementation details

      +

      Implementation details

      The history is stored in a SQLite databse home-assistant.db within your config directory.

      @@ -158,17 +149,13 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D

      When the history component queries the states table it only selects states where the state has changed: WHERE last_changed=last_updated

      -

      On dates

      +

      On dates

      SQLite databases do not support native dates. That’s why all the dates are saved in seconds since the UNIX epoch. Convert them manually using this site or in Python:

      -
      1
      -2
      -
      from datetime import datetime
      -datetime.fromtimestamp(1422830502)
      -
      - - +
      from datetime import datetime
      +datetime.fromtimestamp(1422830502)
      +
      @@ -176,6 +163,2104 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D + + @@ -211,5 +2296,10 @@ Events are saved in a local database. Google Graphs is used to draw the graph. D + + + + + \ No newline at end of file diff --git a/components/ifttt.html b/components/ifttt.html index 3021b199f1..684d3cf1ec 100644 --- a/components/ifttt.html +++ b/components/ifttt.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,30 +97,22 @@
      - -

      IFTTT


      - -

      -IFTTT is a web service that allows users to create chains of simple conditional +

      IFTTT is a web service that allows users to create chains of simple conditional statements, so called “recipes”. With the ifttt component you can trigger recipes through the “maker” channel. See the announcement blog post for examples how to use it.

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -ifttt:
      -  key: xxxxx-x-xxxxxxxxxxxxx
      -
      - +
      # Example configuration.yaml entry
      +ifttt:
      +  key: xxxxx-x-xxxxxxxxxxxxx
      +

      Key is your API key which can be obtained by viewing the properties of the Maker Channel.

      @@ -167,7 +159,7 @@ After restarting the server, be sure to watch the console for any logging errors

      -When your screen looks like this, click the ‘call service’ button. +When your screen looks like this, click the 'call service' button.

      @@ -211,13 +203,1492 @@ Assistant. If your ISP is giving you a new IP address from time to time, conside -
      + + @@ -253,5 +1724,10 @@ Assistant. If your ISP is giving you a new IP address from time to time, conside + + + + + \ No newline at end of file diff --git a/components/ifttt.manything.html b/components/ifttt.manything.html index 35ed76cf13..87e9e2e6be 100644 --- a/components/ifttt.manything.html +++ b/components/ifttt.manything.html @@ -9,7 +9,7 @@ - IFTTT - ManyThing Channel - Home Assistant + ManyThing - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - IFTTT - ManyThing Channel + ManyThing


      - -

      -Manything is a smart app that turns your iPhone, iPod, or iPad into a wifi +

      Manything is a smart app that turns your iPhone, iPod, or iPad into a wifi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more.

      To get manything support, HA will use IFTTT’s Maker Channel and the ManyThing Channel. @@ -116,78 +112,42 @@ Use the IFTTT Setup instructions to activat

      After setting up IFTTT, Maker Channel and ManyThing Channel, you can use the following examples to configure Home Assistant.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -22
      -23
      -24
      -25
      -26
      -27
      -28
      -29
      -30
      -31
      -32
      -33
      -34
      -35
      -
      # Example configuration.yaml entry
      -automation:
      -- alias: 'ManyThing Recording ON'
      -  # This calls an IFTTT recipe to turn on recording of the ManyThing Camera
      -  # if we leave the house during the day.
      -  trigger:
      -   - platform: state
      -     entity_id: group.all_devices
      -     state: 'not_home'
      -
      -  condition:
      -   - platform: state
      -     entity_id: sun.sun
      -     state: 'above_horizon'
      -
      -  action:
      -     service: ifttt.trigger
      -     data: {"event":"manything_on"}
      -
      -- alias: 'ManyThing Recording OFF'
      -  # This calls an IFTTT recipe to turn off recording of the ManyThing Camera
      -  # when we are home unless it's nighttime.
      -  trigger:
      -   - platform: state
      -     entity_id: group.all_devices
      -     state: 'home'
      -   - platform: state
      -     entity_id: sun.sun
      -     state: 'above_horizon'
      -
      -  condition: use_trigger_values
      -
      -  action:
      -     service: ifttt.trigger
      -     data: {"event":"manything_off"}
      -
      +
      # Example configuration.yaml entry
      +automation:
      +- alias: 'ManyThing Recording ON'
      +  # This calls an IFTTT recipe to turn on recording of the ManyThing Camera
      +  # if we leave the house during the day.
      +  trigger:
      +   - platform: state
      +     entity_id: group.all_devices
      +     state: 'not_home'
       
      +  condition:
      +   - platform: state
      +     entity_id: sun.sun
      +     state: 'above_horizon'
      +
      +  action:
      +     service: ifttt.trigger
      +     data: {"event":"manything_on"}
      +
      +- alias: 'ManyThing Recording OFF'
      +  # This calls an IFTTT recipe to turn off recording of the ManyThing Camera
      +  # when we are home unless it's nighttime.
      +  trigger:
      +   - platform: state
      +     entity_id: group.all_devices
      +     state: 'home'
      +   - platform: state
      +     entity_id: sun.sun
      +     state: 'above_horizon'
      +
      +  condition: use_trigger_values
      +
      +  action:
      +     service: ifttt.trigger
      +     data: {"event":"manything_off"}
      +

      Setting up a recipe

      @@ -226,13 +186,1489 @@ For ManyThing support, you need to set up an on and off -
      + + @@ -268,5 +1704,10 @@ For ManyThing support, you need to set up an on and off \ No newline at end of file diff --git a/components/index.html b/components/index.html index 2025c19072..b1773275ea 100644 --- a/components/index.html +++ b/components/index.html @@ -32,7 +32,7 @@ - +
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -97,48 +97,36 @@
      - -

      ISY994 Controller


      - -

      Basic Configuration

      - -

      The ISY994 is a home automation controller that is capable of controlling +

      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 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.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -isy994:
      -  host: ISY_ADDRESS
      -  username: ISY_USERNAME
      -  password: ISY_PASSWORD
      -  sensor_string: SENSOR_STRING
      -  hidden_string: HIDDEN_STRING
      -  tls: TLS_VERSION
      -
      - +
      # Example configuration.yaml entry
      +isy994:
      +  host: ISY_ADDRESS
      +  username: ISY_USERNAME
      +  password: ISY_PASSWORD
      +  sensor_string: SENSOR_STRING
      +  hidden_string: HIDDEN_STRING
      +  tls: TLS_VERSION
      +

      Configuration variables:

      @@ -158,7 +146,7 @@ ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it

      Once the ISY controller is configured, it will automatically import any lights, switches, and sensors it can locate.

      -

      Creating Custom Switches

      +

      Creating Custom Switches

      Using the Programs tab in the controller’s Administrative Console, custom switches can be created that will appear natively inside of Home Assistant. @@ -199,7 +187,7 @@ ELSE clause gives instructions for turning the switch off. Below is an example.<

      The example program above shows how to control a legacy X10 device from Home Assistant using an ISY controller.

      -

      Creating Custom Sensors

      +

      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 @@ -231,13 +219,2154 @@ example is below.

      -
      + + @@ -273,5 +2402,10 @@ example is below.

      + + + + + \ No newline at end of file diff --git a/components/keyboard.html b/components/keyboard.html index 6e82f31a03..fca109aaae 100644 --- a/components/keyboard.html +++ b/components/keyboard.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      Keyboard


      - -

      -The keyboard component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS):

      +

      The keyboard component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS):

      • keyboard/volume_up
      • @@ -122,17 +118,15 @@ The keyboard component simulates key presses on the host machine. I

        To load this component, add the following lines to your configuration.yaml:

        -
        1
        -
        keyboard:
        - +
        keyboard:
        +

        Dependencies

        You may need to install platform-specific dependencies for PyUserInput in order to use the keyboard component. In most cases this can be done by running:

        -
        1
        -
        pip3 install [package name]
        - +
        pip3 install [package name]
        +

        Windows

        @@ -140,13 +134,2134 @@ The keyboard component simulates key presses on the host machine. I

        Similar installers (unofficial) for pyhook have been ported to python 3.4 and should help with x64 pip issues with pyhook.

        -
      + + @@ -182,5 +2297,10 @@ The keyboard component simulates key presses on the host machine. I + + + + + \ No newline at end of file diff --git a/components/light.blinksticklight.html b/components/light.blinksticklight.html index 2971e7fdc0..514c8a08c6 100644 --- a/components/light.blinksticklight.html +++ b/components/light.blinksticklight.html @@ -9,7 +9,7 @@ - Blinkstick support - Home Assistant + Blinkstick - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,23 @@
      - -

      - Blinkstick Support + Blinkstick


      - -

      -The blinkstick platform let you can control your Blinkstick lights from within Home Assistant.

      +

      The blinkstick platform let you can control your Blinkstick lights from within Home Assistant.

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

      -
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -light:
      -  platform: blinksticklight
      -  serial: BS000795-1.1
      -  name: Living Room
      -
      - +
      # Example configuration.yaml entry
      +light:
      +  platform: blinksticklight
      +  serial: BS000795-1.1
      +  name: Living Room
      +

      Configuration variables:

      @@ -133,13 +123,1513 @@ The blinkstick platform let you can control your +
      + + + +
      +
      + + + +
      + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Category Light

      +
        + + + + + + + + + + + + + + + + + + + + + + +
      • + + Blinkstick + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Hyperion + +
      • + + + + + + + + + + + + + + + + + + + + + +
      • + + LimitlessLED + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Philips Hue + +
      • + + + + + + + + + + + + + + + + + +
      • + + RFXtrx light + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + TellStick light + +
      • + + + + + + + + + + + + + + + + + + + + + +
      • + + Vera light + +
      • + + + + + + + + + + + +
      • + + Wink light + +
      • + + + + + + + + + + + + + + + + + + +
      +
      + +
      + + +
      + + + @@ -175,5 +1665,10 @@ The blinkstick platform let you can control your Developers
        @@ -97,15 +97,12 @@
        - -

        Lights


        -

        This component allows you to track and control various light bulbs.

        @@ -123,13 +120,9 @@

        If you want to enable the light component directly, add the following lines to your configuration.yaml:

        -
        1
        -2
        -
        light:
        -  platform: hue
        - - - +
        light:
        +  platform: hue
        +

        The light component supports multiple entries in configuration.yaml by appending a sequential number to the section: light 2:, light 3: etc. @@ -210,13 +203,1881 @@ The light component supports multiple entries in configuration.yaml -

        + + @@ -252,5 +2113,10 @@ The light component supports multiple entries in configuration.yaml + + + + + \ No newline at end of file diff --git a/components/light.hue.html b/components/light.hue.html index a42e665f55..765f903812 100644 --- a/components/light.hue.html +++ b/components/light.hue.html @@ -9,7 +9,7 @@ - Philips Hue support - Home Assistant + Philips Hue - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
      +
    • Components
    • Developers
        @@ -97,31 +97,21 @@
        - -

        - Philips Hue Support + Philips Hue


        - -

        - -

        Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the the discovery component.

        +

        Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the the discovery component.

        If you want to enable the light component directly, add the following lines to your configuration.yaml:

        -
        1
        -2
        -3
        -
        # Example configuration.yaml entry
        -light:
        -  platform: hue
        -
        - - +
        # Example configuration.yaml entry
        +light:
        +  platform: hue
        +
        @@ -129,6 +119,1507 @@ + + @@ -164,5 +1655,10 @@ + + + + + \ No newline at end of file diff --git a/components/light.hyperion.html b/components/light.hyperion.html new file mode 100644 index 0000000000..79fb527c76 --- /dev/null +++ b/components/light.hyperion.html @@ -0,0 +1,1663 @@ + + + + + + + + + + + + Hyperion - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        +
        + +
        + + +
        +
        +

        + Hyperion +

        +
        +
        + +

        This platform allows you to integrate your Hyperion into Home Assistant.

        + +
        # Example configuration.yaml entry
        +light:
        +  platform: hyperion
        +  host: 192.168.1.98
        +  # Optional
        +  port: 19444
        +
        + +
        + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/light.limitlessled.html b/components/light.limitlessled.html index e72dacadfb..5cfbc90b6b 100644 --- a/components/light.limitlessled.html +++ b/components/light.limitlessled.html @@ -9,7 +9,7 @@ - LimitlessLED support - Home Assistant + LimitlessLED - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,39 +97,26 @@
        - -

        - LimitlessLED Support + LimitlessLED


        - -

        -The limitlessled can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight or iLight.

        +

        The limitlessled can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight or iLight.

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -light:
        -  platform: limitlessled
        -  host: IP_ADDRESS
        -  group_1_name: Living Room
        -  group_2_name: Bedroom
        -  group_3_name: Office
        -  group_4_name: Kitchen
        -
        - +
        # Example configuration.yaml entry
        +light:
        +  platform: limitlessled
        +  host: IP_ADDRESS
        +  group_1_name: Living Room
        +  group_2_name: Bedroom
        +  group_3_name: Office
        +  group_4_name: Kitchen
        +

        Configuration variables:

        @@ -139,13 +126,1511 @@ The limitlessled can control your Limitle
      -
    • + + @@ -181,5 +1666,10 @@ The limitlessled can control your Limitle + + + + + \ No newline at end of file diff --git a/components/light.rfxtrx.html b/components/light.rfxtrx.html index 26c5c2f4b2..56e9a182e9 100644 --- a/components/light.rfxtrx.html +++ b/components/light.rfxtrx.html @@ -9,7 +9,7 @@ - RFXtrx light support - Home Assistant + RFXtrx light - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,36 +97,26 @@
      - -

      - RFXtrx Light Support + RFXtrx light


      -

      The rfxtrx platform support lights that communicate in the frequency range of 433.92 MHz.

      To enable RFXtrx lights in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -light:
      -  platform: rfxtrx
      -  devices:
      -    ac09c4f1: Bedroom Door
      -    ac09c4f2: Kitchen Door
      -  automatic_add: True
      -
      - +
      # Example configuration.yaml entry
      +light:
      +  platform: rfxtrx
      +  devices:
      +    living_room:
      +      name: Living Room
      +      packetid: XXXXX
      +  automatic_add: True
      +

      Configuration variables:

      @@ -136,13 +126,1534 @@
    - + + @@ -178,5 +1689,10 @@ + + + + + \ No newline at end of file diff --git a/components/light.tellstick.html b/components/light.tellstick.html new file mode 100644 index 0000000000..d01a338c70 --- /dev/null +++ b/components/light.tellstick.html @@ -0,0 +1,1687 @@ + + + + + + + + + + + + TellStick light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + TellStick light +

    +
    +
    + +

    This tellstick light platform allows you to control your TellStick dimmers.

    + +

    To use your TellStick device in your installation, add the following to your configuration.yaml file:

    + +
    # Example configuration.yaml entry
    +light:
    +  platform: tellstick
    +
    + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/light.vera.html b/components/light.vera.html new file mode 100644 index 0000000000..ce9b7ab3af --- /dev/null +++ b/components/light.vera.html @@ -0,0 +1,1710 @@ + + + + + + + + + + + + Vera light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + Vera light +

    +
    +
    + +

    This vera light platform allows you to control your Vera lights.

    + +

    This platform is useful if you wish for switches connected to your Vera controller to appear as lights in Home Assistant. All switches will be added as a light unless you exclude them in the configuration file.

    + +

    To use your Vera lights in your installation, add the following to your configuration.yaml file:

    + +
    # Example configuration.yaml entry
    +light:
    +  platform: vera
    +  vera_controller_url: http://YOUR_VERA_IP:3480/
    +  device_data:
    +    12:
    +      name: My awesome sensor
    +      exclude: true
    +    13:
    +      name: Another sensor
    +
    + +

    Configuration variables:

    + +
      +
    • vera_controller_url (Required): This is the base URL of your vera controller including the port number if not running on 80, eg. http://192.168.1.21:3480/
    • +
    • device_data array (Optional):This contains an array additional device information for your Vera devices. It is not required and if not specified all sensors configured in your Vera controller will be added with default values. You should use the id of your Vera device as the key for the device within device_data. + +
        +
      • name (Optional):This parameter allows you to override the name of your Vera device in the frontend, if not specified the value configured for the device in your Vera will be used.
      • +
      • exclude (Optional): This parameter allows you to exclude the specified device, it should be set to “True” if you want this device excluded.
      • +
      +
    • +
    + + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/light.wink.html b/components/light.wink.html new file mode 100644 index 0000000000..558bf6aa54 --- /dev/null +++ b/components/light.wink.html @@ -0,0 +1,1682 @@ + + + + + + + + + + + + Wink light - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + Wink light +

    +
    +
    + +

    The wink sensor platform allows you to use your Wink lights.

    + +

    The requirement is that you have setup your Wink hub.

    + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/logbook.html b/components/logbook.html index 20c61219c5..863fcda161 100644 --- a/components/logbook.html +++ b/components/logbook.html @@ -9,7 +9,7 @@ - Logbook support - Home Assistant + Logbook - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,15 +97,12 @@
      - -

      - Logbook Support + Logbook


      -

      The logbook component provides a different perspective on the history of your house by showing all @@ -114,42 +111,25 @@ the changes that happened to your house in reverse chronological order.

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

      -
      1
      -2
      -
      # Example configuration.yaml entry
      -logbook:
      -
      - +
      # Example configuration.yaml entry
      +logbook:
      +

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -
      # Example configuration.yaml entry
      -script:
      -  add_logbook_entry:
      -    alias: Add Logbook
      -    sequence:
      -      - event: LOGBOOK_ENTRY
      -        event_data:
      -          name: Kitchen
      -          message: is being used
      -          # Optional
      -          entity_id: light.kitchen
      -          domain: light
      -
      - - +
      # Example configuration.yaml entry
      +script:
      +  add_logbook_entry:
      +    alias: Add Logbook
      +    sequence:
      +      - event: LOGBOOK_ENTRY
      +        event_data:
      +          name: Kitchen
      +          message: is being used
      +          # Optional
      +          entity_id: light.kitchen
      +          domain: light
      +
      @@ -157,6 +137,2104 @@ the changes that happened to your house in reverse chronological order. + + @@ -192,5 +2270,10 @@ the changes that happened to your house in reverse chronological order. + + + + + \ No newline at end of file diff --git a/components/media_player.cast.html b/components/media_player.cast.html index 3418d2f767..d5cda76861 100644 --- a/components/media_player.cast.html +++ b/components/media_player.cast.html @@ -9,7 +9,7 @@ - Google Cast support - Home Assistant + Google Cast - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,31 +97,22 @@
      - -

      - Google Cast Support + Google Cast


      - -

      -Google Cast devices will be automatically discovered if you enable the discovery component. There is a issue where Chromecasts can only be discovered if your device is connected to the same subnet as your Chromecast.

      +

      Google Cast devices will be automatically discovered if you enable the discovery component. There is a issue where Chromecasts can only be discovered if your device is connected to the same subnet as your Chromecast.

      Chromecast platform can also be forced to load by adding the following lines to your configuration.yaml:

      -
      1
      -2
      -3
      -4
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: chromecast
      -  host: 192.168.1.9
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: chromecast
      +  host: 192.168.1.9
      +

      Configuration variables:

      @@ -130,6 +121,12 @@ Google Cast devices will be automatically discovered if you enable + + @@ -172,5 +1676,10 @@ Google Cast devices will be automatically discovered if you enable - Denon Network Receivers support - Home Assistant + Denon Network Receivers - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Denon Network Receivers Support + Denon Network Receivers


      - -

      -The denon platform allows you to control a Denon Network Receivers from Home Assistant.

      +

      The denon platform allows you to control a Denon Network Receivers from Home Assistant.

      Supported devices:

      @@ -120,18 +116,12 @@ The denon platform allows you to control a
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: denon
      -  host: IP_ADDRESS
      -  name: Music station
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: denon
      +  host: IP_ADDRESS
      +  name: Music station
      +

      Configuration variables:

      @@ -144,19 +134,1527 @@ The denon platform allows you to control a
      +
      + + + +
      +
      + + + +
      + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Category Media Player

      +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Denon Network Receivers + +
      • + + + + + + + + + + + + + + + +
      • + + FireTV + +
      • + + + + + + + + + + + + + +
      • + + Google Cast + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Kodi + +
      • + + + + + + + + + +
      • + + Logitech Squeezebox + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Music Player Daemon (MPD) + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Plex + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + Sonos + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + iTunes + +
      • + + +
      +
      + +
      + + +
      + + + @@ -192,5 +1690,10 @@ The denon platform allows you to control a + + + + + + + + + + FireTV - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + FireTV +

      +
      +
      + +

      The firetv platform allows you to control a Amazon Fire TV/stick.

      + +

      The python-firetv Python 2.x module with its helper script that exposes a HTTP server to fetch state and perform actions is used.

      + +

      Steps to configure your Amazon Fire TV stick with Home Assistant:

      + +
        +
      • Turn on ADB Debugging on your Amazon Fire TV: + +
          +
        • From the main (Launcher) screen, select Settings.
        • +
        • Select System > Developer Options.
        • +
        • Select ADB Debugging.
        • +
        +
      • +
      • Find Amazon Fire TV device IP: + +
          +
        • From the main (Launcher) screen, select Settings.
        • +
        • Select System > About > Network.
        • +
        +
      • +
      • pip install firetv[firetv-server] into a Python 2.x environment
      • +
      • firetv-server -d <fire tv device IP>:5555, background the process
      • +
      • Configure Home Assistant as follows:
      • +
      + + +

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

      + +
      # Example configuration.yaml entry
      +media_player:
      +  platform: firetv
      +  host: localhost:5556
      +  device: livingroom-firetv
      +  name: My Amazon Fire TV
      +
      + +

      Configuration variables:

      + +
        +
      • host Optional: Where firetv-server is running. Default is localhost:5556.
      • +
      • device Optional: The device ID, default is default.
      • +
      • name Optional: The friendly name of the device, default is ‘Amazon Fire TV’.
      • +
      + + +

      +Note that python-firetv has support for multiple Amazon Fire TV devices. If you have more than one configured, be sure to specify the device id used. Run `firetv-server -h` and/or view the source for complete capabilities. +

      + + + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/media_player.html b/components/media_player.html index 8deac04144..4eaf98428f 100644 --- a/components/media_player.html +++ b/components/media_player.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,31 +97,14 @@ + + @@ -242,5 +2098,10 @@ + + + + + \ No newline at end of file diff --git a/components/media_player.itunes.html b/components/media_player.itunes.html index 83b84021be..b6f68de8eb 100644 --- a/components/media_player.itunes.html +++ b/components/media_player.itunes.html @@ -9,7 +9,7 @@ - iTunes support - Home Assistant + iTunes - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,57 +97,1548 @@
      - -

      - iTunes Support + iTunes


      - -

      - The iTunes platform allows you to control iTunes from Home Assistant. - It uses a 3rd party server that you run on your Mac called - itunes-api. Play, pause, or skip songs remotely on iTunes - running on your Mac.

      +

      The iTunes platform allows you to control iTunes from Home Assistant. It uses a 3rd party server that you run on your Mac called itunes-api. Play, pause, or skip songs remotely on iTunes running on your Mac.

      -

      Your AirPlay speakers will also be exposed as simple media players inside Home - Assistant. They will be available to be turned on or off or set their volume.

      +

      In addition to controlling iTunes, your available AirPlay endpoints will be added as media players as well. You can then individually address them append turn them on, turn them off, or adjust their volume.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: itunes
      -  name: iTunes
      -  host: http://192.168.1.50
      -  port: 8181
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: itunes
      +  name: iTunes
      +  host: http://192.168.1.50
      +  port: 8181
      +

      Configuration variables:

      • host Required: The URL of the itunes-api API, eg. http://192.168.1.50
      • -
      • port Optional: The PORT that itunes-api is running on.
      • +
      • port Optional: The port where itunes-api is accessible, eg. 8181.
      -
      + + @@ -183,5 +1674,10 @@ + + + + + \ No newline at end of file diff --git a/components/media_player.kodi.html b/components/media_player.kodi.html index c67b766d48..ad9d8429bf 100644 --- a/components/media_player.kodi.html +++ b/components/media_player.kodi.html @@ -9,7 +9,7 @@ - Kodi support - Home Assistant + Kodi - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,37 +97,25 @@
      - -

      - Kodi Support + Kodi


      - -

      -The kodi platform allows you to control a Kodi multimedia system from Home Assistant.

      +

      The kodi platform allows you to control a Kodi multimedia system from Home Assistant.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: kodi
      -  url: http://192.168.0.123/jsonrpc
      -  name: Kodi
      -  user: USERNAME
      -  password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: kodi
      +  url: http://192.168.0.123/jsonrpc
      +  name: Kodi
      +  user: USERNAME
      +  password: PASSWORD
      +

      Configuration variables:

      @@ -139,13 +127,1519 @@ The kodi platform allows you to control a Kodi mul
    - + + @@ -181,5 +1675,10 @@ The kodi platform allows you to control a Kodi mul + + + + + \ No newline at end of file diff --git a/components/media_player.mpd.html b/components/media_player.mpd.html index 33a8d90274..1176c19f9e 100644 --- a/components/media_player.mpd.html +++ b/components/media_player.mpd.html @@ -9,7 +9,7 @@ - Music Player Daemon support - Home Assistant + Music Player Daemon (MPD) - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,48 +97,37 @@
      - -

      - Music Player Daemon Support + Music Player Daemon (MPD)


      - -

      -The mpd platform allows you to control a Music Player Daemon from Home Assistant. Unfortunatly you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs.

      +

      The mpd platform allows you to control a Music Player Daemon from Home Assistant. Unfortunatly you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: mpd
      -  server: IP_ADDRESS
      -  port: 6600
      -  location: bedroom
      -  password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: mpd
      +  server: IP_ADDRESS
      +  port: 6600
      +  location: bedroom
      +  password: PASSWORD
      +

      Configuration variables:

        -
      • server Required: IP address of the Music Player Daemon. Example: 192.168.1.32
      • -
      • port Optional: Port of the Music Player Daemon, defaults to 6600. Example: 6600
      • +
      • server Required: IP address of the Music Player Daemon, eg. 192.168.1.32
      • +
      • port Optional: Port of the Music Player Daemon, defaults to 6600.
      • location Optional: Location of your Music Player Daemon.
      • password Optional: Password for your Music Player Daemon.
      +

      This platform works with Music Player Daemon and mopidy with Mopidy-MPD as used by Pi MusicBox.

      @@ -146,6 +135,1513 @@ The mpd platform allows you to control a Music + + @@ -181,5 +1677,10 @@ The mpd platform allows you to control a Music + + + + + \ No newline at end of file diff --git a/components/media_player.plex.html b/components/media_player.plex.html index 1d49cb3baa..978fd36625 100644 --- a/components/media_player.plex.html +++ b/components/media_player.plex.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,45 +97,35 @@
      - -

      Plex


      - -

      -The Plex platform allows you to connect a Plex Media Server to Home Assistant. It will allow you to control media playback and see the current playing item.

      +

      The Plex platform allows you to connect a Plex Media Server to Home Assistant. It will allow you to control media playback and see the current playing item. +The preferred way to setup the Plex platform is by enabling the the the discovery component and requires GDM to be enabled.

      -

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

      +

      If local authentication is enabled or multiple users are defined, HASS requires an authentication token to be entered in the webinterface. See Finding your account token / X-Plex-Token.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: plex
      -  name: plex_server
      -  user: YOUR_USERNAME
      -  password: YOUR_PASSWORD
      -
      +

      If you want to enable the plex platform directly, add the following lines to your configuration.yaml: +```yaml

      +

      Example configuration.yaml entry

      -

      Configuration variables:

      - -
        -
      • name Required: The name of the backend device (Under Plex Media Server > settings > server)
      • -
      • user Required: The username for your Pley server.
      • -
      • password Required: The password for your Plex server.
      • -
      - +

      media_player: + - platform: plex + +You may also need to create the file `plex.conf`. + +{‘IP_ADDRESS:PORT’: {‘token’: ‘TOKEN’}} +`` +- **IP_ADDRESS** *Required*: IP address of the Plex Media Server +- **PORT** *required*: Default is 32400 +- **TOKEN** *Optional*: Only is authentication is required. Set toNone` (without quotes) otherwise.

      +

      At this moment, the Plex platform only supports one Plex Media Server.

      @@ -143,6 +133,1513 @@ The Plex platform allows you to connect a Plex Media S + + @@ -178,5 +1675,10 @@ The Plex platform allows you to connect a Plex Media S + + + + + \ No newline at end of file diff --git a/components/media_player.sonos.html b/components/media_player.sonos.html index 408b66530f..64d6db42b6 100644 --- a/components/media_player.sonos.html +++ b/components/media_player.sonos.html @@ -9,7 +9,7 @@ - Sonos support - Home Assistant + Sonos - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,32 +97,21 @@
      - -

      - Sonos Support + Sonos


      - -

      -The sonos platform allows you to control your Sonos HiFi wireless speakers and audio components from Home Assistant.

      +

      The sonos platform allows you to control your Sonos HiFi wireless speakers and audio components from Home Assistant.

      To add your Sonos components to your installation, add the following to your configuration.yaml file. It will perform auto-discovery of your connected speakers.

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: sonos
      -
      - - - - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: sonos
      +
      @@ -130,6 +119,1513 @@ The sonos platform allows you to control your Son + + @@ -165,5 +1661,10 @@ The sonos platform allows you to control your Son + + + + + \ No newline at end of file diff --git a/components/media_player.squeezebox.html b/components/media_player.squeezebox.html index 8f538f5309..fe4173bed9 100644 --- a/components/media_player.squeezebox.html +++ b/components/media_player.squeezebox.html @@ -9,7 +9,7 @@ - Logitech Squeezebox support - Home Assistant + Logitech Squeezebox - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,55 +97,1549 @@
      - -

      - Logitech Squeezebox Support + Logitech Squeezebox


      - -

      -The squeezebox platform allows you to control a Logitech Squeezebox multimedia system from Home Assistant.

      +

      The squeezebox platform allows you to control a Logitech Squeezebox multimedia system from Home Assistant.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -media_player:
      -  platform: squeezebox
      -  host: 192.168.1.21
      -  port: 9090
      -  username: USERNAME
      -  password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +media_player:
      +  platform: squeezebox
      +  host: IP_ADDRESS
      +  port: 9090
      +  username: USERNAME
      +  password: PASSWORD
      +

      Configuration variables:

        -
      • host Required: The host name or address of the Logitech Media Server.
      • +
      • host Required: The host name or address of the Logitech Media Server, eg. 192.168.1.21.
      • port Optional: Telnet port to Logitech Media Server, default 9090.
      • username Optional: The username, if password protection is enabled.
      • password Optional: The password, if password protection is enabled.
      -
      + + @@ -181,5 +1675,10 @@ The squeezebox platform allows you to control a Developers
        @@ -97,97 +97,68 @@
        - -

        Modbus


        - -

        -Modbus is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections.

        +

        Modbus is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections.

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -18
        -19
        -20
        -21
        -22
        -23
        -24
        -25
        -26
        -27
        -28
        -29
        -30
        -31
        -32
        -33
        -34
        -35
        -36
        -37
        -
        # Example configuration.yaml entry
        -modbus:
        -  type: serial
        -  method: rtu
        -  port: /dev/ttyUSB0
        -  baudrate: 9600
        -  stopbits: 1
        -  bytesize: 8
        -  parity: N
        -
        -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
        -
        -switch:
        -  platform: modbus
        -  slave: 1
        -  registers:
        -    24:
        -      bits:
        -        0:
        -          name: My switch
        -        2:
        -          name: My other switch
        -
        +

        For a network connection:

        +

        Modbus TCP

        + +

        modbus: + type: tcp + host: IP_ADDRESS + port: 2020 +```

        + +

        Configuration variables:

        + +
          +
        • type (Required): Type of the connection to Modebus.
        • +
        • host (Required): The IP address of your router, eg. 192.168.1.1.
        • +
        • port (Required): The port for the comminication.
        • +
        + + +

        For a serial connection:

        + +
        # Example configuration.yaml entry
        +modbus:
        +  type: serial
        +  method: rtu
        +  port: /dev/ttyUSB0
        +  baudrate: 9600
        +  stopbits: 1
        +  bytesize: 8
        +  parity: N
        +
        + +

        Configuration variables:

        + +
          +
        • type (Required): Type of the connection to Modebus.
        • +
        • method (Required): Method of the connection to Modbus.
        • +
        • port (Required): The port where your Modbus device is connected to your Home Assistant host.
        • +
        • baudrate (Required): The speed for the serial connection.
        • +
        • stopbits (Required): The stopbits for the serial connection.
        • +
        • bytesize (Required): The bytesize for the serial connection.
        • +
        • parity (Required): The parity for the serial connection.
        • +
        + + +

        Building on top of Modbus

        + +
        @@ -196,6 +167,2166 @@ + + @@ -231,5 +2362,10 @@ + + + + + \ No newline at end of file diff --git a/components/mqtt.html b/components/mqtt.html index bb404e9f9b..5b2f4e9e83 100644 --- a/components/mqtt.html +++ b/components/mqtt.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
      +
    • Components
    • Developers
        @@ -97,42 +97,27 @@
        - -

        MQTT


        - -

        -MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol -on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

        +

        MQTT (aka MQ Telemetry Transport) is a machine-to-machine or “Internet of Things” connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport.

        To integrate MQTT into Home Assistant, add the following section to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -
        # Example configuration.yaml entry
        -mqtt:
        -  broker: IP_ADDRESS_BROKER
        -  port: 1883
        -  client_id: home-assistant-1
        -  keepalive: 60
        -  username: USERNAME
        -  password: PASSWORD
        -  certificate: /home/paulus/dev/addtrustexternalcaroot.crt
        -
        - +
        # Example configuration.yaml entry
        +mqtt:
        +  broker: IP_ADDRESS_BROKER
        +  port: 1883
        +  client_id: home-assistant-1
        +  keepalive: 60
        +  username: USERNAME
        +  password: PASSWORD
        +  certificate: /home/paulus/dev/addtrustexternalcaroot.crt
        +

        Configuration variables:

        @@ -158,24 +143,15 @@ on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging tr

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -mqtt:
        -  broker: 192.168.1.100
        -  port: 1883
        -  client_id: home-assistant-1
        -  keepalive: 60
        -  username: USERNAME
        -  password: PASSWORD
        -
        - +
        # Example configuration.yaml entry
        +mqtt:
        +  broker: 192.168.1.100
        +  port: 1883
        +  client_id: home-assistant-1
        +  keepalive: 60
        +  username: USERNAME
        +  password: PASSWORD
        +

        Public MQTT

        @@ -183,26 +159,16 @@ from: Mosquitto and
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -
        mqtt:
        -  broker: test.mosquitto.org
        -  port: 1883
        -
        -  # Optional, if you want encryption
        -  # (doesn't really matter because broker is public)
        -  port: 8883
        -  # Download certificate from http://test.mosquitto.org/ssl/mosquitto.org.crt
        -  certificate: /home/paulus/downloads/mosquitto.org.crt
        -
        +
        mqtt:
        +  broker: test.mosquitto.org
        +  port: 1883
         
        +  # Optional, if you want encryption
        +  # (doesn't really matter because broker is public)
        +  port: 8883
        +  # Download certificate from http://test.mosquitto.org/ssl/mosquitto.org.crt
        +  certificate: /home/paulus/downloads/mosquitto.org.crt
        +

        CloudMQTT

        @@ -228,25 +194,17 @@ connections from the same user)
      • Under ACLs, select user, topic #, check ‘read access’ and ‘write access’
      • -
      • Copy the instance info to your configuration.yaml:
      • +
      • Copy the instance info to your configuration.yaml: +yaml +mqtt: + broker: <Server> + port: <SSL Port> + username: <User> + password: <Password> +
      • -
        1
        -2
        -3
        -4
        -5
        -
        mqtt:
        -  broker: <Server>
        -  port: <SSL Port>
        -  username: <User>
        -  password: <Password>
        -
        - - - -

        Home Assistant will automatically load the correct certificate if you connect to an encrypted channel of CloudMQTT (port range 20 000 - 30 000). @@ -270,38 +228,26 @@ of CloudMQTT (port range 20 000 - 30 000).

        For debugging purposes mosquitto is shipping commandline tools to send and recieve MQTT messages. For sending test messages to a broker running on localhost:

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

        Another way to send MQTT messages by hand is to use the “Developer Tools” in the Frontend. Choose “Call Service” and then mqtt/mqtt_send under “Available Services”. Enter something similar to the example below into the “Service Data” field.

        -
        1
        -2
        -3
        -4
        -
        {
        -   "topic":"home-assistant/switch/1/on",
        -   "payload":"Switch is ON"
        -}
        -
        - +
        {
        +   "topic":"home-assistant/switch/1/on",
        +   "payload":"Switch is ON"
        +}
        +

        The message should appear on the bus:

        -
        1
        -
        ... [homeassistant] Bus:Handling <Event MQTT_MESSAGE_RECEIVED[L]: topic=home-assistant/switch/1/on, qos=0, payload=Switch is ON>
        -
        - +
        ... [homeassistant] Bus:Handling <Event MQTT_MESSAGE_RECEIVED[L]: topic=home-assistant/switch/1/on, qos=0, payload=Switch is ON>
        +

        For reading all messages sent on the topic home-assistant to a broker running on localhost:

        -
        1
        -
        mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
        -
        - - +
        mosquitto_sub -h 127.0.0.1 -v -t "home-assistant/#"
        +
        @@ -309,6 +255,2176 @@ of CloudMQTT (port range 20 000 - 30 000). + + @@ -344,5 +2460,10 @@ of CloudMQTT (port range 20 000 - 30 000). + + + + + \ No newline at end of file diff --git a/components/notify.file.html b/components/notify.file.html index 6d7d1257f5..4203f5562f 100644 --- a/components/notify.file.html +++ b/components/notify.file.html @@ -9,7 +9,7 @@ - File notification support - Home Assistant + File - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,51 +97,1553 @@
        - -

        - File Notification Support + File


        - -

        -The file platform allows you to store notifications from Home Assistant as a file.

        +

        The file platform allows you to store notifications from Home Assistant as a file.

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -notify:
        -  name: NOTIFIER_NAME
        -  platform: file
        -  filename: FILENAME
        -  timestamp: 1 or 0
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: file
        +  filename: FILENAME
        +  timestamp: 1 or 0
        +
        +

        Configuration variables:

        -

        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.

        +
          +
        • 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.
        • +
        • filename (Required): Name of the file to use. The file will be created if it doesn’t exist and saved in your config/ folder.
        • +
        • timestamp (Optional): Setting timestamp to 1 adds a timestamp to every entry.
        • +
        -

        Setting timestamp to 1 adds a timestamp to every entry.

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

        -
        + + @@ -177,5 +1679,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.html b/components/notify.html index 45f5605766..ddc5473869 100644 --- a/components/notify.html +++ b/components/notify.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,69 +97,1929 @@
        - -

        Notifications


        -

        One of the things most people want at some point in their home automation is to get notified when certain events occur. For this reason there is a notify component in Home Assistant.

        -

        Home Assistant currently supports a wide range of services for notifications:

        +

        Home Assistant currently supports a wide range of services for notifications. Please check the sidebar for a full list of platforms.

        - +

        If your are running into troubles with your notification platform, a simple way to test it is to use Call Service from the Developer Tools. Choose your service (notify/xyz) from the list of Available services: and enter something like the sample below into the Service Data field and hit CALL SERVICE.

        +
        {"title":"Test", "message":"A simple test message from HA."}
        +
        -

        Automation example

        +

        This will send a single message to your notification platform configured in your configuration.yaml file.

        -

        Notifications are great to be used within Home Automation. Below is a an example configuration that you can add to your configuration.yaml to be notified when the sun sets.

        +

        Examples

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -
        automation:
        -  alias: Sun set notification
        -
        -  platform: state
        -  state_entity_id: sun.sun
        -  state_from: above_horizon
        -  state_to: below_horizon
        -
        -  execute_service: notify.NOTIFIER_NAME
        -  service_data: {"message":"YAY"}
        -
        +

        Automation

        +

        Notifications are great to be used within Home Automation. Below is a an example configuration that you can add to your configuration.yaml file to be notified when the sun sets.

        + +
        automation:
        +  alias: Sun set notification
        +
        +  platform: state
        +  state_entity_id: sun.sun
        +  state_from: above_horizon
        +  state_to: below_horizon
        +
        +  execute_service: notify.NOTIFIER_NAME
        +  service_data: {"message":"YAY"}
        +

        For more automation examples, see the getting started with automation page.

        -
        + + @@ -195,5 +2055,10 @@ + + + + + \ No newline at end of file diff --git a/components/notify.instapush.html b/components/notify.instapush.html index 7e9854540c..b666020a15 100644 --- a/components/notify.instapush.html +++ b/components/notify.instapush.html @@ -9,7 +9,7 @@ - Instapush notification support - Home Assistant + Instapush - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,76 +97,1573 @@
        - -

        - Instapush Notification Support + Instapush


        - -

        -The instapush platform uses Instapush to delivery notifications from Home Assistant to your Android or iOS device.

        +

        The instapush platform uses Instapush to delivery notifications from Home Assistant to your Android or iOS device.

        The Instapush Getting Started page will guide through the process of creating the required items.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -
        # Example configuration.yaml entry
        -notify:
        -    name: NOTIFIER_NAME
        -    platform: instapush
        -    # Get those by creating a new application, event, and tracker on https://instapush.im
        -    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -    app_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
        -    event: ABCDEFGHJKLMNOPQRSTUVXYZ
        -    tracker: ABCDEFGHJKLMNOPQRSTUVXYZ
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: instapush
        +  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  app_secret: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  event: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  tracker: ABCDEFGHJKLMNOPQRSTUVXYZ
        +
        +

        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.
        • +
        • api_key (Required): Your API key for Instapush.
        • +
        • app_secret (Required): The secret for your created application.
        • +
        • event (Required): TThe event
        • +
        • tracker (Required): The name of tracker inside Instapush.
        • +
        -

        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.

        To retrieve those values for existing settings, log into your account at https://instapush.im and go to your Dashboard. Then click APPS tab, choose an app, and check the Basic Info section. The Application ID is the api_key and app_secret is the Application Secret.

        It’s easy to test your Instapush setup outside of Home Assistant. Assuming you have an event notification and a tracker home-assistant, just fire a request and check the Instapush dashboard for a new entry.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        curl -X POST \
        -    -H "x-instapush-appid: YOUR_APP_KEY" \
        -    -H "x-instapush-appsecret: YOUR_APP_SECRET" \
        -    -H "Content-Type: application/json" \
        -      -d '{"event":"notification","trackers":{"home-assistant":"Switch 1"}}' \
        -    https://api.instapush.im/v1/post
        -
        - +
        curl -X POST \
        +    -H "x-instapush-appid: YOUR_APP_KEY" \
        +    -H "x-instapush-appsecret: YOUR_APP_SECRET" \
        +    -H "Content-Type: application/json" \
        +      -d '{"event":"notification","trackers":{"home-assistant":"Switch 1"}}' \
        +    https://api.instapush.im/v1/post
        +

        For further details, please check the API.

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

        -
        + + @@ -202,5 +1699,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.nma.html b/components/notify.nma.html index d699125015..2cc7bc6d9d 100644 --- a/components/notify.nma.html +++ b/components/notify.nma.html @@ -9,7 +9,7 @@ - Notify My Android (NMA) notification support - Home Assistant + Notify My Android - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,49 +97,1555 @@
        - -

        - Notify My Android (NMA) Notification Support + Notify My Android


        - -

        -The nma platform uses Notify My Android (NMA) to delivery notifications from Home Assistant to your Android device.

        +

        The nma platform uses Notify My Android (NMA) to delivery notifications from Home Assistant to your Android device.

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -notify:
        -    name: NOTIFIER_NAME
        -    platform: nma
        -    # Get this by registering a new application on http://www.notifymyandroid.com/
        -    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: nma
        +  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +
        + +

        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.
        • +
        • api_key (Required): Enter the API key for NMA. Go to https://www.notifymyandroid.com and create a new API key.
        • +
        -

        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.

        +

        Details for the API : https://www.notifymyandroid.com/api.jsp

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

        -
        + + @@ -175,5 +1681,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.pushbullet.html b/components/notify.pushbullet.html index 442917dbe6..f34da3e844 100644 --- a/components/notify.pushbullet.html +++ b/components/notify.pushbullet.html @@ -9,7 +9,7 @@ - PushBullet notification support - Home Assistant + PushBullet - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,45 +97,1553 @@
        - -

        - PushBullet Notification Support + PushBullet


        - -

        -Home Assistant currently supports the awesome PushBullet, a free service to send information between your phones, browsers and friends.

        +

        Home Assistant currently supports the awesome PushBullet, a free service to send information between your phones, browsers and friends.

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

        -
        1
        -2
        -3
        -4
        -
        notify:
        -  name: NOTIFIER_NAME
        -  platform: pushbullet
        -  api_key: YOUR_API_KEY
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: pushbullet
        +  api_key: YOUR_API_KEY
        +
        +

        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.
        • +
        • api_key (Required): Enter the API key for PushBullet. Go to https://www.pushbullet.com/ to retrieve your API key.
        • +
        -

        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.

        For more automation examples, see the getting started with automation page.

        -
        + + @@ -171,5 +1679,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.pushover.html b/components/notify.pushover.html index d72909da4f..97870f9049 100644 --- a/components/notify.pushover.html +++ b/components/notify.pushover.html @@ -9,7 +9,7 @@ - Notifications - Home Assistant + PushOver - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,82 +97,1561 @@
        - -

        - Notifications + PushOver


        - -

        -The PushOver service is a platform for the notify component. This allows components to send messages to the user using PushOver.

        +

        The PushOver service is a platform for the notify component. This allows components to send messages to the user using PushOver.

        To use PushOver notifications, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -notify:
        -    name: NOTIFIER_NAME
        -    platform: pushover
        -    # Get this by registering a new application on https://pushover.net
        -    api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -    # Get this by logging into your account on https://pushover.net
        -    user_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: pushover
        +  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  user_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +
        + +

        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.
        • +
        • api_key (Required): This parameter is optional but should be configured, in order to get an API key you should go to https://pushover.net and register a new application.
        • +
        • user_key (Required): To retrieve this value log into your account at https://pushover.net
        • +
        -

        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.

        +

        This is a quote from the pushover website regarding free/open source apps:

        -

        Automation example

        - -

        Notifications are great to be used within Home Automation. Below is a an example configuration that you can add to your configuration.yaml to be notified when the sun sets.

        - -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -
        automation:
        -  alias: Sun set notification
        -
        -  platform: state
        -  state_entity_id: sun.sun
        -  state_from: above_horizon
        -  state_to: below_horizon
        -
        -  execute_service: notify.NOTIFIER_NAME
        -  service_data: {"message":"YAY"}
        -
        +

        “If you are creating a client-side library, application, or open source project that will be redistributed and installed by end-users, you may want to require each of your users to register their own application rather than including your own API token with the software.”

        +

        When setting up the application you can use this icon.

        For more automation examples, see the getting started with automation page.

        -

        James Cole has contributed the PushOver platform.

        - -
        + + @@ -208,5 +1687,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.slack.html b/components/notify.slack.html index 126b0bd13d..834ec70a5e 100644 --- a/components/notify.slack.html +++ b/components/notify.slack.html @@ -9,7 +9,7 @@ - Slack notification support - Home Assistant + Slack - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,42 +97,37 @@
        - -

        - Slack Notification Support + Slack


        - -

        -The slack platform allows you to deliver notifications from Home Assistant to Slack.

        +

        The slack platform allows you to deliver notifications from Home Assistant to Slack.

        You need to obtain the Slack API token to be able to send notifications.

        To enable the slack notification in your installation, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -notify:
        -  name: NOTIFIER_NAME
        -  platform: slack
        -  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -  default_channel: '#general'
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: slack
        +  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  default_channel: '#general'
        +
        + +

        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.
        • +
        • api_key (Required): The slack API token to use for sending slack messages. You can get your slack API token here https://api.slack.com/web?sudo=1
        • +
        • default_channel (Required): The default channel to post to if no channel is explicitly specified when sending the notification message.
        • +
        -

        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.

        - +

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

        @@ -140,6 +135,1519 @@ The default value is notify. The notifier will bind to the service + + @@ -175,5 +1683,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.smtp.html b/components/notify.smtp.html index cca8d54f69..9aac73cce2 100644 --- a/components/notify.smtp.html +++ b/components/notify.smtp.html @@ -9,7 +9,7 @@ - SMTP notification support - Home Assistant + SMTP - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,49 +97,43 @@
        - -

        - SMTP Notification Support + SMTP


        - -

        -The smtp platform allows you to deliver notifications from Home Assistant to an e-mail recipient.

        +

        The smtp platform allows you to deliver notifications from Home Assistant to an e-mail recipient.

        To enable notification by e-mail in your installation, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -
        # Example configuration.yaml entry
        -notify:
        -  name: NOTIFIER_NAME
        -  platform: smtp
        -  server: MAIL_SERVER
        -  port: YOUR_SMTP_PORT
        -  sender: SENDER_EMAIL_ADDRESS
        -  starttls: 1 or 0
        -  username: YOUR_SMTP_USERNAME
        -  password: YOUR_SMTP_PASSWORD
        -  recipient: YOUR_RECIPIENT
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: smtp
        +  server: MAIL_SERVER
        +  port: YOUR_SMTP_PORT
        +  sender: SENDER_EMAIL_ADDRESS
        +  starttls: 1 or 0
        +  username: YOUR_SMTP_USERNAME
        +  password: YOUR_SMTP_PASSWORD
        +  recipient: YOUR_RECIPIENT
        +
        +

        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.
        • +
        • server (Required): SMTP server which is used to end the notifications. For Google Mail, eg. smtp.gmail.com. Keep in mind that Google has some extra layers of protection which need special attention (Hint: ‘Less secure apps’).
        • +
        • port (Required): The port that the SMTP server is using, eg. 587 for Google Mail and STARTTLS or 465/993 depending on your SMTP servers.
        • +
        • sender (Required): E-Mail address of the sender.
        • +
        • username (Required): Username for the SMTP account.
        • +
        • password (Required):Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes.
        • +
        • recipient (Required): Recipient of the notification.
        • +
        • starttls (Optional): Enables STARTTLS, eg. 1 or 0.
        • +
        -

        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.

        This platform is fragile and not able to catch all exceptions in a smart way because of the large number of possible configuration combinations.

        @@ -152,13 +146,1525 @@ which need special attention. By default, the usage by external applications, es

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

        -
        + + @@ -194,5 +1700,10 @@ which need special attention. By default, the usage by external applications, es + + + + + \ No newline at end of file diff --git a/components/notify.syslog.html b/components/notify.syslog.html index 4c5c390304..01f419cc4b 100644 --- a/components/notify.syslog.html +++ b/components/notify.syslog.html @@ -9,7 +9,7 @@ - Syslog notification support - Home Assistant + Syslog - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,41 +97,35 @@
        - -

        - Syslog Notification Support + Syslog


        - -

        -The syslog platform allows you to deliver notifications from Home Assistant to the local syslog.

        +

        The syslog platform allows you to deliver notifications from Home Assistant to the local syslog.

        To enable syslog notifications in your installation, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        # Example configuration.yaml entry
        -notify:
        -  name: NOTIFIER_NAME
        -  platform: syslog
        -  facility: SYSLOG_FACILITY
        -  option: SYSLOG_LOG_OPTION
        -  priority: SYSLOG_PRIORITY
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: syslog
        +  facility: SYSLOG_FACILITY
        +  option: SYSLOG_LOG_OPTION
        +  priority: SYSLOG_PRIORITY
        +
        +

        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.
        • +
        • facility (Optional): Facility according to RFC 3164 (http://tools.ietf.org/html/rfc3164). Default is ‘syslog’ if no value is given. Check the table below for entries.
        • +
        • option (Optional): Log option. Default is ‘pid’ if no value is given. Check the table below for entries.
        • +
        • priority (Optional): Priority of the messages. Default is ‘info’ if no value is given. Check the table below for entries.
        • +
        -

        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.

        The table contains values to use in your configuration.yaml file.

        @@ -242,13 +236,1523 @@ The default value is notify. The notifier will bind to the service

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

        -
        + + @@ -284,5 +1788,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.telegram.html b/components/notify.telegram.html index 8e1f5e4c52..a88dbd7390 100644 --- a/components/notify.telegram.html +++ b/components/notify.telegram.html @@ -9,7 +9,7 @@ - Telegram notification support - Home Assistant + Telegram - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,18 +97,14 @@
        - -

        - Telegram Notification Support + Telegram


        - -

        -The telegram platform uses Telegram to delivery notifications from Home Assistant to your Android device, your Windows phone, or your iOS device.

        +

        The telegram platform uses Telegram to delivery notifications from Home Assistant to your Android device, your Windows phone, or your iOS device.

        The requirement are:

        @@ -120,35 +116,22 @@ The telegram platform uses Telegram to de

        An easy way to get your chat ID is described below:

        -
        1
        -2
        -3
        -4
        -
        import telegram
        -bot = telegram.Bot(token='YOUR_API_TOKEN')
        -chat_id = bot.getUpdates()[-1].message.chat_id
        -print(chat_id)
        -
        - +
        import telegram
        +bot = telegram.Bot(token='YOUR_API_TOKEN')
        +chat_id = bot.getUpdates()[-1].message.chat_id
        +print(chat_id)
        +

        To enable Telegram notifications in your installation, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        # Example configuration.yaml entry
        -notify:
        -  name: NOTIFIER_NAME
        -  platform: telegram
        -  # Get those by creating a new bot on https://core.telegram.org/bots
        -  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        -  chat_id: YOUR_CHAT_ID
        -
        - +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: telegram
        +  # Get those by creating a new bot on https://core.telegram.org/bots
        +  api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
        +  chat_id: YOUR_CHAT_ID
        +

        Configuration variables:

        @@ -163,13 +146,1525 @@ The default value is notify. The notifier will bind to the service

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

        -
        + + @@ -205,5 +1700,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/notify.xmpp.html b/components/notify.xmpp.html index 6631aeb090..4398ea62f5 100644 --- a/components/notify.xmpp.html +++ b/components/notify.xmpp.html @@ -9,7 +9,7 @@ - Jabber (XMPP) notification support - Home Assistant + Jabber (XMPP) - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,51 +97,1557 @@
        - -

        - Jabber (XMPP) Notification Support + Jabber (XMPP)


        - -

        -The xmpp platform allows you to deliver notifications from Home Assistant to a Jabber (XMPP) account.

        +

        The xmpp platform allows you to deliver notifications from Home Assistant to a Jabber (XMPP) account.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -
        # Example configuration.yaml entry
        -notify:
        -    name: NOTIFIER_NAME
        -    platform: xmpp
        -    sender: YOUR_JID
        -    password: YOUR_JABBER_ACCOUNT_PASSWORD
        -    recipient: YOUR_RECIPIENT
        -
        +
        # Example configuration.yaml entry
        +notify:
        +  name: NOTIFIER_NAME
        +  platform: xmpp
        +  sender: YOUR_JID
        +  password: YOUR_JABBER_ACCOUNT_PASSWORD
        +  recipient: YOUR_RECIPIENT
        +
        +

        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.
        • +
        • sender (Required): The Jabber ID (JID) that will act as origin of the messages. Add your JID including the domain, eg. your_name@jabber.org.
        • +
        • password (Required): The password for your given Jabber account.
        • +
        • priority (Required): The Jabber ID (JID) that will receive the messages.
        • +
        -

        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.

        All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender.

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

        -
        + + @@ -177,5 +1683,10 @@ The default value is notify. The notifier will bind to the service + + + + + \ No newline at end of file diff --git a/components/rfxtrx.html b/components/rfxtrx.html index 0844f04ffa..60217ad0dc 100644 --- a/components/rfxtrx.html +++ b/components/rfxtrx.html @@ -9,7 +9,7 @@ - RFXtrx support - Home Assistant + RFXtrx - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,48 +97,55 @@
        - -

        - RFXtrx Support + RFXtrx


        -

        The rfxtrx component supports RFXtrx devices by RFXCOM which communicate in the frequency range of 433.92 MHz.

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

        -
        1
        -2
        -3
        -4
        -
        # Example configuration.yaml entry
        -rfxtrx:
        -  device: PATH_TO_DEVICE
        -  debug: True
        -
        - +
        # Example configuration.yaml entry
        +rfxtrx:
        +  device: PATH_TO_DEVICE
        +  debug: True
        +

        Configuration variables:

        • device (Required): The path to your device, e.g. /dev/serial/by-id/usb-RFXCOM_RFXtrx433_A1Y0NJGR-if00-port0
        • -
        • debug (Optional): If you want to recieve debug output.
        • +
        • debug (Optional): If you want to receive debug output.
        -

        Building on top of RFXtrx

        +

        How to find the packet_id for your devices

        - +

        Make sure you have enabled all RFXtrx related platforms. Push your remote and the device will be added +automatically. After that you can see you device packetid in the state developer tools in the app.

        +

        Example for X10 and Chacon DI.O signals, if you see in state developer tools the following entities:

        +
        light.123efab1__1b2200000890efab1213f60
        +light.a8__0123454041230170
        +
        + +

        You must add the following to your configuration.yaml:

        + +
        light:
        +  platform: rfxtrx
        +  automatic_add: True
        +  devices:
        +    123efab1:
        +      name: My DI.0 light device
        +      packetid: 1b2200000890efab1213f60
        +    a8:
        +      name: My X10 light device
        +      packetid: 0123454041230170
        +
        @@ -146,6 +153,2169 @@ + + @@ -181,5 +2351,10 @@ + + + + + \ No newline at end of file diff --git a/components/scene.html b/components/scene.html index 423dd18c0e..334fd9c6a3 100644 --- a/components/scene.html +++ b/components/scene.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,15 +97,12 @@
        - -

        Scenes


        -

        A user can create scenes that capture the states you want certain entities to be. For example a scene can contain that light A should be turned on and light B should be bright red.

        @@ -120,45 +117,25 @@ state on its own, the old state will not be restored when it is being deactivate

        Scenes can be activated using the service scene.turn_on and deactivated using the service scene.turn_off.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -18
        -
        # Example configuration.yaml entry
        -scene:
        -  - name: Romantic
        -    # Optional, allow fuzzy matching number atttributes to check if scene is on
        -    fuzzy_match: 0.2
        -    entities:
        -      light.tv_back_light: on
        -      light.ceiling:
        -        state: on
        -        xy_color: [0.33, 0.66]
        -        brightness: 200
        -
        -  - name: Movies
        -    entities:
        -      light.tv_back_light:
        -        state: on
        -        brightness: 100
        -      light.ceiling: off
        -
        - +
        # Example configuration.yaml entry
        +scene:
        +  - name: Romantic
        +    # Optional, allow fuzzy matching number atttributes to check if scene is on
        +    fuzzy_match: 0.2
        +    entities:
        +      light.tv_back_light: on
        +      light.ceiling:
        +        state: on
        +        xy_color: [0.33, 0.66]
        +        brightness: 200
         
        +  - name: Movies
        +    entities:
        +      light.tv_back_light:
        +        state: on
        +        brightness: 100
        +      light.ceiling: off
        +
        @@ -166,6 +143,2110 @@ state on its own, the old state will not be restored when it is being deactivate + + @@ -201,5 +2282,10 @@ state on its own, the old state will not be restored when it is being deactivate + + + + + \ No newline at end of file diff --git a/components/script.html b/components/script.html index 65a6f18b26..5f6920d57b 100644 --- a/components/script.html +++ b/components/script.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,70 +97,41 @@
        - -

        Scripts


        -

        The script component allows users to create a sequence of service calls and delays. Scripts can be started using the service script/turn_on and interrupted using the service script/turn_off.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -18
        -19
        -20
        -21
        -22
        -23
        -24
        -
        # Example configuration.yaml entry
        -script:
        -  # Turns on the bedroom lights and then the living room lights 1 minute later
        -  wakeup:
        -    alias: Wake Up
        -    sequence:
        -      - event: logbook_entry
        -        event_data:
        -          name: Paulus
        -          message: is waking up
        -          # Optional
        -          entity_id: device_tracker.paulus
        -          domain: light
        -      - alias: Bedroom lights on
        -        execute_service: light.turn_on
        -        service_data:
        -          entity_id: group.bedroom
        -      - delay:
        -          # supports seconds, milliseconds, minutes, hours, etc.
        -          minutes: 1
        -      - alias: Living room lights on
        -        execute_service: light.turn_on
        -        service_data:
        -          entity_id: group.living_room
        -
        - - +
        # Example configuration.yaml entry
        +script:
        +  # Turns on the bedroom lights and then the living room lights 1 minute later
        +  wakeup:
        +    alias: Wake Up
        +    sequence:
        +      - event: logbook_entry
        +        event_data:
        +          name: Paulus
        +          message: is waking up
        +          # Optional
        +          entity_id: device_tracker.paulus
        +          domain: light
        +      - alias: Bedroom lights on
        +        service: light.turn_on
        +        service_data:
        +          entity_id: group.bedroom
        +      - delay:
        +          # supports seconds, milliseconds, minutes, hours, etc.
        +          minutes: 1
        +      - alias: Living room lights on
        +        service: light.turn_on
        +        service_data:
        +          entity_id: group.living_room
        +
        @@ -168,6 +139,2128 @@ started using the service script/turn_on and interrupted using the + + @@ -203,5 +2296,10 @@ started using the service script/turn_on and interrupted using the + + + + + \ No newline at end of file diff --git a/components/sensor.arduino.html b/components/sensor.arduino.html index 065de3f435..d3718e57bd 100644 --- a/components/sensor.arduino.html +++ b/components/sensor.arduino.html @@ -9,20 +9,20 @@ - Arduino sensor support - Home Assistant + Arduino sensor - Home Assistant - + - + - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,43 +97,28 @@
        - -

        - Arduino Sensor Support + Arduino sensor


        - -

        -The arduino sensor platform allows allow you to get an numerical values from an analog input pin of an Arduino board. Usually the value is between 0 and 1024.

        +

        The arduino sensor platform allows allow you to get an numerical values from an analog input pin of an Arduino board. Usually the value is between 0 and 1024.

        To enable an Arduino sensor with Home Assistant, add the following section to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: arduino
        -  pins:
        -    1:
        -      name: Door switch
        -      type: analog
        -    0:
        -      name: Brightness
        -      type: analog
        -
        - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: arduino
        +  pins:
        +    1:
        +      name: Door switch
        +      type: analog
        +    0:
        +      name: Brightness
        +      type: analog
        +

        Configuration variables:

        @@ -150,13 +135,1513 @@ The arduino sensor platform allows allow you to get an numerical values from an

        The 6 analog pins of an Arduino UNO are numbered from A0 to A5.

        -
        + + @@ -192,5 +1677,10 @@ The arduino sensor platform allows allow you to get an numerical values from an + + + + + \ No newline at end of file diff --git a/components/sensor.arest.html b/components/sensor.arest.html index d5f973475c..9f5ae297e1 100644 --- a/components/sensor.arest.html +++ b/components/sensor.arest.html @@ -9,7 +9,7 @@ - aREST sensor support - Home Assistant + aREST sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,209 +97,140 @@
        - -

        - aREST Sensor Support + aREST sensor


        - -

        -The arest sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the aREST RESTful framework.

        +

        The arest sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the aREST RESTful framework.

        To use your aREST enabled device in your installation, add the following to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: arest
        -  resource: http://IP_ADDRESS
        -  monitored_variables:
        -    - name: temperature
        -      unit: '°C'
        -    - name: humidity
        -      unit: '%'
        -
        - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: arest
        +  resource: http://IP_ADDRESS
        +  name: Office
        +  monitored_variables:
        +    - name: temperature
        +      unit_of_measurement: '°C'
        +    - name: humidity
        +      unit_of_measurement: '%'
        +    pins:
        +      A0:
        +        name: Pin 0 analog
        +        unit_of_measurement: "ca"
        +        correction_factor: 0.01
        +        decimal_places: 1
        +      3:
        +        name: Pin 3 digital
        +

        Configuration variables:

        • resource (Required): IP address and schema of the device that is exposing an aREST API, e.g. http://192.168.1.10.
        • -
        • monitored_variables array: +
        • name (Optional): Let you overwrite the the name of the device. By default name from the device is used.
        • +
        • monitored_variables array (Optional): List of exposed variables.
          • name (Required): The name of the variable you wish to monitor.
          • unit (Optional): Defines the units of measurement of the sensor, if any.
        • +
        • pins array (Optional): List of pins to monitor. Analog pins need a leading A for the pin number. + +
            +
          • name (Optional): The name of the variable you wish to monitor.
          • +
          • unit_of_measurement (Optional): Defines the unit of measurement of the sensor, if any.
          • +
          • correction_factor (Optional): A float value to do some basic calculations.
          • +
          • decimal_places (Optional): Number of decimal places of the value. Default is 0.
          • +
          +

        The variables in the monitored_variables array must be available in the response of the device. As a starting point you find below a sketch for the Arduino device family. There are two variables (temperature and humidity) which will act as endpoints.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -18
        -19
        -20
        -21
        -22
        -23
        -24
        -25
        -26
        -27
        -28
        -29
        -30
        -31
        -32
        -33
        -34
        -35
        -36
        -37
        -38
        -39
        -40
        -41
        -42
        -43
        -44
        -45
        -46
        -47
        -48
        -49
        -50
        -51
        -52
        -53
        -54
        -55
        -56
        -57
        -58
        -
        /*
        -  This modified sketch is based on the Ethernet example of the aREST 
        -  (http://arest.io/) library.
        -*/
        -
        -// Libraries
        -#include <SPI.h>
        -#include <Ethernet.h>
        -#include <aREST.h>
        -#include <avr/wdt.h>
        -
        -// Device settings
        -char* deviceId = "sensor02";
        -char* deviceName = "livingroom";
        -byte deviceMac[] = { 0x20, 0xD5, 0xD3, 0x03, 0xFE, 0x31 };
        -IPAddress deviceIp(192, 168, 1, 12);
        -
        -EthernetServer server(80);
        -aREST rest = aREST();
        -
        -// Variables to be exposed to the API
        -int temperature;
        -int humidity;
        -
        -void setup(void) {
        -  Serial.begin(57600);
        -
        -  // Init variables and expose them to REST API
        -  temperature = 0;
        -  humidity = 0;
        -
        -  rest.variable("temperature", &temperature);
        -  rest.variable("humidity", &humidity);
        -
        -  // Give name and ID to device
        -  rest.set_id(deviceId);
        -  rest.set_name(deviceName);
        -
        -  Ethernet.begin(deviceMac, deviceIp);
        -
        -  server.begin();
        -  Serial.print("Sensor is ready...");
        -
        -  // Start watchdog
        -  wdt_enable(WDTO_4S);
        -}
        -
        -void loop() {
        -  EthernetClient client = server.available();
        -  rest.handle(client);
        -  wdt_reset();
        -
        -  // Replace this with your actual sensor readings, like
        -  // temperature = (((analogRead(A0) * 5.0) / 1024) - 0.5) * 10;
        -  temperature = random(400);
        -  humidity = random(600);
        -  delay(500);
        -}
        -
        +
        /*
        +  This modified sketch is based on the Ethernet example of the aREST 
        +  (http://arest.io/) library.
        +*/
         
        +// Libraries
        +#include <SPI.h>
        +#include <Ethernet.h>
        +#include <aREST.h>
        +#include <avr/wdt.h>
        +
        +// Device settings
        +char* deviceId = "sensor02";
        +char* deviceName = "livingroom";
        +byte deviceMac[] = { 0x20, 0xD5, 0xD3, 0x03, 0xFE, 0x31 };
        +IPAddress deviceIp(192, 168, 1, 12);
        +
        +EthernetServer server(80);
        +aREST rest = aREST();
        +
        +// Variables to be exposed to the API
        +int temperature;
        +int humidity;
        +
        +void setup(void) {
        +  Serial.begin(57600);
        +
        +  // Init variables and expose them to REST API
        +  temperature = 0;
        +  humidity = 0;
        +
        +  rest.variable("temperature", &temperature);
        +  rest.variable("humidity", &humidity);
        +
        +  // Give name and ID to device
        +  rest.set_id(deviceId);
        +  rest.set_name(deviceName);
        +
        +  Ethernet.begin(deviceMac, deviceIp);
        +
        +  server.begin();
        +  Serial.print("Sensor is ready...");
        +
        +  // Start watchdog
        +  wdt_enable(WDTO_4S);
        +}
        +
        +void loop() {
        +  EthernetClient client = server.available();
        +  rest.handle(client);
        +  wdt_reset();
        +
        +  // Replace this with your actual sensor readings, like
        +  // temperature = (((analogRead(A0) * 5.0) / 1024) - 0.5) * 10;
        +  temperature = random(400);
        +  humidity = random(600);
        +  delay(500);
        +}
        +

        Accessing one of the endpoints (eg. http://192.168.1.10/temperature) will give you the value inside a JSON response.

        -
        1
        -
        {"temperature": 23, "id": "sensor01", "name": "livingroom", "connected": true}
        -
        - +
        {"temperature": 23, "id": "sensor01", "name": "livingroom", "connected": true}
        +

        The root will give you a JSON response that contains all variables and their current values along with some device details.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -
        {
        -   "variables" : {
        -      "temperature" : 23,
        -      "humidity" : 82
        -   },
        -   "id" : "sensor01",
        -   "name" : "livingroom",
        -   "connected" : true
        -}
        -
        - - - - +
        {
        +   "variables" : {
        +      "temperature" : 23,
        +      "humidity" : 82
        +   },
        +   "id" : "sensor01",
        +   "name" : "livingroom",
        +   "connected" : true
        +}
        +
        @@ -307,6 +238,1592 @@ The arest sensor platform allows you to get all data from your devices (like Ard + + @@ -342,5 +1859,10 @@ The arest sensor platform allows you to get all data from your devices (like Ard + + + + + \ No newline at end of file diff --git a/components/sensor.bitcoin.html b/components/sensor.bitcoin.html index f423037c39..aec11363d1 100644 --- a/components/sensor.bitcoin.html +++ b/components/sensor.bitcoin.html @@ -9,7 +9,7 @@ - Bitcoin support - Home Assistant + Bitcoin - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
        @@ -97,39 +97,26 @@
        - -

        - Command Line Sensors Support + Command line sensor


        - -

        -A sensor platform that issues specific commands to get data. This might very well become our most powerful platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

        +

        A sensor platform that issues specific commands to get data. This might very well become our most powerful platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

        To enable it, add the following lines to your configuration.yaml:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: command_sensor
        -  command: SENSOR_COMMAND
        -  name: Command sensor
        -  unit_of_measurement: "°C"
        -  correction_factor: 0.4921
        -  decimal_places: 0
        -
        - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: command_sensor
        +  command: SENSOR_COMMAND
        +  name: Command sensor
        +  unit_of_measurement: "°C"
        +  correction_factor: 0.4921
        +  decimal_places: 0
        +

        Configuration variables:

        @@ -150,47 +137,31 @@ A sensor platform that issues specific commands to get data. This might very wel

        There are several ways to get the temperature of your hard drive. A simple solution is to use hddtemp.

        -
        1
        -
        hddtemp -n /dev/sda
        -
        - +
        hddtemp -n /dev/sda
        +

        To use those information, the entry for a sensor in the configuration.yaml file will look like this.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: command_sensor
        -  name: HD Temperature
        -  command: "hddtemp -n /dev/sda"
        -  unit_of_measurement: "°C"
        -
        - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: command_sensor
        +  name: HD Temperature
        +  command: "hddtemp -n /dev/sda"
        +  unit_of_measurement: "°C"
        +

        CPU temperature

        Thanks to the proc file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your configuration.yaml file:

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -  - platform: command_sensor
        -    name: CPU Temperature
        -    command: "cat /sys/class/thermal/thermal_zone0/temp"
        -    unit_of_measurement: "°C"
        -    correction_factor: 0.001
        -
        - +
        # Example configuration.yaml entry
        +  - platform: command_sensor
        +    name: CPU Temperature
        +    command: "cat /sys/class/thermal/thermal_zone0/temp"
        +    unit_of_measurement: "°C"
        +    correction_factor: 0.001
        +

        The correction_factor will make sure that the value is shown in a useful format in the frontend.

        @@ -200,45 +171,27 @@ is of interest. Add something similar to your configuration.yaml fi

        The one-line script to retrieve a value is shown below. Of course would it be possible to use this directly in the configuration.yaml file but need extra care about the quotation marks.

        -
        1
        -
        python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
        -
        - +
        python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
        +

        The script (saved as arest-value.py) that is used looks like the example below.

        -
        1
        -2
        -3
        -4
        -5
        -
        #!/usr/bin/python3
        -#
        -from requests import get
        -response = get('http://10.0.0.48/analog/2')
        -print(response.json()['return_value'])
        -
        - +
        #!/usr/bin/python3
        +#
        +from requests import get
        +response = get('http://10.0.0.48/analog/2')
        +print(response.json()['return_value'])
        +

        To use the script you need to add something like the following to your configuration.yaml file.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: command_sensor
        -  name: Brightness
        -  command: "python3 /path/to/script/arest-value.py"
        -  unit_of_measurement: "°C"
        -
        - - - - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: command_sensor
        +  name: Brightness
        +  command: "python3 /path/to/script/arest-value.py"
        +  unit_of_measurement: "°C"
        +
        @@ -246,6 +199,1577 @@ is of interest. Add something similar to your configuration.yaml fi + + @@ -281,5 +1805,10 @@ is of interest. Add something similar to your configuration.yaml fi + + + + + \ No newline at end of file diff --git a/components/sensor.cpuspeed.html b/components/sensor.cpuspeed.html new file mode 100644 index 0000000000..7c6140386c --- /dev/null +++ b/components/sensor.cpuspeed.html @@ -0,0 +1,1742 @@ + + + + + + + + + + + + CPU speed - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        +
        + +
        + + +
        +
        +

        + CPU speed +

        +
        +
        + +

        The cpuspeed sensor platform to allow you to monitor the current CPU speed.

        + +

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

        + +
        # Example configuration.yaml entry
        +sensor:
        +  platform: cpuspeed
        +  name: CPU 
        +
        + +

        Configuration variables:

        + +
          +
        • name (Optional): Name of the sensor.
        • +
        + + +
        + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.dht.html b/components/sensor.dht.html index b5f300cd9b..c3d7f89f18 100644 --- a/components/sensor.dht.html +++ b/components/sensor.dht.html @@ -9,7 +9,7 @@ - DHT support - Home Assistant + DHT sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,39 +97,26 @@
        - -

        - DHT Support + DHT sensor


        - -

        -The dht sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device.

        +

        The dht sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22, or AM2302 device.

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: dht
        -  sensor: DHT22
        -  pin: 23
        -  monitored_conditions:
        -    - temperature
        -    - humidity
        -
        - +
        # Example configuration.yaml entry
        +sensor:
        +  platform: dht
        +  sensor: DHT22
        +  pin: 23
        +  monitored_conditions:
        +    - temperature
        +    - humidity
        +

        Configuration variables:

        @@ -157,13 +144,1493 @@ As this requires access to the GPIO, you will need to run Home Assistant as root -
        + + @@ -199,5 +1666,10 @@ As this requires access to the GPIO, you will need to run Home Assistant as root + + + + + \ No newline at end of file diff --git a/components/sensor.efergy.html b/components/sensor.efergy.html index 65209c2fac..bc81aa4799 100644 --- a/components/sensor.efergy.html +++ b/components/sensor.efergy.html @@ -9,7 +9,7 @@ - Efergy support - Home Assistant + Efergy sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,43 +97,27 @@
        - -

        - Efergy Support + Efergy sensor


        - -

        -Integrate your Efergy meter information into Home Assistant. To get an app token, log in to your efergy account, go to the Settings page, click on App tokens, and click “Add token”.

        - -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -
        # Example configuration.yaml entry
        -sensor:
        -  platform: efergy
        -  app_token: APP_TOKEN
        -  utc_offset: UTC_OFFSET
        -  monitored_variables:
        -    - type: instant_readings
        -    - type: budget
        -    - type: cost
        -      period: day
        -      currency: $
        -
        +

        Integrate your Efergy meter information into Home Assistant. To get an app token, log in to your efergy account, go to the Settings page, click on App tokens, and click “Add token”.

        +
        # Example configuration.yaml entry
        +sensor:
        +  platform: efergy
        +  app_token: APP_TOKEN
        +  utc_offset: UTC_OFFSET
        +  monitored_variables:
        +    - type: instant_readings
        +    - type: budget
        +    - type: cost
        +      period: day
        +      currency: $
        +

        Configuration variables:

        @@ -152,13 +136,1585 @@ negative number of minutes your timezone is ahead/behind UTC time.
      - + + @@ -194,5 +1750,10 @@ negative number of minutes your timezone is ahead/behind UTC time.
    • + + + + + \ No newline at end of file diff --git a/components/sensor.forecast.html b/components/sensor.forecast.html index f3ce639be7..40f7856b57 100644 --- a/components/sensor.forecast.html +++ b/components/sensor.forecast.html @@ -9,7 +9,7 @@ - Forecast.io support - Home Assistant + Forecast.io - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,65 +97,48 @@
      - -

      - Forecast.io Support + Forecast.io


      - -

      -The forecast platform uses the Forecast.io web service as a source for meteorological data for your location. The location is based on the Longitude and Latitude cooridinates configured in configuration.yaml. The cooridinates are auto detected but to take advantage of the hyper-local weather reported by forecast.io, you can refine them down to your exact home address. GPS cooridinates can be found by using Google Maps and clicking on your home.

      +

      The forecast platform uses the Forecast.io web service as a source for meteorological data for your location. The location is based on the Longitude and Latitude cooridinates configured in configuration.yaml. The cooridinates are auto detected but to take advantage of the hyper-local weather reported by forecast.io, you can refine them down to your exact home address. GPS cooridinates can be found by using Google Maps and clicking on your home.

      You need an API key which is free but requires a registration. You can make 1000 requests per day. This means that you could create approximately every 1.4 minute one.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: forecast
      -  api_key: YOUR_APP_KEY
      -  monitored_conditions:
      -    - summary
      -    - precip_type
      -    - precip_intensity
      -    - temperature
      -    - dew_point
      -    - wind_speed
      -    - wind_bearing
      -    - cloud_cover
      -    - humidity
      -    - pressure
      -    - visibility
      -    - ozone
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: forecast
      +  api_key: YOUR_APP_KEY
      +  monitored_conditions:
      +    - summary
      +    - icon
      +    - nearest_storm_distance
      +    - nearest_storm_bearing
      +    - precip_type
      +    - precip_intensity
      +    - precip_probability
      +    - temperature
      +    - apparent_temperature
      +    - dew_point
      +    - wind_speed
      +    - wind_bearing
      +    - cloud_cover
      +    - humidity
      +    - pressure
      +    - visibility
      +    - ozone
      +

      Configuration variables:

      • api_key (Required): Your API key for http://forecast.io/.
      • -
      • display_conditions array (Required): Conditions to display in the frontend. +
      • monitored_conditions array (Required): Conditions to display in the frontend.
        • summary: A human-readable text summary.
        • @@ -172,18 +155,1482 @@ The forecast platform uses the Forecast.io we
        • ozone: The columnar density of total atmospheric ozone in Dobson.
      • +
      • units (Optional): Specify the unit system. Default to si or us based on the temperature preference in Home Assistant. Other options are auto, us, si, ca, and uk2. +auto will let forecast.io decide the unit system based on location.

      Details about the API are available in the Forecast.io documentation.

      -
      + + @@ -219,5 +1666,10 @@ The forecast platform uses the Forecast.io we + + + + + \ No newline at end of file diff --git a/components/sensor.glances.html b/components/sensor.glances.html index 452d1c23d9..5399bee1e9 100644 --- a/components/sensor.glances.html +++ b/components/sensor.glances.html @@ -9,7 +9,7 @@ - Glances sensor support - Home Assistant + Glances - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,74 +97,45 @@
      - -

      - Glances Sensor Support + Glances


      - -

      -The glances sensor platform is consuming the system information provided by the Glances API. This enables one to track remote host and display their stats in Home Assistant.

      +

      The glances sensor platform is consuming the system information provided by the Glances API. This enables one to track remote host and display their stats in Home Assistant.

      This sensors needs a running isntance of glances on the host:

      -
      1
      -2
      -
      glances -w
      -Glances web server started on http://0.0.0.0:61208/
      -
      - +
      glances -w
      +Glances web server started on http://0.0.0.0:61208/
      +

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: glances
      -  name: Glances sensor
      -  host: IP_ADDRESS
      -  port: 61208
      -  resources:
      -    - 'disk_use_percent'
      -    - 'disk_use'
      -    - 'disk_free'
      -    - 'memory_use_percent'
      -    - 'memory_use'
      -    - 'memory_free'
      -    - 'swap_use_percent'
      -    - 'swap_use'
      -    - 'swap_free'
      -    - 'processor_load'
      -    - 'process_running'
      -    - 'process_total'
      -    - 'process_thread'
      -    - 'process_sleeping'
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: glances
      +  name: Glances sensor
      +  host: IP_ADDRESS
      +  port: 61208
      +  resources:
      +    - 'disk_use_percent'
      +    - 'disk_use'
      +    - 'disk_free'
      +    - 'memory_use_percent'
      +    - 'memory_use'
      +    - 'memory_free'
      +    - 'swap_use_percent'
      +    - 'swap_use'
      +    - 'swap_free'
      +    - 'processor_load'
      +    - 'process_running'
      +    - 'process_total'
      +    - 'process_thread'
      +    - 'process_sleeping'
      +

      Configuration variables:

      @@ -194,13 +165,1585 @@ The glances sensor platform is consuming the system information provided by the
    - + + @@ -236,5 +1779,10 @@ The glances sensor platform is consuming the system information provided by the + + + + + \ No newline at end of file diff --git a/components/sensor.html b/components/sensor.html new file mode 100644 index 0000000000..205ae41b4f --- /dev/null +++ b/components/sensor.html @@ -0,0 +1,2117 @@ + + + + + + + + + + + + Sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + Sensor +

    +
    +
    + +

    Sensors are gathering information about states and conditions.

    + +

    Home Assistant currently supports a wide range of sensors. They are able to display information which are provides by Home assistant directly, are gathered from webservices, and, of course, physical devices. Please check the sidebar for a full list of supported sensor platforms.

    + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.modbus.html b/components/sensor.modbus.html new file mode 100644 index 0000000000..6016b88976 --- /dev/null +++ b/components/sensor.modbus.html @@ -0,0 +1,1810 @@ + + + + + + + + + + + + Modbus sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + +
    +
    + +
    + + +
    +
    +

    + Modbus sensor +

    +
    +
    + +

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

    + +

    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
    +
    + +

    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.
        • +
        +
      • +
      +
    • +
    + + +

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

    + + + + +
    + + +
    + + + + +
    +
    + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.mqtt.html b/components/sensor.mqtt.html index 84b728af25..9cf724be7c 100644 --- a/components/sensor.mqtt.html +++ b/components/sensor.mqtt.html @@ -9,7 +9,7 @@ - MQTT Sensor support - Home Assistant + MQTT sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,38 +97,25 @@
      - -

      - MQTT Sensor Support + MQTT sensor


      - -

      -This generic sensor implementation uses the MQTT message payload -as the sensor value. If messages in this state_topic are published -with RETAIN flag, the sensor will receive an instant update with -last known value. Otherwise, the initial state will be undefined.

      +

      This MQTT sensor implementation uses the MQTT message payload as the sensor value. If messages in this state_topic are published with RETAIN flag, the sensor will receive an instant update with last known value. Otherwise, the initial state will be undefined.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yml entry
      -sensor:
      -  platform: mqtt
      -  state_topic: "home/bedroom/temperature"
      -  name: "MQTT Sensor"
      -  qos: 0
      -  unit_of_measurement: "°C"
      -
      +

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

      +
      # Example configuration.yml entry
      +sensor:
      +  platform: mqtt
      +  state_topic: "home/bedroom/temperature"
      +  name: "MQTT Sensor"
      +  qos: 0
      +  unit_of_measurement: "°C"
      +

      Configuration variables:

      @@ -140,13 +127,1613 @@ last known value. Otherwise, the initial state will be undefined.

    - + + @@ -182,5 +1769,10 @@ last known value. Otherwise, the initial state will be undefined.

    + + + + + \ No newline at end of file diff --git a/components/sensor.mysensors.html b/components/sensor.mysensors.html index d5436f296e..39b5036307 100644 --- a/components/sensor.mysensors.html +++ b/components/sensor.mysensors.html @@ -9,20 +9,20 @@ - MySensors support - Home Assistant + MySensors sensor - Home Assistant - + - + - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,44 +97,38 @@
      - -

      - MySensors Support + MySensors sensor


      - -

      -The MySensors project combines Arduino boards with NRF24L01 radio boards to build sensor networks.

      +

      The MySensors project combines Arduino boards with NRF24L01 radio boards to build sensor networks. The mysensors platform support sensors connected to the MYSensors Gateway.

      -

      Integrate your Serial MYSensors Gateway by adding the following to your configuration.yaml:

      - -
      1
      -2
      -3
      -4
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: mysensors
      -  port: /dev/ttyACM0
      -
      +

      Integrate your Serial MYSensors Gateway by adding the following to your configuration.yaml file:

      +
      # Example configuration.yaml entry
      +sensor:
      +  platform: mysensors
      +  port: /dev/ttyACM0
      +

      Configuration variables:

        -
      • port (Required): The port where your board is connected to your Home Assistant host. If you are using an original Arduino the port will be named ttyACM*. The exact number can be determined with ls /dev/ttyACM*.
      • +
      • port (Required): The port where your board is connected to your Home Assistant host.
      • +
      • debug (Optional): Enable or disable verbose debug logging.
      • +
      • persistence (Optional): Enable or disable local persistence of sensor information. If this is disabled, then each sensor will need to send presentation messages after Home Assistant starts.
      • +
      • persistence_file (Optional): Path to a file to save sensor information. The file extension determines the file type. Currently supported file types are ‘pickle’ and ‘json’.
      • +
      • version (Optional): Specifies the MySensors protocol version to use (ex. 1.4, 1.5).
      -
      1
      -
      ls /dev/ttyACM*
      -
      - +

      If you are using an original Arduino the port will be named ttyACM*. The exact number can be determined with the command shown below.

      +
      ls /dev/ttyACM*
      +
      @@ -142,6 +136,1579 @@ The MySensors project combines Arduino b + + @@ -177,5 +1744,10 @@ The MySensors project combines Arduino b + + + + + \ No newline at end of file diff --git a/components/sensor.openweathermap.html b/components/sensor.openweathermap.html index ea263073ba..fd1cbb6c05 100644 --- a/components/sensor.openweathermap.html +++ b/components/sensor.openweathermap.html @@ -9,7 +9,7 @@ - OpenWeatherMap support - Home Assistant + OpenWeatherMap - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -97,70 +97,43 @@
      - -

      - RESTful Sensor Support + RESTful sensor


      - -

      -The rest sensor platform is consuming a give endpoint which is exposed by a RESTful API of a device, an application, or a web service. The sensor has support for GET and POST requests.

      +

      The rest sensor platform is consuming a given endpoint which is exposed by a RESTful API of a device, an application, or a web service. The sensor has support for GET and POST requests.

      -

      To enable this sensor, add the following lines to your configuration.yaml for a GET request:

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: rest
      -  resource: http://IP_ADDRESS/ENDPOINT
      -  method: GET
      -  name: REST GET sensor
      -  variable: 'return_value'
      -  unit_of_measurement: "°C"
      -  correction_factor: 0.01
      -  decimal_places: 0
      -
      +

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

      +
      # Example configuration.yaml entry
      +sensor:
      +  platform: rest
      +  resource: http://IP_ADDRESS/ENDPOINT
      +  method: GET
      +  name: REST GET sensor
      +  variable: 'return_value'
      +  unit_of_measurement: "°C"
      +  correction_factor: 0.01
      +  decimal_places: 0
      +

      or for a POST request:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: rest
      -  resource: http://IP_ADDRESS/ENDPOINT
      -  method: POST
      -  variable: 'temperature' or ['Temperatures', 0, 'CurrentReading']
      -  payload: '{ "device" : "heater" }'
      -  name: REST POST sensor
      -  unit_of_measurement: "°C"
      -  correction_factor: 0.0001
      -  decimal_places: 0
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: rest
      +  resource: http://IP_ADDRESS/ENDPOINT
      +  method: POST
      +  variable: 'temperature' or ['Temperatures', 0, 'CurrentReading']
      +  payload: '{ "device" : "heater" }'
      +  name: REST POST sensor
      +  unit_of_measurement: "°C"
      +  correction_factor: 0.0001
      +  decimal_places: 0
      +

      Configuration variables:

      @@ -183,12 +156,9 @@ Make sure that the URL matches exactly your endpoint or resource.

      curl could help you with the identification of the variable you want to display in your Home Assistant frontend. The example below show the JSON response of a device that is running with aREST.

      -
      1
      -2
      -
      $ curl -X GET http://192.168.1.31/temperature/
      -{"temperature": 77, "id": "sensor02", "name": "livingroom", "connected": true}
      -
      - +
      $ curl -X GET http://192.168.1.31/temperature/
      +{"temperature": 77, "id": "sensor02", "name": "livingroom", "connected": true}
      +

      Examples

      @@ -200,46 +170,28 @@ Make sure that the URL matches exactly your endpoint or resource.

      To display the IP address, the entry for a sensor in the configuration.yaml file will look like this.

      -
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -  - platform: rest
      -    resource: http://ip.jsontest.com
      -    name: External IP
      -    variable: 'ip'
      -
      - +
      # Example configuration.yaml entry
      +  - platform: rest
      +    resource: http://ip.jsontest.com
      +    name: External IP
      +    variable: 'ip'
      +

      Single value from a local Glances instance

      -

      The glances sensor is doing a similar thing

      +

      The glances sensor is doing the exact same thing for all exposed values.

      Add something similar to the entry below to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -  - platform: rest
      -    resource: http://IP_ADRRESS:61208/api/2/mem/used
      -    name: Used mem
      -    variable: 'used'
      -    unit_of_measurement: MB
      -    correction_factor: 0.000000954
      -    decimal_places: 0
      -
      - - - - +
      # Example configuration.yaml entry
      +  - platform: rest
      +    resource: http://IP_ADRRESS:61208/api/2/mem/used
      +    name: Used mem
      +    variable: 'used'
      +    unit_of_measurement: MB
      +    correction_factor: 0.000000954
      +    decimal_places: 0
      +
      @@ -247,6 +199,1590 @@ Make sure that the URL matches exactly your endpoint or resource. + + @@ -282,5 +1818,10 @@ Make sure that the URL matches exactly your endpoint or resource. + + + + + \ No newline at end of file diff --git a/components/sensor.rfxtrx.html b/components/sensor.rfxtrx.html index f2d70419e3..e68e5fcdba 100644 --- a/components/sensor.rfxtrx.html +++ b/components/sensor.rfxtrx.html @@ -9,7 +9,7 @@ - RFXtrx sensors support - Home Assistant + RFXtrx sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,45 +97,21 @@
      - -

      - RFXtrx Sensors Support + RFXtrx sensor


      -

      The rfxtrx platform support sensors that communicate in the frequency range of 433.92 MHz.

      To enable RFXtrx sensors in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: rfxtrx
      -  devices:
      -    ac09c4f1: Temperature
      -    ac09c4f2: Humidity
      -  automatic_add: True
      -
      - - -

      Configuration variables:

      - -
        -
      • devices (Required): A list of devices with their name to use in the frontend.
      • -
      • automatic_add (Optional): To enable the automatic addition of new sensors.
      • -
      - - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: rfxtrx
      +
      @@ -143,6 +119,1600 @@ + + @@ -178,5 +1748,10 @@ + + + + + \ No newline at end of file diff --git a/components/sensor.rpi_gpio.html b/components/sensor.rpi_gpio.html index 034e8ae74d..7924249f16 100644 --- a/components/sensor.rpi_gpio.html +++ b/components/sensor.rpi_gpio.html @@ -9,7 +9,7 @@ - Raspberry PI GPIO sensor support - Home Assistant + Raspberry PI GPIO sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,40 +97,42 @@
      - -

      - Raspberry PI GPIO Sensor Support + Raspberry PI GPIO sensor


      - -

      -The rpi_gpio sensor platform allows you to read sensor values of the GPIOs of your Raspberry Pi.

      +

      The rpi_gpio sensor platform allows you to read sensor values of the GPIOs of your Raspberry Pi.

      To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: rpi_gpio
      -  pull_mode: "UP"
      -  value_high: "Active"
      -  value_low: "Inactive"
      -  ports:
      -    11: PIR Office
      -    12: PIR Bedroom
      -
      +
      # Example configuration.yaml entry
      +sensor:
      +  platform: rpi_gpio
      +  ports:
      +    11: PIR Office
      +    12: PIR Bedroom
      +  pull_mode: "UP"
      +  value_high: "Active"
      +  value_low: "Inactive"
      +
      + +

      Configuration variables:

      + +
        +
      • ports array (Required): Array of used ports. + +
          +
        • port: name (Required): Your username for the Edimax switch.
        • +
        +
      • +
      • pull_mode (Optional): The internal pull to use (UP or DOWN). Default is UP.
      • +
      • value_high (Optional): The value of the sensor when the port is HIGH. Default is “HIGH”.
      • +
      • value_low (Optional): The value of the sensor when the port is LOW. Default is “LOW”.
      • +
      • bouncetime (Optional): The time in milliseconds for port debouncing. Default is 50ms.
      • +

      For more details about the GPIO layout, visit the Wikipedia article about the Raspberry Pi.

      @@ -142,6 +144,10 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r +

      +To avoid having to run Home Assistant as root when using this component, run a Raspbian version released at or after September 29, 2015. +

      +
      @@ -149,6 +155,1502 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r + + @@ -184,5 +1686,10 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r + + + + + \ No newline at end of file diff --git a/components/sensor.sabnzbd.html b/components/sensor.sabnzbd.html index 456490434f..045f4401ea 100644 --- a/components/sensor.sabnzbd.html +++ b/components/sensor.sabnzbd.html @@ -9,7 +9,7 @@ - SABnzbd support - Home Assistant + SABnzbd - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Swiss Public Transport Support + Swiss Public Transport


      - -

      -The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland.

      +

      The swiss public transport sensor will give you the next two departure times from a given location to another one in Switzerland.

      The Stationboard website can help to determine the exact name of the start and the end station. With the station names it’s necessary to search for the ID of those stations:

      @@ -116,18 +112,12 @@ The swiss public transport sensor will give you the next two departure times fro

      If the score is 100 (“score”:“100” in the response), it is a perfect match. Then add the data to your configuration.yaml file as shown in the example:

      -
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: swiss_public_transport
      -  from: STATION_ID
      -  to: STATION_ID
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: swiss_public_transport
      +  from: STATION_ID
      +  to: STATION_ID
      +

      Configuration variables:

      @@ -139,13 +129,1583 @@ The swiss public transport sensor will give you the next two departure times fro

      The public timetables are coming from Swiss public transport.

      -
      + + @@ -181,5 +1741,10 @@ The swiss public transport sensor will give you the next two departure times fro + + + + + \ No newline at end of file diff --git a/components/sensor.systemmonitor.html b/components/sensor.systemmonitor.html index 2b46498f79..8f44909d6f 100644 --- a/components/sensor.systemmonitor.html +++ b/components/sensor.systemmonitor.html @@ -9,20 +9,20 @@ - Monitor server resources - Home Assistant + System Monitor - Home Assistant - + - + - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,39 +97,26 @@
      - -

      - Monitor Server Resources + System Monitor


      - -

      -The system monitoring sensor platform to allow you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated.

      +

      The system monitoring sensor platform to allow you to monitor disk usage, memory usage, CPU usage, and running processes. This platform has superseded the process component which is now considered deprecated.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -sensor:
      -  - platform: systemmonitor
      -    resources:
      -      - type: disk_use_percent
      -        arg: /home
      -      - type: memory_free
      -      - type: processor_use
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: systemmonitor
      +  resources:
      +    - type: disk_use_percent
      +      arg: /home
      +    - type: memory_free
      +    - type: processor_use
      +

      Configuration variables:

      @@ -234,15 +221,1583 @@ The system monitoring sensor platform to allow you to monitor disk usage, memory -

      Theodor Lindquist has contributed the System monitoring platform.

      - -
      + + @@ -278,5 +1833,10 @@ The system monitoring sensor platform to allow you to monitor disk usage, memory + + + + + \ No newline at end of file diff --git a/components/sensor.tellstick.html b/components/sensor.tellstick.html new file mode 100644 index 0000000000..f50112496c --- /dev/null +++ b/components/sensor.tellstick.html @@ -0,0 +1,1774 @@ + + + + + + + + + + + + TellStick sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + TellStick sensor +

      +
      +
      + +

      This tellstick sensor platform allows you to get current meteorological data from a TellStick device.

      + +

      To use your TellStick device in your installation, add the following to your configuration.yaml file:

      + +
      # Example configuration.yaml entry
      +sensor:
      +  platform: tellstick
      +  135: Outside
      +  21: Inside
      +  only_named: True
      +  temperature_scale: "°C"
      +  datatype_mask: 1
      +
      + +

      Configuration variables:

      + +
        +
      • ID: Name Optional: Entry for a sensor with the name for it and its ID.
      • +
      • only_named Optional: Only show the named sensors. Set to True to hide sensors.
      • +
      • temperature_scale Optional: The scale of the temperature value.
      • +
      • datatype_mask Optional: Mask to determine which sensor values to show based on. Please check the TellCore tellcore.constants documentation for details.
      • +
      + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.temper.html b/components/sensor.temper.html index f6bd1b771e..871bd752be 100644 --- a/components/sensor.temper.html +++ b/components/sensor.temper.html @@ -9,7 +9,7 @@ - TEMPer sensors support - Home Assistant + TEMPer sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,29 +97,21 @@
      - -

      - TEMPer Sensors Support + TEMPer sensor


      -

      This temper sensor platform allows you to get the current temperature from a TEMPer device.

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

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: temper
      -
      - - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: temper
      +
      @@ -127,6 +119,1577 @@ + + @@ -162,5 +1725,10 @@ + + + + + \ No newline at end of file diff --git a/components/sensor.time_date.html b/components/sensor.time_date.html index 3a8d34cd89..93db506c00 100644 --- a/components/sensor.time_date.html +++ b/components/sensor.time_date.html @@ -9,7 +9,7 @@ - Time & Date support - Home Assistant + Time & Date - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,43 +97,28 @@
      - -

      - Time & Date Support + Time & Date


      - -

      -The time and date platform simple displays the time in various formats, the date, or both.

      +

      The time and date platform simple displays the time in various formats, the date, or both.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: time_date
      -  display_options:
      -    - 'time'
      -    - 'date'
      -    - 'date_time'
      -    - 'time_date'
      -    - 'time_utc'
      -    - 'beat'
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: time_date
      +  display_options:
      +    - 'time'
      +    - 'date'
      +    - 'date_time'
      +    - 'time_date'
      +    - 'time_utc'
      +    - 'beat'
      +

      The types date_time and time_date shows the date and the time. The other types just the time or the date. beat shows the Swatch Internet Time.

      @@ -144,13 +129,1583 @@ The time and date platform simple displays the time in various formats, the date -
      + + @@ -186,5 +1741,10 @@ The time and date platform simple displays the time in various formats, the date + + + + + \ No newline at end of file diff --git a/components/sensor.transmission.html b/components/sensor.transmission.html index 577ae8201d..69d6f14aed 100644 --- a/components/sensor.transmission.html +++ b/components/sensor.transmission.html @@ -9,7 +9,7 @@ - Transmission support - Home Assistant + Transmission sensor - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,50 +97,33 @@
      - -

      - Transmission Support + Transmission sensor


      - -

      -The Transmission platform allows you to monitor your downloads from within Home Assistant and setup automation based on the information.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: transmission
      -  host: 192.168.1.26
      -  port: 9091
      -  name: Transmission
      -  username: YOUR_USERNAME
      -  password: YOUR_PASSWORD
      -  monitored_variables:
      -    - 'current_status'
      -    - 'download_speed'
      -    - 'upload_speed'
      -
      +

      The Transmission platform allows you to monitor your downloads from within Home Assistant and setup automation based on the information.

      +
      # Example configuration.yaml entry
      +sensor:
      +  platform: transmission
      +  host: IP_ADDRESS
      +  port: 9091
      +  name: Transmission
      +  username: YOUR_USERNAME
      +  password: YOUR_PASSWORD
      +  monitored_variables:
      +    - 'current_status'
      +    - 'download_speed'
      +    - 'upload_speed'
      +

      Configuration variables:

        -
      • host (Required): This is the IP address of your Transmission daemon, e.g. 192.168.1.32.
      • +
      • host (Required): This is the IP address of your Transmission daemon, eg. 192.168.1.32.
      • port (Optional): The port your Transmission daemon uses, defaults to 9091.
      • name (Optional): The name to use when displaying this Transmission instance.
      • username (Optional): Your Transmission username, if you use authentication.
      • @@ -170,7 +153,6 @@ The Transmission platform allows yo

        -

        James Cole has contributed the transmission platform.

      @@ -179,6 +161,1592 @@ The Transmission platform allows yo + + @@ -214,5 +1782,10 @@ The Transmission platform allows yo + + + + + \ No newline at end of file diff --git a/components/sensor.vera.html b/components/sensor.vera.html new file mode 100644 index 0000000000..bbf6eca780 --- /dev/null +++ b/components/sensor.vera.html @@ -0,0 +1,1780 @@ + + + + + + + + + + + + Vera sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Vera sensor +

      +
      +
      + +

      This vera sensor platform allows you to get data from your Vera sensors.

      + +

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

      + +
      # Example configuration.yaml entry
      +sensor:
      +  platform: vera
      +  vera_controller_url: http://YOUR_VERA_IP:3480/
      +  device_data:
      +    12:
      +      name: My awesome sensor
      +      exclude: true
      +    13:
      +      name: Another sensor
      +
      + +

      Configuration variables:

      + +
        +
      • vera_controller_url (Required): This is the base URL of your vera controller including the port number if not running on 80, eg. http://192.168.1.21:3480/
      • +
      • device_data array (Optional):This contains an array additional device information for your Vera devices. It is not required and if not specified all sensors configured in your Vera controller will be added with default values. You should use the id of your Vera device as the key for the device within device_data. + +
          +
        • name (Optional):This parameter allows you to override the name of your Vera device in the frontend, if not specified the value configured for the device in your Vera will be used.
        • +
        • exclude (Optional): This parameter allows you to exclude the specified device, it should be set to “True” if you want this device excluded.
        • +
        +
      • +
      + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.wink.html b/components/sensor.wink.html new file mode 100644 index 0000000000..d20ba57cbc --- /dev/null +++ b/components/sensor.wink.html @@ -0,0 +1,1754 @@ + + + + + + + + + + + + Wink sensor - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Wink sensor +

      +
      +
      + +

      The wink sensor platform allows you to get data from your Wink sensors.

      + +

      The requirement is that you have setup your Wink hub.

      + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/sensor.worldclock.html b/components/sensor.worldclock.html index de359cb9c3..e4ca88e375 100644 --- a/components/sensor.worldclock.html +++ b/components/sensor.worldclock.html @@ -9,7 +9,7 @@ - Worldclock support - Home Assistant + Worldclock - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,23 @@
      - -

      - Worldclock Support + Worldclock


      - -

      -The worldclock platform simple displays the current time in a different time zone

      +

      The worldclock platform simple displays the current time in a different time zone

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

      -
      1
      -2
      -3
      -4
      -5
      -
      # Example configuration.yaml entry
      -sensor:
      -  platform: worldclock
      -  time_zone: America/New_York
      -  name: New York
      -
      - +
      # Example configuration.yaml entry
      +sensor:
      +  platform: worldclock
      +  time_zone: America/New_York
      +  name: New York
      +

      Configuration variables:

      @@ -135,11 +125,8 @@ The worldclock platform simple displays the current time in a different time zon

      For valid time zones check the TZ column in the Wikipedia overview. Or get the full list from the pytz module.

      -
      1
      -
      python3 -c "import pytz;print(pytz.all_timezones)"
      -
      - - +
      python3 -c "import pytz;print(pytz.all_timezones)"
      +
      @@ -147,6 +134,1577 @@ The worldclock platform simple displays the current time in a different time zon + + @@ -182,5 +1740,10 @@ The worldclock platform simple displays the current time in a different time zon + + + + + \ No newline at end of file diff --git a/components/shell_command.html b/components/shell_command.html new file mode 100644 index 0000000000..7f4a0470d2 --- /dev/null +++ b/components/shell_command.html @@ -0,0 +1,2293 @@ + + + + + + + + + + + + Shell command - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Shell command +

      +
      +
      + +

      This component can expose regular shell commands as services. Services can be called from a script +or in automation.

      + +
      # Example configuration.yaml entry
      +# Exposes service shell_command.restart_pow
      +shell_command:
      +  restart_pow: touch ~/.pow/restart.txt
      +
      + +

      Configuration variables:

      + +
        +
      • Alias for the command
      • +
      • Command itself.
      • +
      + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/simple_alarm.html b/components/simple_alarm.html index 558da1f559..ec127358b7 100644 --- a/components/simple_alarm.html +++ b/components/simple_alarm.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,33 +97,31 @@
      - -

      Intruder Alerts


      -

      The component simple_alarm is capable of detecting intruders. It does so by checking if lights are being turned on while there is no one at home. When this happens it will turn the lights red, flash them for 30 seconds and send a message via the notifiy component. It will also flash a specific light when a known person comes home.

      This component depends on the components device_tracker and light being setup.

      -

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

      +

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

      -
      1
      -2
      -3
      -4
      -5
      -
      simple_alarm:
      -  # Which light/light group has to flash when a known device comes home
      -  known_light: light.Bowl
      -  # Which light/light group has to flash red when light turns on while no one home
      -  unknown_light: group.living_room
      +
      simple_alarm:
      +# Example configuration.yaml entry
      +  known_light: light.Bowl
      +  unknown_light: group.living_room
      +
      +

      Configuration variables:

      + +
        +
      • known_light (Required): Which light/light group has to flash when a known device comes home.
      • +
      • unknown_light (Required): Which light/light group has to flash red when light turns on while no one home.
      • +
      @@ -132,6 +130,2110 @@ + + @@ -167,5 +2269,10 @@ + + + + + \ No newline at end of file diff --git a/components/sun.html b/components/sun.html index a146aa8fe3..b1a913b327 100644 --- a/components/sun.html +++ b/components/sun.html @@ -9,7 +9,7 @@ - Tracking the Sun - Home Assistant + Sun - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -97,46 +97,34 @@
      - -

      - aREST Switch Support + aREST switch


      - -

      -The arest switch platform allows you to toggle pins of your devices (like Arduino boards with a ethernet/wifi connection, ESP8266 based devices, and the Raspberry Pi) running the aREST RESTful framework.

      +

      The arest switch platform allows you to toggle pins of your devices (like Arduino boards with a ethernet/wifi connection, ESP8266 based devices, and the Raspberry Pi) running the aREST RESTful framework.

      To use your aREST enabled device in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: arest
      -  resource: http://IP_ADDRESS
      -  pins:
      -    11:
      -      name: Fan Office
      -    12:
      -      name: Light Desk
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: arest
      +  resource: http://IP_ADDRESS
      +  name: Office
      +  pins:
      +    11:
      +      name: Fan
      +    12:
      +      name: Light Desk
      +

      Configuration variables:

      • resource (Required): IP address and schema of the device that is exposing an aREST API, eg. http://192.168.1.10.
      • +
      • name (Optional): Let you overwrite the the name of the device. By default name from the device is used.
      • pins (Required): An array with all used pins of your board.
          @@ -148,13 +136,8 @@ The arest switch platform allows you to toggle pins of your devices (like Arduin

          Accessing one of the endpoints (eg. http://192.168.1.10/analog/2/) will give you a JSON response. The interesting part is return_value which represents the sensor’s data.

          -
          1
          -
          {"return_value": 34, "id": "sensor02", "name": "livingroom", "connected": true}
          -
          - - - - +
          {"return_value": 34, "id": "sensor02", "name": "livingroom", "connected": true}
          +
      @@ -162,6 +145,1544 @@ The arest switch platform allows you to toggle pins of your devices (like Arduin + + @@ -197,5 +1718,10 @@ The arest switch platform allows you to toggle pins of your devices (like Arduin + + + + + \ No newline at end of file diff --git a/components/switch.command_switch.html b/components/switch.command_switch.html index c2c1569f02..80aae97c9d 100644 --- a/components/switch.command_switch.html +++ b/components/switch.command_switch.html @@ -9,20 +9,20 @@ - Command line switches support - Home Assistant + Command line switch - Home Assistant - + - + - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,37 +97,25 @@
      - -

      - Command Line Switches Support + Command line switch


      - -

      -A switch platform that issues specific commands when it is turned on and off. This might very well become our most platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

      +

      The switch platform that issues specific commands when it is turned on and off. This might very well become our most platform as it allows anyone to integrate any type of switch into Home Assistant that can be controlled from the command line, including calling other scripts!

      To enable it, add the following lines to your configuration.yaml:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: command_switch
      -  switches:
      -    kitchen_light:
      -      oncmd: switch_command on kitchen
      -      offcmd: switch_command off kitchen
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: command_switch
      +  switches:
      +    kitchen_light:
      +      oncmd: switch_command on kitchen
      +      offcmd: switch_command off kitchen
      +

      Configuration variables:

      @@ -155,22 +143,14 @@ A switch platform that issues specific commands when it is turned on and off. Th

      The example below is doing the same as the aREST switch. The commandline tool [curl](http://curl.haxx.se/) is used to toogle a pin which is controllable through REST.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: command_switch
      -  switches:
      -    arest_pin4:
      -      oncmd: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
      -      offcmd: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: command_switch
      +  switches:
      +    arest_pin4:
      +      oncmd: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
      +      offcmd: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
      +

      Shutdown your local host

      @@ -181,25 +161,13 @@ This switch will shudown your host immediately, there will be no confirmation.

      - - -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: command_switch
      -  switches:
      -    Home Assistant system shutdown:
      -      offcmd: "/usr/sbin/poweroff"
      -
      - - - - +
      # Example configuration.yaml entry
      +switch:
      +  platform: command_switch
      +  switches:
      +    Home Assistant system shutdown:
      +      offcmd: "/usr/sbin/poweroff"
      +
      @@ -207,6 +175,1529 @@ This switch will shudown your host immediately, there will be no confirmation. + + @@ -242,5 +1733,10 @@ This switch will shudown your host immediately, there will be no confirmation. + + + + + \ No newline at end of file diff --git a/components/switch.edimax.html b/components/switch.edimax.html index 33fb926d5c..bfc9c6a224 100644 --- a/components/switch.edimax.html +++ b/components/switch.edimax.html @@ -9,7 +9,7 @@ - Edimax switches support - Home Assistant + Edimax switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,37 +97,25 @@
      - -

      - Edimax Switches Support + Edimax switch


      - -

      -This edimax switch platform allows you to control the state of your Edimax switches.

      +

      This edimax switch platform allows you to control the state of your Edimax switches.

      To use your Edimax switch in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: edimax
      -  host: 192.168.1.32
      -  username: YOUR_USERNAME
      -  password: YOUR_PASSWORD
      -  name: Edimax Smart Plug
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: edimax
      +  host: 192.168.1.32
      +  username: YOUR_USERNAME
      +  password: YOUR_PASSWORD
      +  name: Edimax Smart Plug
      +

      Configuration variables:

      @@ -139,13 +127,1537 @@ This edimax switch platform allows you to control the state of your +
      + + + +
      +
      + + + +
      + + + + + + + + + + + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      Category Switch

      +
        + + + + + + + + + + + + + + + + + + +
      • + + Belkin WeMo switch + +
      • + + + + + + + + + + + + + +
      • + + Command line switch + +
      • + + + + + + + + + + + + + + + + + + + +
      • + + Edimax switch + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + MQTT switch + +
      • + + + + + + + + + + + + + +
      • + + Modbus switch + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + RESTful switch + +
      • + + + + + + + + + +
      • + + RFXtrx switch + +
      • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      • + + TellStick switch + +
      • + + + + + + + + + + + + + +
      • + + Transmission switch + +
      • + + + + + + + + + +
      • + + Vera switch + +
      • + + + + + + + + + + + +
      • + + Wink switch + +
      • + + + + + + + + + + + +
      • + + aREST switch + +
      • + + + + +
      +
      + +
      + + +
      + + + @@ -181,5 +1693,10 @@ This edimax switch platform allows you to control the state of your - Hikvision camera support - Home Assistant + Hikvision camera - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,37 +97,30 @@
      - -

      - Hikvision Camera Support + Hikvision camera


      - -

      -This hikvisioncam switch platform allows you to control your motion detection setting on your Hikvision camera.

      +

      This hikvisioncam switch platform allows you to control your motion detection setting on your Hikvision camera.

      + +

      +Currently works using default https port only. +

      +

      To use your Hikvision cam in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -switch:
      -    platform: hikvisioncam
      -    host: 192.168.1.32
      -    name: Hikvision Cam 1 Motion Detection
      -    username: USERNAME
      -    password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +    platform: hikvisioncam
      +    host: 192.168.1.32
      +    name: Hikvision Cam 1 Motion Detection
      +    username: USERNAME
      +    password: PASSWORD
      +

      Configuration variables:

      @@ -139,13 +132,1489 @@ This hikvisioncam switch platform allows you to control your motion detection se
    - + + @@ -181,5 +1650,10 @@ This hikvisioncam switch platform allows you to control your motion detection se + + + + + \ No newline at end of file diff --git a/components/switch.html b/components/switch.html index 02c14fe046..efc439c507 100644 --- a/components/switch.html +++ b/components/switch.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,17 +97,14 @@
      - -

      Switches


      - -

      Keeps track which switches are in the network, their state and allows you to control them.

      +

      Keeps track which switches are in your environment, their state and allows you to control them.

      • Maintains a state per switch and a combined state all_switches.
      • @@ -122,21 +119,1916 @@
      -

      Supported platforms:

      - -
        -
      • wemo for Belkin WeMo switches
      • -
      • tellstick for Tellstick switches
      • -
      - - -
      + + @@ -172,5 +2064,10 @@ + + + + + \ No newline at end of file diff --git a/components/switch.modbus.html b/components/switch.modbus.html new file mode 100644 index 0000000000..d9aa02e7e1 --- /dev/null +++ b/components/switch.modbus.html @@ -0,0 +1,1758 @@ + + + + + + + + + + + + Modbus switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + Modbus switch +

      +
      +
      + +

      The modbus switch platform allows you to control Modbus switches.

      + +

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

      + +
      # Example configuration.yml entry
      +switch:
      +  platform: modbus
      +  slave: 1
      +  registers:
      +    24:
      +      bits:
      +        0:
      +          name: My switch
      +        2:
      +          name: My other switch
      +  coils:
      +    0:
      +      name: My coil switch
      +
      + +

      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.
          • +
          +
        • +
        +
      • +
      + + +

      +Each named bit will create a switch. +

      + + + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.mqtt.html b/components/switch.mqtt.html index d388596b4b..1d572bcce8 100644 --- a/components/switch.mqtt.html +++ b/components/switch.mqtt.html @@ -9,7 +9,7 @@ - MQTT switch support - Home Assistant + MQTT switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,53 +97,32 @@
      - -

      - MQTT Switch Support + MQTT switch


      - -

      -In an ideal scenario, the MQTT device will have a state topic to publish -state changes. If these messages are published with RETAIN flag, the MQTT -switch will receive an instant state update after subscription and will -start with correct state. Otherwise, the initial state of the switch will -be false/off.

      +

      In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with RETAIN flag, the MQTT switch will receive an instant state update after subscription and will +start with correct state. Otherwise, the initial state of the switch will be false/off.

      -

      When a state topic is not available, the switch will work in optimistic mode. -In this mode, the switch will immediately change state after every command. -Otherwise, the switch will wait for state confirmation from device -(message from state_topic).

      +

      When a state topic is not available, the switch will work in optimistic mode. In this mode, the switch will immediately change state after every command. Otherwise, the switch will wait for state confirmation from device +(message from state_topic).

      -

      Optimistic mode can be forced, even if state topic is available. -Try to enable it, if experiencing incorrect switch operation.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -
      # Example configuration.yml entry
      -switch:
      -  platform: mqtt
      -  name: "Bedroom Switch"
      -  state_topic: "home/bedroom/switch1"
      -  command_topic: "home/bedroom/switch1/set"
      -  qos: 0
      -  payload_on: "ON"
      -  payload_off: "OFF"
      -  optimistic: false
      -
      +

      Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect switch operation.

      +
      # Example configuration.yml entry
      +switch:
      +  platform: mqtt
      +  name: "Bedroom Switch"
      +  state_topic: "home/bedroom/switch1"
      +  command_topic: "home/bedroom/switch1/set"
      +  qos: 0
      +  payload_on: "ON"
      +  payload_off: "OFF"
      +  optimistic: false
      +

      Configuration variables:

      @@ -163,13 +142,1565 @@ Make sure that your topics match exact. some-topic/ and some-

      -
      + + @@ -205,5 +1736,10 @@ Make sure that your topics match exact. some-topic/ and some- + + + + + \ No newline at end of file diff --git a/components/switch.rest.html b/components/switch.rest.html new file mode 100644 index 0000000000..b572529d59 --- /dev/null +++ b/components/switch.rest.html @@ -0,0 +1,1720 @@ + + + + + + + + + + + + RESTful switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + RESTful switch +

      +
      +
      + +

      The rest switch platform allows you to control a given endpoint that supports a RESTful API. The switch can get the state via GET and set the state via POST on a given REST resource.

      + +

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

      + +
      # Example configuration.yaml entry
      +switch:
      +  platform: rest
      +  resource: http://IP_ADDRESS/ENDPOINT
      +  name: "Bedroom Switch"
      +  body_on: "ON"
      +  body_off: "OFF"
      +
      + +

      Configuration variables:

      + +
        +
      • resource (Required): The resource or endpoint that contains the value.
      • +
      • name (Optional): Name of the REST switch.
      • +
      • body_on (Optional): The body that represents enabled state. Default is “ON”.
      • +
      • body_off (Optional):The body that represents disabled state. Default is “OFF”.
      • +
      + + +

      +Make sure that the URL matches exactly your endpoint or resource. +

      + + + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.rfxtrx.html b/components/switch.rfxtrx.html index b23537f0ac..0f23f4a708 100644 --- a/components/switch.rfxtrx.html +++ b/components/switch.rfxtrx.html @@ -9,7 +9,7 @@ - RFXtrx switch support - Home Assistant + RFXtrx switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,36 +97,26 @@
      - -

      - RFXtrx Switch Support + RFXtrx switch


      -

      The rfxtrx platform support switches that communicate in the frequency range of 433.92 MHz.

      To enable RFXtrx switches in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: rfxtrx
      -  devices:
      -    ac09c4f1: Bedroom Door
      -    ac09c4f2: Kitchen Door
      -  automatic_add: True
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: rfxtrx
      +  devices:
      +    living_room:
      +      name: Living Room
      +      packetid: XXXXX
      +  automatic_add: True
      +

      Configuration variables:

      @@ -136,13 +126,1558 @@
    - + + @@ -178,5 +1713,10 @@ + + + + + \ No newline at end of file diff --git a/components/switch.rpi_gpio.html b/components/switch.rpi_gpio.html index 69fb808b92..544a4128b9 100644 --- a/components/switch.rpi_gpio.html +++ b/components/switch.rpi_gpio.html @@ -9,7 +9,7 @@ - Raspberry PI GPIO switch support - Home Assistant + Raspberry PI GPIO switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -97,34 +97,37 @@
      - -

      - Raspberry PI GPIO Switch Support + Raspberry PI GPIO switch


      - -

      -The rpi_gpio switch platform allows you to control the GPIOs of your Raspberry Pi.

      +

      The rpi_gpio switch platform allows you to control the GPIOs of your Raspberry Pi.

      To use your Raspberry Pi’s GPIO in your installation, add the following to your configuration.yaml file:

      -
      1
      -2
      -3
      -4
      -5
      -6
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: rpi_gpio
      -  ports:
      -    11: Fan Office
      -    12: Light Desk
      -
      +
      # Example configuration.yaml entry
      +switch:
      +  platform: rpi_gpio
      +  ports:
      +    11: Fan Office
      +    12: Light Desk
      +  invert_logic: false
      +
      + +

      Configuration variables:

      + +
        +
      • ports array (Required): Array of used ports. + +
          +
        • port: name (Required): Your username for the Edimax switch.
        • +
        +
      • +
      • invert_logic (Optional): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH).
      • +

      For more details about the GPIO layout, visit the Wikipedia article about the Raspberry Pi.

      @@ -134,13 +137,1514 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r

      -
      + + @@ -176,5 +1680,10 @@ If you are not running Raspbian Jessie, you will need to run Home Assistant as r + + + + + \ No newline at end of file diff --git a/components/switch.tellstick.html b/components/switch.tellstick.html new file mode 100644 index 0000000000..f493da5969 --- /dev/null +++ b/components/switch.tellstick.html @@ -0,0 +1,1719 @@ + + + + + + + + + + + + TellStick switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      +
      +

      + TellStick switch +

      +
      +
      + +

      This tellstick switch platform allows you to control TellStick devices.

      + +

      To use your TellStick device in your installation, add the following to your configuration.yaml file:

      + +
      # Example configuration.yaml entry
      +switch:
      +  platform: tellstick
      +  signal_repetitions: 3
      +
      + +

      Configuration variables:

      + +
        +
      • signal_repetitions Optional: Because the tellstick sends its actions via radio and from most receivers it’s impossible to know if the signal was received or not. Therefore you can configure the switch to try to send each signal repeatedly.
      • +
      + + +
      + + +
      + + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.transmission.html b/components/switch.transmission.html index 9f2179a7bc..f9f9bf09da 100644 --- a/components/switch.transmission.html +++ b/components/switch.transmission.html @@ -9,7 +9,7 @@ - Transmission switch support - Home Assistant + Transmission switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,44 +97,31 @@
      - -

      - Transmission Switch Support + Transmission switch


      - -

      -The transmission platform allows you to control your Transmission client from within Home Assistant. The platform enables you switch to your ‘Alternative Speed Limits’ (aka ‘Turtle mode’) setting.

      +

      The transmission platform allows you to control your Transmission client from within Home Assistant. The platform enables you switch to your ‘Alternative Speed Limits’ (aka ‘Turtle mode’) setting.

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

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -
      # Example configuration.yaml entry
      -switch:
      -  platform: transmission
      -  host: 192.168.1.26
      -  port: 9091
      -  name: Transmission
      -  username: USERNAME
      -  password: PASSWORD
      -
      - +
      # Example configuration.yaml entry
      +switch:
      +  platform: transmission
      +  host: IP_ADDRESS
      +  port: 9091
      +  name: Transmission
      +  username: USERNAME
      +  password: PASSWORD
      +

      Configuration variables:

        -
      • host (Required): This is the IP address of your Transmission daemon, e.g. 192.168.1.32.
      • +
      • host (Required): This is the IP address of your Transmission daemon, eg. 192.168.1.32.
      • port (Optional): The port your Transmission daemon uses, defaults to 9091.
      • name (Optional): The name to use when displaying this Transmission instance.
      • username (Optional): Your Transmission username, if you use authentication.
      • @@ -142,13 +129,1550 @@ The transmission platform allows you to control your +
        + + + +
        +
        + + + +
        + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        Related components

        +
          + +
        • + Transmission sensor +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + + +
        +

        Category Switch

        +
          + + + + + + + + + + + + + + + + + + +
        • + + Belkin WeMo switch + +
        • + + + + + + + + + + + + + +
        • + + Command line switch + +
        • + + + + + + + + + + + + + + + + + + + +
        • + + Edimax switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + MQTT switch + +
        • + + + + + + + + + + + + + +
        • + + Modbus switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + RESTful switch + +
        • + + + + + + + + + +
        • + + RFXtrx switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + TellStick switch + +
        • + + + + + + + + + + + + + +
        • + + Transmission switch + +
        • + + + + + + + + + +
        • + + Vera switch + +
        • + + + + + + + + + + + +
        • + + Wink switch + +
        • + + + + + + + + + + + +
        • + + aREST switch + +
        • + + + + +
        +
        + +
        + + +
        + + + @@ -184,5 +1708,10 @@ The transmission platform allows you to control your + + + + + + + + + + Vera switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        +
        + +
        + + +
        +
        +

        + Vera switch +

        +
        +
        + +

        This vera switch platform allows you to control your Vera switches.

        + +

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

        + +
        # Example configuration.yaml entry
        +light:
        +  platform: vera
        +  vera_controller_url: http://YOUR_VERA_IP:3480/
        +  device_data:
        +    12:
        +      name: My awesome sensor
        +      exclude: true
        +    13:
        +      name: Another sensor
        +
        + +

        Configuration variables:

        + +
          +
        • vera_controller_url (Required): This is the base URL of your vera controller including the port number if not running on 80, eg. http://192.168.1.21:3480/
        • +
        • device_data array (Optional):This contains an array additional device information for your Vera devices. It is not required and if not specified all sensors configured in your Vera controller will be added with default values. You should use the id of your Vera device as the key for the device within device_data. + +
            +
          • name (Optional):This parameter allows you to override the name of your Vera device in the frontend, if not specified the value configured for the device in your Vera will be used.
          • +
          • exclude (Optional): This parameter allows you to exclude the specified device, it should be set to “True” if you want this device excluded.
          • +
          +
        • +
        + + +
        + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/switch.wemo.html b/components/switch.wemo.html index d67198fa36..75fbdcc5e2 100644 --- a/components/switch.wemo.html +++ b/components/switch.wemo.html @@ -9,7 +9,7 @@ - Belkin WeMo switches support - Home Assistant + Belkin WeMo switch - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
      +
    • Components
    • Developers
        @@ -97,30 +97,21 @@
        - -

        - Belkin WeMo Switches Support + Belkin WeMo switch


        - -

        -The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

        +

        The wemo platform allows you to control your Belkin WeMo switches from within Home Assistant.

        They will be automatically discovered if the discovery component is enabled.

        -
        1
        -2
        -3
        -
        # Example configuration.yaml entry
        -switch:
        -  platform: wemo
        -
        - - +
        # Example configuration.yaml entry
        +switch:
        +  platform: wemo
        +
        @@ -128,6 +119,1531 @@ The wemo platform allows you to control your +
        + + + +
        +
        + + + +
        + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        Category Switch

        +
          + + + + + + + + + + + + + + + + + + +
        • + + Belkin WeMo switch + +
        • + + + + + + + + + + + + + +
        • + + Command line switch + +
        • + + + + + + + + + + + + + + + + + + + +
        • + + Edimax switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + MQTT switch + +
        • + + + + + + + + + + + + + +
        • + + Modbus switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + RESTful switch + +
        • + + + + + + + + + +
        • + + RFXtrx switch + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + TellStick switch + +
        • + + + + + + + + + + + + + +
        • + + Transmission switch + +
        • + + + + + + + + + +
        • + + Vera switch + +
        • + + + + + + + + + + + +
        • + + Wink switch + +
        • + + + + + + + + + + + +
        • + + aREST switch + +
        • + + + + +
        +
        + +
        + + +
        + + + @@ -163,5 +1679,10 @@ The wemo platform allows you to control your + + + + + + + + + + Wink switch - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        +
        + +
        + + +
        +
        +

        + Wink switch +

        +
        +
        + +

        The wink switch platform allows you to control your Wink switches.

        + +

        The requirement is that you have setup your Wink hub.

        + +
        + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/tellstick.html b/components/tellstick.html index 8de9ee690a..943795fa89 100644 --- a/components/tellstick.html +++ b/components/tellstick.html @@ -9,7 +9,7 @@ - Setting up TellStick - Home Assistant + TellStick - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,60 +97,29 @@
        - -

        - Setting Up TellStick + TellStick


        - -

        -The TellStick Home Assistant integration allows users to add switches and sensors.

        - -

        To get started, add the following information to your configuration.yaml:

        - -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -
        # Example configuration.yaml entry
        -switch:
        -  platform: tellstick
        -
        -sensor:
        -  platform: tellstick
        -
        -  # optionally, you can name your sensors by mapping ID to their name
        -  2: Outside
        -  5: Fridge
        -
        -  # Set only_named to 1 to hide all sensors that you did not mention.
        -  only_named: 1
        -
        -# All dimmers will be picked up as lights.
        -light:
        -  platform: tellstick
        -
        +

        The tellstick component integrates TellStick devices into Home Assistant. This integration allows users to add switches, lights, and sensors which are communicating with 433 Mhz. There are couple of vendors (Capidi +Elro, Intertechno, Nexa, Proove, Sartano, and Viking) how are selling products which works with TellStick. For more details, please check the TellStick compatibility list.

        +

        To get started, add the devices to your configuration.yaml file.

        +
        # Example configuration.yaml entry
        +switch:
        +  platform: tellstick
         
        +sensor:
        +  platform: tellstick
         
        +# All dimmers will be picked up as lights.
        +light:
        +  platform: tellstick
        +
        @@ -158,6 +127,2171 @@ The TellStick Home Assistant integration allows users to add switches and sensor + + @@ -193,5 +2327,10 @@ The TellStick Home Assistant integration allows users to add switches and sensor + + + + + \ No newline at end of file diff --git a/components/thermostat.heat_control.html b/components/thermostat.heat_control.html index fa659f44e9..b3eb3a9987 100644 --- a/components/thermostat.heat_control.html +++ b/components/thermostat.heat_control.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,79 +97,30 @@
        - -

        - Heat Control + Heat control


        - -

        Specify a start time, end time and a target temperature. -If the the current temperature is lower than the target temperature, -and the time is between start time and end time, the heater will -be turned on. Opposite if the the temperature is higher than the -target temperature the heater will be turned off.

        +

        Heat Control is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater under the hood. If the measured temperature is cooler then the target temperature, the heater will be turned on and turned off when required temperature is reached.

        -

        If away mode is activated the target temperature is sat to a min -temperature (min_temp in config). The min temperature is also used -as target temperature when no other temperature is specified.

        +
        # Example configuration.yaml entry
        +thermostat:
        +  platform: heat_control
        +  name: Study
        +  heater: switch.study_heater
        +  target_sensor: sensor.study_temperature
        +
        -

        If the heater is manually turned on, the target temperature will -be sat to 100*C. Meaning -the thermostat probably will never turn off the heater. -If the heater is manually turned off, the target temperature will -be sat according to normal rules. (Based on target temperature -for given time intervals and the min temperature.)

        +

        Configuration variables:

        -

        A target temperature sat with the set_temperature function will -override all other rules for the target temperature.

        - -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -
        # Example configuration.yaml entry
        -thermostat:
        -  platform: heat_control
        -  name: Stue
        -
        -  # entity_id for heater switch, must be a toggle device
        -  heater: switch.Ovn_stue
        -
        -  # entity_id for temperature sensor, target_sensor.state must be temperature
        -  target_sensor: tellstick_sensor.Stue_temperature
        -
        -  # start_time-end_time:target_temp,
        -  time_temp: 0700-0745:17,1500-1850:20
        -
        -  # minimum temperature, used when away mode is active or
        -  # no other temperature specified.
        -  min_temp: 10
        -
        - - -

        For the example the heater will turn on at 0700 if the temperature -is lower than 17C away mode is false. Between 0700 and 0745 the -target temperature will be 17C. Between 0745 and 1500 no temperature -is specified. so the min_temp of 10C will be used. From 1500 to 1850 -the target temperature is 20, but if away mode is true the target -temperature will be sat to 10C

        +
          +
        • name (Required): Name of thermostat
        • +
        • heater (Required: entity_id for heater switch, must be a toggle device.
        • +
        • target_sensor (Required): entity_id for a temperature sensor, target_sensor.state must be temperature.
        • +
        @@ -178,6 +129,1475 @@ temperature will be sat to 10C

        + + @@ -213,5 +1633,10 @@ temperature will be sat to 10C

        + + + + + \ No newline at end of file diff --git a/components/thermostat.html b/components/thermostat.html index caabb6a9f4..acb7c43299 100644 --- a/components/thermostat.html +++ b/components/thermostat.html @@ -9,7 +9,7 @@ - Adding thermostats - Home Assistant + Thermostats - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,44 +97,1878 @@
        - -

        - Adding Thermostats + Thermostats


        - -

        Thermostats offer Home Assistant a peek into the current and target temperature in a house. Some thermostats will also offer an away mode that will lower use of heating/cooling. The only supported thermostat right now is the Nest thermostat.

        +

        Thermostats offer Home Assistant a peek into the current and target temperature in a house. Some thermostats will also offer an away mode that will lower use of heating/cooling.

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

        -
        1
        -2
        -3
        -4
        -
        thermostat:
        -  platform: nest
        -  username: myemail@mydomain.com
        -  password: mypassword
        - - - +
        thermostat:
        +  platform: nest
        +  username: myemail@mydomain.com
        +  password: mypassword
        +

        -
        + + @@ -170,5 +2004,10 @@ + + + + + \ No newline at end of file diff --git a/components/thermostat.nest.html b/components/thermostat.nest.html index 6bbc02d016..2b075b7d17 100644 --- a/components/thermostat.nest.html +++ b/components/thermostat.nest.html @@ -9,7 +9,7 @@ - Nest thermostat support - Home Assistant + Nest thermostat - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,31 +97,22 @@
        - -

        - Nest Thermostat Support + Nest thermostat


        - -

        -The nest thermostat platform let you control a thermostat from Nest.

        +

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

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

        -
        1
        -2
        -3
        -4
        -
        thermostat:
        -  platform: nest
        -  username: USERNAME
        -  password: PASSWORD
        -
        - +
        thermostat:
        +  platform: nest
        +  username: USERNAME
        +  password: PASSWORD
        +

        Configuration variables:

        @@ -136,13 +127,1483 @@ The nest thermostat platform let you control a thermostat from +
        + + + +
        +
        + + + +
        + + + + + + + + + + + +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +

        Category Thermostat

        +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + Heat control + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + Nest thermostat + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        • + + Radiotherm thermostat + +
        • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        + +
        + + +
        + + + @@ -178,5 +1639,10 @@ The nest thermostat platform let you control a thermostat from + + + + + + + + + + Radiotherm thermostat - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
        + +
        + + + +
        +
        + +
        + + +
        +
        +

        + Radiotherm thermostat +

        +
        +
        + +

        The nest thermostat platform let you control a thermostat from Radio Thermostat.

        + +

        The underlaying library supports: +- CT50 V1.09 +- CT50 V1.88 +- CT50 V1.94 (also known as Filtrete 3M50) +- CT80 Rev B2 V1.03

        + +

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

        + +
        thermostat:
        +  platform: radiotherm
        +  host:
        +    - 192.168.99.137
        +    - 192.168.99.202
        +  hold_temp: True
        +
        + +

        Configuration variables:

        + +
          +
        • host (Required): List of your Radiotherm thermostats
        • +
        • hold_temp (Required): Boolean to control if hass temp adjustments hold(True) or are temporary(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.

        + +
        + + +
        + + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/components/vera.html b/components/vera.html index 5caffa4d0b..78813567cf 100644 --- a/components/vera.html +++ b/components/vera.html @@ -9,7 +9,7 @@ - Vera support - Home Assistant + Vera - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,62 +97,22 @@
        - -

        - Vera Support + Vera


        - -

        +

        The Vera ecosystem is using Z-Wave for communication between the Vera controller and the devices.

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -9
        -10
        -11
        -12
        -13
        -14
        -15
        -16
        -17
        -18
        -19
        -20
        -21
        -
        # Example configuration.yaml entry
        -sensor:
        -    platform: vera
        -    vera_controller_url: http://YOUR_VERA_IP:3480/
        -    device_data:
        -        10:
        -            name: Another sensor
        -
        -switch:
        -    platform: vera
        -    vera_controller_url: http://YOUR_VERA_IP:3480/
        -    device_data:
        -        12:
        -            name: Another Switch
        -
        -light:
        -    platform: vera
        -    vera_controller_url: http://YOUR_VERA_IP:3480/
        -    device_data:
        -        11:
        -            name: Another light
        -
        +

        Building on top of Vera

        +
        @@ -161,6 +121,2171 @@ + + @@ -196,5 +2321,10 @@ + + + + + \ No newline at end of file diff --git a/components/verisure.html b/components/verisure.html index 630897519f..65653416d4 100644 --- a/components/verisure.html +++ b/components/verisure.html @@ -58,9 +58,9 @@
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
    • +
    • Components
    • Developers
        @@ -97,19 +97,14 @@
        - -

        Verisure


        - -

        - -

        Home Assistant has support to integrate your Verisure devices.

        +

        Home Assistant has support to integrate your Verisure devices.

        We support:

        @@ -122,24 +117,15 @@

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

        -
        1
        -2
        -3
        -4
        -5
        -6
        -7
        -8
        -
        # Example configuration.yaml entry
        -verisure:
        -  username: USERNAME
        -  password: PASSWORD
        -  alarm: 1
        -  hygrometers: 0
        -  smartplugs: 1
        -  thermometers: 0
        -
        - +
        # Example configuration.yaml entry
        +verisure:
        +  username: USERNAME
        +  password: PASSWORD
        +  alarm: 1
        +  hygrometers: 0
        +  smartplugs: 1
        +  thermometers: 0
        +

        Configuration variables:

        @@ -153,13 +139,2154 @@
      -
    • + + @@ -195,5 +2322,10 @@ + + + + + \ No newline at end of file diff --git a/components/wink.html b/components/wink.html index d3feb826f9..82259d177e 100644 --- a/components/wink.html +++ b/components/wink.html @@ -9,7 +9,7 @@ - Wink hub - Home Assistant + Wink - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,18 +97,14 @@
      - -

      - Wink Hub + Wink


      - -

      -Wink is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words:

      +

      Wink is a home automation hub that can control a whole wide range of devices on the market. Or, as they say in their own words:

      Wink offers one, quick and simple way to connect people with the products they rely on every day in their home.
      @@ -123,12 +119,9 @@

      After you have gotten your access token, add the following to your configuration.yaml:

      -
      1
      -2
      -
      wink:
      -  access_token: YOUR_ACCESS_TOKEN
      -
      - +
      wink:
      +  access_token: YOUR_ACCESS_TOKEN
      +

      Configuration variables:

      @@ -144,13 +137,2177 @@ The Wink hub can only be accessed via the cloud. This means it requires an activ

      -
      + + @@ -186,5 +2343,10 @@ The Wink hub can only be accessed via the cloud. This means it requires an activ + + + + + \ No newline at end of file diff --git a/components/zone.html b/components/zone.html index b2fc725b3a..7ecb7c42c3 100644 --- a/components/zone.html +++ b/components/zone.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,15 +97,12 @@
      - -

      Zone


      -

      Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a @@ -114,52 +111,29 @@ inside automation setups.

      Zones support the usual method to specify multiple zones, use keys zone:, zone 2: etc.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -22
      -
      # Example configuration.yaml entry
      -zone:
      -  name: School
      -  latitude: 32.8773367
      -  longitude: -117.2494053
      -  # Optional radius in meters (default: 100)
      -  radius: 250
      -  # Optional icon to show instead of name
      -  icon: group-work
      -
      -zone 2:
      -  name: Work
      -  latitude: 32.8753367
      -  longitude: -117.2474053
      -
      -# This will override the default home zone
      -zone 3:
      -  name: Home
      -  latitude: 32.8793367
      -  longitude: -117.2474053
      -  radius: 100
      -  icon: social:people
      -
      +
      # Example configuration.yaml entry
      +zone:
      +  name: School
      +  latitude: 32.8773367
      +  longitude: -117.2494053
      +  # Optional radius in meters (default: 100)
      +  radius: 250
      +  # Optional icon to show instead of name
      +  icon: group-work
       
      +zone 2:
      +  name: Work
      +  latitude: 32.8753367
      +  longitude: -117.2474053
      +
      +# This will override the default home zone
      +zone 3:
      +  name: Home
      +  latitude: 32.8793367
      +  longitude: -117.2474053
      +  radius: 100
      +  icon: social:people
      +

      Home zone

      @@ -177,13 +151,2116 @@ categories are included.

      social:people or av:radio. For the action category, you will not need to do this, examples are home, work,, group-work and shopping-cart.

      -
      + + @@ -219,5 +2296,10 @@ categories are included.

      + + + + + \ No newline at end of file diff --git a/components/zwave.html b/components/zwave.html index 225cb2757b..dfba087037 100644 --- a/components/zwave.html +++ b/components/zwave.html @@ -9,7 +9,7 @@ - Z-Wave support - Home Assistant + Z-Wave - Home Assistant @@ -18,7 +18,7 @@ - + @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -97,25 +97,14 @@
      - -

      - Z-Wave Support + Z-Wave


      - -

      -Z-Wave support is currently broken as we’re unable to compile -Python Open Z-Wave. -

      - - -

      - -

      Z-Wave support for Home Assistant is very new. We have started now by integrating only the sensors.

      +

      Z-Wave support for Home Assistant is very new. We have started now by integrating only the sensors.

      Support for Z-Wave can be added by plugging a Z-Wave USB stick into your computer.

      @@ -123,22 +112,16 @@ Z-Wave support is currently broken as we’re unable to compile

      Please make sure you have the correct dependencies installed:

      -
      1
      -2
      -
      apt-get install cython3 libudev-dev python-sphinx python3-setuptools
      -pip3 install cython
      - +
      apt-get install cython3 libudev-dev python-sphinx python3-setuptools
      +pip3 install "cython<0.23"
      +

      As an alternative, the Home Assistant docker image has support for Z-Wave built-in.

      -
      1
      -2
      -3
      -
      # Example configuration.yaml entry
      -zwave:
      -  usb_path: /dev/ttyUSB0
      -
      - +
      # Example configuration.yaml entry
      +zwave:
      +  usb_path: /dev/ttyUSB0
      +

      Configuration variables:

      @@ -147,11 +130,8 @@ Z-Wave support is currently broken as we’re unable to compile
    -
    1
    -
    ls /dev/ttyUSB*
    -
    - - +
    ls /dev/ttyUSB*
    +
    @@ -159,6 +139,2148 @@ Z-Wave support is currently broken as we’re unable to compile + + @@ -194,5 +2316,10 @@ Z-Wave support is currently broken as we’re unable to compile + + + + + \ No newline at end of file diff --git a/cookbook/automation_for_rainy_days.html b/cookbook/automation_for_rainy_days.html index 3b3e92f7cc..4dbd3336da 100644 --- a/cookbook/automation_for_rainy_days.html +++ b/cookbook/automation_for_rainy_days.html @@ -58,9 +58,9 @@
  • Presence detection
  • Automation
  • Configuration cookbook
  • -
  • Component overview
  • +
  • Components
  • Developers
      @@ -113,79 +113,43 @@

      Turn on a light in the living room when it starts raining, someone is home, and it’s afternoon or later.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -
      automation:
      -  alias: 'Rainy Day'
      -
      -  trigger:
      -       - platform: state
      -         entity_id: sensor.weather_precip
      -         state: 'rain'
      -       - platform: state
      -         entity_id: group.all_devices
      -         state: 'home'
      -       - platform: time
      -         after: '14:00'
      -         before: '23:00'
      -
      -  condition: use_trigger_values
      -
      -  action:
      -    execute_service: light.turn_on
      -    service_entity_id: light.couch_lamp
      -
      +
      automation:
      +  alias: 'Rainy Day'
       
      +  trigger:
      +       - platform: state
      +         entity_id: sensor.weather_precip
      +         state: 'rain'
      +       - platform: state
      +         entity_id: group.all_devices
      +         state: 'home'
      +       - platform: time
      +         after: '14:00'
      +         before: '23:00'
      +
      +  condition: use_trigger_values
      +
      +  action:
      +    execute_service: light.turn_on
      +    service_entity_id: light.couch_lamp
      +

      And then of course turn off the lamp when it stops raining but only if it’s within an hour before sunset.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -
        alias: 'Rain is over'
      -  trigger:
      -       - platform: state
      -         entity_id: sensor.weather_precip
      -         state: 'None'
      -       - platform: sun
      -         event: 'sunset'
      -         offset: '-01:00:00'
      -
      -  condition: use_trigger_values
      -  action:
      -    execute_service: light.turn_off
      -    service_entity_id: light.couch_lamp
      -
      - - +
        alias: 'Rain is over'
      +  trigger:
      +       - platform: state
      +         entity_id: sensor.weather_precip
      +         state: 'None'
      +       - platform: sun
      +         event: 'sunset'
      +         offset: '-01:00:00'
       
      +  condition: use_trigger_values
      +  action:
      +    execute_service: light.turn_off
      +    service_entity_id: light.couch_lamp
      +
      diff --git a/cookbook/automation_sun.html b/cookbook/automation_sun.html index 2b425f05bd..02913a225f 100644 --- a/cookbook/automation_sun.html +++ b/cookbook/automation_sun.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -109,59 +109,35 @@

      Turn on the living room lights 45 minutes before sunset if anyone home

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -
      automation:
      -  trigger:
      -    platform: sun
      -    event: sunset
      -    offset: "-00:45:00"
      -  condition:
      -    platform: state
      -    entity_id: group.all_devices
      -    state: home
      -  action:
      -    service: homeassistant.turn_on
      -    entity_id: group.living_room_lights
      -
      - +
      automation:
      +  trigger:
      +    platform: sun
      +    event: sunset
      +    offset: "-00:45:00"
      +  condition:
      +    platform: state
      +    entity_id: group.all_devices
      +    state: home
      +  action:
      +    service: homeassistant.turn_on
      +    entity_id: group.living_room_lights
      +

      Natural wake up light

      -

      Note, Philips Hue is currently the only light platform that support transitions.

      - -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -
      automation:
      -  trigger:
      -    platform: time
      -    after: "07:15:00"
      -  action:
      -    service: light.turn_on
      -    entity_id: light.bedroom
      -    data:
      -      # 900 seconds = 15 minutes
      -      transition: 900
      -
      - +

      Note, Philips Hue is currently the only light platform that support transitions. +yaml +automation: + trigger: + platform: time + after: "07:15:00" + action: + service: light.turn_on + entity_id: light.bedroom + data: + # 900 seconds = 15 minutes + transition: 900 +

      diff --git a/cookbook/basic_example_use_trigger_values.html b/cookbook/basic_example_use_trigger_values.html index 1a106c2c97..0865bc7098 100644 --- a/cookbook/basic_example_use_trigger_values.html +++ b/cookbook/basic_example_use_trigger_values.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
      @@ -111,58 +111,32 @@

      Turn on lights during daytime when it’s dark enough < 200 lux.

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -22
      -23
      -24
      -25
      -
      automation:
      -  - alias:
      -    trigger:
      -      - platform: numeric_state
      -        entity_id: sensor.sensor_luminance
      -        below: 200
      -      - platform: time
      -        after: "08:00"
      -        before: "23:00"
      -    condition: use_trigger_values
      -    action:
      -      service: homeassistant.turn_on
      -      entity_id: group.basic_lights
      -
      -automation 2:
      -  - alias:
      -    trigger:
      -      - platform: numeric_state
      -        entity_id: sensor.sensor_luminance
      -        above: 200
      -      - platform: time
      -        after: "23:00"
      -    action:
      -      service: homeassistant.turn_off
      -      entity_id: group.basic_lights
      -
      +
      automation:
      +  - alias: 
      +    trigger:
      +      - platform: numeric_state
      +        entity_id: sensor.sensor_luminance
      +        below: 200
      +      - platform: time
      +        after: "08:00"
      +        before: "23:00"
      +    condition: use_trigger_values
      +    action:
      +      service: homeassistant.turn_on
      +      entity_id: group.basic_lights
       
      +automation 2:
      +  - alias: 
      +    trigger:
      +      - platform: numeric_state
      +        entity_id: sensor.sensor_luminance
      +        above: 200
      +      - platform: time
      +        after: "23:00"
      +    action:
      +      service: homeassistant.turn_off
      +      entity_id: group.basic_lights
      +
      diff --git a/cookbook/dim_lights_when_playing_media.html b/cookbook/dim_lights_when_playing_media.html new file mode 100644 index 0000000000..3f34a52c20 --- /dev/null +++ b/cookbook/dim_lights_when_playing_media.html @@ -0,0 +1,224 @@ + + + + + + + + + + + + Dim lights when playing media - Home Assistant + + + + + + + + + + + + + + + + + + + + + + + + +
      + +
      + + + +
      +
      + +
      + + +
      + + +
      +

      + Dim Lights When Playing Media +

      +
      +
      + + +

      Like it how the lights dim up/down at the movies? Do it at home as well!

      + +

      This example uses the media player, Philips Hue (transitions) and the sun component. +We’ll use actions to detect media player state changes and scenes to control multiple +lights, color settings and transition between scenes.

      + +

      Scenes

      + +

      One scene for normal light, one for when movies are on. +A 2 second transition gives a nice ‘feel’ to the switch.

      + +
      scene:
      +  - name: Livingroom normal
      +    entities:
      +        light.light1:
      +            state: on
      +            transition: 2
      +            brightness: 150
      +            xy_color: [ 0.4448, 0.4066 ]
      +        light.light2:
      +            state: on
      +            transition: 2
      +            brightness: 215
      +            xy_color: [ 0.4448, 0.4066 ]
      +  - name: Livingroom dim
      +    entities:
      +        light.light1:
      +            state: on
      +            transition: 2
      +            brightness: 75
      +            xy_color: [ 0.5926, 0.3814 ]
      +        light.light2:
      +            state: on
      +            transition: 2
      +            brightness: 145
      +            xy_color: [ 0.5529, 0.4107 ]
      +
      + +

      Automation

      + +

      The paused/stopped state is best matched using “from: ‘playing’”. +Adding in the sun condition as we only want this when it’s dark.

      + +
      automation:
      +  - action: "Media player paused/stopped"
      +    trigger:
      +      - platform: state
      +        entity_id: media_player.htpc
      +        from: 'playing'
      +    condition:
      +      - platform: sun
      +        entity_id: sun.sun
      +        state: 'below_horizon'
      +    action:
      +        service: scene.turn_on
      +        entity_id: scene.livingroom_normal
      +
      +  - alias: "Media player playing"
      +    trigger:
      +      - platform: state
      +        entity_id: media_player.htpc
      +        to: 'playing'
      +    condition:
      +      - platform: sun
      +        entity_id: sun.sun
      +        state: 'below_horizon'
      +    action:
      +        service: scene.turn_on
      +        entity_id: scene.livingroom_dim
      +
      + + +
      + + +
      + + +
      +
      + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/cookbook/index.html b/cookbook/index.html index c2b18162dc..0305f3fa86 100644 --- a/cookbook/index.html +++ b/cookbook/index.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -111,76 +111,41 @@

      This recipe will turn on a light when there is motion and turn off the light when ten minutes has passed without any motion events .

      -
      1
      -2
      -3
      -4
      -5
      -6
      -7
      -8
      -9
      -10
      -11
      -12
      -13
      -14
      -15
      -16
      -17
      -18
      -19
      -20
      -21
      -22
      -23
      -24
      -25
      -26
      -27
      -28
      -29
      -30
      -31
      -32
      -33
      -34
      -
      automation:
      -  alias: Turn on kitchen lights when there is movement
      -  trigger:
      -    - platform: state
      -      entity_id: sensor.motion_sensor
      -      to: 'on'
      -  action:
      -    service: homeassistant.turn_on
      -    entity_id: script.timed_lamp
      -
      -script:
      -  timed_lamp:
      -    alias: "Turn on lamp and set timer"
      -    sequence:
      -      # Cancel ev. old timers 
      -      - execute_service: script.turn_off
      -        service_data:
      -           entity_id: script.timer_off
      -      - execute_service: light.turn_on
      -        service_data:
      -          entity_id: light.kitchen
      -      # Set new timer 
      -      - execute_service: script.turn_on
      -        service_data:
      -          entity_id: script.timer_off
      -
      -  timer_off:
      -    alias: "Turn off lamp after 10 minutes"
      -    sequence:
      -      - delay:
      -          minutes: 10
      -      - execute_service: light.turn_off
      -        service_data:
      -          entity_id: light.kitchen
      -
      +
      automation:
      +  alias: Turn on kitchen lights when there is movement 
      +  trigger:
      +    - platform: state
      +      entity_id: sensor.motion_sensor
      +      to: 'on'
      +  action:
      +    service: homeassistant.turn_on
      +    entity_id: script.timed_lamp
       
      +script:
      +  timed_lamp:
      +    alias: "Turn on lamp and set timer"
      +    sequence:
      +      # Cancel ev. old timers 
      +      - execute_service: script.turn_off
      +        service_data: 
      +           entity_id: script.timer_off
      +      - execute_service: light.turn_on
      +        service_data:
      +          entity_id: light.kitchen
      +      # Set new timer 
      +      - execute_service: script.turn_on
      +        service_data:
      +          entity_id: script.timer_off
      +
      +  timer_off:
      +    alias: "Turn off lamp after 10 minutes"
      +    sequence:
      +      - delay:
      +          minutes: 10
      +      - execute_service: light.turn_off
      +        service_data: 
      +          entity_id: light.kitchen
      +
      diff --git a/developers/add_new_platform.html b/developers/add_new_platform.html index 63071226fd..f132954349 100644 --- a/developers/add_new_platform.html +++ b/developers/add_new_platform.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -107,8 +107,7 @@
      -

      Home Assistant offers built-in components but it -is easy to built your own. If you are the kind of person that likes to learn from code rather then guide then head over to the config/custom_components folder in the repository for two example components.

      +

      Home Assistant offers built-in components but it is easy to built your own. If you are the kind of person that likes to learn from code rather then guide then head over to the config/custom_components folder in the repository for two example components.

      The first is hello_world.py, which is the classic Hello World example for Home Assistant. The second one is example.py which showcases various ways you can tap into Home Assistant to be notified when certain events occur.

      @@ -153,18 +152,11 @@ Home Assistant will use the directory that contains your config file as the dire

      Dependencies

      -

      Home Assistant allows components and platforms to specify their dependencies and requirements using the variables -DEPENDENCIES and REQUIREMENTS. Both are lists that contain strings.

      +

      Home Assistant allows components and platforms to specify their dependencies and requirements using the variables DEPENDENCIES and REQUIREMENTS. Both are lists that contain strings.

      -

      Dependencies are other Home Assistant components that should be setup before the platform is loaded. -An example is the MQTT sensor component, which requires an active connection to an MQTT broker. If -Home Assistant is unable to load and setup the MQTT component, it will not setup the MQTT sensor -component.

      +

      Dependencies are other Home Assistant components that should be setup before the platform is loaded. An example is the MQTT sensor component, which requires an active connection to an MQTT broker. If Home Assistant is unable to load and setup the MQTT component, it will not setup the MQTT sensor component.

      -

      Requirements are Python libraries that you would normally install using pip. Each entry in a -requirement list is a pip compatible string. For example, the media player Cast platform depends -on the Python package PyChromecast thus REQUIREMENTS = ['pychromecast==0.6.12']. If Home -Assistant is unable to install the package or verify it is installed, the component will fail to +

      Requirements are Python libraries that you would normally install using pip. Each entry in a requirement list is a pip compatible string. For example, the media player Cast platform depends on the Python package PyChromecast thus REQUIREMENTS = ['pychromecast==0.6.12']. If Home Assistant is unable to install the package or verify it is installed, the component will fail to load.

      Initializing components

      @@ -230,7 +222,7 @@ load.

      -

      Then in the setup-method of your component you will be able to refer to config['example']['host'] to get the value paulusschoutsen.nl.

      +

      Then in the setup method of your component you will be able to refer to config['example']['host'] to get the value paulusschoutsen.nl.

      diff --git a/developers/credits.html b/developers/credits.html index 4bb82d1da1..f15c97adcf 100644 --- a/developers/credits.html +++ b/developers/credits.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
  • +
  • Components
  • Developers
      @@ -107,9 +107,7 @@
      -

      Home Assistant is build from the ground-up to be easily extensible by other developers using -components. It uses Python 3 for the backend and -Polymer (Webcomponents) for the frontend.

      +

      Home Assistant is build from the ground-up to be easily extensible by other developers using components. It uses Python 3 for the backend and Polymer (Webcomponents) for the frontend.

      Home Assistant is open-source and MIT licensed. The source can be found here:

      @@ -122,8 +120,7 @@ components. It uses Python 3 for the backe

      Starting development

      -

      You will need to setup a development environment if you want to start developing a new feature or -component for Home Assistant perform theses steps

      +

      You will need to setup a development environment if you want to start developing a new feature or component for Home Assistant perform theses steps

      1
       2
      @@ -142,12 +139,13 @@ component for Home Assistant perform theses steps

      requests.

        -
      1. Go to the Home Assistant repository -and click fork in the top right.
      2. +
      3. Go to the Home Assistant repository and click fork in the top right.
      4. Follow steps in the previous section but with your forked repository.
      5. Create a new branch to hold your changes
        git checkout -b some-feature
      6. Make the changes you want
      7. +
      8. Check your changes for style violations
        +./script/lint
      9. Commit the changes
        git add .
        git commit -m "Added some-feature"
      10. @@ -161,18 +159,12 @@ pull request.

        Further reading

        diff --git a/developers/python_api.html b/developers/python_api.html index 4783d5a235..4732c65ae6 100644 --- a/developers/python_api.html +++ b/developers/python_api.html @@ -58,9 +58,9 @@
      11. Presence detection
      12. Automation
      13. Configuration cookbook
      14. -
      15. Component overview
      16. +
      17. Components
      18. Developers
          @@ -143,7 +143,7 @@

          Get details about servies and events

          -

          Similar to the output in the “Developer Tools” of the frontend

          +

          Similar to the output in the “Developer Tools” of the frontend.

          1
           2
          @@ -236,9 +236,11 @@
           3
           4
           5
          +6
           
          import homeassistant.remote as remote
           from homeassistant.const import STATE_ON
           
          +api = remote.API('host', 'password')
           remote.set_state(api, 'sensor.office_temperature', new_state=123)
           remote.set_state(api, 'switch.livingroom_pin_2', new_state=STATE_ON)
           
          @@ -258,9 +260,11 @@ 6 7 8 +9
      import time
       import homeassistant.remote as remote
       
      +api = remote.API('host', 'password')
       domain = 'switch'
       
       remote.call_service(api, domain, 'turn_on')
      @@ -271,7 +275,7 @@
       
       

      Control a single entity

      -

      To turn on or off a single switch, the ID of the entity is needed as attribute.

      +

      To turn on or off a single switch. The ID of the entity is needed as attribute.

      1
       2
      @@ -282,9 +286,11 @@
       7
       8
       9
      +10
       
      import time
       import homeassistant.remote as remote
       
      +api = remote.API('host', 'password')
       domain = 'switch'
       switch_name = 'switch.livingroom_pin_2'
       
      @@ -294,6 +300,27 @@
       
      +

      Send a notification

      + +

      The example uses the jabber notification platform to send a single message to the given recipient in the configuration.yaml file.

      + +
      1
      +2
      +3
      +4
      +5
      +6
      +7
      +
      import homeassistant.remote as remote
      +
      +api = remote.API('host', 'password')
      +domain = 'notify'
      +data = {"title":"Test", "message":"A simple test message from HA."}
      +
      +remote.call_service(api, domain, 'jabber', data)
      +
      + +

      For more details please check the source of homeassistant.remote.

      diff --git a/developers/rest_api.html b/developers/rest_api.html index 0fff18db33..a984068bba 100644 --- a/developers/rest_api.html +++ b/developers/rest_api.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
        @@ -161,6 +161,9 @@ Newer linux distributions are trending towards using systemd for managing daemon 10 11 12 +13 +14 +15
    • su -c 'cat <<EOF >> /lib/systemd/system/home-assistant.service
       [Unit]
       Description=Home Assistant
      @@ -168,7 +171,10 @@ Newer linux distributions are trending towards using systemd for managing daemon
       
       [Service]
       Type=simple
      -ExecStart=hass
      +ExecStart=/usr/local/bin/hass
      +# Next line is to run as a specific user
      +# for Raspberry Pi users, keep it at 'pi'
      +User=pi
       
       [Install]
       WantedBy=multi-user.target
      @@ -180,7 +186,7 @@ Newer linux distributions are trending towards using systemd for managing daemon
       

      1
       2
       3
      -
      sudo systemctl –system daemon-reload
      +
      sudo systemctl --system daemon-reload
       sudo systemctl enable home-assistant
       sudo systemctl start home-assistant
       

      diff --git a/getting-started/configuration.html b/getting-started/configuration.html index 5589200796..176a0e5724 100644 --- a/getting-started/configuration.html +++ b/getting-started/configuration.html @@ -58,9 +58,9 @@
    • Presence detection
    • Automation
    • Configuration cookbook
    • -
    • Component overview
    • +
    • Components
    • Developers
    • +
    • Components
    • Developers
        @@ -149,6 +149,8 @@ by using the Set State page in the Developer Tools (icon in the middle).

        You may find it desireable to customize the look and feel of your front page by altering some of these parameters. This can be done by adding the following config to the homeassistant: section.

        +

        Entity_pictures, badges, device_tracker pictures, etc can either be a URL or /local/file.jpg, which points to directory www in the HASS configuration directory.

        +
        1
         2
         3
        diff --git a/getting-started/index.html b/getting-started/index.html
        index cf6194d9c5..d7ff546b6a 100644
        --- a/getting-started/index.html
        +++ b/getting-started/index.html
        @@ -58,9 +58,9 @@
               
      • Presence detection
      • Automation
      • Configuration cookbook
      • -
      • Component overview
      • +
      • Components
      • Developers
      • +
      • Components
      • Developers
          diff --git a/getting-started/troubleshooting-configuration.html b/getting-started/troubleshooting-configuration.html index 7b1a63053d..6703d8dd8b 100644 --- a/getting-started/troubleshooting-configuration.html +++ b/getting-started/troubleshooting-configuration.html @@ -58,9 +58,9 @@
        • Presence detection
        • Automation
        • Configuration cookbook
        • -
        • Component overview
      • +
      • Components
      • Developers
      • +
      • Components
      • Developers
          @@ -124,19 +124,30 @@ by some distributions. If you are unable to run python3 -m pip --versiondownloading the installer and run it with Python 3: python3 get-pip.py.

          +

          distutils.errors.DistutilsOptionError: must supply either home or prefix/exec-prefix – not both
          +This is a known issue if you’re on a Mac using Homebrew to install Python. Please follow +these instructions +to resolve it.

          +

          CentOS and Python 3
          To run Python 3.x on CentOS or RHEL, Software Collections needs to be activated.

          Run the development version
          -If you want to stay on top of the development of Home Assistant then you can upgrade to the latest stuff what is available in the dev branch pip3 install --upgrade git+git://github.com/balloob/home-assistant.git@dev. Keep in mind, that stable releases of Home Assistant are published often.

          +If you want to stay on top of the development of Home Assistant then you can upgrade to the dev branch using +pip3 install --upgrade git+git://github.com/balloob/home-assistant.git@dev. Keep in mind, that stable releases +of Home Assistant are published often.

          No access to the frontend
          In newer Linux distributions (at least Fedora 22/CentOS 7) the access to a host is very limited. -This means that you can’t access the Home Assistant Frontend that is running on a host outside of the host machine. Windows and OSX machines may also have issues with this.

          +This means that you can’t access the Home Assistant Frontend that is running on a host outside of the +host machine. Windows and OSX machines may also have issues with this.

          -

          To fix this you will need to open your machine’s firewall for TCP traffic over port 8123. The method for doing this will vary depending on your operating system and the firewall you have installed. Below are some suggestions to try. Google is your friend here.

          +

          To fix this you will need to open your machine’s firewall for TCP traffic over port 8123. The method +for doing this will vary depending on your operating system and the firewall you have installed. +Below are some suggestions to try. Google is your friend here.

          -

          Windows and Mac OSX have good instructions posted.

          +

          Windows instructions
          +Mac OSX instructions

          For firewalld systems (Fedora, RHEL, etc.):

          diff --git a/help/index.html b/help/index.html index be7c55fef1..507706cac6 100644 --- a/help/index.html +++ b/help/index.html @@ -58,9 +58,9 @@
        • Presence detection
        • Automation
        • Configuration cookbook
        • -
        • Component overview
      • +
      • Components
      • Developers
          diff --git a/images/supported_brands/emblem-important.png b/images/supported_brands/emblem-important.png new file mode 100644 index 0000000000000000000000000000000000000000..8ddaa1e3bbfe3a8ddc1ba76910bbb29f2bdad1ed GIT binary patch literal 2897 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/firetv.png b/images/supported_brands/firetv.png new file mode 100644 index 0000000000000000000000000000000000000000..85ace6bdd0084ac02d5a309073a60b154564369f GIT binary patch literal 4937 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 D!JC_Q literal 0 HcmV?d00001 diff --git a/images/supported_brands/geofancy.png b/images/supported_brands/geofancy.png new file mode 100644 index 0000000000000000000000000000000000000000..88a65a176acb1ee01c39691326395ddd24136382 GIT binary patch literal 32558 zcmZVl1yGdl7dMRGyDTLssR9Dhf`A|(y@+&4cXxNkE}$SFE!|2t(zSpR(%r3ecfGvuC07m@;16UZSuQRWS z8vuaNTZ@Z-kP#QB`QYMcVQps)0B;|EQeSqQS0fP#b5zMC6Q$9T3Jve7P*>G$q|TceocTctcU`0e!H$%$v2P>;|>I!MI(?FqQ%27@twVBuaQv=eOW9c z?Yq@UK+Cv~uD;srVZx-^sds+U&%eySDY$7c|6bV8x;FKx`sc)w@{D2ng!lroubB$r zW7QLKXcHydimzh(2Z`7_NH2$WSE<6W`uAfG9uzO=+I%7wM#EkxwL6ef`9HnFRUVkI zt&<~Z!@Rw+uE$t7r92wvg@8-IN&e|XUZXus!iuz_*ij=dcS*~zS}=rKW-K`BjSbPB z{ElB$cc5r`VG&zh7H8}-yvh;nT>lzLz@FxQwx=Jgb(@~oXxcy!w#0g&h6od#u05kX zlB+bVXp}LApycG}&Ns5+M%eyDL(Gh@0HTlibmdc}C9L)O1I#W2-bW8>puf3;4^0GKY?tgT>h z4UP#Htto3ML?0Xz;N$*Ab|R-~>rh@KHdmgit&DTel_F>m{hP(UIpOD5>VEttkDRCd zWU}3(+l;U>3m?nJb2I48ndEaZS&L(PZWvFzXGB{BI5sdS=k+I4OzOV3OKrV>Pp3%s z%4D)gRxtNNCfC=_R!LqV2Cm;9KmF=Ae*HpejL2@$n?L$*&&Mx6$Xj21Q_d6Ysc>rR zto>al#59=1R_=UbA_ca#qI>v4eHhJGL;DC@Temys z)5ygL`ySp(hwi$cS2Gn=ukP$sz=B3T;fXnYM;<@1z38Zf^+4kcc)N}(+9Pu+b5-B- zcCG_Q=omXhe~S!^HLi{nKYV*Aaws$`B%fFowE6f{FrVK4r9bOEvpGn|9NS zdwTr@L@YZxfAe8$7Q>8hg`qL=Vz|E5q-_=tld58$?;82~*SnUxA3_wBB#nm8;|tbW zkM^)H266AHTA#Q*sX0uR0P z^~7*5fy{6w>9E5HrOuu|+~E4mmMeoR#>#xO^M`n1P62@xdp3E7-`syP1e`S_&K|j? zjST7sU@YT*lPU3-;_V~VoUJIXV8Qn5Yv9tKlnNysd_y|C&dlrC(E2mtJ3S)!Mbwtq z(k(*5V-eT>K=*wp@~7aghLvt1vHw2ddE2wOkRwIE4eoCdnCDHce>T5MuVKWh3REuN zQfP?Nq~?2uEa!VBX!rt2HfnwrdY>8D*M>dPEZRqL8DL zItIXwfyYBkgl$B1Co}70p~zJpGAni8XE5q`t+cs`CMa7I3lWyx-u_IR^=289r$Cqu zWr9ZL*HtX}n}ZVd>(!s;9Weqo$pbhL@TnT@=I-%0Ddj94W>i)@N;DJ$yHI}$*^kfD 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 literal 0 HcmV?d00001 diff --git a/images/supported_brands/preferences-system-privacy.png b/images/supported_brands/preferences-system-privacy.png new file mode 100644 index 0000000000000000000000000000000000000000..53b616cf908c4ea19c3b1ac73d98ee76862ca2dd GIT binary patch literal 3059 zcmWkw2|N_<8y{?J7HurKts^!q`pHpR$70KpV~KK~E1RQr{ILmHa%?%0BvGiGk)zz} z7Lw#jjzn_iO5{xcxB1M>`Q z>F?@HB`aR{yZU$qCk!U>{hM@&65vIKOsN4BS7$G@z8@u!taY`P3xW_NqCWnTN5rzt z-gOa6fdhA(_*Iv4L~dew8~(Ysjf;43zf5tCenI4=P08o-@>20x1_rnE|FS(#F61|W zA5KE^#-fmSK5Hdkn!1-%V#{(UPO7=m*!E>|ZhKs2p5t^!@Y182J-xu_yP64K?2D28 zVU02k4PVdB)y+-#uV(&7fHyk|Z9Elg3cvFgv0c#&H8q6p)nXWa7AVV?XsPb?nV&y@ zmWA&9UVcuwQFX0Iu(N!>7liynwpP4VA6*Pty=_Dqe52H`?P4H@eqgAnrK&n40EcND zmdw>Xj}_=PH!?C>xC8DdUXmZu)YN492L@Ia2`YA%XQ!s7o)!}m6OVQd+_~9c^|W_R zHVTDmF86v~Q?nCr_3GShqlb#ORav^+`f=*&RTWiLRj=#oZyHOZ2+qO5pM~JC#p6U5 zaKReUlpy!?X8GV06~$nA8h$|QSz7X94lKCA@TYn|d{|jpSSYiyvJ&{75Fc;Z`~E%d zilgIot1+vhREf|H5>`?1T7(T&Ag#w;=035roD0gL2wN5L>pO69X5G2|m$s6ZkmkFik&ZMUcgS71$ZVLHS ziGaNv8|f@qzcc&T40UK|Xvj&BeIX$IC8uslK|ur>9{gu>xNl@6PA`ThA_s%iT^qaJ zI8|IV(XzMNc%)*43({bD^X82~-hhpnoavJ`Q|&)dg@y9twf{rxZLM-ZrC3CIZu}ug z$I_Bt&3iPevQjNWGen?qe;onC>zopdYMp9|VB;{ev0+SiB+fk_o1$iwl^q3bo;<_j z>gp;eA;Doh(CMb^;qBdCVqeEq!_UwEnHi!!L7Nl1n~>l#kZZiXGxyZ@TianQ7VFge zL=zq5T;~ByE{9`qtvE2EhD3i&lDE{%A< zelBy34&y$gFLgAS>0s9wX1|w!q`P(`WHXsxJ|<}lwM?Cw2%hG~tu?U$ghV0V_x47T ztv`EJ)_+sKK5^H7?!y91Tsutk^y$;{tE(KXr`i!<>|My0$~4hSC4YP!)@xDoiuqf( z-a#ohFHf>t8N+DV-TcuvI0#E6bDu^Nc?F~KfhR2U?k;x67V)9stS)6&CMJh@OVe#H zUyiA*trd+ZyYiljy5Hr7Z!BD`2Y_p-`WjZW%;t$tmI2LiA_sub*4OaFzP`SkYOdD# zYVG|swuXb=6Rl_dl&tSXZ*#M0)P$PXDaZK?$SMtDuzMh^Q zekJH@Xx^C8Ei8-TL!%;5&t{jh@9^OH?3lGq=|og}&)ZZ5+fpD4^zr`w{tUHDC}Fx3 zY`OQAYF@RtSMYzI)w8y?CfVITvGp>a58bUyZ=Os)KiHqfO(1dl4TX)MqfqUtbQ2x< z2fE6S2DLh-eL?qgii!{>d3;R_=$T)x9{`n+T{V?uiYgd|{Jb3a(y>uoiMhcm%5%ZN zMr)xL{<{ zyA(HT0iYr(#?p^23bRWxq>{U2Mn^|Kj*s6p!@!>Qa_Gjs?e6G#903|Ag6(dZ{;88J zW6%9T?iSfvMMY(DzV8`4rWGUu6s|Rzdwy||j)q5rCIVOlu8bds)^0GjH-{awF`NLH zOM&NLc#KKYqH5MbqXt_P(jYm-BHp|JC3O!jD=SOgUUPn3Rn@u>(Bh>gjpB6n_5E)Z zQyAtLx@ozwv5{3#!B-cw8jbB16c>*k{-L1AwrDV~af%BrX>(3eW|h=3_e)Yd(UnR? zMn*=~u1bU~{fGOrF+dwmM8iK<`$|uQtZJq_d>EO7fpk=a2_YdN6H7DpZ1NMKTlRL$ z8~kzltWAbODKbQ6nuoy)^D9+8Vh&+DS!QO?UzH75 z48hd&$VFK`P#h@3&HB@~+C0Kbuu}6{MXcr7>_9OE1O!UKs&{n}F$`AgR7oN)ToSbC zEUVSt3{70c*wxqfXgT)B?+iLQWsU}m#4CiJHyhSb%jxsLD>~UhfMBHY0FBK1w9H#4 zFPC`O)?Rx*|B8ehF0t1`BexT)FTZk7c=rm!@I;i3c#Zx?Q%Ffk5v&{<9{y`uBib?Z zdI5&p8uzEx*d5|FHZhSB<@quCgf=VWHC9=S4g&IJlY41nb2GcRxEQ?!q%kc$z5mSu zOosRH{`PcYEziiWemCVAh1<8QcXE?thy>qwAAgm#j-w;_dTQ&IlFur=zMq8J{SXeo z>*zz*+P{61ijIjX1BO8$IVnGy4AAHs8$%>abBW0_a_Xr1&q!Q6JoM=^qG$c|J=F_m z7&*XkoSdCmfYTk_57U+*>QX2t3JVMWA!6{;CxHo$OL_qAPSyf-fy=C==F^(uN3`~q zPUHUW|Ds(WF}*Xj!^MFljNZzxs~J_22=efNgKma~hJr^H0)+Ya__jeMz8mv>Evz|x z80AM?fM5rI_NM%5R5~myEUH7cO4Kw)9v|)f1so{~nE~GS<;#~?eW_~NFIkWhw_;=AQBCS!&sBZBW3_(ha_R9 znwuzSvj2sVfebIWfsXoa&xY%j7EgQzJm;8_LtAHOY~b&jzXy9j4M`cd3}ooRI37mM zT95iyCm$c4rgwwuH<c1w&9BzvFe;pLSf9hLR+CAPxnOYJ#nY3bV%-7HxYjiHGN@zSy7bnu_d zBc>5hR8qP%Q#So|q literal 0 HcmV?d00001 diff --git a/images/supported_brands/radiotherm.png b/images/supported_brands/radiotherm.png new file mode 100644 index 0000000000000000000000000000000000000000..67f2fe6df50eb4ac54e3162eb6166024b897e9b8 GIT binary patch literal 7694 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 Hu0mjfmXwYZ literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 9549f7391f..df1d31d784 100644 --- a/index.html +++ b/index.html @@ -58,9 +58,9 @@
        • Presence detection
        • Automation
        • Configuration cookbook
        • -
        • Component overview
      • +
      • Components
      • Developers
          diff --git a/sitemap.xml b/sitemap.xml index e07e88da31..c624b21c81 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,5 +1,10 @@ + + https://home-assistant.io/blog/2015/10/26/firetv-and-radiotherm-now-supported/ + 2015-10-26T18:10:00-07:00 + 0.8 + https://home-assistant.io/blog/2015/10/11/measure-temperature-with-esp8266-and-report-to-mqtt/ 2015-10-11T12:10:00-07:00 @@ -142,805 +147,949 @@ https://home-assistant.io/developers/add_new_platform.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/alarm_control_panel.mqtt.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/android.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/api.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/architecture.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/arduino.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/automation.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/automation.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/cookbook/automation_for_rainy_days.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/cookbook/automation_sun.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/autostart.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/cookbook/basic_example_use_trigger_values.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/browser.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/camera.foscam.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/camera.generic.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/configuration.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/configurator.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/conversation.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/creating_components.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/credits.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_sun_light_trigger.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.actiontec.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.aruba.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.asuswrt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.ddwrt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.luci.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.mqtt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.netgear.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.nmap_scanner.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.owntracks.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.snmp.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.thomson.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.tomato.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/device_tracker.tplink.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/devices.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/discovery.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/downloader.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/frontend.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/group.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/history.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/ifttt.manything.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/ifttt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/blog/ - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/blog/archives/ - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/ - 2015-10-12T21:34:48-07:00 - weekly - 1.0 - - - https://home-assistant.io/developers/ - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/components/ - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/blog/ + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/blog/archives/ + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/ + 2015-10-26T21:58:24-07:00 + weekly + 1.0 + + + https://home-assistant.io/developers/ + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/cookbook/ - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/help/ - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/ - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/isy994.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/keyboard.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/light.blinksticklight.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/light.hue.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/light.limitlessled.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/light.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/light.rfxtrx.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/logbook.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.cast.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.denon.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.itunes.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.kodi.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.mpd.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.plex.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.sonos.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/media_player.squeezebox.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/modbus.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/mqtt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.file.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.instapush.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.nma.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.pushbullet.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.pushover.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.slack.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.smtp.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.syslog.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.telegram.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/notify.xmpp.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/presence-detection.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/python_api.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/rest_api.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/rfxtrx.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/scene.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/script.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.arduino.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.arest.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.bitcoin.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.command_sensor.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.dht.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.efergy.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.forecast.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.glances.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.mqtt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.mysensors.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.openweathermap.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.rest.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.rfxtrx.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.rpi_gpio.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.sabnzbd.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.swiss_public_transport.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.systemmonitor.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.temper.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.time_date.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.transmission.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sensor.worldclock.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/simple_alarm.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/sun.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.arduino.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.arest.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.command_switch.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.edimax.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.hikvision.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.mqtt.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.rfxtrx.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.rpi_gpio.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.transmission.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/switch.wemo.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/tellstick.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/thermostat.heat_control.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/thermostat.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/thermostat.nest.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/troubleshooting-configuration.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/getting-started/troubleshooting.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/cookbook/turn_on_light_for_10_minutes_when_motion_detected.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/vera.html - 2015-10-12T21:34:48-07:00 - weekly - 0.7 - - - https://home-assistant.io/components/verisure.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/developers/website.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/alarm_control_panel.manual.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/alarm_control_panel.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/alarm_control_panel.mqtt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/arduino.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/automation.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/browser.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/camera.foscam.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/camera.generic.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/configurator.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/conversation.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_sun_light_trigger.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.actiontec.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.aruba.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.asuswrt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.ddwrt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.geofancy.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.luci.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.mqtt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.netgear.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.nmap_scanner.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.owntracks.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.snmp.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.thomson.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.tomato.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.tplink.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/device_tracker.ubus.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/discovery.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/downloader.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/group.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/history.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/ifttt.manything.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/ifttt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/introduction.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/isy994.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/keyboard.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.blinksticklight.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.hue.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.hyperion.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.limitlessled.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.rfxtrx.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.tellstick.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.vera.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/light.wink.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/logbook.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.cast.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.denon.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.firetv.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.itunes.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.kodi.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.mpd.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.plex.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.sonos.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/media_player.squeezebox.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/modbus.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/mqtt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.file.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.instapush.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.nma.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.pushbullet.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.pushover.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.slack.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.smtp.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.syslog.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.telegram.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/notify.xmpp.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/rfxtrx.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/scene.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/script.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.arduino.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.arest.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.bitcoin.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.command_sensor.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.cpuspeed.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.dht.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.efergy.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.forecast.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.glances.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.modbus.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.mqtt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.mysensors.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.openweathermap.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.rest.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.rfxtrx.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.rpi_gpio.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.sabnzbd.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.swiss_public_transport.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.systemmonitor.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.tellstick.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.temper.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.time_date.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.transmission.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.vera.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.wink.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sensor.worldclock.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/shell_command.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/simple_alarm.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/sun.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.arduino.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.arest.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.command_switch.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.edimax.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.hikvision.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.modbus.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.mqtt.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.rest.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.rfxtrx.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.rpi_gpio.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.tellstick.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.transmission.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.vera.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.wemo.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/switch.wink.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/tellstick.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/thermostat.heat_control.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/thermostat.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/thermostat.nest.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/thermostat.radiotherm.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/vera.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/components/verisure.html + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/components/wink.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/components/zone.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 weekly 0.7 https://home-assistant.io/components/zwave.html - 2015-10-12T21:34:48-07:00 + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/cookbook/automation_for_rainy_days.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/cookbook/automation_sun.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/cookbook/basic_example_use_trigger_values.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/cookbook/dim_lights_when_playing_media.html + 2015-10-26T21:58:24-07:00 + weekly + 0.7 + + + https://home-assistant.io/cookbook/turn_on_light_for_10_minutes_when_motion_detected.html + 2015-10-26T21:58:24-07:00 weekly 0.7 diff --git a/stylesheets/screen.css b/stylesheets/screen.css index 3efbc72a56..1189ad5a43 100644 --- a/stylesheets/screen.css +++ b/stylesheets/screen.css @@ -26,4 +26,4 @@ * Email: dave@fontawesome.io * Twitter: http://twitter.com/davegandy * Work: Lead Product Designer @ Kyruus - http://kyruus.com - */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 790px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 790px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.hero{background-color:#038FC7;padding-bottom:0}.hero .lead{margin-bottom:16px}.hero .hero-buttons a{color:white;text-transform:uppercase;white-space:nowrap;display:inline-block}.hero .front-install{background-color:#333;margin-bottom:16px;display:inline-block;padding:8px;color:#DDD}.hero .front-install .sh{color:#c82829}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:140px;margin:10px;vertical-align:middle}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px}.advanced-installs-container #upstart-install,.advanced-installs-container #systemd-install,.advanced-installs-container #osx-install,.advanced-installs-container .advanced-installs{display:none}.advanced-installs-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.advanced-installs-container label.menu-selector+label.menu-selector{margin-left:10px}.advanced-installs-container #upstart-install:checked ~ .menu-selector.upstart,.advanced-installs-container #systemd-install:checked ~ .menu-selector.systemd,.advanced-installs-container #osx-install:checked ~ .menu-selector.osx{border-bottom-color:#049cdb}.advanced-installs-container #upstart-install:checked ~ .advanced-installs.upstart,.advanced-installs-container #systemd-install:checked ~ .advanced-installs.systemd,.advanced-installs-container #osx-install:checked ~ .advanced-installs.osx{display:block}.advanced-installs-container .advanced-installs{margin-top:30px} + */@font-face{font-family:'FontAwesome';src:url("../font/fontawesome-webfont.eot?v=3.2.1");src:url("../font/fontawesome-webfont.eot?#iefix&v=3.2.1") format("embedded-opentype"),url("../font/fontawesome-webfont.woff?v=3.2.1") format("woff"),url("../font/fontawesome-webfont.ttf?v=3.2.1") format("truetype"),url("../font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1") format("svg");font-weight:normal;font-style:normal}[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em}[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}.icon-large:before{vertical-align:-10%;font-size:1.33333em}a [class^="icon-"],a [class*=" icon-"]{display:inline}[class^="icon-"].icon-fixed-width,[class*=" icon-"].icon-fixed-width{display:inline-block;width:1.14286em;text-align:right;padding-right:0.28571em}[class^="icon-"].icon-fixed-width.icon-large,[class*=" icon-"].icon-fixed-width.icon-large{width:1.42857em}.icons-ul{margin-left:2.14286em;list-style-type:none}.icons-ul>li{position:relative}.icons-ul .icon-li{position:absolute;left:-2.14286em;width:2.14286em;text-align:center;line-height:inherit}[class^="icon-"].hide,[class*=" icon-"].hide{display:none}.icon-muted{color:#eee}.icon-light{color:#fff}.icon-dark{color:#333}.icon-border{border:solid 1px #eee;padding:.2em .25em .15em;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.icon-2x{font-size:2em}.icon-2x.icon-border{border-width:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.icon-3x{font-size:3em}.icon-3x.icon-border{border-width:3px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.icon-4x{font-size:4em}.icon-4x.icon-border{border-width:4px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.icon-5x{font-size:5em}.icon-5x.icon-border{border-width:5px;-webkit-border-radius:7px;-moz-border-radius:7px;border-radius:7px}.pull-right{float:right}.pull-left{float:left}[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}[class^="icon-"].pull-right,[class*=" icon-"].pull-right{margin-left:.3em}.icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:-35%}.icon-stack [class^="icon-"],.icon-stack [class*=" icon-"]{display:block;text-align:center;position:absolute;width:100%;height:100%;font-size:1em;line-height:inherit;*line-height:2em}.icon-stack .icon-stack-base{font-size:2em;*line-height:1em}.icon-spin{display:inline-block;-moz-animation:spin 2s infinite linear;-o-animation:spin 2s infinite linear;-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear}a .icon-stack,a .icon-spin{display:inline-block;text-decoration:none}@-moz-keyframes spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-o-keyframes spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@-ms-keyframes spin{0%{-ms-transform:rotate(0deg)}100%{-ms-transform:rotate(359deg)}}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}.icon-rotate-90:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1)}.icon-rotate-180:before{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2)}.icon-rotate-270:before{-webkit-transform:rotate(270deg);-moz-transform:rotate(270deg);-ms-transform:rotate(270deg);-o-transform:rotate(270deg);transform:rotate(270deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3)}.icon-flip-horizontal:before{-webkit-transform:scale(-1, 1);-moz-transform:scale(-1, 1);-ms-transform:scale(-1, 1);-o-transform:scale(-1, 1);transform:scale(-1, 1)}.icon-flip-vertical:before{-webkit-transform:scale(1, -1);-moz-transform:scale(1, -1);-ms-transform:scale(1, -1);-o-transform:scale(1, -1);transform:scale(1, -1)}a .icon-rotate-90:before,a .icon-rotate-180:before,a .icon-rotate-270:before,a .icon-flip-horizontal:before,a .icon-flip-vertical:before{display:inline-block}.icon-glass:before{content:"\f000"}.icon-music:before{content:"\f001"}.icon-search:before{content:"\f002"}.icon-envelope-alt:before{content:"\f003"}.icon-heart:before{content:"\f004"}.icon-star:before{content:"\f005"}.icon-star-empty:before{content:"\f006"}.icon-user:before{content:"\f007"}.icon-film:before{content:"\f008"}.icon-th-large:before{content:"\f009"}.icon-th:before{content:"\f00a"}.icon-th-list:before{content:"\f00b"}.icon-ok:before{content:"\f00c"}.icon-remove:before{content:"\f00d"}.icon-zoom-in:before{content:"\f00e"}.icon-zoom-out:before{content:"\f010"}.icon-power-off:before,.icon-off:before{content:"\f011"}.icon-signal:before{content:"\f012"}.icon-gear:before,.icon-cog:before{content:"\f013"}.icon-trash:before{content:"\f014"}.icon-home:before{content:"\f015"}.icon-file-alt:before{content:"\f016"}.icon-time:before{content:"\f017"}.icon-road:before{content:"\f018"}.icon-download-alt:before{content:"\f019"}.icon-download:before{content:"\f01a"}.icon-upload:before{content:"\f01b"}.icon-inbox:before{content:"\f01c"}.icon-play-circle:before{content:"\f01d"}.icon-rotate-right:before,.icon-repeat:before{content:"\f01e"}.icon-refresh:before{content:"\f021"}.icon-list-alt:before{content:"\f022"}.icon-lock:before{content:"\f023"}.icon-flag:before{content:"\f024"}.icon-headphones:before{content:"\f025"}.icon-volume-off:before{content:"\f026"}.icon-volume-down:before{content:"\f027"}.icon-volume-up:before{content:"\f028"}.icon-qrcode:before{content:"\f029"}.icon-barcode:before{content:"\f02a"}.icon-tag:before{content:"\f02b"}.icon-tags:before{content:"\f02c"}.icon-book:before{content:"\f02d"}.icon-bookmark:before{content:"\f02e"}.icon-print:before{content:"\f02f"}.icon-camera:before{content:"\f030"}.icon-font:before{content:"\f031"}.icon-bold:before{content:"\f032"}.icon-italic:before{content:"\f033"}.icon-text-height:before{content:"\f034"}.icon-text-width:before{content:"\f035"}.icon-align-left:before{content:"\f036"}.icon-align-center:before{content:"\f037"}.icon-align-right:before{content:"\f038"}.icon-align-justify:before{content:"\f039"}.icon-list:before{content:"\f03a"}.icon-indent-left:before{content:"\f03b"}.icon-indent-right:before{content:"\f03c"}.icon-facetime-video:before{content:"\f03d"}.icon-picture:before{content:"\f03e"}.icon-pencil:before{content:"\f040"}.icon-map-marker:before{content:"\f041"}.icon-adjust:before{content:"\f042"}.icon-tint:before{content:"\f043"}.icon-edit:before{content:"\f044"}.icon-share:before{content:"\f045"}.icon-check:before{content:"\f046"}.icon-move:before{content:"\f047"}.icon-step-backward:before{content:"\f048"}.icon-fast-backward:before{content:"\f049"}.icon-backward:before{content:"\f04a"}.icon-play:before{content:"\f04b"}.icon-pause:before{content:"\f04c"}.icon-stop:before{content:"\f04d"}.icon-forward:before{content:"\f04e"}.icon-fast-forward:before{content:"\f050"}.icon-step-forward:before{content:"\f051"}.icon-eject:before{content:"\f052"}.icon-chevron-left:before{content:"\f053"}.icon-chevron-right:before{content:"\f054"}.icon-plus-sign:before{content:"\f055"}.icon-minus-sign:before{content:"\f056"}.icon-remove-sign:before{content:"\f057"}.icon-ok-sign:before{content:"\f058"}.icon-question-sign:before{content:"\f059"}.icon-info-sign:before{content:"\f05a"}.icon-screenshot:before{content:"\f05b"}.icon-remove-circle:before{content:"\f05c"}.icon-ok-circle:before{content:"\f05d"}.icon-ban-circle:before{content:"\f05e"}.icon-arrow-left:before{content:"\f060"}.icon-arrow-right:before{content:"\f061"}.icon-arrow-up:before{content:"\f062"}.icon-arrow-down:before{content:"\f063"}.icon-mail-forward:before,.icon-share-alt:before{content:"\f064"}.icon-resize-full:before{content:"\f065"}.icon-resize-small:before{content:"\f066"}.icon-plus:before{content:"\f067"}.icon-minus:before{content:"\f068"}.icon-asterisk:before{content:"\f069"}.icon-exclamation-sign:before{content:"\f06a"}.icon-gift:before{content:"\f06b"}.icon-leaf:before{content:"\f06c"}.icon-fire:before{content:"\f06d"}.icon-eye-open:before{content:"\f06e"}.icon-eye-close:before{content:"\f070"}.icon-warning-sign:before{content:"\f071"}.icon-plane:before{content:"\f072"}.icon-calendar:before{content:"\f073"}.icon-random:before{content:"\f074"}.icon-comment:before{content:"\f075"}.icon-magnet:before{content:"\f076"}.icon-chevron-up:before{content:"\f077"}.icon-chevron-down:before{content:"\f078"}.icon-retweet:before{content:"\f079"}.icon-shopping-cart:before{content:"\f07a"}.icon-folder-close:before{content:"\f07b"}.icon-folder-open:before{content:"\f07c"}.icon-resize-vertical:before{content:"\f07d"}.icon-resize-horizontal:before{content:"\f07e"}.icon-bar-chart:before{content:"\f080"}.icon-twitter-sign:before{content:"\f081"}.icon-facebook-sign:before{content:"\f082"}.icon-camera-retro:before{content:"\f083"}.icon-key:before{content:"\f084"}.icon-gears:before,.icon-cogs:before{content:"\f085"}.icon-comments:before{content:"\f086"}.icon-thumbs-up-alt:before{content:"\f087"}.icon-thumbs-down-alt:before{content:"\f088"}.icon-star-half:before{content:"\f089"}.icon-heart-empty:before{content:"\f08a"}.icon-signout:before{content:"\f08b"}.icon-linkedin-sign:before{content:"\f08c"}.icon-pushpin:before{content:"\f08d"}.icon-external-link:before{content:"\f08e"}.icon-signin:before{content:"\f090"}.icon-trophy:before{content:"\f091"}.icon-github-sign:before{content:"\f092"}.icon-upload-alt:before{content:"\f093"}.icon-lemon:before{content:"\f094"}.icon-phone:before{content:"\f095"}.icon-unchecked:before,.icon-check-empty:before{content:"\f096"}.icon-bookmark-empty:before{content:"\f097"}.icon-phone-sign:before{content:"\f098"}.icon-twitter:before{content:"\f099"}.icon-facebook:before{content:"\f09a"}.icon-github:before{content:"\f09b"}.icon-unlock:before{content:"\f09c"}.icon-credit-card:before{content:"\f09d"}.icon-rss:before{content:"\f09e"}.icon-hdd:before{content:"\f0a0"}.icon-bullhorn:before{content:"\f0a1"}.icon-bell:before{content:"\f0a2"}.icon-certificate:before{content:"\f0a3"}.icon-hand-right:before{content:"\f0a4"}.icon-hand-left:before{content:"\f0a5"}.icon-hand-up:before{content:"\f0a6"}.icon-hand-down:before{content:"\f0a7"}.icon-circle-arrow-left:before{content:"\f0a8"}.icon-circle-arrow-right:before{content:"\f0a9"}.icon-circle-arrow-up:before{content:"\f0aa"}.icon-circle-arrow-down:before{content:"\f0ab"}.icon-globe:before{content:"\f0ac"}.icon-wrench:before{content:"\f0ad"}.icon-tasks:before{content:"\f0ae"}.icon-filter:before{content:"\f0b0"}.icon-briefcase:before{content:"\f0b1"}.icon-fullscreen:before{content:"\f0b2"}.icon-group:before{content:"\f0c0"}.icon-link:before{content:"\f0c1"}.icon-cloud:before{content:"\f0c2"}.icon-beaker:before{content:"\f0c3"}.icon-cut:before{content:"\f0c4"}.icon-copy:before{content:"\f0c5"}.icon-paperclip:before,.icon-paper-clip:before{content:"\f0c6"}.icon-save:before{content:"\f0c7"}.icon-sign-blank:before{content:"\f0c8"}.icon-reorder:before{content:"\f0c9"}.icon-list-ul:before{content:"\f0ca"}.icon-list-ol:before{content:"\f0cb"}.icon-strikethrough:before{content:"\f0cc"}.icon-underline:before{content:"\f0cd"}.icon-table:before{content:"\f0ce"}.icon-magic:before{content:"\f0d0"}.icon-truck:before{content:"\f0d1"}.icon-pinterest:before{content:"\f0d2"}.icon-pinterest-sign:before{content:"\f0d3"}.icon-google-plus-sign:before{content:"\f0d4"}.icon-google-plus:before{content:"\f0d5"}.icon-money:before{content:"\f0d6"}.icon-caret-down:before{content:"\f0d7"}.icon-caret-up:before{content:"\f0d8"}.icon-caret-left:before{content:"\f0d9"}.icon-caret-right:before{content:"\f0da"}.icon-columns:before{content:"\f0db"}.icon-sort:before{content:"\f0dc"}.icon-sort-down:before{content:"\f0dd"}.icon-sort-up:before{content:"\f0de"}.icon-envelope:before{content:"\f0e0"}.icon-linkedin:before{content:"\f0e1"}.icon-rotate-left:before,.icon-undo:before{content:"\f0e2"}.icon-legal:before{content:"\f0e3"}.icon-dashboard:before{content:"\f0e4"}.icon-comment-alt:before{content:"\f0e5"}.icon-comments-alt:before{content:"\f0e6"}.icon-bolt:before{content:"\f0e7"}.icon-sitemap:before{content:"\f0e8"}.icon-umbrella:before{content:"\f0e9"}.icon-paste:before{content:"\f0ea"}.icon-lightbulb:before{content:"\f0eb"}.icon-exchange:before{content:"\f0ec"}.icon-cloud-download:before{content:"\f0ed"}.icon-cloud-upload:before{content:"\f0ee"}.icon-user-md:before{content:"\f0f0"}.icon-stethoscope:before{content:"\f0f1"}.icon-suitcase:before{content:"\f0f2"}.icon-bell-alt:before{content:"\f0f3"}.icon-coffee:before{content:"\f0f4"}.icon-food:before{content:"\f0f5"}.icon-file-text-alt:before{content:"\f0f6"}.icon-building:before{content:"\f0f7"}.icon-hospital:before{content:"\f0f8"}.icon-ambulance:before{content:"\f0f9"}.icon-medkit:before{content:"\f0fa"}.icon-fighter-jet:before{content:"\f0fb"}.icon-beer:before{content:"\f0fc"}.icon-h-sign:before{content:"\f0fd"}.icon-plus-sign-alt:before{content:"\f0fe"}.icon-double-angle-left:before{content:"\f100"}.icon-double-angle-right:before{content:"\f101"}.icon-double-angle-up:before{content:"\f102"}.icon-double-angle-down:before{content:"\f103"}.icon-angle-left:before{content:"\f104"}.icon-angle-right:before{content:"\f105"}.icon-angle-up:before{content:"\f106"}.icon-angle-down:before{content:"\f107"}.icon-desktop:before{content:"\f108"}.icon-laptop:before{content:"\f109"}.icon-tablet:before{content:"\f10a"}.icon-mobile-phone:before{content:"\f10b"}.icon-circle-blank:before{content:"\f10c"}.icon-quote-left:before{content:"\f10d"}.icon-quote-right:before{content:"\f10e"}.icon-spinner:before{content:"\f110"}.icon-circle:before{content:"\f111"}.icon-mail-reply:before,.icon-reply:before{content:"\f112"}.icon-github-alt:before{content:"\f113"}.icon-folder-close-alt:before{content:"\f114"}.icon-folder-open-alt:before{content:"\f115"}.icon-expand-alt:before{content:"\f116"}.icon-collapse-alt:before{content:"\f117"}.icon-smile:before{content:"\f118"}.icon-frown:before{content:"\f119"}.icon-meh:before{content:"\f11a"}.icon-gamepad:before{content:"\f11b"}.icon-keyboard:before{content:"\f11c"}.icon-flag-alt:before{content:"\f11d"}.icon-flag-checkered:before{content:"\f11e"}.icon-terminal:before{content:"\f120"}.icon-code:before{content:"\f121"}.icon-reply-all:before{content:"\f122"}.icon-mail-reply-all:before{content:"\f122"}.icon-star-half-full:before,.icon-star-half-empty:before{content:"\f123"}.icon-location-arrow:before{content:"\f124"}.icon-crop:before{content:"\f125"}.icon-code-fork:before{content:"\f126"}.icon-unlink:before{content:"\f127"}.icon-question:before{content:"\f128"}.icon-info:before{content:"\f129"}.icon-exclamation:before{content:"\f12a"}.icon-superscript:before{content:"\f12b"}.icon-subscript:before{content:"\f12c"}.icon-eraser:before{content:"\f12d"}.icon-puzzle-piece:before{content:"\f12e"}.icon-microphone:before{content:"\f130"}.icon-microphone-off:before{content:"\f131"}.icon-shield:before{content:"\f132"}.icon-calendar-empty:before{content:"\f133"}.icon-fire-extinguisher:before{content:"\f134"}.icon-rocket:before{content:"\f135"}.icon-maxcdn:before{content:"\f136"}.icon-chevron-sign-left:before{content:"\f137"}.icon-chevron-sign-right:before{content:"\f138"}.icon-chevron-sign-up:before{content:"\f139"}.icon-chevron-sign-down:before{content:"\f13a"}.icon-html5:before{content:"\f13b"}.icon-css3:before{content:"\f13c"}.icon-anchor:before{content:"\f13d"}.icon-unlock-alt:before{content:"\f13e"}.icon-bullseye:before{content:"\f140"}.icon-ellipsis-horizontal:before{content:"\f141"}.icon-ellipsis-vertical:before{content:"\f142"}.icon-rss-sign:before{content:"\f143"}.icon-play-sign:before{content:"\f144"}.icon-ticket:before{content:"\f145"}.icon-minus-sign-alt:before{content:"\f146"}.icon-check-minus:before{content:"\f147"}.icon-level-up:before{content:"\f148"}.icon-level-down:before{content:"\f149"}.icon-check-sign:before{content:"\f14a"}.icon-edit-sign:before{content:"\f14b"}.icon-external-link-sign:before{content:"\f14c"}.icon-share-sign:before{content:"\f14d"}.icon-compass:before{content:"\f14e"}.icon-collapse:before{content:"\f150"}.icon-collapse-top:before{content:"\f151"}.icon-expand:before{content:"\f152"}.icon-euro:before,.icon-eur:before{content:"\f153"}.icon-gbp:before{content:"\f154"}.icon-dollar:before,.icon-usd:before{content:"\f155"}.icon-rupee:before,.icon-inr:before{content:"\f156"}.icon-yen:before,.icon-jpy:before{content:"\f157"}.icon-renminbi:before,.icon-cny:before{content:"\f158"}.icon-won:before,.icon-krw:before{content:"\f159"}.icon-bitcoin:before,.icon-btc:before{content:"\f15a"}.icon-file:before{content:"\f15b"}.icon-file-text:before{content:"\f15c"}.icon-sort-by-alphabet:before{content:"\f15d"}.icon-sort-by-alphabet-alt:before{content:"\f15e"}.icon-sort-by-attributes:before{content:"\f160"}.icon-sort-by-attributes-alt:before{content:"\f161"}.icon-sort-by-order:before{content:"\f162"}.icon-sort-by-order-alt:before{content:"\f163"}.icon-thumbs-up:before{content:"\f164"}.icon-thumbs-down:before{content:"\f165"}.icon-youtube-sign:before{content:"\f166"}.icon-youtube:before{content:"\f167"}.icon-xing:before{content:"\f168"}.icon-xing-sign:before{content:"\f169"}.icon-youtube-play:before{content:"\f16a"}.icon-dropbox:before{content:"\f16b"}.icon-stackexchange:before{content:"\f16c"}.icon-instagram:before{content:"\f16d"}.icon-flickr:before{content:"\f16e"}.icon-adn:before{content:"\f170"}.icon-bitbucket:before{content:"\f171"}.icon-bitbucket-sign:before{content:"\f172"}.icon-tumblr:before{content:"\f173"}.icon-tumblr-sign:before{content:"\f174"}.icon-long-arrow-down:before{content:"\f175"}.icon-long-arrow-up:before{content:"\f176"}.icon-long-arrow-left:before{content:"\f177"}.icon-long-arrow-right:before{content:"\f178"}.icon-apple:before{content:"\f179"}.icon-windows:before{content:"\f17a"}.icon-android:before{content:"\f17b"}.icon-linux:before{content:"\f17c"}.icon-dribbble:before{content:"\f17d"}.icon-skype:before{content:"\f17e"}.icon-foursquare:before{content:"\f180"}.icon-trello:before{content:"\f181"}.icon-female:before{content:"\f182"}.icon-male:before{content:"\f183"}.icon-gittip:before{content:"\f184"}.icon-sun:before{content:"\f185"}.icon-moon:before{content:"\f186"}.icon-archive:before{content:"\f187"}.icon-bug:before{content:"\f188"}.icon-vk:before{content:"\f189"}.icon-weibo:before{content:"\f18a"}.icon-renren:before{content:"\f18b"}body,html{background-color:#f5f5f5;color:#222;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;height:100%}a{color:#049cdb;text-decoration:none}a:visited{color:#0378a9}.menu a{color:#049cdb}.gist{font-size:0.75em}@media only screen and (max-width: 480px){.title.indent::before{display:none}}.title.indent::before{content:"// ";color:#049cdb}.divider,.usp hr,.hero hr{border:none;border-bottom:2px solid #049cdb;clear:both;margin:2em 0}article.post img,article.page img,article.listing img{border:5px solid #fff;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,0.25)}article.post img.right,article.page img.right,article.listing img.right{float:right;margin:0 0 10px 20px}article.post img.left,article.page img.left,article.listing img.left{float:left;margin:0 20px 10px 0}.grid-wrapper{margin:auto;max-width:1100px;padding:0 25px}.grid-center{text-align:center}.grid-center>.grid__item{text-align:left}body>header{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-bottom:2em}body>header .site-title{color:#222;font-size:1.7em;font-weight:bold;line-height:2.5em}body{-webkit-animation:bugfix infinite 1s}@-webkit-keyframes bugfix{from{padding:0}to{padding:0}}.header{position:relative}#toggle,.toggle{display:none}.menu li{list-style:none;float:left}@media only screen and (max-width: 955px){.menu{display:none;opacity:0;width:100%;position:absolute;right:0}.menu li{display:block;width:100%;margin:0}.menu li a{display:block;width:100%;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.toggle{display:block;position:relative;cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}#toggle:checked ~ .menu{display:block;opacity:1;z-index:999}}ul.menu li{position:relative}ul.menu li:hover ul{display:block}ul.menu li ul{display:none;z-index:10;position:absolute;top:68px;margin-left:0;background-color:white}ul.menu li ul li{white-space:nowrap;float:none}ul.menu li ul li a{display:block;padding:20px 10px}ul.menu li ul li a:hover,ul.menu li ul li a:focus{background:#eee}header .grid{height:68px}.menu{margin:0;top:68px}.menu li a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.25s linear;-moz-transition:all 0.25s linear;-o-transition:all 0.25s linear;transition:all 0.25s linear;display:block;padding:32px 20px;text-decoration:none;font-weight:normal;font-size:16px;line-height:1}.menu>li>a:hover,.menu>li>a:focus{background:#f5f5f5;box-shadow:inset 0px 5px #049cdb;color:#049cdb;padding:40px 20px 24px}.toggle{z-index:20}@media only screen and (max-width: 955px){.menu{background:#fff;border-top:1px solid #049cdb;border-bottom:4px solid #049cdb}.menu,.menu li,.menu li a{height:auto}.menu li a{padding:15px 15px !important}.menu li a:hover,.menu li a:focus{background:#eee;box-shadow:inset 5px 0px #049cdb;padding:15px 15px 15px 25px}.toggle{position:absolute;top:17px;right:10px}.toggle::after{-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:all 0.5s linear;-moz-transition:all 0.5s linear;-o-transition:all 0.5s linear;transition:all 0.5s linear;font-family:"FontAwesome";content:"\f0c9";display:inline-block;width:100%;padding:10px 15px;background:#049cdb;text-align:center;font-size:12px;color:#fff;white-space:nowrap}.toggle:hover::after{background:#0383b8}#toggle:checked+.toggle::after{content:attr(data-close)}ul.menu li ul{display:block;position:relative;top:0}}#page-wrap{min-height:100%;margin-bottom:-100px}#page-wrap::after{content:"";display:block;height:100px}body>footer{-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);background-color:#fff;margin-top:3em}.copyright{margin:0;padding:20px 0;text-align:center}article blockquote{border-left:2px solid #049cdb;color:#484848;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.25em;font-style:italic;padding-left:15px}article blockquote footer{float:right;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:0.8em}article blockquote footer strong::after{content:" \2014 "}article blockquote footer a{text-decoration:underline}article .pullquote-left::before,article .pullquote-right::before{border:medium none;color:#049cdb;content:"\201C" attr(data-pullquote) "\201D";float:right;font-family:Georgia,"Times New Roman",Times,serif;font-size:1.4em;font-style:italic;line-height:1.45em;margin:0.3em 0 1em 1.5em;padding:0;position:relative;top:7px;width:45%}@media only screen and (max-width: 480px){article .pullquote-left::before,article .pullquote-right::before{border-top:1px dotted #049cdb;border-bottom:1px dotted #049cdb;padding:0 10px;width:100%}}article .tags{display:inline}article .tags li{margin-right:2px}article .tags li::after{content:","}article .tags li:last-child::after{content:""}article .tags li a{color:#555;text-decoration:none}article .tags li a:hover{text-decoration:underline}article .meta{font-size:12px;padding:0 0 5px}article .meta>*{margin-right:15px;white-space:nowrap}article .meta>*:last-child{margin-right:0}article .meta .comments::before{content:"\f075";font-family:"FontAwesome";padding-right:3px}article.listing{margin-bottom:20px}article.listing h1{margin-bottom:0}article.listing h1 a{color:#049cdb;text-decoration:none}article.listing .entry-content{margin:10px 0}article.listing+hr{border:none;border-bottom:1px solid #049cdb}@media only screen and (max-width: 480px){article.post .tags{clear:both;margin-top:7px}}article.post h1{margin-bottom:0}article.post .meta{border-bottom:1px solid #049cdb;margin-bottom:20px}#archive-list article h1{margin-bottom:0}.sans,html .gist .gist-file .gist-meta{font-family:"Helvetica Neue",Arial,sans-serif}.mono,pre,p code,li code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace}.highlight table{margin-bottom:0}.highlight .gutter,.highlight .code{padding:0}.highlight .gutter .line-number{display:block}.highlight,html .gist .gist-file .gist-syntax .gist-highlight{border:1px solid #05232b !important}.highlight table td.code,html .gist .gist-file .gist-syntax .gist-highlight table td.code{width:100%}.highlight .line-numbers,html .gist .gist-file .gist-syntax .highlight .line_numbers{text-align:right;font-size:13px;line-height:1.45em;background:#073642 url('/images/noise.png?1419195603') top left !important;border-right:1px solid #00232c !important;-webkit-box-shadow:#083e4b -1px 0 inset;-moz-box-shadow:#083e4b -1px 0 inset;-ms-box-shadow:#083e4b -1px 0 inset;-o-box-shadow:#083e4b -1px 0 inset;box-shadow:#083e4b -1px 0 inset;text-shadow:#021014 0 -1px;padding:.8em !important;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.highlight .line-numbers span,html .gist .gist-file .gist-syntax .highlight .line_numbers span{color:#586e75 !important}figure.code,.gist-file,pre{-webkit-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-moz-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-ms-box-shadow:rgba(0,0,0,0.06) 0 0 10px;-o-box-shadow:rgba(0,0,0,0.06) 0 0 10px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}figure.code .highlight pre,.gist-file .highlight pre,pre .highlight pre{-webkit-box-shadow:none;-moz-box-shadow:none;-ms-box-shadow:none;-o-box-shadow:none;box-shadow:none}.gist .highlight *::-moz-selection,figure.code .highlight *::-moz-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::-webkit-selection,figure.code .highlight *::-webkit-selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}.gist .highlight *::selection,figure.code .highlight *::selection{background:#386774;color:inherit;text-shadow:#002b36 0 1px}html .gist .gist-file{margin-bottom:1.8em;position:relative;border:none;padding-top:26px !important}html .gist .gist-file .highlight{margin-bottom:0}html .gist .gist-file .gist-syntax{border-bottom:0 !important;background:none !important}html .gist .gist-file .gist-syntax .gist-highlight{background:#002b36 !important}html .gist .gist-file .gist-syntax .highlight pre{padding:0}html .gist .gist-file .gist-meta{padding:.6em 0.8em;border:1px solid #083e4b !important;color:#586e75;font-size:.7em !important;background:#073642 url('/images/noise.png?1419195603') top left;line-height:1.5em}html .gist .gist-file .gist-meta a{color:#75878b !important}html .gist .gist-file .gist-meta a:hover{color:#93a1a1 !important}html .gist .gist-file .gist-meta a[href*='#file']{position:absolute;top:0;left:0;right:-10px;color:#474747 !important}html .gist .gist-file .gist-meta a[href*='#file']:hover{color:#049cdb !important}html .gist .gist-file .gist-meta a[href*=raw]{top:.4em}pre{background:#002b36 url('/images/noise.png?1419195603') top left;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;border:1px solid #05232b;line-height:1.45em;font-size:13px;margin-bottom:2.1em;padding:.8em 1em;color:#93a1a1;overflow:auto}h3.filename+pre{-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px}p code,li code{display:inline-block;white-space:no-wrap;background:#fff;font-size:.8em;line-height:1.5em;color:#555;border:1px solid #ddd;-webkit-border-radius:0.4em;-moz-border-radius:0.4em;border-radius:0.4em;padding:0 .3em;margin:-1px 0}p pre code,li pre code{font-size:1em !important;background:none;border:none}.pre-code,html .gist .gist-file .gist-syntax .highlight pre,.highlight code{font-family:Menlo,Monaco,"Andale Mono","lucida console","Courier New",monospace !important;overflow:scroll;overflow-y:hidden;display:block;padding:.8em;overflow-x:auto;line-height:1.45em;background:#002b36 url('/images/noise.png?1419195603') top left !important;color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{color:#93a1a1 !important}.pre-code span,html .gist .gist-file .gist-syntax .highlight pre span,.highlight code span{font-style:normal !important;font-weight:normal !important}.pre-code .c,html .gist .gist-file .gist-syntax .highlight pre .c,.highlight code .c{color:#586e75 !important;font-style:italic !important}.pre-code .cm,html .gist .gist-file .gist-syntax .highlight pre .cm,.highlight code .cm{color:#586e75 !important;font-style:italic !important}.pre-code .cp,html .gist .gist-file .gist-syntax .highlight pre .cp,.highlight code .cp{color:#586e75 !important;font-style:italic !important}.pre-code .c1,html .gist .gist-file .gist-syntax .highlight pre .c1,.highlight code .c1{color:#586e75 !important;font-style:italic !important}.pre-code .cs,html .gist .gist-file .gist-syntax .highlight pre .cs,.highlight code .cs{color:#586e75 !important;font-weight:bold !important;font-style:italic !important}.pre-code .err,html .gist .gist-file .gist-syntax .highlight pre .err,.highlight code .err{color:#dc322f !important;background:none !important}.pre-code .k,html .gist .gist-file .gist-syntax .highlight pre .k,.highlight code .k{color:#cb4b16 !important}.pre-code .o,html .gist .gist-file .gist-syntax .highlight pre .o,.highlight code .o{color:#93a1a1 !important;font-weight:bold !important}.pre-code .p,html .gist .gist-file .gist-syntax .highlight pre .p,.highlight code .p{color:#93a1a1 !important}.pre-code .ow,html .gist .gist-file .gist-syntax .highlight pre .ow,.highlight code .ow{color:#2aa198 !important;font-weight:bold !important}.pre-code .gd,html .gist .gist-file .gist-syntax .highlight pre .gd,.highlight code .gd{color:#93a1a1 !important;background-color:#372c34 !important;display:inline-block}.pre-code .gd .x,html .gist .gist-file .gist-syntax .highlight pre .gd .x,.highlight code .gd .x{color:#93a1a1 !important;background-color:#4d2d33 !important;display:inline-block}.pre-code .ge,html .gist .gist-file .gist-syntax .highlight pre .ge,.highlight code .ge{color:#93a1a1 !important;font-style:italic !important}.pre-code .gh,html .gist .gist-file .gist-syntax .highlight pre .gh,.highlight code .gh{color:#586e75 !important}.pre-code .gi,html .gist .gist-file .gist-syntax .highlight pre .gi,.highlight code .gi{color:#93a1a1 !important;background-color:#1a412b !important;display:inline-block}.pre-code .gi .x,html .gist .gist-file .gist-syntax .highlight pre .gi .x,.highlight code .gi .x{color:#93a1a1 !important;background-color:#355720 !important;display:inline-block}.pre-code .gs,html .gist .gist-file .gist-syntax .highlight pre .gs,.highlight code .gs{color:#93a1a1 !important;font-weight:bold !important}.pre-code .gu,html .gist .gist-file .gist-syntax .highlight pre .gu,.highlight code .gu{color:#6c71c4 !important}.pre-code .kc,html .gist .gist-file .gist-syntax .highlight pre .kc,.highlight code .kc{color:#859900 !important;font-weight:bold !important}.pre-code .kd,html .gist .gist-file .gist-syntax .highlight pre .kd,.highlight code .kd{color:#268bd2 !important}.pre-code .kp,html .gist .gist-file .gist-syntax .highlight pre .kp,.highlight code .kp{color:#cb4b16 !important;font-weight:bold !important}.pre-code .kr,html .gist .gist-file .gist-syntax .highlight pre .kr,.highlight code .kr{color:#d33682 !important;font-weight:bold !important}.pre-code .kt,html .gist .gist-file .gist-syntax .highlight pre .kt,.highlight code .kt{color:#2aa198 !important}.pre-code .n,html .gist .gist-file .gist-syntax .highlight pre .n,.highlight code .n{color:#268bd2 !important}.pre-code .na,html .gist .gist-file .gist-syntax .highlight pre .na,.highlight code .na{color:#268bd2 !important}.pre-code .nb,html .gist .gist-file .gist-syntax .highlight pre .nb,.highlight code .nb{color:#859900 !important}.pre-code .nc,html .gist .gist-file .gist-syntax .highlight pre .nc,.highlight code .nc{color:#d33682 !important}.pre-code .no,html .gist .gist-file .gist-syntax .highlight pre .no,.highlight code .no{color:#b58900 !important}.pre-code .nl,html .gist .gist-file .gist-syntax .highlight pre .nl,.highlight code .nl{color:#859900 !important}.pre-code .ne,html .gist .gist-file .gist-syntax .highlight pre .ne,.highlight code .ne{color:#268bd2 !important;font-weight:bold !important}.pre-code .nf,html .gist .gist-file .gist-syntax .highlight pre .nf,.highlight code .nf{color:#268bd2 !important;font-weight:bold !important}.pre-code .nn,html .gist .gist-file .gist-syntax .highlight pre .nn,.highlight code .nn{color:#b58900 !important}.pre-code .nt,html .gist .gist-file .gist-syntax .highlight pre .nt,.highlight code .nt{color:#268bd2 !important;font-weight:bold !important}.pre-code .nx,html .gist .gist-file .gist-syntax .highlight pre .nx,.highlight code .nx{color:#b58900 !important}.pre-code .vg,html .gist .gist-file .gist-syntax .highlight pre .vg,.highlight code .vg{color:#268bd2 !important}.pre-code .vi,html .gist .gist-file .gist-syntax .highlight pre .vi,.highlight code .vi{color:#268bd2 !important}.pre-code .nv,html .gist .gist-file .gist-syntax .highlight pre .nv,.highlight code .nv{color:#268bd2 !important}.pre-code .mf,html .gist .gist-file .gist-syntax .highlight pre .mf,.highlight code .mf{color:#2aa198 !important}.pre-code .m,html .gist .gist-file .gist-syntax .highlight pre .m,.highlight code .m{color:#2aa198 !important}.pre-code .mh,html .gist .gist-file .gist-syntax .highlight pre .mh,.highlight code .mh{color:#2aa198 !important}.pre-code .mi,html .gist .gist-file .gist-syntax .highlight pre .mi,.highlight code .mi{color:#2aa198 !important}.pre-code .s,html .gist .gist-file .gist-syntax .highlight pre .s,.highlight code .s{color:#2aa198 !important}.pre-code .sd,html .gist .gist-file .gist-syntax .highlight pre .sd,.highlight code .sd{color:#2aa198 !important}.pre-code .s2,html .gist .gist-file .gist-syntax .highlight pre .s2,.highlight code .s2{color:#2aa198 !important}.pre-code .se,html .gist .gist-file .gist-syntax .highlight pre .se,.highlight code .se{color:#dc322f !important}.pre-code .si,html .gist .gist-file .gist-syntax .highlight pre .si,.highlight code .si{color:#268bd2 !important}.pre-code .sr,html .gist .gist-file .gist-syntax .highlight pre .sr,.highlight code .sr{color:#2aa198 !important}.pre-code .s1,html .gist .gist-file .gist-syntax .highlight pre .s1,.highlight code .s1{color:#2aa198 !important}.pre-code div .gd,html .gist .gist-file .gist-syntax .highlight pre div .gd,.highlight code div .gd,.pre-code div .gd .x,html .gist .gist-file .gist-syntax .highlight pre div .gd .x,.highlight code div .gd .x,.pre-code div .gi,html .gist .gist-file .gist-syntax .highlight pre div .gi,.highlight code div .gi,.pre-code div .gi .x,html .gist .gist-file .gist-syntax .highlight pre div .gi .x,.highlight code div .gi .x{display:inline-block;width:100%}.highlight,.gist-highlight{margin-bottom:1.8em;background:#002b36;overflow-y:hidden;overflow-x:auto}.highlight pre,.gist-highlight pre{background:none;-webkit-border-radius:0px;-moz-border-radius:0px;border-radius:0px;border:none;padding:0;margin-bottom:0}pre::-webkit-scrollbar,.highlight::-webkit-scrollbar,.gist-highlight::-webkit-scrollbar{height:.5em;background:rgba(255,255,255,0.15)}pre::-webkit-scrollbar-thumb:horizontal,.highlight::-webkit-scrollbar-thumb:horizontal,.gist-highlight::-webkit-scrollbar-thumb:horizontal{background:rgba(255,255,255,0.2);-webkit-border-radius:4px;border-radius:4px}.highlight code{background:#000}figure.code{background:none;padding:0;border:0;margin-bottom:1.5em}figure.code pre{margin-bottom:0}figure.code figcaption{position:relative}figure.code .highlight{margin-bottom:0}.code-title,html .gist .gist-file .gist-meta a[href*='#file'],h3.filename,figure.code figcaption{text-align:center;font-size:13px;line-height:2em;text-shadow:#cbcccc 0 1px 0;color:#474747;font-weight:normal;margin-bottom:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;font-family:"Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;background:#aaa url('/images/code_bg.png?1419195603') top repeat-x;border:1px solid #565656;border-top-color:#cbcbcb;border-left-color:#a5a5a5;border-right-color:#a5a5a5;border-bottom:0}.download-source,html .gist .gist-file .gist-meta a[href*=raw],figure.code figcaption a{position:absolute;right:.8em;color:#666 !important;z-index:1;font-size:13px;text-shadow:#cbcccc 0 1px 0;padding-left:3em}@media only screen and (min-width: 1024px){.aside-module:first-child .title{margin-top:0}}.aside-module .title{border-bottom:1px solid #049cdb;color:#333;margin:1em 0 0.5em;padding-bottom:5px}.aside-module .title .btn{border-bottom-left-radius:0;border-bottom-right-radius:0;padding:5px 10px;text-decoration:none}.aside-module .loading{display:block;font-size:2em;text-align:center}#github-repos li p{font-size:0.6em;margin-bottom:0}#pinboard .pin-item>p{margin-bottom:0}#pinboard .pin-item>p a:hover{text-decoration:underline}#pinboard .pin-item>p a::after{content:","}#pinboard .pin-item>p a:last-child::after{content:""}@media only screen and (min-width: 481px){.social ul{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:10px;-moz-column-gap:10px;column-gap:10px}}.social a{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background-color:#e8e8e8;border:1px solid #dcdcdc;border-radius:4px;color:#222;display:inline-block;font-size:0.8em;margin-bottom:7px;padding:1em;padding-right:0.5em;position:relative;text-decoration:none;width:100%;z-index:5;-webkit-transition:box-shadow 200ms,color 400ms,transform 400ms;-moz-transition:box-shadow 200ms,color 400ms,transform 400ms;-o-transition:box-shadow 200ms,color 400ms,transform 400ms;transition:box-shadow 200ms,color 400ms,transform 400ms}.social a:hover{color:#fff !important;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25);z-index:7}.social a:hover::before{border:1px solid #000;height:100%;top:0;width:100%}.social a::before{background-color:#222;border-radius:4px;content:"";height:1px;position:absolute;top:50%;left:0%;width:0;z-index:-1;-webkit-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-moz-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;-o-transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms;transition:border 200ms,height 200ms 200ms,top 200ms 200ms,width 200ms}.social a i{font-size:2em;line-height:0.8em;margin-right:0.35em}.social a.adn{color:#4a484c}.social a.adn::before{background-color:#4a484c;border-color:#3d3c3f}.social a.dribbble{color:#ea4c89}.social a.dribbble::before{background-color:#ea4c89;border-color:#e7357a}.social a.facebook{color:#3b5998}.social a.facebook::before{background-color:#3b5998;border-color:#344e86}.social a.github{color:#333}.social a.github::before{background-color:#333;border-color:#262626}.social a.gplus{color:#db4a39}.social a.gplus::before{background-color:#db4a39;border-color:#d43927}.social a.linkedin{color:#4875b4}.social a.linkedin::before{background-color:#4875b4;border-color:#4169a2}.social a.pinterest{color:#cc2127}.social a.pinterest::before{background-color:#cc2127;border-color:#b61d23}.social a.stackoverflow{color:#fe7a15}.social a.stackoverflow::before{background-color:#fe7a15;border-color:#f86c01}.social a.twitter{color:#00a0d1}.social a.twitter::before{background-color:#00a0d1;border-color:#008cb7}.social a.youtube{color:#cc181e}.social a.youtube::before{background-color:#cc181e;border-color:#b5151b}.usp{text-align:center}@media only screen and (min-width: 481px) and (max-width: 1023px){.usp{margin-bottom:25px}}.usp .icon i{-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;border:10px solid #049cdb;color:#222;display:inline-block;font-size:6em;height:1.85em;line-height:normal;padding:0.3em;width:1.85em}.usp .title{color:#222;font-size:1.1em;line-height:3em;margin:0;text-align:center;text-transform:capitalize}.usp .title+hr{margin:0;margin-bottom:1em}.usp hr{margin-bottom:1em}.usp p{text-align:left}.hero{background-color:#0b6b94;background-position:0 50%;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;border-bottom:1px solid #fff;color:#fff;font-weight:bold;margin-top:-2em;margin-bottom:1.5em;padding:50px 0;position:relative}.hero>.grid-wrapper{position:relative;z-index:7}.hero .credit{font-size:0.75em;font-style:italic;position:absolute;bottom:0;right:10px;z-index:7}.hero .credit a{border-bottom:1px solid;color:#fff;text-decoration:none}.hero .credit .licence{border:none}.hero .avatar{text-align:center}@media only screen and (max-width: 1023px){.hero .avatar{margin-bottom:30px}}.hero .avatar img{-webkit-border-radius:100%;-moz-border-radius:100%;border-radius:100%;border:10px solid #049cdb}.hero h1{font-size:3.5em;line-height:1em;text-shadow:2px 2px 0 rgba(0,0,0,0.75)}.hero hr{box-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p{text-shadow:1px 1px 0 rgba(0,0,0,0.75)}.hero p small{color:#eee;font-size:.65em}.pull-left{float:left}.pull-right{float:right}.clearfix,article blockquote{*zoom:1}.clearfix::before,article blockquote::before,.clearfix::after,article blockquote::after{display:table;content:"";line-height:0}.clearfix::after,article blockquote::after{clear:both}ul.unstyled,ul.inline,article ul.tags,ul.divided,ol.unstyled,ol.inline,article ol.tags,ol.divided{list-style-type:none;margin:0}ul.inline,article ul.tags,ol.inline,article ol.tags{list-style-type:none}ul.inline>li,article ul.tags>li,ol.inline>li,article ol.tags>li{display:inline}ul.divided>li,ol.divided>li{border-top:1px solid #fff;border-bottom:1px solid #e8e8e8;padding:0.5em 0}ul.divided>li:first-child,ol.divided>li:first-child{border-top:none;padding-top:0}ul.divided>li:last-child,ol.divided>li:last-child{border-bottom:none}.btn{background-color:#0494d1;background-image:-moz-linear-gradient(top, #049cdb, #048ac2);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#049cdb), to(#048ac2));background-image:-webkit-linear-gradient(top, #049cdb, #048ac2);background-image:-o-linear-gradient(top, #049cdb, #048ac2);background-image:linear-gradient(to bottom, #049cdb,#048ac2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF049CDB', endColorstr='#FF048AC2', GradientType=0);-webkit-box-shadow:0 0 3px rgba(0,0,0,0.25);-moz-box-shadow:0 0 3px rgba(0,0,0,0.25);-ms-box-shadow:0 0 3px rgba(0,0,0,0.25);-o-box-shadow:0 0 3px rgba(0,0,0,0.25);box-shadow:0 0 3px rgba(0,0,0,0.25);border-radius:3px;color:#fff;display:inline-block;padding:7px 15px;text-decoration:none;text-shadow:1px 1px 0 rgba(0,0,0,0.25)}.btn:hover{text-decoration:underline}.btn:visited{color:#fff}.grid{letter-spacing:-1rem}.opera:-o-prefocus,.grid{word-spacing:-1rem}.grid__item{letter-spacing:normal;word-spacing:normal}@media only screen and (min-width: 481px){.flex{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-direction:normal;-moz-box-direction:normal;-webkit-box-orient:horizontal;-moz-box-orient:horizontal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-moz-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:stretch;-ms-flex-line-pack:stretch;align-content:stretch;-webkit-box-align:start;-moz-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start}.flex__item{-webkit-box-ordinal-group:1;-moz-box-ordinal-group:1;-webkit-order:0;-ms-flex-order:0;order:0;-webkit-box-flex:0;-moz-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}}.hero{background-color:#038FC7;padding-bottom:0}.hero .lead{margin-bottom:16px}.hero .hero-buttons a{color:white;text-transform:uppercase;white-space:nowrap;display:inline-block}.hero .front-install{background-color:#333;margin-bottom:16px;display:inline-block;padding:8px;color:#DDD}.hero .front-install .sh{color:#c82829}.supported-brands{text-align:center}.supported-brands img{border:none !important;box-shadow:none !important;max-height:50px;max-width:140px;margin:10px;vertical-align:middle}.brand{border:none !important;box-shadow:none !important;max-height:50px;max-width:200px;margin:10px}.brand.overview{max-width:100px;vertical-align:middle}h1:hover a.title-link,h2:hover a.title-link,h3:hover a.title-link,h4:hover a.title-link,h5:hover a.title-link,h6:hover a.title-link{position:relative}h1:hover a.title-link::before,h2:hover a.title-link::before,h3:hover a.title-link::before,h4:hover a.title-link::before,h5:hover a.title-link::before,h6:hover a.title-link::before{position:absolute;left:-50px;padding-right:40px;font-family:"FontAwesome";content:"\f0c1"}.ha-title{white-space:nowrap}.ha-title img{width:40px;vertical-align:middle}.usp ul{text-align:left;margin-left:27px;margin-top:-18px}.usp .icon i{border:none !important}.hero-buttons a{margin:0 30px 10px 0}.hero-buttons a:last-child{margin:0}article.post img,article.post table,article.page img,article.page table,article.listing img,article.listing table{border-radius:3px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post img.no-shadow,article.page img.no-shadow,article.listing img.no-shadow{border:0;box-shadow:none}article.post>table,article.page>table,article.listing>table{background-color:#F3FCF5}article.post p.img,article.page p.img,article.listing p.img{background-color:#FFF;border-radius:5px;text-align:center;padding-bottom:3px;font-size:.9rem;box-shadow:rgba(0,0,0,0.06) 0 0 10px}article.post p.img img,article.page p.img img,article.listing p.img img{display:block;box-shadow:none;margin:0 auto}article.post li,article.page li,article.listing li{margin-bottom:10px}article.post li>p,article.page li>p,article.listing li>p{margin-bottom:0}article.post li:last-child,article.page li:last-child,article.listing li:last-child{margin-bottom:0}p.note{position:relative;background:#e7f2fa;padding:40px 12px 6px 12px;box-shadow:rgba(0,0,0,0.06) 0 0 10px}p.note::before{font-family:"FontAwesome";content:"\f05a" " Note " attr(data-title);background-color:#6ab0de;color:white;font-weight:bold;border-top-left-radius:3px;border-top-right-radius:3px;padding:6px 14px;line-height:1.5em;position:absolute;top:0;left:0;right:0}p.note.warning{background-color:#F7F9E1}p.note.warning::before{background-color:#bbb90d;content:"\f071" " Warning " attr(data-title)}.install-instructions-container #normal-install,.install-instructions-container #raspberry-install,.install-instructions-container #docker-install,.install-instructions-container .install-instructions{display:none}.install-instructions-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.install-instructions-container label.menu-selector+label.menu-selector{margin-left:10px}.install-instructions-container #normal-install:checked ~ .menu-selector.normal,.install-instructions-container #raspberry-install:checked ~ .menu-selector.raspberry,.install-instructions-container #docker-install:checked ~ .menu-selector.docker{border-bottom-color:#049cdb}.install-instructions-container #normal-install:checked ~ .install-instructions.normal,.install-instructions-container #raspberry-install:checked ~ .install-instructions.raspberry,.install-instructions-container #docker-install:checked ~ .install-instructions.docker{display:block}.install-instructions-container .install-instructions{margin-top:30px}.advanced-installs-container #upstart-install,.advanced-installs-container #systemd-install,.advanced-installs-container #osx-install,.advanced-installs-container .advanced-installs{display:none}.advanced-installs-container label.menu-selector{display:inline-block;text-align:center;padding:20px;white-space:nowrap;border-bottom:5px solid #999;transition:border-bottom-color .5s}.advanced-installs-container label.menu-selector+label.menu-selector{margin-left:10px}.advanced-installs-container #upstart-install:checked ~ .menu-selector.upstart,.advanced-installs-container #systemd-install:checked ~ .menu-selector.systemd,.advanced-installs-container #osx-install:checked ~ .menu-selector.osx{border-bottom-color:#049cdb}.advanced-installs-container #upstart-install:checked ~ .advanced-installs.upstart,.advanced-installs-container #systemd-install:checked ~ .advanced-installs.systemd,.advanced-installs-container #osx-install:checked ~ .advanced-installs.osx{display:block}.advanced-installs-container .advanced-installs{margin-top:30px}#components-page .isotope-item{z-index:2}#components-page .isotope-hidden.isotope-item{pointer-events:none;z-index:1}#components-page .isotope,#components-page .isotope .isotope-item{-webkit-transition-duration:0.8s;-moz-transition-duration:0.8s;transition-duration:0.8s}#components-page .isotope{-webkit-transition-property:height, width;-moz-transition-property:height, width;transition-property:height, width}#components-page .isotope .isotope-item{-webkit-transition-property:-webkit-transform, opacity;-moz-transition-property:-moz-transform, opacity;transition-property:transform, opacity}#components-page .filter-button-group{margin-bottom:16px}#components-page .filter-button-group .btn{margin-right:8px;margin-bottom:8px;text-decoration:none}#components-page .filter-button-group .btn.current{background-color:#3A5561;background-image:linear-gradient(to bottom, #3a5561,#3f6b7d)}#components-page #componentContainer a{display:inline-block;width:202px;height:142px;background-color:#fefefe;margin-right:4px;margin-bottom:8px;border-radius:2px;box-shadow:rgba(0,0,0,0.098) 0px 2px 4px,rgba(0,0,0,0.098) 0px 0px 3px;padding:8px;text-align:center}#components-page #componentContainer a .img-container{height:50px;margin:8px 0;font:0/0 a}#components-page #componentContainer a .img-container:before{content:' ';display:inline-block;vertical-align:middle;height:100%}#components-page #componentContainer a .img-container img{max-width:100%;max-height:50px;box-shadow:none;border:none;vertical-align:middle}#components-page #componentContainer a .title{text-decoration:none;font-size:18px;color:#000;line-height:1.3em;height:2.6em}#components-page #componentContainer a .category{font-size:14px;color:#AAA}.aside-module .section{margin-bottom:16px}.aside-module .brand-logo-container{text-align:center;height:97px}.aside-module .brand-logo-container img{max-height:97px}