diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png index c2824cc432c..e932cb09a99 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/background.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png index 77cd829a4b5..021685f4b0a 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/divider.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png index e06aa50ca29..9d3291e8e59 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButton.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png index d2bc4fc75a8..ef55acc7ca4 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png index 96fe7bb0242..091cc054a2a 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/muteButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png index 22295074029..f7c23cd5ba1 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButton.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png index 15db44d4e66..1f6aebd73ae 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png index e399bf34cb9..e6ab8aa55a3 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButton.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png index 409d89d29a3..8dcf0c5bfcc 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png index 3fe284845fa..6898116a3b7 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/playButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png index 73b371abbca..5e151d69c8c 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png index 72322171bd5..e89fc5c6afc 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png index 626444a66a7..ae47e9018b3 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png index 27851dfdf36..63692be0b75 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/timeSliderRail.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png index 3658453cfc1..6433b4d476a 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButton.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png index 138ebb35ba8..206be887e0a 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and b/.themes/classic/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/display/background.png b/.themes/classic/source/assets/jwplayer/glow/display/background.png index 391152f5e2f..eb7c709d39b 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/display/background.png and b/.themes/classic/source/assets/jwplayer/glow/display/background.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png index a3819c1ef19..10ae39736ad 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/bufferIcon.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png index e0408bbda5e..8e078ae4387 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/muteIcon.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png index cb384278722..269e4311bcb 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png and b/.themes/classic/source/assets/jwplayer/glow/display/playIcon.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/dock/button.png b/.themes/classic/source/assets/jwplayer/glow/dock/button.png index 391152f5e2f..eb7c709d39b 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/dock/button.png and b/.themes/classic/source/assets/jwplayer/glow/dock/button.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png index 812592c3ce5..825911836fb 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/item.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/item.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png index 549f3721d6b..cbb7e34d85f 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/itemOver.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png index 048cc623be9..61c6dfbbba0 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapBottom.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png index 65c463a0c04..4d6dae6290f 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderCapTop.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png index 121778affdc..2b455a6ff85 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png and b/.themes/classic/source/assets/jwplayer/glow/playlist/sliderRail.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png index b4059754baf..dabce156c23 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/embedScreen.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png index eae1d4e7559..b659a20c3b5 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareIcon.png differ diff --git a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png index 695ec949f86..2435d3777eb 100644 Binary files a/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png and b/.themes/classic/source/assets/jwplayer/glow/sharing/shareScreen.png differ diff --git a/.themes/classic/source/favicon.png b/.themes/classic/source/favicon.png index 0f250673059..2ad3a59140c 100644 Binary files a/.themes/classic/source/favicon.png and b/.themes/classic/source/favicon.png differ diff --git a/.themes/classic/source/images/bird_32_gray.png b/.themes/classic/source/images/bird_32_gray.png index 574f210aec4..cf2cb22d97d 100644 Binary files a/.themes/classic/source/images/bird_32_gray.png and b/.themes/classic/source/images/bird_32_gray.png differ diff --git a/.themes/classic/source/images/bird_32_gray_fail.png b/.themes/classic/source/images/bird_32_gray_fail.png index 8337d10317a..d6259651482 100644 Binary files a/.themes/classic/source/images/bird_32_gray_fail.png and b/.themes/classic/source/images/bird_32_gray_fail.png differ diff --git a/.themes/classic/source/images/code_bg.png b/.themes/classic/source/images/code_bg.png index a57bab56a1b..ebd3acfa9b7 100644 Binary files a/.themes/classic/source/images/code_bg.png and b/.themes/classic/source/images/code_bg.png differ diff --git a/.themes/classic/source/images/dotted-border.png b/.themes/classic/source/images/dotted-border.png index 57f99071a5a..d19b60c9f6b 100644 Binary files a/.themes/classic/source/images/dotted-border.png and b/.themes/classic/source/images/dotted-border.png differ diff --git a/.themes/classic/source/images/email.png b/.themes/classic/source/images/email.png index e55473fef7b..9100c8bb194 100644 Binary files a/.themes/classic/source/images/email.png and b/.themes/classic/source/images/email.png differ diff --git a/.themes/classic/source/images/line-tile.png b/.themes/classic/source/images/line-tile.png index f67ee19fdc9..9247c3b1f5c 100644 Binary files a/.themes/classic/source/images/line-tile.png and b/.themes/classic/source/images/line-tile.png differ diff --git a/.themes/classic/source/images/noise.png b/.themes/classic/source/images/noise.png index 432e05bfd1a..46cdf03fdf2 100644 Binary files a/.themes/classic/source/images/noise.png and b/.themes/classic/source/images/noise.png differ diff --git a/.themes/classic/source/images/rss.png b/.themes/classic/source/images/rss.png index 151ae718ebf..037ce65db15 100644 Binary files a/.themes/classic/source/images/rss.png and b/.themes/classic/source/images/rss.png differ diff --git a/.themes/classic/source/images/search.png b/.themes/classic/source/images/search.png index 1220ff4e261..d0e1b1908bb 100644 Binary files a/.themes/classic/source/images/search.png and b/.themes/classic/source/images/search.png differ diff --git a/_config.yml b/_config.yml index 3f8193a9a79..868c6051c4d 100644 --- a/_config.yml +++ b/_config.yml @@ -139,12 +139,12 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 58 -current_patch_version: 1 -date_released: 2017-11-21 +current_minor_version: 60 +current_patch_version: 0 +date_released: 2017-12-17 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0581---november-21" +patch_version_notes: "#" # Minor release (Example #release-0431---april-25): diff --git a/credits_generator/README.md b/credits_generator/README.md index 03c187d2d8a..ee89f678174 100644 --- a/credits_generator/README.md +++ b/credits_generator/README.md @@ -3,11 +3,17 @@ credits_generator This tool can be used to update the [Home Assistant's Credits page](https://home-assistant.io/developers/credits/). +Setup +----- + ```bash $ cd credits_generator $ npm install ``` +Usage +----- + Set your personal GitHub access token as environmental variable. ```bash @@ -17,6 +23,7 @@ $ export GITHUB_TOKEN= Run the script. ```bash +$ cd credits_generator $ node update_credits.js ``` diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 04458c65944..dd7cddcb6ce 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -10,6 +10,10 @@ footer: true featured: true --- +

+ If you are wanting to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant then you want the [Google Assistant component](https://home-assistant.io/components/google_assistant/). +

+ [Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact over [api.ai] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. To enable access to the Google Assistant API, do the following: diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown new file mode 100644 index 00000000000..1f91fe3dc79 --- /dev/null +++ b/source/_addons/homematic.markdown @@ -0,0 +1,70 @@ +--- +layout: page +title: "HomeMatic" +description: "HomeMatic hardware support to turn you Home-Assistant into a CCU." +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Set up a [HomeMatic](https://github.com/eq-3/occu) hardware layer. At the moment we don't support hmIP but that is in progress. For learning and handling devices use our internal homematic panel and services (in progress) or use [Homematic-Manager](https://github.com/hobbyquaker/homematic-manager) > 2.0. + +The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can't import exists configuration, you need new learn it into Home-Assistant. + +Follow devices will be supported and tested: +- [HM-MOD-RPI-PCB](https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html) + +```json +{ + "rf_enable": true, + "rf": [ + { + "type": "CCU2", + "device": "/dev/ttyAMA0" + } + ], + "wired_enable": false, + "wired": [ + { + "serial": "xy", + "key": "abc", + "ip": "192.168.0.0" + } + ] +} +``` + +Configuration variables: + +- **rf_enable** (*Require*): Boolean. Enable or disable BidCoS-RF. +- **wired_enable** (*Require*): Boolean. Enable or disable BidCoS-Wired. + +For RF devices +- **type** (*Require*): Device type for RFD service. Look into handbook of your device. +- **device** (*Require*): Device on host. + +For RF devices +- **serial** (*Require*): Serial number of device. +- **key** (*Require*): Encrypted key. +- **ip** (*Require*): IP address of lan gateway. + +## {% linkable_title Home Assistant configuration %} + +Use the following configuration in Home Assistant to use it: + +```yaml +homematic: + interfaces + BidCoS-RF: + host: core-homematic + port: 2001 +``` + +## {% linkable_title Raspberry Pi3 %} + +With HM-MOD-PRI-PCB you need add follow into your `config.txt` on boot partition: +``` +dtoverlay=pi3-miniuart-bt +``` diff --git a/source/_addons/mosquitto.markdown b/source/_addons/mosquitto.markdown index f944dc7989c..5512542ed20 100644 --- a/source/_addons/mosquitto.markdown +++ b/source/_addons/mosquitto.markdown @@ -23,7 +23,9 @@ Set up [Mosquitto](https://mosquitto.org/) as MQTT broker. "customize": { "active": false, "folder": "mosquitto" - } + }, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem" } ``` @@ -48,3 +50,12 @@ To use the Mosquitto as [broker](/docs/mqtt/broker/#run-your-own) add the follow mqtt: broker: core-mosquitto ``` + +If username and password are set up in add-on, your `configuration.yaml` file should contain that data. + +```yaml +mqtt: + broker: core-mosquitto + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` diff --git a/source/_addons/tellstick.markdown b/source/_addons/tellstick.markdown new file mode 100644 index 00000000000..d75100774c9 --- /dev/null +++ b/source/_addons/tellstick.markdown @@ -0,0 +1,103 @@ +--- +layout: page +title: "TellStick" +description: "Telldus TellStick service enabler and tools." +date: 2017-12-04 21:31 +sidebar: true +comments: false +sharing: true +footer: true +featured: false +--- + +Setting up the [Tellstick](http://telldus.com) service and tools contained in the [telldus-core](http://developer.telldus.com/) package and adding configuration to enable Tellstick and Tellstick Duo to work on your Hass.io. + +To use this add-on, you first install it from the list of Built-in add-ons in Hass.io. +After installation you are presented with a default and example configuration, to alter this you must follow both the JSON format and also be aligned with the [valid parameters for Tellstick configuration file (tellstick.conf)](https://developer.telldus.com/wiki/TellStick_conf). + +After any changes has been made to the configuration you need to restart the add-on for the changes to take effect. + +Configuration variables: + +- **id** (*Required*): This is a number and must be unique for each device. +- **name** (*Required*): A name for easy identification of the device. +- **protocol** (*Required*): This is the protocol the device uses. More on the different protocols later down. +- **model** (*Optional*): The parameter model is only used by some protocols where there exists different types of devices using the same protocol. This can be dimmers versus non-dimmers, codeswitch versus selflearning etc. +- **house** (*Optional*): Depending on protocol the values here can vary a lot to identify or group per house or type. +- **unit** (*Optional*): Unit identifier, in most cases a value between 1 to 16 and often used in combination with house. +- **fade** (*Optional*): Fade is either `true` or `false` and tells a dimmer if is should fade smooth or instant between values (only for IKEA protocol as it seems). +- **code** (*Optional*): A number series based on ones and zeroes often used for dip-switch based devices. + +You will need to add internal communication details to `configuration.yaml` to enable the integration from Hass.io and the add-on. + + +```yaml +# Example configuration.yaml entry + +tellstick: + host: core-tellstick + port: [50800, 50801] + +``` + +To add [lights](https://home-assistant.io/components/light.tellstick/), [sensors](https://home-assistant.io/components/sensor.tellstick/) and [switches](https://home-assistant.io/components/switch.tellstick/) you follow the guidelines for each type individually that is [described for Home Assistant](https://home-assistant.io/components/tellstick/) + +The add-on will also enable you to interact with tdtool via a Home Assistant services call, see example below for selflearning device. + +## {% linkable_title Examples %} + + +Example for adding more devices in the add-on configuration (note the comma separator between devices): + +```json +{ + "devices": [ + { + "id": 1, + "name": "Outdoor light", + "protocol": "everflourish", + "model": "selflearning-switch", + "house": "A", + "unit": "1" + }, + { + "id": 2, + "name": "Hallway dimmer", + "protocol": "risingsun", + "model": "selflearning-dimmer", + "house": "A", + "unit": "2" + } + ] +} +``` + +## Service calls + +If you wish to teach a selflearning device in your TellStick configuration: + +Go to Home Assistant [service call](http://hassio.local:8123/dev-service) in Developer tools and select. +- Service: `hassio.addon_stdin` +- Enter service Data: + `{"addon":"core_tellstick","input":{"function":"learn","device":"1"}}` + +Replace `1` with the corresponding ID of the device in your TellStick configuration. + +You can also use this to list devices or sensors and read the output in the add-on log: +`{"addon":"core_tellstick","input":{"function":"list-sensors"}}` + + +#### Supported service commands + +- `"function":"list"`: List currently configured devices with name and device id and all discovered sensors. + +- `"function":"list-sensors"` +- `"function":"list-devices"`: Alternative devices/sensors listing: Shows devices and/or sensors using key=value format (with tabs as separators, one device/sensor per line, no header lines.) + +- `"function":"on","device":"x"`: Turns on device. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"off","device":"x"`: Turns off device. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"bell","device":"x"`: Sends bell command to devices supporting this. ’x’ could either be an integer of the device-id, or the name of the device. + +- `"function":"learn","device":"x"`: Sends a special learn command to devices supporting this. This is normaly devices of ’selflearning’ type. ’x’ could either be an integer of the device-id, or the name of the device. diff --git a/source/_components/ads.markdown b/source/_components/ads.markdown new file mode 100644 index 00000000000..cea2088d32e --- /dev/null +++ b/source/_components/ads.markdown @@ -0,0 +1,59 @@ +--- +layout: page +title: "ADS" +description: Connect Home Assistant to TwinCAT devices via the ADS interface +date: 2017-12-05 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Hub +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](http://www.beckhoff.hu/english.asp?twincat/default.htm) and other devices implementing this interface. + +To enable ADS, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +ads: + device: '127.0.0.1.1.1' + port: 48898 +``` + +{% configuration %} + device: + required: true + description: The AMS NetId that identifies the device. + type: string + port: + required: true + description: The port that runs the AMS server on the device, typically this would be 801 or 851. + type: int + ip_address: + required: false + description: The IP address of the ADS device, if not set the first 4 bytes of the device id will be used. + type: string +{% endconfiguration %} + +## {% linkable_title Service %} + +The ADS component will register the service `write_by_name` allowing you to write a value to a variable on your ADS device. + +```json +{ + "adsvar": ".myvariable", + "adstype": "int", + "value": 123 +} +``` + +Service parameters: + +- **adsvar**: Name of the variable on the ADS device. To access global variables on *TwinCAT2* use a prepending dot `.myvariable`, for TwinCAT3 use +`GBL.myvariable`. +- **adstype**: Specify the type of the variable. Use one of the following: `int`, `byte`, `uint`, `bool` +- **value**: The value that will be written in the variable. diff --git a/source/_components/alarm_control_panel.arlo.markdown b/source/_components/alarm_control_panel.arlo.markdown index bc94d594a54..19294db81b1 100644 --- a/source/_components/alarm_control_panel.arlo.markdown +++ b/source/_components/alarm_control_panel.arlo.markdown @@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling" --- -The `arlo` control panel platform allows you to control your [Arlo](https://arlo.netgear.com/) base stations. +The `arlo` alarm control panel allows you to control your [Arlo](https://arlo.netgear.com/) base stations. You can use it to switch modes and trigger alarms from Home Assistant. To get your [Arlo](https://arlo.netgear.com/) base stations working within Home Assistant, please follow the instructions for the general [Arlo component](/components/arlo). @@ -26,7 +26,53 @@ alarm_control_panel: - platform: arlo ``` -Configuration variables: +{% configuration %} +home_mode_name: + description: "Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app." + required: false + type: string +away_mode_name: + description: "Arlo base station does not have a built-in away mode. You can map one of your custom modes to home assistant's away mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match eactly as you set it up in the Arlo app." + required: false + type: string + default: "`Armed` mode in Arlo" +{% endconfiguration %} + +## {% linkable_title Examples %} + +These examples are based on an Arlo base station named `my_arlo_base_station`. Replace this with the name of your base station's `entity_id`. + +Arming the Arlo Base Station when leaving. + +```yaml +- id: arm_arlo_when_leaving + alias: Arm Arlo cameras when leaving + trigger: + platform: state + entity_id: group.family + from: home + to: not_home + action: + service: alarm_control_panel.alarm_arm_away + entity_id: alarm_control_panel.my_arlo_base_station +``` + +Setting Arlo to a custom mode (mapped to `home_mode_name` in `configuration.yaml`) when arriving. + +```yaml +- id: disarm_arlo_when_arriving + alias: Set Arlo cameras to Home mode when arriving + trigger: + platform: state + entity_id: group.family + from: not_home + to: home + action: + service: alarm_control_panel.alarm_arm_home + entity_id: alarm_control_panel.my_arlo_base_station +``` + +You can also completely disarm the Arlo base station by calling the `alarm_control_panel.alarm_disarm` service, and trigger the alarm by calling the `alarm_control_panel.alarm_trigger` service. + +More examples and configuration options can be found on the [Manual Alarm Control page](/components/alarm_control_panel.manual/#examples). -- **home_mode_name**: (*Optional*): Arlo base station does not have a built-in home mode. You can map one of your custom modes to home assistant's home mode by setting the name of the custom mode in this configuration variable. The name of the custom mode should match exactly as you set it up in the Arlo app. -- **away_mode_name**: (*Optional*): Like the home mode, the Arlo base station does not have a built-in away mode, however, you can map a custom mode from the Arlo app to Home Assistant with this variable, just make sure the name matches exactly what you have set up in the Arlo app. diff --git a/source/_components/alarm_control_panel.canary.markdown b/source/_components/alarm_control_panel.canary.markdown new file mode 100644 index 00000000000..59125f8746a --- /dev/null +++ b/source/_components/alarm_control_panel.canary.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Canary Alarm Control Panel" +description: "Instructions on how to integrate your Canary devices into Home Assistant." +date: 2017-12-07 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: canary.png +ha_category: Alarm +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + +The `canary` alarm control panel platform allows you to integrate your [Canary](https://canary.is) alarm system in Home Assistant. + +To add `canary` alarm control panel to your installation, follow instructions in [Canary component](/components/canary/). diff --git a/source/_components/alarm_control_panel.egardia.markdown b/source/_components/alarm_control_panel.egardia.markdown index b8309efd549..04bc5bf8819 100644 --- a/source/_components/alarm_control_panel.egardia.markdown +++ b/source/_components/alarm_control_panel.egardia.markdown @@ -16,7 +16,7 @@ The `egardia` platform enables the ability to control an [Egardia](http://egardi You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account. -To enable this, add the following lines to your `configuration.yaml`: +To enable this, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/alarm_control_panel.ialarm.markdown new file mode 100644 index 00000000000..db0288b47f4 --- /dev/null +++ b/source/_components/alarm_control_panel.ialarm.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Antifurto365 iAlarm Control Panel" +description: "Instructions how to integrate iAlarms alarms into Home Assistant." +date: 2017-11-30 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: antifurto365-ialarm.png +ha_category: Alarm +ha_release: "0.60" +--- + +The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems. + +This platform supports the following services: `alarm_arm_away`, `alarm_arm_home` and `alarm_disarm`. + +To enable this, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +alarm_control_panel: + - platform: ialarm + host: ALARM_SYSTEM_IP + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + host: + description: The IP address of the iAlarm device on your home network. + required: true + type: string + username: + description: Username used to sign into the iAlarm web client (should be admin by default). + required: true + type: string + password: + description: Password used to sign into the iAlarm web client. If it has a leading zero you need to put the password within quotes. + required: true + type: string + name: + description: Name of device in Home Assistant. + required: false + type: string +{% endconfiguration %} + diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/alarm_control_panel.manual.markdown index 0bdb28cd801..86509ebe620 100644 --- a/source/_components/alarm_control_panel.manual.markdown +++ b/source/_components/alarm_control_panel.manual.markdown @@ -25,13 +25,62 @@ 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. +- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified. +- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds. +- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. 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. - **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. -- **armed_home/armed_away/armed_night/triggered** (*Optional*): State specific settings - - **pending_time**: State specific pending time override. +- **armed_custom_bypass/armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings + - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**) + - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**) + - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**) -In the config example below, armed_home state will have no pending time and triggered state will have pending time of 20 second whereas armed_away state will have a default pending time of 30 seconds. +## {% linkable_title State machine %} + +The state machine of the manual alarm component is complex but powerful. The +transitions are timed according to three values, **delay_time**, **pending_time** +and **trigger_time**. The values in turn can come from the default configuration +variable or from a state-specific override. + +When the alarm is armed, its state first goes to **pending** for a number +of seconds equal to the destination state's **pending_time**, and then +transitions to one of the "armed" states. Note that **code_template** +never receives "pending" in the **to_state** variable; instead, +**to_state** contains the state which the user has requested. However, +**from_state** *can* contain "pending". + +When the alarm is triggered, its state goes to **pending** for a number of +seconds equal to the previous state's **delay_time** plus the triggered +state's **pending_time**. Then the alarm transitions to the "triggered" +states. The code is never checked when triggering the alarm, so the +**to_state** variable of **code_template** cannot ever contain "triggered" +either; again, **from_state** *can* contain "triggered". + +The alarm remains in the "triggered" state for a number of seconds equal to the +previous state's **trigger_time**. Then, depending on **disarm_after_trigger**, +it goes back to either the previous state or **disarmed**. If the previous +state's **trigger_time** is zero, the transition to "triggered" is entirely +blocked and the alarm remains in the armed state. + +Each of the settings is useful in different scenarios. **pending_time** gives +you some time to leave the building (for "armed" states) or to disarm the alarm +(for the "triggered" state). + +**delay_time** can also be used to allow some time to disarm the alarm, but with +more flexibility. For example, you could specify a delay time for the +"armed away" state, in order to avoid triggering the alarm while the +garage door opens, but not for the "armed home" state. + +**trigger_time** is useful to disable the alarm when disarmed, but it can also +be used for example to sound the siren for a shorter time during the night. + +In the config example below: + +- the disarmed state never triggers the alarm; + +- the armed_home state will leave no time to leave the building or disarm the alarm; + +- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. ```yaml # Example configuration.yaml entry @@ -40,11 +89,13 @@ alarm_control_panel: name: Home Alarm code: 1234 pending_time: 30 + delay_time: 20 + trigger_time: 4 + disarmed: + trigger_time: 0 armed_home: pending_time: 0 - triggered: - pending_time: 20 - trigger_time: 4 + delay_time: 0 ``` ## {% linkable_title Examples %} diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/alarm_control_panel.manual_mqtt.markdown index bf5ba5bdcc7..4f1f90995ce 100644 --- a/source/_components/alarm_control_panel.manual_mqtt.markdown +++ b/source/_components/alarm_control_panel.manual_mqtt.markdown @@ -42,15 +42,21 @@ alarm_control_panel: Configuration variables: -All configuration variables from the base manual alarm platform are available: +The following configuration variables from the base manual alarm platform are available: - **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. This code is not required for MQTT interactions. -- **pending_time** (*Optional*): The time in seconds of the pending time before arming the alarm. Default is 60 seconds. +- **code_template** (*Optional*): If defined, returns a code to enable or disable the alarm in the frontend; an empty string disables checking the code. Inside the template, the variables **from_state** and **to_state** identify the current and desired state. Only one of **code** and **code_template** can be specified. +- **delay_time** (*Optional*): The time in seconds of the pending time before triggering the alarm. Default is 0 seconds. +- **pending_time** (*Optional*): The time in seconds of the pending time before effecting a state change. 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. - **disarm_after_trigger** (*Optional*): If true, the alarm will automatically disarm after it has been triggered instead of returning to the previous state. -- **armed_home|armed_away|armed_night|triggered** (*Optional*): State specific settings - - **pending_time**: State specific pending time override. +- **armed_home/armed_away/armed_night/disarmed/triggered** (*Optional*): State specific settings + - **delay_time** (*Optional*): State specific setting for **delay_time** (all states except **triggered**) + - **pending_time** (*Optional*): State specific setting for **pending_time** (all states except **disarmed**) + - **trigger_time** (*Optional*): State specific setting for **trigger_time** (all states except **triggered**) + +See the documentation for the [manual alarm platform](../alarm_control_panel.manual/) for a description. Additionally, the following MQTT configuration variables are also available: @@ -62,7 +68,13 @@ Additionally, the following MQTT configuration variables are also available: - **payload_arm_away** (*Optional*): The payload to set armed-away mode on this Alarm Panel. Default is "ARM_AWAY". - **payload_arm_night** (*Optional*): The payload to set armed-night mode on this Alarm Panel. Default is "ARM_NIGHT". -In the config example below, armed_home state will have no pending time and triggered state will have a pending time of 20 seconds whereas armed_away state will have a default pending time of 30 seconds. +In the config example below: + +- the disarmed state never triggers the alarm; + +- the armed_home state will leave no time to leave the building or disarm the alarm; + +- while other states state will give 30 seconds to leave the building before triggering the alarm, and 20 seconds to disarm the alarm when coming back. ```yaml # Example configuration.yaml entry @@ -71,11 +83,13 @@ alarm_control_panel: state_topic: home/alarm command_topic: home/alarm/set pending_time: 30 + delay_time: 20 + trigger_time: 4 + disarmed: + trigger_time: 0 armed_home: pending_time: 0 - triggered: - pending_time: 20 - trigger_time: 4 + delay_time: 0 ``` ## {% linkable_title Examples %} diff --git a/source/_components/alexa.markdown b/source/_components/alexa.markdown index bccf44f2e77..6b1347a386e 100644 --- a/source/_components/alexa.markdown +++ b/source/_components/alexa.markdown @@ -10,9 +10,13 @@ footer: true logo: amazon-echo.png ha_category: Voice featured: true -ha_release: 0.10 +ha_release: '0.10' --- +

+ Use [Home Assistant Cloud](/components/cloud/) to integrate with Alexa without any effort. +

+ There are a few ways that you can use Amazon Echo and Home Assistant together. - [Build custom commands to use](#i-want-to-build-custom-commands-to-use-with-echo) @@ -325,7 +329,7 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - All other settings are up to you - Hit "Next" - Test - - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. + - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. - To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". [amazon-dev-console]: https://developer.amazon.com diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index a23a97c2dfc..6f9a2cc4826 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -68,10 +68,6 @@ axis: location: köket ``` -

-If you are using Python 3.6, you might need to replace the 34m with 36m in the _gi.*.so filename in the gi folder. -

-

Any specific levels for triggers needs to be configured on the device.

diff --git a/source/_components/binary_sensor.ads.markdown b/source/_components/binary_sensor.ads.markdown new file mode 100644 index 00000000000..753858d9737 --- /dev/null +++ b/source/_components/binary_sensor.ads.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "ADS Binary Sensor" +description: "Instructions on how to set up ADS binary sensors within Home Assistant." +date: 2017-10-25 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Binary Sensor +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The `ads` binary sensor platform can be used to monitor a boolean value on your ADS device. + +To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: ads + adsvar: .boolean1 +``` + +{% configuration %} + adsvar: + required: true + description: The name of the variable which you want to access on the ADS device. + type: string + name: + required: false + description: An identifier for the light in the frontend. + type: string + device_class: + required: false + description: The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. + type: string +{% endconfiguration %} diff --git a/source/_components/binary_sensor.hive.markdown b/source/_components/binary_sensor.hive.markdown new file mode 100644 index 00000000000..62022aa898c --- /dev/null +++ b/source/_components/binary_sensor.hive.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Hive Sensor" +description: "Instructions on how to integrate Hive Sensors with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Binary Sensor +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' binary sensor component integrates your Hive sensors into Home Assistant. + +The Hive sensor component supports the following Hive products: +- **Hive Window or Door Sensor** +- **Hive Motion Sensor** + + +

+Full configuration details can be found on the main [Hive component](/components/hive/) page. +

+ + diff --git a/source/_components/binary_sensor.iss.markdown b/source/_components/binary_sensor.iss.markdown index 58c98c7c629..c2061706882 100644 --- a/source/_components/binary_sensor.iss.markdown +++ b/source/_components/binary_sensor.iss.markdown @@ -28,7 +28,7 @@ binary_sensor: {% configuration %} show_on_map: description: Option to show the position of the ISS on the map. - required: optionsl + required: optional default: false type: string {% endconfiguration %} diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index afc028a2bcb..6b6d1d8c5d3 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -14,6 +14,7 @@ Binary sensors gather information about the state of devices which have a "digit The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - **None**: Generic on/off. This is the default and doesn't need to be set. +- **battery**: `On` means low, `Off` means normal - **cold**: `On` means cold - **connectivity**: `On` means connection present, `Off` means no connection - **gas**: `On` means gas detected @@ -26,6 +27,8 @@ The way these sensors are displayed in the frontend can be modified in the [cust - **opening**: `On` means open, `Off` means closed - **plug**: `On` means device is plugged in, `Off` means device is unplugged - **power**: Power, over-current, etc. +- **presence**: `On` means Home, `Off` means Away +- **problem**: `On` means a problem was detected, `Off` means the status is OK - **safety**: `On` means unsafe, `Off` means safe - **smoke**: `On` means smoke detected - **sound**: `On` means sound detected, `Off` means no sound diff --git a/source/_components/binary_sensor.rest.markdown b/source/_components/binary_sensor.rest.markdown index 0a5c789d36e..4739781d2fb 100644 --- a/source/_components/binary_sensor.rest.markdown +++ b/source/_components/binary_sensor.rest.markdown @@ -47,25 +47,61 @@ binary_sensor: method: POST ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **method** (*Optional*): The method of the request. Default is GET. -- **name** (*Optional*): Name of the REST binary sensor. -- **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. -- **payload** (*Optional*): The payload to send with a POST request. Usually formed as a dictionary. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to True. -- **authentication** (*Optional*): Type of the HTTP authentication. `basic` or `digest`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **headers** (*Optional*): The headers for the requests. +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: The method of the request. + required: false + type: string + default: GET +name: + description: Name of the REST binary sensor. + required: false + type: string + default: REST Binary Sensor +device_class: + description: "The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend." + required: false + type: string +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +payload: + description: The payload to send with a POST request. Usually formed as a dictionary. + required: false + type: string +verify_ssl: + description: Verify the certification of the endpoint. + required: false + type: boolean + default: True +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +headers: + description: The headers for the requests. + required: false + type: list, string +{% endconfiguration %}

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

- ## {% linkable_title Examples %} In this section you find some real life examples of how to use this sensor. diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 009f4131ddd..867930ccdf6 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -158,7 +158,7 @@ binary_sensor: This example creates a washing machine "load running" sensor by monitoring an energy meter connected to the washer. During the washer's operation, the energy meter will fluctuate wildly, hitting zero frequently even before the load is -finished. By utilizing `off_delay`, we can have this sensor only turn off if +finished. By utilizing `delay_off`, we can have this sensor only turn off if there has been no washer activity for 5 minutes. {% raw %} diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 45f1d2386cc..3864850d146 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -22,10 +22,12 @@ To enable the `workday` sensor in your installation, add the following to your ` binary_sensor: - platform: workday country: DE + workdays: [ mon, wed, fri ] ``` Configuration variables: +- **name** (*Optional*): A name for this sensor. Defaults to *Workday Sensor* - **country** (*Required*): Country code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. - **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. - **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. diff --git a/source/_components/calendar.caldav.markdown b/source/_components/calendar.caldav.markdown new file mode 100644 index 00000000000..6ae9f8c36a4 --- /dev/null +++ b/source/_components/calendar.caldav.markdown @@ -0,0 +1,99 @@ +--- +layout: page +title: "CalDav" +description: "Instructions on how to integrate a WebDav calendar into Home Assistant." +date: 2017-11-27 23:14 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Calendar +ha_iot_class: "Cloud Polling" +ha_release: "0.60" +--- + + +The `caldav` platform allows you to connect to your WebDav calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be `on` if you have an on going event in that calendar or `off` if the event is later in time, or if there is no event at all. The WebDav calendar get updated roughly every 10 minutes. + +### {% linkable_title Prerequisites %} + +You need to have a CalDav server and eventually credentials for it. This component was tested against [Baikal](http://sabre.io/baikal/) but any component complying with the RFC4791 should work. + +You might need some additional system packages to compile the Python caldav library. On a Debian based system, install them by: + +```bash +$ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev +``` + +### {% linkable_title Basic Setup %} + +To integrate a WebDav calendar in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +calendar: + - platform: caldav + url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default +``` + +{% configuration %} +url: + required: true + description: The full URL to your calendars. + type: string +username: + required: false + description: Username for authentication. + type: string +password: + required: false + description: Password for authentication. + type: string +calendars: + required: false + description: List of the calendars to filter. Empty or absent means no filtering. + type: list +custom_calendars: + required: false + description: Details on any custom binary sensor calendars you want to create. + type: list + keys: + name: + required: true + description: The name of your custom calendar. + type: string + calendar: + required: true + description: The source calendar to search on. + type: string + search: + required: true + pending_charges: Regular expression for filtering the events + type: string +{% endconfiguration %} + + +### {% linkable_title Sensor attributes %} + + - **offset_reached**: If set in the event title and parsed out will be on/off once the offset in the title in minutes is reached. So the title Very important meeting !!-10 would trigger this attribute to be on 10 minutes before the event starts. + - **all_day**: `True/False` if this is an all day event. Will be `False` if there is no event found. + - **message**: The event title with the `search` values extracted. So in the above example for `offset_reached` the message would be set to Very important meeting + - **description**: The event description. + - **location**: The event Location. + - **start_time**: Start time of event. + - **end_time**: End time of event. + +### {% linkable_title Sensor attributes %} + +```yaml +# Example configuration.yaml entry +calendar: + - platform: caldav + url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default + username: john.doe@test.com + password: !secret caldav + custom_calendars: + - name: 'HomeOffice' + calendar: 'Agenda' + search: 'HomeOffice' +``` diff --git a/source/_components/camera.canary.markdown b/source/_components/camera.canary.markdown new file mode 100644 index 00000000000..bf7c029bc73 --- /dev/null +++ b/source/_components/camera.canary.markdown @@ -0,0 +1,18 @@ +--- +layout: page +title: "Canary Camera" +description: "Instructions on how to integrate your Canary devices into Home Assistant." +date: 2017-12-07 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: canary.png +ha_category: Camera +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + +The `canary` camera platform allows you to view the latest camera image (triggered by motion) by your [Canary](https://canary.is) device in Home Assistant. + +To add `canary` camera to your installation, follow instructions in [Canary component](/components/canary/). diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index 69637387a44..32fa4917481 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -16,7 +16,7 @@ ha_iot_class: "depends" The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. -Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. +Home Assistant will serve the images via its server, making it possible to view your IP cameras while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. To enable this camera in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown index e0dee527ad6..cd4314d5581 100644 --- a/source/_components/camera.markdown +++ b/source/_components/camera.markdown @@ -45,6 +45,16 @@ Take a snapshot from a camera. The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. +For example, the following action in an automation would take a snapshot from "yourcamera" and save it to /tmp with a timestamped filename. + +```yaml +action: + service: camera.snapshot + data: + entity_id: camera.yourcamera + filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg' +``` + ### {% linkable_title Test if it works %} A simple way to test if you have set up your `camera` platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. diff --git a/source/_components/camera.onvif.markdown b/source/_components/camera.onvif.markdown index fe8561afa32..9c48b6b4243 100644 --- a/source/_components/camera.onvif.markdown +++ b/source/_components/camera.onvif.markdown @@ -13,9 +13,9 @@ ha_release: 0.47 --- -The `ONVIF` platform allows you to use an ONVIF camera in Home Assistant. This requires FFmpeg component to be already configured. +The `onvif` camera platform allows you to use an ONVIF camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. -To enable your ONVIF in your installation, add the following to your `configuration.yaml` file: +To enable your ONVIF camera in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/canary.markdown b/source/_components/canary.markdown new file mode 100644 index 00000000000..425055f48a4 --- /dev/null +++ b/source/_components/canary.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "Canary" +description: "Instructions on how to integrate your Canary devices into Home Assistant." +date: 2017-12-07 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: canary.png +ha_category: Hub +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + +The `canary` component allows you to integrate your [Canary](https://canary.is) devices in Home Assistant. + +You will need your Canary login information (username, usually your email address, and password) to use this module. + +To set it up, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +canary: + username: you@example.com + password: secret +``` + +{% configuration %} + username: + description: The username for accessing your Canary account. + required: true + type: string + password: + description: The password for accessing your Canary account. + required: true + type: string + timeout: + description: Timeout to wait for connections. + required: false + type: int + default: 10 +{% endconfiguration %} + + + +Once loaded, your front end will have the following components: + +* A camera image triggered by motion for each camera. +* An alarm control panel for each location. +* A sensor per camera that reports temperature. +* A sensor per camera that reports humidity. +* A sensor per camera that reports air quality. diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/climate.generic_thermostat.markdown index e477044c300..180f67f04e7 100644 --- a/source/_components/climate.generic_thermostat.markdown +++ b/source/_components/climate.generic_thermostat.markdown @@ -32,12 +32,13 @@ Configuration variables: - **target_sensor** (*Required*): `entity_id` for a temperature sensor, target_sensor.state must be temperature. - **min_temp** (*Optional*): Set minimum set point available (default: 7) - **max_temp** (*Optional*): Set maximum set point available (default: 35) -- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. +- **target_temp** (*Optional*): Set initial target temperature. Failure to set this variable will result in target temperature being set to null on startup. As of version 0.59 it will retain the target temperature set before restart if this variable is not configured. - **ac_mode** (*Optional*): Set the switch specified in the *heater* option to be treated as a cooling device instead of a heating device. - **min_cycle_duration** (*Optional*): Set a minimum amount of time that the switch specified in the *heater* option must be in it's current state prior to being switched either off or on. - **cold_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched on. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will start when the sensor equals or goes below 24.5. - **hot_tolerance** (*Optional*): Set a minimum amount of difference between the temperature read by the sensor specified in the *target_sensor* option and the target temperature that must change prior to being switched off. For example, if the target temperature is 25 and the tolerance is 0.5 the heater will stop when the sensor equals or goes above 25.5. - **keep_alive** (*Optional*): Set a keep-alive interval. If set, the switch specified in the *heater* option will be triggered every time the interval elapses. Use with heaters and A/C units that shut off if they don't receive a signal from their remote for a while. +- **initial_operation_mode** (*Optional*): Set the initial operation mode. Valid values are `off` or `auto`. Value has to be double quoted. If this parameter is not set, it is preferable to set a *keep_alive* value. This is helpful to align any discrepancies between *generic_thermostat* and *heater* state. A full configuration example looks like the one below. `min_cycle_duration` and `keep_alive` must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. @@ -57,4 +58,5 @@ climate: seconds: 5 keep_alive: minutes: 3 + initial_operation_mode: "off" ``` diff --git a/source/_components/climate.hive.markdown b/source/_components/climate.hive.markdown new file mode 100644 index 00000000000..a6c40b14623 --- /dev/null +++ b/source/_components/climate.hive.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: "Hive Thermostat" +description: "Instructions on how to integrate Hive thermostat(s) with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Climate +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' climate component integrates your Hive thermostat and hot water into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. + +The Hive climate component supports the following Hive products: +- **Hive Active Heating** +- **Hive Multizone** +- **Hot water control** + + +

+Full configuration details can be found on the main [Hive component](/components/hive/) page. +

+ + diff --git a/source/_components/cloud.markdown b/source/_components/cloud.markdown index be9f5589624..675f5fd5ffe 100644 --- a/source/_components/cloud.markdown +++ b/source/_components/cloud.markdown @@ -8,12 +8,19 @@ comments: false sharing: true footer: true logo: home-assistant.png -ha_release: 0.57 +ha_release: 0.60 +ha_category: Voice +ha_iot_class: "Cloud Push" --- -The Home Assistant Cloud allows you to quickly integrate your local instance with various cloud services. Any processing of services from other cloud services is handled by your local instance. +The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services. Any processing of services from other cloud services is handled by your local Home Assistant. -To get started, create an account and log in via the configuration panel in your Home Assistant instance. There is no need to configure your router or expose your instance to the internet in any other way. +```yaml +# Example configuration.yaml entry to enable the cloud component +cloud: +``` + +Once activated, go to the configuration panel in Home Assistant and create an account and log in. There is no need to configure your router or expose your instance to the internet in any other way. ### {% linkable_title Amazon Alexa %} @@ -86,3 +93,7 @@ Currently, the following domains are available to be used with Alexa: - switch [alexa skill]: https://alexa.amazon.com/spa/index.html#skills/dp/B0772J1QKB/?ref=skill_dsk_skb_sr_2 + +### {% linkable_title Frequently Asked Questions %} + +You can find a list of frequently asked questions (and their answers) in [this blog post](https://home-assistant.io/blog/2017/12/17/introducing-home-assistant-cloud/#faq). diff --git a/source/_components/cover.garadget.markdown b/source/_components/cover.garadget.markdown index 1d34384fffa..6ae25d44e8e 100644 --- a/source/_components/cover.garadget.markdown +++ b/source/_components/cover.garadget.markdown @@ -98,3 +98,17 @@ logbook: - sensor.garage_door_time_in_state - sensor.garage_door_wifi_signal_strength ``` + +As of firmware release 1.17 the garadget device has native support for MQTT. The options allow the end-user to configure the device in the following ways 'cloud only', 'cloud and MQTT' or 'MQTT only'. + +For configuration of the garadget as a MQTT cover: + +```yaml +cover: + - platform: mqtt + name: "Garage Door" + command_topic: "garadget/device_name/command" + state_topic: "garadget/device_name/status" + payload_open: "open" + payload_close: "close" +``` diff --git a/source/_components/cover.tahoma.markdown b/source/_components/cover.tahoma.markdown new file mode 100644 index 00000000000..787b6fb126c --- /dev/null +++ b/source/_components/cover.tahoma.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Tahoma Cover" +description: "Instructions how to integrate Tahoma covers into Home Assistant." +date: 2017-07-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tahoma.png +ha_category: Cover +ha_release: 0.59 +--- + +To use your tahoma covers in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +cover: + platform: tahoma +``` diff --git a/source/_components/cover.tellstick.markdown b/source/_components/cover.tellstick.markdown new file mode 100644 index 00000000000..2008ef2a73d --- /dev/null +++ b/source/_components/cover.tellstick.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "TellStick Cover" +description: "Instructions how to integrate TellStick covers into Home Assistant." +date: 2017-11-29 16:23 +sidebar: true +comments: false +sharing: true +footer: true +logo: telldus_tellstick.png +ha_category: Cover +ha_iot_class: "Assumed State" +ha_release: "0.60" +--- + + +This `tellstick` cover platform allows you to control your [TellStick](http://www.telldus.se/products/tellstick) covers. + +To use your TellStick device, you first have to set up your [Tellstick hub](/components/tellstick/) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +cover: + - platform: tellstick +``` diff --git a/source/_components/cover.zwave.markdown b/source/_components/cover.zwave.markdown index b3204b21089..1986d5604c4 100644 --- a/source/_components/cover.zwave.markdown +++ b/source/_components/cover.zwave.markdown @@ -2,7 +2,7 @@ layout: page title: "Z-Wave Cover" description: "Instructions how to setup the Z-Wave covers within Home Assistant." -date: 2016-08-24 14:15 +date: 2016-12-18 19:41 sidebar: true comments: false sharing: true @@ -16,3 +16,12 @@ ha_iot_class: "Local Push" Z-Wave garage doors, blinds, and roller shutters are supported as cover in Home Assistant. To get your Z-Wave covers working with Home Assistant, follow the instructions for the general [Z-Wave component](/components/zwave/). + +If you discover that you need to [invert the operation]](/docs/z-wave/installation/#invert_openclose_buttons) of open/close for a particular device, you may change this behavior in your Z-Wave section of your `configuration.yaml` file as follows: + +```yaml +zwave: + device_config: + cover.my_cover: + invert_openclose_buttons: true +``` diff --git a/source/_components/device_tracker.bluetooth_le_tracker.markdown b/source/_components/device_tracker.bluetooth_le_tracker.markdown index e0da81a826a..b812d2f5e0d 100644 --- a/source/_components/device_tracker.bluetooth_le_tracker.markdown +++ b/source/_components/device_tracker.bluetooth_le_tracker.markdown @@ -43,6 +43,9 @@ device_tracker: Configuration variables: - **device_id** (*Optional*): The device ID for the Bluetooth device to be used for tracking. Defaults to `hci0`. +- **track_new_devices** (*Optional*): If new discovered devices are tracked by default. Defaults to `True`. +- **scan_duration** (*Optional*): How long should the scanner be looking for BLE devices. Defaults to `10` seconds. +- **interval_seconds** (*Optional*): Seconds between each scan for new devices. Defaults to `12` seconds. As some BT LE devices change their MAC address regularly, a new device is only discovered when it has been seen 5 times. Some BTLE devices (e.g. fitness trackers) are only visible to the devices that they are paired with. In this case, the BTLE tracker won't see this device. diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index 105dec1e7f3..25e29614980 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -26,15 +26,19 @@ device_tracker: host: 192.168.1.1 username: admin password: YOUR_PASSWORD + new_device_defaults: + track_new_devices: True + hide_if_away: False + ``` The following optional parameters can be used with any platform. However device tracker will only look for global settings under the configuration of the first configured platform: | Parameter | Default | Description | -|---------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `track_new_devices` | True | If new discovered devices are tracked by default | -| `interval_seconds` | 12 | Seconds between each scan for new devices | -| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (E.g. the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) | +|----------------------|---------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `interval_seconds` | 12 | Seconds between each scan for new devices | +| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (E.g. the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) | +| `new_device_defaults`| | Default values for new discovered devices. Available options `track_new_devices` (default: `True`), `hide_if_away` (default: `False`) | The extended example from above would look like the following sample: @@ -66,6 +70,10 @@ devicename: hide_if_away: no ``` +

+ In the example above, `devicename` refers to the detected name of the device. For instance, `my_iphone`. +

+ | Parameter | Default | Description | |----------------|-------------------------------|---------------------------------------------------------------------------------------------------------| | `name` | Host name or "Unnamed Device" | The friendly name of the device. | diff --git a/source/_components/device_tracker.meraki.markdown b/source/_components/device_tracker.meraki.markdown new file mode 100644 index 00000000000..a88aa1d7130 --- /dev/null +++ b/source/_components/device_tracker.meraki.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Meraki" +description: "Instructions on how to integrate Meraki-based presence detection into Home Assistant." +date: 2017-11-22 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: meraki.png +ha_category: Presence Detection +ha_release: "0.60" +--- +Use your `Meraki AP` as device tracker. Note that Meraki will see all devices, not only connected to the network. +Follow instructions [here](https://meraki.cisco.com/technologies/location-analytics-api) how to enable Location Analytics. + +After you configure access to the Meraki CMX API, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: meraki + secret: your_secret + validator: meraki_validator +``` + + +{% configuration %} + secret: + description: Secret code added in Meraki + required: true + type: string + validator: + description: Validation string from Meraki + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index 7e3de32b678..0ce79dfc3a9 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -15,7 +15,7 @@ featured: false 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 `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. +You might have to install the packages for `arp` and `nmap`. On Debian based hosts (for example Hassbian and Raspbian) do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`.

If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index 22767d9907a..60c14a1f873 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -33,6 +33,7 @@ The following OID examples pull the current MAC Address table from a router. Thi | TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | | EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | | Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | +| DD-WRT | unknown RouterOS version/model | `1.3.6.1.2.1.4.22.1.2` | To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown index 004d92679d7..5e25b7df5c3 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -33,7 +33,7 @@ Configuration variables: - **password** (*Required*): The password for your given admin account. - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard). - **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem". -- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats. +- **detection_time** (*Optional*): The Unifi component will only return devices that have been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.unifi_direct.markdown b/source/_components/device_tracker.unifi_direct.markdown new file mode 100644 index 00000000000..d00d2259646 --- /dev/null +++ b/source/_components/device_tracker.unifi_direct.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Ubiquiti Unifi direct AP" +description: "Instructions how to use a Unifi WAP as a device tracker." +date: 2017-11-17 14:59 +sidebar: true +comments: false +sharing: true +footer: true +logo: ubiquiti.png +ha_category: Presence Detection +ha_release: 0.59 +--- + + +This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](https://home-assistant.io/components/device_tracker.unifi/) because it doesn't require the Unifi controller software. + +To use this device tracker in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: unifi_direct + host: YOUR_AP_IP_ADDRESS + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +host: + description: The hostname or IP address of your Unifi AP. + required: true + type: string +username: + description: The username used to connect to your Unifi AP. + required: true + type: string +password: + description: The password used to connect to your Unifi AP. + required: true + type: string +{% endconfiguration %} + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. + diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index 62f9c0c1b34..18ac58261ce 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -35,6 +35,7 @@ Home Assistant can discover and automatically configure [zeroconf](https://en.wi * [SABnzbd downloader](https://home-assistant.io/components/sensor.sabnzbd/) * [Samsung TVs](https://home-assistant.io/components/media_player.samsungtv/) * [Sonos speakers](https://home-assistant.io/components/media_player.sonos/) + * [Telldus Live](https://home-assistant.io/components/tellduslive/) * [Yamaha media player](https://home-assistant.io/components/media_player.yamaha/) * [Yeelight Sunflower bulb](https://home-assistant.io/components/light.yeelightsunflower/) @@ -77,6 +78,7 @@ Valid values for ignore are: * `sabnzbd`: SABnzbd downloader * `samsung_tv`: Samsung TVs * `sonos`: Sonos speakers + * `tellduslive`: Telldus Live * `yamaha`: Yamaha media player * `yeelight`: Yeelight Sunflower bulb @@ -94,7 +96,9 @@ If you are on Windows and you're using Python 3.5, download the [Netifaces](http

-If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system. +If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of Home Assistant, the discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system. + +For DSM/Synology, install via debian-chroot [see this forum post](https://community.home-assistant.io/t/error-starting-home-assistant-on-synology-for-first-time/917/15).

If you are developing a new platform, please read [how to make your platform discoverable](/developers/component_discovery/) for further details. diff --git a/source/_components/dominos.markdown b/source/_components/dominos.markdown new file mode 100644 index 00000000000..062c0fbfea8 --- /dev/null +++ b/source/_components/dominos.markdown @@ -0,0 +1,80 @@ +--- +layout: page +title: "Dominos Pizza" +description: "Instructions on how to setup Dominos Pizza ordering within Home Assistant." +date: 2017-11-05 17:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: dominos.png +ha_category: Other +ha_version: 0.59 +--- + +The `Dominos` component allows you to order Dominos Pizza from within your Home Assistant scripts and automations. + +At present, this component only supports ordering within Canada and the US. + +To enable the component, you need to set up your customer information and define some orders. + +Orders are a group of product codes. You can get these product codes by inspecting an order request from the Dominos web app, or you can [add this custom panel by following this readme](https://github.com/wardcraigj/hass-dominos-panel) to see the available product codes in a separate panel in your install. + +Currently, there is no support in this component for toppings, coupons or order tracking. + +```yaml +dominos: + country_code: ca + first_name: John + last_name: Smith + email: john.smith@example.com + phone: 123456789 + address: 24 Housten Dr, Ottawa, ON, K2M2M2 + orders: + - name: Medium Pan + codes: + - P12IPAZA +``` + +Now you can use the Dominos service to order pizza within your automations: + +```yaml +- service: dominos.order + data: + order_entity_id: dominos.medium_pan +``` + +{% configuration %} + country_code: + required: true + description: \'ca\' or \'us\', depending on your location + type: string + first_name: + required: true + description: Your first name + type: string + last_name: + required: true + description: Your last name + type: string + email: + required: true + description: Your email address + type: string + phone: + required: true + description: Your phone number + type: string + address: + required: true + description: Your delivery address + type: string + show_menu: + required: false + description: Dumps product codes from your nearest store into your log (for use in with the custom panel) + type: integer + orders: + required: false + description: Sets of product codes to use for ordering + type: list +{% endconfiguration %} diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index a3e6da2ceef..1d18fb430d1 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -61,3 +61,5 @@ Configuration variables:

+ +If for whatever reason you delete and re-create your ecobee app at ecobee.com such that your developer API key changes, you will need to delete your `/conf/ecobee.conf file`. You will also need to update the `api_key:` in the `configuration.yaml` or `secrets.yaml` file. diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index 0244bc546aa..1079a0f96b6 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -22,7 +22,7 @@ entities. The driving use case behind this functionality is to allow Home Assist The virtual bridge has the ability to turn entities on or off, or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness.

-A physical Hue Bridge is required for the lights to function - this virtual bridge will not replace a physical bridge. +A physical Hue Bridge is required for Philips Hue lights to function - this virtual bridge will not replace a physical bridge. Instead, it allows Home Assistant to represent non-Philips Hue devices to Amazon Echo as Philips Hue devices, which Amazon Echo can control with built-in support.

diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 7acf1291e45..218a7c0da40 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -13,7 +13,7 @@ ha_version: 0.57 ha_iot_class: "Local Polling" --- -The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2. The Air Purifier Pro isn't supported right now. +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2, Air Purifier 2S andd Air Purifier Pro. Currently, the supported features are diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index 40274f80623..92c0e8d8dd4 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -23,7 +23,7 @@ frontend: description: "Version of the JavaScript to serve to clients. Options: `es5` - transpiled so old browsers understand it. `latest` - not transpiled, so will work on recent browsers only. `auto` - select a version according to the browser user-agent. The value in the config can be overiden by putting `es5` or `latest` in the URL. For example `http://localhost:8123/states?es5` " required: false type: string - default: es5 + default: auto themes: description: Allow to define different themes. See below for further details. required: false @@ -39,7 +39,11 @@ frontend: required: true type: [list, string] extra_html_url: - description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load." + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `latest` javascript mode." + required: false + type: list + extra_html_url_es5: + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load in `es5` javascript mode." required: false type: list development_repo: diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown index aa28a32ae6d..95aee7b7974 100644 --- a/source/_components/google_assistant.markdown +++ b/source/_components/google_assistant.markdown @@ -13,14 +13,15 @@ featured: true ha_release: 0.56 --- -# Google Assistant Docs +The `google_assistant` component allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device. + The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.

To use Google Assistant your Home Assistant configuration has to be externally accessible, with a hostname and SSL certificate. If you haven't already configured that you should do so before continuing.

-### {% linkable_title Configuration %} +To enable this, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -36,18 +37,15 @@ google_assistant: - group ``` -*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: +Configuration variables: -`cat /dev/urandom|fold -w 120|head -n 1|base64 -w 0|tr -dc '0-9A-Za-z'|cut -c -80` - -*Configuration Variables:* -* *expose_by_default* (Optional): Expose devices in all supported domains by default. -* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) -* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. -* *access_token* (Required): Another different long random URL safe string. -* *agent_user_id* (Optional): A string to identify the user, e.g., email address. If not provided, the component will generate one. -* *api_key* (Optional): An API Key generated for the project from Google Console which allows you to update devices without unlinking and relinking an account (see setup below). If not provided then the request_sync service is not exposed. -* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include: +- **expose_by_default** (*Optional*): Expose devices in all supported domains by default. +- **project_id** (*Required*): Project ID from the Google Developer console (looks like `words-2ab12`) +- **client_id** (*Required*): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. +- **access_token** (*Required*): Another different long random URL safe string. +- **agent_user_id** (*Optional*): A string to identify the user, e.g., email address. If not provided, the component will generate one. +- **api_key** (*Optional*): An API Key generated for the project from [Google Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see setup below). If not provided then the request_sync service is not exposed. +- **exposed_domains** (*Optional*): An array of Home Assistant domains to expose to Google Assistant. Options include: - `switch` - `light` - `cover` @@ -56,6 +54,16 @@ google_assistant: - `fan` - `scene` - `script` + - `climate` + +It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: + +```bash +$ cat /dev/urandom | fold -w 120 | head -n 1 | base64 -w 0 | tr -dc '0-9A-Za-z' | cut -c -80 +``` + +If you're not using Linux, you can use sites such as [this one](https://www.browserling.com/tools/random-string) to generate a random string (containing mixed case letters and numbers) of up to 80 characters. + You can also customize your devices similar to other components by adding keys to entities: @@ -74,11 +82,12 @@ homeassistant: google_assistant_type: light ``` -*Entity Customization Keys:* -* *google_assistant*: True exposes entity, false will hide it -* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. -* *google_assistant_type*: Can be used to override the domain/type of an entity. For example a switch can be treated as a light -* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. +Entity Customization Keys: + +- **google_assistant**: True exposes entity, false will hide it. +- **google_assistant_name**: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. +- **google_assistant_type**: Can be used to override the domain/type of an entity. For example a switch can be treated as a light +- **aliases**: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. ### {% linkable_title Setup %} @@ -111,15 +120,16 @@ homeassistant: 2. Go to Build under the Actions SDK box 3. Copy the command that looks like: `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` -4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions`). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions` if you're running on Linux). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. 5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. 6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. 1. Grant type: `Implicit` - 2. Client ID: Should be the same as `client_id` from your hass config above + 2. Client ID: The `client_id` from your Home Assistant configuration above 3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth` 4. Configure your client. Add scopes for `email` and `name` 5. Testing instructions: doesn't matter since you won't submit this app 7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window. +8. If you haven't already added the configuration to `configuration.yaml` and restarted Home Assistant, you'll be unable to continue until you have. 8. Open the Google Assistant app and go into `Settings > Home Control` 9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices. 10. If you want to allow other houshold users to control the devices: @@ -127,10 +137,17 @@ homeassistant: 2. Under the gear icon, click `Permissions` 3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role 4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7. -11. If you want to use the request_sync service in Home Assistant, then Enable Homegraph API for your project: - 1. Go to https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview +11. If you want to use the `google_assistant.request_sync` service in Home Assistant, then enable Homegraph API for your project: + 1. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) 2. Select your project and click Enable Homegraph API 3. Go to Credentials and select API Key from Create Credentials 4. Note down the generated API Key and use this in the configuration *Note:* The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlehome/answer/7506443?hl=en-GB) from Home Control and relink. + +*Note:* The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [developer console](https://console.actions.google.com). Resolve this by: + 1. Removing your project on the [developer console](https://console.actions.google.com). + 2. Add a new project in the [cloud console](https://console.cloud.google.com). Here you get a new project_id. + 3. Enable Homegraph API to the new project. + 4. Generete a new API key. + 5. Again create a new project in the [developer console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this they share the same project_id. diff --git a/source/_components/hive.markdown b/source/_components/hive.markdown new file mode 100644 index 00000000000..7c3d47a3c9f --- /dev/null +++ b/source/_components/hive.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Hive" +description: "Instructions on how to integrate Hive devices with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Hub +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +This Hive component is the main component to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all your Hive devices into Home Assistant, including support for multizone heating. + +This component uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive component in Home Assistant. + +To add your Hive devices into your Home Assistant installation, using the default scan_interval, add the following to your 'configuration.yaml' file: + +```yaml +# Example configuration.yaml entry +hive: + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: Your username from [https://my.hivehome.com](https://my.hivehome.com). + required: true + type: string +password: + description: Your password from [https://my.hivehome.com](https://my.hivehome.com). + required: true + type: string +scan_interval: + description: The time in minutes between Hive API calls + required: false + type: int + default: 2 +{% endconfiguration %} + + +The Hive Home Assistant platform currently supports the following Hive devices: + +- Hive Active Heating (including hot water and Hive Multizone) +- Hive Active Light Dimmable +- Hive Active Light Cool to Warm White +- Hive Active Plug +- Hive Window or Door Sensor +- Hive Motion Sensor diff --git a/source/_components/homematic.markdown b/source/_components/homematic.markdown index 93cf903eb44..73287f74209 100644 --- a/source/_components/homematic.markdown +++ b/source/_components/homematic.markdown @@ -28,58 +28,69 @@ To set up the component, add the following information to your `configuration.ya ```yaml homematic: - hosts: + interfaces: wireless: - ip: 127.0.0.1 + host: 127.0.0.1 ``` Configuration variables (global): -- **hosts** (*Required*): Configuration for each host to integrate into Home Assistant. +- **interfaces** (*Required*): Configuration for each XML-RPC interface to integrate into Home Assistant. +- **hosts** (*Optional*): Configuration for each Hub (CCU/Homegear) to integrate into Home Assistant. - **local_ip** (*Optional*): IP of device running Home Assistant. Override auto-detected value for exotic network setups. - **local_port** (*Optional*): Port for connection with Home Assistant. By default it is randomly assigned. -Configuration variables (host): +Configuration variables (interface): -- **ip** (*Required*): IP address of CCU/Homegear device. +- **host** (*Required*): IP address or Hostname of CCU/Homegear device or Hass.io add-on. - **port** (*Optional*): Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010, thermostatgroups: 9292. - **callback_ip** (*Optional*): Set this, if Home Assistant is reachable under a different IP from the CCU (NAT, Docker etc.). - **callback_port** (*Optional*): Set this, if Home Assistant is reachable under a different port from the CCU (NAT, Docker etc.). - **resolvenames** (*Optional*): [`metadata`, `json`, `xml`] Try to fetch device names. Defaults to `false` if not specified. - **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. - **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. -- **primary** (*Optional*): Set to `true` when using multiple hosts and this host should provide the services and variables. -- **variables** (*Optional*): Set to `true` if you want to use CCU2/Homegear variables. Should only be enabled for the primary host. When using a CCU credentials are required. - **path** (*Optional*): Set to `/groups` when using port 9292. +Configuration variables (host): + +- **host** (*Required*): IP address of CCU/Homegear device. +- **username** (*Optional*): When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. +- **password** (*Optional*): When fetching names via JSON-RPC, you need to specify the password of the user you have configured above. + #### Example configuration with multiple protocols and some other options set: ```yaml homematic: - hosts: + interfaces: rf: - ip: 127.0.0.1 + host: 127.0.0.1 resolvenames: json username: Admin password: secret primary: true variables: true wired: - ip: 127.0.0.1 + host: 127.0.0.1 port: 2000 resolvenames: json username: Admin password: secret ip: - ip: 127.0.0.1 + host: 127.0.0.1 port: 2010 groups: - ip: 127.0.0.1 + host: 127.0.0.1 port: 9292 resolvenames: json username: Admin password: secret path: /groups + hosts: + ccu2: + host: 127.0.0.1 + username: Admin + password: secret + ``` ### {% linkable_title The `resolvenames` option %} @@ -115,7 +126,7 @@ sensor: ### {% linkable_title Variables %} It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. -The states of the variables are available through the attributes of your hub entity (e.g. `homematic.rf`). Use templates (as mentioned above) to make your variables available to automations or as entities. +The states of the variables are available through the attributes of your hub entity (e.g. `homematic.ccu2`). Use templates (as mentioned above) to make your variables available to automations or as entities. The values of variables are polled from the CCU/Homegear in an interval of 30 seconds. Setting the value of a variable happens instantly and is directly pushed. ### {% linkable_title Events %} @@ -154,8 +165,8 @@ The name depends on if you chose to resolve names or not. If not, it will be the * *homematic.virtualkey*: Simulate a keypress (or other valid action) on CCU/Homegear with device or virtual keys. * *homematic.reconnect*: Reconnect to CCU/Homegear without restarting Home Assistant (useful when CCU has been restarted) -* *homematic.set_var_value*: Set the value of a system variable. -* *homematic.set_dev_value*: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC. +* *homematic.set_variable_value*: Set the value of a system variable. +* *homematic.set_device_value*: Control a device manually (even devices without support). Equivalent to setValue-method from XML-RPC. #### {% linkable_title Examples %} Simulate a button being pressed @@ -184,9 +195,9 @@ Set boolean variable to true ```yaml ... action: - service: homematic.set_var_value + service: homematic.set_variable_value data: - entity_id: homematic.rf + entity_id: homematic.ccu2 name: Variablename value: true ``` @@ -200,7 +211,7 @@ Manually turn on a switch actor ```yaml ... action: - service: homematic.set_dev_value + service: homematic.set_device_value data: address: LEQ1234567 channel: 1 @@ -212,7 +223,7 @@ Manually set temperature on thermostat ```yaml ... action: - service: homematic.set_dev_value + service: homematic.set_device_value data: address: LEQ1234567 channel: 4 diff --git a/source/_components/hue.markdown b/source/_components/hue.markdown new file mode 100644 index 00000000000..3943f2d3c1f --- /dev/null +++ b/source/_components/hue.markdown @@ -0,0 +1,144 @@ +--- +layout: page +title: "Philips Hue" +description: "Instructions on setting up Philips Hue within Home Assistant." +date: 2017-11-29 23:51 +sidebar: true +comments: false +sharing: true +footer: true +logo: philips_hue.png +ha_category: Hub +ha_iot_class: "Local Polling" +featured: true +ha_release: 0.60 +--- + +Philips Hue support is integrated into Home Assistant as a Hub that can drive the light platform. The preferred way to setup the Philips Hue platform is by enabling the [discovery component](/components/discovery/). + +Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. + +When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. + +Once registration is complete you should see the Hue lights listed as "light" entities; if you don't you may have to restart Home Assistant once more. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. + +If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +hue: + bridges: + - host: DEVICE_IP_ADDRESS +``` + +Configuration variables: + +- **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. +- **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. +- **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. +- **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. +- **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. + +### {% linkable_title Migrating from older configuration %} + +In previous versions of the Hue component the configuration looked different: + +```yaml +# Example configuration.yaml entry +light: + - platform: hue + host: DEVICE_IP_ADDRESS +``` + +You will need to convert each bridge into an entry in the new configuration style. See above for an example. + +### {% linkable_title Multiple Hue bridges %} + +Multiple Hue bridges work transparently with discovery, you don't have to do anything. If you prefer to configure them manually and use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. + +Add `filename` to your Hue configuration entry in your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +hue: + bridges: + - host: BRIDGE1_IP_ADDRESS + filename: phue.conf + - host: BRIDGE2_IP_ADDRESS + filename: phue2.conf +``` + +### {% linkable_title Using Hue Groups in Home Assistant %} + +The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. + +These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. + +The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. + +Example: + +To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2 and 3, execute the following command: + +```bash +$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http:///api//groups +``` + +The `` is the string that is used to register Home Assistant on the bridge, you can find it in the `phue.conf` file in your configuration path. `` is the IP address or hostname of your Hue bridge. + +You can find out the ids of your lights by executing the following command: + +```bash +$ curl http:///api//lights +``` + +Home Assistant will automatically detect your new `LightGroup` and add it to the interface. + +

+ To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). +

+ +More information can be found on the [Philips Hue API documentation](https://www.developers.meethue.com/documentation/groups-api#22_create_group) website. + + +### {% linkable_title Using Hue Scenes in Home Assistant %} + +The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. + +To avoid user interface overload we don't expose scenes directly. Instead there is a hue.hue_activate_scene service which can be used by `automation` or `script` components. +This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. + +For instance: + +```yaml +script: + porch_on: + sequence: + - service: hue.hue_activate_scene + data: + group_name: "Porch" + scene_name: "Porch Orange" +``` + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `group_name` | no | The group/room name of the lights. Find this in the Hue official app. +| `scene_name` | no | The name of the scene. Find this in the Hue official app. + +*Note*: `group_name` is not linked to Home Assistant group name. + +### {% linkable_title Finding Group and Scene Names %} + +How do you find these names? + +The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. + +Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. + +### {% linkable_title Caveats %} + +The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. + +Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. + +The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index fc330b5f799..764138d2725 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -64,6 +64,7 @@ Choose "Webhooks" as service. You need to setup a unique trigger for each event you sent to IFTTT.

+{% raw %} ```yaml # Example configuration.yaml Automation entry automation: @@ -75,9 +76,11 @@ automation: service: ifttt.trigger data: {"event":"TestHA_Trigger", "value1":"Hello World!"} ``` +{% endraw %} IFTTT can also be used in scripts and with `data_template`. Here is the above automation broken into an automation and script using variables and data_templates. +{% raw %} ```yaml # Example configuration.yaml Automation entry automation: @@ -89,10 +92,12 @@ automation: service: script.ifttt_notify data_template: value1: 'HA Status:' - value2: {% raw %}"{{ trigger.event.data.entity_id.split('_')[1] }} is "{% endraw %} - value3: {% raw %}"{{ trigger.event.data.to_state.state }}"{% endraw %} + value2: "{{ trigger.event.data.entity_id.split('_')[1] }} is " + value3: "{{ trigger.event.data.to_state.state }}" ``` +{% endraw %} +{% raw %} ```yaml #Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP). ifttt_notify: @@ -100,6 +105,7 @@ ifttt_notify: - service: ifttt.trigger data_template: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"} ``` +{% endraw %} ### {% linkable_title Sending events from IFTTT to Home Assistant %} diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 60bd6cac432..f2291bda29d 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -34,6 +34,8 @@ Configuration variables: - **database** (*Optional*): Name of the database to use. Defaults to `home_assistant`. The database must already exist. - **ssl** (*Optional*): Use https instead of http to connect. Defaults to false. - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. +- **max_retries** (*Optional*): Allow the component to retry if there was a network error when transmitting data +- **retry_queue_limit** (*Optional*): If retry enabled, specify how much calls are allowed to be queued for retry. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. - **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. - **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format. @@ -175,6 +177,7 @@ influxdb: password: MY_PASSWORD ssl: true verify_ssl: true + max_retries: 3 default_measurement: state exclude: entities: diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index 9c041e1b7f3..ecb9824772c 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -39,27 +39,57 @@ input_number: mode: box ``` -Configuration variables: -- **[alias]** (*Required*): Alias for the input. Multiple entries are allowed. - - **min** (*Required*): Minimum value. - - **max** (*Required*): Maximum value. - - **name** (*Optional*): Friendly name of the input. - - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. - - **step** (*Optional*): Step value for the slider. Defaults to 1. - - **mode** (*Optional*): Can specify `box`, or `slider`. Defaults to `slider`. - - **unit_of_measurement** (*Optional*): Unit of measurement in which the value of the slider is expressed in. - - **icon** (*Optional*): Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. +{% configuration %} + input_number: + description: Alias for the input. Multiple entries are allowed. + required: true + type: map + keys: + min: + description: Minimum value. + required: true + type: float + max: + description: Maxium value. + required: true + type: float + name: + description: Friendly name of the input. + required: false + type: string + initial: + description: Initial value when Home Assistant starts. + required: false + type: float + default: 0 + step: + description: Step value for the slider. Smallest value `0.001`. + required: false + type: float + default: 1 + mode: + description: Can specify `box` or `slider`. + required: false + type: box | slider + default: slider + unit_of_measurement: + description: Unit of measurement in which the value of the slider is expressed in. + required: false + type: string + icon: + description: Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. + required: false + type: icon +{% endconfiguration %} ## {% linkable_title Automation Examples %} Here's an example of `input_number` being used as a trigger in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' as a trigger in an automation - -# Define input_number input_number: bedroom_brightness: name: Brightness @@ -67,8 +97,6 @@ input_number: min: 0 max: 254 step: 1 - -# Automation. automation: - alias: Bedroom Light - Adjust Brightness trigger: @@ -76,20 +104,18 @@ automation: entity_id: input_number.bedroom_brightness action: - service: light.turn_on -# Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable + # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable data_template: entity_id: light.bedroom - brightness: '{{ trigger.to_state.state | int }}' -{% endraw %} + brightness: "{{ trigger.to_state.state | int }}" ``` +{% endraw %} Another code example using `input_number`, this time being used in an action in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation - -# Define 'input_select' input_select: scene_bedroom: name: Scene @@ -101,8 +127,6 @@ input_select: - Relax - 'OFF' initial: 'Select' - -# Define input_number input_number: bedroom_brightness: name: Brightness @@ -110,8 +134,6 @@ input_number: min: 0 max: 254 step: 1 - -# Automation. automation: - alias: Bedroom Light - Custom trigger: @@ -120,21 +142,18 @@ automation: to: CUSTOM action: - service: light.turn_on -# Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. + # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. data_template: entity_id: light.bedroom - brightness: '{{ states.input_number.bedroom_brightness.state | int }}' -{% endraw %} + brightness: "{{ states('input_number.bedroom_brightness') | int }}" ``` - +{% endraw %} Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. -```yaml {% raw %} +```yaml # Example configuration.yaml entry using 'input_number' in an action in an automation - -# Define input_number input_number: target_temp: name: Target Heater Temperature Slider @@ -144,30 +163,31 @@ input_number: unit_of_measurement: step icon: mdi:target -# Automation. # This automation script runs when a value is received via MQTT on retained topic: setTemperature # It sets the value slider on the GUI. This slides also had its own automation when the value is changed. -- alias: Set temp slider - trigger: - platform: mqtt - topic: "setTemperature" - action: - service: input_number.set_value - data_template: - entity_id: input_number.target_temp - value: '{{ trigger.payload}}' +automation: + - alias: Set temp slider + trigger: + platform: mqtt + topic: 'setTemperature' + action: + service: input_number.set_value + data_template: + entity_id: input_number.target_temp + value: "{{ trigger.payload }}" - # This automation script runs when the target temperature slider is moved. - # It publishes its value to the same MQTT topic it is also subscribed to. -- alias: Temp slider moved - trigger: - platform: state - entity_id: input_number.target_temp - action: - service: mqtt.publish - data_template: - topic: "setTemperature" - retain: true - payload: '{{ states.input_number.target_temp.state | int }}' -{% endraw %} +# This automation script runs when the target temperature slider is moved. +# It publishes its value to the same MQTT topic it is also subscribed to. +automation: + - alias: Temp slider moved + trigger: + platform: state + entity_id: input_number.target_temp + action: + service: mqtt.publish + data_template: + topic: 'setTemperature' + retain: true + payload: "{{ states('input_number.target_temp') | int }}" ``` +{% endraw %} diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index 8cf050f2383..0b59c64b24e 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -34,12 +34,54 @@ Configuration variables: - **host** (*Required*): The host entry should be in full URL format, eg. http://192.168.10.100:80 - **username** (*Required*): The username that used to access the ISY interface. - **password** (*Required*): The password that used to access the ISY interface. -- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). +- **sensor_string** (*Optional*): This is the string that is used to identify which devices are to be assumed to be sensors instead of lights of switches. By default, this string is 'sensor'. If this string is found in the device name or folder, Home Assistant will assume it is as a sensor or binary sensor (if the device has on/off or true/false states). This is only necessary for nodes that are not automatically detected as sensors by Home Assistant. Insteon door, window, motion and leak sensors should all be detected automatically. - **hidden_string** (*Optional*): The HIDDEN_STRING is a string that is used to identify which devices are to be hidden on Home Assistant's front page. This string will be stripped from the device's name before being used. By default, this value is '{HIDE ME}'. - **tls** (*Optional*): This entry should reflect the version of TLS that the ISY controller is using for HTTPS encryption. This value can be either 1.1 or 1.2. If this value is not set, it is assumed to be version 1.1. This is the default for most users. ISY994 Pro users may likely be using 1.2. When using HTTPS in the host entry, it is best practice to set this value. Once the ISY controller is configured, it will automatically import any binary sensors, covers, fans, lights, locks, sensors and switches it can locate. +### {% linkable_title Sensors %} + +An Insteon door/window sensor will show up as a single Binary Sensor rather than two discrete devices like it does in the ISY994 admin panel. Note that when in "Two Nodes" mode, the sensor will have an UNKNOWN state until the sensor changes for the first time since the last Home Assistant reboot. If you do not use Insteon scenes that are controlled directly from the door sensor, you may prefer to set the sensor to "One Node" mode using the ISY Admin Panel. + +Each Insteon leak sensor will also show up as a single Binary Sensor as opposed to the two nodes seen in the ISY994. The name of the device will be based on what the parent node is named in the ISY994, which is typically the one with "-Dry" at the end of the name. This may be confusing, because "On" means wet in Home Assistant. You can rename this node either in the ISY994 Admin Panel (which will change the entity_id in Home Assistant) or assign a `friendly_name` in the [Customization section](https://home-assistant.io/docs/configuration/customizing-devices/) of your configuration. + +If your leak or door/window sensor supports heartbeats, a new binary_sensor device will be added to Home Assistant to represent the battery state. The sensor will stay "Off" so long as the daily heartbeats occur. If a heartbeat is missed, the sensor will flip to "On". The name of this device will be based on the heartbeat node in the ISY. + +### {% linkable_title Handling Insteon Control Events %} + +A Home Assistant `isy994_control` event is emitted for every "control" event in the Insteon network. This allows you to write automations that trigger based on Insteon button presses. You can also trigger off of the unique Insteon events, such as double-presses, long-holds etc. + +```yaml +automation: + - alias: turn off living room on double tap lightswitch + trigger: + platform: event + event_type: isy994_control + event_data: + entity_id: light.lr_track_lights_front + control: 'DFOF' + action: + service: light.turn_off + entity_id: light.lr_track_lights_rear +``` + +All `isy994_control` events will have an `entity_id` and `control` parameter in its `event_data`. You'll need to refer to ISY994 documentation for the list of every possible control type, but the common ones are: + +- `DON`: On button +- `DOF`: Off button +- `DFON`: "Fast On", usually from double-tapping an On button +- `DFOF`: "Fast Off", usually from double-tapping an Off button +- `FDUP`: "Fade Up", usually while holding down an On button +- `FDDOWN`: "Fade Down", usually while holding down an Off button +- `FDSTOP`: "Fade Stop", when releasing a long-held button +- `BRT`: "Brighten", from controllers that issue a single command to slightly brighten a light +- `DIM`: "Dim", from controllers that issue a single command to slightly dim a light + +### {% linkable_title Insteon Scenes %} + +All Insteon scenes configured in the ISY994 will show up as switches in Home Assistant. + ### {% linkable_title Creating Custom Devices %} Using the Programs tab in the controller's Administrative Console, custom devices can be created that will appear natively inside of Home Assistant. Home Assistant will scan the following folders and build the device to the associated domains: diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index e27aa82e1a1..c0b94b2eb58 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -13,22 +13,21 @@ ha_release: "0.24" --- -The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. +The `joaoapps_join` component exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers. In the `configuration.yaml` file you need to provide the api key and device id or name of the target device. You can find your device id and api key [here](https://joinjoaomgcd.appspot.com/). To set it up, add the following information to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - platform: joaoapps_join api_key: asd97823jb628a34fwsdfwefd5384345tf2d - device_id: d5asdfasdf54645h45h368761dfe5gt8a *optional - device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b *optional - device_names: Pixel, iPhone *optional - name: Phones *optional - - + device_id: d5asdfasdf54645h45h368761dfe5gt8a + device_ids: d5asdfasdf54645h45h368761dfe5gt8a, a4asdfasdf54645h45h368761dfe5gt3b + device_names: Pixel, iPhone + name: Phones joaoapps_join: - name: android device_id: group.android @@ -42,20 +41,20 @@ Configuration variables: - **device_ids** (*Optional*): Comma separated list of device ids. - **device_names** (*Optional*): Comma separated list of device names. -The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: +The notify service has two optional parameters: `icon` and `vibration`. You can use them like so: ```json {"message":"Hello from Home Assistant!","title":"Home Assistant","data":{"icon":"https://goo.gl/xeetdy", "vibration":"0,65,706,86,657,95,668,100"}} ``` -The services exposed in the joaoapps_join component can be used with the service data described below: +The services exposed in the `joaoapps_join` component can be used with the service data described below: | Service | Data | |------------------------------ |------------------------------------------------------------------ | | joaoapps_join/ring | | -| joaoapps_join/send_sms | {"number":"5553334444", "message":"Hello!"} | -| joaoapps_join/send_tasker | {"command":"test"} | -| joaoapps_join/send_url | {"url":"http://google.com"} | -| joaoapps_join/send_wallpaper | {"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"} | -| joaoapps_join/send_file | {"url":"http://download.thinkbroadband.com/5MB.zip"} | +| joaoapps_join/send_sms | `{"number":"5553334444", "message":"Hello!"}` | +| joaoapps_join/send_tasker | `{"command":"test"}` | +| joaoapps_join/send_url | `{"url":"http://google.com"}` | +| joaoapps_join/send_wallpaper | `{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}` | +| joaoapps_join/send_file | `{"url":"http://download.thinkbroadband.com/5MB.zip"}` | diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown index b48642e7ce5..ff8c0786fcc 100644 --- a/source/_components/knx.markdown +++ b/source/_components/knx.markdown @@ -83,6 +83,7 @@ knx: - **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus - **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus. - **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour. +- **time_address** (*Optional*): Broadcast current local time to KNX bus with configured group address. ### {% linkable_title Services %} diff --git a/source/_components/light.ads.markdown b/source/_components/light.ads.markdown new file mode 100644 index 00000000000..b5188cf33e8 --- /dev/null +++ b/source/_components/light.ads.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "ADS Light" +description: Instructions how to set up ADS lights within Home Assistant +date: 2017-10-25 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Light +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The `ads` light platform allows you to control your connecte ADS lights. + +To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +light: + - platform: ads + adsvar: GVL.enable_light + adsvar_brightness: GVL.brightness +``` + +{% configuration %} + adsvar: + required: true + description: The name of the boolean variable that switches the light on + type: string + adsvar_brightness: + required: false + description: The name of the variable that controls the brightness, use an unsigned integer on the PLC side + type: integer + name: + required: false + description: An identifier for the Light in the frontend + type: string +{% endconfiguration %} diff --git a/source/_components/light.hive.markdown b/source/_components/light.hive.markdown new file mode 100644 index 00000000000..7b9038ae169 --- /dev/null +++ b/source/_components/light.hive.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "Hive Light" +description: "Instructions on how to integrate Hive lights with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Light +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' light component integrates your Hive lights into Home Assistant, enabling control of various settings, depending on the model light. + +The Hive light component supports the following Hive products: +- **Hive Active Light Dimmable** +- **Hive Active Light Cool to Warm White** + + +

+Full configuration details can be found on the main [Hive component](/components/hive/) page. +

+ + diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown index 871972d4f0c..d4d37548b6b 100644 --- a/source/_components/light.hue.markdown +++ b/source/_components/light.hue.markdown @@ -1,7 +1,7 @@ --- layout: page -title: "Philips Hue" -description: "Instructions how to setup Philips Hue within Home Assistant." +title: "Philips Hue Light" +description: "Instructions how to integrate Philips Hue lights into Home Assistant." date: 2015-03-23 20:09 sidebar: true comments: false @@ -14,119 +14,8 @@ featured: true ha_release: pre 0.7 --- -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 [discovery component](/components/discovery/). +The Philips Hue light platform allows you to control your Philips Hue lights. -Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. +This component will automatically add `Lights` configured on your Hue bridges. -When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the IP Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. - -Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. - -If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: hue - host: DEVICE_IP_ADDRESS -``` - -Configuration variables: - -- **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. -- **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. -- **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. -- **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. -- **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. - -### {% linkable_title Multiple Hue bridges %} - -If you use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. - -Add `filename` to your Hue configuration entry in your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -light: - - platform: hue - host: BRIDGE1_IP_ADDRESS - filename: phue.conf - - platform: hue - host: BRIDGE2_IP_ADDRESS - filename: phue2.conf -``` - -### {% linkable_title Using Hue Groups in Home Assistant %} - -The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. - -These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. - -The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. - -Example: - -To create a `LightGroup` named `Ceiling lights` that contains the lights 1, 2 and 3, execute the following command: - -```bash -$ curl -XPOST -d '{"name": "Ceiling lights", "lights": ["1", "2", "3"]}' http:///api//groups -``` - -The `` is the string that is used to register Home Assistant on the bridge, you can find it in the `phue.conf` file in your configuration path. `` is the IP address or hostname of your Hue bridge. - -You can find out the ids of your lights by executing the following command: - -```bash -$ curl http:///api//lights -``` - -Home Assistant will automatically detect your new `LightGroup` and add it to the interface. - -

- To support Hue Light Groups, your bridge needs to have at least firmware 1.13 (released on June 3, 2016). -

- -More information can be found on the [Philips Hue API documentation](https://www.developers.meethue.com/documentation/groups-api#22_create_group) website. - - -### {% linkable_title Using Hue Scenes in Home Assistant %} - -The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. - -To avoid user interface overload we don't expose scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. -This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. - -For instance: - -```yaml -script: - porch_on: - sequence: - - service: light.hue_activate_scene - data: - group_name: "Porch" - scene_name: "Porch Orange" -``` - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `group_name` | no | The group/room name of the lights. Find this in the Hue official app. -| `scene_name` | no | The name of the scene. Find this in the Hue official app. - -*Note*: `group_name` is not linked to Home Assistant group name. - -*** Finding Group and Scene Names *** - -How do you find these names? - -The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. - -Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. - -*** Caveats *** - -The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. - -Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. - -The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". +The requirement is that you have setup your [Philips Hue bridge](/components/hue/). diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown index 0bf8b817fe6..2902cb71be0 100644 --- a/source/_components/light.mochad.markdown +++ b/source/_components/light.mochad.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Mochad Light" -description: "Instructions how to integrate X10 Mochad switches into Home Assistant." +description: "Instructions how to integrate X10 Mochad lights into Home Assistant." date: 2017-07-14 11:29 sidebar: true comments: false @@ -11,7 +11,7 @@ ha_category: Light ha_release: 0.51 --- -The `mochad` switch platform lets you control an X10 enabled dimmer/light +The `mochad` light platform lets you control an X10 enabled dimmer/light device. To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file: @@ -28,5 +28,7 @@ light: Configuration variables: - **address** (*Required*): The X10 address of the light. -- **name** (*Optional*): The name of the switch. Default is: x10_light_dev_*address*. +- **name** (*Optional*): The name of the light. Default is: x10_light_dev_*address*. - **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. +- **brightness_levels** (*Optional*): The number of brightness levels the X10 light device supports. This can either be 32, 64, or 256 (note that the max +value sent to the device will be n-1 because it starts at 0) diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 99a1746623c..ba3041dde38 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -53,7 +53,7 @@ Configuration variables: - **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates. - **rgb_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value. - **state_topic** (*Optional*): The MQTT topic subscribed to receive state updates. -- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. +- **state_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the state value. The template should match the payload "on" and "off" values, so if your light uses "power on" to turn on, your `state_value_template` string should return "power on" when the switch is on. For example if the message is just "on", your `state_value_template` should be `power {{ value }}`. - **white_value_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's white value. - **white_value_state_topic** (*Optional*): The MQTT topic subscribed to receive white value updates. - **white_value_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the white value. diff --git a/source/_components/light.template.markdown b/source/_components/light.template.markdown index 69f0315c940..8c5d5ab1545 100755 --- a/source/_components/light.template.markdown +++ b/source/_components/light.template.markdown @@ -42,7 +42,7 @@ light: {% endraw %} {% configuration %} - switches: + lights: description: List of your lights. required: true type: map diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 426b4754b0b..c082a8b2d8c 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -47,7 +47,7 @@ Per default the bulb limits the amount of requests per minute to 60, a limitatio ### {% linkable_title Initial setup %}

Before trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( [Android](https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=fr), [IOS](https://itunes.apple.com/us/app/yeelight/id977125608?mt=8) ). -In the bulb property, you have to enable "Developer Mode" Developer mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. +In the bulb property, you have to enable "LAN Mode" (previously called "Developer mode"). LAN mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. Determine your bulb IP (using router, software, ping ...)

diff --git a/source/_components/logentries.markdown b/source/_components/logentries.markdown index e14b908b871..b365e57f63d 100644 --- a/source/_components/logentries.markdown +++ b/source/_components/logentries.markdown @@ -11,7 +11,9 @@ footer: true ha_category: "History" --- -The `logentries` component makes it possible to log all state changes to [your Logentries account](http://logentries.com/) using Logentries Webhook endpoint and a token based log +The `logentries` component makes it possible to log all state changes to [Logentries](http://logentries.com/) using Logentries Webhook endpoint. + +Open the **Add a Log** page and choose **Manual**. Enter a name for your log in **Log Name**, add a group in **Select Log Set**, set **Token TCP - logs are identified by a token.** and press **Create Log Token**. The generated token is required for the Home Assistant configuration. To use the `logentries` component in your installation, add the following to your `configuration.yaml` file: @@ -21,6 +23,10 @@ logentries: token: TOKEN ``` -Configuration variables: +{% configuration %} +token: + description: The token for the log to use. + required: true + type: string +{% endconfiguration %} -- **token** (*Required*): Your Logentries log token. diff --git a/source/_components/maxcube.markdown b/source/_components/maxcube.markdown index c26cbe114bc..c9645e9fc59 100644 --- a/source/_components/maxcube.markdown +++ b/source/_components/maxcube.markdown @@ -30,7 +30,7 @@ A `maxcube` section must be present in the `configuration.yaml` file and contain ```yaml # Example configuration.yaml entry maxcube: - host: 192.168.0.20 + host: 192.168.0.20 ``` Configuration variables: - **host** (*Required*): The IP address of the eQ-3 MAX! Cube to use. diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index c9d7d2124d3..0e3dbcba7e0 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -53,5 +53,6 @@ Currently known supported models: - LC-60LE925UN - LC-60LE857U - LC-60EQ10U +- LC-60SQ15U If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.aquostv.markdown). diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown index a64c85c44b3..9d9e50da1d4 100644 --- a/source/_components/media_player.denonavr.markdown +++ b/source/_components/media_player.denonavr.markdown @@ -18,6 +18,7 @@ The `denonavr` platform allows you to control a [Denon Network Receivers](http:/ Supported devices: +- Denon AVR-X1300W - Denon AVR-X2000 - Denon AVR-X2100W - Denon AVR-X4100W diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/media_player.samsungtv.markdown index 2caaf7b0778..a17ccb902c7 100644 --- a/source/_components/media_player.samsungtv.markdown +++ b/source/_components/media_player.samsungtv.markdown @@ -55,6 +55,7 @@ Currently known supported models: - U6300 (port must be set to 8001, and `pip3 install websocket-client` must be executed) - K6500AF (port must be set to 8001) - KS8005 (port must be set to 8001, and `pip3 install websocket-client` must be executed) +- MU6170UXZG (port must be set to 8001, and `pip3 install websocket-client` must be executed) - KS7502 (port must be set to 8001, and `pip3 install websocket-client` must be executed, turn on doesn't work, turn off works fine) - K5600AK (partially supported, turn on works but state is not updated) - UE65KS8005 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) @@ -66,7 +67,7 @@ Currently tested but not working models: - JU7500 - Unable to see state and unable to control - JS9000 - State is always "on" and unable to control (but port 8001 *is* open) - JS9500 - State is always "on" and unable to control (but port 8001 *is* open) -- MU6170UXZG (port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on).) +- MU6300 - Port set to 8001, `pip3 install websocket-client` must be executed, turning on works, status not working reliably, turning off is not permanent (it comes back on) If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_components/media_player.samsungtv.markdown). The first letter (U, P, L, H & K) represent the screen type, e.g. LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. diff --git a/source/_components/media_player.sonos.markdown b/source/_components/media_player.sonos.markdown index 9f54fa81732..3afe420ff4d 100644 --- a/source/_components/media_player.sonos.markdown +++ b/source/_components/media_player.sonos.markdown @@ -109,7 +109,7 @@ Clear the sleep timer on a speaker, if one is set. ### {% linkable_title Service `sonos_update_alarm` %} -Update an existing sonos alarm. +Update an existing Sonos alarm. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -119,3 +119,15 @@ Update an existing sonos alarm. | `volume` | yes | Float for volume level. | `enabled` | yes | Boolean for whether or not to enable this alarm. | `include_linked_zones` | yes | Boolean that defines if the alarm also plays on grouped players. + +### {% linkable_title Service `sonos_set_option` %} + +Set Sonos speaker options. + +Night Sound and Speech Enhancement modes are only supported on Sonos PLAYBAR and PLAYBASE speakers when playing from the TV source. Other speaker types will ignore these options. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of `entity_id`s that will have their options set. +| `night_sound` | yes | Boolean to control Night Sound mode. +| `speech_enhance` | yes | Boolean to control Speech Enhancement mode. diff --git a/source/_components/media_player.ue_smart_radio.markdown b/source/_components/media_player.ue_smart_radio.markdown new file mode 100644 index 00000000000..217b625b8d5 --- /dev/null +++ b/source/_components/media_player.ue_smart_radio.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Logitech UE Smart Radio" +description: "Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant." +date: 2017-12-09 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ueradio.png +ha_category: Media Player +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + + +The `ue_radio` platform allows you to control a [Logitech UE Smart Radio](https://www.uesmartradio.com) from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update. + +To add your UE Smart Radio player to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: ue_smart_radio + username: USERNAME + password: PASSWORD +``` + +{% configuration %} +username: + description: The email you use to log in to `uesmartradio.com`. + required: true + type: string +password: + description: The password you use to log in to `uesmartradio.com`. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/media_player.universal.markdown b/source/_components/media_player.universal.markdown index 48d46311e67..106f114f780 100644 --- a/source/_components/media_player.universal.markdown +++ b/source/_components/media_player.universal.markdown @@ -14,7 +14,7 @@ featured: false Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center. -Multiple Media Player entities can be controlled from a Universal Media Player. Additionally, the Universal Media Player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver. +Multiple media player entities can be controlled from an universal media player. Additionally, the universal media player allows volume and power commands to be re-routed to other entities in Home Assistant. This allows the power and volume to control external devices like a television or audio receiver. A Universal Media Player is created in `configuration.yaml` as follows. @@ -47,31 +47,46 @@ media_player: state: ENTITY_ID|ATTRIBUTE ``` -Configuration variables: +{% configuration %} +name: + description: The name to assign the player. + required: true + type: string +children: + description: Ordered list of child media players this entity will control. + required: true + type: list +state_template: + description: "A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like switches or input booleans." + required: false + type: template +commands: + description: "Commands to be overwritten. Possible entries are `turn_on`, `turn_off`, `select_source`, `volume_set`, `volume_up`, `volume_down` and `volume_mute`." + required: false + type: string +attributes: + description: "Attributes that can be overwritten. Possible entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id should be provided." + required: false + type: string +{% endconfiguration %} -- **name** (*Required*): The name to assign the player -- **children** (*Required*): Ordered list of child media players this entity will control -- **state_template** (*Optional*): A [template](/topics/templating/) can be specified to render the state of the media player. This way, the state could depend on entities different from media players, like Switches or Input Booleans. -- **commands** (*Optional*): Commands to be overwritten. Possible entries are *turn_on*, *turn_off*, *select_source*, *volume_set*, *volume_up*, *volume_down*, and *volume_mute*. -- **attributes** (*Optional*): Attributes that can be overwritten. Possible entries are *is_volume_muted*, *state*, *source*, *source_list, and *volume_level*. The values should be an entity id and state attribute separated by a bar (\|). If the entity id's state should be used, then only the entity id should be provided. +The Universal Media Player will primarily imitate one of its `children`. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the `children:` list must be media players, but the state template can contain any entity. -The Universal Media Player will primarily imitate one of its *children*. The Universal Media Player will control the first child on the list that is active (not idle/off). The Universal Media Player will also inherit its state from the first active child if a `state_template` is not provided. Entities in the *children* list must be media players, but the state template can contain any entity. +It is recommended that the command `turn_on`, the command `turn_off`, and the attribute `state` all be provided together. The `state` attribute indicates if the media player is on or off. If `state` indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and `state` is on, the Universal Media Player's state will be on. -It is recommended that the command *turn_on*, the command *turn_off*, and the attribute *state* all be provided together. The *state* attribute indicates if the Media Player is on or off. If *state* indicates the media player is off, this status will take precedence over the states of the children. If all the children are idle/off and *state* is on, the Universal Media Player's state will be on. +It is also recommended that the command `volume_up`, the command `volume_down`, the command `volume_mute`, and the attribute `is_volume_muted` all be provided together. The attribute `is_volume_muted` should return either True or the on state when the volume is muted. The `volume_mute` service should toggle the mute setting. -It is also recommended that the command *volume_up*, the command *volume_down*, the command *volume_mute*, and the attribute *is_volume_muted* all be provided together. The attribute *is_volume_muted* should return either True or the on state when the volume is muted. The *volume_mute* service should toggle the mute setting. - -When providing *select_source* as a command, it is recommended to also provide the attributes *source*, and *source_list*. The *source* attribute is the currently select source, while the *source_list* attribute is a list of all available sources. +When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources. ## {% linkable_title Usage examples %} #### {% linkable_title Chromecast & Kodi control with switches %} -In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The *turn_on* and *turn_off* commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The *select_source* command will be passed directly to an A/V receiver. - -The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the Universal Media player will change to reflect its status. +In this example, a switch is available to control the power of the television. Switches are also available to turn the volume up, turn the volume down, and mute the audio. These could be command line switches or any other entity in Home Assistant. The `turn_on` and `turn_off` commands will be redirected to the television, and the volume commands will be redirected to an audio receiver. The `select_source` command will be passed directly to an A/V receiver. +The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status. +{% raw %} ```yaml media_player: platform: universal @@ -104,12 +119,12 @@ media_player: service: media_player.select_source data_template: entity_id: media_player.receiver - source: '{% raw %}{{ source }}{% endraw %}' + source: '{{ source }}' volume_set: service: media_player.volume_set data_template: entity_id: media_player.receiver - volume_level: '{% raw %}{{ volume_level }}{% endraw %}' + volume_level: '{{ volume_level }}' attributes: state: switch.living_room_tv @@ -117,21 +132,22 @@ media_player: volume_level: media_player.receiver|volume_level source: media_player.receiver|source source_list: media_player.receiver|source_list - ``` +{% endraw %} #### {% linkable_title Kodi CEC-TV control %} In this example, a [Kodi Media Player](/components/media_player.kodi/) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi addon installed, it can turn on and off the attached TV. -We store the state of the attached TV in a hidden [Input Boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the Universal Media Player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). +We store the state of the attached TV in a hidden [input boolean](/components/input_boolean/), so we can differentiate the TV being on or off, while Kodi is always 'idle', and use the universal media player to render its state with a template. We can hide the Kodi Media Player too, and only show the universal one, which now can differentiate between the 'idle' and the 'off' state (being the second when it is idle and the TV is off). -Because the Input Boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. +Because the input boolean used to store the TV state is only changing when using the Home Assistant `turn_on` and `turn_off` actions, and Kodi could be controlled by so many ways, we also define some automations to update this Input Boolean when needed. -In an Apple HomeKit scene, we can now expose this Universal Media Player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. +In an Apple HomeKit scene, we can now expose this universal media player as an on/off switch in Homebridge, and, that way, use Siri to turn on and off the TV. -The complete yaml config is: +The complete configuration is: +{% raw %} ```yaml homeassistant: customize: @@ -153,11 +169,11 @@ media_player: - platform: universal name: Kodi TV state_template: > - {% raw %}{% if (is_state('media_player.kodi', 'idle') and (is_state('input_boolean.kodi_tv_state', 'off') %} + {% if is_state('media_player.kodi', 'idle') and is_state('input_boolean.kodi_tv_state', 'off') %} off {% else %} {{ states('media_player.kodi') }} - {% endif %}{% endraw %} + {% endif %} children: - media_player.kodi commands: @@ -224,3 +240,4 @@ automation: - service: media_player.turn_off entity_id: media_player.kodi_tv ``` +{% endraw %} diff --git a/source/_components/media_player.ziggo_mediabox_xl.markdown b/source/_components/media_player.ziggo_mediabox_xl.markdown new file mode 100644 index 00000000000..5919b19b50b --- /dev/null +++ b/source/_components/media_player.ziggo_mediabox_xl.markdown @@ -0,0 +1,43 @@ +--- +layout: page +title: "Ziggo Mediabox XL" +description: "Instructions how to integrate the Ziggo Mediabox XL into Home Assistant." +date: 2017-11-10 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ziggo.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: "0.60" +--- + +The `ziggo_mediabox_xl` component allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. + +To add a Ziggo Mediabox XL to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: ziggo_mediabox_xl + host: 192.168.0.123 + name: Ziggo Mediabox +``` + +{% configuration %} + host: + description: The hostname or address of the device. + required: true + type: string + name: + description: The name of the device used in the frontend. + required: false + type: string +{% endconfiguration %} + +The channel information (numbers and names) are downloaded from ziggo.nl on startup. + +#### {% linkable_title Preparation of the Mediabox %} + +Makes sure to enable the Home Network ("mijn thuisnetwerk") service in the settings menu of the media box. Once you have set up the Media Library ("mediabiblotheek"), we can determine whether the device is turned on or off. Without this, the component will fail to start. diff --git a/source/_components/neato.markdown b/source/_components/neato.markdown index 6e0849e6f01..3a4c86cac01 100644 --- a/source/_components/neato.markdown +++ b/source/_components/neato.markdown @@ -28,6 +28,13 @@ Configuration variables: - **username** (*Required*): Username for the Neato account. - **password** (*Required*): Password for the Neato account. +The Home Assistant Neato platform has not been tested with all models of Botvac. + + | BotVac Model | Tested | + | --- | --- | + | Botvac Connected | SUCCESS | + | Botvac D7 Connected | SUCCESS | +

-The Home Assistant Neato platform has only be tested with a Botvac Connected. There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time. +There is no support for the Botvac D3 Connected and Botvac D5 Connected robots at this time.

diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index b3d376c50fc..7aa5adfb9c9 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -34,7 +34,7 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 9. Once the new product page opens the "Product ID" and "Product Secret" are located on the right side. These will be used as `client_id` and `client_secret` below. 10. Once Home Assistant is started, a configurator will pop up asking you to log into your Nest account and copy a PIN code into Home Assistant. -Connecting to the Nest Developer API requires outbound port 8553 on your firewall. The configuration will fail if this is not accessible. +Connecting to the Nest Developer API requires outbound port 9553 on your firewall. The configuration will fail if this is not accessible. ### {% linkable_title Configuration %} diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index a7b6a30a0c0..ebb254a3109 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -55,6 +55,3 @@ That's it. You can copy and paste your new `client id` and `client secret` in yo

-

-The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rain meter. There is no support for the wind meter module at this time because developers does not own these modules. -

diff --git a/source/_components/notify.html5.markdown b/source/_components/notify.html5.markdown index 8331ad249fd..8bf9a4c528e 100644 --- a/source/_components/notify.html5.markdown +++ b/source/_components/notify.html5.markdown @@ -21,14 +21,14 @@ To enable this platform, add the following lines to your `configuration.yaml` fi notify: - name: NOTIFIER_NAME platform: html5 - gcm_api_key: 'gcm-sender-key' + gcm_api_key: 'gcm-server-key' gcm_sender_id: 'gcm-sender-id' ``` 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`. -- **gcm_api_key** (*Required if pushing to Chrome*): The API key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. +- **gcm_api_key** (*Required if pushing to Chrome*): The API Server key provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. - **gcm_sender_id** (*Required if pushing to Chrome*): The sender ID provided to you by Google for Google Cloud Messaging (GCM). Required to push to Chrome. ### {% linkable_title Getting ready for Chrome %} diff --git a/source/_components/notify.lametric.markdown b/source/_components/notify.lametric.markdown index 8adb8c094eb..cf50cffaa2e 100644 --- a/source/_components/notify.lametric.markdown +++ b/source/_components/notify.lametric.markdown @@ -12,17 +12,71 @@ ha_category: Notifications ha_release: 0.49 --- -This component allows to send notification to a LaMetric device. It need the LaMetric platform to be configured first. +The `lametric` notification platform allows to send notification to a LaMetric device. It needs the LaMetric platform to be configured first. + +To enable LaMetric notifications in your installation, add the following to your `configuration.yaml` file: ```yaml +# Example configuration.yaml entry notify: - name: lametric1 + name: NOTIFIER_NAME platform: lametric - display_time: 20 - icon: i555 ``` -- **name** (*Optional*): The name of the LaMetric device. Usually it is "My Lametric" -- **display_time** (*Optional*): Defines how long the message should be displayed (in seconds). -- **icon** (*Optional*): An icon or animation. Check out the list of all icons her: https://developer.lametric.com/icons -Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number. +{% configuration %} +name: + description: "The optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`." + required: false + type: string + default: notify +lifetime: + description: Defines how long the message remains in LaMetric notification queue (in seconds). + required: false + type: int + default: 10 +icon: + description: An icon or animation. + required: false + type: string +cycles: + description: Defines how often the notification is displayed. + required: false + type: int + default: 1 +{% endconfiguration %} + +Check out the list of all icons at [https://developer.lametric.com/icons](https://developer.lametric.com/icons). Note that icons always begin with "i" while animations begin with "a". This is part of the name, you can't just use the number! + +## {% linkable_title Examples %} + +### {% linkable_title Full configuration example %} + +```yaml +# Example configuration.yaml entry +notify: + name: NOTIFIER_NAME + platform: lametric + lifetime: 20 + icon: a7956 + cycles: 3 +``` + +### {% linkable_title Changing sounds and icons %} + +To add a notification sound or an icon override, it has to be done via service data. + +```yaml +- alias: "Send notification on arrival at school" + trigger: + platform: state + entity_id: device_tracker.son_mobile + from: 'not_home' + to: 'school' + action: + service: notify.lametric + data: + message: "Son has arrived at school!" + data: + sound: 'notification' + icon: 'i51' + ``` diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/notify.nfandroidtv.markdown index 3a91a7cba0e..79b3096a7de 100644 --- a/source/_components/notify.nfandroidtv.markdown +++ b/source/_components/notify.nfandroidtv.markdown @@ -14,9 +14,11 @@ ha_iot_class: "Local Polling" --- -Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google&hl=en) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). +Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). + The notifications are in the global scope of your Android TV device. They will be displayed regardless of which application is running. -The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. + +When setting this up be aware, that there are two apps: one for your smartphone to send notifications (not required for this platform) and one for your Android TV device to receive the notifications. The app available in the store of your target device is the one that is needed to display notifications sent from Home Assistant. The In-App purchases only apply to the client for Android smartphones, so there isn't any limit when pushing notifications from Home Assistant. To enable the notification platform, add the following to your `configuration.yaml` file: @@ -50,7 +52,7 @@ This is a fully customized JSON you can use to test how the final notification w "duration":2, "transparency":"0%", "color": "red", - "interrupt": 1 + "interrupt": 1, } } ``` diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index 0445d1df821..17a2e479859 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -42,7 +42,7 @@ Configuration variables: ### {% linkable_title Slack service data %} -The following attributes can be placed `data` for extended functionality. +The following attributes can be placed inside `data` for extended functionality. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index b1c5ec976bc..daba937a936 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -51,16 +51,18 @@ Configuration variables: ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. -Another good source of this data would be the [Mi Flora](https://home-assistant.io/components/sensor.miflora/) component. +Another good source of this data would be the [Mi Flora](/components/sensor.miflora/) component. If the sensor data is within the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. ## Data Source -The main sources of the data will usually be a [MiFlora sensor](sensor.miflora) or a [MQTT sensor](sensor.mqtt) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). +The main sources of the data will usually be a [MiFlora sensor](/components/sensor.miflora/) or a [MQTT sensor](/components/sensor.miflora/) receiving the data from a [PlantGateway](https://github.com/ChristianKuehnel/plantgateway). If you want to get the date via a PlantGateway, this is a typical configuration for the MQTT sensors: + +{% raw %} ```yaml # Example configuration.yaml entry plant: @@ -99,5 +101,6 @@ sensor: state_topic: my_plant_topic value_template: '{{ value_json.brightness }}' ``` +{% endraw %} You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server. diff --git a/source/_components/recorder.markdown b/source/_components/recorder.markdown index 6531fdf71a0..ae8aae4a490 100644 --- a/source/_components/recorder.markdown +++ b/source/_components/recorder.markdown @@ -119,7 +119,7 @@ action: Not all Python bindings for the chosen database engine can be installed directly. This section contains additional details which should help you to get it working. -### {% linkable_title MariDB and MySQL %} +### {% linkable_title MariaDB and MySQL %} For MariaDB you may have to install a few dependencies. On the Python side we use the `mysqlclient`: diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 804c3bbe4aa..70c3bbd7f32 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -17,7 +17,7 @@ The `rss_feed_template` component can export any information from Home Assistant For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. ```yaml -# Example configuration.yml entry +# Example configuration.yaml entry rss_feed_template: # Accessible on /api/rss_template/garden # Example: https://localhost:8123/api/rss_template/garden diff --git a/source/_components/satel_integra.markdown b/source/_components/satel_integra.markdown index c882e71c626..4cbe5957bfd 100644 --- a/source/_components/satel_integra.markdown +++ b/source/_components/satel_integra.markdown @@ -13,7 +13,7 @@ ha_release: 0.54 ha_iot_class: "Local Push" --- -The `satel_integra` component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. +The `satel_integra` component will allow Home Assistant users who own a Satel Integra alarm panel to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a ETHM extension module that must be installed in the alarm. Compatible with ETHM-1 Plus module with firmware version > 2.00 (version 2.04 confirmed). There is currently support for the following device types within Home Assistant: diff --git a/source/_components/scene.vera.markdown b/source/_components/scene.vera.markdown new file mode 100644 index 00000000000..8cef7235eca --- /dev/null +++ b/source/_components/scene.vera.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Vera Scene" +description: "Instructions on how to integrate Vera Scenes into Home Assistant." +date: 2017-11-20 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: vera.png +ha_category: Scene +ha_iot_class: "Local Push" +ha_release: "0.60" +--- + +The `vera` platform allows you to control your [Vera](http://getvera.com/) scenes from within Home Assistant. + +They will be automatically discovered if the `vera` component is loaded. + +For more configuration information see the [Vera component](/components/vera/) documentation. + diff --git a/source/_components/sensor.ads.markdown b/source/_components/sensor.ads.markdown new file mode 100644 index 00000000000..0e65a67bb60 --- /dev/null +++ b/source/_components/sensor.ads.markdown @@ -0,0 +1,51 @@ +--- +layout: page +title: "ADS Sensor" +description: "Instructions how to integrate ADS numeric values into Home Assistant." +date: 2017-10-25 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Sensor +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The `ads` sensor platform allows reading the value of a numeric variable on your ADS device. The variable can be of type *INT*, *UINT* or *BYTE*. + +To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: ads + adsvar: GVL.temperature + unit_of_measurement: '°C' + adstype: int +``` + +{% configuration %} + adsvar: + required: true + description: The name of the variable which you want to access. + type: string + adstype: + required: false + description: The datatype of the ADS variable, possible values are int, uint, byte. + default: int + type: string + name: + required: false + description: An identifier for the sensor. + type: string + factor: + required: false + description: A factor that divides the stored value before displaying in Home Assistant. + default: 1 + type: integer +{% endconfiguration %} + +The *factor* can be used to implement fixed decimals. E.g., set *factor* to 100 if you want to display a fixed decimal value with two decimals. A variable value of `123` will be displayed as `1.23`. diff --git a/source/_components/sensor.alpha_vantage.markdown b/source/_components/sensor.alpha_vantage.markdown new file mode 100644 index 00000000000..3e78232b24b --- /dev/null +++ b/source/_components/sensor.alpha_vantage.markdown @@ -0,0 +1,53 @@ +--- +layout: page +title: "Alpha Vantage" +description: "Instructions how to setup Alpha Vantage within Home Assistant." +date: 2017-12-02 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: alpha_vantage.png +ha_category: Finance +ha_iot_class: "Cloud Polling" +featured: false +ha_release: "0.60" +--- + +The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. + +To enable the `alpha_vantage` platform, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: alpha_vantage + api_key: YOUR_API_KEY +``` + +{% configuration %} +api_key: + description: "The API Key from [Alpha Vantage](https://www.alphavantage.co)." + required: true + type: string +symbols: + description: List of stock market symbols for given companies. + required: false + type: string, list + default: GOOGL +{% endconfiguration %} + +## {% linkable_title Examples %} + +In this section you find some real life examples of how to use this sensor. + +### {% linkable_title Red Hat and Google %} + +```yaml +sensor: + - platform: alpha_vantage + symbols: + - RHT + - GOOGL +``` + diff --git a/source/_components/sensor.canary.markdown b/source/_components/sensor.canary.markdown new file mode 100644 index 00000000000..25efd713e39 --- /dev/null +++ b/source/_components/sensor.canary.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Canary Sensor" +description: "Instructions on how to integrate your Canary devices into Home Assistant." +date: 2017-12-07 22:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: canary.png +ha_category: Sensor +ha_release: "0.60" +ha_iot_class: "Cloud Polling" +--- + +The `canary` sensor platform allows you to integrate the sensors of your [Canary](https://canary.is) devices in Home Assistant. + +To add `canary` sensors to your installation, follow instructions in [Canary component](/components/canary/). + +Once loaded, you will see following sensors: + +* A sensor per camera that reports temperature. +* A sensor per camera that reports humidity. +* A sensor per camera that reports air quality. diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/sensor.coinmarketcap.markdown index f0d20afb171..63fde6b5ea5 100644 --- a/source/_components/sensor.coinmarketcap.markdown +++ b/source/_components/sensor.coinmarketcap.markdown @@ -28,12 +28,12 @@ sensor: currency: description: The cryptocurrency to use. required: false - type: string, list + type: string default: Bitcoin display_currency: description: The currency to display. required: false - type: string, list + type: string default: USD {% endconfiguration %} diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/sensor.dsmr.markdown index 326057c7996..a83d5a8ac0e 100644 --- a/source/_components/sensor.dsmr.markdown +++ b/source/_components/sensor.dsmr.markdown @@ -107,6 +107,11 @@ Optional configuration example for ser2net: # Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters 2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS ``` +or +```sh +# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv2.2 smart meters +2001:raw:600:/dev/ttyUSB0:9600 EVEN 1STOPBIT 7DATABITS XONXOFF LOCAL -RTSCTS +``` [HASSbian](/getting-started/installation-raspberry-pi-image/) users have to give dialout permission to the user `homeassistant`: diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown index cfa071e3079..7d8452595fc 100644 --- a/source/_components/sensor.eliqonline.markdown +++ b/source/_components/sensor.eliqonline.markdown @@ -28,7 +28,7 @@ sensor: Configuration variables: - **access_token** (*Required*): The Access Token for your account. -- **channel_id** (*Optional*): Channel ID (as integer) of your device. Needed if you have more than one device. +- **channel_id** (*Required*): Channel ID (as integer) of your device. - **name** (*Optional*): The name of the sensor, eg. the city. For details please check the [API documentation](https://my.eliq.se/knowledge/sv-SE/49-eliq-online/299-eliq-online-api). diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown index c96b3109910..5fb8c141f4a 100644 --- a/source/_components/sensor.fail2ban.markdown +++ b/source/_components/sensor.fail2ban.markdown @@ -14,10 +14,10 @@ ha_release: 0.57 --- -The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant front-end. +The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant frontend.

-Your system must have fail2ban installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the fail2ban log file. +Your system must have `fail2ban` installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the `fail2ban` log file.

To enable this sensor, add the following lines to your `configuration.yaml`: @@ -29,29 +29,38 @@ sensor: jails: - ssh - hass-iptables - file_path: /var/log/fail2ban.log ``` -Configuration variables: - -- **jails** (*Required*): List of configured jails you want to display (each jail is its own sensor). -- **name** (*Optional*): Name of the sensor. Defaults to `fail2ban`. -- **file_path** (*Optional*): Path to the fail2ban log. Defaults to `/var/log/fail2ban.log`. -- **scan_interval** (*Optional*): Used to limit how often log file is read and must be a positive integer (representing number of seconds to wait). Defaults to 120. +{% configuration %} +jails: + description: List of configured jails you want to display. + required: true + type: list +name: + description: Name of the sensor. + required: false + type: string + default: fail2ban +file_path: + description: Path to the fail2ban log. + required: false + type: string + default: /var/log/fail2ban.log +{% endconfiguration %} ### {% linkable_title Set up Fail2Ban %} -For most set-ups, you can follow [this tutorial](https://home-assistant.io/cookbook/fail2ban/) to set up fail2ban on your system. It will walk you through creating jails and filters, allowing you to monitor IPs that have been banned for too many failed ssh login attempts, as well as too many failed Home Assistant log in attempts. +For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `fail2ban` on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts. ### {% linkable_title Fail2Ban with Docker %}

-These steps assume you already have the Home Assistant docker running behind nginx and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag. +These steps assume you already have the Home Assistant docker running behind NGINX and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag.

-For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind nginx. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. +For those of us using Docker, the above tutorial may not be sufficient. The following steps specifically outline how to set up `fail2ban` and Home Assistant when running Home Assistant within a Docker behind NGINX. The setup this was tested on was an unRAID server using the [let's encrypt docker](https://github.com/linuxserver/docker-letsencrypt) from linuxserver.io. -#### Set http logger +#### {% linkable_title Set http logger %} In your `configuration.yaml` file, add the following to the `logger` component to ensure that Home Assistant prints failed login attempts to the log. @@ -61,7 +70,7 @@ logger: homeassistant.components.http.ban: warning ``` -#### Edit the `jail.local` file +#### {% linkable_title Edit the `jail.local` file %} Next, we need to edit the `jail.local` file that is included with the Let's Encrypt docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](https://home-assistant.io/cookbook/fail2ban/). @@ -76,7 +85,7 @@ logpath = /hass/home-assistant.log maxretry = 5 ``` -#### Create a filter for the Home Assistant jail +#### {% linkable_title Create a filter for the Home Assistant jail %} Now we need to create a filter for `fail2ban` so that it can properly parse the log. This is done with a `failregex`. Create a file called `hass.local` within the `filter.d` directory in `/mnt/user/appdata/letsencrypt/fail2ban` and add the following: @@ -93,7 +102,7 @@ ignoreregex = datepattern = ^%%Y-%%m-%%d %%H:%%M:%%S ``` -#### Map log file directories +#### {% linkable_title Map log file directories %} First, we need to make sure that fail2ban log can be passed to Home Assistant and that the Home Assistant log can be passed to fail2ban. When starting the Let's Encrypt docker, you need to add the following argument (adjust paths based on your setup): @@ -110,20 +119,20 @@ Now do the same for the Home Assistant docker, but this time we'll be mapping th ``` -#### Send client IP to Home Assistant +#### {% linkable_title Send client IP to Home Assistant %} By default, the IP address that Home Assistant sees will be that of the container (something like `172.17.0.16`). What this means is that for any failed login attempt, assuming you have correctly configured `fail2ban`, the Docker IP will be logged as banned, but the originating IP is still allowed to make attempts. We need `fail2ban` to recognize the originating IP to properly ban it. First, we have to add the following to the nginx configuration file located in `/mnt/user/appdata/letsencrypt/nginx/site-confs/default`. -``` +```bash proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ``` This snippet should be added within your Home Assistant server config, so you have something like the following: -``` +```bash server { ... location / { @@ -158,7 +167,7 @@ http: At this point, once the Let's Encrypt and Home Assistant dockers are restarted, Home Assistant should be correctly logging the originating IP of any failed login attempt. Once that's done and verified, we can move onto the final step. -#### Add the fail2ban sensor +#### {% linkable_title Add the fail2ban sensor %} Now that we've correctly set everything up for Docker, we can add our sensors to `configuration.yaml` with the following: @@ -174,7 +183,7 @@ Assuming you've followed all of the steps, you should have one fail2ban sensor, ### {% linkable_title Other debug tips %} -If, after following these steps, you're unable to get the fail2ban sensor working, here are some other steps you can take that may help: +If, after following these steps, you're unable to get the `fail2ban` sensor working, here are some other steps you can take that may help: - Add `logencoding = utf-8` to the `[hass-iptables]` entry - Ensure the `failregex` you added to `filter.d/hass.local` matches the output within `home-assistant.log` diff --git a/source/_components/sensor.gearbest.markdown b/source/_components/sensor.gearbest.markdown new file mode 100644 index 00000000000..31803acb752 --- /dev/null +++ b/source/_components/sensor.gearbest.markdown @@ -0,0 +1,72 @@ +--- +layout: page +title: "Gearbest" +description: "Instructions on how to integrate a Gearbest sensor into Home Assistant." +date: 2017-11-13 09:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: gearbest.png +ha_category: Sensor +ha_iot_class: "Cloud Polling" +ha_release: "0.60" +--- + + +The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. + +To enable this sensor, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: gearbest + currency: EUR + items: + - url: https://www.gearbest.com/.... +``` + +{% configuration %} +currency: + description: "The currency in which the products should be tracked. Currently supported: USD, EUR, GBP, AUD, CAD, CHF, HKD, CNY, NZD, JPY, RUB, BRL, CLP, NOK, DKK, SEK, KRW, ILS, COP, MXN, PEN, THB, IDR, UAH, PLN, INR, BGN, HUF, RON, TRY, CZK, HRK, MAD, AED, SAR, ZAR, SGD, MYR, TWD, RSD, NGN - if the currency could not be found in the conversion rate list, USD will be used as default. Either an ID or an URL must be present." + required: true + type: string +items: + description: List of products that should be tracked. + required: true + type: map + keys: + id: + description: The ID of the product. + required: false + type: int + url: + description: The URL of the product. + required: false + type: string + name: + description: The name of the item. If not set, it is parsed from the website. + required: false + type: string + currency: + description: Overwrite the currency for the current item. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Extended example %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: gearbest + currency: EUR + items: + - url: https://www.gearbest.com/3d-printers-3d-printer-kits/pp_779174.html?wid=21 + name: Creality CR-10 upgraded + currency: USD + - id: 779174 + name: Creality CR-10 upgraded #2 + currency: EUR +``` diff --git a/source/_components/sensor.hive.markdown b/source/_components/sensor.hive.markdown new file mode 100644 index 00000000000..3e7350e147c --- /dev/null +++ b/source/_components/sensor.hive.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Hive Sensor" +description: "Instructions on how to integrate Hive Sensors with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Sensor +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' sensor component can expose as a sensor the current online status of your Hive Hub. + + +

+Full configuration details can be found on the main [Hive component](/components/hive/) page. +

+ + diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown index 486b10e5f2a..6417ee5e0a5 100644 --- a/source/_components/sensor.luftdaten.markdown +++ b/source/_components/sensor.luftdaten.markdown @@ -45,16 +45,6 @@ sensor: required: false default: Luftdaten Sensor type: string - resource: - description: The URL of the API endpoint. Usually this has not to be changed. - required: false - default: https://api.luftdaten.info/v1/sensor/ - type: string - verify_ssl: - description: Verify SSL connection. - required: false - default: true - type: boolean monitored_conditions: description: A list of conditions you want to monitor. required: true @@ -65,8 +55,15 @@ sensor: P2: description: Show the particle sensors (particles 2.5 microns and below). temperature: - description: Display the temperature from a weather sensor. + description: Display the temperature from the sensor. humidity: - description: Display the humidity from a weather sensor. + description: Display the humidity from the sensor. + pressure: + description: Display the pressure from the sensor. {% endconfiguration %} +Not all sensors provide all conditions. Also, it's possible that the sensor values are not available all the time. To check what a sensor is publishing use `curl`: + +```bash +$ curl https://api.luftdaten.info/v1/sensor/[sensorid]/ +``` diff --git a/source/_components/sensor.miflora.markdown b/source/_components/sensor.miflora.markdown index 67f6ecd25f3..739ce1e2c0f 100644 --- a/source/_components/sensor.miflora.markdown +++ b/source/_components/sensor.miflora.markdown @@ -13,7 +13,7 @@ ha_release: 0.29 ha_iot_class: "Local Polling" --- -The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://www.aliexpress.com/item/Newest-Original-Xiaomi-Flora-Monitor-Digital-Plants-Flowers-Soil-Water-Light-Tester-Sensor-Monitor-for-Aquarium/32685750372.html) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. +The `miflora` sensor platform allows one to monitor to plants. The [Mi Flora plant sensor](https://xiaomi-mi.com/sockets-and-sensors/xiaomi-huahuacaocao-flower-care-smart-monitor/) is a small Bluetooth Low Energy device that monitors not only the moisture, but also light, temperature and conductivity. As only a single BLE device can be polled at the same time, the library implements locking to make sure this is the case. Start a scan to determine the MAC addresses of the sensor: diff --git a/source/_components/sensor.mqtt.markdown b/source/_components/sensor.mqtt.markdown index ca8be055d12..0fb3ab1175f 100644 --- a/source/_components/sensor.mqtt.markdown +++ b/source/_components/sensor.mqtt.markdown @@ -25,14 +25,40 @@ sensor: state_topic: "home/bedroom/temperature" ``` -Configuration variables: - -- **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values. -- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. -- **unit_of_measurement** (*Optional*): Defines the units of measurement of the sensor, if any. -- **expire_after** (*Optional*): Defines the number of seconds after the value expires if it's not updated. Default is 0 (=never expire). -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +{% configuration %} +state_topic: + description: The MQTT topic subscribed to receive sensor values. + required: true + type: string +name: + description: Name of the MQTT sensor. + required: false + type: string + default: MQTT Sensor +qos: + description: The maximum QoS level of the state topic. + required: false + type: int + default: 0 +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +expire_after: + description: Defines the number of seconds after the value expires if it's not updated. + required: false + type: int + default: 0 +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +force_update: + description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. + reqired: false + type: boolean + default: False +{% endconfiguration %} ## {% linkable_title Examples %} diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown index 9dc0e763c1c..f672ff07291 100644 --- a/source/_components/sensor.openweathermap.markdown +++ b/source/_components/sensor.openweathermap.markdown @@ -30,7 +30,7 @@ sensor: ``` {% configuration %} - apk_key: + api_key: description: Your API key for OpenWeatherMap. required: true type: string diff --git a/source/_components/sensor.rest.markdown b/source/_components/sensor.rest.markdown index 9f3da04c7ca..c496c7a0e0e 100644 --- a/source/_components/sensor.rest.markdown +++ b/source/_components/sensor.rest.markdown @@ -36,19 +36,65 @@ sensor: payload: '{ "device" : "heater" }' ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **method** (*Optional*): The method of the request. Default is `GET`. -- **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. -- **payload** (*Optional*): The payload to send with a POST request. Depends on the service, but usually formed as JSON. -- **name** (*Optional*): Name of the REST sensor. -- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. -- **verify_ssl** (*Optional*): Verify the certification of the endpoint. Default to `True`. -- **authentication** (*Optional*): Type of the HTTP authentication. `basic` or `digest`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **headers** (*Optional*): The headers for the requests. +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: The method of the request. + required: false + type: string + default: GET +name: + description: Name of the REST sensor. + required: false + type: string + default: REST Sensor +value_template: + description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value." + required: false + type: template +payload: + description: The payload to send with a POST request. Depends on the service, but usually formed as JSON. + required: false + type: string +verify_ssl: + description: Verify the certification of the endpoint. + required: false + type: boolean + default: True +unit_of_measurement: + description: Defines the units of measurement of the sensor, if any. + required: false + type: string +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +headers: + description: The headers for the requests. + required: false + type: list, string +json_attributes: + description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. + reqired: false + type: list, string +force_update: + description: Sends update events even if the value hasn't changed. Useful if you want to have meaningful value graphs in history. + reqired: false + type: boolean + default: False +{% endconfiguration %}

Make sure that the URL exactly matches your endpoint or resource. @@ -67,9 +113,7 @@ In this section you find some real life examples of how to use this sensor. ### {% linkable_title External IP address %} -You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their http://ip.jsontest.com/ endpoint. - -To display the IP address, the entry for a sensor in the `configuration.yaml` file will look like this. +You can find your external IP address using the service [JSON Test](http://www.jsontest.com) at their [http://ip.jsontest.com/](http://ip.jsontest.com/) URL. ```yaml sensor: @@ -83,8 +127,6 @@ sensor: The [glances](/components/sensor.glances/) sensor is doing the exact same thing for all exposed values. -Add something similar to the entry below to your `configuration.yaml` file: - ```yaml sensor: - platform: rest @@ -154,3 +196,63 @@ sensor: User-Agent: Home Assistant REST sensor ``` +### {% linkable_title Fetch multiple JSON values and present them as attibutes %} + +[JSON Test](http://www.jsontest.com) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/). + +{% raw %} +```yaml +sensor: + - platform: rest + name: JSON time + json_attributes: + - date + - milliseconds_since_epoch + resource: http://date.jsontest.com/ + value_template: '{{ value_json.time }}' + - platform: template + sensors: + date: + friendly_name: 'Date' + value_template: '{{ states.sensor.json_time.attributes["date"] }}' + milliseconds: + friendly_name: 'milliseconds' + value_template: '{{ states.sensor.json_time.attributes["milliseconds_since_epoch"] }}' +``` +{% endraw %} + +This sample fetches a weather report from [OpenWeatherMap](http://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/components/sensor.template/) sensors that monitor the attributes and present the values in a usable form. + +{% raw %} +```yaml +sensor: + - platform: rest + name: OWM_report + json_attributes: + - main + - weather + value_template: '{{ value_json["weather"][0]["description"].title() }}' + resource: http://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY + - platform: template + sensors: + owm_weather: + value_template: '{{ states.sensor.owm_report.attributes.weather[0]["description"].title() }}' + icon_template: '{{ "http://openweathermap.org/img/w/"+states.sensor.owm_report.attributes.weather[0]["icon"]+".png" }}' + entity_id: sensor.owm_report + owm_temp: + friendly_name: 'Outside temp' + value_template: '{{ states.sensor.owm_report.attributes.main["temp"]-273.15 }}' + unit_of_measurement: "°C" + entity_id: sensor.owm_report + owm_pressure: + friendly_name: 'Outside pressure' + value_template: '{{ states.sensor.owm_report.attributes.main["pressure"] }}' + unit_of_measurement: "hP" + entity_id: sensor.owm_report + owm_humidity: + friendly_name: 'Outside humidity' + value_template: '{{ states.sensor.owm_report.attributes.main["humidity"] }}' + unit_of_measurement: "%" + entity_id: sensor.owm_report +``` +{% endraw %} diff --git a/source/_components/sensor.sabnzbd.markdown b/source/_components/sensor.sabnzbd.markdown index ffa7310c2e1..47680c4e1af 100644 --- a/source/_components/sensor.sabnzbd.markdown +++ b/source/_components/sensor.sabnzbd.markdown @@ -40,6 +40,7 @@ sensor: - 'queue_remaining' - 'disk_size' - 'disk_free' + - 'queue_count' ``` Configuration variables: @@ -56,6 +57,7 @@ Configuration variables: - **queue_remaining**: Remaining elements in the queue - **disk_size**: Disk size of the storage location - **disk_free**: Free disk space at the storage location + - **queue_count**: Number of items in the queue Note that this will create the following sensors: @@ -66,6 +68,7 @@ Note that this will create the following sensors: - sensor.sabnzbd_left - sensor.sabnzbd_disk - sensor.sabnzbd_disk_free + - sensor.sabnzdb_queue_count ``` As always, you can determine the names of sensors by looking at the dev-state page `< >` in the web interface. diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown index 2ab59be72c6..41e77ec52be 100644 --- a/source/_components/sensor.scrape.markdown +++ b/source/_components/sensor.scrape.markdown @@ -45,6 +45,7 @@ In this section you find some real life examples of how to use this sensor. Ther The current release Home Assistant is published on [https://home-assistant.io/](https://home-assistant.io/) +{% raw %} ```yaml sensor: # Example configuration.yaml entry @@ -52,13 +53,15 @@ sensor: resource: https://home-assistant.io name: Release select: ".current-version h1" - value_template: '{% raw %}{{ value.split(":")[1] }}{% endraw %}' + value_template: '{{ value.split(":")[1] }}' ``` +{% endraw %} ### {% linkable_title Available implementations %} Get the counter for all our implementations from the [Component overview](/components/) page. +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -66,8 +69,9 @@ sensor: resource: https://home-assistant.io/components/ name: Home Assistant impl. select: 'a[href="#all"]' - value_template: '{% raw %}{{ value.split("(")[1].split(")")[0] }}{% endraw %}' + value_template: '{{ value.split("(")[1].split(")")[0] }}' ``` +{% endraw %} ### {% linkable_title Get a value out of a tag %} @@ -109,3 +113,20 @@ sensor: select: 'enclosure:nth-of-type(1)' attribute: url ``` + +### {% linkable_title Energy price %} + +This example tries to retrieve the price for electricity. + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: scrape + resource: https://elen.nu/timpriser-pa-el-for-elomrade-se3-stockholm/ + name: Electricity price + select: ".elspot-content" + value_template: '{{ value.split(" ")[0] }}' + unit_of_measurement: "öre/kWh" +``` +{% endraw %} diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/sensor.systemmonitor.markdown index 283e302217f..0cc01b8ade6 100644 --- a/source/_components/sensor.systemmonitor.markdown +++ b/source/_components/sensor.systemmonitor.markdown @@ -67,6 +67,7 @@ The table contains types and their argument to use in your `configuration.yaml` | memory_free | sensor.ram_available | | memory_use_percent | sensor.ram_used | | processor_use | sensor.cpu_used | +| disk_use | sensor.disk_used | ## {% linkable_title Linux specific %} diff --git a/source/_components/sensor.tahoma.markdown b/source/_components/sensor.tahoma.markdown new file mode 100644 index 00000000000..80cf6bc4ebb --- /dev/null +++ b/source/_components/sensor.tahoma.markdown @@ -0,0 +1,21 @@ +--- +layout: page +title: "Tahoma Sensor" +description: "Instructions how to integrate Tahoma sensors into Home Assistant." +date: 2017-07-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tahoma.png +ha_category: Cover +ha_release: 0.59 +--- + +To use your tahoma sensors in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +sensor: + platform: tahoma +``` diff --git a/source/_components/sensor.temper.markdown b/source/_components/sensor.temper.markdown index 37229ebed40..227cc42f80a 100644 --- a/source/_components/sensor.temper.markdown +++ b/source/_components/sensor.temper.markdown @@ -22,18 +22,30 @@ sensor: - platform: temper ``` -Configuration option: - -- **name** (*Optional*): The name you would like to give the sensor in Home Assistant. -- **scale** (*Optional*): The scale for the sensor. -- **offset** (*Optional*): The offset to fix reported vales. +{% configuration %} +offset: + description: The offset to fix reported vales. + required: false + type: int + default: o +scale: + description: The scale for the sensor. + required: false + type: int + default: 1 +name: + description: The name to use when displaying this switch. + required: false + type: string + default: myStrom Switch +{% endconfiguration %} Since some of these sensors consistently show higher temperatures the scale and offset values can be used to fine-tune your sensor. The calculation follows the formula `scale * sensor value + offset`. The TEMPer sensors can only be accessed as root by default. To fix the USB permissions on your system create the file `/etc/udev/rules.d/99-tempsensor.rules` and add the following line to it: -``` +```text SUBSYSTEMS=="usb", ACTION=="add", ATTRS{idVendor}=="0c45", ATTRS{idProduct}=="7401", MODE="666" ``` diff --git a/source/_components/sensor.template.markdown b/source/_components/sensor.template.markdown index 0811978b617..c5d5aba6cee 100644 --- a/source/_components/sensor.template.markdown +++ b/source/_components/sensor.template.markdown @@ -27,6 +27,7 @@ sensor: sensors: solar_angle: friendly_name: "Sun angle" + entity_id: sun.sun unit_of_measurement: 'degrees' value_template: "{{ states.sun.sun.attributes.elevation }}" diff --git a/source/_components/sensor.yahoo_finance.markdown b/source/_components/sensor.yahoo_finance.markdown index de79cc87bd3..8a55a78dda7 100644 --- a/source/_components/sensor.yahoo_finance.markdown +++ b/source/_components/sensor.yahoo_finance.markdown @@ -14,6 +14,10 @@ featured: false ha_release: 0.29 --- +

+ This sensor doesn't work anymore as [Yahoo!](https://yahoo.uservoice.com/forums/382977-finance/suggestions/32103877-yahoo-stock-quote-api-please-bring-back) decommissioned the service in early November 2017. A repleacement is the [`alpha_vantage` sensor](/components/sensor.alpha_vantage/). +

+ The `yahoo_finance` platform uses [Yahoo Finance](https://finance.yahoo.com/) to monitor the stock market. To enable the `yahoo_finance` platform, add the following lines to your `configuration.yaml` file: diff --git a/source/_components/skybell.markdown b/source/_components/skybell.markdown index b160a879231..4a7a2cfdac6 100644 --- a/source/_components/skybell.markdown +++ b/source/_components/skybell.markdown @@ -13,11 +13,11 @@ ha_release: 0.56 ha_iot_class: "Cloud Polling" --- -The `skybell` implementation allows you to integrate your [Skybell.com](https://skybell.com) doorbells in Home Assistant. +The `skybell` implementation allows you to integrate your [Skybell.com](http://www.skybell.com/) doorbells in Home Assistant. Currently only the Skybell HD is supported by this platform. -To enable devices set up with your [Skybell.com](https://skybell.com/) account, add the following to your `configuration.yaml` file: +To enable devices set up with your [Skybell.com](http://www.skybell.com/) account, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -26,9 +26,15 @@ skybell: password: secret ``` -Configuration variables: - -- **username** (*Required*): The username for accessing your Skybell account. -- **password** (*Required*): The password for accessing your Skybell account. +{% configuration %} +username: + description: The username for accessing your Skybell account. + required: true + type: string +password: + description: The password for accessing your Skybell account. + required: true + type: string +{% endconfiguration %} Finish your configuration by visiting the [Skybell binary sensor](/components/binary_sensor.skybell/), [Skybell camera](/components/camera.skybell/), [Skybell light](/components/light.skybell/), [Skybell sensor](/components/sensor.skybell/), or [Skybell switch](/components/switch.skybell/) documentation. diff --git a/source/_components/snips.markdown b/source/_components/snips.markdown index ef4b7d04295..642faabf93d 100644 --- a/source/_components/snips.markdown +++ b/source/_components/snips.markdown @@ -12,26 +12,40 @@ ha_category: Voice ha_release: 0.48 --- -The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on Privacy. It runs 100% on-device, and does not require an Internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. +The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. + +The latest documentation can be found here: [Snips Platform Documentation](https://github.com/snipsco/snips-platform-documentation/wiki). ![Snips Modules](/images/screenshots/snips_modules.png) -Snips takes voice or text as input, and produces *intents* as output, which are explicit representations of an intention behind an utterance, and which can subsequently be used by Home Assistant to perform appropriate actions. +Snips takes voice or text as input and produces *intents* as output, which are explicit representations of an intention behind an utterance and which can subsequently be used by Home Assistant to perform appropriate actions. ![Snips Modules](/images/screenshots/snips_nlu.png) ## {% linkable_title The Snips Voice Platform %} -### Installation +### {% linkable_title Installation %} -The Snips Voice Platform is installed on Raspberry Pi with the following command: +The Snips Voice Platform is installed as a Docker image on Raspberry Pi with the following command: -```sh +```bash (pi) $ curl https://install.snips.ai -sSf | sh ``` -### Creating an assistant +Snips can also be installed on a Debian/Ubuntu machine as well: + +```bash +$ sudo apt-get update +$ sudo apt-get install -y dirmngr +$ sudo bash -c 'echo "deb https://debian.snips.ai/$(lsb_release -cs) stable main" > /etc/apt/sources.list.d/snips.list' +$ sudo apt-key adv --keyserver pgp.mit.edu --recv-keys F727C778CCB0A455 + +$ sudo apt-get update +$ sudo apt-get install -y snips-platform-voice +``` + +### {% linkable_title Creating an assistant %}
@@ -39,26 +53,34 @@ The Snips Voice Platform is installed on Raspberry Pi with the following command Snips assistants are created via the [Snips Console](https://console.snips.ai). Once trained, the assistant should be downloaded and copied to the Raspberry Pi: -```sh +```bash $ scp assistantproj_XXX.zip pi@pi_hostname:/home/pi/assistant.zip ``` and installed locally via the `snips-install-assistant` helper script: -```sh +```bash (pi) $ sudo snips-install-assistant assistant.zip ``` -### Running Snips +### {% linkable_title Running Snips %} Make sure that a microphone is plugged to the Raspberry Pi. If you are having trouble setting up audio, we have written a guide on [Raspberry Pi Audio Configuration](https://github.com/snipsco/snips-platform-documentation/wiki/1.-Setup-the-Snips-Voice-Platform-on-your-Raspberry-Pi#configuring-the-audio). Start the Snips Voice Platform using the `snips` command: -```sh +Raspberry Pi: + +```bash (pi) $ snips ``` +Debian/Ubuntu: + +```bash +$ sudo systemctl start "snips-*" +``` + Snips is now ready to take voice commands from the microphone. To trigger the listening, simply say > Hey Snips @@ -67,23 +89,32 @@ followed by a command, e.g. > Set the lights to green in the living room -We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the `hermes/nlu/intentParsed` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml`, as explained below. +We should see the transcribed phrase in the logs, as well as a properly parsed intent. The intent is published on MQTT, on the `hermes/intent/` topic. The Snips Home Assistant component subscribes to this topic, and handles the intent according to the rules defined in `configuration.yaml`, as explained below. -#### Optional: specifying an external MQTT broker +#### {% linkable_title Optional: specifying an external MQTT broker %} By default, Snips runs its own MQTT broker. But we can also tell Snips to use an external broker by specifying this when launching Snips. In this case, instead of running the `snips` command above (which assumes we are using the internal MQTT broker), we use the full launch command with explicitly specified parameters (replace `MQTT_BROKER_IP` and `MQTT_BROKER_PORT` with appropriate values): +Raspberry Pi: + ```sh -$ docker run -t --rm --name snips --log-driver none -v /home/pi/.asoundrc:/root/.asoundrc -v /opt/snips/config:/opt/snips/config --privileged -v /dev/snd:/dev/snd snipsdocker/platform --mqtt MQTT_BROKER_IP:MQTT_BROKER_PORT +$ docker run -t --rm --name snips --log-driver none \ + -v /home/pi/.asoundrc:/root/.asoundrc \ + -v /opt/snips/config:/opt/snips/config \ + --privileged -v /dev/snd:/dev/snd snipsdocker/platform \ + --mqtt MQTT_BROKER_IP:MQTT_BROKER_PORT ``` +Debian/Ubuntu: + +Edit the `/etc/snips.toml` file. See snips documentation for more information on configuring this For more details on launch options, check the documentation on [Snips Platform Commands](https://github.com/snipsco/snips-platform-documentation/wiki/6.--Learn-more:-Platform-Commands#using-a-custom-mqtt-bus). -## Home Assistant configuration +## {% linkable_title Home Assistant configuration %} -### Specifying the MQTT broker +### {% linkable_title Specifying the MQTT broker %} -Messages between Snips and Home Assistant are passed via MQTT. We must tell Home Assistant which MQTT broker to use by adding the following entry to `configuration.yaml`: +Messages between Snips and Home Assistant are passed via MQTT. We must tell Home Assistant which [MQTT broker](/docs/mqtt/) to use by adding the following entry to the `configuration.yaml` file: ```yaml mqtt: @@ -98,10 +129,14 @@ mqtt: broker: 127.0.0.1 port: 9898 ``` -### Triggering actions + +Alternatively, MQTT can be configured to bridge messages between servers if using a custom MQTT broker such as `mosquitto`. + +### {% linkable_title Triggering actions %} In Home Assistant, we trigger actions based on intents produced by Snips using the [`intent_script`](/components/intent_script) component. For instance, the following block handles `ActivateLightColors` intents (included in the Snips IoT intent bundle) to change light colors: +{% raw %} ```yaml snips: @@ -110,6 +145,29 @@ intent_script: action: - service: light.turn_on data_template: - entity_id: light.{% raw %}{{ objectLocation | replace(" ","_") }}{% endraw %} - color_name: {% raw %}{{ objectColor }}{% endraw %} + entity_id: light.{{ objectLocation | replace(" ","_") }} + color_name: {{ objectColor }} ``` +{% endraw %} + +The variables that can be used in the template are of the form 'slotName = value'. + +Snips intents that utilize builtin slot types will contain extended information along with the value and can be exposed using this format: + +{% raw %} +```yaml +SetTimer: + speech: + type: plain + text: weather + action: + service: script.set_timer + data_template: + name: "{{ timer_name }}" + duration: "{{ timer_duration }}" + seconds: "{{ slots.timer_duration.value.seconds }}" + minutes: "{{ slots.timer_duration.value.minutes }}" + hours: "{{ slots.timer_duration.value.hours }}" +``` +{% endraw %} + diff --git a/source/_components/switch.ads.markdown b/source/_components/switch.ads.markdown new file mode 100644 index 00000000000..28396413292 --- /dev/null +++ b/source/_components/switch.ads.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "ADS Switch" +description: "Instructions on how to set up ADS switches within Home Assistant." +date: 2017-10-25 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: beckhoff.png +ha_category: Switch +ha_release: "0.60" +ha_iot_class: "Local Push" +--- + +The `ads` switch platform accesses a boolean variable on the connected ADS device. The variable is identified by its name. + +To use your ADS device, you first have to set up your [ADS hub](/components/ads/) and then add the following to your `configuration.yaml` +file: + +```yaml +# Example configuration.yaml entry +switch: + - platform: ads + adsvar: .global_bool +``` + +{% configuration %} + adsvar: + required: true + description: The name of the variable which you want to access on the ADS device. + type: string + name: + required: false + description: An identifier for the switch in the frontend. + type: string +{% endconfiguration %} diff --git a/source/_components/switch.hive.markdown b/source/_components/switch.hive.markdown new file mode 100644 index 00000000000..8f7d8677221 --- /dev/null +++ b/source/_components/switch.hive.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Hive Switch" +description: "Instructions on how to integrate Hive Plugs with Home Assistant." +date: 2017-09-24 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: hive.png +ha_category: Switch +ha_release: 0.59 +ha_iot_class: "Cloud Polling" +--- + + +The 'hive' switch component integrates your Hive plugs into Home Assistant, enabling control of your devices. + +The Hive switch component supports the following Hive products: +- **Hive Active Plug** + + +

+Full configuration details can be found on the main [Hive component](/components/hive/) page. +

+ + diff --git a/source/_components/switch.hook.markdown b/source/_components/switch.hook.markdown index 42903c50c7a..3ba23b8c19a 100644 --- a/source/_components/switch.hook.markdown +++ b/source/_components/switch.hook.markdown @@ -24,15 +24,17 @@ Configure with either your username/password or your API token for the official ```yaml # Example configuration.yaml entry -- platform: hook - username: - password: !secret hook +switch: + - platform: hook + username: + password: !secret hook ``` Or ```yaml # Example configuration.yaml entry -- platform: hook - token: +switch: + - platform: hook + token: ``` Extra debug logging is available, if you need it. diff --git a/source/_components/switch.mystrom.markdown b/source/_components/switch.mystrom.markdown index 7c81252bfc9..6fafcbbb783 100644 --- a/source/_components/switch.mystrom.markdown +++ b/source/_components/switch.mystrom.markdown @@ -53,3 +53,20 @@ or change its state: $ curl -G -X GET http://IP_ADDRESS/relay -d 'state=1' ``` +### {% linkable_title Get the current power consumption %} + +The switch is measuring the current power consumption. To expose this as a sensor use a [`template` sensor](/components/sensor.template/). + +{% raw %} +```yaml +# Example configuration.yaml entry +sensor: + - platform: template + sensors: + power: + friendly_name: "Current Power" + unit_of_measurement: "W" + value_template: "{{ states.switch.office.attributes.current_power_w }}" +``` +{% endraw %} + diff --git a/source/_components/switch.rest.markdown b/source/_components/switch.rest.markdown index d9e22107b6e..776882cd54b 100644 --- a/source/_components/switch.rest.markdown +++ b/source/_components/switch.rest.markdown @@ -25,16 +25,50 @@ switch: resource: http://IP_ADDRESS/ENDPOINT ``` -Configuration variables: - -- **resource** (*Required*): The resource or endpoint that contains the value. -- **name** (*Optional*): Name of the REST switch. -- **method** (*Optional*): HTTP method to use (`post` or `put`). Defaults to `post`. -- **username** (*Optional*): The username for accessing the REST endpoint. -- **password** (*Optional*): The password for accessing the REST endpoint. -- **body_on** (*Optional*): The body of the POST request that commands the switch to become enabled. Default is "ON". This value can be a [template](/topics/templating/). -- **body_off** (*Optional*): The body of the POST request that commands the switch to become disabled. Default is "OFF". This value can also be a [template](/topics/templating/). -- **is_on_template** (*Optional*): A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches . +{% configuration %} +resource: + description: The resource or endpoint that contains the value. + required: true + type: string + default: string +method: + description: "The method of the request. Supported `post` or `put`." + required: false + type: string + default: POST +name: + description: Name of the REST Switch. + required: false + type: string + default: REST Binary Switch +timeout: + description: Timeout for the request. + required: false + type: int + default: 10 +body_on: + description: "The body of the POST request that commands the switch to become enabled. This value can be a [template](/topics/templating/)." + required: false + type: string + default: ON +body_off: + description: "The body of the POST request that commands the switch to become disabled. This value can also be a [template](/topics/templating/)." + required: false + type: string + default: OFF +is_on_template: + description: "A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches." + required: false + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string +{% endconfiguration %}

Make sure that the URL matches exactly your endpoint or resource. diff --git a/source/_components/switch.rfxtrx.markdown b/source/_components/switch.rfxtrx.markdown index 73902df97f2..434a4c45639 100644 --- a/source/_components/switch.rfxtrx.markdown +++ b/source/_components/switch.rfxtrx.markdown @@ -51,7 +51,7 @@ Configuration variables: - **fire_event** (*Optional*): Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations.

-This component and the [rfxtrx binary sensor](/components/binary_sensor/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`. +This component and the [rfxtrx binary sensor](/components/binary_sensor.rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`.

diff --git a/source/_components/switch.tplink.markdown b/source/_components/switch.tplink.markdown index f54235fede7..ee56f356880 100644 --- a/source/_components/switch.tplink.markdown +++ b/source/_components/switch.tplink.markdown @@ -32,9 +32,22 @@ switch: host: IP_ADDRESS ``` -Configuration variables: - -- **host** (*Required*): The IP address of your TP-Link switch, eg. `192.168.1.32`. -- **name** (*Optional*): The name to use when displaying this switch. +{% configuration %} +name: + description: The name to use when displaying this switch. + required: false + type: string + default: Random Sensor +host: + description: "The IP address of your TP-Link switch, eg. `192.168.1.32`." + required: true + type: string +enable_leds: + description: If the LEDs on the switch (WiFi and power) should be lit. + required: false + type: boolean + default: true +{% endconfiguration %} + diff --git a/source/_components/tahoma.markdown b/source/_components/tahoma.markdown new file mode 100644 index 00000000000..e6e272d8b48 --- /dev/null +++ b/source/_components/tahoma.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Tahoma" +description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." +date: 2017-07-18 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tahoma.png +ha_category: Hub +ha_release: 0.59 +--- + + +The `Tahoma` component platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds actually covers and the sun sensor from tahoma platform. + +To use your Tahoma devices in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +tahoma: + username: YOUR_USERNAME + password: YOUR_PASSWORD + exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent] +``` + +{% configuration %} +username: + description: Username for tahomalink.com + required: true + type: string +password: + description: Password for tahomalink.com + required: true + type: string +exclude: + description: Excludes devices + required: false + type: list +{% endconfiguration %} \ No newline at end of file diff --git a/source/_components/telegram_bot.broadcast.markdown b/source/_components/telegram_bot.broadcast.markdown index d743f1d8916..ee9d4032328 100644 --- a/source/_components/telegram_bot.broadcast.markdown +++ b/source/_components/telegram_bot.broadcast.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.48 --- diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/telegram_bot.polling.markdown index a938dca5c5d..15c4d26eb0b 100644 --- a/source/_components/telegram_bot.polling.markdown +++ b/source/_components/telegram_bot.polling.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.42 --- diff --git a/source/_components/telegram_bot.webhooks.markdown b/source/_components/telegram_bot.webhooks.markdown index 8b88dcb77ae..7821b03c009 100644 --- a/source/_components/telegram_bot.webhooks.markdown +++ b/source/_components/telegram_bot.webhooks.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: telegram.png -ha_category: Telegram chatbot +ha_category: Notifications ha_release: 0.42 --- diff --git a/source/_components/tellduslive.markdown b/source/_components/tellduslive.markdown index f273af65e74..735593a0b19 100644 --- a/source/_components/tellduslive.markdown +++ b/source/_components/tellduslive.markdown @@ -13,25 +13,24 @@ featured: false ha_release: 0.11 --- -The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick connected gear at home. +The `tellduslive` component let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. -To get started using Telldus Live, you will have to obtain developer keys from the [developer page](https://api.telldus.com/keys/index). +

+If you are upgrading from 0.58 or older, you need to remove all Telldus configuration from your `configuration.yaml` file before continuing. +

-To integrate your Telldus Live with Home Assistant, add the following section to your `configuration.yaml` file: +Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/components/discovery/) component is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. + +To manually integrate your Telldus Live with Home Assistant, e.g. if your device is on another network or in another location, add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry tellduslive: - public_key: ABCDEFGHJKLMNOPQRSTUVXYZ - private_key: ABCDEFGHJKLMNOPQRSTUVXYZ - token: ABCDEFGHJKLMNOPQRSTUVXYZ - token_secret: ABCDEFGHJKLMNOPQRSTUVXYZ ``` Configuration variables: -- **public_key** (*Required*): The public key for the Telldus Live service. -- **private_key** (*Required*): The private key for the Telldus Live service. -- **token** (*Required*): The token for the Telldus Live service. -- **token_secret** (*Required*): The token secret for the Telldus Live service. +- **host** (*Optional*): Host address to Tellstick Net or Tellstick ZNet for Local API, only useful when automatic discovery is not enabled. +- **update_interval** (*Optional*): Interval (in seconds) for polling the Telldus Live server (or the local server). +The component will offer configuration through the Home Assistant user interface where it will let you associate it with your Telldus Live account. diff --git a/source/_components/tellstick.markdown b/source/_components/tellstick.markdown index 652e77a15c4..de69aaffc3b 100644 --- a/source/_components/tellstick.markdown +++ b/source/_components/tellstick.markdown @@ -21,9 +21,15 @@ To get started, add the devices to your `configuration.yaml` file. tellstick: ``` +```yaml +# Example configuration.yaml entry for hass.io with TellStick add-on +tellstick: + host: core-tellstick + port: [50800, 50801] +``` 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 and light to try to send each signal repeatedly. - **host** (*Optional*): If you run tellstick on a other server or with a hass.io add-on. -- **port** (*Optional*): If needed with host config option. +- **port** (*Optional*): If needed with host config option. Must be port pair, for example `[50800, 50801]`. diff --git a/source/_components/tts.baidu.markdown b/source/_components/tts.baidu.markdown new file mode 100644 index 00000000000..e8499742fd8 --- /dev/null +++ b/source/_components/tts.baidu.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "Baidu Text-to-Speech" +description: "Instructions how to setup Baidu TTS with Home Assistant." +date: 2017-11-21 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: baiducloud.png +ha_category: Text-to-speech +ha_release: 0.59 +--- + +The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. + +To get started, add the following lines to your `configuration.yaml`: + +```yaml +#Example configuration.yaml entry +tts: + - platform: baidu + app_id: YOUR_APPID + api_key: YOUR_APIKEY + secret_key: YOUR_SECRETKEY +``` + +{% configuration %} +app_id: + description: The App ID for the use this service, must be already registered on Baidu. + required: true + type: string +api_key: + description: The API key from Baidu. + required: true + type: string +secret_key: + description: The secret key from Baidu. + required: true + type: string +speed: + description: Audio speed from 0 to 9. + required: false + type: int + default: 5 +pitch: + description: Audio pitch from 0 to 9. + required: false + type: int + default: 5 +volume: + description: Audio volume from 0 to 15. + required: false + type: int + default: 5 +person: + description: Voice type. You choose one from 0, 1, 3 or 4. + required: false + type: int + default: 0 +{% endconfiguration %} + diff --git a/source/_components/tts.google.markdown b/source/_components/tts.google.markdown index 50321b01045..cbed90dadad 100644 --- a/source/_components/tts.google.markdown +++ b/source/_components/tts.google.markdown @@ -24,7 +24,8 @@ tts: Configuration variables: -- **language** (*Optional*): The language to use. Defaults to `en`. +- **language** (*Optional*): The language to use. Defaults to `en`. + - [Complete list of supported languages](https://cloud.google.com/speech/docs/languages). A full configuration sample: @@ -35,7 +36,7 @@ tts: language: 'de' ``` -If you are using SSL certificate or Docker, you may need to add the `base_url` configuration variable to your `html` component as follows: +If you are using SSL certificate or Docker, you may need to add the `base_url` configuration variable to your `http` component as follows: ```yaml #Example configuration.yaml entry diff --git a/source/_components/tts.microsoft.markdown b/source/_components/tts.microsoft.markdown index b55acbd0fac..036dfed524e 100644 --- a/source/_components/tts.microsoft.markdown +++ b/source/_components/tts.microsoft.markdown @@ -2,7 +2,7 @@ layout: page title: "Microsoft Text-to-Speech" description: "Instructions how to setup Microsoft Text-to-Speech with Home Assistant." -date: 2017-10-23 11:00 +date: 2017-11-07 12:00 sidebar: true comments: false sharing: true @@ -27,10 +27,13 @@ tts: Configuration variables: - **api_key** (*Required*): Your API key. -- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. -- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female` -- **type** (*Optional*): The voice type you want to use. Accepted values are listed in the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS` - +- **language** (*Optional*): The language to use. Defaults to `en-us`. Accepted values are listed in the documentation mentioned below. Note that if you set the language to anything other than the default of `en-us`, you will need to specify a matching voice type as well. +- **gender** (*Optional*): The gender you would like to use for the voice. Accepted values are `Female` and `Male`. Defaults to `Female`. +- **type** (*Optional*): The voice type you want to use. Accepted values are listed as the service name mapping [in the documentation](https://docs.microsoft.com/en-us/azure/cognitive-services/Speech/api-reference-rest/bingvoiceoutput). Defaults to `ZiraRUS`. +- **rate** (*Optional*): Change the rate of speaking in percentage. Example values: `25`, `50`. Defaults to `0` (no change). +- **volume** (*Optional*): Change the volume of the output in percentage. Example values: `-20`, `70`. Defaults to `0` (no change). +- **pitch** (*Optional*): Change the pitch of the output. Example values: `high`. Defaults to `default` (no change). +- **contour** (*Optional*): Change the contour of the output in percentages. This overrides the pitch setting. See the [W3 SSML specification](http://www.w3.org/TR/speech-synthesis/#pitch_contour) for what it does. Example value: `(0,0) (100,100)`. A full configuration sample including optional configuration variables: @@ -39,7 +42,11 @@ A full configuration sample including optional configuration variables: tts: - platform: microsoft api_key: XXXXXXXXX - language: en-us - gender: male - type: BenjaminRUS + language: en-gb + gender: Male + type: George, Apollo + rate: 20 + volume: -50 + pitch: high + contour: (0, 0) (100, 100) ``` diff --git a/source/_components/updater.markdown b/source/_components/updater.markdown index 86991b94d52..4a5b9777b35 100644 --- a/source/_components/updater.markdown +++ b/source/_components/updater.markdown @@ -11,7 +11,7 @@ logo: home-assistant.png ha_category: Other --- -The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. +The `updater` component will check daily for new releases. It will show a badge in the frontend if a new version is found. As [Hass.io](/hassio/) has it's own schedule for release it doesn't make sense to use this component on Hass.io. The updater component will also collect basic information about the running Home Assistant instance and its environment. The information includes the current Home Assistant version, the time zone, Python version and operating system information. No identifiable information (i.e., IP address, GPS coordinates, etc.) will ever be collected. If you are concerned about your privacy, you are welcome to scrutinize the Python [source code](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/updater.py#L91). For further information about the Updater's data, please check the [detailed overview](/docs/backend/updater/). diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 6fa7f05a2a5..e14e1506578 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -104,7 +104,7 @@ Enter remote control mode, make one move, stop, and exit remote control mode. ## {% linkable_title Attributes %} In addition to [all of the attributes provided by the `vacuum` component](https://home-assistant.io/components/vacuum/#attributes), -(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and +(`battery_icon`, `cleaned_area`, `fan_speed`, `fan_speed_list`, `status`, and `params`), the `xiaomi` platform introduces specific attributes. These are: - `cleaning_time` @@ -121,7 +121,7 @@ The following table shows the units of measurement for each attribute: | Attribute | Unit of measurement | Description | |---------------------------|---------------------|-------------------------------------------------------| | `do_not_disturb` | | DND mode on / off | -| `cleaning_time` | minutes | Last / actual cleaning time in minutes | +| `cleaning_time` | minutes | Last / actual cleaning time in minutes | | `cleaned_area` | square meter | Last / actual cleaned area in square meters | | `main_brush_left` | hours | Hours left until a change of the main brush is needed | | `side_brush_left` | hours | Hours left until a change of the side brush is needed | @@ -151,6 +151,36 @@ To fetch the token follow these instructions depending on your mobile phone plat 6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. 8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. +#### {% linkable_title Linux and Android (not rooted) %} + +Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. + +Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-mirobo` to be installed correctly. + +```bash +$ sudo apt-get install libffi-dev libssl-dev +``` + +If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. + +```bash +$ sudo su -s /bin/bash homeassistant +$ source /srv/homeassistant/bin/activate +``` + +To fetch the token follow these instructions depending on your mobile phone platform. + +1. Configure the robot with the Mi-Home app. +2. Enable developer mode, USB debugging and plug the Android phone into the computer. +3. Get ADB e.g. `apt-get install android-tools-adb` or `apt-get install adb` +4. `adb devices` should list your device. Consult ADB manual if necessary. +5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone) +6. Download the 'ADB Backup Extractor' from [here](https://sourceforge.net/projects/adbextractor/files/latest/download) +7. Extract the data from the backup: `java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar` (enter the password, if prompted) +8. Untar the unpacked data: `tar -xvf unpacked.tar` +9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name = "Mi Robot Vacuum";'` returns the token for your Xiaomi vacuum bot. + + #### {% linkable_title Linux and Android (rooted!) %} Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. diff --git a/source/_components/vera.markdown b/source/_components/vera.markdown index 670d0292c84..264f39157f7 100644 --- a/source/_components/vera.markdown +++ b/source/_components/vera.markdown @@ -14,7 +14,7 @@ ha_release: pre 0.7 The [Vera](http://getvera.com) hub is a controller mainly connecting to Z-Wave devices. -Switches, Lights (inc Dimmers), Locks, Sensors and Binary sensors are supported - and will be automatically added when HA connects to your Vera controller. +Switches, Lights (inc Dimmers), Locks, Sensors, Binary sensors, and Scenes are supported - and will be automatically added when HA connects to your Vera controller. To use Vera devices in your installation, add the following to your configuration.yaml file using the IP and port number of your Vera controller: diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown index acd511a037c..20b8fc51106 100644 --- a/source/_components/volvooncall.markdown +++ b/source/_components/volvooncall.markdown @@ -65,4 +65,5 @@ Configuration variables: - **service_url** (*Optional*): The service URL to use for Volvo On Call. Normally not neccessary to specify. - **name** (*Optional*): Make it possible to provide a name for the vehicles. - **resources** (*Optional*): A list of resources to display (defaults to all available). +- **scandinavian_miles** (*Optional*): If set to yes, Scandinavian miles ("mil") are used for distances and fuel range (defaults to no). diff --git a/source/_components/weather.ecobee.markdown b/source/_components/weather.ecobee.markdown new file mode 100644 index 00000000000..0f328309630 --- /dev/null +++ b/source/_components/weather.ecobee.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Ecobee Weather" +description: "Instructions how to setup the Ecobee weather within Home Assistant." +date: 2017-11-29 21:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: ecobee.png +ha_category: Weather +ha_release: 0.59 +ha_iot_class: "Local Push" +--- + +To get your Ecobee weather component working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/). diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown index 2e132faa878..2b142c434c4 100644 --- a/source/_components/xiaomi_aqara.markdown +++ b/source/_components/xiaomi_aqara.markdown @@ -56,7 +56,7 @@ To enable {{ page.title }} in your installation, add the following to your `conf ### {% linkable_title One Gateway %} ```yaml -# You can leave mac empty if you only have one gateway. +# You can leave MAC empty if you only have one gateway. xiaomi_aqara: discovery_retry: 5 gateways: @@ -66,7 +66,7 @@ xiaomi_aqara: ### {% linkable_title Multiple Gateways %} ```yaml -# 12 characters mac can be obtained from the gateway. +# 12 characters MAC can be obtained from the gateway. xiaomi_aqara: gateways: - mac: xxxxxxxxxxxx @@ -106,7 +106,7 @@ xiaomi_aqara: type: string default: any host: - description: The host / ip address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. + description: The host/IP address of the gateway. If this parameter is used the multicast discovery of the gateway is skipped. required: false type: string {% endconfiguration %} @@ -115,7 +115,7 @@ xiaomi_aqara: The gateway provides the following services: -#### {% linkable_title Service xiaomi_aqara.play_ringtone %} +#### {% linkable_title Service `xiaomi_aqara.play_ringtone` %} Play a specific ringtone. The version of the gateway firmware must be `1.4.1_145` at least. Take a look at the examples below. @@ -155,7 +155,7 @@ Allowed values of the `ringtone_id` are: - 29 - Thinker - Custom ringtones (uploaded by the Mi Home app) starting from 10001 -#### {% linkable_title Service xiaomi_aqara.stop_ringtone %} +#### {% linkable_title Service `xiaomi_aqara.stop_ringtone` %} Stops a playing ringtone immediately. @@ -163,13 +163,13 @@ Stops a playing ringtone immediately. |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.add_device %} +#### {% linkable_title Service `xiaomi_aqara.add_device` %} | Service data attribute | Optional | Description | |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.add_device %} +#### {% linkable_title Service `xiaomi_aqara.add_device` %} Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new device can be added afterwards by pressing the pairing button once. @@ -177,7 +177,7 @@ Enables the join permission of the Xiaomi Aqara Gateway for 30 seconds. A new de |---------------------------|----------|-------------------------------------------------------| | `gw_mac` | no | MAC address of the Xiaomi Aqara Gateway | -#### {% linkable_title Service xiaomi_aqara.remove_device %} +#### {% linkable_title Service `xiaomi_aqara.remove_device` %} Removes a specific device. The removal is required if a device shall be paired with another gateway. @@ -190,7 +190,7 @@ Removes a specific device. The removal is required if a device shall be paired w ### {% linkable_title Long Press on Smart Button %} -This example plays the sound of a dog barking when the button is held down, and stops the sound when the button is pressed once. +This example plays the sound of a dog barking when the button is held down and stops the sound when the button is pressed once. *Note: The sound will stop playing automatically when it has ended.* @@ -226,7 +226,7 @@ This example plays the sound of a dog barking when the button is held down, and ### {% linkable_title Initial setup problem %} -If you run into trouble initializing the gateway with your app, try another smartphone. I had trouble with the OnePlus 3, but it worked with a Nexus 5. +If you run into trouble initializing the gateway with your app, try another smartphone. E.g., it didn't work on an OnePlus 3, but it worked with a Nexus 5. ### {% linkable_title Connection problem %} @@ -238,11 +238,12 @@ If you run into trouble initializing the gateway with your app, try another smar That means that Home Assistant is not getting any response from your Xiaomi gateway. Might be a local network problem or your firewall. - Make sure you have [enabled LAN access](https://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)#Adding_the_Xiaomi_Gateway_to_Domoticz). - Turn off the firewall on the system where Home Assistant is running. -- Ensure your router supports multicast as this is a requirement of the Xiaomi GW +- Ensure your router supports multicast as this is a requirement of the Xiaomi Gateway. - Try to leave the MAC address `mac:` blank. - Try to set `discovery_retry: 10`. - Try to disable and then enable LAN access. - Hard reset the gateway: Press the button of the gateway 30 seconds and start again from scratch. - If you are using Home Assistant in [Docker](/docs/installation/docker/), make sure to use `--net=host`. -- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternativly an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. -- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g. `sudo apt-get install python3-dev libssl-dev libffi-dev`). +- If you receive an `{"error":"Invalid key"}` in your log while trying to control the gateway light, you should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances there is an issue with keys being generated using the iOS application. +- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). + diff --git a/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown b/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown new file mode 100644 index 00000000000..6c873a0808e --- /dev/null +++ b/source/_cookbook/configuration_yaml_by_chriskacerguis.markdown @@ -0,0 +1,12 @@ +--- +layout: page +title: "Configuration.yaml by chriskacerguis" +description: "" +date: 2017-12-12 09:14 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Example configuration.yaml +ha_external_link: https://github.com/chriskacerguis/Home-AssistantConfig +--- diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown index b8f5f8d59b8..800f2f3378d 100644 --- a/source/_cookbook/custom_panel_using_react.markdown +++ b/source/_cookbook/custom_panel_using_react.markdown @@ -18,7 +18,7 @@ This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC] - It uses the user configuration for the component in the `configuration.yaml` file for rendering. - It allows toggling the sidebar. -All you need is available as a [custom panel](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Download the file and save it in `/panels/` (you might have to create the directory if it doesn't exist). +Download the source [here](https://github.com/home-assistant/example-custom-config/blob/master/panels/react.html). Copy the file to `/panels/` (you might have to create the directory if it doesn't exist). Create a entry for the panel in your `configuration.yaml` file to enable it. diff --git a/source/_cookbook/python_component_automation.markdown b/source/_cookbook/python_component_automation.markdown new file mode 100644 index 00000000000..b098278555c --- /dev/null +++ b/source/_cookbook/python_component_automation.markdown @@ -0,0 +1,159 @@ +--- +layout: page +title: "Automation in Code" +description: "A sample to do automations in Python Code." +date: 2016-02-14 0:40 -0800 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Automation in Python Examples +--- + +Example component to target an `entity_id` to: + + - turn it on at 7AM in the morning + - turn it on if anyone comes home and it is off + - turn it off if all lights are turned off + - turn it off if all people leave the house + - offer a service to turn it on for 10 seconds + +To set it up, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +example: + target: TARGET_ENTITY +``` + +Configuration variables: + +- **target** (*Required*): TARGET_ENTITY should be one of your devices that can be turned on and off, e.g., a light or a switch. Example value could be light.Ceiling or switch.AC (if you have these devices with those names). + +Create the file `/custom_components/example.py` and copy paste the content below: + + +```python +""" +Example of a custom component. +""" +import time +import logging + +from homeassistant.const import STATE_HOME, STATE_NOT_HOME, STATE_ON, STATE_OFF +from homeassistant.helpers import validate_config +from homeassistant.helpers.event_decorators import \ + track_state_change, track_time_change +from homeassistant.helpers.service import service +import homeassistant.components as core +from homeassistant.components import device_tracker +from homeassistant.components import light + +# The domain of your component. Should be equal to the name of your component. +DOMAIN = "example" + +# List of component names (string) your component depends upon. +# We depend on group because group will be loaded after all the components that +# initialize devices have been setup. +DEPENDENCIES = ['group', 'device_tracker', 'light'] + +# Configuration key for the entity id we are targeting. +CONF_TARGET = 'target' + +# Variable for storing configuration parameters. +TARGET_ID = None + +# Name of the service that we expose. +SERVICE_FLASH = 'flash' + +# Shortcut for the logger +_LOGGER = logging.getLogger(__name__) + + +def setup(hass, config): + """Setup example component.""" + global TARGET_ID + + # Validate that all required config options are given. + if not validate_config(config, {DOMAIN: [CONF_TARGET]}, _LOGGER): + return False + + TARGET_ID = config[DOMAIN][CONF_TARGET] + + # Validate that the target entity id exists. + if hass.states.get(TARGET_ID) is None: + _LOGGER.error("Target entity id %s does not exist", + TARGET_ID) + + # Tell the bootstrapper that we failed to initialize and clear the + # stored target id so our functions don't run. + TARGET_ID = None + return False + + # Tell the bootstrapper that we initialized successfully. + return True + + +@track_state_change(device_tracker.ENTITY_ID_ALL_DEVICES) +def track_devices(hass, entity_id, old_state, new_state): + """Called when the group.all devices change state.""" + # If the target id is not set, return + if not TARGET_ID: + return + + # If anyone comes home and the entity is not on, turn it on. + if new_state.state == STATE_HOME and not core.is_on(hass, TARGET_ID): + + core.turn_on(hass, TARGET_ID) + + # If all people leave the house and the entity is on, turn it off. + elif new_state.state == STATE_NOT_HOME and core.is_on(hass, TARGET_ID): + + core.turn_off(hass, TARGET_ID) + + +@track_time_change(hour=7, minute=0, second=0) +def wake_up(hass, now): + """Turn light on in the morning. + + Turn the light on at 7 AM if there are people home and it is not already + on. + """ + if not TARGET_ID: + return + + if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): + _LOGGER.info('People home at 7AM, turning it on') + core.turn_on(hass, TARGET_ID) + + +@track_state_change(light.ENTITY_ID_ALL_LIGHTS, STATE_ON, STATE_OFF) +def all_lights_off(hass, entity_id, old_state, new_state): + """If all lights turn off, turn off.""" + if not TARGET_ID: + return + + if core.is_on(hass, TARGET_ID): + _LOGGER.info('All lights have been turned off, turning it off') + core.turn_off(hass, TARGET_ID) + + +@service(DOMAIN, SERVICE_FLASH) +def flash_service(hass, call): + """Service that will toggle the target. + + Set the light to off for 10 seconds if on and vice versa. + """ + if not TARGET_ID: + return + + if core.is_on(hass, TARGET_ID): + core.turn_off(hass, TARGET_ID) + time.sleep(10) + core.turn_on(hass, TARGET_ID) + + else: + core.turn_on(hass, TARGET_ID) + time.sleep(10) + core.turn_off(hass, TARGET_ID) +``` diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 7ee16d84fb3..e66face48b2 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -27,17 +27,17 @@ - topic: Template description: "A [template](/docs/automation/templating/) is an automation definition that can include variables for the service or data from the trigger values. This allows automations to generate dynamic actions." - topic: Script - description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on" + description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on." - topic: Scene description: "[Scenes](/components/scene/) capture the states you want certain entities to be. For example a scene can specify that light A should be turned on and light B should be bright red." - topic: HADashboard description: "[HADashboard](/docs/ecosystem/hadashboard/) is a modular, skinnable dashboard for Home Assistant that is intended to be wall mounted, and is optimized for distance viewing." - topic: hass - description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is aslo the comand line tool for accessing" + description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is also the command line tool." - topic: Hass.io - description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended" + description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended." - topic: Cookbook - description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community" + description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community." - topic: Packages description: "[Packages](/docs/configuration/packages/) allow you to bundle different component configuations together." - topic: Customize diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown index a1eb7ddfae7..9e28e0b3e76 100644 --- a/source/_docs/automation/examples.markdown +++ b/source/_docs/automation/examples.markdown @@ -12,6 +12,7 @@ redirect_from: /getting-started/automation-examples/ Just some sample automation rules to get you started. +{% raw %} ```yaml # Example of entry in configuration.yaml automation: @@ -64,4 +65,20 @@ automation: service: notify.notify data: message: 'Paulus left the house' + +# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component. + - alias: 'Xiaomi Cube Action' + hide_entity: false + initial_state: false + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_158d000103a3de + action: + - service_template: notify.pushover + data_template: + title: "Cube event detected" + message: "Cube has triggered this event: {{ trigger.event }}" ``` +{% endraw %} diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 7f721876bd9..74f0427f48c 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -69,6 +69,7 @@ The following tables show the available trigger data per platform. | ---- | ---- | | `trigger.platform` | Hardcoded: `event`. | `trigger.event` | Event object that matched. +| `trigger.event.data` | Optional data ### {% linkable_title mqtt %} diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index c4b3ee2793a..140fd421aed 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -138,18 +138,13 @@ The US Naval Observatory has a [tool](http://aa.usno.navy.mil/data/docs/AltAz.ph ### {% linkable_title Template trigger %} -

- If your template trigger has no `entity_id` listed, then it is evaluted on *every* state change for *every* entity. Instead you should create a [template sensor](/components/sensor.template/) or [template binary sensor](/components/binary_sensor.template/) and use that in your automation. -

- -Template triggers work by evaluating a [template] on each state change. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). +Template triggers work by evaluating a [template] on every state change for all of the recognized entities. The trigger will fire if the state change caused the template to render 'true'. This is achieved by having the template result in a true boolean expression (`{% raw %}{{ is_state('device_tracker.paulus', 'home') }}{% endraw %}`) or by having the template render 'true' (example below). With template triggers you can also evaluate attribute changes by using is_state_attr (`{% raw %}{{ is_state_attr('climate.living_room', 'away_mode', 'off') }}{% endraw %}`) ```yaml automation: trigger: platform: template - entity_id: device_tracker.paulus value_template: "{% raw %}{% if is_state('device_tracker.paulus', 'home') %}true{% endif %}{% endraw %}" ``` diff --git a/source/_docs/autostart/init.d.markdown b/source/_docs/autostart/init.d.markdown index 9f67cbdb2b5..6605b6e10b9 100644 --- a/source/_docs/autostart/init.d.markdown +++ b/source/_docs/autostart/init.d.markdown @@ -142,3 +142,94 @@ case "$1" in echo "Usage: $0 {start|stop|restart|install|uninstall}" esac ``` + +### {% linkable_title Python virtual environment %} + +```bash +#!/bin/sh +### BEGIN INIT INFO +# Provides: hass +# Required-Start: $local_fs $network $named $time $syslog +# Required-Stop: $local_fs $network $named $time $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Description: Home\ Assistant +### END INIT INFO + +# /etc/init.d Service Script for Home Assistant +# Created with: https://gist.github.com/naholyr/4275302#file-new-service-sh +PRE_EXEC="cd /srv/homeassistant && python3 -m venv . && source bin/activate &&" +# Typically /usr/bin/hass +HASS_BIN="hass" +RUN_AS="USER" +PID_FILE="/var/run/hass.pid" +CONFIG_DIR="/home/USER/.homeassistant" +FLAGS="-v --config $CONFIG_DIR --pid-file $PID_FILE --daemon" +REDIRECT="> $CONFIG_DIR/home-assistant.log 2>&1" + +start() { + if [ -f $PID_FILE ] && kill -0 $(cat $PID_FILE) 2> /dev/null; then + echo 'Service already running' >&2 + return 1 + fi + echo 'Starting service…' >&2 + local CMD="$PRE_EXEC $HASS_BIN $FLAGS $REDIRECT;" + su -s /bin/bash -c "$CMD" $RUN_AS + echo 'Service started' >&2 +} + +stop() { + if [ ! -f "$PID_FILE" ] || ! kill -0 $(cat "$PID_FILE") 2> /dev/null; then + echo 'Service not running' >&2 + return 1 + fi + echo 'Stopping service…' >&2 + kill $(cat "$PID_FILE") + while ps -p $(cat "$PID_FILE") > /dev/null 2>&1; do sleep 1;done; + echo 'Service stopped' >&2 +} + +install() { + echo "Installing Home Assistant Daemon (hass-daemon)" + echo "999999" > $PID_FILE + chown $RUN_AS $PID_FILE + mkdir -p $CONFIG_DIR + chown $RUN_AS $CONFIG_DIR +} + +uninstall() { + echo -n "Are you really sure you want to uninstall this service? That cannot be undone. [yes|No] " + local SURE + read SURE + if [ "$SURE" = "yes" ]; then + stop + rm -fv "$PID_FILE" + echo "Notice: The config directory has not been removed" + echo $CONFIG_DIR + update-rc.d -f hass-daemon remove + rm -fv "$0" + echo "Home Assistant Daemon has been removed. Home Assistant is still installed." + fi +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + install) + install + ;; + uninstall) + uninstall + ;; + restart) + stop + start + ;; + *) + echo "Usage: $0 {start|stop|restart|install|uninstall}" +esac +``` diff --git a/source/_docs/autostart/systemd.markdown b/source/_docs/autostart/systemd.markdown index f4d3b25ff83..e1e1b6b4669 100644 --- a/source/_docs/autostart/systemd.markdown +++ b/source/_docs/autostart/systemd.markdown @@ -28,7 +28,7 @@ A service file is needed to control Home Assistant with `systemd`. The template ``` [Unit] Description=Home Assistant -After=network.target +After=network-online.target [Service] Type=simple @@ -46,7 +46,7 @@ If you've setup Home Assistant in `virtualenv` following our [Python installatio ``` [Unit] Description=Home Assistant -After=network.target +After=network-online.target [Service] Type=simple @@ -128,7 +128,7 @@ Because the log can scroll quite quickly, you can select to view only the error $ sudo journalctl -f -u home-assistant@[your user] | grep -i 'error' ``` -When working on Home Assitant, you can easily restart the system and then watch the log output by combining the above commands using `&&` +When working on Home Assistant, you can easily restart the system and then watch the log output by combining the above commands using `&&` ```bash $ sudo systemctl restart home-assistant@[your user] && sudo journalctl -f -u home-assistant@[your user] diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index 09feb26aabd..584014521f4 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -63,7 +63,7 @@ light: There are some rules for packages that will be merged: -1. Component names may only use the basic form (e.g. `switch` and `switch 1` or `switch aa` is not accepted). +1. Component names may only use the basic form (e.g. `switch`, but not `switch 1` or `switch aa`). 2. Platform based components (`light`, `switch`, etc) can always be merged. 3. Components where entities are identified by a key that will represent the entity_id (`{key: config}`) need to have unique 'keys' between packages and the main configuration file. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index c02fbb7f2a2..40feade2473 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -78,6 +78,7 @@ Home Assistant adds extensions to allow templates to access all of the current s - `relative_time(timestamp)` will format the date time as relative time vs now (ie 7 seconds) - `float` will format the output as float. - `strptime(string, format)` will parse a string to a datetime based on a [format][strp-format]. +- `log(value, base)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. Can also be used as a filter. - Filter `round(x)` will convert the input to a number and round it to `x` decimals. - Filter `timestamp_local` will convert an UNIX timestamp to local time/data. - Filter `timestamp_utc` will convert an UNIX timestamp to UTC time/data. @@ -254,6 +255,8 @@ The following overview contains a couple of options to get the needed values: # Math {% raw %}{{ value_json | float * 1024 }}{% endraw %} {% raw %}{{ float(value_json) * (2**10) }}{% endraw %} +{% raw %}{{ value_json | log }}{% endraw %} +{% raw %}{{ log(1000, 10) }}{% endraw %} # Timestamps {% raw %}{{ value_json.tst | timestamp_local }}{% endraw %} diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index e2a8d23d68f..ca2a59f65e4 100755 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -58,7 +58,7 @@ This is also fairly easy to achieve with Home Assistant automations, but we are Our next example is to turn on a light when motion is detected and it is dark, and turn it off after a period of time. This time, the `initialize()` function registers a callback on a state change (of the motion sensor) rather than a specific time. We tell AppDaemon that we are only interested in state changes where the motion detector comes on by adding an additional parameter to the callback registration - `new = "on"`. When the motion is detected, the callback function `motion()` is called, and we check whether or not the sun has set using a built-in convenience function: `sun_down()`. Next, we turn the light on with `turn_on()`, then set a timer using `run_in()` to turn the light off after 60 seconds, which is another call to the scheduler to execute in a set time from now, which results in `AppDaemon` calling `light_off()` 60 seconds later using the `turn_off()` call to actually turn the light off. This is still pretty simple in code terms: ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class FlashyMotionLights(appapi.AppDaemon): @@ -79,7 +79,7 @@ This is starting to get a little more complex in Home Assistant automations, req Now let's extend this with a somewhat artificial example to show something that is simple in AppDaemon but very difficult if not impossible using automations. Let's warn someone inside the house that there has been motion outside by flashing a lamp on and off ten times. We are reacting to the motion as before by turning on the light and setting a timer to turn it off again, but in addition, we set a 1-second timer to run `flash_warning()`, which, when called, toggles the inside light and sets another timer to call itself a second later. To avoid re-triggering forever, it keeps a count of how many times it has been activated and bales out after ten iterations. ```python -import homeassistant.appapi as appapi +import appdaemon.appapi as appapi class MotionLights(appapi.AppDaemon): diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 632457f28a9..4b54abe2d32 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -14,9 +14,21 @@ redirect_from: /getting-started/installation/ Beginners should check our [Getting started guide](/getting-started/) first. This is for users that require advanced installations.

-Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows, we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**. +Home Assistant provides multiple ways to be installed. A requirement is that you have [Python 3.5+](https://www.python.org/downloads/) installed.
+ +
+ +
+
Hass.io
(Beginner friendly)
+
+ +
+ +
+
On top of an existing Python 3.5+ installation
+
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index cd8f8b26eef..0b327c90076 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -78,9 +78,55 @@ If you want to use a USB Bluetooth adapter or Z-Wave USB Stick with Home Assista ### {% linkable_title Restart %} -This will launch Home Assistant and serve the web interface from port 8123 on your Docker host. - If you change the configuration you have to restart the server. To do that you have 2 options. 1. You can go to the service developer tool icon service developer tools, select the service `homeassistant/restart` and click "Call Service". 2. Or you can restart it from a terminal by running `docker restart home-assistant` + +### {% linkable_title Docker Compose %} + +As the docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file: + +```yaml + version: '3' + services: + web: + image: homeassistant/home-assistant + volumes: + - /path/to/your/config:/config + - /etc/localtime:/etc/localtime:ro + restart: always + network_mode: host +``` + +Then start the container with: + +```bash +$ docker-compose up -d +``` + +### {% linkable_title Exposing Devices %} + +In order to use z-wave, zigbee or other components that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your docker command: + +```bash +$ docker run -d --name="home-assistant" -v /path/to/your/config:/config -v /etc/localtime:/etc/localtime:ro --device /dev/ttyUSB0:/dev/ttyUSB0 --net=host homeassistant/home-assistant +``` + +or in a `docker-compose.yml` file: + +```yaml + version: '3' + services: + web: + image: homeassistant/home-assistant + volumes: + - /path/to/your/config:/config + - /etc/localtime:/etc/localtime:ro + devices: + - /dev/ttyUSB0:/dev/ttyUSB0 + - /dev/ttyUSB1:/dev/ttyUSB1 + - /dev/ttyACM0:/dev/ttyACM0 + restart: always + network_mode: host +``` diff --git a/source/_docs/installation/raspberry-pi-all-in-one.markdown b/source/_docs/installation/raspberry-pi-all-in-one.markdown index 485fc64ffdb..6039ffed440 100644 --- a/source/_docs/installation/raspberry-pi-all-in-one.markdown +++ b/source/_docs/installation/raspberry-pi-all-in-one.markdown @@ -8,124 +8,6 @@ footer: true redirect_from: /getting-started/installation-raspberry-pi-all-in-one/ --- -The [Raspberry Pi All-In-One Installer](https://github.com/home-assistant/fabric-home-assistant) deploys a complete Home Assistant server including support for MQTT with websockets, Z-Wave, and the OpenZWave Control Panel. - -

-Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets. -

- -The only requirement is that you have a Raspberry Pi with a fresh installation of [Raspbian](https://www.raspberrypi.org/downloads/raspbian/) Jessie (Stretch is not supported at this time) connected to your network. - -

-Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel). -

- -Irrespective of whether you use SSH to connect to the Pi from another computer or not, you need SSH to install Home Assistant. So go ahead and enable SSH. - -* Login to Raspberry Pi. For example with `ssh pi@your_raspberry_pi_ip` -* Run the following command: -

- This command is a one-liner and not run as sudo. + The All-In-One Installer is deprecated, you will have problems updating Home Assistant in 2018. Please move to another [installation method](https://home-assistant.io/getting-started/).

- -```bash -$ curl -O https://raw.githubusercontent.com/home-assistant/fabric-home-assistant/master/hass_rpi_installer.sh && sudo chown pi:pi hass_rpi_installer.sh && bash hass_rpi_installer.sh -``` - -Installation will take approx. 1-2 hours depending on the Raspberry Pi model the installer is being run against. The installer will identitfy what Raspberry Pi hardware revision you are using and adjust commands accordingly. A complete log of the install is located at: `/home/pi/fabric-home-assistant/installation_report.txt` The installer has been updated to simply log any errors encountered, but resume installing. Please consult the "installation report" if your install encountered issues. - -[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=VGl3KTrYo6s) explaining how to install Raspbian on your Raspberry Pi and install Home Assistant using the All-In-One Installer. - -Once rebooted, your Raspberry Pi will be up and running with Home Assistant. You can access it at [http://your_raspberry_pi_ip:8123](http://your_raspberry_pi_ip:8123). - -The Home Assistant configuration is located at `/home/homeassistant/.homeassistant` (or `/home/hass/.homeassistant` if installed prior to December 2016). The [virtualenv](https://virtualenv.pypa.io/en/latest/) with the Home Assistant installation is located at `/srv/homeassistant/homeassistant_venv`. As part of the secure installation, a new user (**homeassistant**) is added to your Raspberry Pi to run Home Assistant. This is a system account and does not have login or other abilities by design. When editing your `configuration.yaml` files, you will need to run the commands with `sudo` or by switching user. - -

- *Windows users*: Setting up WinSCP to allow this seemlessly is at the end of this page. -

- -By default, installation makes use of a Python Virtualenv. If you wish to not follow this recommendation, you may add the flag `-n` to the end of the install command specified above. - -The All-In-One Installer script will do the following automatically: - -* Create all needed directories -* Create needed service accounts -* Install OS and Python dependencies -* Setup a python virtualenv to run Home Assistant and components inside. -* Run as `homeassistant` service account -* Install Home Assistant in a virtualenv -* Install Mosquitto with websocket support running on ports 1883 and 9001 -* Build and Install Python-openzwave in the Home Assistant virtualenv -* Build OpenZWave Control Panel in `/srv/homeassistant/src/open-zwave-control-panel` -* Add Home Assistant to systemd services to start at boot - -### {% linkable_title Upgrading %} - -To upgrade the All-In-One setup manually: - -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash homeassistant` -* Change to virtual environment `source /srv/homeassistant/homeassistant_venv/bin/activate` -* Update Home Assistant `pip3 install --upgrade homeassistant` -* Type `exit` to logout the hass user and return to the `pi` user. - -
-**If you deployed Home Assistant via the AiO installer prior to December 2016** -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to homeassistant user `sudo su -s /bin/bash hass` -* Change to virtual environment `source /srv/hass/hass_venv/bin/activate` -* Update Home Assistant `pip3 install --upgrade homeassistant` -* Type `exit` to logout the hass user and return to the `pi` user. -
- -After upgrading, you can restart Home Assistant a few different ways: - -* Restarting the Raspberry Pi `sudo reboot` -* Restarting the Home-Assistant Service `sudo systemctl restart home-assistant.service` - -### {% linkable_title To change the MQTT default password %} - -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change password `sudo mosquitto_passwd /etc/mosquitto/pwfile pi` -* Restart mosquitto `sudo systemctl restart mosquitto.service` -* Be sure to update your `configuration.yaml` to reflect the new password. - -### {% linkable_title Using the OZWCP web application %} - -To launch the OpenZWave Control Panel (OZWCP) web application: - -* Make sure Home Assistant is not running! So stop that first -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to the OZWCP directory `cd /srv/homeassistant/src/open-zwave-control-panel/` -* Launch the control panel `sudo ./ozwcp -p 8888` -* Open a web browser to `http://your_pi_ip:8888` -* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize - -

- If OZWCP is running really slow verify that your not running Home Assistant or have another page running OZWCP open or strange errors might occur. -

- -
-**If you deployed Home Assistant via the AiO installer prior to December 2016** -* Make sure Home Assistant is not running! So stop that first -* Login to Raspberry Pi `ssh pi@your_raspberry_pi_ip` -* Change to the OZWCP directory `cd /srv/hass/src/open-zwave-control-panel/` -* Launch the control panel `sudo ./ozwcp -p 8888` -* Open a web browser to `http://your_pi_ip:8888` -* Specify your Z-Wave controller, for example `/dev/ttyACM0` and hit initialize -
- -

-Don't check the USB box regardless of using a USB based device. -

- -### {% linkable_title Using the GPIOs %} - -The (**homeassistant**) user is added to the GPIO group as part of the install now. - -### {% linkable_title WinSCP %} - -If you are Windows users who is using [WinSCP](https://winscp.net/), please note that after running the installer, you will need to modify settings allowing you to "switch users" to edit your configuration files. - -First create a new session on WinSCP using Protocol **SCP** pointing to your Pi IP address and port 22 and then modify the needed setting by click on **Advanced...** -> **Environment** -> **SCP/Shell** -> **Shell** and selecting `sudo su -`. diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index 88279081331..a23aa31b27f 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -11,7 +11,7 @@ redirect_from: /getting-started/updating/ ---

-The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant). +The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).

View what's new in the latest version and potential impacts on your system [here](https://github.com/home-assistant/home-assistant/releases). @@ -25,7 +25,7 @@ $ pip3 install --upgrade homeassistant After updating, you must restart Home Assistant for the changes to take effect. This means that you will have to restart `hass` itself or the [autostarting](/docs/autostart/) daemon (if applicable). Startup can take considerable amount of time (i.e. minutes) depending on your device. This is because all requirements are updated as well.

-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSIO](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv). +To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/installation/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).

[BRUH automation](http://www.bruhautomation.com) has created [a tutorial video](https://www.youtube.com/watch?v=tuG2rs1Cl2Y) explaining how to upgrade Home Assistant. diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index ffcfff5c9ab..d6f26a0b063 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -9,99 +9,60 @@ sharing: true footer: true redirect_from: /getting-started/installation-virtualenv/ --- -

-Beginners should check our [getting started guide](/getting-started/) first. + +If you already have Python 3.5 or later installed, you can easily give Home Assistant a spin. + +It's recommended when installing Python packages that you use a [virtual environment](https://docs.python.org/3.5/library/venv.html#module-venv). This will make sure that your Python installation and Home Assistant installation won't impact one another. The following steps will work on most unix like systems. + +_(If you're on a Debian based system, you will need to install Python virtual environment support using `apt-get install python3-pip python3-venv`.)_ + +### {% linkable_title Install %} + + 1. Create a virtual environment in your current directory: + ``` + $ python3 -m venv homeassistant + ``` + 2. Open the virtual environment: + ``` + $ cd homeassistant + ``` + 3. Activate the virtual environment: + ``` + $ source bin/activate + ``` + 4. Install Home Assistant: + ``` + $ python3 -m pip install homeassistant + ``` + 5. Configure it to [autostart](docs/autostart/) + 6. Or run Home Assistant manually: + ``` + $ hass --open-ui + ``` + +### {% linkable_title Upgrade %} + + 1. Stop Home Assistant + + 2. Open the directory where the virtual environment is located: + ``` + $ cd homeassistant + ``` + 3. Activate the virtual environment: + ``` + $ source bin/activate + ``` + 4. Upgrade Home Assistant: + ``` + $ python3 -m pip install --upgrade homeassistant + ``` + 5. Start Home Assistant + +### {% linkable_title Notes %} + +- In the future, if you want to start Home Assistant manually again, follow step 2, 3 and 5. +- It's recommanded to run Home Assistant as a dedicated user. + +

+Looking for more advanced guides? Check our [Rasbian guide](/docs/installation/raspberry-pi/) or the [other installation guides](/docs/installation/].

- -There are several reasons why it makes sense to run Home Assistant in a virtual environment. A [virtualenv](https://virtualenv.pypa.io/en/latest/) encapsulates all aspect of a Python environment within a single directory tree. That means the Python packages you install for Home Assistant won't interact with the rest of your system and vice-versa. It means a random upgrade for some other program on your computer won't break Home Assistant, and it means you don't need to install Python packages as root. - -Virtualenvs are pretty easy to setup. We'll be using Debian in this example (as many Home Assistant users are running Raspbian on a Raspberry Pi), but all of the Python related steps should be the same on just about any platform. - -### {% linkable_title Basic guide %} - -The basic guide is for testing Home Assistant. Also check the advanced guide for instances used in production. - -## {% linkable_title Step 1: Install dependencies %} - -```bash -$ sudo apt-get update -$ sudo apt-get upgrade -$ sudo apt-get install python3-pip python3-dev -$ sudo pip3 install --upgrade virtualenv -``` - -## {% linkable_title Step 2: Setup virtualenv %} - -```bash -$ python3 -m venv $HOME/homeassistant -``` - -## {% linkable_title Step 3: Install or update Home Assistant %} - -```bash -$ source $HOME/homeassistant/bin/activate -(homeassistant)$ pip3 install --upgrade homeassistant -``` - -## {% linkable_title Step 4: Run Home Assistant %} - -```bash -$ $HOME/homeassistant/bin/hass -``` - -### {% linkable_title Advanced guide %} -## {% linkable_title Separate user & group for Home Assistant (Basic guide step 2) %} - -It's a good idea to give services like Home Assistant their own user. It gives you more granular control over permissions, and reduces the exposure to the rest of your system in the event there is a security related bug in Home Assistant. This is a reasonably Linux oriented step, and will look different on other operating systems (or even other Linux distributions). - -```bash -$ sudo adduser --system homeassistant -$ sudo addgroup homeassistant -``` - -Home Assistant stores its configuration in `$HOME/.homeassistant` by default, so in this case, it would be in `/home/homeassistant/.homeassistant`. - -If you plan to use a Z-Wave controller, you will need to add this user to the `dialout` group: - -```bash -$ sudo usermod -G dialout -a homeassistant -``` - -## {% linkable_title Custom installation directory for Home Assistant (Basic guide step 2) %} - -This can be anywhere you want. We chose to put it in `/srv`. You also need to change the ownership of the directory to the user you created above. - -```bash -$ sudo mkdir /srv/homeassistant -$ sudo chown homeassistant:homeassistant /srv/homeassistant -$ python3 -m venv /srv/homeassistant -``` - -## {% linkable_title Install or update Home Assistant %} - -This is obviously only necessary if you created a `homeassistant` user, but if you did, be sure to switch to that user whenever you install things in your virtualenv, otherwise you'll end up with mucked up permissions. - -```bash -$ sudo su -s /bin/bash homeassistant -``` - -The `su` command means 'switch' user. We use the '-s' flag because the `homeassistant` user is a system user and doesn't have a default shell by default (to prevent attackers from being able to log in as that user). - -```bash -$ source /srv/homeassistant/bin/activate -(homeassistant)$ pip3 install --upgrade homeassistant -``` - -## {% linkable_title Run Home Assistant (Basic guide step 4) %} - -There are two ways to launch Home Assistant. If you are **in** the virtualenv, you can just run `hass` and it will work as normal. If the virtualenv is not activated, you just use the `hass` executable in the `bin` directory mentioned earlier. There is one caveat... Because Home Assistant stores its configuration in the user's home directory, we need to be the user `homeassistant` or specify the configuration with `-c`. - -```bash -$ sudo -u homeassistant -H /srv/homeassistant/bin/hass -``` - -The `-H` flag is important. It sets the `$HOME` environment variable to `/home/homeassistant` so `hass` can find its configuration. - -## {% linkable_title Starting Home Assistant on boot %} - -The [autostart instructions](/getting-started/autostart/) will work just fine, just be sure to replace `/usr/bin/hass` with `/srv/homeassistant/bin/hass` and specify the `homeassistant` user where appropriate. diff --git a/source/_docs/installation/windows.markdown b/source/_docs/installation/windows.markdown index 899040bc125..3554d44737a 100644 --- a/source/_docs/installation/windows.markdown +++ b/source/_docs/installation/windows.markdown @@ -9,7 +9,7 @@ sharing: true footer: true --- -To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python for https://www.python.org/downloads/windows/ and follow the instructions of the installer. +To run Home Assistant on Microsoft Windows installation you need to install Python first. Download Python for [https://www.python.org/downloads/windows/](https://www.python.org/downloads/windows/) and follow the instructions of the installer. Start @@ -23,5 +23,5 @@ For autostarting Home Assistant please refer to this [guide](https://community.h Check this [video](https://www.youtube.com/watch?v=X27eVvuqwnY) for the installation on Windows 10.

-The Microsoft Windows platform is not a primary target to install home Assistant. Also, not all tools and third-party modules will work. +The Microsoft Windows platform is not a primary target to install Home Assistant. Also, not all tools and third-party modules will work.

diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index 98c9ffc9008..c6a68fb3c65 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -20,7 +20,7 @@ Before configuring the Z-Wave setup, please take a moment and read [this article Z-Wave is a wireless communication protocol designed for home automation. It uses a low power, and low bandwidth, mesh network that allows devices that aren't within direct range of each other to communicate indirectly, via other nodes. Any device that's permanently powered (not battery powered) will help build the mesh, if you don't have enough powered devices, or you locate these poorly, your mesh will be unreliable. -There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. +There is a limit of 232 devices in a single Z-Wave network. If you need more devices then you could set up a second Home Assistant system with its own Z-Wave network and connect these with the [MQTT Eventstream](/components/mqtt_eventstream/) or [MQTT Statestream](/components/mqtt_statestream) components. There is also a limit of 4 hops for Z-Wave, so placing the controller as centrally as you can is important. The Z-Wave standard was improved with Z-Wave Plus, and if you only use Z-Wave plus devices then you will gain the full benefits. diff --git a/source/_docs/z-wave/adding.markdown b/source/_docs/z-wave/adding.markdown index e3bf3fae81b..101fb4a6b27 100644 --- a/source/_docs/z-wave/adding.markdown +++ b/source/_docs/z-wave/adding.markdown @@ -28,7 +28,7 @@ When you add a device, it may initially appear without a specific entity ID (eg ## {% linkable_title Adding Secure Devices %} -Security Z-Wave devices require a network key - you must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. To add (include) a secure Z-Wave device: +Security Z-Wave devices require a network key. You must set the *network_key* configuration variable to use a network key before adding these devices. Some devices only expose their full capabilities when included this way, you should always read the manual for your device to find out the recommended inclusion method. Note, secure devices that had been connected to another hub/network in the past may have a "theft protection" feature which requires to first exclude the device successfully from the previous hub using the previous hub/Software setup before it can be enrolled in a new hub/network. To add (include) a secure Z-Wave device: 1. Go to the [Z-Wave control panel](/docs/z-wave/control-panel/) in the Home Assistant frontend 2. Click the **Add Node Secure** button in the *Z-Wave Network Management* card - this will place the controller in inclusion mode diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index b3eb7f50e8c..c33375f242b 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -54,7 +54,9 @@ This is a dropdown where you can select all the entities of this node. Once sele * **Refresh Entity** to refresh just that entity's values * **Entity Attributes** to display the attributes of that entity (eg it's friendly name, the ID of the node, etc) -Here you can mark a device as requiring polling (before 0.55 this was displayed at the top), so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/polling/), since excessive polling can break your Z-Wave network. +Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. + +The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval. You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. @@ -110,6 +112,25 @@ You can set the *wakeup* interval (in seconds) of the device, this is shown for Underneath that you can select any supported configuration parameter to see the current setting. You can then change this and select **Set Config Parameter** to updated it. Battery powered devices will be updated the next time they wake. +## {% linkable_title Node user codes %} + +If your node has user codes, you can set and delete them. The format is raw hex Ascii code. Bellow the input you will see your actual code. For normal nodes this is as follows: +```yaml +\x30 = 0 +\x31 = 1 +\x32 = 2 +\x33 = 3 +\x34 = 4 +\x35 = 5 +\x36 = 6 +\x37 = 7 +\x38 = 8 +\x39 = 9 +``` +Some non compliant device like tag readers, have implemented to use raw hex code. +Please refer to a hex ascii table to set your code. Example: http://www.asciitable.com/ + + ## {% linkable_title OZW Log %} If you want to only retrieve some lines at the end of the log, you can specify that with the selection field. Max is the last 1000 lines and minimum is 0 which equals the whole log. If this is not specified, you will retrieve the whole log. diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index e4661474918..22a4a6d89e8 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -61,6 +61,10 @@ $ sudo systemctl disable hciuart Finally, reboot to make those changes active. It's been reported that this is also required on the Pi2. +

+ If you've installed the Z-Way software, you'll need to ensure you disable it before you install Home Assistant or you won't be able to access the board. Do this with `sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable`. +

+ ### {% linkable_title Aeon Minimote %} Here's a handy configuration for the Aeon Labs Minimote that defines all possible button presses. Put it into `automation.yaml`. @@ -74,7 +78,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 1 - - id: mini_1_held alias: 'Minimote Button 1 Held' trigger: @@ -83,7 +86,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 2 - - id: mini_2_pressed alias: 'Minimote Button 2 Pressed' trigger: @@ -92,7 +94,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 3 - - id: mini_2_held alias: 'Minimote Button 2 Held' trigger: @@ -101,7 +102,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 4 - - id: mini_3_pressed alias: 'Minimote Button 3 Pressed' trigger: @@ -110,7 +110,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 5 - - id: mini_3_held alias: 'Minimote Button 3 Held' trigger: @@ -119,7 +118,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 6 - - id: mini_4_pressed alias: 'Minimote Button 4 Pressed' trigger: @@ -128,7 +126,6 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl event_data: entity_id: zwave.aeon_labs_minimote_1 scene_id: 7 - - id: mini_4_held alias: 'Minimote Button 4 Held' trigger: @@ -211,7 +208,19 @@ Below is a table of the action/scenes for the Wallmote (as a reference for other **Action**|**scene\_id**|**scene\_data** :-----:|:-----:|:-----: -Button one single tap|1|TBC -Button two single tap|2|TBC -Button three single tap|3|TBC -Button four single tap|4|TBC +Button one single tap|1|0 +Button one hold|1|2 +Button one release|1|1 +Button two single tap|2|0 +Button two hold|2|2 +Button two release|2|1 +Button three single tap|3|0 +Button three hold|3|2 +Button three release|3|1 +Button four single tap|4|0 +Button four hold|4|2 +Button four release|4|1 + +### {% linkable_title Zooz Toggle Switches %} + +Some models of the Zooz Toggle switches ship with an instruction manual with incorrect instruction for Z-Wave inclusion/exclusion. The instructions say that the switch should be quickly switched on-off-on for inclusion and off-on-off for exclusion. However, the correct method is on-on-on for inclusion and off-off-off for exclusion. diff --git a/source/_docs/z-wave/entities.markdown b/source/_docs/z-wave/entities.markdown index d18e7e39047..b5a597b4ebf 100644 --- a/source/_docs/z-wave/entities.markdown +++ b/source/_docs/z-wave/entities.markdown @@ -119,7 +119,7 @@ The meaning of the `alarm_level` entity depends on the nature of the alarm senso - **254**: Deep sleep - **255**: Case open -If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: +If your device has an `access_control` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: ``` binary_sensor: @@ -128,10 +128,10 @@ binary_sensor: YOUR_SENSOR: friendly_name: "Friendly name here" value_template: >- - {% raw %}{%- if is_state('sensor.YOUR_SENSOR_access_control', '22') -%} - on + {% raw %}{%- if is_state('sensor.YOUR_ORIGINAL_SENSOR_access_control', '22') -%} + true {%- else -%} - off + false {%- endif -%}{% endraw %} ``` @@ -147,7 +147,7 @@ binary_sensor: - **254**: Deep sleep - **255**: Case open -If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](omponents/binary_sensor.template/) to create one: +If your device has an `burglar` entity, but not a `binary_sensor` equivalent, you can use a [template binary sensor](/components/binary_sensor.template/) to create one: ``` binary_sensor: @@ -157,9 +157,9 @@ binary_sensor: friendly_name: "Friendly name here" value_template: >- {% raw %}{%- if is_state('sensor.YOUR_SENSOR_burglar', '8') -%} - on + true {%- else -%} - off + false {%- endif -%}{% endraw %} ``` diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 4765ecb07be..15b87957cb0 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -159,7 +159,7 @@ To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add th ```yaml zwave: - usb_path: /dev/ttyACM0 + usb_path: /dev/ttyAMA0 ``` For some devices the `/dev/ttyAMA0` device is not detected by udev and is therefore not mapped by Docker. To explicitly set this device for mapping to Home-Assistant, execute the following command using the ssh add-on: @@ -188,6 +188,12 @@ An easy script to generate a random key: cat /dev/urandom | tr -dc '0-9A-F' | fold -w 32 | head -n 1 | sed -e 's/\(..\)/0x\1, /g' -e 's/, $//' ``` +```yaml +# Example configuration.yaml entry for network_key +zwave: + network_key: "0x2e, 0xcc, 0xab, 0x1c, 0xa3, 0x7f, 0x0e, 0xb5, 0x70, 0x71, 0x2d, 0x98, 0x25, 0x43, 0xee, 0x0c" +``` + Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network. ## {% linkable_title First Run %} diff --git a/source/_posts/2017-11-29-hassio-virtual-machine.markdown b/source/_posts/2017-11-29-hassio-virtual-machine.markdown new file mode 100644 index 00000000000..2f53ef97d9d --- /dev/null +++ b/source/_posts/2017-11-29-hassio-virtual-machine.markdown @@ -0,0 +1,153 @@ +--- +layout: post +title: "Set up Hass.io on top of a virtual machine" +description: "A how-to about using Hass.io on x86_64 hardware in a virtualized way." +date: 2017-11-29 06:00:00 +0000 +date_formatted: "November 29, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: How-To +og_image: /images/blog/2017-11-hassio-virtual/social.png +--- + + +The images for the Raspberry Pi family and the Intel NUC are an easy way to get started with [Hass.io](/hassio/). For a test or if you have a system which is already hosting virtual machines then the [**Hass.io installer**](/hassio/installation/#alternative-install-on-generic-linux-server) is an option to use Hass.io in a virtualized environment. In this guide the host is a Fedora 27 system with [libvirt](https://libvirt.org/) support and the guest will be running Debian 9. Hass.io will be installed on the guest. + + + +Assuming that you already have setup `libvirtd`. You might need to install `virt-builder` and `virt-viewer` additionally. + +```bash +$ sudo dnf -y install libguestfs-tools-c virt-install virt-viewer +``` + +We will create a virtual machine with Debian 9 and a 10 GB disk image in the QCOW format. Use `$ virt-builder --list` to get an overview about what's operating systems are available if you prefer to use a different system. + +```bash +$ sudo virt-builder debian-9 \ + --output /var/lib/libvirt/images/hassio.img \ + --format qcow2 \ + --size 10G \ + --root-password password:test123 \ + --hostname hassio \ + --firstboot-command "dpkg-reconfigure openssh-server" +[...] +[ 147.6] Finishing off + Output file: /var/lib/libvirt/images/hassio.img + Output size: 10.0G + Output format: qcow2 + Total usable space: 9.3G + Free space: 8.1G (87%) +``` + +Now, we are making our new virtual machine available for `libvirtd`. If you get an error that the OS is unknown, use `$ osinfo-query os` to get the name to use with `--os-variant`. To access the virtual machine is connected to the bridge `bridge0`. + +```bash +$ sudo virt-install --name hassio --import --ram 1024 \ + --os-variant debian9 -w bridge=bridge0 \ + --autostart --disk /var/lib/libvirt/images/hassio.img +``` + +

+ + Hass.io virtual machine in Virtual Machine Manager +

+ +Depending on your preferences you can use the Virtual Machine Manager (`virt-manager`) or `virsh` to manage the created virtual machine. Log in and create an user with `# useradd ha` and set a password with `# passwd ha`. We will need that user to make a SSH connection to the virtual machine. + +Log in as `ha` with the given password. If your are using the default network of `libvirtd` then the DHCP range is defined in `/var/lib/libvirt/dnsmasq/default.conf`. In this guide the virtual machine is present at 192.168.0.109. + +```bash +$ ssh ha@192.168.0.109 +ha@192.168.0.109's password: +Linux hassio 4.9.0-3-amd64 #1 SMP Debian 4.9.30-2+deb9u3 (2017-08-06) x86_64 +[...] +$ +``` + +Install the requirements after you switch the user to `root`. + +```bash +$ su +Password: +root@hassio:/home/ha# +root@hassio:/home/ha# apt-get update +root@hassio:/home/ha# apt-get install bash socat jq curl avahi-daemon \ + apt-transport-https ca-certificates +``` + +We want the latest Docker release. This requires additional steps to set it up as unlike other distributions Debian is lacking behind with current packages. + +```bash +root@hassio:/home/ha# wget https://download.docker.com/linux/debian/gpg +root@hassio:/home/ha# apt-key add gpg +OK +root@hassio:/home/ha# echo "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee -a /etc/apt/sources.list.d/docker.list +root@hassio:/home/ha# apt-get update +``` + +Now, it's possible to install a current release of [Docker](https://www.docker.com/). + +```bash +root@hassio:/home/ha# apt-get -y install docker-ce +``` + +Start `docker` and enable it. + +```bash +root@hassio:/home/ha# systemctl start docker && systemctl enable docker +``` + +An [installation script](https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio) will take care about the setup of all moving parts. + +```bash +root@hassio:/home/ha# curl -sL https://raw.githubusercontent.com/home-assistant/hassio-build/master/install/hassio_install | bash - +[INFO] Install supervisor docker +[INFO] Install generic HostControl +[INFO] Install startup scripts +[INFO] Init systemd +Created symlink /etc/systemd/system/multi-user.target.wants/hassio-supervisor.service → /etc/systemd/system/hassio-supervisor.service. +[INFO] Start services +``` + +If it's done, then there will be two new containers. + +```bash +root@hassio:/home/ha# docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +ada5bbfc74f0 homeassistant/qemux86-64-homeassistant "/usr/bin/entry.sh..." 4 minutes ago Up 4 minutes homeassistant +5954ac452ffc homeassistant/amd64-hassio-supervisor "/usr/bin/entry.sh..." 7 minutes ago Up 7 minutes hassio_supervisor +``` + +After a connection to the container which is containing Home Assistant is made, you will see the log output. + +```bash +root@hassio:/home/ha# docker attach --sig-proxy=false ada5bbfc74f0 +2017-11-28 19:24:30 INFO (MainThread) [homeassistant.core] Bus:Handling + + Hass.io overview +

+ +Keep in mind that there are limitations with this approach. Not all [add-ons](/addons/) will work and some don't make sense to use as the hardware is not present. E.g., use the [SSH community add-on](https://github.com/hassio-addons/addon-ssh) instead of the default [SSH add-on](/addons/ssh/). + diff --git a/source/_posts/2017-12-03-release-59.markdown b/source/_posts/2017-12-03-release-59.markdown new file mode 100644 index 00000000000..98c4d669b2f --- /dev/null +++ b/source/_posts/2017-12-03-release-59.markdown @@ -0,0 +1,431 @@ +--- +layout: post +title: "0.59: Order pizza, Entity Picker, Color Wheel" +description: "If you don't want to create items on our shopping list with HTTP requests, just order pizza!" +date: 2017-12-03 02:00:00 +date_formatted: "December 3, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2017-12-0.59/components.png +--- + +
+ +We are proud to announce the availability of Home Assistant 0.59. To keep you in the loop: This is the second last release in 2017. We have stuck to our bi-weekly release cycle for another year but we decided that we will take a little break between Christmas and New Year. + +## {% linkable_title Dominos Pizza platform %} +With the Dominos Pizza integration made by [@wardcraigj] your home is now taking care that you don't starve. In combination with a [Skybell](/components/skybell/) or a [DoorBird](/components/doorbird/) you will know exactly when the pizza is in front of your door. + +## {% linkable_title Color picker %} +[@NovapaX] created a new color picker. While dragging the color badge with your finger, a badge will appear above your finger so you can see the current color. + +

+ Screenshot of the color wheel. + Screenshot of the color wheel. +

+ +## {% linkable_title Shopping list tweaks %} +[@balloob] has refreshed the shopping list UI to make it more usable. It's now possible to add items by typing, instead of just voice. Also editting has been made easier. + +## {% linkable_title Entity picker %} +[@balloob] improved the way if you want to pick an entity. In the automation editor, the script editor and the service section of the Developer Tools it's much easier to identify the right one! The automation editor will only suggest relevant entities. + +

+ Screenshot of the Entity Picker. + Screenshot of the of the Enitity Picker. +

+ +## {% linkable_title Hass.io Add-ons %} +If you follow our [twitter feed](https://twitter.com/home_assistant) then you may already know that [@frenck](https://github.com/frenck) spent some time to bring new stuff to the [Community Hass.io Add-ons repository](https://github.com/hassio-addons/repository). + +- [Cloud9 IDE](https://github.com/hassio-addons/addon-ide) +- [Terminal support](https://github.com/hassio-addons/addon-terminal) +- New release of the [Tor add-on](https://github.com/hassio-addons/addon-tor) + +## {% linkable_title New Platforms %} + +- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform) +- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform) +- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform) +- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform) +- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform) +- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform) + +## {% linkable_title Release 0.59.1 - December 4 %} + +- Fix Notifications for Android TV ([@danielperna84] - [#10798]) ([notify.nfandroidtv docs]) +- fix iOS component config generation ([@wrboyce] - [#10923]) +- Fix color wheel in group more info dialogs ([@NovapaX] - [#10934]) +- Dominos no order fix ([@wardcraigj] - [#10935]) ([dominos docs]) + +## {% linkable_title Release 0.59.2 - December 6 %} + +- Require FF43 for latest js ([@andrey-git] - [#10941]) +- Fix linksys_ap.py by inheriting DeviceScanner ([@mateuszdrab] - [#10947]) ([device_tracker.linksys_ap docs]) +- Upgrade tellduslive library version (closes https://github.com/home-assistant/home-assistant/issues/10922) ([@molobrakos] - [#10950]) ([tellduslive docs]) +- Allow chime to work for wink siren/chime ([@w1ll1am23] - [#10961]) ([wink docs]) +- Reload closest store on api menu request ([@wardcraigj] - [#10962]) ([dominos docs]) +- Revert pychromecast update ([@balloob] - [#10989]) ([media_player.cast docs]) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change) +- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change) +- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change) +- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change) +- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change) + +## {% linkable_title All changes %} + +- Added unit_of_measurement to Currencylayer ([@arsaboo] - [#10598]) ([sensor.currencylayer docs]) +- Change generic thermostat - any toggle device as heater switch ([@milanvo] - [#10597]) ([climate.generic_thermostat docs]) +- Add hddtemp sensor device even if unreachable. ([@cgtobi] - [#10623]) ([sensor.hddtemp docs]) +- Restore target temperature for generic thermostat ([@tinloaf] - [#10635]) ([climate.generic_thermostat docs]) +- Update lnetatmo ([@gieljnssns] - [#10631]) ([netatmo docs]) +- Support for Unifi direct access device tracker (No unifi controller software) ([@w1ll1am23] - [#10097]) ([device_tracker.unifi_direct docs]) (new-platform) +- Add Facebook Notification tests ([@broox] - [#10642]) +- Change some warnings to info ([@cgarwood] - [#10386]) ([emulated_hue docs]) +- Added cycles config option to LaMetric notifications ([@frittes] - [#10656]) ([notify.lametric docs]) (breaking change) +- Netatmo httperror403 fix ([@gieljnssns] - [#10659]) ([netatmo docs]) +- Bump dev to 0.59.0.dev0 ([@fabaff] - [#10675]) +- Include unit_of_measurement as InfluxDb field ([@PeteBa] - [#9790]) ([influxdb docs]) +- Tahoma platform for Somfy Covers and Sensors ([@philklei] - [#10652]) ([tahoma docs]) ([cover.tahoma docs]) ([sensor.tahoma docs]) (new-platform) +- Populate measurement state field for HA states like home/not_home ([@PeteBa] - [#9833]) ([influxdb docs]) +- Reorganize lint travis builds ([@balloob] - [#10670]) +- Refactored to new global json saving and loading ([@mnigbur] - [#10677]) +- Convert configurator to use markdown ([@balloob] - [#10668]) ([configurator docs]) ([light.hue docs]) +- index.html improvements ([@balloob] - [#10696]) +- Add Arm Custom Bypass to alarm_control_panel ([@uchagani] - [#10697]) ([alarm_control_panel docs]) +- Fix conversation ([@balloob] - [#10686]) ([conversation docs]) +- Shopping list: add item HTTP API ([@balloob] - [#10674]) ([shopping_list docs]) +- Add presence device_class ([@arsaboo] - [#10705]) ([binary_sensor docs]) +- python-miio version bumped for improved device support. ([@syssi] - [#10720]) ([fan.xiaomi_miio docs]) ([light.xiaomi_miio docs]) ([switch.xiaomi_miio docs]) ([vacuum.xiaomi_miio docs]) +- Adding Queue count sensor ([@bigwoof] - [#10723]) ([sensor.sabnzbd docs]) +- Bump pychromecast to 1.0.2 ([@OttoWinter] - [#10728]) ([media_player.cast docs]) +- Fix unit conversion for Sensibo A/C units ([@bryanyork] - [#10692]) ([climate.sensibo docs]) +- Optimised images. Saved 80 KB out of 656 KB. 12.3% overall (up to 32.1% per file) ([@grischard] - [#10735]) +- Add transmission rate ([@svenstaro] - [#10740]) ([sensor.fritzbox_netmonitor docs]) +- Update pytradfri to 4.1.0 ([@lwis] - [#10521]) ([tradfri docs]) ([light.tradfri docs]) +- Use new DoorBirdPy (v0.1.0) ([@Klikini] - [#10734]) ([doorbird docs]) +- Add fan and reduce I/O calls in radiotherm ([@TD22057] - [#10437]) ([climate.radiotherm docs]) +- New Hive Component / Platforms ([@Rendili] - [#9804]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) (new-platform) +- Temporarily fix yahoo weather API issue and add unit test. ([@cgtobi] - [#10737]) ([sensor.yweather docs]) +- Google assistant climate mode fix ([@braddparker] - [#10726]) ([google_assistant.smart_home docs]) +- Protect sensitive information for Amcrest cameras ([@tchellomello] - [#10569]) ([amcrest docs]) ([camera.amcrest docs]) ([sensor.amcrest docs]) +- InfluxDB send retry after IOError ([@janLo] - [#10263]) ([influxdb docs]) +- Add Dominos Pizza platform ([@wardcraigj] - [#10379]) ([dominos docs]) (new-platform) +- Fix name collision when using multiple Hue bridges ([@zBart] - [#10486]) ([light.hue docs]) (breaking change) +- Make shell_command async ([@n8henrie] - [#10741]) ([shell_command docs]) +- Update CODEOWNERS with hive Component / Platforms ([@Rendili] - [#10775]) +- Bump total-connect-client version ([@uchagani] - [#10769]) ([alarm_control_panel.totalconnect docs]) +- Fix scene description formatting. ([@balloob] - [#10785]) +- Fixes #10773: Demo Alarm Broken ([@uchagani] - [#10777]) ([alarm_control_panel.demo docs]) +- Load Ring camera only with Ring Protect plan activated ([@tchellomello] - [#10739]) ([ring docs]) ([camera.ring docs]) +- system_log improvements ([@andrey-git] - [#10709]) ([system_log docs]) +- Fix WUnderground error handling, rework entity methods ([@milanvo] - [#10295]) ([sensor.wunderground docs]) +- Add away_mode_name to arlo alarm control panel ([@bcl1713] - [#10796]) ([alarm_control_panel.arlo docs]) +- Add missing docstring ([@fabaff] - [#10812]) ([notify.pushbullet docs]) +- Cloud cognito switch ([@balloob] - [#10823]) ([cloud docs]) ([cloud.auth_api docs]) ([cloud.iot docs]) +- Added sensor types from telldus server src ([@rasmusbe] - [#10787]) ([sensor.tellduslive docs]) +- Add tts.baidu platform ([@zhujisheng] - [#10724]) ([tts.baidu docs]) (new-platform) +- make RGB values consistent as int. fixes #10766 ([@perosb] - [#10782]) +- Single LEDs in Blinkt support ([@matemaciek] - [#10581]) ([light.blinkt docs]) (breaking change) +- Add debug ([@dgomes] - [#10828]) ([sensor.serial docs]) +- Fix "recently pair device" ([@stephenyeargin] - [#10832]) +- Fixed Yeelight's color temperature conversion to RGB ([@chocomega] - [#10831]) ([light.yeelight docs]) +- Fix for Sensibo with missing temperature ([@andrey-git] - [#10801]) ([climate.sensibo docs]) +- upgrade somecomfort to 0.5.0 ([@dferrante] - [#10834]) ([climate.honeywell docs]) +- Add support for logarithm in templates ([@odinuge] - [#10824]) +- Changing handling for google_assistant groups to treat them as lights. ([@snowzach] - [#10111]) +- Tellduslive update with support for auto config and Local api ([@fredrike] - [#10435]) ([tellduslive docs]) (breaking change) +- KNX: Added config option for broadcasting current time to KNX bus. ([@Julius2342] - [#10654]) ([knx docs]) +- Ecobee set humidity level ([@cbulock] - [#10780]) ([ecobee docs]) ([climate.ecobee docs]) +- Add device class for low battery ([@schmittx] - [#10829]) ([binary_sensor docs]) +- Tellduslive: Use magic constants for battery level. Also, the previous formula for battery level was wrong. ([@molobrakos] - [#10788]) ([tellduslive docs]) +- Add useragent-based detection of JS version ([@andrey-git] - [#10776]) (breaking change) +- add support for multiple execution per execute request ([@perosb] - [#10844]) ([google_assistant.http docs]) +- Upgrade HomeMatic, add devices ([@danielperna84] - [#10845]) ([homematic docs]) ([binary_sensor.homematic docs]) ([sensor.homematic docs]) +- Climate component: add supported_features ([@tinloaf] - [#10658]) ([climate docs]) ([climate.generic_thermostat docs]) ([climate.mqtt docs]) +- Upgrade mutagen to 1.39 ([@fabaff] - [#10851]) ([tts docs]) +- Updated codeowner for Tile device tracker ([@bachya] - [#10861]) +- Revert "KNX: Added config option for broadcasting current time to KNX bus. (#10654)" ([@Julius2342] - [#10874]) ([knx docs]) +- Upgrade distro to 1.1.0 ([@fabaff] - [#10850]) ([updater docs]) +- Bugfix trigger state with multible entities ([@pvizeli] - [#10857]) ([automation.state docs]) +- tellstick fix DEPENDENCIES and update tellcore-net ([@pvizeli] - [#10859]) ([tellstick docs]) ([sensor.tellstick docs]) +- Upgrade aiohttp to 2.3.5 ([@fabaff] - [#10889]) +- Upgrade fastdotcom to 0.0.3 ([@fabaff] - [#10886]) ([sensor.fastdotcom docs]) +- Upgrade schiene to 0.19 ([@fabaff] - [#10887]) ([sensor.deutsche_bahn docs]) +- Xiaomi Vacuum: remove deprecated calls ([@rytilahti] - [#10839]) ([vacuum.xiaomi_miio docs]) +- Create ecobee weather platform ([@PhracturedBlue] - [#10869]) ([ecobee docs]) ([weather.ecobee docs]) (new-platform) +- Microsoft Text-to-speech: Fixing missing en-gb support bug ([@jeroenterheerdt] - [#10429]) ([tts.microsoft docs]) +- Upgrade youtube_dl to 2017.11.26 ([@fabaff] - [#10890]) ([media_extractor docs]) +- Upgrade yarl to 0.15.0 ([@fabaff] - [#10888]) +- Fix tests ([@pvizeli] - [#10891]) +- Refactored WHOIS sensor to resolve assumed key errors ([@GenericStudent] - [#10662]) ([sensor.whois docs]) +- Serve latest extra_html in dev mode ([@andrey-git] - [#10863]) +- Reload groups after saving a change via config API ([@andrey-git] - [#10877]) ([config.group docs]) +- Fix issues from review of ecobee weather component ([@PhracturedBlue] - [#10903]) ([weather.ecobee docs]) +- Bugfix #10902 ([@turbokongen] - [#10904]) ([zwave docs]) + +[#10097]: https://github.com/home-assistant/home-assistant/pull/10097 +[#10111]: https://github.com/home-assistant/home-assistant/pull/10111 +[#10263]: https://github.com/home-assistant/home-assistant/pull/10263 +[#10295]: https://github.com/home-assistant/home-assistant/pull/10295 +[#10379]: https://github.com/home-assistant/home-assistant/pull/10379 +[#10386]: https://github.com/home-assistant/home-assistant/pull/10386 +[#10429]: https://github.com/home-assistant/home-assistant/pull/10429 +[#10435]: https://github.com/home-assistant/home-assistant/pull/10435 +[#10437]: https://github.com/home-assistant/home-assistant/pull/10437 +[#10486]: https://github.com/home-assistant/home-assistant/pull/10486 +[#10521]: https://github.com/home-assistant/home-assistant/pull/10521 +[#10569]: https://github.com/home-assistant/home-assistant/pull/10569 +[#10581]: https://github.com/home-assistant/home-assistant/pull/10581 +[#10597]: https://github.com/home-assistant/home-assistant/pull/10597 +[#10598]: https://github.com/home-assistant/home-assistant/pull/10598 +[#10623]: https://github.com/home-assistant/home-assistant/pull/10623 +[#10631]: https://github.com/home-assistant/home-assistant/pull/10631 +[#10635]: https://github.com/home-assistant/home-assistant/pull/10635 +[#10642]: https://github.com/home-assistant/home-assistant/pull/10642 +[#10652]: https://github.com/home-assistant/home-assistant/pull/10652 +[#10654]: https://github.com/home-assistant/home-assistant/pull/10654 +[#10656]: https://github.com/home-assistant/home-assistant/pull/10656 +[#10658]: https://github.com/home-assistant/home-assistant/pull/10658 +[#10659]: https://github.com/home-assistant/home-assistant/pull/10659 +[#10662]: https://github.com/home-assistant/home-assistant/pull/10662 +[#10668]: https://github.com/home-assistant/home-assistant/pull/10668 +[#10670]: https://github.com/home-assistant/home-assistant/pull/10670 +[#10674]: https://github.com/home-assistant/home-assistant/pull/10674 +[#10675]: https://github.com/home-assistant/home-assistant/pull/10675 +[#10677]: https://github.com/home-assistant/home-assistant/pull/10677 +[#10686]: https://github.com/home-assistant/home-assistant/pull/10686 +[#10692]: https://github.com/home-assistant/home-assistant/pull/10692 +[#10696]: https://github.com/home-assistant/home-assistant/pull/10696 +[#10697]: https://github.com/home-assistant/home-assistant/pull/10697 +[#10705]: https://github.com/home-assistant/home-assistant/pull/10705 +[#10709]: https://github.com/home-assistant/home-assistant/pull/10709 +[#10720]: https://github.com/home-assistant/home-assistant/pull/10720 +[#10723]: https://github.com/home-assistant/home-assistant/pull/10723 +[#10724]: https://github.com/home-assistant/home-assistant/pull/10724 +[#10726]: https://github.com/home-assistant/home-assistant/pull/10726 +[#10728]: https://github.com/home-assistant/home-assistant/pull/10728 +[#10734]: https://github.com/home-assistant/home-assistant/pull/10734 +[#10735]: https://github.com/home-assistant/home-assistant/pull/10735 +[#10737]: https://github.com/home-assistant/home-assistant/pull/10737 +[#10739]: https://github.com/home-assistant/home-assistant/pull/10739 +[#10740]: https://github.com/home-assistant/home-assistant/pull/10740 +[#10741]: https://github.com/home-assistant/home-assistant/pull/10741 +[#10769]: https://github.com/home-assistant/home-assistant/pull/10769 +[#10775]: https://github.com/home-assistant/home-assistant/pull/10775 +[#10776]: https://github.com/home-assistant/home-assistant/pull/10776 +[#10777]: https://github.com/home-assistant/home-assistant/pull/10777 +[#10780]: https://github.com/home-assistant/home-assistant/pull/10780 +[#10782]: https://github.com/home-assistant/home-assistant/pull/10782 +[#10785]: https://github.com/home-assistant/home-assistant/pull/10785 +[#10787]: https://github.com/home-assistant/home-assistant/pull/10787 +[#10788]: https://github.com/home-assistant/home-assistant/pull/10788 +[#10796]: https://github.com/home-assistant/home-assistant/pull/10796 +[#10801]: https://github.com/home-assistant/home-assistant/pull/10801 +[#10812]: https://github.com/home-assistant/home-assistant/pull/10812 +[#10823]: https://github.com/home-assistant/home-assistant/pull/10823 +[#10824]: https://github.com/home-assistant/home-assistant/pull/10824 +[#10828]: https://github.com/home-assistant/home-assistant/pull/10828 +[#10829]: https://github.com/home-assistant/home-assistant/pull/10829 +[#10831]: https://github.com/home-assistant/home-assistant/pull/10831 +[#10832]: https://github.com/home-assistant/home-assistant/pull/10832 +[#10834]: https://github.com/home-assistant/home-assistant/pull/10834 +[#10839]: https://github.com/home-assistant/home-assistant/pull/10839 +[#10844]: https://github.com/home-assistant/home-assistant/pull/10844 +[#10845]: https://github.com/home-assistant/home-assistant/pull/10845 +[#10850]: https://github.com/home-assistant/home-assistant/pull/10850 +[#10851]: https://github.com/home-assistant/home-assistant/pull/10851 +[#10857]: https://github.com/home-assistant/home-assistant/pull/10857 +[#10859]: https://github.com/home-assistant/home-assistant/pull/10859 +[#10861]: https://github.com/home-assistant/home-assistant/pull/10861 +[#10863]: https://github.com/home-assistant/home-assistant/pull/10863 +[#10869]: https://github.com/home-assistant/home-assistant/pull/10869 +[#10874]: https://github.com/home-assistant/home-assistant/pull/10874 +[#10877]: https://github.com/home-assistant/home-assistant/pull/10877 +[#10886]: https://github.com/home-assistant/home-assistant/pull/10886 +[#10887]: https://github.com/home-assistant/home-assistant/pull/10887 +[#10888]: https://github.com/home-assistant/home-assistant/pull/10888 +[#10889]: https://github.com/home-assistant/home-assistant/pull/10889 +[#10890]: https://github.com/home-assistant/home-assistant/pull/10890 +[#10891]: https://github.com/home-assistant/home-assistant/pull/10891 +[#10903]: https://github.com/home-assistant/home-assistant/pull/10903 +[#10904]: https://github.com/home-assistant/home-assistant/pull/10904 +[#9790]: https://github.com/home-assistant/home-assistant/pull/9790 +[#9804]: https://github.com/home-assistant/home-assistant/pull/9804 +[#9833]: https://github.com/home-assistant/home-assistant/pull/9833 +[@GenericStudent]: https://github.com/GenericStudent +[@Julius2342]: https://github.com/Julius2342 +[@Klikini]: https://github.com/Klikini +[@OttoWinter]: https://github.com/OttoWinter +[@PeteBa]: https://github.com/PeteBa +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@Rendili]: https://github.com/Rendili +[@TD22057]: https://github.com/TD22057 +[@andrey-git]: https://github.com/andrey-git +[@arsaboo]: https://github.com/arsaboo +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@bcl1713]: https://github.com/bcl1713 +[@bigwoof]: https://github.com/bigwoof +[@braddparker]: https://github.com/braddparker +[@broox]: https://github.com/broox +[@bryanyork]: https://github.com/bryanyork +[@cbulock]: https://github.com/cbulock +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@chocomega]: https://github.com/chocomega +[@danielperna84]: https://github.com/danielperna84 +[@dferrante]: https://github.com/dferrante +[@dgomes]: https://github.com/dgomes +[@fabaff]: https://github.com/fabaff +[@fredrike]: https://github.com/fredrike +[@frittes]: https://github.com/frittes +[@gieljnssns]: https://github.com/gieljnssns +[@grischard]: https://github.com/grischard +[@janLo]: https://github.com/janLo +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@lwis]: https://github.com/lwis +[@matemaciek]: https://github.com/matemaciek +[@milanvo]: https://github.com/milanvo +[@mnigbur]: https://github.com/mnigbur +[@molobrakos]: https://github.com/molobrakos +[@n8henrie]: https://github.com/n8henrie +[@odinuge]: https://github.com/odinuge +[@perosb]: https://github.com/perosb +[@philklei]: https://github.com/philklei +[@pvizeli]: https://github.com/pvizeli +[@rasmusbe]: https://github.com/rasmusbe +[@rytilahti]: https://github.com/rytilahti +[@schmittx]: https://github.com/schmittx +[@snowzach]: https://github.com/snowzach +[@stephenyeargin]: https://github.com/stephenyeargin +[@svenstaro]: https://github.com/svenstaro +[@syssi]: https://github.com/syssi +[@tchellomello]: https://github.com/tchellomello +[@tinloaf]: https://github.com/tinloaf +[@turbokongen]: https://github.com/turbokongen +[@uchagani]: https://github.com/uchagani +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[@zBart]: https://github.com/zBart +[@zhujisheng]: https://github.com/zhujisheng +[alarm_control_panel docs]: https://home-assistant.io/components/alarm_control_panel/ +[alarm_control_panel.arlo docs]: https://home-assistant.io/components/alarm_control_panel.arlo/ +[alarm_control_panel.demo docs]: https://home-assistant.io/components/alarm_control_panel.demo/ +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[amcrest docs]: https://home-assistant.io/components/amcrest/ +[automation.state docs]: https://home-assistant.io/docs/automation/trigger/#state-trigger +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.homematic docs]: https://home-assistant.io/components/binary_sensor.homematic/ +[camera.amcrest docs]: https://home-assistant.io/components/camera.amcrest/ +[camera.ring docs]: https://home-assistant.io/components/camera.ring/ +[climate docs]: https://home-assistant.io/components/climate/ +[climate.ecobee docs]: https://home-assistant.io/components/climate.ecobee/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.hive docs]: https://home-assistant.io/components/climate.hive/ +[climate.honeywell docs]: https://home-assistant.io/components/climate.honeywell/ +[climate.mqtt docs]: https://home-assistant.io/components/climate.mqtt/ +[climate.radiotherm docs]: https://home-assistant.io/components/climate.radiotherm/ +[climate.sensibo docs]: https://home-assistant.io/components/climate.sensibo/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.auth_api docs]: https://home-assistant.io/components/cloud.auth_api/ +[cloud.iot docs]: https://home-assistant.io/components/cloud.iot/ +[config.group docs]: https://home-assistant.io/components/config.group/ +[configurator docs]: https://home-assistant.io/components/configurator/ +[conversation docs]: https://home-assistant.io/components/conversation/ +[cover.tahoma docs]: https://home-assistant.io/components/cover.tahoma/ +[device_tracker.unifi_direct docs]: https://home-assistant.io/components/device_tracker.unifi_direct/ +[dominos docs]: https://home-assistant.io/components/dominos/ +[doorbird docs]: https://home-assistant.io/components/doorbird/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[emulated_hue docs]: https://home-assistant.io/components/emulated_hue/ +[fan.xiaomi_miio docs]: https://home-assistant.io/components/fan.xiaomi_miio/ +[google_assistant.http docs]: https://home-assistant.io/components/google_assistant.http/ +[google_assistant.smart_home docs]: https://home-assistant.io/components/google_assistant.smart_home/ +[hive docs]: https://home-assistant.io/components/hive/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[influxdb docs]: https://home-assistant.io/components/influxdb/ +[knx docs]: https://home-assistant.io/components/knx/ +[light.blinkt docs]: https://home-assistant.io/components/light.blinkt/ +[light.hive docs]: https://home-assistant.io/components/light.hive/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[light.xiaomi_miio docs]: https://home-assistant.io/components/light.xiaomi_miio/ +[light.yeelight docs]: https://home-assistant.io/components/light.yeelight/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[netatmo docs]: https://home-assistant.io/components/netatmo/ +[notify.lametric docs]: https://home-assistant.io/components/notify.lametric/ +[notify.pushbullet docs]: https://home-assistant.io/components/notify.pushbullet/ +[ring docs]: https://home-assistant.io/components/ring/ +[sensor.amcrest docs]: https://home-assistant.io/components/sensor.amcrest/ +[sensor.currencylayer docs]: https://home-assistant.io/components/sensor.currencylayer/ +[sensor.deutsche_bahn docs]: https://home-assistant.io/components/sensor.deutsche_bahn/ +[sensor.fastdotcom docs]: https://home-assistant.io/components/sensor.fastdotcom/ +[sensor.fritzbox_netmonitor docs]: https://home-assistant.io/components/sensor.fritzbox_netmonitor/ +[sensor.hddtemp docs]: https://home-assistant.io/components/sensor.hddtemp/ +[sensor.hive docs]: https://home-assistant.io/components/sensor.hive/ +[sensor.homematic docs]: https://home-assistant.io/components/sensor.homematic/ +[sensor.sabnzbd docs]: https://home-assistant.io/components/sensor.sabnzbd/ +[sensor.serial docs]: https://home-assistant.io/components/sensor.serial/ +[sensor.tahoma docs]: https://home-assistant.io/components/sensor.tahoma/ +[sensor.tellduslive docs]: https://home-assistant.io/components/sensor.tellduslive/ +[sensor.tellstick docs]: https://home-assistant.io/components/sensor.tellstick/ +[sensor.whois docs]: https://home-assistant.io/components/sensor.whois/ +[sensor.wunderground docs]: https://home-assistant.io/components/sensor.wunderground/ +[sensor.yweather docs]: https://home-assistant.io/components/sensor.yweather/ +[shell_command docs]: https://home-assistant.io/components/shell_command/ +[shopping_list docs]: https://home-assistant.io/components/shopping_list/ +[switch.hive docs]: https://home-assistant.io/components/switch.hive/ +[switch.xiaomi_miio docs]: https://home-assistant.io/components/switch.xiaomi_miio/ +[system_log docs]: https://home-assistant.io/components/system_log/ +[tahoma docs]: https://home-assistant.io/components/tahoma/ +[tellduslive docs]: https://home-assistant.io/components/tellduslive/ +[tellstick docs]: https://home-assistant.io/components/tellstick/ +[tradfri docs]: https://home-assistant.io/components/tradfri/ +[tts docs]: https://home-assistant.io/components/tts/ +[tts.baidu docs]: https://home-assistant.io/components/tts.baidu/ +[tts.microsoft docs]: https://home-assistant.io/components/tts.microsoft/ +[updater docs]: https://home-assistant.io/components/updater/ +[vacuum.xiaomi_miio docs]: https://home-assistant.io/components/vacuum.xiaomi_miio/ +[weather.ecobee docs]: https://home-assistant.io/components/weather.ecobee/ +[zwave docs]: https://home-assistant.io/components/zwave/ +[#10798]: https://github.com/home-assistant/home-assistant/pull/10798 +[#10923]: https://github.com/home-assistant/home-assistant/pull/10923 +[#10934]: https://github.com/home-assistant/home-assistant/pull/10934 +[#10935]: https://github.com/home-assistant/home-assistant/pull/10935 +[@NovapaX]: https://github.com/NovapaX +[@wrboyce]: https://github.com/wrboyce +[notify.nfandroidtv docs]: https://home-assistant.io/components/notify.nfandroidtv/ +[#10941]: https://github.com/home-assistant/home-assistant/pull/10941 +[#10947]: https://github.com/home-assistant/home-assistant/pull/10947 +[#10950]: https://github.com/home-assistant/home-assistant/pull/10950 +[#10961]: https://github.com/home-assistant/home-assistant/pull/10961 +[#10962]: https://github.com/home-assistant/home-assistant/pull/10962 +[#10989]: https://github.com/home-assistant/home-assistant/pull/10989 +[@andrey-git]: https://github.com/andrey-git +[@balloob]: https://github.com/balloob +[@mateuszdrab]: https://github.com/mateuszdrab +[@molobrakos]: https://github.com/molobrakos +[@w1ll1am23]: https://github.com/w1ll1am23 +[@wardcraigj]: https://github.com/wardcraigj +[device_tracker.linksys_ap docs]: https://home-assistant.io/components/device_tracker.linksys_ap/ +[dominos docs]: https://home-assistant.io/components/dominos/ +[media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ +[tellduslive docs]: https://home-assistant.io/components/tellduslive/ +[wink docs]: https://home-assistant.io/components/wink/ diff --git a/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown b/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown new file mode 100644 index 00000000000..ddc52e5ab7c --- /dev/null +++ b/source/_posts/2017-12-17-introducing-home-assistant-cloud.markdown @@ -0,0 +1,105 @@ +--- +layout: post +title: Introducing Home Assistant Cloud +description: "Use Alexa to control any device that is connected to Home Assistant." +date: 2017-12-17 03:00:00 +date_formatted: "December 17, 2017" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Announcements +--- + +Today we’re introducing the next step in the Home Assistant saga: the Home Assistant Cloud. The goal of the Home Assistant Cloud is to bridge the gap between your local Home Assistant instance and services in the cloud while delivering the maximum possible security and privacy. + +The first service that is supported via the Home Assistant Cloud is the Amazon Alexa Smart Home skill. This integration will allow you to control all your devices in Home Assistant via Amazon Alexa. You will be able to say _“Alexa, turn on the kitchen lights”_ and your local Home Assistant will turn on the lights. Because Alexa talks to Home Assistant, it doesn’t matter what kind of lights they are! Anything that is linked to Home Assistant will work. IKEA lights, a 10 year old X10 switch or something you’ve made yourself. As long as Home Assistant can control it, you can control it via Alexa. + +We have designed the Home Assistant Cloud with security in mind. When you activate the new Cloud component, your instance will setup a secure connection to the Home Assistant Cloud. Alexa will deliver messages to our cloud which we will forward to your local instance for processing. We just forward the response back to Alexa. This means that we do not have to store the state of your house in our cloud, we’re just the messenger! + +We are making the beta of the Home Assistant Cloud publicly available today. During the beta period the Home Assistant Cloud will be free to use. We are currently planning to run a beta till March 1, 2018 0:00 UTC. Once the beta ends, the Home Assistant Cloud will be part of our Community Support package which will run at $5 USD/month. + +By subscribing to the Community Support package you will show your support for the Home Assistant organization, its projects and its community. It will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. + +So if you ever felt like donating money to support the development of Home Assistant and Hass.io: sign up for the Home Assistant Cloud! + +### {% linkable_title Why not take donations? %} + +With donations you have to convince people to keep donating and it will be hard to plan around the amount of available money. The biggest concern is what do you do when there is not enough money. We could shut down the servers or again depend on the wallets of our developers. We could run Wikipedia style advertisements for donating, but those are even more annoying than running advertisements. + +## {% linkable_title Getting started %} + +Upgrade Home Assistant to 0.60 and enable the [`cloud`](/components/cloud/) and [`config`](/components/config/) components: + +```yaml +# Example configuration.yaml entry +cloud: +config: +``` + +Now restart Home Assistant and navigate to the configuration panel. It will offer a new cloud section. Here you can create an account and login. Once logged in, your instance will connect to the cloud. + +The next step is to configure Alexa. This can be done by enabling the Home Assistant skill for Alexa and link your Home Assistant cloud account. + +Once you’re done, ask Alexa to discover devices (“Alexa, discover devices”) and you are all set to control them: “Alexa, turn on <device name>”. + +See the [Cloud component configuration](/components/cloud/) to learn how to filter which devices get exposed to Alexa. + +## {% linkable_title FAQ %} + +_Last updated: December 26, 2017_ + +#### {% linkable_title I thought the Home Assistant crew didn't like the cloud? %} + +You are right, [we don't](https://home-assistant.io/blog/2016/01/19/perfect-home-automation/#your-system-should-run-at-home-not-in-the-cloud)! The Home Assistant Cloud is not an alternative to running your local Home Assistant instance. All control and automations are still running locally. + +Instead, the Home Assistant Cloud is an extension of your local instance. It allows to communicate with companies that force us to communicate via a public available cloud endpoint like Amazon Alexa and Google Assistant. + +Home Assistant Cloud is only used to route the messages to your local Home Assistant instance. All messages are processed locally. + +_(Some people have suggested we rename to Home Assistant Bridge to avoid this confusion)_ + +#### {% linkable_title Will Home Assistant and Hass.io remain open source? %} + +Yes. Yes. Yes! Home Assistant is the work of hundreds of developers all working together in creating something amazing. The only thing that will require a subscription is the optional cloud functionality. + +#### {% linkable_title Where is the source code for the Alexa skill? %} + +All messages are processed locally and so the Alexa skill code is part of the Home Assistant code. The Home Assistant Cloud only routes the messages to your local Home Assistant instance. This means that you can audit the source code to check all the things that the cloud can do: + + - [Module that processes incoming cloud messages](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py) + - [Alexa Smart Home v3 skill](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/alexa/smart_home.py) + +#### {% linkable_title What other features will come to the cloud? %} + +We have a lot of ideas! We are not going to make any promises but here are some things that we’re looking into: + +- Google Home / Google Assistant Smart Home skill +- Allow easy linking of other cloud services to Home Assistant. No more local juggling with OAuth flows. For example, link your Fitbit account and the Fitbit component will show up in Home Assistant. +- Encrypted backups of your Hass.io data +- Text to speech powered by AWS Polly +- Generic HTTP cloud endpoint for people to send messages to their local instance. This will allow people to build applications on top of the Home Assistant cloud. +- IFTTT integration +- Alexa shopping list integration + +#### {% linkable_title What countries are supported at launch? %} + +Only US is currently supported. The reason for this limitation is that we need to do extra steps and certifications for each country's Alexa skill. This is in progress but the timeline depends on Amazon. + +#### {% linkable_title How is the connection made to the cloud? %} + +The connection is made using a WebSocket connection over HTTPS. [See the source here](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/cloud/iot.py). + +#### {% linkable_title I think that the price is too high for what I get. %} + +The Home Assistant Cloud functionality is a perk for becoming a supporter of the Home Assistant project. As a supporter you will help fund development, cover our operating costs and gives you access to use Home Assistant Cloud. You are not paying to just maintain the cloud servers. + +The perks offered for being a supporter will also extend over time, as noted in [this answer](#what-other-features-will-come-to-the-cloud). + +#### {% linkable_title What will the Home Assistant organization do with the funds ? %} + +The plan is to hire developers to work fulltime on Home Assistant. We have grown a lot in the last 4 years and the work load is pushing the limits of what our core developers can do. Open source burn out is very common ([1], [2]) and we want to avoid this by moving most organization and release chores to a paid position. + +_For more background on these topics, check out [HASS Podcast 15](https://hasspodcast.io/ha015/)._ + +[1]: https://nolanlawson.com/2017/03/05/what-it-feels-like-to-be-an-open-source-maintainer/ +[2]: https://www.kennethreitz.org/essays/the-reality-of-developer-burnout diff --git a/source/_posts/2017-12-17-release-60.markdown b/source/_posts/2017-12-17-release-60.markdown new file mode 100644 index 00000000000..42849c95152 --- /dev/null +++ b/source/_posts/2017-12-17-release-60.markdown @@ -0,0 +1,357 @@ +--- +layout: post +title: "0.60: Beckhoff/TwinCAT, WebDav, Gearbest, iAlarm" +description: "Use Home Assistant for your production line or track prices and the stock market." +date: 2017-12-17 02:00:00 +date_formatted: "December 17, 2017" +author: Fabian Affolter +author_twitter: fabaff +comments: true +categories: Release-Notes +og_image: /images/blog/2017-12-0.60/components.png +--- + + + +The biggest change for 0.60 will be covered in a separate [blog post](/blog/2017/12/17/introducing-home-assistant-cloud/). Thus, we will keep it short here. Just one thing: This is the last release in 2017. We will be back to our bi-weekly release cycle in 2018. + +A big "Thank you" to all people who supported us to make this release possible. + +## {% linkable_title TwinCAT %} +With the brand-new [ADS (automation device specification)][ads docs] component by [@stlehmann] allows you to hook Home Assistant into this fieldbus independent interface which is often used between Beckhoff devices running with TwinCAT. + +## {% linkable_title WebDav calendar %} +Thanks to [@maxlaverse] Home Assistant support now [WebDav calendars][calendar.caldav docs]. + +## {% linkable_title Tracking prices %} +With the new [`gearbest` sensor][sensor.gearbest docs] there is now an additional sensor available to track the price of a product. + +## {% linkable_title Financial details %} +Yahoo! has discontinued their financial service. To fill this gap we have now the [`alpha_vantage` sensor][sensor.alpha_vantage docs] which is intruded in this release and allows you to monitor the stock market. + +## {% linkable_title New Platforms %} + +- Add iAlarm support ([@RyuzakiKK] - [#10878]) ([alarm_control_panel.ialarm docs]) (new-platform) +- Add Alpha Vantage sensor ([@fabaff] - [#10873]) ([sensor.alpha_vantage docs]) (new-platform) +- Add ADS component ([@stlehmann] - [#10142]) ([ads docs]) ([binary_sensor.ads docs]) ([light.ads docs]) ([sensor.ads docs]) ([switch.ads docs]) (new-platform) +- Gearbest sensor ([@HerrHofrat] - [#10556]) ([sensor.gearbest docs]) (new-platform) +- Add Ziggo Mediabox XL media_player ([@b10m] - [#10514]) ([media_player.ziggo_mediabox_xl docs]) (new-platform) +- Meraki AP Device tracker ([@masarliev] - [#10971]) ([device_tracker.meraki docs]) (new-platform) +- Added Vera scenes ([@alanfischer] - [#10424]) ([vera docs]) ([scene.vera docs]) (new-platform) +- Add support for Canary component and platforms ([@snjoetw] - [#10306]) ([canary docs]) ([camera.canary docs]) ([sensor.canary docs]) (new-platform) +- Add support for Logitech UE Smart Radios. ([@GreenTurtwig] - [#10077]) ([media_player.ue_smart_radio docs]) (new-platform) +- Added support for cover in tellstick ([@perfalk] - [#10858]) ([tellstick docs]) ([cover.tellstick docs]) (new-platform) +- Add a caldav calendar component ([@maxlaverse] - [#10842]) ([calendar.caldav docs]) (new-platform) +- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Update snips to listen on new mqtt topic and utilize rawValue ([@tschmidty69] - [#11020]) ([snips docs]) (breaking change) +- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) +- Use luftdaten module ([@fabaff] - [#10970]) ([sensor.luftdaten docs]) (breaking change) +- ISY994 sensor improvements ([@OverloadUT] - [#10805]) ([isy994 docs]) ([binary_sensor.isy994 docs]) (breaking change) +- Homematic next ([@pvizeli] - [#11156]) ([homematic docs]) (breaking change) + +## {% linkable_title All changes %} + +- Update ecobee version to fix stack-trace issue ([@PhracturedBlue] - [#10894]) ([ecobee docs]) +- Pybotvac multi ([@raymccarthy] - [#10843]) ([neato docs]) +- More declarative timeout syntax for manual alarm control panel. ([@bonzini] - [#10738]) ([alarm_control_panel.manual docs]) ([alarm_control_panel.manual_mqtt docs]) +- Unpacking RESTful sensor JSON results into attributes. ([@nickovs] - [#10753]) ([sensor.rest docs]) +- Bump dev to 0.60.0.dev0 ([@fabaff] - [#10912]) +- Update eliqonline.py ([@molobrakos] - [#10914]) ([sensor.eliqonline docs]) +- Add iAlarm support ([@RyuzakiKK] - [#10878]) ([alarm_control_panel.ialarm docs]) (new-platform) +- Correction of Samsung Power OFF behaviour ([@RiRomain] - [#10907]) ([media_player.samsungtv docs]) +- Add Alpha Vantage sensor ([@fabaff] - [#10873]) ([sensor.alpha_vantage docs]) (new-platform) +- Don't repeat getting receiver name on each update / pushed to denonavr 0.5.5 ([@scarface-4711] - [#10915]) ([media_player.denonavr docs]) +- Add Min and Event Count Metrics To Prometheus ([@bah2830] - [#10530]) ([prometheus docs]) +- Update coveragerc ([@balloob] - [#10931]) +- Report availability of TP-Link smart sockets ([@DanNixon] - [#10933]) ([switch.tplink docs]) +- Set percent unit for battery level so that history displays properly; edited variable name for consistency ([@nbougues] - [#10932]) ([sensor.tesla docs]) +- Export climate status and target temperature to Prometheus ([@hudashot] - [#10919]) ([prometheus docs]) +- Tado ignore invalid devices ([@dasos] - [#10927]) ([climate.tado docs]) +- don't ignore voltage data if sensor data changed ([@PaulAnnekov] - [#10925]) ([xiaomi_aqara docs]) +- Add ADS component ([@stlehmann] - [#10142]) ([ads docs]) ([binary_sensor.ads docs]) ([light.ads docs]) ([sensor.ads docs]) ([switch.ads docs]) (new-platform) +- Gearbest sensor ([@HerrHofrat] - [#10556]) ([sensor.gearbest docs]) (new-platform) +- Add Ziggo Mediabox XL media_player ([@b10m] - [#10514]) ([media_player.ziggo_mediabox_xl docs]) (new-platform) +- Generic thermostat initial_operation_mode ([@ziotibia81] - [#10690]) ([climate.generic_thermostat docs]) +- Use new build path for dev translations ([@armills] - [#10937]) +- Add option to set default hide if away for new devices ([@masarliev] - [#10762]) ([device_tracker docs]) +- Allow disabling the LEDs on TP-Link smart plugs ([@DanNixon] - [#10980]) ([switch.tplink docs]) +- Meraki AP Device tracker ([@masarliev] - [#10971]) ([device_tracker.meraki docs]) (new-platform) +- Update tradfri.py ([@pvizeli] - [#10991]) ([light.tradfri docs]) +- webostv: Ensure source exists before use ([@OddBloke] - [#10959]) ([media_player.webostv docs]) +- Ensure Docker script files uses LF line endings to support Docker for Windows. ([@R1chardTM] - [#10067]) +- Added Vera scenes ([@alanfischer] - [#10424]) ([vera docs]) ([scene.vera docs]) (new-platform) +- Fix Egardia alarm status shown as unknown after restart ([@jeroenterheerdt] - [#11010]) ([alarm_control_panel.egardia docs]) +- Handle OSError when forcibly turning off media_player.samsungtv ([@lwis] - [#10997]) ([media_player.samsungtv docs]) +- Shuffle support in Sonos ([@mar-schmidt] - [#10875]) ([media_player.sonos docs]) +- Add support for Canary component and platforms ([@snjoetw] - [#10306]) ([canary docs]) ([camera.canary docs]) ([sensor.canary docs]) (new-platform) +- Ignore Sonos players with unknown hostnames ([@amelchio] - [#11013]) +- Support LIFX Mini products ([@amelchio] - [#10996]) ([light.lifx docs]) +- Update snips to listen on new mqtt topic and utilize rawValue ([@tschmidty69] - [#11020]) ([snips docs]) (breaking change) +- Change default js version to auto ([@andrey-git] - [#10999]) +- Serialize mochad requests ([@mtreinish] - [#11029]) ([mochad docs]) ([light.mochad docs]) ([switch.mochad docs]) +- In dev mode expose only relevant sources ([@andrey-git] - [#11026]) +- Added force_update for REST sensor ([@foxel] - [#11016]) ([sensor.miflora docs]) ([sensor.mqtt docs]) ([sensor.rest docs]) +- Add support for Logitech UE Smart Radios. ([@GreenTurtwig] - [#10077]) ([media_player.ue_smart_radio docs]) (new-platform) +- Make notify.html5 depend on config ([@balloob] - [#11052]) ([notify.html5 docs]) +- This change fixes the error `OSError: [WinError 193]` on Windows debuggers (i.e. PyCharm) ([@tringler] - [#11034]) +- Added support for cover in tellstick ([@perfalk] - [#10858]) ([tellstick docs]) ([cover.tellstick docs]) (new-platform) +- Add a caldav calendar component ([@maxlaverse] - [#10842]) ([calendar.caldav docs]) (new-platform) +- Add GPS coords to meraki ([@addelovein] - [#10998]) ([device_tracker.meraki docs]) +- Refactor hue to split bridge support from light platform ([@andreacampi] - [#10691]) ([hue docs]) ([light.hue docs]) (breaking change) (new-platform) +- add custom bypass status to total connect ([@uchagani] - [#11042]) ([alarm_control_panel.totalconnect docs]) +- Volvo on call: Optional use of Scandinavian miles. Also add average fuel consumption property ([@molobrakos] - [#11051]) ([volvooncall docs]) ([sensor.volvooncall docs]) +- Allow tradfri to read the available state of the device ([@pvizeli] - [#11056]) ([light.tradfri docs]) +- Upgrade aiohttp to 2.3.6 ([@fabaff] - [#11079]) +- Upgrade yarl to 0.16.0 ([@fabaff] - [#11078]) +- Upgrade psutil to 5.4.2 ([@fabaff] - [#11083]) ([sensor.systemmonitor docs]) +- Upgrade youtube_dl to 2017.12.10 ([@fabaff] - [#11080]) ([media_extractor docs]) +- Upgrade shodan to 1.7.7 ([@fabaff] - [#11084]) ([sensor.shodan docs]) +- Update tellcore-net to 0.4 ([@pvizeli] - [#11087]) ([tellstick docs]) +- Bump pymusiccast to version 0.1.6 ([@jalmeroth] - [#11091]) ([media_player.yamaha_musiccast docs]) +- Use luftdaten module ([@fabaff] - [#10970]) ([sensor.luftdaten docs]) (breaking change) +- Bump pyatv to 0.3.9 ([@postlund] - [#11104]) ([apple_tv docs]) +- Report availability for TP-Link smart bulbs ([@DanNixon] - [#10976]) ([light.tplink docs]) +- Fix incorrect comment. ([@emosenkis] - [#11111]) +- Update Warrant ([@balloob] - [#11101]) ([cloud docs]) +- Fixed typo in automation.py ([@ryanm101] - [#11116]) ([config.automation docs]) +- Add media position properties ([@pschmitt] - [#10076]) ([media_player.liveboxplaytv docs]) +- update pyripple ([@nkgilley] - [#11122]) ([sensor.ripple docs]) +- Skip HASS emulated Hue bridges from detection. ([@andreacampi] - [#11128]) ([hue docs]) +- Always consume the no_throttle keyword argument. ([@andreacampi] - [#11126]) +- Add problem device class ([@armills] - [#11130]) ([binary_sensor docs]) +- set default utc offset to 0 ([@pollett] - [#11114]) ([sensor.efergy docs]) +- Allow using more than one keyboard remote ([@BryanJacobs] - [#11061]) ([keyboard_remote docs]) +- ISY994 sensor improvements ([@OverloadUT] - [#10805]) ([isy994 docs]) ([binary_sensor.isy994 docs]) (breaking change) +- Disable html5 notify dependency ([@balloob] - [#11135]) ([notify.html5 docs]) +- Upgrade Homematic ([@danielperna84] - [#11149]) ([homematic docs]) +- Fix X10 commands for mochad light turn on ([@mtreinish] - [#11146]) ([light.mochad docs]) +- Homematic next ([@pvizeli] - [#11156]) ([homematic docs]) (breaking change) +- Resolve hostnames ([@pvizeli] - [#11160]) ([homematic docs]) +- Perform logbook filtering on the worker thread ([@armills] - [#11161]) ([logbook docs]) +- Don't connect to cloud if subscription expired ([@balloob] - [#11163]) ([cloud docs]) ([cloud.const docs]) +- Add install mode to homematic ([@pvizeli] - [#11164]) ([homematic docs]) +- convert alarmdecoder interface from async to sync ([@PhracturedBlue] - [#11168]) ([alarmdecoder docs]) +- Remove logging ([@cmsimike] - [#11173]) ([sensor.octoprint docs]) +- Revbump to SoCo 0.13 and add support for Night Sound and Speech Enhancement. ([@rbdixon] - [#10765]) ([media_player.sonos docs]) + +[#10067]: https://github.com/home-assistant/home-assistant/pull/10067 +[#10076]: https://github.com/home-assistant/home-assistant/pull/10076 +[#10077]: https://github.com/home-assistant/home-assistant/pull/10077 +[#10142]: https://github.com/home-assistant/home-assistant/pull/10142 +[#10306]: https://github.com/home-assistant/home-assistant/pull/10306 +[#10424]: https://github.com/home-assistant/home-assistant/pull/10424 +[#10514]: https://github.com/home-assistant/home-assistant/pull/10514 +[#10530]: https://github.com/home-assistant/home-assistant/pull/10530 +[#10556]: https://github.com/home-assistant/home-assistant/pull/10556 +[#10690]: https://github.com/home-assistant/home-assistant/pull/10690 +[#10691]: https://github.com/home-assistant/home-assistant/pull/10691 +[#10738]: https://github.com/home-assistant/home-assistant/pull/10738 +[#10753]: https://github.com/home-assistant/home-assistant/pull/10753 +[#10762]: https://github.com/home-assistant/home-assistant/pull/10762 +[#10765]: https://github.com/home-assistant/home-assistant/pull/10765 +[#10805]: https://github.com/home-assistant/home-assistant/pull/10805 +[#10842]: https://github.com/home-assistant/home-assistant/pull/10842 +[#10843]: https://github.com/home-assistant/home-assistant/pull/10843 +[#10858]: https://github.com/home-assistant/home-assistant/pull/10858 +[#10873]: https://github.com/home-assistant/home-assistant/pull/10873 +[#10875]: https://github.com/home-assistant/home-assistant/pull/10875 +[#10878]: https://github.com/home-assistant/home-assistant/pull/10878 +[#10894]: https://github.com/home-assistant/home-assistant/pull/10894 +[#10907]: https://github.com/home-assistant/home-assistant/pull/10907 +[#10912]: https://github.com/home-assistant/home-assistant/pull/10912 +[#10914]: https://github.com/home-assistant/home-assistant/pull/10914 +[#10915]: https://github.com/home-assistant/home-assistant/pull/10915 +[#10919]: https://github.com/home-assistant/home-assistant/pull/10919 +[#10925]: https://github.com/home-assistant/home-assistant/pull/10925 +[#10927]: https://github.com/home-assistant/home-assistant/pull/10927 +[#10931]: https://github.com/home-assistant/home-assistant/pull/10931 +[#10932]: https://github.com/home-assistant/home-assistant/pull/10932 +[#10933]: https://github.com/home-assistant/home-assistant/pull/10933 +[#10937]: https://github.com/home-assistant/home-assistant/pull/10937 +[#10959]: https://github.com/home-assistant/home-assistant/pull/10959 +[#10970]: https://github.com/home-assistant/home-assistant/pull/10970 +[#10971]: https://github.com/home-assistant/home-assistant/pull/10971 +[#10976]: https://github.com/home-assistant/home-assistant/pull/10976 +[#10980]: https://github.com/home-assistant/home-assistant/pull/10980 +[#10991]: https://github.com/home-assistant/home-assistant/pull/10991 +[#10996]: https://github.com/home-assistant/home-assistant/pull/10996 +[#10997]: https://github.com/home-assistant/home-assistant/pull/10997 +[#10998]: https://github.com/home-assistant/home-assistant/pull/10998 +[#10999]: https://github.com/home-assistant/home-assistant/pull/10999 +[#11010]: https://github.com/home-assistant/home-assistant/pull/11010 +[#11013]: https://github.com/home-assistant/home-assistant/pull/11013 +[#11016]: https://github.com/home-assistant/home-assistant/pull/11016 +[#11020]: https://github.com/home-assistant/home-assistant/pull/11020 +[#11026]: https://github.com/home-assistant/home-assistant/pull/11026 +[#11029]: https://github.com/home-assistant/home-assistant/pull/11029 +[#11034]: https://github.com/home-assistant/home-assistant/pull/11034 +[#11042]: https://github.com/home-assistant/home-assistant/pull/11042 +[#11051]: https://github.com/home-assistant/home-assistant/pull/11051 +[#11052]: https://github.com/home-assistant/home-assistant/pull/11052 +[#11056]: https://github.com/home-assistant/home-assistant/pull/11056 +[#11061]: https://github.com/home-assistant/home-assistant/pull/11061 +[#11078]: https://github.com/home-assistant/home-assistant/pull/11078 +[#11079]: https://github.com/home-assistant/home-assistant/pull/11079 +[#11080]: https://github.com/home-assistant/home-assistant/pull/11080 +[#11083]: https://github.com/home-assistant/home-assistant/pull/11083 +[#11084]: https://github.com/home-assistant/home-assistant/pull/11084 +[#11087]: https://github.com/home-assistant/home-assistant/pull/11087 +[#11091]: https://github.com/home-assistant/home-assistant/pull/11091 +[#11101]: https://github.com/home-assistant/home-assistant/pull/11101 +[#11104]: https://github.com/home-assistant/home-assistant/pull/11104 +[#11111]: https://github.com/home-assistant/home-assistant/pull/11111 +[#11114]: https://github.com/home-assistant/home-assistant/pull/11114 +[#11116]: https://github.com/home-assistant/home-assistant/pull/11116 +[#11122]: https://github.com/home-assistant/home-assistant/pull/11122 +[#11126]: https://github.com/home-assistant/home-assistant/pull/11126 +[#11128]: https://github.com/home-assistant/home-assistant/pull/11128 +[#11130]: https://github.com/home-assistant/home-assistant/pull/11130 +[#11135]: https://github.com/home-assistant/home-assistant/pull/11135 +[#11146]: https://github.com/home-assistant/home-assistant/pull/11146 +[#11149]: https://github.com/home-assistant/home-assistant/pull/11149 +[#11156]: https://github.com/home-assistant/home-assistant/pull/11156 +[#11160]: https://github.com/home-assistant/home-assistant/pull/11160 +[#11161]: https://github.com/home-assistant/home-assistant/pull/11161 +[#11163]: https://github.com/home-assistant/home-assistant/pull/11163 +[#11164]: https://github.com/home-assistant/home-assistant/pull/11164 +[#11168]: https://github.com/home-assistant/home-assistant/pull/11168 +[#11173]: https://github.com/home-assistant/home-assistant/pull/11173 +[@BryanJacobs]: https://github.com/BryanJacobs +[@DanNixon]: https://github.com/DanNixon +[@GreenTurtwig]: https://github.com/GreenTurtwig +[@HerrHofrat]: https://github.com/HerrHofrat +[@OddBloke]: https://github.com/OddBloke +[@OverloadUT]: https://github.com/OverloadUT +[@PaulAnnekov]: https://github.com/PaulAnnekov +[@PhracturedBlue]: https://github.com/PhracturedBlue +[@R1chardTM]: https://github.com/R1chardTM +[@RiRomain]: https://github.com/RiRomain +[@RyuzakiKK]: https://github.com/RyuzakiKK +[@addelovein]: https://github.com/addelovein +[@alanfischer]: https://github.com/alanfischer +[@amelchio]: https://github.com/amelchio +[@andreacampi]: https://github.com/andreacampi +[@andrey-git]: https://github.com/andrey-git +[@armills]: https://github.com/armills +[@b10m]: https://github.com/b10m +[@bah2830]: https://github.com/bah2830 +[@balloob]: https://github.com/balloob +[@bonzini]: https://github.com/bonzini +[@cmsimike]: https://github.com/cmsimike +[@danielperna84]: https://github.com/danielperna84 +[@dasos]: https://github.com/dasos +[@emosenkis]: https://github.com/emosenkis +[@fabaff]: https://github.com/fabaff +[@foxel]: https://github.com/foxel +[@hudashot]: https://github.com/hudashot +[@jalmeroth]: https://github.com/jalmeroth +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[@lwis]: https://github.com/lwis +[@mar-schmidt]: https://github.com/mar-schmidt +[@masarliev]: https://github.com/masarliev +[@maxlaverse]: https://github.com/maxlaverse +[@molobrakos]: https://github.com/molobrakos +[@mtreinish]: https://github.com/mtreinish +[@nbougues]: https://github.com/nbougues +[@nickovs]: https://github.com/nickovs +[@nkgilley]: https://github.com/nkgilley +[@perfalk]: https://github.com/perfalk +[@pollett]: https://github.com/pollett +[@postlund]: https://github.com/postlund +[@pschmitt]: https://github.com/pschmitt +[@pvizeli]: https://github.com/pvizeli +[@raymccarthy]: https://github.com/raymccarthy +[@rbdixon]: https://github.com/rbdixon +[@ryanm101]: https://github.com/ryanm101 +[@scarface-4711]: https://github.com/scarface-4711 +[@snjoetw]: https://github.com/snjoetw +[@stlehmann]: https://github.com/stlehmann +[@tringler]: https://github.com/tringler +[@tschmidty69]: https://github.com/tschmidty69 +[@uchagani]: https://github.com/uchagani +[@ziotibia81]: https://github.com/ziotibia81 +[ads docs]: https://home-assistant.io/components/ads/ +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[alarm_control_panel.ialarm docs]: https://home-assistant.io/components/alarm_control_panel.ialarm/ +[alarm_control_panel.manual docs]: https://home-assistant.io/components/alarm_control_panel.manual/ +[alarm_control_panel.manual_mqtt docs]: https://home-assistant.io/components/alarm_control_panel.manual_mqtt/ +[alarm_control_panel.totalconnect docs]: https://home-assistant.io/components/alarm_control_panel.totalconnect/ +[alarmdecoder docs]: https://home-assistant.io/components/alarmdecoder/ +[apple_tv docs]: https://home-assistant.io/components/apple_tv/ +[binary_sensor docs]: https://home-assistant.io/components/binary_sensor/ +[binary_sensor.ads docs]: https://home-assistant.io/components/binary_sensor.ads/ +[binary_sensor.isy994 docs]: https://home-assistant.io/components/binary_sensor.isy994/ +[calendar.caldav docs]: https://home-assistant.io/components/calendar.caldav/ +[camera.canary docs]: https://home-assistant.io/components/camera.canary/ +[canary docs]: https://home-assistant.io/components/canary/ +[climate.generic_thermostat docs]: https://home-assistant.io/components/climate.generic_thermostat/ +[climate.tado docs]: https://home-assistant.io/components/climate.tado/ +[cloud docs]: https://home-assistant.io/components/cloud/ +[cloud.const docs]: https://home-assistant.io/components/cloud.const/ +[config.automation docs]: https://home-assistant.io/components/config.automation/ +[cover.tellstick docs]: https://home-assistant.io/components/cover.tellstick/ +[device_tracker docs]: https://home-assistant.io/components/device_tracker/ +[device_tracker.meraki docs]: https://home-assistant.io/components/device_tracker.meraki/ +[ecobee docs]: https://home-assistant.io/components/ecobee/ +[homematic docs]: https://home-assistant.io/components/homematic/ +[hue docs]: https://home-assistant.io/components/hue/ +[isy994 docs]: https://home-assistant.io/components/isy994/ +[keyboard_remote docs]: https://home-assistant.io/components/keyboard_remote/ +[light.ads docs]: https://home-assistant.io/components/light.ads/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[light.lifx docs]: https://home-assistant.io/components/light.lifx/ +[light.mochad docs]: https://home-assistant.io/components/light.mochad/ +[light.tplink docs]: https://home-assistant.io/components/light.tplink/ +[light.tradfri docs]: https://home-assistant.io/components/light.tradfri/ +[logbook docs]: https://home-assistant.io/components/logbook/ +[media_extractor docs]: https://home-assistant.io/components/media_extractor/ +[media_player.denonavr docs]: https://home-assistant.io/components/media_player.denonavr/ +[media_player.liveboxplaytv docs]: https://home-assistant.io/components/media_player.liveboxplaytv/ +[media_player.samsungtv docs]: https://home-assistant.io/components/media_player.samsungtv/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ +[media_player.ue_smart_radio docs]: https://home-assistant.io/components/media_player.ue_smart_radio/ +[media_player.webostv docs]: https://home-assistant.io/components/media_player.webostv/ +[media_player.yamaha_musiccast docs]: https://home-assistant.io/components/media_player.yamaha_musiccast/ +[media_player.ziggo_mediabox_xl docs]: https://home-assistant.io/components/media_player.ziggo_mediabox_xl/ +[mochad docs]: https://home-assistant.io/components/mochad/ +[neato docs]: https://home-assistant.io/components/neato/ +[notify.html5 docs]: https://home-assistant.io/components/notify.html5/ +[prometheus docs]: https://home-assistant.io/components/prometheus/ +[scene.vera docs]: https://home-assistant.io/components/scene.vera/ +[sensor.ads docs]: https://home-assistant.io/components/sensor.ads/ +[sensor.alpha_vantage docs]: https://home-assistant.io/components/sensor.alpha_vantage/ +[sensor.canary docs]: https://home-assistant.io/components/sensor.canary/ +[sensor.efergy docs]: https://home-assistant.io/components/sensor.efergy/ +[sensor.eliqonline docs]: https://home-assistant.io/components/sensor.eliqonline/ +[sensor.gearbest docs]: https://home-assistant.io/components/sensor.gearbest/ +[sensor.luftdaten docs]: https://home-assistant.io/components/sensor.luftdaten/ +[sensor.miflora docs]: https://home-assistant.io/components/sensor.miflora/ +[sensor.mqtt docs]: https://home-assistant.io/components/sensor.mqtt/ +[sensor.octoprint docs]: https://home-assistant.io/components/sensor.octoprint/ +[sensor.rest docs]: https://home-assistant.io/components/sensor.rest/ +[sensor.ripple docs]: https://home-assistant.io/components/sensor.ripple/ +[sensor.shodan docs]: https://home-assistant.io/components/sensor.shodan/ +[sensor.systemmonitor docs]: https://home-assistant.io/components/sensor.systemmonitor/ +[sensor.tesla docs]: https://home-assistant.io/components/sensor.tesla/ +[sensor.volvooncall docs]: https://home-assistant.io/components/sensor.volvooncall/ +[snips docs]: https://home-assistant.io/components/snips/ +[switch.ads docs]: https://home-assistant.io/components/switch.ads/ +[switch.mochad docs]: https://home-assistant.io/components/switch.mochad/ +[switch.tplink docs]: https://home-assistant.io/components/switch.tplink/ +[tellstick docs]: https://home-assistant.io/components/tellstick/ +[vera docs]: https://home-assistant.io/components/vera/ +[volvooncall docs]: https://home-assistant.io/components/volvooncall/ +[xiaomi_aqara docs]: https://home-assistant.io/components/xiaomi_aqara/ diff --git a/source/_posts/2017-12-28-thank-you.markdown b/source/_posts/2017-12-28-thank-you.markdown new file mode 100644 index 00000000000..f5632f7d6fe --- /dev/null +++ b/source/_posts/2017-12-28-thank-you.markdown @@ -0,0 +1,44 @@ +--- +layout: post +title: "Thank You" +description: "Thanks to all our contributors, dependencies and companies that help make Home Assistant awesome." +date: 2017-12-28 22:00:00 UTC +date_formatted: "December 28, 2017" +author: Fabian affolter +author_twitter: fabaff +comments: true +categories: Community +og_image: +--- + +2017 is almost over and this means it's time to do a little recap of our 2017. This was a great year for Home Assistant. Again, we were able to stick to our bi-weekly release cycle. There were 25 releases over the year and each release included the work of around 60 contributors. + +We got 10.000 stars on [GitHub], reached 10.000 commits in the main repo (over 4300 were made in 2017), got a [Thomas-Krenn award], participated in [Hacktoberfest], we have now almost 1000 integrations (the exact number is 938), we [moved to Discord] and we are up to over 2 million pageviews per month on our forum. Beside that we announced the [Home Assistant cloud] and have regular [Home Assistant Podcasts]. + +We also do not want to forget to mention [Hass.io] and all the great Hass.io add-ons. + +Uff, what a year...Thank you, dear community for being so helpful, supportive and awesome 🙇. + +A very big thanks goes out to the developers of the Python language and all the open source libraries and tools that Home Assistant depends on. You are the foundation for our success and all of you can be proud of yourself. + +We would also like to thanks all the companies that offer their services for free to open source projects. Without these we would not be able to operate at our speed or scale. Thank you [GitHub], [TravisCI], [CloudFlare], [Discord] and [Discourse]! + +Some of us are taking a break and spending some quality time with family and loved ones. + +Stay tuned for more Home Assistant awesomeness in 2018. We will keep the pace but first: Happy New Year! + +-- Home Assistant Organization + +[CloudFlare]: https://CloudFlare.com +[Discord]: https://discordapp.com +[Discourse]: https://Discourse.com +[forum]: https://community.home-assistant.io +[GitHub]: https://GitHub.com +[Hacktoberfest]: /blog/2017/11/04/release-57/#hacktoberfest +[Hass.io]: https://home-assistant.io/hassio/ +[Home Assistant cloud]: /blog/2017/12/17/introducing-home-assistant-cloud/ +[Home Assistant Podcasts]: https://hasspodcast.io/ +[moved to Discord]: /blog/2017/07/03/home-assistant-is-moving-to-discord/ +[Thomas-Krenn award]: /blog/2017/04/01/thomas-krenn-award/ +[TravisCI]: https://Travis-ci.org + diff --git a/source/assets/jwplayer/glow/controlbar/background.png b/source/assets/jwplayer/glow/controlbar/background.png index c2824cc432c..e932cb09a99 100644 Binary files a/source/assets/jwplayer/glow/controlbar/background.png and b/source/assets/jwplayer/glow/controlbar/background.png differ diff --git a/source/assets/jwplayer/glow/controlbar/divider.png b/source/assets/jwplayer/glow/controlbar/divider.png index 77cd829a4b5..021685f4b0a 100644 Binary files a/source/assets/jwplayer/glow/controlbar/divider.png and b/source/assets/jwplayer/glow/controlbar/divider.png differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png index e06aa50ca29..9d3291e8e59 100644 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButton.png and b/source/assets/jwplayer/glow/controlbar/fullscreenButton.png differ diff --git a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png index d2bc4fc75a8..ef55acc7ca4 100644 Binary files a/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png and b/source/assets/jwplayer/glow/controlbar/fullscreenButtonOver.png differ diff --git a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png index 96fe7bb0242..091cc054a2a 100644 Binary files a/source/assets/jwplayer/glow/controlbar/muteButtonOver.png and b/source/assets/jwplayer/glow/controlbar/muteButtonOver.png differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png index 22295074029..f7c23cd5ba1 100644 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButton.png and b/source/assets/jwplayer/glow/controlbar/normalscreenButton.png differ diff --git a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png index 15db44d4e66..1f6aebd73ae 100644 Binary files a/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png and b/source/assets/jwplayer/glow/controlbar/normalscreenButtonOver.png differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButton.png b/source/assets/jwplayer/glow/controlbar/pauseButton.png index e399bf34cb9..e6ab8aa55a3 100644 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButton.png and b/source/assets/jwplayer/glow/controlbar/pauseButton.png differ diff --git a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png index 409d89d29a3..8dcf0c5bfcc 100644 Binary files a/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png and b/source/assets/jwplayer/glow/controlbar/pauseButtonOver.png differ diff --git a/source/assets/jwplayer/glow/controlbar/playButtonOver.png b/source/assets/jwplayer/glow/controlbar/playButtonOver.png index 3fe284845fa..6898116a3b7 100644 Binary files a/source/assets/jwplayer/glow/controlbar/playButtonOver.png and b/source/assets/jwplayer/glow/controlbar/playButtonOver.png differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png index 73b371abbca..5e151d69c8c 100644 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png and b/source/assets/jwplayer/glow/controlbar/timeSliderBuffer.png differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png index 72322171bd5..e89fc5c6afc 100644 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png and b/source/assets/jwplayer/glow/controlbar/timeSliderCapLeft.png differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png index 626444a66a7..ae47e9018b3 100644 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png and b/source/assets/jwplayer/glow/controlbar/timeSliderCapRight.png differ diff --git a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png index 27851dfdf36..63692be0b75 100644 Binary files a/source/assets/jwplayer/glow/controlbar/timeSliderRail.png and b/source/assets/jwplayer/glow/controlbar/timeSliderRail.png differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButton.png b/source/assets/jwplayer/glow/controlbar/unmuteButton.png index 3658453cfc1..6433b4d476a 100644 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButton.png and b/source/assets/jwplayer/glow/controlbar/unmuteButton.png differ diff --git a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png index 138ebb35ba8..206be887e0a 100644 Binary files a/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png and b/source/assets/jwplayer/glow/controlbar/unmuteButtonOver.png differ diff --git a/source/assets/jwplayer/glow/display/background.png b/source/assets/jwplayer/glow/display/background.png index 391152f5e2f..eb7c709d39b 100644 Binary files a/source/assets/jwplayer/glow/display/background.png and b/source/assets/jwplayer/glow/display/background.png differ diff --git a/source/assets/jwplayer/glow/display/bufferIcon.png b/source/assets/jwplayer/glow/display/bufferIcon.png index a3819c1ef19..10ae39736ad 100644 Binary files a/source/assets/jwplayer/glow/display/bufferIcon.png and b/source/assets/jwplayer/glow/display/bufferIcon.png differ diff --git a/source/assets/jwplayer/glow/display/muteIcon.png b/source/assets/jwplayer/glow/display/muteIcon.png index e0408bbda5e..8e078ae4387 100644 Binary files a/source/assets/jwplayer/glow/display/muteIcon.png and b/source/assets/jwplayer/glow/display/muteIcon.png differ diff --git a/source/assets/jwplayer/glow/display/playIcon.png b/source/assets/jwplayer/glow/display/playIcon.png index cb384278722..269e4311bcb 100644 Binary files a/source/assets/jwplayer/glow/display/playIcon.png and b/source/assets/jwplayer/glow/display/playIcon.png differ diff --git a/source/assets/jwplayer/glow/dock/button.png b/source/assets/jwplayer/glow/dock/button.png index 391152f5e2f..eb7c709d39b 100644 Binary files a/source/assets/jwplayer/glow/dock/button.png and b/source/assets/jwplayer/glow/dock/button.png differ diff --git a/source/assets/jwplayer/glow/playlist/item.png b/source/assets/jwplayer/glow/playlist/item.png index 812592c3ce5..825911836fb 100644 Binary files a/source/assets/jwplayer/glow/playlist/item.png and b/source/assets/jwplayer/glow/playlist/item.png differ diff --git a/source/assets/jwplayer/glow/playlist/itemOver.png b/source/assets/jwplayer/glow/playlist/itemOver.png index 549f3721d6b..cbb7e34d85f 100644 Binary files a/source/assets/jwplayer/glow/playlist/itemOver.png and b/source/assets/jwplayer/glow/playlist/itemOver.png differ diff --git a/source/assets/jwplayer/glow/playlist/sliderCapBottom.png b/source/assets/jwplayer/glow/playlist/sliderCapBottom.png index 048cc623be9..61c6dfbbba0 100644 Binary files a/source/assets/jwplayer/glow/playlist/sliderCapBottom.png and b/source/assets/jwplayer/glow/playlist/sliderCapBottom.png differ diff --git a/source/assets/jwplayer/glow/playlist/sliderCapTop.png b/source/assets/jwplayer/glow/playlist/sliderCapTop.png index 65c463a0c04..4d6dae6290f 100644 Binary files a/source/assets/jwplayer/glow/playlist/sliderCapTop.png and b/source/assets/jwplayer/glow/playlist/sliderCapTop.png differ diff --git a/source/assets/jwplayer/glow/playlist/sliderRail.png b/source/assets/jwplayer/glow/playlist/sliderRail.png index 121778affdc..2b455a6ff85 100644 Binary files a/source/assets/jwplayer/glow/playlist/sliderRail.png and b/source/assets/jwplayer/glow/playlist/sliderRail.png differ diff --git a/source/assets/jwplayer/glow/sharing/embedScreen.png b/source/assets/jwplayer/glow/sharing/embedScreen.png index b4059754baf..dabce156c23 100644 Binary files a/source/assets/jwplayer/glow/sharing/embedScreen.png and b/source/assets/jwplayer/glow/sharing/embedScreen.png differ diff --git a/source/assets/jwplayer/glow/sharing/shareIcon.png b/source/assets/jwplayer/glow/sharing/shareIcon.png index eae1d4e7559..b659a20c3b5 100644 Binary files a/source/assets/jwplayer/glow/sharing/shareIcon.png and b/source/assets/jwplayer/glow/sharing/shareIcon.png differ diff --git a/source/assets/jwplayer/glow/sharing/shareScreen.png b/source/assets/jwplayer/glow/sharing/shareScreen.png index 695ec949f86..2435d3777eb 100644 Binary files a/source/assets/jwplayer/glow/sharing/shareScreen.png and b/source/assets/jwplayer/glow/sharing/shareScreen.png differ diff --git a/source/demo/favicon-192x192.png b/source/demo/favicon-192x192.png index 2959efdf89d..3cd8005a166 100644 Binary files a/source/demo/favicon-192x192.png and b/source/demo/favicon-192x192.png differ diff --git a/source/demo/favicon-apple-180x180.png b/source/demo/favicon-apple-180x180.png index 20117d00f22..03b5dd7780c 100644 Binary files a/source/demo/favicon-apple-180x180.png and b/source/demo/favicon-apple-180x180.png differ diff --git a/source/demo/images/config_philips_hue.jpg b/source/demo/images/config_philips_hue.jpg index f10d258bf34..fd31dc7bbbf 100644 Binary files a/source/demo/images/config_philips_hue.jpg and b/source/demo/images/config_philips_hue.jpg differ diff --git a/source/demo/images/thrones.jpg b/source/demo/images/thrones.jpg index 227a9955380..0c57c03db5d 100644 Binary files a/source/demo/images/thrones.jpg and b/source/demo/images/thrones.jpg differ diff --git a/source/demo/webcam.jpg b/source/demo/webcam.jpg index 4d6b94348c4..215a4da7b06 100644 Binary files a/source/demo/webcam.jpg and b/source/demo/webcam.jpg differ diff --git a/source/developers/architecture_components.markdown b/source/developers/architecture_components.markdown index 095a4f73781..ac05c93ba03 100644 --- a/source/developers/architecture_components.markdown +++ b/source/developers/architecture_components.markdown @@ -51,7 +51,7 @@ In the event of the sun setting: Turn on the lights ``` -Look [here](https://github.com/home-assistant/home-assistant/blob/master/config/custom_components/example.py) for a comprehensive example of a home automation component. +Look [here](/python_component_automation/) for a comprehensive example of a home automation component. ### {% linkable_title The full picture %} diff --git a/source/developers/component_discovery.markdown b/source/developers/component_discovery.markdown index bdf66005e86..2911adaa26d 100644 --- a/source/developers/component_discovery.markdown +++ b/source/developers/component_discovery.markdown @@ -2,7 +2,7 @@ layout: page title: "Component Discovery" description: "How to make component discovery work." -date: 2016-04-16 14:24 -07:00 +date: 2017-11-23 07:27 +02:00 sidebar: true comments: false sharing: true @@ -23,22 +23,38 @@ To have your device be discovered, you will have to extend the NetDisco library ### {% linkable_title Listening to `SERVICE_DISCOVERED` events %} -From your component, you will have to set up the listening for specific services. Given below is an example how one would listen for discovered Chromecasts: +From your component, you will have to set up the listening for specific services. Given below is an example how one would listen for a discovered AwesomeDevice: ```python -from homeassistant.loader import get_component +from homeassistant.components.discovery import SERVICE_AWESOMEDEVICE +from homeassistant.helpers import discovery + +DOMAIN = 'awesomedevice' + +DEPENDENCIES = ['http'] def setup(hass, config): - discovery = get_component('discovery') + cfg = config.get(DOMAIN) - def chromecast_discovered(service, info): - """ Called when a Chromecast has been discovered. """ - print("Discovered a new Chromecast: {}".format(info)) + def device_discovered(service, info): + """ Called when a Awesome device has been discovered. """ + print("Discovered a new Awesome device: {}".format(info)) discovery.listen( - hass, discovery.services.GOOGLE_CAST, chromecast_discovered) + hass, SERVICE_AWESOMEDEVICE, device_discovered) + + return True ``` ### {% linkable_title Auto-loading your component upon discovery %} -The Discovery component is capable of setting up your components before firing the `SERVICE_DISCOVERD` event. To do this you will have to update the [`SERVICE_HANDLERS`](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py#L29) constant in [the `discovery` component](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py). +The `discovery` component is capable of setting up your components before firing the `EVENT_PLATFORM_DISCOVERED` event. To do this you will have to update the [`SERVICE_HANDLERS`](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py#L40) constant in [the `discovery` component](https://github.com/home-assistant/home-assistant/blob/dev/homeassistant/components/discovery.py): + +```python +SERVICE_AWESOMEDEVICE = 'awesomedevice' + +SERVICE_HANDLERS = { + ... + SERVICE_AWESOMEDEVICE: ('awesomedevice', None), +} +``` diff --git a/source/developers/credits.markdown b/source/developers/credits.markdown index b9ccc04b948..00acf5e0df5 100644 --- a/source/developers/credits.markdown +++ b/source/developers/credits.markdown @@ -2,7 +2,7 @@ layout: page title: "Credits" description: "Credits for the developers who contributed to Home Assistant." -date: 2017-11-24 23:17:36 +0000 +date: 2017-12-24 22:59:57 +0000 sidebar: true comments: false sharing: true @@ -13,26 +13,27 @@ This page contains a list of people who have contributed in one way or another t ### {% linkable_title Author %} -- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6012 total commits to the home-assistant organization, 3571 commits to home-assistant, 1305 commits to home-assistant.github.io, 649 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS") +- [Paulus Schoutsen (@balloob)](https://github.com/balloob "6082 total commits to the home-assistant organization, 3596 commits to home-assistant, 1324 commits to home-assistant.github.io, 674 commits to home-assistant-polymer, 244 commits to home-assistant-js, 118 commits to netdisco, 44 commits to home-assistant-js-websocket, 26 commits to hass-release, 14 commits to home-assistant-assets, 8 commits to example-custom-config, 7 commits to micropython-home-assistant, 6 commits to LabelBot, 5 commits to hassio, 3 commits to hassio-addons, 2 commits to hassio-addons-example, 2 commits to hassio-build, 2 commits to python-hassbian, 2 commits to issue-bot, 2 commits to lambda-home-assistant-github, 1 commit to home-assistant-notebooks, 1 commit to home-assistant-iOS, 1 commit to warrant") ### {% linkable_title Contributors %} (in alphabetical order) - [7even (@hwikene)](https://github.com/hwikene "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Aaron Bach (@bachya)](https://github.com/bachya "33 total commits to the home-assistant organization, 21 commits to home-assistant, 12 commits to home-assistant.github.io") +- [Aaron Bach (@bachya)](https://github.com/bachya "35 total commits to the home-assistant organization, 23 commits to home-assistant, 12 commits to home-assistant.github.io") - [Aaron Linville (@linville)](https://github.com/linville "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Aaron Morris (@Morrisai)](https://github.com/Morrisai "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Aaron Polley (@xarnze)](https://github.com/xarnze "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Abhishek Anand (@aa755)](https://github.com/aa755 "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-js-websocket, 1 commit to home-assistant-polymer") +- [Abílio Costa (@abmantis)](https://github.com/abmantis "20 total commits to the home-assistant organization, 12 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-js-websocket, 1 commit to netdisco, 1 commit to home-assistant-polymer") - [Adam (@SilvrrGIT)](https://github.com/SilvrrGIT "9 total commits to the home-assistant organization, 8 commits to home-assistant.github.io, 1 commit to home-assistant") - [Adam Baxter (@voltagex)](https://github.com/voltagex "2 total commits to the home-assistant organization, 1 commit to home-assistant-polymer, 1 commit to home-assistant") -- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Adam Cooper (@GenericStudent)](https://github.com/GenericStudent "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") - [Adam Dullage (@Dullage)](https://github.com/Dullage "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Adam Garcia (@pancho-villa)](https://github.com/pancho-villa "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Adam Mills (@armills)](https://github.com/armills "260 total commits to the home-assistant organization, 144 commits to home-assistant, 63 commits to home-assistant-polymer, 49 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") +- [Adam Mills (@armills)](https://github.com/armills "284 total commits to the home-assistant organization, 148 commits to home-assistant, 81 commits to home-assistant-polymer, 51 commits to home-assistant.github.io, 3 commits to home-assistant-js, 1 commit to homebridge-homeassistant") - [Adam Stone (@astone123)](https://github.com/astone123 "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Adde Lovein (@addelovein)](https://github.com/addelovein "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Adrian Popa (@mad-ady)](https://github.com/mad-ady "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Adrien Ball (@adrienball)](https://github.com/adrienball "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Adrien Brault (@adrienbrault)](https://github.com/adrienbrault "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -40,16 +41,16 @@ This page contains a list of people who have contributed in one way or another t - [aetolus (@aetolus)](https://github.com/aetolus "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [AHS (@ahofelt)](https://github.com/ahofelt "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Alan Bowman (@alanbowman)](https://github.com/alanbowman "4 total commits to the home-assistant organization, 4 commits to home-assistant") -- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "18 total commits to the home-assistant organization, 15 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Alan Fischer (@alanfischer)](https://github.com/alanfischer "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") - [Alasdair Nicol (@alasdairnicol)](https://github.com/alasdairnicol "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Albatross (@DyingAlbatross)](https://github.com/DyingAlbatross "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Albert Lee (@trisk)](https://github.com/trisk "13 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io") - [Alberto Arias Maestro (@albertoarias)](https://github.com/albertoarias "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Alessandro Mogavero (@alexmogavero)](https://github.com/alexmogavero "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Alex (@MungoRae)](https://github.com/MungoRae "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Alex (@asbach)](https://github.com/asbach "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Alex (@alexrockt)](https://github.com/alexrockt "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "2 total commits to the home-assistant organization, 2 commits to hassio-addons") +- [Alex Barcelo (@alexbarcelo)](https://github.com/alexbarcelo "3 total commits to the home-assistant organization, 3 commits to hassio-addons") - [Alex Harvey (@infamy)](https://github.com/infamy "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") - [Alex Mekkering (@AlexMekkering)](https://github.com/AlexMekkering "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Alex MF (@adsmf)](https://github.com/adsmf "1 total commits to the home-assistant organization, 1 commit to hassio-addons") @@ -61,11 +62,12 @@ This page contains a list of people who have contributed in one way or another t - [Alfie Day (@Azelphur)](https://github.com/Azelphur "12 total commits to the home-assistant organization, 12 commits to home-assistant") - [Aliaksandr (@minchik)](https://github.com/minchik "7 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to appdaemon, 2 commits to home-assistant") - [Allan Glen (@allanglen)](https://github.com/allanglen "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "115 total commits to the home-assistant organization, 67 commits to home-assistant.github.io, 45 commits to home-assistant, 1 commit to pi-gen, 1 commit to home-assistant-polymer, 1 commit to hassio-addons") +- [Alok Saboo (@arsaboo)](https://github.com/arsaboo "119 total commits to the home-assistant organization, 69 commits to home-assistant.github.io, 45 commits to home-assistant, 3 commits to home-assistant-polymer, 1 commit to hassio-addons, 1 commit to pi-gen") - [amigian74 (@amigian74)](https://github.com/amigian74 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [amorsillo (@AndrewMorsillo)](https://github.com/AndrewMorsillo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Anders Fogh Eriksen (@Fogh)](https://github.com/Fogh "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "117 total commits to the home-assistant organization, 84 commits to home-assistant, 31 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Anders Melchiorsen (@amelchio)](https://github.com/amelchio "120 total commits to the home-assistant organization, 86 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Andrea Campi (@andreacampi)](https://github.com/andreacampi "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") - [Andrea Falcone (@asfalcone)](https://github.com/asfalcone "5 total commits to the home-assistant organization, 5 commits to issue-bot") - [Andreas Björshammar (@abjorshammar)](https://github.com/abjorshammar "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Andreas Cambitsis (@acambitsis)](https://github.com/acambitsis "1 total commits to the home-assistant organization, 1 commit to home-assistant") @@ -74,17 +76,17 @@ This page contains a list of people who have contributed in one way or another t - [Andreas Renberg (@IQAndreas)](https://github.com/IQAndreas "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Andreea-Daniela Ene (@AndreeaEne)](https://github.com/AndreeaEne "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Andrej Friesen (@ajfriesen)](https://github.com/ajfriesen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Andrew (@aoakeson)](https://github.com/aoakeson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Andrew (@aneisch)](https://github.com/aneisch "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "626 total commits to the home-assistant organization, 494 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io") +- [Andrew (@aoakeson)](https://github.com/aoakeson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Andrew Cockburn (@acockburn)](https://github.com/acockburn "662 total commits to the home-assistant organization, 530 commits to appdaemon, 88 commits to hadashboard, 25 commits to scenegen, 19 commits to home-assistant.github.io") - [Andrew LeCody (@aceat64)](https://github.com/aceat64 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Andrew Smith (@andrewmichaelsmith)](https://github.com/andrewmichaelsmith "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Andrew Stock (@watchforstock)](https://github.com/watchforstock "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Andrew Thigpen (@andythigpen)](https://github.com/andythigpen "33 total commits to the home-assistant organization, 32 commits to home-assistant, 1 commit to home-assistant-js") - [Andrew Williams (@nikdoof)](https://github.com/nikdoof "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [andrew-curtis (@andrew-curtis)](https://github.com/andrew-curtis "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") -- [Andrey (@andrey-git)](https://github.com/andrey-git "227 total commits to the home-assistant organization, 97 commits to home-assistant, 96 commits to home-assistant-polymer, 34 commits to home-assistant.github.io") -- [Andrey Kupreychik (@foxel)](https://github.com/foxel "4 total commits to the home-assistant organization, 4 commits to home-assistant") +- [Andrey (@andrey-git)](https://github.com/andrey-git "253 total commits to the home-assistant organization, 109 commits to home-assistant-polymer, 108 commits to home-assistant, 36 commits to home-assistant.github.io") +- [Andrey Kupreychik (@foxel)](https://github.com/foxel "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Andrzej (@andriej)](https://github.com/andriej "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") - [Andréas Lundgren (@adevade)](https://github.com/adevade "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Andy Castille (@Klikini)](https://github.com/Klikini "9 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -96,56 +98,53 @@ This page contains a list of people who have contributed in one way or another t - [Anton Glukhov (@toxxin)](https://github.com/toxxin "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Anton Lundin (@glance-)](https://github.com/glance- "7 total commits to the home-assistant organization, 6 commits to home-assistant, 1 commit to netdisco") - [Anton Sarukhanov (@antsar)](https://github.com/antsar "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Antonio Párraga Navarro (@aparraga)](https://github.com/aparraga "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Antony Messerli (@antonym)](https://github.com/antonym "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Anubhaw Arya (@aarya123)](https://github.com/aarya123 "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [apo-mak (@apo-mak)](https://github.com/apo-mak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Ardetus (@Ardetus)](https://github.com/Ardetus "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Ardi Mehist (@omgapuppy)](https://github.com/omgapuppy "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [Ari Lotter (@arilotter)](https://github.com/arilotter "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant") -- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Ardi Mehist (@omgapuppy)](https://github.com/omgapuppy "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Ari Lotter (@arilotter)](https://github.com/arilotter "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [arjenfvellinga (@arjenfvellinga)](https://github.com/arjenfvellinga "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Arno (@aetjansen)](https://github.com/aetjansen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [ArrayLabs (@arraylabs)](https://github.com/arraylabs "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Arthur Leonard Andersen (@leoc)](https://github.com/leoc "9 total commits to the home-assistant organization, 9 commits to home-assistant") - [Arttu mahlakaarto (@amahlaka)](https://github.com/amahlaka "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Ashton Campbell (@AshtonCampbell)](https://github.com/AshtonCampbell "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "12 total commits to the home-assistant organization, 9 commits to homebridge-homeassistant, 3 commits to home-assistant") -- [Audric Schiltknecht (@chemicalstorm)](https://github.com/chemicalstorm "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to home-assistant") +- [Assaf Inbal (@shmuelzon)](https://github.com/shmuelzon "11 total commits to the home-assistant organization, 9 commits to homebridge-homeassistant, 2 commits to home-assistant") +- [Audric Schiltknecht (@chemicalstorm)](https://github.com/chemicalstorm "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Audun Ytterdal (@auduny)](https://github.com/auduny "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [aufano (@aufano)](https://github.com/aufano "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Austin (@trainman419)](https://github.com/trainman419 "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Avraham David Gelbfish (@adgelbfish)](https://github.com/adgelbfish "2 total commits to the home-assistant organization, 1 commit to hadashboard, 1 commit to pi-gen") - [azeroth12 (@azeroth12)](https://github.com/azeroth12 "1 total commits to the home-assistant organization, 1 commit to appdaemon") +- [Balázs Suhajda (@suhajdab)](https://github.com/suhajdab "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Baran Kaynak (@barankaynak)](https://github.com/barankaynak "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Barry Williams (@bazwilliams)](https://github.com/bazwilliams "10 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to netdisco, 2 commits to home-assistant.github.io") -- [Bart S. (@zBart)](https://github.com/zBart "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Bart274 (@Bart274)](https://github.com/Bart274 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Bas Schipper (@basschipper)](https://github.com/basschipper "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") - [bastshoes (@bastshoes)](https://github.com/bastshoes "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Beat (@bdurrer)](https://github.com/bdurrer "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer, 1 commit to home-assistant") +- [bcl1713 (@bcl1713)](https://github.com/bcl1713 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Beat (@bdurrer)](https://github.com/bdurrer "11 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Ben (@unixben)](https://github.com/unixben "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ben Bangert (@bbangert)](https://github.com/bbangert "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Ben Doerr (@bendoerr)](https://github.com/bendoerr "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ben Nuttall (@bennuttall)](https://github.com/bennuttall "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Ben Origas (@borigas)](https://github.com/borigas "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Ben Randall (@veleek)](https://github.com/veleek "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Ben Thomas (@wazoo)](https://github.com/wazoo "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Ben Van Mechelen (@benvm)](https://github.com/benvm "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Benjamin Parzella (@bparzella)](https://github.com/bparzella "1 total commits to the home-assistant organization, 1 commit to pi-gen") -- [Benoit BESSET (@bbesset)](https://github.com/bbesset "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio, 1 commit to hassio-build, 1 commit to home-assistant-polymer") +- [bestlibre (@bestlibre)](https://github.com/bestlibre "16 total commits to the home-assistant organization, 8 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to hassio, 1 commit to home-assistant-polymer") - [BigMoby (@bigmoby)](https://github.com/bigmoby "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Bill Nelson (@xhostplus)](https://github.com/xhostplus "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [BioSehnsucht (@BioSehnsucht)](https://github.com/BioSehnsucht "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant, 2 commits to home-assistant-polymer") - [Bjarni Ivarsson (@bjarniivarsson)](https://github.com/bjarniivarsson "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant-polymer") +- [Björn Orri (@bjornorri)](https://github.com/bjornorri "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") - [Björn Ramberg (@bjorne)](https://github.com/bjorne "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Blanyal D'Souza (@blanyal)](https://github.com/blanyal "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Blender3D (@Blender3D)](https://github.com/Blender3D "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Boced66 (@boced66)](https://github.com/boced66 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [boltgolt (@Boltgolt)](https://github.com/Boltgolt "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [boojew (@boojew)](https://github.com/boojew "8 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 2 commits to home-assistant") - [Boris K (@bokub)](https://github.com/bokub "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Boyi C (@fanthos)](https://github.com/fanthos "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Brad Buran (@bburan)](https://github.com/bburan "1 total commits to the home-assistant organization, 1 commit to home-assistant") +- [Boyi C (@fanthos)](https://github.com/fanthos "11 total commits to the home-assistant organization, 6 commits to home-assistant-polymer, 3 commits to home-assistant, 2 commits to home-assistant.github.io") +- [bpoirriez (@bpoirriez)](https://github.com/bpoirriez "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Brad Dixon (@rbdixon)](https://github.com/rbdixon "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Brad Johnson (@bradsk88)](https://github.com/bradsk88 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Brahma Fear (@brahmafear)](https://github.com/brahmafear "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Bram Kragten (@bramkragten)](https://github.com/bramkragten "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") @@ -153,35 +152,34 @@ This page contains a list of people who have contributed in one way or another t - [Brandon Weeks (@brandonweeks)](https://github.com/brandonweeks "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [brburns (@brburns)](https://github.com/brburns "2 total commits to the home-assistant organization, 2 commits to netdisco") - [Brendon Baumgartner (@bbrendon)](https://github.com/bbrendon "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") -- [Brent Hughes (@bah2830)](https://github.com/bah2830 "26 total commits to the home-assistant organization, 17 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") +- [Brent Hughes (@bah2830)](https://github.com/bah2830 "27 total commits to the home-assistant organization, 18 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to netdisco") - [Brent Kerlin (@bkerlin)](https://github.com/bkerlin "1 total commits to the home-assistant organization, 1 commit to hassio-build") -- [Brent Saltzman (@brent20)](https://github.com/brent20 "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Brenton Zillins (@bzillins)](https://github.com/bzillins "1 total commits to the home-assistant organization, 1 commit to home-assistant") -- [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "44 total commits to the home-assistant organization, 27 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") +- [Brent Saltzman (@brent20)](https://github.com/brent20 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") +- [Brian Cribbs (@cribbstechnologies)](https://github.com/cribbstechnologies "43 total commits to the home-assistant organization, 26 commits to home-assistant, 15 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Brian Fitzgerald (@Brianfit)](https://github.com/Brianfit "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Brian Gehrich (@bgehrich)](https://github.com/bgehrich "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [Brian Hopkins (@btotharye)](https://github.com/btotharye "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Brian J King (@brianjking)](https://github.com/brianjking "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") +- [Brian Jinwright (@bjinwright)](https://github.com/bjinwright "159 total commits to the home-assistant organization, 159 commits to warrant") - [Britton Clapp (@britton-clapp)](https://github.com/britton-clapp "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [BRUH Automation (@bruhautomation)](https://github.com/bruhautomation "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") - [Bruno Adele (@badele)](https://github.com/badele "22 total commits to the home-assistant organization, 22 commits to home-assistant") - [Bruno Binet (@bbinet)](https://github.com/bbinet "1 total commits to the home-assistant organization, 1 commit to hassio-build") - [Bryce Edwards (@hoopty)](https://github.com/hoopty "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [c727 (@c727)](https://github.com/c727 "13 total commits to the home-assistant organization, 9 commits to home-assistant-polymer, 4 commits to home-assistant.github.io") +- [c727 (@c727)](https://github.com/c727 "16 total commits to the home-assistant organization, 10 commits to home-assistant-polymer, 6 commits to home-assistant.github.io") - [Caius Cioran (@caiuspb)](https://github.com/caiuspb "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Caleb (@finish06)](https://github.com/finish06 "7 total commits to the home-assistant organization, 7 commits to home-assistant") -- [Cameron Bulock (@cbulock)](https://github.com/cbulock "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco") -- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "89 total commits to the home-assistant organization, 81 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to fabric-home-assistant, 1 commit to hassbian-scripts, 1 commit to homebridge-homeassistant") +- [Cameron Bulock (@cbulock)](https://github.com/cbulock "5 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [Carlo Costanzo (@CCOSTAN)](https://github.com/CCOSTAN "92 total commits to the home-assistant organization, 84 commits to home-assistant.github.io, 5 commits to home-assistant, 1 commit to hassbian-scripts, 1 commit to fabric-home-assistant, 1 commit to homebridge-homeassistant") - [carlosmgr (@carlosmgr)](https://github.com/carlosmgr "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Carter (@BluGeni)](https://github.com/BluGeni "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [cdce8p (@cdce8p)](https://github.com/cdce8p "14 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant-polymer, 2 commits to home-assistant") - [Cecron (@Cecron)](https://github.com/Cecron "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Cenk Gündoğan (@cgundogan)](https://github.com/cgundogan "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Cezar Sá Espinola (@cezarsa)](https://github.com/cezarsa "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [cgtobi (@cgtobi)](https://github.com/cgtobi "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io") +- [cgtobi (@cgtobi)](https://github.com/cgtobi "21 total commits to the home-assistant organization, 12 commits to home-assistant, 9 commits to home-assistant.github.io") - [chanders (@chanders)](https://github.com/chanders "2 total commits to the home-assistant organization, 2 commits to hadashboard") - [Charles Blonde (@CharlesBlonde)](https://github.com/CharlesBlonde "19 total commits to the home-assistant organization, 12 commits to home-assistant, 7 commits to home-assistant.github.io") -- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "16 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 5 commits to home-assistant") +- [Charles Garwood (@cgarwood)](https://github.com/cgarwood "17 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 6 commits to home-assistant") - [Charles Spirakis (@srcLurker)](https://github.com/srcLurker "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") - [Chayoung You (@yous)](https://github.com/yous "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Check your git settings! (@invalid-email-address)](https://github.com/invalid-email-address "1 total commits to the home-assistant organization, 1 commit to libcoap") @@ -198,7 +196,7 @@ This page contains a list of people who have contributed in one way or another t - [Christian Brædstrup (@LinuxChristian)](https://github.com/LinuxChristian "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Christian Lasarczyk (@ChrisLasar)](https://github.com/ChrisLasar "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Christian Studer (@cstuder)](https://github.com/cstuder "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to home-assistant") +- [ChristianKuehnel (@ChristianKuehnel)](https://github.com/ChristianKuehnel "12 total commits to the home-assistant organization, 6 commits to home-assistant, 6 commits to home-assistant.github.io") - [Christoffer Kylvåg (@christoe)](https://github.com/christoe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Christoph Wagner (@Christoph-Wagner)](https://github.com/Christoph-Wagner "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Christopher Viel (@Chris-V)](https://github.com/Chris-V "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -209,17 +207,21 @@ This page contains a list of people who have contributed in one way or another t - [Claus F. Strasburger (@cfstras)](https://github.com/cfstras "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Colin Dunn (@colindunn)](https://github.com/colindunn "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Colin O'Dell (@colinodell)](https://github.com/colinodell "24 total commits to the home-assistant organization, 13 commits to home-assistant, 11 commits to home-assistant.github.io") +- [Colin Teubner (@netopiax)](https://github.com/netopiax "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Constantine Grantcharov (@conz27)](https://github.com/conz27 "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Constantine Poltyrev (@shprota)](https://github.com/shprota "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Corban Mailloux (@corbanmailloux)](https://github.com/corbanmailloux "18 total commits to the home-assistant organization, 18 commits to home-assistant.github.io") - [Corey Pauley (@devspacenine)](https://github.com/devspacenine "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [corneyl (@corneyl)](https://github.com/corneyl "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "18 total commits to the home-assistant organization, 13 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Craig J. Ward (@wardcraigj)](https://github.com/wardcraigj "23 total commits to the home-assistant organization, 17 commits to home-assistant, 6 commits to home-assistant.github.io") +- [CTLS (@CTLS)](https://github.com/CTLS "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [cxlwill (@cxlwill)](https://github.com/cxlwill "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [Dale Higgs (@dale3h)](https://github.com/dale3h "33 total commits to the home-assistant organization, 21 commits to home-assistant.github.io, 10 commits to home-assistant, 1 commit to hassbot, 1 commit to homebridge-homeassistant") - [Dan (@danieljkemp)](https://github.com/danieljkemp "23 total commits to the home-assistant organization, 16 commits to home-assistant, 7 commits to home-assistant.github.io") +- [Dan Chen (@djchen)](https://github.com/djchen "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Cinnamon (@Cinntax)](https://github.com/Cinntax "14 total commits to the home-assistant organization, 12 commits to home-assistant, 2 commits to home-assistant.github.io") - [Dan Faulknor (@danielfaulknor)](https://github.com/danielfaulknor "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Dan Nixon (@DanNixon)](https://github.com/DanNixon "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Dan Ports (@drkp)](https://github.com/drkp "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Dan Sarginson (@dansarginson)](https://github.com/dansarginson "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Dan Smith (@kk7ds)](https://github.com/kk7ds "84 total commits to the home-assistant organization, 68 commits to home-assistant, 14 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") @@ -227,22 +229,23 @@ This page contains a list of people who have contributed in one way or another t - [Dani (@danichispa)](https://github.com/danichispa "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") - [Daniel Escoz (@Darkhogg)](https://github.com/Darkhogg "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Daniel Høyer Iversen (@Danielhiversen)](https://github.com/Danielhiversen "364 total commits to the home-assistant organization, 242 commits to home-assistant, 119 commits to home-assistant.github.io, 3 commits to home-assistant-polymer") -- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "69 total commits to the home-assistant organization, 36 commits to home-assistant.github.io, 30 commits to home-assistant, 3 commits to hassio-addons") +- [Daniel Perna (@danielperna84)](https://github.com/danielperna84 "75 total commits to the home-assistant organization, 38 commits to home-assistant.github.io, 34 commits to home-assistant, 3 commits to hassio-addons") - [Daniel Peukert (@dpeukert)](https://github.com/dpeukert "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Daniel Schaal (@schaal)](https://github.com/schaal "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Daniel Stone (@daniel-stoneuk)](https://github.com/daniel-stoneuk "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Daniel Trnka (@trnila)](https://github.com/trnila "2 total commits to the home-assistant organization, 2 commits to appdaemon") +- [Daniel Watkins (@OddBloke)](https://github.com/OddBloke "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Daniel Welch (@danielwelch)](https://github.com/danielwelch "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [DanielXYZ2000 (@DanielXYZ2000)](https://github.com/DanielXYZ2000 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to hassio-addons") - [Daniyar Yeralin (@yeralin)](https://github.com/yeralin "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [dasos (@dasos)](https://github.com/dasos "10 total commits to the home-assistant organization, 6 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") +- [dasos (@dasos)](https://github.com/dasos "11 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to netdisco") - [datafx (@datafx)](https://github.com/datafx "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Dave (@d4v3d)](https://github.com/d4v3d "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Dave Banks (@djbanks)](https://github.com/djbanks "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Dave J (@kxtcd950)](https://github.com/kxtcd950 "3 total commits to the home-assistant organization, 3 commits to hassbian-scripts") - [DaveSergeant (@dethpickle)](https://github.com/dethpickle "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [David (@fanaticDavid)](https://github.com/fanaticDavid "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant") -- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [David (@fanaticDavid)](https://github.com/fanaticDavid "13 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to home-assistant-polymer") +- [David De Sloovere (@DavidDeSloovere)](https://github.com/DavidDeSloovere "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [David Grant (@davegravy)](https://github.com/davegravy "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [David Jackson (@David-Jackson)](https://github.com/David-Jackson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [David McNett (@nugget)](https://github.com/nugget "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io") @@ -261,53 +264,58 @@ This page contains a list of people who have contributed in one way or another t - [Dennis Karpienski (@TheRealLink)](https://github.com/TheRealLink "24 total commits to the home-assistant organization, 15 commits to home-assistant-polymer, 6 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") - [Dennis Sutch (@sutch)](https://github.com/sutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Derek (@itchaboy)](https://github.com/itchaboy "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") +- [Derek Brooks (@broox)](https://github.com/broox "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [dersger (@dersger)](https://github.com/dersger "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to home-assistant-polymer") - [devdelay (@devdelay)](https://github.com/devdelay "16 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant, 4 commits to homebridge-homeassistant") - [Devon Peet (@dpeet)](https://github.com/dpeet "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Diogo Gomes (@dgomes)](https://github.com/dgomes "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Diogo Gomes (@dgomes)](https://github.com/dgomes "10 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io") +- [DoloresHA (@DoloresHA)](https://github.com/DoloresHA "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Domantas (@Dohxis)](https://github.com/Dohxis "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Dougal Matthews (@d0ugal)](https://github.com/d0ugal "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [dramamoose (@dramamoose)](https://github.com/dramamoose "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [DrewSK (@dzsquared)](https://github.com/dzsquared "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") -- [DubhAd (@DubhAd)](https://github.com/DubhAd "74 total commits to the home-assistant organization, 74 commits to home-assistant.github.io") +- [DubhAd (@DubhAd)](https://github.com/DubhAd "95 total commits to the home-assistant organization, 95 commits to home-assistant.github.io") - [Duoxilian (@Duoxilian)](https://github.com/Duoxilian "11 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 5 commits to home-assistant") -- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 2 commits to home-assistant") -- [Egor Tsinko (@etsinko)](https://github.com/etsinko "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to netdisco") +- [ebpetway (@ebpetway)](https://github.com/ebpetway "55 total commits to the home-assistant organization, 55 commits to warrant") +- [Edwin Smulders (@Dutchy-)](https://github.com/Dutchy- "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Egor Tsinko (@etsinko)](https://github.com/etsinko "11 total commits to the home-assistant organization, 9 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Eitan Mosenkis (@emosenkis)](https://github.com/emosenkis "6 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [eldanb (@eldanb)](https://github.com/eldanb "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Eleftherios Chamakiotis (@lexam79)](https://github.com/lexam79 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Ellis Percival (@flyte)](https://github.com/flyte "31 total commits to the home-assistant organization, 25 commits to home-assistant, 6 commits to home-assistant.github.io") - [Emil Horpen Hetty (@emilhetty)](https://github.com/emilhetty "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [emlt (@emlt)](https://github.com/emlt "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [endor-force (@endor-force)](https://github.com/endor-force "2 total commits to the home-assistant organization, 1 commit to hassio-build, 1 commit to hassio-addons") +- [endor-force (@endor-force)](https://github.com/endor-force "9 total commits to the home-assistant organization, 4 commits to hassio-addons, 4 commits to home-assistant.github.io, 1 commit to hassio-build") - [engrbm87 (@engrbm87)](https://github.com/engrbm87 "3 total commits to the home-assistant organization, 3 commits to appdaemon") - [Eric Hagan (@ehagan)](https://github.com/ehagan "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Eric Oosting (@eoosting)](https://github.com/eoosting "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Eric Rolf (@xrolfex)](https://github.com/xrolfex "13 total commits to the home-assistant organization, 13 commits to home-assistant") - [Eric Thompson (@er0ck)](https://github.com/er0ck "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "101 total commits to the home-assistant organization, 92 commits to home-assistant, 6 commits to home-assistant.github.io, 3 commits to netdisco") +- [Erik Eriksson (@molobrakos)](https://github.com/molobrakos "111 total commits to the home-assistant organization, 97 commits to home-assistant, 11 commits to home-assistant.github.io, 3 commits to netdisco") - [Erik-jan Riemers (@riemers)](https://github.com/riemers "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") - [ettisan (@ettisan)](https://github.com/ettisan "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Eugenio Panadero (@azogue)](https://github.com/azogue "76 total commits to the home-assistant organization, 45 commits to home-assistant, 25 commits to home-assistant.github.io, 3 commits to homebridge-homeassistant, 3 commits to home-assistant-polymer") -- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4298 total commits to the home-assistant organization, 2777 commits to home-assistant.github.io, 1431 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket") +- [Ezra Bowden (@bn0)](https://github.com/bn0 "2 total commits to the home-assistant organization, 2 commits to warrant") +- [Fabian Affolter (@fabaff)](https://github.com/fabaff "4390 total commits to the home-assistant organization, 2846 commits to home-assistant.github.io, 1454 commits to home-assistant, 29 commits to home-assistant-notebooks, 24 commits to home-assistant-assets, 11 commits to hassio-build, 10 commits to home-assistant-polymer, 8 commits to netdisco, 5 commits to hassio-addons, 2 commits to hassio, 1 commit to home-assistant-js-websocket") - [Fabian Heredia Montiel (@fabianhjr)](https://github.com/fabianhjr "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Fabrizio Furnari (@fabfurnari)](https://github.com/fabfurnari "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [fakezeta (@fakezeta)](https://github.com/fakezeta "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Fares Rihani (@anchepiece)](https://github.com/anchepiece "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Felix (@xifle)](https://github.com/xifle "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "48 total commits to the home-assistant organization, 48 commits to issue-bot") +- [Felix Krause (@KrauseFx)](https://github.com/KrauseFx "27 total commits to the home-assistant organization, 27 commits to issue-bot") - [Ferry van Zeelst (@StaticCube)](https://github.com/StaticCube "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") - [Finbarr Brady (@fbradyirl)](https://github.com/fbradyirl "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Florian Holzapfel (@florianholzapfel)](https://github.com/florianholzapfel "11 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io, 3 commits to netdisco") -- [Florian Klien (@flowolf)](https://github.com/flowolf "15 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Florian Klien (@flowolf)](https://github.com/flowolf "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") - [florincosta (@florincosta)](https://github.com/florincosta "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") - [Fonta (@f0nt4)](https://github.com/f0nt4 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Franck Nijhof (@frenck)](https://github.com/frenck "13 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 1 commit to hassio") +- [Franck Nijhof (@frenck)](https://github.com/frenck "16 total commits to the home-assistant organization, 12 commits to home-assistant.github.io, 2 commits to hassio, 2 commits to home-assistant-polymer") - [Frank (@syphernl)](https://github.com/syphernl "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Frantz (@rofrantz)](https://github.com/rofrantz "2 total commits to the home-assistant organization, 2 commits to netdisco") - [François Martin (@martinfrancois)](https://github.com/martinfrancois "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Frederic Hemberger (@fhemberger)](https://github.com/fhemberger "93 total commits to the home-assistant organization, 93 commits to home-assistant.github.io") - [Fredrik Fjeld (@fredrikfjeld)](https://github.com/fredrikfjeld "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "175 total commits to the home-assistant organization, 74 commits to hassbian-scripts, 69 commits to home-assistant.github.io, 27 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Fredrik Lindqvist (@Landrash)](https://github.com/Landrash "176 total commits to the home-assistant organization, 74 commits to hassbian-scripts, 70 commits to home-assistant.github.io, 27 commits to pi-gen, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [freol35241 (@freol35241)](https://github.com/freol35241 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [froz (@froz)](https://github.com/froz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [fuga2136 (@fuga2136)](https://github.com/fuga2136 "13 total commits to the home-assistant organization, 13 commits to home-assistant.github.io") @@ -329,22 +337,23 @@ This page contains a list of people who have contributed in one way or another t - [GMFalka (@GMFalka)](https://github.com/GMFalka "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Gopal Kildoliya (@gopalkildoliya)](https://github.com/gopalkildoliya "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") - [Graeme Smith (@Instagraeme)](https://github.com/Instagraeme "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "80 total commits to the home-assistant organization, 73 commits to home-assistant.github.io, 7 commits to home-assistant") +- [Grant McConnaughey (@grantmcconnaughey)](https://github.com/grantmcconnaughey "8 total commits to the home-assistant organization, 8 commits to warrant") +- [GreenTurtwig (@GreenTurtwig)](https://github.com/GreenTurtwig "83 total commits to the home-assistant organization, 75 commits to home-assistant.github.io, 8 commits to home-assistant") - [Greg Dowling (@pavoni)](https://github.com/pavoni "250 total commits to the home-assistant organization, 223 commits to home-assistant, 25 commits to home-assistant.github.io, 2 commits to netdisco") -- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Greg Laabs (@OverloadUT)](https://github.com/OverloadUT "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") - [Greg MacLellan (@gregmac)](https://github.com/gregmac "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Greg Stengel (@theCMack)](https://github.com/theCMack "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Greg Stevenson (@gstevenson)](https://github.com/gstevenson "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Greg. A. (@gautric)](https://github.com/gautric "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [groth-its (@groth-its)](https://github.com/groth-its "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [GTH (@gunnarhelgason)](https://github.com/gunnarhelgason "2 total commits to the home-assistant organization, 2 commits to appdaemon") +- [Guillaume Rischard (@grischard)](https://github.com/grischard "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Gustav Ahlberg (@Gyran)](https://github.com/Gyran "20 total commits to the home-assistant organization, 20 commits to home-assistant") - [gwendalg (@gwendalg)](https://github.com/gwendalg "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Hajime Morrita (@omo)](https://github.com/omo "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Hamid (@hamid-elaosta)](https://github.com/hamid-elaosta "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Hao Hu (@howiehu)](https://github.com/howiehu "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [happyleavesaoc (@happyleavesaoc)](https://github.com/happyleavesaoc "109 total commits to the home-assistant organization, 86 commits to home-assistant, 22 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Harald Nagel (@haraldnagel)](https://github.com/haraldnagel "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Hari Menon (@floydpink)](https://github.com/floydpink "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Harris Borawski (@hborawski)](https://github.com/hborawski "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [hawk259 (@hawk259)](https://github.com/hawk259 "8 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant, 1 commit to home-assistant-polymer") @@ -356,10 +365,9 @@ This page contains a list of people who have contributed in one way or another t - [Henrik Aronsson (@heennkkee)](https://github.com/heennkkee "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Henrik Nicolaisen (@hmn)](https://github.com/hmn "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Hernán Rossetto (@hmronline)](https://github.com/hmronline "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [hexa- (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [heytcass (@heytcass)](https://github.com/heytcass "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Hillary Fraley (@hillaryfraley)](https://github.com/hillaryfraley "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") -- [honcheng (@honcheng)](https://github.com/honcheng "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [honcheng (@honcheng)](https://github.com/honcheng "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [Hugo Dupras (@jabesq)](https://github.com/jabesq "28 total commits to the home-assistant organization, 20 commits to home-assistant, 8 commits to home-assistant.github.io") - [Hugo Gresse (@HugoGresse)](https://github.com/HugoGresse "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Hung Le (@hungle)](https://github.com/hungle "1 total commits to the home-assistant organization, 1 commit to libcoap") @@ -369,7 +377,7 @@ This page contains a list of people who have contributed in one way or another t - [Ian Copp (@icopp)](https://github.com/icopp "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [ianj001 (@ianj001)](https://github.com/ianj001 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [icovada (@icovada)](https://github.com/icovada "6 total commits to the home-assistant organization, 3 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Igor Shults (@ishults)](https://github.com/ishults "11 total commits to the home-assistant organization, 6 commits to home-assistant, 4 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Igor Shults (@ishults)](https://github.com/ishults "12 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Ioan Loosley (@ioangogo)](https://github.com/ioangogo "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [IoTmessenger (@IoTmessenger)](https://github.com/IoTmessenger "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Issac Kelly (@issackelly)](https://github.com/issackelly "3 total commits to the home-assistant organization, 3 commits to home-assistant") @@ -387,18 +395,19 @@ This page contains a list of people who have contributed in one way or another t - [James Cole (@jamespcole)](https://github.com/jamespcole "94 total commits to the home-assistant organization, 93 commits to home-assistant, 1 commit to home-assistant-js") - [Jamie van Dyke (@fearoffish)](https://github.com/fearoffish "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-iOS") - [JammyDodger231 (@JammyDodger231)](https://github.com/JammyDodger231 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Jan Almeroth (@jalmeroth)](https://github.com/jalmeroth "8 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Jan Harkes (@jaharkes)](https://github.com/jaharkes "110 total commits to the home-assistant organization, 100 commits to home-assistant, 10 commits to netdisco") -- [Jan Losinski (@janLo)](https://github.com/janLo "20 total commits to the home-assistant organization, 16 commits to home-assistant, 4 commits to home-assistant.github.io") +- [Jan Losinski (@janLo)](https://github.com/janLo "21 total commits to the home-assistant organization, 16 commits to home-assistant, 5 commits to home-assistant.github.io") - [Jan Pobořil (@iBobik)](https://github.com/iBobik "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jan Wh (@janwh)](https://github.com/janwh "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Janne Grunau (@jannau)](https://github.com/jannau "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Janne Grunau (@jannau)](https://github.com/jannau "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jared Beckham (@jtbeckha)](https://github.com/jtbeckha "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") - [Jared J. (@jjensn)](https://github.com/jjensn "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Jason Carter (@JasonCarter80)](https://github.com/JasonCarter80 "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") - [Jason Hite (@jasonmhite)](https://github.com/jasonmhite "6 total commits to the home-assistant organization, 6 commits to appdaemon") - [Javier González Calleja (@gonzalezcalleja)](https://github.com/gonzalezcalleja "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jay Stevens (@Jay2645)](https://github.com/Jay2645 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [JAYMAN-ATX (@JAYMAN-ATX)](https://github.com/JAYMAN-ATX "2 total commits to the home-assistant organization, 2 commits to homebridge-homeassistant") - [Jean Regisser (@jeanregisser)](https://github.com/jeanregisser "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jean-Michel Julien (@KurdyMalloy)](https://github.com/KurdyMalloy "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Jean-Philippe Bouillot (@Jypy)](https://github.com/Jypy "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -411,7 +420,7 @@ This page contains a list of people who have contributed in one way or another t - [Jeremy (@Wutname1)](https://github.com/Wutname1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Jeremy Williams (@jwillaz)](https://github.com/jwillaz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [jeremysv (@jeremysv)](https://github.com/jeremysv "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "20 total commits to the home-assistant organization, 12 commits to home-assistant, 8 commits to home-assistant.github.io") +- [Jeroen ter Heerdt (@jeroenterheerdt)](https://github.com/jeroenterheerdt "25 total commits to the home-assistant organization, 14 commits to home-assistant, 11 commits to home-assistant.github.io") - [Jerold Albertson (@jeroldalbertson-wf)](https://github.com/jeroldalbertson-wf "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Jerry Workman (@JerryWorkman)](https://github.com/JerryWorkman "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jesse Hills (@jesserockz)](https://github.com/jesserockz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -420,16 +429,16 @@ This page contains a list of people who have contributed in one way or another t - [jgrieger1 (@jgrieger1)](https://github.com/jgrieger1 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [jgriff2 (@jgriff2)](https://github.com/jgriff2 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Jim Rollenhagen (@jimrollenhagen)](https://github.com/jimrollenhagen "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [jimbob1001 (@jimbob1001)](https://github.com/jimbob1001 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Joakim Nohlgård (@gebart)](https://github.com/gebart "2 total commits to the home-assistant organization, 2 commits to libcoap") -- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "27 total commits to the home-assistant organization, 14 commits to hassbian-scripts, 13 commits to home-assistant.github.io") +- [Joakim Sørensen (@ludeeus)](https://github.com/ludeeus "28 total commits to the home-assistant organization, 15 commits to hassbian-scripts, 13 commits to home-assistant.github.io") - [Job (@jmvermeulen)](https://github.com/jmvermeulen "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [jodur (@jodur)](https://github.com/jodur "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Joe Lee (@xnoodle)](https://github.com/xnoodle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Joe Lu (@snjoetw)](https://github.com/snjoetw "10 total commits to the home-assistant organization, 8 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Joe Lu (@snjoetw)](https://github.com/snjoetw "12 total commits to the home-assistant organization, 9 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Joe McMonagle (@joemcmonagle)](https://github.com/joemcmonagle "12 total commits to the home-assistant organization, 12 commits to home-assistant.github.io") - [joe248 (@joe248)](https://github.com/joe248 "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Joeboyc2 (@Joeboyc2)](https://github.com/Joeboyc2 "15 total commits to the home-assistant organization, 15 commits to home-assistant.github.io") -- [joemcmonagle (@joemcmonagle)](https://github.com/joemcmonagle "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Johan Bloemberg (@aequitas)](https://github.com/aequitas "43 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") - [Johan Haals (@jhaals)](https://github.com/jhaals "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon") - [Johan Klintberg (@moogblob)](https://github.com/moogblob "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -437,7 +446,7 @@ This page contains a list of people who have contributed in one way or another t - [Johann Kellerman (@kellerza)](https://github.com/kellerza "144 total commits to the home-assistant organization, 114 commits to home-assistant, 30 commits to home-assistant.github.io") - [Johannes K. (@roadrash2108)](https://github.com/roadrash2108 "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [John (@J-C-B)](https://github.com/J-C-B "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "194 total commits to the home-assistant organization, 146 commits to home-assistant, 36 commits to home-assistant.github.io, 12 commits to home-assistant-polymer") +- [John Arild Berentsen (@turbokongen)](https://github.com/turbokongen "200 total commits to the home-assistant organization, 148 commits to home-assistant, 37 commits to home-assistant.github.io, 15 commits to home-assistant-polymer") - [John Coggeshall (@coogle)](https://github.com/coogle "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [John Lindley (@jwl17330536)](https://github.com/jwl17330536 "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [John McLaughlin (@loghound)](https://github.com/loghound "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -445,7 +454,7 @@ This page contains a list of people who have contributed in one way or another t - [Johnny Chadda (@joch)](https://github.com/joch "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Jon (@JonMurphy)](https://github.com/JonMurphy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Jon Caruana (@joncar)](https://github.com/joncar "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Jon Griffith (@arretx)](https://github.com/arretx "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") +- [Jon Griffith (@arretx)](https://github.com/arretx "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") - [Jon Maddox (@maddox)](https://github.com/maddox "102 total commits to the home-assistant organization, 78 commits to home-assistant, 16 commits to homebridge-homeassistant, 8 commits to home-assistant.github.io") - [Jonas Pedersen (@JonasPed)](https://github.com/JonasPed "1 total commits to the home-assistant organization, 1 commit to appdaemon") - [Jonatan Castro (@jcastro)](https://github.com/jcastro "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") @@ -463,8 +472,9 @@ This page contains a list of people who have contributed in one way or another t - [jpcomtois (@jpcomtois)](https://github.com/jpcomtois "1 total commits to the home-assistant organization, 1 commit to libcoap") - [JudgeDredd (@JudgeDreddKLC)](https://github.com/JudgeDreddKLC "10 total commits to the home-assistant organization, 10 commits to home-assistant.github.io") - [Juggels (@Juggels)](https://github.com/Juggels "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Julian Kaffke (@jaykay)](https://github.com/jaykay "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [Julian Kahnert (@JulianKahnert)](https://github.com/JulianKahnert "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "14 total commits to the home-assistant organization, 9 commits to home-assistant, 5 commits to home-assistant.github.io") +- [Julius Mittenzwei (@Julius2342)](https://github.com/Julius2342 "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") - [jumpkick (@jumpkick)](https://github.com/jumpkick "15 total commits to the home-assistant organization, 12 commits to home-assistant, 3 commits to home-assistant.github.io") - [Justin Dray (@justin8)](https://github.com/justin8 "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to home-assistant") - [Justin Hayes (@GussyH)](https://github.com/GussyH "7 total commits to the home-assistant organization, 7 commits to hadashboard") @@ -472,7 +482,7 @@ This page contains a list of people who have contributed in one way or another t - [Justyn Shull (@justyns)](https://github.com/justyns "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Jürgen W (@jurgenweber)](https://github.com/jurgenweber "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Kai (@luxus)](https://github.com/luxus "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Kane610 (@Kane610)](https://github.com/Kane610 "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco") +- [Kane610 (@Kane610)](https://github.com/Kane610 "16 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") - [Karen Goode (@kfgoode)](https://github.com/kfgoode "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [karlkar (@karlkar)](https://github.com/karlkar "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Keaton Taylor (@keatontaylor)](https://github.com/keatontaylor "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") @@ -502,11 +512,12 @@ This page contains a list of people who have contributed in one way or another t - [Kyle Hendricks (@kylehendricks)](https://github.com/kylehendricks "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Kyle R (@qcryptic)](https://github.com/qcryptic "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [lamiskin (@lamiskin)](https://github.com/lamiskin "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [LaurensBot (@LaurensBot)](https://github.com/LaurensBot "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [lee-js (@lee-js)](https://github.com/lee-js "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Leon99 (@Leon99)](https://github.com/Leon99 "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to appdaemon") - [Leonardo Saraiva (@vyper)](https://github.com/vyper "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Lev Aronsky (@aronsky)](https://github.com/aronsky "11 total commits to the home-assistant organization, 8 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Lewis Juggins (@lwis)](https://github.com/lwis "63 total commits to the home-assistant organization, 50 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Lewis Juggins (@lwis)](https://github.com/lwis "64 total commits to the home-assistant organization, 51 commits to home-assistant, 12 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [lichtteil (@lichtteil)](https://github.com/lichtteil "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Lindsay Ward (@lindsaymarkward)](https://github.com/lindsaymarkward "17 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 4 commits to home-assistant") - [linuxlurak (@linuxlurak)](https://github.com/linuxlurak "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to hadashboard") @@ -517,19 +528,21 @@ This page contains a list of people who have contributed in one way or another t - [LucaSoldi (@LucaSoldi)](https://github.com/LucaSoldi "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Lucien Guimier (@guimier)](https://github.com/guimier "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Ludovic (@ldvc)](https://github.com/ldvc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Ludovico de Nittis (@RyuzakiKK)](https://github.com/RyuzakiKK "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Lukas (@lukas-hetzenecker)](https://github.com/lukas-hetzenecker "14 total commits to the home-assistant organization, 10 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "22 total commits to the home-assistant organization, 12 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Lukas Barth (@tinloaf)](https://github.com/tinloaf "24 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 2 commits to home-assistant-polymer") - [Lukas Ecklmayr (@outrun0506)](https://github.com/outrun0506 "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") +- [Lukas Porubcan (@Luc3as)](https://github.com/Luc3as "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Luke Armstrong (@lukearmstrong)](https://github.com/lukearmstrong "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Luuk (@Maharball1)](https://github.com/Maharball1 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "7 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io") +- [LvivEchoes (@LvivEchoes)](https://github.com/LvivEchoes "8 total commits to the home-assistant organization, 4 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Maciej Bieniek (@bieniu)](https://github.com/bieniu "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") -- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to hassio-build") +- [Maciej Sokołowski (@matemaciek)](https://github.com/matemaciek "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to hassio-build") - [Maciej Wasilak (@mwasilak)](https://github.com/mwasilak "1 total commits to the home-assistant organization, 1 commit to libcoap") - [Magnus Ihse Bursie (@magicus)](https://github.com/magicus "16 total commits to the home-assistant organization, 9 commits to home-assistant, 4 commits to netdisco, 3 commits to home-assistant.github.io") - [Magnus Lyckå (@magnus-lycka)](https://github.com/magnus-lycka "1 total commits to the home-assistant organization, 1 commit to netdisco") - [MagnusKnutas (@MagnusKnutas)](https://github.com/MagnusKnutas "29 total commits to the home-assistant organization, 29 commits to home-assistant") -- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "8 total commits to the home-assistant organization, 8 commits to home-assistant.github.io") +- [Mahasri Kalavala (@skalavala)](https://github.com/skalavala "9 total commits to the home-assistant organization, 9 commits to home-assistant.github.io") - [Maikel Wever (@maikelwever)](https://github.com/maikelwever "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Malte Franken (@exxamalte)](https://github.com/exxamalte "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Manu (@matrixagent)](https://github.com/matrixagent "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -538,13 +551,15 @@ This page contains a list of people who have contributed in one way or another t - [Marc Pabst (@mxtra)](https://github.com/mxtra "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Marc Plano-Lesay (@Kernald)](https://github.com/Kernald "12 total commits to the home-assistant organization, 10 commits to home-assistant.github.io, 2 commits to home-assistant") - [Marcel030nl (@Marcel030nl)](https://github.com/Marcel030nl "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "139 total commits to the home-assistant organization, 76 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") +- [Marcelo Moreira de Mello (@tchellomello)](https://github.com/tchellomello "140 total commits to the home-assistant organization, 77 commits to home-assistant, 61 commits to home-assistant.github.io, 1 commit to home-assistant-assets, 1 commit to home-assistant-polymer") - [Marcin Jaworski (@yawor)](https://github.com/yawor "12 total commits to the home-assistant organization, 12 commits to appdaemon") +- [Marcus Schmidt (@mar-schmidt)](https://github.com/mar-schmidt "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Marijn Giesen (@marijngiesen)](https://github.com/marijngiesen "7 total commits to the home-assistant organization, 5 commits to hadashboard, 2 commits to home-assistant.github.io") - [Mark Coombes (@marthoc)](https://github.com/marthoc "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Mark Grosen (@mgsb)](https://github.com/mgsb "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Mark Huson (@mehuman)](https://github.com/mehuman "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") - [Mark Oude Veldhuis (@markoudev)](https://github.com/markoudev "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [markferry (@markferry)](https://github.com/markferry "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Markus (@iMarkus)](https://github.com/iMarkus "3 total commits to the home-assistant organization, 2 commits to home-assistant, 1 commit to hassio") - [Markus Becker (@markushx)](https://github.com/markushx "6 total commits to the home-assistant organization, 6 commits to libcoap") - [Markus Lipp (@LightIsLife)](https://github.com/LightIsLife "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") @@ -556,24 +571,27 @@ This page contains a list of people who have contributed in one way or another t - [Martin Hjelmare (@MartinHjelmare)](https://github.com/MartinHjelmare "143 total commits to the home-assistant organization, 114 commits to home-assistant, 29 commits to home-assistant.github.io") - [Martin Rowan (@shortbloke)](https://github.com/shortbloke "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Martin Vacula (@MatoKafkac)](https://github.com/MatoKafkac "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Martin Weinelt (@mweinelt)](https://github.com/mweinelt "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Martokk (@martokk)](https://github.com/martokk "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Mateusz Drab (@mateuszdrab)](https://github.com/mateuszdrab "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Mathew Peterson (@mathewpeterson)](https://github.com/mathewpeterson "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant") -- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "48 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to home-assistant-polymer") +- [Matt N. (@mnoorenberghe)](https://github.com/mnoorenberghe "49 total commits to the home-assistant organization, 24 commits to home-assistant-iOS, 16 commits to home-assistant.github.io, 7 commits to home-assistant, 1 commit to homebridge-homeassistant, 1 commit to home-assistant-polymer") - [Matt Rogers (@rogersmj)](https://github.com/rogersmj "20 total commits to the home-assistant organization, 20 commits to hadashboard") -- [Matt Schmitt (@schmittx)](https://github.com/schmittx "27 total commits to the home-assistant organization, 20 commits to homebridge-homeassistant, 5 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Matt Schmitt (@schmittx)](https://github.com/schmittx "33 total commits to the home-assistant organization, 23 commits to homebridge-homeassistant, 6 commits to home-assistant, 3 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [Matt White (@mw-white)](https://github.com/mw-white "10 total commits to the home-assistant organization, 5 commits to home-assistant, 5 commits to home-assistant.github.io") -- [matt2005 (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Matteo Lampugnani (@t30)](https://github.com/t30 "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [Matthew Bowen (@mgbowen)](https://github.com/mgbowen "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Matthew Donoughe (@mdonoughe)](https://github.com/mdonoughe "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Matthew Garrett (@mjg59)](https://github.com/mjg59 "10 total commits to the home-assistant organization, 7 commits to home-assistant, 3 commits to home-assistant.github.io") +- [Matthew Hilton (@matt2005)](https://github.com/matt2005 "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Matthew Schick (@mattsch)](https://github.com/mattsch "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "16 total commits to the home-assistant organization, 10 commits to home-assistant, 6 commits to home-assistant.github.io") +- [Matthew Treinish (@mtreinish)](https://github.com/mtreinish "20 total commits to the home-assistant organization, 13 commits to home-assistant, 7 commits to home-assistant.github.io") - [mattie47 (@mattie47)](https://github.com/mattie47 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [mauriciobonani (@mauriciobonani)](https://github.com/mauriciobonani "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Max Rumpf (@Maxr1998)](https://github.com/Maxr1998 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [maxlaverse (@maxlaverse)](https://github.com/maxlaverse "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [mboeru (@mboeru)](https://github.com/mboeru "1 total commits to the home-assistant organization, 1 commit to home-assistant-iOS") -- [Menno Blom (@b10m)](https://github.com/b10m "3 total commits to the home-assistant organization, 2 commits to home-assistant.github.io, 1 commit to netdisco") +- [Menno Blom (@b10m)](https://github.com/b10m "6 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant, 1 commit to netdisco") - [mertenats (@mertenats)](https://github.com/mertenats "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Micha LaQua (@milaq)](https://github.com/milaq "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Michael (@hartmms)](https://github.com/hartmms "6 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 2 commits to home-assistant") @@ -595,19 +613,19 @@ This page contains a list of people who have contributed in one way or another t - [Mikayla Hutchinson (@mhutch)](https://github.com/mhutch "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mike Christianson (@MikeChristianson)](https://github.com/MikeChristianson "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Mike G Chambers (@mikegchambers)](https://github.com/mikegchambers "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Mike Megally (@cmsimike)](https://github.com/cmsimike "6 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Mike Megally (@cmsimike)](https://github.com/cmsimike "8 total commits to the home-assistant organization, 6 commits to home-assistant, 2 commits to home-assistant.github.io") - [Mike Nestor (@mnestor)](https://github.com/mnestor "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") - [Mike Roberts (@m-roberts)](https://github.com/m-roberts "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [mikey (@pfista)](https://github.com/pfista "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mikkel Høgh (@mikl)](https://github.com/mikl "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Milan V. (@milanvo)](https://github.com/milanvo "17 total commits to the home-assistant organization, 9 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Milan V. (@milanvo)](https://github.com/milanvo "18 total commits to the home-assistant organization, 10 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [MinchinWeb (@MinchinWeb)](https://github.com/MinchinWeb "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [miniconfig (@miniconfig)](https://github.com/miniconfig "27 total commits to the home-assistant organization, 20 commits to home-assistant, 7 commits to home-assistant.github.io") - [Minims (@Minims)](https://github.com/Minims "3 total commits to the home-assistant organization, 3 commits to homebridge-homeassistant") - [Mister Wil (@MisterWil)](https://github.com/MisterWil "17 total commits to the home-assistant organization, 11 commits to home-assistant, 6 commits to home-assistant.github.io") - [Mitchell Cash (@mitchellcash)](https://github.com/mitchellcash "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Mitesh Patel (@gurumitts)](https://github.com/gurumitts "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") -- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "3 total commits to the home-assistant organization, 3 commits to home-assistant") +- [Mitko Masarliev (@masarliev)](https://github.com/masarliev "7 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io") - [mje-nz (@mje-nz)](https://github.com/mje-nz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [mjj4791 (@mjj4791)](https://github.com/mjj4791 "22 total commits to the home-assistant organization, 15 commits to home-assistant.github.io, 7 commits to home-assistant") - [Molodax (@Molodax)](https://github.com/Molodax "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") @@ -623,61 +641,53 @@ This page contains a list of people who have contributed in one way or another t - [Nathan Henrie (@n8henrie)](https://github.com/n8henrie "19 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant, 1 commit to appdaemon, 1 commit to home-assistant-polymer") - [Neil Lathwood (@laf)](https://github.com/laf "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Nelis Willers (@NelisW)](https://github.com/NelisW "1 total commits to the home-assistant organization, 1 commit to fabric-home-assistant") -- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [NeLLyMerC (@NeLLyMerC)](https://github.com/NeLLyMerC "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Nemanja Stefanovic (@nemik)](https://github.com/nemik "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [neonbunny (@neonbunny)](https://github.com/neonbunny "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Nicholas Amadori (@namadori)](https://github.com/namadori "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Nicholas Griffin (@nicholasgriffintn)](https://github.com/nicholasgriffintn "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Nicholas Sielicki (@sielicki)](https://github.com/sielicki "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Nick (@quadportnick)](https://github.com/quadportnick "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Nick Waring (@nickwaring)](https://github.com/nickwaring "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Nicolae Vlădescu (@nicolaevladescu)](https://github.com/nicolaevladescu "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Nick (@quadportnick)](https://github.com/quadportnick "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Nick Waring (@nickwaring)](https://github.com/nickwaring "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Nicolas Graziano (@ngraziano)](https://github.com/ngraziano "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Nicolas Martignoni (@martignoni)](https://github.com/martignoni "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [Niklas (@niklaswa)](https://github.com/niklaswa "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Niklas Morberg (@morberg)](https://github.com/morberg "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Nikolas Beutler (@biacz)](https://github.com/biacz "4 total commits to the home-assistant organization, 2 commits to home-assistant, 2 commits to home-assistant.github.io") -- [Nils Uliczka (@darookee)](https://github.com/darookee "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Nikolas Beutler (@biacz)](https://github.com/biacz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [NMA (@nma83)](https://github.com/nma83 "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [nodomain (@nodomain)](https://github.com/nodomain "9 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 2 commits to homebridge-homeassistant") -- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "116 total commits to the home-assistant organization, 91 commits to home-assistant, 25 commits to home-assistant.github.io") +- [Nolan Gilley (@nkgilley)](https://github.com/nkgilley "117 total commits to the home-assistant organization, 92 commits to home-assistant, 25 commits to home-assistant.github.io") - [NotoriousBDG (@notoriousbdg)](https://github.com/notoriousbdg "3 total commits to the home-assistant organization, 3 commits to hassio-addons") -- [NovapaX (@NovapaX)](https://github.com/NovapaX "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant-polymer, 1 commit to home-assistant-assets") +- [NovapaX (@NovapaX)](https://github.com/NovapaX "9 total commits to the home-assistant organization, 4 commits to home-assistant-polymer, 4 commits to home-assistant, 1 commit to home-assistant-assets") - [ntalekt (@ntalekt)](https://github.com/ntalekt "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") -- [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "7 total commits to the home-assistant organization, 4 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to homebridge-homeassistant") +- [Nuno Sousa (@nunofgs)](https://github.com/nunofgs "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to homebridge-homeassistant") - [obgm (@obgm)](https://github.com/obgm "480 total commits to the home-assistant organization, 480 commits to libcoap") -- [Olav Alexander Mjelde (@olavxxx)](https://github.com/olavxxx "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [OLD PROFILE! Go to /dennisreimann (@dbloete)](https://github.com/dbloete "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [Ole-Kenneth (@olekenneth)](https://github.com/olekenneth "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Oleksii Serdiuk (@leppa)](https://github.com/leppa "5 total commits to the home-assistant organization, 3 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Oleksii Serdiuk (@leppa)](https://github.com/leppa "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Oliv3rDog (@Oliv3rDog)](https://github.com/Oliv3rDog "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "23 total commits to the home-assistant organization, 13 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco") +- [Oliver (@scarface-4711)](https://github.com/scarface-4711 "24 total commits to the home-assistant organization, 14 commits to home-assistant, 9 commits to home-assistant.github.io, 1 commit to netdisco") - [Oliver van Porten (@mcdeck)](https://github.com/mcdeck "10 total commits to the home-assistant organization, 10 commits to home-assistant") -- [Omar Usman (@omarusman)](https://github.com/omarusman "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Open Home Automation (@open-homeautomation)](https://github.com/open-homeautomation "41 total commits to the home-assistant organization, 29 commits to home-assistant, 12 commits to home-assistant.github.io") - [Otto Winter (@OttoWinter)](https://github.com/OttoWinter "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [oznu (@oznu)](https://github.com/oznu "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") -- [Parker Moore (@parkr)](https://github.com/parkr "62 total commits to the home-assistant organization, 62 commits to home-assistant.github.io") +- [Parker Moore (@parkr)](https://github.com/parkr "60 total commits to the home-assistant organization, 60 commits to home-assistant.github.io") - [pascal (@passie)](https://github.com/passie "4 total commits to the home-assistant organization, 3 commits to home-assistant, 1 commit to home-assistant-polymer") - [Pascal Bach (@bachp)](https://github.com/bachp "10 total commits to the home-assistant organization, 9 commits to home-assistant, 1 commit to netdisco") -- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2199 total commits to the home-assistant organization, 859 commits to hassio, 426 commits to home-assistant, 306 commits to hassio-build, 300 commits to hassio-addons, 290 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 1 commit to netdisco, 1 commit to home-assistant-js-websocket") +- [Pascal Vizeli (@pvizeli)](https://github.com/pvizeli "2268 total commits to the home-assistant organization, 879 commits to hassio, 440 commits to home-assistant, 322 commits to hassio-build, 306 commits to hassio-addons, 299 commits to home-assistant.github.io, 16 commits to hassio-addons-example, 4 commits to hassio-cli, 1 commit to home-assistant-js-websocket, 1 commit to netdisco") - [patkap (@patkap)](https://github.com/patkap "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Patrick Aikens (@duckpuppy)](https://github.com/duckpuppy "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Patrick Easters (@patrickeasters)](https://github.com/patrickeasters "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Patrick White (@pw)](https://github.com/pw "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Patrik (@ggravlingen)](https://github.com/ggravlingen "8 total commits to the home-assistant organization, 5 commits to home-assistant, 3 commits to home-assistant.github.io") -- [Patrik Hermansson (@bphermansson)](https://github.com/bphermansson "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") -- [Paul Jimenez (@pjz)](https://github.com/pjz "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") +- [Paul Hendry (@pshendry)](https://github.com/pshendry "1 total commits to the home-assistant organization, 1 commit to warrant") - [Paul Sokolovsky (@pfalcon)](https://github.com/pfalcon "6 total commits to the home-assistant organization, 3 commits to netdisco, 3 commits to home-assistant") - [Pavel Ponomarev (@awsum)](https://github.com/awsum "2 total commits to the home-assistant organization, 2 commits to home-assistant-polymer") - [PawelWMS (@PawelWMS)](https://github.com/PawelWMS "12 total commits to the home-assistant organization, 12 commits to libcoap") - [Pedro Navarro (@pedronavf)](https://github.com/pedronavf "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Pedro Pombeiro (@PombeirP)](https://github.com/PombeirP "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Per Osbäck (@perosb)](https://github.com/perosb "12 total commits to the home-assistant organization, 10 commits to home-assistant, 2 commits to home-assistant.github.io") +- [Per Osbäck (@perosb)](https://github.com/perosb "12 total commits to the home-assistant organization, 12 commits to home-assistant") - [Per Sandström (@persandstrom)](https://github.com/persandstrom "124 total commits to the home-assistant organization, 98 commits to home-assistant, 14 commits to home-assistant.github.io, 12 commits to home-assistant-polymer") -- [Petar Petrov (@MindFreeze)](https://github.com/MindFreeze "2 total commits to the home-assistant organization, 2 commits to home-assistant.github.io") - [Pete Peterson (@petey)](https://github.com/petey "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") -- [PeteBa (@PeteBa)](https://github.com/PeteBa "8 total commits to the home-assistant organization, 5 commits to home-assistant, 2 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [PeteBa (@PeteBa)](https://github.com/PeteBa "6 total commits to the home-assistant organization, 5 commits to home-assistant, 1 commit to home-assistant-polymer") - [Peter Epley (@epleypa)](https://github.com/epleypa "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Petr Vraník (@konikvranik)](https://github.com/konikvranik "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") - [pezinek (@pezinek)](https://github.com/pezinek "8 total commits to the home-assistant organization, 8 commits to home-assistant") @@ -688,14 +698,16 @@ This page contains a list of people who have contributed in one way or another t - [Phil Kates (@philk)](https://github.com/philk "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Philip Hofstetter (@pilif)](https://github.com/pilif "6 total commits to the home-assistant organization, 6 commits to home-assistant.github.io") - [Philip Lundrigan (@philipbl)](https://github.com/philipbl "65 total commits to the home-assistant organization, 56 commits to home-assistant, 9 commits to home-assistant.github.io") -- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "36 total commits to the home-assistant organization, 23 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon") +- [Philipp Schmitt (@pschmitt)](https://github.com/pschmitt "37 total commits to the home-assistant organization, 24 commits to home-assistant, 11 commits to home-assistant.github.io, 1 commit to hassio-build, 1 commit to appdaemon") - [Phill Price (@phillprice)](https://github.com/phillprice "11 total commits to the home-assistant organization, 11 commits to home-assistant.github.io") -- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "15 total commits to the home-assistant organization, 7 commits to home-assistant, 7 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") -- [Pierre Ståhl (@postlund)](https://github.com/postlund "44 total commits to the home-assistant organization, 29 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") +- [PhracturedBlue (@PhracturedBlue)](https://github.com/PhracturedBlue "22 total commits to the home-assistant organization, 13 commits to home-assistant, 8 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Pierre Ståhl (@postlund)](https://github.com/postlund "45 total commits to the home-assistant organization, 30 commits to home-assistant, 9 commits to home-assistant.github.io, 4 commits to netdisco, 2 commits to home-assistant-polymer") - [Piratonym (@Piratonym)](https://github.com/Piratonym "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [pkonnekermetametrics (@pkonnekermetametrics)](https://github.com/pkonnekermetametrics "5 total commits to the home-assistant organization, 5 commits to warrant") - [PuckStar (@PuckStar)](https://github.com/PuckStar "7 total commits to the home-assistant organization, 7 commits to home-assistant.github.io") - [R Huish (@Genestealer)](https://github.com/Genestealer "20 total commits to the home-assistant organization, 20 commits to home-assistant.github.io") -- [rbflurry (@rbflurry)](https://github.com/rbflurry "14 total commits to the home-assistant organization, 11 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Rasmus (@rasmusbe)](https://github.com/rasmusbe "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [rbflurry (@rbflurry)](https://github.com/rbflurry "16 total commits to the home-assistant organization, 13 commits to home-assistant.github.io, 3 commits to home-assistant") - [Reed Riley (@reedriley)](https://github.com/reedriley "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Rendili (@Rendili)](https://github.com/Rendili "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Rene Tode (@ReneTode)](https://github.com/ReneTode "25 total commits to the home-assistant organization, 25 commits to appdaemon") @@ -706,11 +718,11 @@ This page contains a list of people who have contributed in one way or another t - [Riccardo Canta (@commento)](https://github.com/commento "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Richard Arends (@Mosibi)](https://github.com/Mosibi "8 total commits to the home-assistant organization, 8 commits to home-assistant") - [Richard Cox (@Khabi)](https://github.com/Khabi "15 total commits to the home-assistant organization, 9 commits to home-assistant, 6 commits to home-assistant.github.io") -- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "14 total commits to the home-assistant organization, 7 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") +- [Richard Leurs (@R1chardTM)](https://github.com/R1chardTM "15 total commits to the home-assistant organization, 8 commits to home-assistant, 6 commits to home-assistant.github.io, 1 commit to home-assistant-polymer") - [rkabadi (@rkabadi)](https://github.com/rkabadi "17 total commits to the home-assistant organization, 17 commits to home-assistant") - [Rob Capellini (@capellini)](https://github.com/capellini "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Rob Slifka (@rslifka)](https://github.com/rslifka "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") -- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to hassbot, 3 commits to home-assistant-js-websocket, 3 commits to organization, 2 commits to LabelBot, 2 commits to lambda-home-assistant-github, 2 commits to fabric-home-assistant, 2 commits to home-assistant-assets, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks") +- [Robbie Trencheny (@robbiet480)](https://github.com/robbiet480 "1315 total commits to the home-assistant organization, 646 commits to home-assistant-iOS, 259 commits to home-assistant, 248 commits to home-assistant.github.io, 91 commits to homebridge-homeassistant, 15 commits to home-assistant-polymer, 9 commits to hubot-home-assistant, 8 commits to Analytics-Receiver, 6 commits to netdisco, 3 commits to home-assistant-js, 3 commits to scenegen, 3 commits to organization, 3 commits to home-assistant-js-websocket, 3 commits to appdaemon, 3 commits to hadashboard, 3 commits to hassbot, 2 commits to home-assistant-assets, 2 commits to fabric-home-assistant, 2 commits to lambda-home-assistant-github, 2 commits to LabelBot, 2 commits to micropython-home-assistant, 2 commits to home-assistant-notebooks") - [Robby Grossman (@freerobby)](https://github.com/freerobby "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Robin (@robmarkcole)](https://github.com/robmarkcole "15 total commits to the home-assistant organization, 9 commits to home-assistant.github.io, 6 commits to home-assistant") - [Robin Laurén (@llauren)](https://github.com/llauren "1 total commits to the home-assistant organization, 1 commit to appdaemon") @@ -718,6 +730,7 @@ This page contains a list of people who have contributed in one way or another t - [Roi Dayan (@roidayan)](https://github.com/roidayan "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [roiff (@roiff)](https://github.com/roiff "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") - [Ron Klinkien (@cyberjunky)](https://github.com/cyberjunky "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") +- [Ron Miller (@brainyron)](https://github.com/brainyron "1 total commits to the home-assistant organization, 1 commit to hassio-addons") - [roqeer (@roqeer)](https://github.com/roqeer "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Ross Schulman (@rschulman)](https://github.com/rschulman "1 total commits to the home-assistant organization, 1 commit to pi-gen") - [rpitera (@rpitera)](https://github.com/rpitera "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") @@ -729,7 +742,7 @@ This page contains a list of people who have contributed in one way or another t - [Ryan Borstelmann (@SlothCroissant)](https://github.com/SlothCroissant "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Daigle (@rwdaigle)](https://github.com/rwdaigle "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Ryan Kraus (@rmkraus)](https://github.com/rmkraus "193 total commits to the home-assistant organization, 163 commits to home-assistant, 15 commits to home-assistant.github.io, 14 commits to home-assistant-polymer, 1 commit to home-assistant-notebooks") -- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") +- [Ryan McLean (@ryanm101)](https://github.com/ryanm101 "11 total commits to the home-assistant organization, 6 commits to home-assistant, 5 commits to home-assistant.github.io") - [Ryan Turner (@turnrye)](https://github.com/turnrye "6 total commits to the home-assistant organization, 6 commits to home-assistant") - [Sabesto (@Sabesto)](https://github.com/Sabesto "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Sam Birch (@hotplot)](https://github.com/hotplot "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -749,13 +762,15 @@ This page contains a list of people who have contributed in one way or another t - [Sebastian von Minckwitz (@teodoc)](https://github.com/teodoc "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Semir Patel (@analogue)](https://github.com/analogue "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Sergey Isachenko (@zabuldon)](https://github.com/zabuldon "6 total commits to the home-assistant organization, 6 commits to home-assistant") +- [Sergey Vishnikin (@armicron)](https://github.com/armicron "33 total commits to the home-assistant organization, 33 commits to warrant") - [sfam (@sfam)](https://github.com/sfam "65 total commits to the home-assistant organization, 58 commits to home-assistant, 5 commits to home-assistant.github.io, 1 commit to netdisco, 1 commit to home-assistant-polymer") -- [sharukins (@sharukins)](https://github.com/sharukins "2 total commits to the home-assistant organization, 2 commits to hassio-build") +- [sharukins (@sharukins)](https://github.com/sharukins "3 total commits to the home-assistant organization, 3 commits to hassio-build") - [Shiny (@Br3nda)](https://github.com/Br3nda "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [siebert (@siebert)](https://github.com/siebert "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Simon (@echox)](https://github.com/echox "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Simon Szustkowski (@simonszu)](https://github.com/simonszu "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [Sjors Spoorendonk (@sjorsjes)](https://github.com/sjorsjes "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [sjoshi10 (@sjoshi10)](https://github.com/sjoshi10 "1 total commits to the home-assistant organization, 1 commit to warrant") - [snizzleorg (@snizzleorg)](https://github.com/snizzleorg "5 total commits to the home-assistant organization, 5 commits to hadashboard") - [St. John Johnson (@stjohnjohnson)](https://github.com/stjohnjohnson "9 total commits to the home-assistant organization, 5 commits to home-assistant, 4 commits to home-assistant.github.io") - [Stefan Jonasson (@stefan-jonasson)](https://github.com/stefan-jonasson "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") @@ -777,15 +792,15 @@ This page contains a list of people who have contributed in one way or another t - [tedstriker (@tedstriker)](https://github.com/tedstriker "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") - [Teemu Mikkonen (@T3m3z)](https://github.com/T3m3z "3 total commits to the home-assistant organization, 3 commits to home-assistant") - [Teemu Patja (@tpatja)](https://github.com/tpatja "2 total commits to the home-assistant organization, 2 commits to home-assistant") -- [Teemu R. (@rytilahti)](https://github.com/rytilahti "43 total commits to the home-assistant organization, 34 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco") +- [Teemu R. (@rytilahti)](https://github.com/rytilahti "44 total commits to the home-assistant organization, 35 commits to home-assistant, 7 commits to home-assistant.github.io, 2 commits to netdisco") - [Teguh Sobirin (@tjstyle)](https://github.com/tjstyle "2 total commits to the home-assistant organization, 2 commits to pi-gen") - [Tentoe (@Tentoe)](https://github.com/Tentoe "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [Theb-1 (@Theb-1)](https://github.com/Theb-1 "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [thecynic (@thecynic)](https://github.com/thecynic "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Theodor Lindquist (@theolind)](https://github.com/theolind "25 total commits to the home-assistant organization, 25 commits to home-assistant") - [Thiago Oliveira (@chilicheech)](https://github.com/chilicheech "3 total commits to the home-assistant organization, 3 commits to home-assistant") -- [Thibault Cohen (@titilambert)](https://github.com/titilambert "38 total commits to the home-assistant organization, 25 commits to home-assistant, 13 commits to home-assistant.github.io") -- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "1 total commits to the home-assistant organization, 1 commit to hassio-addons") +- [Thibault Cohen (@titilambert)](https://github.com/titilambert "39 total commits to the home-assistant organization, 26 commits to home-assistant, 13 commits to home-assistant.github.io") +- [Thibault Maekelbergh (@thibmaek)](https://github.com/thibmaek "4 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 1 commit to hassio-addons") - [ThinkPadNL (@ThinkPadNL)](https://github.com/ThinkPadNL "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Thom Troy (@ttroy50)](https://github.com/ttroy50 "10 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 3 commits to home-assistant") - [Thomas Friedel (@tfriedel)](https://github.com/tfriedel "2 total commits to the home-assistant organization, 2 commits to home-assistant") @@ -813,15 +828,16 @@ This page contains a list of people who have contributed in one way or another t - [TopdRob (@TopdRob)](https://github.com/TopdRob "7 total commits to the home-assistant organization, 7 commits to home-assistant") - [Torkild Retvedt (@torkildr)](https://github.com/torkildr "2 total commits to the home-assistant organization, 2 commits to appdaemon") - [Toshik (@Toshik)](https://github.com/Toshik "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [Touliloup (@RiRomain)](https://github.com/RiRomain "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [tradiuz (@tradiuz)](https://github.com/tradiuz "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [trbs (@trbs)](https://github.com/trbs "1 total commits to the home-assistant organization, 1 commit to netdisco") - [Trevor (@tboyce021)](https://github.com/tboyce021 "15 total commits to the home-assistant organization, 10 commits to home-assistant, 5 commits to home-assistant.github.io") - [Trey Hunner (@treyhunner)](https://github.com/treyhunner "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") -- [Tristan Caulfield (@Bahnburner)](https://github.com/Bahnburner "1 total commits to the home-assistant organization, 1 commit to home-assistant") - [trollkarlen (@trollkarlen)](https://github.com/trollkarlen "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [Tsvi Mostovicz (@tsvi)](https://github.com/tsvi "9 total commits to the home-assistant organization, 5 commits to home-assistant.github.io, 4 commits to home-assistant") -- [Tyler Page (@iamtpage)](https://github.com/iamtpage "2 total commits to the home-assistant organization, 2 commits to home-assistant") +- [Tyler Page (@iamtpage)](https://github.com/iamtpage "5 total commits to the home-assistant organization, 3 commits to home-assistant.github.io, 2 commits to home-assistant") - [Tõnis Tobre (@tobre6)](https://github.com/tobre6 "1 total commits to the home-assistant organization, 1 commit to homebridge-homeassistant") +- [uchagani (@uchagani)](https://github.com/uchagani "5 total commits to the home-assistant organization, 4 commits to home-assistant, 1 commit to home-assistant-polymer") - [Uli (@uehler)](https://github.com/uehler "5 total commits to the home-assistant organization, 5 commits to home-assistant.github.io") - [UnrealKazu (@UnrealKazu)](https://github.com/UnrealKazu "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [upsert (@upsert)](https://github.com/upsert "1 total commits to the home-assistant organization, 1 commit to netdisco") @@ -834,12 +850,14 @@ This page contains a list of people who have contributed in one way or another t - [vllungu (@vllungu)](https://github.com/vllungu "3 total commits to the home-assistant organization, 3 commits to libcoap") - [vrs01 (@vrs01)](https://github.com/vrs01 "20 total commits to the home-assistant organization, 14 commits to home-assistant.github.io, 6 commits to appdaemon") - [Wagner Sartori Junior (@trunet)](https://github.com/trunet "1 total commits to the home-assistant organization, 1 commit to netdisco") +- [Wesley Young (@wesdyoung)](https://github.com/wesdyoung "1 total commits to the home-assistant organization, 1 commit to warrant") - [Wilco Land (@Wilco89)](https://github.com/Wilco89 "3 total commits to the home-assistant organization, 3 commits to home-assistant.github.io") +- [Will Boyce (@wrboyce)](https://github.com/wrboyce "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Will Heid (@bassclarinetl2)](https://github.com/bassclarinetl2 "20 total commits to the home-assistant organization, 19 commits to home-assistant.github.io, 1 commit to fabric-home-assistant") - [Will W. (@tiktok7)](https://github.com/tiktok7 "4 total commits to the home-assistant organization, 4 commits to home-assistant") - [Willems Davy (@joyrider3774)](https://github.com/joyrider3774 "7 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 3 commits to home-assistant") - [William Johansson (@radhus)](https://github.com/radhus "1 total commits to the home-assistant organization, 1 commit to hassio") -- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "102 total commits to the home-assistant organization, 68 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco") +- [William Scanlon (@w1ll1am23)](https://github.com/w1ll1am23 "104 total commits to the home-assistant organization, 70 commits to home-assistant, 32 commits to home-assistant.github.io, 2 commits to netdisco") - [williamlehman (@williamlehman)](https://github.com/williamlehman "1 total commits to the home-assistant organization, 1 commit to home-assistant-polymer") - [wind-rider (@wind-rider)](https://github.com/wind-rider "5 total commits to the home-assistant organization, 5 commits to home-assistant") - [wokar (@wokar)](https://github.com/wokar "12 total commits to the home-assistant organization, 8 commits to home-assistant, 4 commits to home-assistant.github.io") @@ -849,14 +867,16 @@ This page contains a list of people who have contributed in one way or another t - [Xorso (@Xorso)](https://github.com/Xorso "22 total commits to the home-assistant organization, 21 commits to home-assistant, 1 commit to hassio-addons") - [Yannick POLLART (@ypollart)](https://github.com/ypollart "8 total commits to the home-assistant organization, 4 commits to home-assistant, 4 commits to home-assistant.github.io") - [Yasin Soliman (@yasinS)](https://github.com/yasinS "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") +- [yingzong (@yingzong)](https://github.com/yingzong "1 total commits to the home-assistant organization, 1 commit to warrant") - [Yum (@goofz)](https://github.com/goofz "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Zac Hatfield Dodds (@Zac-HD)](https://github.com/Zac-HD "2 total commits to the home-assistant organization, 2 commits to home-assistant") - [Zen Tormey (@xehn)](https://github.com/xehn "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Zhao Lu (@zlu)](https://github.com/zlu "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") -- [ziotibia81 (@ziotibia81)](https://github.com/ziotibia81 "10 total commits to the home-assistant organization, 6 commits to home-assistant.github.io, 4 commits to home-assistant") +- [Zio Tibia (@ziotibia81)](https://github.com/ziotibia81 "12 total commits to the home-assistant organization, 7 commits to home-assistant.github.io, 5 commits to home-assistant") +- [Zorks (@Zorks)](https://github.com/Zorks "4 total commits to the home-assistant organization, 4 commits to home-assistant.github.io") - [Åskar Andersson (@olskar)](https://github.com/olskar "5 total commits to the home-assistant organization, 4 commits to home-assistant.github.io, 1 commit to hassbian-scripts") This page is irregularly updated using the [`credits_generator` tool](https://github.com/home-assistant/home-assistant.github.io/tree/next/credits_generator). If you think that you are missing, please let us know. -This page was last updated Friday, November 24th 2017, 11:17:36 pm UTC. +This page was last updated Sunday, December 24th 2017, 10:59:57 pm UTC. diff --git a/source/developers/development_environment.markdown b/source/developers/development_environment.markdown index 21d7651f031..0ff14d5c567 100644 --- a/source/developers/development_environment.markdown +++ b/source/developers/development_environment.markdown @@ -16,11 +16,13 @@ You'll need to set up a development environment if you want to develop a new fea #### {% linkable_title Developing on Linux %} Install the core dependencies. + ```bash $ sudo apt-get install python3-pip python3-dev python3-venv ``` In order to run `script/setup` below you will need some more dependencies. + ```bash $ sudo apt-get install libssl-dev libxml2-dev libxslt1-dev libjpeg-dev libffi-dev libudev-dev zlib1g-dev ``` @@ -33,7 +35,28 @@ Additional dependencies exist if you plan to perform Frontend Development, pleas #### {% linkable_title Developing on Windows %} -If you are using Windows as a development platform, make sure that you have the correct Microsoft Visual C++ build tools installed. Check the [Windows Compilers](https://wiki.python.org/moin/WindowsCompilers) section on the [Python website](https://www.python.org/) for details. Validation using `tox` will fail if this is not done correctly. +If you are using Windows as a development platform, make sure that you have the correct Microsoft [Visual C++ build tools](http://landinghub.visualstudio.com/visual-cpp-build-tools) installed. The installation of the most requirements and validation using `tox` will fail if this is not done correctly. Check the [Windows Compilers](https://wiki.python.org/moin/WindowsCompilers) section on the [Python website](https://www.python.org/) for details. + +Due to Home Assistant is mainly designed and developed on Linux distributions it is not recommended to develop on Windows machines. However on Windows 10 machines you should decide to set up a [Linux subsystem](https://docs.microsoft.com/de-de/windows/wsl/install-win10). + +Setup Linux subsystem. + +```bash +$ apt-get update +$ apt-get upgrade +$ echo 'export DISPLAY=:0' >> ~/.bashrc && . ~/.bashrc +$ sudo apt-get install xubuntu-desktop -y +``` + +It is recommended using [PyCharm](https://www.jetbrains.com/pycharm/download/) as debugger. Download and start PyCharm. + +```bash +$ wget https://download.jetbrains.com/python/pycharm-community-20XX.X.tar.gz +$ tar -xzf pycharm-community-20XX.X +$ ./pycharm.sh +``` + +In order to display the PyCharm GUI on Windows you need to run a X-Server like [VcXserv](https://sourceforge.net/projects/vcxsrv/). Also, make sure to install or upgrade the `setuptools` Python package. It contains compatibility improvements and adds automatic use of compilers: @@ -62,27 +85,26 @@ $ git remote add upstream https://github.com/home-assistant/home-assistant.git ### {% linkable_title Setting up virtual environment %} -If you plan on providing isolation to your environment using [`venv`](https://docs.python.org/3.4/library/venv.html). Within the `home-assistant` directory, create and activate your virtual environment. +To isolate your environment from the rest of the system, set up a [`venv`](https://docs.python.org/3.4/library/venv.html). Within the `home-assistant` directory, create and activate your virtual environment. ```bash -$ python3 -m venv venv -$ source venv/bin/activate +$ python3 -m venv . +$ source bin/activate ``` - -### {% linkable_title Setup and Run %} +Install the requirements with a provided script named `setup`. ```bash -$ cd home-assistant $ script/setup ``` -* Run `hass` to invoke your local installation. +Invoke your installation. + +```bash +$ hass +``` ### {% linkable_title Logging %} -By default logging in home-assistant is tuned for operating in -production (set to INFO by default, with some modules set to even less -verbose logging levels). +By default logging in home-assistant is tuned for operating in production (set to INFO by default, with some modules set to even less verbose logging levels). -You can use the [logger](/components/logger/) component to adjust -logging to DEBUG to see even more details about what is going on. +You can use the [logger](/components/logger/) component to adjust logging to DEBUG to see even more details about what is going on. diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown index 98e88c7f26d..0fb71208d9a 100755 --- a/source/developers/frontend.markdown +++ b/source/developers/frontend.markdown @@ -27,7 +27,7 @@ First step is to configure Home Assistant to use the development mode for the fr ```yaml frontend: - development_repo: ../home-assistant-polymer + development_repo: ``` Next step is to git clone the [home-assistant-polymer repository][hass-polymer]. You can place the repository anywhere on your system but to keep these instructions simple we're cloning the home-assistant-polymer repository as a sibling to the Home Assistant repo. diff --git a/source/developers/frontend_creating_custom_panels.markdown b/source/developers/frontend_creating_custom_panels.markdown index 87bfc3442a5..4066e6062a6 100644 --- a/source/developers/frontend_creating_custom_panels.markdown +++ b/source/developers/frontend_creating_custom_panels.markdown @@ -9,13 +9,28 @@ sharing: true footer: true --- -Any component has the possibility to add a panel to the frontend. Panels will be rendered full screen and have real-time access to the Home Assistant object via JavaScript. Examples of this in the app are map, logbook and history. +Panels are pages within Home Assistant that show information within Home Assistant and can allow controlling it. Panels are linked from the sidebar and rendered full screen. The have have real-time access to the Home Assistant object via JavaScript. Examples of panels in the app are map, logbook and history. + +Besides components registering panels, users can also register panels using the `panel_custom` component. This allows users to quickly build their own custom interfaces for Home Assistant. + +### {% linkable_title Before you get started %} + +The Home Assistant user interface is currently served to browsers in modern JavaScript and older JavaScript (ES5). The older version has a wider browser support but that comes at a cost of size, performance and more difficult to get started building panels for authors. + +We therefore advice to set up the frontend to serve the modern version of the frontend so that you won't need any build tools while developing. If you realize that your audience requires both, you can add a transpilation step in the future. To set up your frontend to always serve the latest version, add this to your config: + +``` +frontend: + javascript_version: latest +``` + +### {% linkable_title Building your first panel %} Create a file called `hello.html` in your /panels/. The `hello.html` contains the needed building blocks to create the elements inside the view. -```javascript +```html