` is a number or a X10 housecode. See configuration below for examples of ranges.
+ type: list
+ required: false
+ default: None excluded.
+{% endconfiguration %}
+
+Example configuration of the above:
+```yaml
+elkm1:
+ host: elks://IP_ADDRESS
+ username: USERNAME
+ password: PASSWORD
+ area:
+ exclude: [5-8]
+ zone:
+ exclude: [11-16, 19-192, 199-208]
+ plc:
+ include: [a1-d16, 192]
+ exclude: [b12-d5]
+```
diff --git a/source/_components/evohome.markdown b/source/_components/evohome.markdown
new file mode 100644
index 00000000000..6a69e5b7413
--- /dev/null
+++ b/source/_components/evohome.markdown
@@ -0,0 +1,55 @@
+---
+layout: page
+title: "Honeywell evohome"
+description: "Instructions on how to integrate Honeywell evohome devices with Home Assistant."
+date: 2018-09-25 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: honeywell.png
+ha_category: Hub
+ha_release: 0.80
+ha_iot_class: "Cloud Polling"
+---
+
+The `evohome` platform is the main component to set up and integrate all supported evohome devices.
+
+It uses the [evohomeclient](https://pypi.org/project/evohomeclient/) client library and so will let you control (only) _EU-based_ [Honeywell Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) systems.
+
+Currently, only Controllers are supported; support for Heating zones and DHW controllers will be added at a later time.
+
+It is related to the [honeywell](/components/climate.honeywell/) climate component, which allows limited integration with evohome Heating zones. These two components should be usuable side-by-side, but YMMV.
+
+
+## {% linkable_title Configuration %}
+
+To use this component in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+evohome:
+ - username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+ location_idx: 0
+```
+This is a IoT cloud-polling device, and the `scan_interval` is currently fixed at 3 minutes. Testing has indicated that this is a safe interval that - by itself - shouldn't cause you to be rate-limited by Honeywell.
+
+
+### {% linkable_title Configuration variables %}
+
+{% configuration %}
+username:
+ description: The username (email address) that has access to [Honeywell Connect Comfort](https://international.mytotalconnectcomfort.com/Account/Login) web site.
+ required: true
+ type: string
+password:
+ description: The password corresponding to the above username.
+ required: true
+ type: string
+location_idx:
+ description: Used to select which location to use, if your login has access to more than one location. Multiple locations are not supported.
+ required: false
+ type: int
+ default: 0
+{% endconfiguration %}
diff --git a/source/_components/fan.mqtt.markdown b/source/_components/fan.mqtt.markdown
index a3be2c04846..f48971fde9c 100644
--- a/source/_components/fan.mqtt.markdown
+++ b/source/_components/fan.mqtt.markdown
@@ -142,6 +142,10 @@ payload_not_available:
required: false
type: string
default: offline
+unique_id:
+ description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception.
+ required: false
+ type: string
{% endconfiguration %}
diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown
index 910b999004b..43700fe2efd 100644
--- a/source/_components/google_assistant.markdown
+++ b/source/_components/google_assistant.markdown
@@ -25,49 +25,79 @@ The Google Assistant component requires a bit more setup than most due to the wa
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 Migrate to release 0.80 and above %}
+
+Since release 0.80, the `Authorization Code` type of `OAuth` account linking is supported. To migrate your configuration, you need:
+
+1. Change your `Account linking` setting in [Actions on Google console](https://console.actions.google.com/), look for the `Advanced Options` in the bottom left of the sidebar.
+ - Change `Linking type` to `OAuth` and `Authorization Code`.
+ - In the `Client information` section:
+ - Change `Client ID` to `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important.
+ - Input any string you like into `Client Secret`, Home Assistant doesn't need this field.
+ - Change `Authorization URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize` (replace with your actual URL).
+ - Change `Token URL` to `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token` (replace with your actual URL).
+ - In the `Configure your client` section:
+ - Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`.
+ - Click 'Save' at the top right corner, then click 'Test' to generate a new draft version of the Test App.
+2. Change your `configuration.yaml` file:
+ - Remove `client_id`, `access_token`, `agent_user_id` config from `google_assistant:` since they are no longer needed.
+3. Restart Home Assistant, open the `Google Assistant` app on your mobile phone then go to `Settings > Home Control`, re-link `[test] your app name`.
+4. A browser will be open and asking you to login to your Home Assistant instance, it will redirect back to `Google Assistant` app right afterward.
+
+
+If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app.
+
+
## {% linkable_title Setup %}
-You need to create an API Key with the [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 [below](/#troubleshooting-the-request_sync-service)). If you don't provide it the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have setup this component you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration.
+You need to create an API Key with the [Google Cloud API 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 [below](#troubleshooting-the-request_sync-service)). If you don't provide one, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration.
-1. Create a new project in the [Actions on Google console](https://console.actions.google.com/).
- a. Add/Import project, give it a name
- b. Click on `Home Control` card, select the `Smart home` recommendation.
- c. Create an Action, under the build section. Add in your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / ip address and the port under which your Home Assistant is reachable.
- d. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen.
-2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section
- a. Leave it at the default `No, I only want to allow account creation on my website` and select Next
- b. For the `Linking type` select `OAuth` and `Implicit`
- c. Client ID: The `client_id` from your Home Assistant configuration (see below)
- d. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant/auth`.
- e. Configure your client. Add scopes for `email` and `name`.
- f. Testing instructions: Enter anything. It doesn't matter since you won't submit this app.
-3. Back on the overview page. Click `Simulator` under `TEST`. You don't have to actually test .
+1. Create a new project in the [Actions on Google console](https://console.actions.google.com/).
+ 1. Add/Import a project and give it a name.
+ 2. Click on the `Home Control` card, select the `Smart home` recommendation.
+ 3. Create an Action, under the build section. Add your Home Assistant URL: `https://[YOUR HOME ASSISTANT URL:PORT]/api/google_assistant`, replace the `[YOUR HOME ASSISTANT URL:PORT]` with the domain / IP address and the port under which your Home Assistant is reachable.
+ 4. Click `Done`. Then click on `Overview`, which will lead you back to the app details screen.
+2. `Account linking` is required for your app to interact with Home Assistant. Set this up under the `Quick Setup` section.
+ 1. Leave it at the default `No, I only want to allow account creation on my website` and select Next.
+ 2. For the `Linking type` select `OAuth` and `Authorization Code`.
+ 3. Client ID: `https://oauth-redirect.googleusercontent.com/`, the trailing slash is important.
+ 4. Client Secret: Anything you like, Home Assistant doesn't need this field.
+ 5. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize`.
+ 6. Token URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL:PORT]/auth/token`.
+ 7. Configure your client. Add scopes for `email` and `name`.
+ 8. Do **NOT** check `Google to transmit clientID and secret via HTTP basic auth header`.
+ 9. Testing instructions: Enter anything. It doesn't matter since you won't submit this app.
+
+
+
+3. Back on the overview page. Click `Simulator` under `TEST`. It will create a new draft version Test App. You don't have to actually test, but you need to generate this draft version Test App.
4. If you haven't already added the component configuration to `configuration.yaml` file and restarted Home Assistant, you'll be unable to continue until you have.
-5. Open the Google Assistant app and go into `Settings > Home Control`. Or on your Android phone or tablet, touch and hold the Home button or say "Ok Google.". At the top right, tap compass icon and then more icon and then `Settings > Home Control`.
-If you have added the [Home Assistant "web app"](/docs/frontend/mobile/) to your phone's homescreen before, you need remove it before next step
-6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you the screen where you can set rooms for your devices or nicknames for your devices.
-7. If you want to allow other household users to control the devices:
- a. Go to the settings for the project you created in point 1 in the developer console.
- b. Under the gear icon, click `Permissions`
- c. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role
- d. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 3
-8. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project:
- a. Go to the [cloud console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview)
- b. Select your project and click Enable Homegraph API
- c. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials
- d. Note down the generated API Key and use this in the configuration
+5. Open the Google Assistant app and go into `Settings > Home Control`.
+6. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices.
+
+If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app.
+
+7. If you want to allow other household users to control the devices:
+ 1. Go to the settings for the project you created in the [Actions on Google console](https://console.actions.google.com/).
+ 2. Click `Test -> Simulator`, then click `Share` icon in the right top corner. Follow the on-screen instruction:
+ 1. Add team members: Got to `Settings -> Permission`, click `Add`, type the new user's e-mail address and choose `Project -> Viewer` role.
+ 2. Copy and share the link with the new user.
+ 3. New user clicks the link with their own Google account, it will enable our draft test app under their account.
+ 3. Have the new user go to their `Google Assistant` app to add `[test] your app name` to their account.
+8. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project:
+ 1. Go to the [Google API 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, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials.
+ 4. Note down the generated API Key and use this in the configuration.
## {% linkable_title Configuration %}
-To enable this, add the following lines to your `configuration.yaml` file:
+Now add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
google_assistant:
project_id: someproject-2d0b8
- client_id: [long URL safe random string]
- access_token: [a different long URL safe random string]
- agent_user_id: [a string to identify user]
api_key: [a Homegraph API Key generated for the Google Actions project]
exposed_domains:
- switch
@@ -86,21 +116,9 @@ google_assistant:
{% configuration %}
project_id:
- description: Project ID from the Google Developer console (looks like `words-2ab12`)
+ description: Project ID from the Actions on Google console (looks like `words-2ab12`)
required: true
type: string
-client_id:
- description: A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth (example `aBcDeFgHiJkLmNoP`)
- required: true
- type: string
-access_token:
- description: Another different long random URL safe string (example `aBcDeFgHiJkLmNoP`)
- required: true
- type: string
-agent_user_id:
- description: A string to identify the user, e.g., email address. If not provided, the component will generate one.
- required: false
- type: string
api_key:
description: Your API key.
required: false
@@ -157,27 +175,17 @@ Currently, the following domains are available to be used with Google Assistant,
- media_player (on/off/set volume (via set brightness))
- climate (temperature setting)
-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.
-
-## {% linkable_title Troubleshooting %}
-
### {% linkable_title Troubleshooting the request_sync service %}
-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.
+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) from Home Control and relink.
-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:
+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 [Actions on Google console](https://console.actions.google.com). Resolve this by:
- 1. Removing your project from the [developer console](https://console.actions.google.com).
- 2. Add a new project to the [cloud console](https://console.cloud.google.com). Here you get a new `project_id`.
+ 1. Removing your project from the [Actions on Google console](https://console.actions.google.com).
+ 2. Add a new project to the [Google Cloud API Console](https://console.cloud.google.com). Here you get a new `project_id`.
3. Enable Homegraph API to the new project.
4. Generate 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`.
+ 5. Again, create a new project in the [Actions on Google 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`.
### {% linkable_title Troubleshooting with NGINX %}
diff --git a/source/_components/hangouts.markdown b/source/_components/hangouts.markdown
index 6ec9735d41a..22faaa78aaf 100644
--- a/source/_components/hangouts.markdown
+++ b/source/_components/hangouts.markdown
@@ -36,12 +36,17 @@ The authentication token will be generated and stored internally.
# Example configuration.yaml entry
hangouts:
intents:
+ HangoutsHelp:
+ sentences:
+ - Help
LivingRoomTemperature:
sentences:
- What is the temperature in the living room
conversations:
- id: CONVERSATION_ID1
- id: CONVERSATION_ID2
+ default_conversations:
+ - id: CONVERSATION_ID1
error_suppressed_conversations:
- id: CONVERSATION_ID2
@@ -72,6 +77,16 @@ intents:
description: "Specifies the id of the conversation. *The conversation id can be obtained from the `hangouts.conversations` entity.*"
required: true
type: string
+default_conversations:
+ description: "A list of conversations that are used for intents if no `conversations` entry for an intent is given."
+ required: false
+ type: [map]
+ default: empty
+ keys:
+ id:
+ description: "Specifies the id of the conversation. *The conversation id can be obtained from the `hangouts.conversations` entity.*"
+ required: true
+ type: string
error_suppressed_conversations:
description: "A list of conversations that won't get a message if the intent is not known."
required: false
@@ -86,6 +101,8 @@ error_suppressed_conversations:
The conversations has to be precreated, the conversation id can be obtained from the `hangouts.conversations` entity. Make sure to use quotes around the conversation id or alias to escape special characters (`!`, and `#`) in YAML.
+The intent `HangoutsHelp` is part of the component and return a list of all sentences the component unterstand in this conversation.
+
## {% linkable_title Adding sentences %}
```yaml
@@ -167,5 +184,5 @@ Sends a message to the given conversations.
|------------------------|----------|--------------------------------------------------|
| target | List of targets with id or name. [Required] | [{"id": "UgxrXzVrARmjx_C6AZx4AaABAagBo-6UCw"}, {"name": "Test Conversation"}] |
| message | List of message segments, only the "text" field is required in every segment. [Required] | [{"text":"test", "is_bold": false, "is_italic": false, "is_strikethrough": false, "is_underline": false, "parse_str": false, "link_target": "http://google.com"}, ...] |
-
+| data | Extra options | {"image_file": "path"} / {"image_url": "url"} |
diff --git a/source/_components/homekit.markdown b/source/_components/homekit.markdown
index d1a87d7fb48..08d4835bd67 100644
--- a/source/_components/homekit.markdown
+++ b/source/_components/homekit.markdown
@@ -123,7 +123,7 @@ homekit:
required: true
type: string
type:
- description: Only for `switch` entities. Type of accessory to be created within HomeKit. Valid types are `switch` and `outlet`. HomeKit will cache the type on the first run so a device must be removed and then re-added for any change to take effect.
+ description: Only for `switch` entities. Type of accessory to be created within HomeKit. Valid types are `faucet`, `outlet`, `shower`, `sprinkler`, `switch` and `valve`. HomeKit will cache the type on the first run so a device must be removed and then re-added for any change to take effect.
required: false
type: string
default: '`switch`'
diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown
index 9f48303946c..511390b52a5 100644
--- a/source/_components/ifttt.markdown
+++ b/source/_components/ifttt.markdown
@@ -13,7 +13,37 @@ featured: true
ha_iot_class: "Cloud Push"
---
-[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it.
+[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so-called "Applets". With the IFTTT component, you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel).
+
+## {% linkable_title Sending events from IFTTT to Home Assistant %}
+
+To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP component ([docs](https://www.home-assistant.io/components/http/#base_url)).
+
+To set it up, go to the integrations page in the configuration screen and find IFTTT. Click on configure. Follow the instructions on the screen to configure IFTTT.
+
+Events coming in from IFTTT will be available as events in Home Assistant and are fired as `ifttt_webhook_received`. The data specified in IFTTT will be available as the event data. You can use this event to trigger automations.
+
+For example, set the body of the IFTTT webhook to:
+
+```json
+{ "action": "call_service", "service": "light.turn_on", "entity_id": "light.living_room" }
+```
+
+You can then consume that information with the following automation:
+
+```yaml
+automation:
+ trigger:
+ event: ifttt_webhook_received
+ event_data:
+ action: call_service
+ action:
+ service_template: '{% raw %}{{ trigger.event.data.service }}{% endraw %}'
+ data_template:
+ entity_id: '{% raw %}{{ trigger.event.data.entity_id }}{% endraw %}'
+```
+
+## {% linkable_title Sending events to IFTTT %}
```yaml
# Example configuration.yaml entry
@@ -107,16 +137,6 @@ ifttt_notify:
```
{% endraw %}
-### {% linkable_title Sending events from IFTTT to Home Assistant %}
-
-To be able to receive events from IFTTT, your Home Assistant instance needs to be accessible from the web. This can be achieved by forwarding port 8123 from your router to the device running Home Assistant. If your ISP is giving you a new IP address from time to time, consider using [DuckDNS](https://duckdns.org).
-
-In the URL field, you can then put an [API URL](/developers/rest_api/). You probably want to use a POST action, so select `POST` as method. After your request line, you need to add your Home Assistant password, which you defined in the [http section of your config](/getting-started/basic/#password-protecting-the-web-interface), in the form of `?api_password=YOUR_PASSWORD`. For the message body, refer to the API page linked above.
-
-
-
-
-
### {% linkable_title Additional Channel Examples %}
Additional examples of using IFTTT channels can be found below.
diff --git a/source/_components/light.opple.markdown b/source/_components/light.opple.markdown
new file mode 100644
index 00000000000..6af52c83db1
--- /dev/null
+++ b/source/_components/light.opple.markdown
@@ -0,0 +1,42 @@
+---
+layout: page
+title: "Opple Light"
+description: "Instructions on how to integrate Opple lights into Home Assistant."
+date: 2018-09-21 10:40
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: opple.png
+ha_category: Light
+ha_release: "0.80"
+ha_iot_class: "Local Polling"
+---
+
+
+The `opple` light platform allows you to control the state of your Opple smart light.
+
+The platform supports all Opple lights with Wi-Fi support or lights that can be controlled by the App.
+
+To use your Opple light in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+light:
+ - platform: opple
+ name: LIGHT_NAME
+ host: IP_ADDRESS
+```
+
+{% configuration %}
+name:
+ description: The name to use when displaying this light.
+ required: false
+ type: string
+ default: opple light
+host:
+ description: "The IP address of your Opple light, eg. `192.168.0.21`."
+ required: true
+ type: string
+{% endconfiguration %}
+
diff --git a/source/_components/notify.pushbullet.markdown b/source/_components/notify.pushbullet.markdown
index cadfd99cf95..0cac4e4d554 100644
--- a/source/_components/notify.pushbullet.markdown
+++ b/source/_components/notify.pushbullet.markdown
@@ -99,6 +99,18 @@ action:
- **file_url** (*Required*): File to send with Pushbullet.
+### {% linkable_title Single target %}
+```yaml
+ action:
+ service: notify.NOTIFIER_NAME
+ data:
+ title: "Send to one device"
+ message: "This only goes to one specific device"
+ target: device/DEVICE_NAME
+```
+- **target**: Pushbullet device to recive the notification.
+
+
Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them.
diff --git a/source/_components/notify.tibber.markdown b/source/_components/notify.tibber.markdown
new file mode 100644
index 00000000000..48c9472d5a9
--- /dev/null
+++ b/source/_components/notify.tibber.markdown
@@ -0,0 +1,35 @@
+---
+layout: page
+title: "Tibber"
+description: "Instructions on how to integrate Tibber within Home Assistant."
+date: 2015-10-04 16:34
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tibber.png
+ha_category: Notifications
+ha_release: 0.80
+ha_qa_scale: silver
+ha_iot_class: "Cloud Polling"
+---
+
+The requirement is that you have setup [Tibber component](/components/tibber/).
+
+
+### {% linkable_title Usage %}
+
+Tibber can send a notification by calling the notify service [as described here](/components/notify/). It will send a notification to all devices registered in the Tibber account.
+
+
+To use notifications, please see the [getting started with automation page](/getting-started/automation/).
+
+### {% linkable_title Send message %}
+
+```yaml
+action:
+ service: notify.tibber
+ data:
+ title: Your title
+ message: This is a message for you!
+```
diff --git a/source/_components/notify.yessssms.markdown b/source/_components/notify.yessssms.markdown
index 040acd518b8..9f139ad18a2 100644
--- a/source/_components/notify.yessssms.markdown
+++ b/source/_components/notify.yessssms.markdown
@@ -43,5 +43,7 @@ Configuration variables:
- **recipient** (*Required*): This is the phone number you want to send the SMS notification to.
-Verify that your credentials work on [Yesss.at's website](https://yesss.at). Using the wrong credentials three times in a row will get you blocked for one hour.
+Verify that your credentials work on [Yesss.at's website](https://yesss.at). Using the wrong credentials three times in a row will get you suspended for one hour.
+Home Assistant will not try to login after the account has been suspended.
+Re-check the credentials and restart Home Assistant.
diff --git a/source/_components/rachio.markdown b/source/_components/rachio.markdown
index 25f54b65118..93b0c18b724 100644
--- a/source/_components/rachio.markdown
+++ b/source/_components/rachio.markdown
@@ -32,7 +32,17 @@ rachio:
api_key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```
-Follow the instructions on [Rachio Binary Sensor](/components/binary_sensor.rachio/) or [Rachio Switch](/components/switch.rachio/) to add Rachio platforms.
+Configuration variables:
+
+- **api_key** (*Required*): The API key for the Rachio account.
+- **manual_run_mins** (*Optional*): For how long, in minutes, to turn on a station when the switch is enabled. Defaults to 10 minutes.
+
+
+**Water-saving suggestion:**
+Set `manual_run_mins` to a high maximum failsafe value when using scripts to control zones. If something goes wrong with your script, Home Assistant, or you hit the Rachio API rate limit of 1700 calls per day, the controller will still turn off the zone after this amount of time.
+
+
+Once configured, [Rachio Binary Sensor](/components/binary_sensor.rachio/) and [Rachio Switch](/components/switch.rachio/) platforms will be automatically loaded.
### {% linkable_title iFrame %}
diff --git a/source/_components/sensor.aqualogic.markdown b/source/_components/sensor.aqualogic.markdown
new file mode 100644
index 00000000000..5c4c7208f0f
--- /dev/null
+++ b/source/_components/sensor.aqualogic.markdown
@@ -0,0 +1,55 @@
+---
+layout: page
+title: "AquaLogic Sensor"
+description: "Instructions on how to integrate your AquaLogic devices within Home Assistant."
+date: 2018-09-17 9:16
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hayward.png
+ha_category: Sensor
+ha_release: "0.80"
+ha_iot_class: "Local Push"
+---
+
+To get your AquaLogic sensors working within Home Assistant, please follow the instructions for the general [AquaLogic component](/components/aqualogic).
+
+## {% linkable_title Configuration %}
+
+Once you have enabled the [AquaLogic component](/components/aqualogic), add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: aqualogic
+ monitored_conditions:
+ - pool_temp
+```
+
+{% configuration %}
+monitored_conditions:
+ description: List of items you want to monitor.
+ required: false
+ default: all
+ type: list
+ keys:
+ air_temp:
+ description: The air temperature.
+ pool_temp:
+ description: The pool temperature.
+ spa_temp:
+ description: The spa temperature.
+ pool_chlorinator:
+ description: The pool chlorinator setting.
+ spa_chlorinator:
+ description: The spa chlorinator setting.
+ salt_level:
+ description: The current salt level.
+ pump_speed:
+ description: The current pump speed (Hayward VS pumps only).
+ pump_power:
+ description: The current pump power usage (Hayward VS pumps only).
+ status:
+ description: The current system status.
+{% endconfiguration %}
diff --git a/source/_components/sensor.enphase_envoy.markdown b/source/_components/sensor.enphase_envoy.markdown
index ec6d8002162..13c1b5924b3 100644
--- a/source/_components/sensor.enphase_envoy.markdown
+++ b/source/_components/sensor.enphase_envoy.markdown
@@ -13,7 +13,7 @@ ha_release: 0.76
ha_iot_class: "Local Polling"
---
-A sensor platform for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy) solar energy monitor.
+A sensor platform for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy) solar energy gateway. Works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S).
### {% linkable_title Configuration %}
@@ -26,24 +26,24 @@ sensor:
```
```yaml
-# Example configuration.yaml entry
+# Example configuration.yaml entry, limiting the metrics to production only
sensor:
- platform: enphase_envoy
ip_address: LOCAL_IP_FOR_ENVOY
monitored_conditions:
- production
- - consumption
+ - daily_production
+ - seven_days_production
- lifetime_production
- - lifetime_consumption
```
{% configuration %}
ip_address:
- description: The local IP Address of your Envoy. Leave blank to search for it, but this may not always be reliable.
+ description: The local IP address of your Envoy. Leave blank to use the default host name 'envoy', but this may not always be reliable. You should be able to just browse to this IP address.
required: false
type: string
monitored_conditions:
- description: The list of conditions to monitor.
+ description: The list of conditions to monitor. If you have an Envoy that doesn't support consumption metrics (ie. Envoy-C), it's best only configure the production metrics.
required: false
type: list
keys:
diff --git a/source/_components/sensor.gitlab_ci.markdown b/source/_components/sensor.gitlab_ci.markdown
new file mode 100644
index 00000000000..33d08fa1bb6
--- /dev/null
+++ b/source/_components/sensor.gitlab_ci.markdown
@@ -0,0 +1,54 @@
+---
+layout: page
+title: "GitLab-CI Sensor"
+description: "How to integrate GitLab-CI Job status within Home Assistant."
+date: 2018-09-10 19:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: gitlab.png
+ha_category: Sensor
+ha_release: 0.80
+ha_iot_class: "Cloud Polling"
+---
+
+The GitLab_CI sensor integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/).
+
+## {% linkable_title Setup %}
+
+You will need a GitLab repository ID. On the "Details" page for your GitLab repo, just below the project name is "Project ID:"
+Alternatively, you can use "{GitLab_Username}/{GitLab_RepositoryName}", ex: "MyCoolUsername/MyCoolRepository"
+
+A GitLab token with at least the API permission scope is needed, which can be created on the [GitLab Personal Access Tokens](https://gitlab.com/profile/personal_access_tokens) page of your GitLab User Settings.
+
+## {% linkable_title Configuration %}
+
+To enable this platform, please add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: gitlab_ci
+ gitlab_id: '1234567'
+ token: 'aaaaaaaaaaAAAAAAAAAA'
+```
+
+{% configuration %}
+gitlab_id:
+ description: GitLab repository ID or "username/repository"
+ required: true
+ type: string
+token:
+ description: GitLab API Token
+ required: true
+ type: string
+name:
+ description: Sensor name as it appears in Home Assistant. Defaults to 'GitLab CI Status'.
+ required: false
+ type: string
+url:
+ description: GitLab repository URL. Defaults to 'https://gitlab.com'. Used for self-hosted repositories.
+ required: false
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/sensor.google_travel_time.markdown
index 92046fd4a62..044dd34c9ea 100644
--- a/source/_components/sensor.google_travel_time.markdown
+++ b/source/_components/sensor.google_travel_time.markdown
@@ -19,7 +19,7 @@ The `google_travel_time` sensor provides travel time from the [Google Distance M
You need to register for an API key by following the instructions [here](https://github.com/googlemaps/google-maps-services-python#api-keys). You only need to turn on the Distance Matrix API.
-[Google now require billing](https://mapsplatform.googleblog.com/2018/05/introducing-google-maps-platform.html) to be enabled (and a valid credit card loaded) to access Google Maps APIs. The Distance Matrix API is billed at US$10 per 1000 requests, however a US$200 per month credit is applied (20,000 requests). By default, the sensor will update the travel time every 5 minutes, making approximately 288 calls per day. Note that at this rate, more than 2 sensors will likely exceed the free credit amount. If you need to run more than 2 sensors, consider changing the [scan interval](/docs/configuration/platform_options/#scan-interval) to something longer than 5 minutes to stay within the free credit limit.
+[Google now requires billing](https://mapsplatform.googleblog.com/2018/05/introducing-google-maps-platform.html) to be enabled (and a valid credit card loaded) to access Google Maps APIs. The Distance Matrix API is billed at US$10 per 1000 requests, however, a US$200 per month credit is applied (20,000 requests). By default, the sensor will update the travel time every 5 minutes, making approximately 288 calls per day. Note that at this rate, more than 2 sensors will likely exceed the free credit amount. If you need to run more than 2 sensors, consider changing the [scan interval](/docs/configuration/platform_options/#scan-interval) to something longer than 5 minutes to stay within the free credit limit or update the sensors on-demand using an automation (see example below).
A quota can be set against the API to avoid exceeding the free credit amount. Set the 'Elements per day' to a limit of 645 or less. Details on how to configure a quota can be found [here](https://developers.google.com/maps/documentation/distance-matrix/usage-and-billing#set-caps)
@@ -43,9 +43,9 @@ Configuration variables:
- **destination** (*Required*): One or more locations to use as the finishing point for calculating travel distance and time. The options for the destinations parameter are the same as for the origins parameter, described above.
- **name** (*Optional*): A name to display on the sensor. The default is "Google Travel Time - [Travel Mode]" where [Travel Mode] is the mode set in options for the sensor (see option "mode" below).
- **options** (*Optional*): A dictionary containing parameters to add to all requests to the Distance Matrix API. A full listing of available options can be found [here](https://developers.google.com/maps/documentation/distance-matrix/intro#RequestParameters).
- - **mode** (*Optional*): The travel mode used to calculate the directions / time. Can be `driving` (*Default*), `bicycling`, `transit` or `walking`.
+ - **mode** (*Optional*): The travel mode used to calculate the directions/time. Can be `driving` (*Default*), `bicycling`, `transit` or `walking`.
- **departure_time** (*Optional*): Can be `now`, a Unix timestamp, or a 24 hour time string like `08:00:00`. If you provide a time string, it will be combined with the current date to get travel time for that moment.
- - **arrival_time** (*Optional*): See notes above for `departure_time`. `arrival_time` can not be `now`, only a Unix timestamp or time string. You can not provide both `departure_time` and `arrival_time`. If you do provide both, `arrival_time` will be removed from the request.
+ - **arrival_time** (*Optional*): See notes above for `departure_time`. `arrival_time` cannot be `now`, only a Unix timestamp or time string. You can not provide both `departure_time` and `arrival_time`. If you do provide both, `arrival_time` will be removed from the request.
- **units** (*Optional*): Set the unit for the sensor in metric or imperial, otherwise the default unit the same as the unit set in `unit_system:`.
## {% linkable_title Dynamic Configuration %}
@@ -68,7 +68,7 @@ sensor:
api_key: XXXX_XXXXX_XXXXX
origin: zone.home
destination: Eddies House # Friendly name of a zone
-
+
# Tracking entity in imperial unit
- platform: google_travel_time
api_key: XXXX_XXXXX_XXXXX
@@ -87,5 +87,33 @@ sensor:
- Can also be referenced by just the zone's friendly name found in the attributes.
- **sensor**
- If state is a zone or zone friendly name then will use the zone location
- - All other states will be passed directly into the google API
+ - All other states will be passed directly into the Google API
- This includes all valid locations listed in the *Configuration Variables*
+
+## {% linkable_title Updating sensors on-demand using Automation %}
+
+You can also use the `sensor.google_travel_sensor_update` service to update the sensor on-demand. For example, if you want to update `sensor.morning_commute` every 2 minutes on weekday mornings, you can use the following automation:
+
+```yaml
+- id: update_morning_commute_sensor
+ alias: "Commute - Update morning commute sensor"
+ initial_state: 'on'
+ trigger:
+ - platform: time
+ minutes: '/2'
+ seconds: 00
+ condition:
+ - condition: time
+ after: '08:00:00'
+ before: '11:00:00'
+ - condition: time
+ weekday:
+ - mon
+ - tue
+ - wed
+ - thu
+ - fri
+ action:
+ - service: sensor.google_travel_sensor_update
+ entity_id: sensor.morning_commute
+```
diff --git a/source/_components/sensor.markdown b/source/_components/sensor.markdown
index 647f0e7ab08..a3cc2019987 100644
--- a/source/_components/sensor.markdown
+++ b/source/_components/sensor.markdown
@@ -22,6 +22,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **humidity**: Percentage of humidity in the air.
- **illuminance**: The current light level in lx or lm.
- **temperature**: Temperature in °C or °F.
+- **pressure**: Pressure in hPa or mbar.
diff --git a/source/_components/sensor.netatmo_public.markdown b/source/_components/sensor.netatmo_public.markdown
index c1c61a1a05c..0f70887c115 100644
--- a/source/_components/sensor.netatmo_public.markdown
+++ b/source/_components/sensor.netatmo_public.markdown
@@ -13,7 +13,14 @@ ha_iot_class: "Cloud Polling"
ha_release: 0.77
---
-The `netatmo_public` sensor allows you to expose data from [Netatmo](https://weathermap.netatmo.com/) to Home Assistant, even if you don't have a Netatmo device yourself. Currently, only live rain data is supported.
+The `netatmo_public` sensor allows you to expose data from [Netatmo](https://weathermap.netatmo.com/) to Home Assistant, even if you don't have a Netatmo device yourself. Currently the following conditions are supported:
+
+* temperature
+* pressure
+* humidity
+* rain
+* windstrength
+* guststrength
To enable the Netatmo sensor, you have to set up [netatmo](/components/netatmo/).
@@ -30,6 +37,13 @@ sensor:
lon_ne: -73.735
lat_sw: 40.552
lon_sw: -74.105
+ monitored_conditions:
+ - temperature
+ - pressure
+ - humidity
+ - rain
+ - windstrength
+ - guststrength
```
{% configuration %}
@@ -54,14 +68,18 @@ areas:
description: Longitude of south-western corner of area.
required: true
type: string
+ monitored_conditions:
+ description: List of environment conditions to monitor.
+ required: true
+ type: list
name:
description: Name of the sensor.
required: false
type: string
default: Netatmo Public Data
- type:
+ mode:
description: "How to calculate the value of the sensor if there are multiple stations reporting data. Accepts `max` or `avg`."
required: false
type: string
- default: max
+ default: avg
{% endconfiguration %}
diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown
index 48d141ddfef..fd95c768fc1 100644
--- a/source/_components/sensor.openweathermap.markdown
+++ b/source/_components/sensor.openweathermap.markdown
@@ -72,6 +72,8 @@ sensor:
description: The rain volume.
snow:
description: The snow volume.
+ weather_code:
+ description: The current weather condition code.
{% endconfiguration %}
Details about the API are available in the [OpenWeatherMap documentation](http://openweathermap.org/api).
diff --git a/source/_components/sensor.scrape.markdown b/source/_components/sensor.scrape.markdown
index 1ae233ebdf6..b6da7d08d77 100644
--- a/source/_components/sensor.scrape.markdown
+++ b/source/_components/sensor.scrape.markdown
@@ -36,6 +36,7 @@ Configuration variables:
- **authentication** (*Optional*): Type of the HTTP authentication. Either `basic` or `digest`.
- **username** (*Optional*): The username for accessing the website.
- **password** (*Optional*): The password for accessing the website.
+- **headers** (*Optional*): Headers to use for the web request
## {% linkable_title Examples %}
@@ -130,3 +131,23 @@ sensor:
unit_of_measurement: "öre/kWh"
```
{% endraw %}
+
+### {% linkable_title BOM Weather %}
+
+The Australian Bureau of Meterology website returns an error if the User Agent header is not sent.
+
+{% raw %}
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: scrape
+ resource: http://www.bom.gov.au/vic/forecasts/melbourne.shtml
+ name: Melbourne Forecast Summary
+ select: ".main .forecast p"
+ value_template: '{{ value | truncate(255) }}'
+ # Request every hour
+ scan_interval: 3600
+ headers:
+ User-Agent: Mozilla/5.0
+```
+{% endraw %}
diff --git a/source/_components/sensor.tibber.markdown b/source/_components/sensor.tibber.markdown
index 05b335f7ff7..5fb39f7999b 100644
--- a/source/_components/sensor.tibber.markdown
+++ b/source/_components/sensor.tibber.markdown
@@ -17,21 +17,8 @@ ha_iot_class: "Cloud Polling"
The `tibber` sensor provides the current electricity price if you are a [Tibber](https://tibber.com/) customer.
If you have a Tibber Pulse it will also show the electricity consumption in real time.
-To add Tibber to your installation, add the following to your `configuration.yaml` file:
+The requirement is that you have setup [Tibber component](/components/tibber/).
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: tibber
- access_token: d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a
-```
-
-{% configuration %}
- access_token:
- description: Go to [developer.tibber.com/](https://developer.tibber.com/) to get your API token.
- required: true
- type: string
-{% endconfiguration %}
## {% linkable_title Examples %}
diff --git a/source/_components/switch.aqualogic.markdown b/source/_components/switch.aqualogic.markdown
new file mode 100644
index 00000000000..80a0ad625db
--- /dev/null
+++ b/source/_components/switch.aqualogic.markdown
@@ -0,0 +1,58 @@
+---
+layout: page
+title: "AquaLogic Switch"
+description: "Instructions on how to integrate your AquaLogic devices within Home Assistant."
+date: 2018-09-17 9:16
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: hayward.png
+ha_category: Switch
+ha_release: "0.80"
+ha_iot_class: "Local Push"
+---
+
+To get your AquaLogic switches working within Home Assistant, please follow the instructions for the general [AquaLogic component](/components/aqualogic).
+
+## {% linkable_title Configuration %}
+
+Once you have enabled the [AquaLogic component](/components/aqualogic), add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+switch:
+ - platform: aqualogic
+ monitored_conditions:
+ - lights
+ - filter
+```
+
+{% configuration %}
+monitored_conditions:
+ description: List of items you want to monitor/control.
+ required: false
+ default: all
+ type: list
+ keys:
+ filter:
+ description: Controls the filter pump.
+ filter_low_speed:
+ description: Controls low speed mode on the filter pump (multi-speed pumps only).
+ lights:
+ description: Controls the Lights relay.
+ aux_1:
+ description: Controls the Aux 1 relay.
+ aux_2:
+ description: Controls the Aux 2 relay.
+ aux_3:
+ description: Controls the Aux 3 relay.
+ aux_4:
+ description: Controls the Aux 4 relay.
+ aux_5:
+ description: Controls the Aux 5 relay.
+ aux_6:
+ description: Controls the Aux 6 relay.
+ aux_7:
+ description: Controls the Aux 7 relay.
+{% endconfiguration %}
diff --git a/source/_components/switch.rachio.markdown b/source/_components/switch.rachio.markdown
index 89ece905556..f9da8e15d1f 100644
--- a/source/_components/switch.rachio.markdown
+++ b/source/_components/switch.rachio.markdown
@@ -15,30 +15,9 @@ ha_release: 0.46
The `rachio` switch platform allows you to toggle zones connected to your [Rachio irrigation system](http://rachio.com/) on and off.
-Once configured, a switch will be added for every zone that is enabled on every controller in the account provided, as well as a switch to toggle each controller's standby mode.
+Once configured, a switch will be added for every zone that is enabled on every controller in the account provided, as well as a switch to toggle each controller's standby mode.
-
-You must have the [Rachio component](/components/rachio/) configured to use this switch.
-
-
-## {% linkable_title Configuration %}
-
-To add this platform to your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-switch:
- - platform: rachio
-```
-
-Configuration variables:
-
-- **manual_run_mins** (*Optional*): For how long, in minutes, to turn on a station when the switch is enabled. Defaults to 10 minutes.
-
-
-**Water-saving suggestion:**
-Set `manual_run_mins` to a high maximum failsafe value when using scripts to control zones. If something goes wrong with your script, Home Assistant, or you hit the Rachio API rate limit of 1700 calls per day, the controller will still turn off the zone after this amount of time.
-
+They will be automatically added if the [Rachio component](/components/rachio/) is loaded.
## {% linkable_title Examples %}
diff --git a/source/_components/switch.tradfri.markdown b/source/_components/switch.tradfri.markdown
new file mode 100644
index 00000000000..411b8883ed1
--- /dev/null
+++ b/source/_components/switch.tradfri.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "IKEA Trådfri Switch"
+description: "Access and control your ZigBee-based IKEA Trådfri (Tradfri) Switches."
+date: 2018-09-30 19.22
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ikea.svg
+ha_category: Switch
+ha_iot_class: "Local Polling"
+ha_release: 0.80
+---
+
+For installation instructions, see [the Trådfri component](/components/tradfri/).
diff --git a/source/_components/tibber.markdown b/source/_components/tibber.markdown
new file mode 100644
index 00000000000..4148ebbb1ab
--- /dev/null
+++ b/source/_components/tibber.markdown
@@ -0,0 +1,35 @@
+---
+layout: page
+title: "Tibber"
+description: "Instructions on how to integrate Tibber within Home Assistant."
+date: 2015-10-04 16:34
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: tibber.png
+ha_category: Energy
+ha_release: 0.80
+ha_qa_scale: silver
+ha_iot_class: "Cloud Polling"
+---
+
+
+The `tibber` component provides a sensor with the current electricity price if you are a [Tibber](https://tibber.com/) customer.
+If you have a Tibber Pulse it will also show the electricity consumption in real time.
+
+It also provides a notification service.
+
+To add Tibber to your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+tibber:
+ access_token: d1007ead2dc84a2b82f0de19451c5fb22112f7ae11d19bf2bedb224a003ff74a
+```
+
+{% configuration %}
+ access_token:
+ description: Go to [developer.tibber.com/](https://developer.tibber.com/) to get your API token.
+ required: true
+ type: string
+{% endconfiguration %}
diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown
index 8c16a9a17e2..ce35f040203 100644
--- a/source/_components/tradfri.markdown
+++ b/source/_components/tradfri.markdown
@@ -38,10 +38,10 @@ host:
required: true
type: string
allow_tradfri_groups:
- description: "Set this to `false` to stop Home Assistant from importing the groups defined on the Trådfri bridge."
+ description: "Set this to `true` to allow Home Assistant to import the groups defined on the Trådfri bridge."
required: false
type: boolean
- default: true
+ default: false
{% endconfiguration %}
diff --git a/source/_components/upnp.markdown b/source/_components/upnp.markdown
index 02ba10a72fd..b16888a93c2 100644
--- a/source/_components/upnp.markdown
+++ b/source/_components/upnp.markdown
@@ -12,7 +12,7 @@ ha_category: Network
ha_release: 0.18
---
-The `upnp` component enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the Internet Gateway Device (IGD) Protocol if enabled on your router.
+The `upnp` component enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router.
The IGD automatically creates port forwarding mappings on your router for Home Assistant, exposing your installation to the internet. The mapping will never automatically expire. Upon stopping Home Assistant, the mapping will be removed from your router.
@@ -25,16 +25,17 @@ To integrate this into Home Assistant, add the following section to your `config
```yaml
# Example configuration.yaml entry with custom external portal
upnp:
+ port_mapping: true
ports:
hass: 8000
8080: 8080
```
-If you which to have the statistics without having port mapping done through IGD, add the option **port_mapping**.
+With the default settings only the sensors are added for statistics. If you wish to have port mapping done through IGD, add the option **port_mapping** and **ports**.
{% configuration binary_sensor.template %}
ports:
- description: Map of ports to map from internal to external. Pass 'hass' as internal port to use the port Home Assistant runs on.
+ description: Map of ports to map from internal to external. Pass 'hass' as internal port to use the port Home Assistant runs on. Note that you have to enable port_mapping if you wish to map ports.
required: false
type: map
default: open same port on external router as that HASS runs locally and forwards it.
@@ -43,11 +44,6 @@ If you which to have the statistics without having port mapping done through IGD
required: false
type: boolean
default: false
- units:
- description: Define the units used for the UPNP sensor. Possible values are Bytes, KBytes, MBytes, GBytes.
- required: false
- type: string
- default: Mbytes
local_ip:
description: The local IP address of the computer running Home Assistant.
required: false
diff --git a/source/_components/webhook.markdown b/source/_components/webhook.markdown
new file mode 100644
index 00000000000..5540a153410
--- /dev/null
+++ b/source/_components/webhook.markdown
@@ -0,0 +1,5 @@
+---
+date: 2018-10-05 00:01:00
+---
+
+
diff --git a/source/_components/xiaomi_aqara.markdown b/source/_components/xiaomi_aqara.markdown
index d98517498f1..5c6fa1016ba 100644
--- a/source/_components/xiaomi_aqara.markdown
+++ b/source/_components/xiaomi_aqara.markdown
@@ -40,6 +40,7 @@ The `xiaomi_aqara` component allows you to integrate [Xiaomi](http://www.mi.com/
- Gateway (Light, Illumination Sensor, Ringtone play)
- Intelligent Curtain
- Water Leak Sensor
+- Vibration Sensor
- Battery
#### {% linkable_title Unsupported Devices %}
diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown
index 74f0427f48c..a34d46cc3c6 100644
--- a/source/_docs/automation/templating.markdown
+++ b/source/_docs/automation/templating.markdown
@@ -126,6 +126,15 @@ The following tables show the available trigger data per platform.
| `trigger.platform` | Hardcoded: `time`
| `trigger.now` | DateTime object that triggered the time trigger.
+### {% linkable_title webhook %}
+
+| Template variable | Data |
+| ---- | ---- |
+| `trigger.platform` | Hardcoded: `webhook`
+| `trigger.webhook_id` | The webhook ID that was triggered.
+| `trigger.json` | The JSON data of the request (if it had a JSON content type).
+| `trigger.data` | The form data of the request (if it had a form data content type).
+
### {% linkable_title zone %}
| Template variable | Data |
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 9c65538ee4b..4bbf7e6d859 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -125,7 +125,7 @@ automation:
offset: '-00:45:00'
```
-Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting.
+Sometimes you may want more granular control over an automation based on the elevation of the sun. This can be used to layer automations to occur as the sun lowers on the horizon or even after it is below the horizon. This is also useful when the "sunset" event is not dark enough outside and you would like the automation to run later at a precise solar angle instead of the time offset such as turning on exterior lighting.
{% raw %}
```yaml
@@ -190,9 +190,20 @@ automation 3:
seconds: 00
```
- Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute.
+ Remember that if you are using matching to include both `minutes` and `seconds`. Without `seconds`, your automation will trigger 60 times during the matching minute.
+### {% linkable_title Webhook trigger %}
+
+Webhook triggers are triggered by web requests made to the webhook endpoint: `/api/webhook/`. This endpoint does not require authentication besides knowing the webhook id. You can either send encoded form or JSON data, available in the template as either `trigger.json` or `trigger.data`.
+
+```yaml
+automation:
+ trigger:
+ platform: webhook
+ webhook_id:
+```
+
### {% linkable_title Zone trigger %}
Zone triggers can trigger when an entity is entering or leaving the zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. This includes [GPS Logger](/components/device_tracker.gpslogger/), the [OwnTracks platform](/components/device_tracker.owntracks/) and the [iCloud platform](/components/device_tracker.icloud/).
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 7d07c3e0921..07f1194e713 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -92,6 +92,8 @@ Home Assistant adds extensions to allow templates to access all of the current s
- Filter `regex_search(string, find, ignorecase=FALSE)` will match the find expression anywhere in the string using regex.
- Filter `regex_replace(string, find='', replace='', ignorecase=False)` will replace the find expression with the replace string using regex.
- Filter `regex_findall_index(string, find='', index=0, ignorecase=False)` will find all regex matches of find in string and return the match at index (findall returns an array of matches).
+- Filter `bitwise_and(value_one, value_two)` perform a bitwise and(&) operation with two values.
+- Filter `bitwise_or(value_one, value_two)` perform a bitwise or(\|) operation with two values.
[strp-format]: https://docs.python.org/3.6/library/datetime.html#strftime-and-strptime-behavior
diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown
index 72be7d2a796..bb8c9c805bd 100644
--- a/source/_docs/z-wave/device-specific.markdown
+++ b/source/_docs/z-wave/device-specific.markdown
@@ -385,3 +385,127 @@ Button three release|Circle|3|1
Button four tap|Circle with Line|4|0
Button four hold|Circle with Line|4|2
Button four release|Circle with Line|4|1
+
+### {% linkable_title RFWDC Cooper 5-button Scene Control Keypad %}
+
+For the RFWDC Cooper 5-button Scene Control Keypad, you may need to update the `COMMAND_CLASS_CENTRAL_SCENE` for each node in your `zwcfg` file with the following:
+
+```xml
+
+
+
+
+
+
+
+
+
+```
+
+Below is a table of the action/scenes for the Buttons:
+
+**Action**|**scene\_id**
+:-----:|:-----:
+Button one tap|1
+Button two tap|2
+Button three tap|3
+Button four tap|4
+Button five tap|5
+
+When a button turns off, the controller sends `basic_set` in a generic `node_event` and does not specify which button was pressed. The status of the buttons is encoded into the `indicator` value, so in order to determine the status of each button, you need to refresh the indicator value. You can also control the LEDs for each button by setting the indicator value. For responsiveness, automations should be triggered with `zwave.scene_activated` events rather than the switch status.
+
+Here is an example configuration needed for the scene controller:
+
+{% raw %}
+```yaml
+automation:
+ - alias: Sync the indicator value on button events
+ trigger:
+ - platform: event
+ event_type: zwave.scene_activated
+ event_data:
+ entity_id: zwave.scene_contrl
+ - platform: event
+ event_type: zwave.node_event
+ event_data:
+ entity_id: zwave.scene_contrl
+ action:
+ - service: zwave.refresh_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+switch:
+ - platform: template
+ switches:
+ button_1_led:
+ value_template: "{{ states('sensor.scene_contrl_indicator')|int|bitwise_and(1) > 0 }}"
+ turn_on:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int + 1 }}"
+ turn_off:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int - 1 }}"
+ button_2_led:
+ value_template: "{{ states('sensor.scene_contrl_indicator')|int|bitwise_and(2) > 0 }}"
+ turn_on:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int + 2 }}"
+ turn_off:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int - 2 }}"
+ button_3_led:
+ value_template: "{{ states('sensor.scene_contrl_indicator')|int|bitwise_and(4) > 0 }}"
+ turn_on:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int + 4 }}"
+ turn_off:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int - 4 }}"
+ button_4_led:
+ value_template: "{{ states('sensor.scene_contrl_indicator')|int|bitwise_and(8) > 0 }}"
+ turn_on:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states(scene_contrl_indicator)|int + 8 }}"
+ turn_off:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int - 8 }}"
+ button_5_led:
+ value_template: "{{ states('sensor.scene_contrl_indicator')|int|bitwise_and(16) > 0 }}"
+ turn_on:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int + 16 }}"
+ turn_off:
+ service: zwave.set_node_value
+ data_template:
+ node_id: 3
+ value_id: "{{ state_attr('sensor.scene_contrl_indicator','value_id') }}"
+ value: "{{ states('sensor.scene_contrl_indicator')|int - 16 }}"
+```
+{% endraw %}
\ No newline at end of file
diff --git a/source/_docs/z-wave/events.markdown b/source/_docs/z-wave/events.markdown
index c3b63a1282f..6908a94b0f2 100644
--- a/source/_docs/z-wave/events.markdown
+++ b/source/_docs/z-wave/events.markdown
@@ -20,6 +20,17 @@ Home Assistant will trigger an event when the Z-Wave network is complete, meanin
event_type: zwave.network_complete
```
+## {% linkable_title zwave.network_complete_some_dead %}
+
+Home Assistant will trigger an event when the Z-Wave network is complete, but some nodes are marked dead, meaning all of the nodes on the network have been queried. This can take quite some time, depending on wakeup intervals on the battery-powered devices on the network.
+
+```yaml
+ - alias: Z-Wave network is complete some dead
+ trigger:
+ platform: event
+ event_type: zwave.network_complete_some_dead
+```
+
## {% linkable_title zwave.network_ready %}
Home Assistant will trigger an event when the Z-Wave network is ready for use. Between `zwave.network_start` and `zwave.network_ready` Home Assistant will feel sluggish when trying to send commands to Z-Wave nodes. This is because the controller is requesting information from all of the nodes on the network. When this is triggered, all awake nodes have been queried and sleeping nodes will be queried when they awake.
diff --git a/source/_docs/z-wave/services.markdown b/source/_docs/z-wave/services.markdown
index a14d9e8539d..905d85f7fd0 100644
--- a/source/_docs/z-wave/services.markdown
+++ b/source/_docs/z-wave/services.markdown
@@ -23,6 +23,7 @@ The `zwave` component exposes multiple services to help maintain the network. Al
| print_node | Print all states of Z-Wave node. |
| refresh_entity | Refresh the Z-Wave entity by refreshing dependent values. |
| refresh_node | Refresh the Z-Wave node. |
+| refresh_node_value | Refresh the specified value of a Z-Wave node. |
| remove_node | Put the Z-Wave controller in exclusion mode. Allows you to remove a device from the Z-Wave network. |
| rename_node | Sets a node's name. Requires a `node_id` and `name` field. |
| rename_value | Sets a value's name. Requires a `node_id`, `value_id`, and `name` field. |
@@ -30,6 +31,7 @@ The `zwave` component exposes multiple services to help maintain the network. Al
| replace_failed_node | Replace a failed device with another. If the node is not in the controller's Failed Node List, or the node responds, this command will fail. |
| reset_node_meters | Reset a node's meter values. Only works if the node supports this. |
| set_config_parameter | Lets the user set a config parameter to a node. NOTE: Use the parameter option's `label` string as the `value` for list parameters (e.g., `"value": "Off"`). For all other parameters use the relevant integer `value` (e.g., `"value": 1`). |
+| set_node_value | Set the specified value of a Z-Wave node. |
| soft_reset | Tells the controller to do a "soft reset." This is not supposed to lose any data, but different controllers can behave differently to a "soft reset" command. |
| start_network | Starts the Z-Wave network. |
| stop_network | Stops the Z-Wave network. |
diff --git a/source/_lovelace/gauge.markdown b/source/_lovelace/gauge.markdown
new file mode 100644
index 00000000000..32528d7371f
--- /dev/null
+++ b/source/_lovelace/gauge.markdown
@@ -0,0 +1,100 @@
+---
+layout: page
+title: "Gauge Card"
+sidebar_label: Gauge
+description: "The Gauge card allows you to display sensor information visually"
+date: 2018-10-11 10:28 +00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+Gauge card is a basic card that allows visually seeing sensor data.
+
+
+
+Screenshot of the gauge card.
+
+
+```yaml
+- type: gauge
+ entity: sensor.cpu_usuage
+```
+
+{% configuration %}
+type:
+ required: true
+ description: gauge
+ type: string
+entity:
+ required: true
+ description: "Entity id to show"
+ type: string
+title:
+ required: false
+ description: Title of Gauge Data
+ type: string
+unit_of_measurement:
+ required: false
+ description: Unit of Measurement given to data
+ type: string
+ default: "Unit Of Measurement given by entity"
+min:
+ required: false
+ description: Minimum value for graph
+ type: integer
+ default: 0
+max:
+ required: false
+ description: Maximum value for graph
+ type: integer
+ default: 100
+severity:
+ required: false
+ description: Allows setting of colors for different numbers
+ type: map
+ keys:
+ green:
+ required: true
+ description: Value from which to start green color
+ type: integer
+ yellow:
+ required: true
+ description: Value from which to start yellow color
+ type: integer
+ red:
+ required: true
+ description: Value from which to start red color
+ type: integer
+{% endconfiguration %}
+
+## {% linkable_title Examples %}
+
+Title and Unit of Measurement Example:
+
+```yaml
+- type: gauge
+ title: CPU Usuage
+ unit_of_measurement: '%'
+ entity: sensor.cpu_usuage
+```
+
+
+
+Screenshot of the gauge card with custom title and unit of measurement.
+
+
+Define the severity map:
+
+```yaml
+- type: gauge
+ title: With Severity
+ title: CPU Usuage
+ unit_of_measurement: '%'
+ entity: sensor.cpu_usuage
+ severity:
+ green: 0
+ yellow: 45
+ red: 85
+```
diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown
index 9b12e8db29a..9dda1cd3eac 100644
--- a/source/_lovelace/glance.markdown
+++ b/source/_lovelace/glance.markdown
@@ -45,6 +45,10 @@ column_width:
description: "Column width as CSS length like `100px` or `calc(100% / 7)`. This controls how many entities appear in a row - at the default 20% you have 5 entities in a row. Use `calc(100% / 7)` for 7 entities in a row, and so on."
type: string
default: 20%
+theming:
+ required: false
+ description: "Set to `primary` to style the card with the background and text color of the header bar."
+ type: string
{% endconfiguration %}
## {% linkable_title Options For Entities %}
diff --git a/source/_lovelace/sensor.markdown b/source/_lovelace/sensor.markdown
new file mode 100644
index 00000000000..d1d1b49e0bd
--- /dev/null
+++ b/source/_lovelace/sensor.markdown
@@ -0,0 +1,79 @@
+---
+layout: page
+title: "Sensor Card"
+sidebar_label: Sensor
+description: "The sensor card gives you information about the sensor state"
+date: 2018-10-07 10:28 +00:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+---
+
+The sensor card gives you a quick overview of your sensors state with an optional graph to visualize change over time.
+
+
+
+ Screenshot of the sensor card.
+
+
+{% configuration %}
+type:
+ required: true
+ description: sensor
+ type: string
+entity:
+ required: true
+ description: Entity id of `sensor` domain
+ type: string
+icon:
+ required: false
+ description: The card icon
+ type: string
+name:
+ required: false
+ description: The card name
+ type: string
+graph:
+ required: false
+ description: Type of graph `none` or `line`
+ type: string
+unit:
+ required: false
+ description: The unit of measurement
+ type: string
+height:
+ required: false
+ description: Height of the graph
+ type: integer
+ default: 100
+line_width:
+ required: false
+ description: Width of the line stroke
+ type: integer
+ default: 5
+line_color:
+ required: false
+ description: Color of the line stroke
+ type: string
+accuracy:
+ required: false
+ description: Amount of data points on the graph
+ type: integer
+ default: 10
+hours_to_show:
+ required: false
+ description: Hours to show in graph
+ type: integer
+ default: 24
+{% endconfiguration %}
+
+## {% linkable_title Example %}
+
+```yaml
+- type: sensor
+ entity: sensor.illumination
+ name: Illumination
+ height: 75
+ line_color: "#3498db"
+```
diff --git a/source/_posts/2018-10-12-release-80.markdown b/source/_posts/2018-10-12-release-80.markdown
new file mode 100644
index 00000000000..36537324d3e
--- /dev/null
+++ b/source/_posts/2018-10-12-release-80.markdown
@@ -0,0 +1,668 @@
+---
+layout: post
+title: "0.80: Lovelace updates, webhooks, TRÅDFRI switches"
+description: "Hacktoberfest is in full swing and we got a whole boat of new features."
+date: 2018-10-12 00:01:00
+date_formatted: "October 12, 2018"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2018-10-release-80/lovelace-glance-sensor.png
+---
+
+October 12, 2018. 12 days into Hacktoberfest and it's been busier than ever on the repositories. On the main repo, 43 open, 104 closed. How the documentation team is still alive, I don't know: 26 open, 234 closed. If you've opened a contribution that is pending a response, that's probably because we're busy elsewhere or are taking some well deserved rest.
+
+Alright, new release, we got some cool stuff! Let's start with our [Lovelace UI](/lovelace). We have integrated into Lovelace UI some of the custom cards that our amazing community have built, making them easily accessible to all users. The cards are [Gauge][ll-gauge] and [Sensor][ll-sensor]:
+
+[ll-gauge]: /lovelace/gauge/
+[ll-sensor]: /lovelace/sensor/
+
+
+
+Next up is a new way to get data into Home Assistant: webhooks. With the introduction of auth and with the introduction of long-lived access tokens, we realized that it's still annoying to have to give full HA access to an app just to get a piece of information in Home Assistant. So with webhooks we can generate unique URLs that are inprobable to guess, and data delivered to the webhook will only go to the designated automation or component. This feature is available for component developers to integrate, or for users via the new automation [webhook trigger](/docs/automation/trigger/#webhook-trigger).
+
+
+
+Configuring IFTTT via th integrations panel.
+
+
+On the devices side, we got basic support for the new IKEA TRÅDFRI switches, Honeywell evohome controllers (EU-based) and if you want to control your pool, you can now do that with the new AquaLogic integration.
+
+## {% linkable_title New Platforms %}
+
+- GitLab-CI sensor integration addition. ([@DanielWinks] - [#16561]) ([sensor.gitlab_ci docs]) (new-platform)
+- Add support for Opple light ([@jedmeng] - [#16765]) ([light.opple docs]) (new-platform)
+- Add (EU-based) Honeywell evohome CH/DHW controller ([@zxdavb] - [#16427]) ([evohome docs]) ([climate.evohome docs]) ([climate.honeywell docs]) (new-platform)
+- Add webhook + IFTTT example ([@balloob] - [#16817]) ([ifttt docs]) ([webhook docs]) (new-platform)
+- Add basic support for Tradfri switches ([@ggravlingen] - [#17007]) ([tradfri docs]) ([switch.tradfri docs]) (new-platform)
+- Add AquaLogic component ([@swilson] - [#16763]) ([aqualogic docs]) ([sensor.aqualogic docs]) ([switch.aqualogic docs]) (new-platform)
+- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform)
+- Tibber component and notify ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform)
+- Add new component fritzbox binary_sensor ([@hthiery] - [#17057]) ([fritzbox docs]) ([binary_sensor.fritzbox docs]) (new-platform)
+- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform)
+
+## {% linkable_title New Features %}
+
+- Add faucet, shower, sprinkler, valve to HomeKit ([@cdce8p] - [#17145]) ([homekit docs]) (new-feature)
+
+## {% 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 %}
+
+- Add additional Netatmo public data sensors ([@GP8x] - [#16671]) ([netatmo docs]) ([sensor.netatmo_public docs]) (breaking change)
+- Developers only: we have removed all service helpers (like turn_on method in light coponent), as they werent used. ([@cdce8p] - [#16832], [#16879], [#16863], [#16892], [#16920], [#17038], [#17055], [#16917])
+- Google Assistant: configuration has been simplified and relies on HA native OAuth2 flow ([@awarecan] - [#16848]) ([google_assistant docs]) (breaking change)
+- Rachio component has been modernized. The Rachio component no longer requires you to specify switch and binary_sensor platforms. These platforms will be initialized automatically by the Rachio component. ([@OverloadUT] - [#16911]) ([rachio docs]) ([binary_sensor.rachio docs]) ([switch.rachio docs]) (breaking change)
For the end user, this means:
+ - Remove switch and binary_sensor entries with platform: rachio
+ - If you configured manual_run_mins on the switch platform, move that parameter to the rachio: component configuration.
+
+- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform)
+
+ - No more notification sensor, since the Blink API no longer supports it
+ - motion can now be detected either with the blink sensor
+ `binary_sensor.blink_nameofcamera_motion_detected` or through a camera's attributes with the `motion_detected` key.
+ - `blink.snap_picture` service has been renamed to `blink.trigger_camera`
+ - Camera names now prefaced with `blink`, ie. `camera.blink_nameofcamera`
+
+- Tibber has moved from sensor configuration to component configuration ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform)
+- A manually configured Hue component will no longer run a discovery. Set up via config entry if you want to rely on discovery. ([@balloob] - [#17070]) ([hue docs]) (breaking change)
+
+## {% linkable_title Beta Fixes %}
+
+- Fix incorrect yaml in hangouts ([@balloob] - [#17169]) (beta fix)
+- Fix data used for logbook ([@balloob] - [#17172]) ([logbook docs]) (beta fix)
+- Fix device_tracker service call & cleanup ([@cdce8p] - [#17173]) ([alert docs]) ([device_sun_light_trigger docs]) ([device_tracker docs]) ([notify docs]) ([switch.flux docs]) (beta fix)
+- Bugfix switch flux - light service call ([@cdce8p] - [#17187]) ([switch.flux docs]) (beta fix)
+- Upgrade aiolifx_effects to 0.2.1 ([@amelchio] - [#17188]) ([light.lifx docs]) (beta fix)
+- Verisure standard config for scan interval ([@persandstrom] - [#17192]) ([verisure docs]) (beta fix)
+- Init sub-components using global var. ([@mbrrg] - [#17220]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix)
+- Prevent accidental device reg override ([@balloob] - [#17136]) (beta fix)
+- MyQ cover return unknown state if not available ([@schmittx] - [#17207]) ([cover.myq docs]) (beta fix)
+- Fix potential MQTT discovery race condition ([@OttoWinter] - [#17208]) ([mqtt docs]) (beta fix)
+- Fix SPC ([@balloob] - [#17236]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix)
+- Guard for bad device info ([@balloob] - [#17238]) (beta fix)
+- updated georss-client library to 0.3 ([@exxamalte] - [#17239]) ([sensor.geo_rss_events docs]) (beta fix)
+- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform)
+- block external IP ([@balloob] - [#17248]) ([emulated_hue docs]) (beta fix)
+- Fix ambient light state of the Philips Eyecare Lamp (Closes: #16269) ([@syssi] - [#17259]) ([light.xiaomi_miio docs]) (beta fix)
+- Add defaults, fixing #17229 ([@StevenLooman] - [#17261]) ([upnp docs]) (beta fix)
+- Remove warning on script delay ([@amelchio] - [#17264]) (beta fix)
+- Hassio auth ([@pvizeli] - [#17274]) ([hassio docs]) (beta fix) (new-platform)
+- Fix hassio discovery ([@pvizeli] - [#17275]) ([hassio docs]) (beta fix)
+- fixed 'on_startup() takes 0 positional arguments but 1 was given' ([@PaulAnnekov] - [#17295]) ([sensor.miflora docs]) (beta fix)
+- Logbook: filter by entity and period ([@Anonym-tsk] - [#17095]) ([logbook docs]) (beta fix)
+- Fix samsung bug ([@arsaboo] - [#17285]) ([media_player.samsungtv docs]) (beta fix)
+- Allow tradfri groups for new imported entries ([@MartinHjelmare] - [#17310]) ([tradfri docs]) (beta fix)
+- Fix auth for hass.io ([@pvizeli] - [#17318]) ([hassio docs]) (beta fix)
+- Hass.io auth/sso part2 ([@pvizeli] - [#17324]) ([hassio docs]) (beta fix) (new-platform)
+
+## {% linkable_title All changes %}
+
+- Add mode (daily/hourly) to darksky ([@randellhodges] - [#16719]) ([weather docs]) ([weather.darksky docs]) ([weather.openweathermap docs])
+- Extract lovelace to it's own component ([@balloob] - [#16816]) ([frontend docs]) ([lovelace docs])
+- Remove discovered MQTT alarm_control_panel device when discovery topic is cleared ([@emontnemery] - [#16825]) ([alarm_control_panel.mqtt docs])
+- Remove discovered MQTT light device when discovery topic is cleared ([@emontnemery] - [#16824]) ([light.mqtt docs])
+- Add unique_id to homematic_cloud ([@sander76] - [#16828]) ([homematicip_cloud docs])
+- Don't create entity registry in tests ([@balloob] - [#16838])
+- Add additional Netatmo public data sensors ([@GP8x] - [#16671]) ([netatmo docs]) ([sensor.netatmo_public docs]) (breaking change)
+- GitLab-CI sensor integration addition. ([@DanielWinks] - [#16561]) ([sensor.gitlab_ci docs]) (new-platform)
+- Config entry update data ([@balloob] - [#16843])
+- Fix MQTT leaving files behind ([@balloob] - [#16840])
+- change unknown to None in Netatmo public ([@Danielhiversen] - [#16845]) ([sensor.netatmo_public docs])
+- Remove discovered MQTT binary_sensor device when discovery topic is cleared ([@emontnemery] - [#16826]) ([binary_sensor.mqtt docs])
+- On removal, only unload config entry if loaded ([@balloob] - [#16844])
+- Add image support to hangouts notifications ([@quazzie] - [#16560]) ([hangouts docs])
+- Remove discovered MQTT climate device when discovery topic is cleared ([@emontnemery] - [#16856]) ([climate.mqtt docs])
+- Fix files left behind ([@balloob] - [#16855])
+- Move MQTT discovery removal tests to platform test files ([@emontnemery] - [#16861])
+- Remove discovered MQTT sensor device when discovery topic is cleared ([@emontnemery] - [#16860]) ([sensor.mqtt docs])
+- Remove discovered MQTT lock device when discovery topic is cleared ([@emontnemery] - [#16859]) ([lock.mqtt docs])
+- Remove discovered MQTT fan device when discovery topic is cleared ([@emontnemery] - [#16858]) ([fan.mqtt docs])
+- Remove discovered MQTT cover device when discovery topic is cleared ([@emontnemery] - [#16857]) ([cover.mqtt docs])
+- Add executor job ([@balloob] - [#16853]) ([lovelace docs])
+- Fail if dirty ([@balloob] - [#16839])
+- Add support for Opple light ([@jedmeng] - [#16765]) ([light.opple docs]) (new-platform)
+- Update cover tests ([@cdce8p] - [#16832]) ([cover docs]) (breaking change)
+- Add missing __init__ test files ([@cdce8p] - [#16871])
+- Tibber realtime consumption, Tibber pulse ([@Danielhiversen] - [#16870]) ([sensor.tibber docs])
+- Upgrade to bimmer_connected 0.5.3 ([@gerard33] - [#16877]) ([bmw_connected_drive docs]) ([binary_sensor.bmw_connected_drive docs])
+- aiohttp.ClientSession gets proxy information from HTTP_PROXY/HTTPS_PROXY ([@siom79] - [#16874])
+- Remove service helper (3) ([@cdce8p] - [#16879]) ([duckdns docs]) ([google_assistant docs]) ([group docs]) ([homematic docs]) ([image_processing docs]) ([input_boolean docs]) ([input_number docs]) ([input_select docs]) ([input_text docs]) (breaking change)
+- Fix fan_init test ([@cdce8p] - [#16865])
+- Use HA native OAuth2 flow for google assistant components ([@awarecan] - [#16848]) ([google_assistant docs]) (breaking change)
+- Remove service helper (2) ([@cdce8p] - [#16863]) ([alarm_control_panel docs]) ([automation docs]) ([camera docs]) ([climate docs]) ([counter docs]) ([fan docs]) (breaking change)
+- Revert incorrect check ([@balloob] - [#16883]) ([media_player.soundtouch docs])
+- Added support for private storage. ([@nickovs] - [#16878])
+- Fix example for long-lived access token WS API ([@awarecan] - [#16882]) ([auth docs])
+- Add bitwise operations as template helpers ([@blakeblackshear] - [#16833])
+- Telegram_bot polling support proxy_url and proxy_params (Fix #15746) ([@Anonym-tsk] - [#16740]) ([telegram_bot docs])
+- Update language strings ([@cgtobi] - [#16884]) ([auth docs])
+- Don't pass use_env=True ([@balloob] - [#16896])
+- Revert file mode write_json ([@balloob] - [#16897])
+- Remove service helper (4) ([@cdce8p] - [#16892]) ([lock docs]) ([media_player docs]) ([notify docs]) ([remote docs]) ([scene docs]) ([timer docs]) ([vacuum docs]) (breaking change)
+- Remove unused legacy test helper methods ([@cdce8p] - [#16893])
+- Remove unused import ([@amelchio] - [#16909])
+- Upgrade aiolifx_effects to 0.2.0 ([@amelchio] - [#16900]) ([light.lifx docs])
+- Upgrade pysonos to 0.0.3 ([@amelchio] - [#16901]) ([sonos docs]) ([media_player.sonos docs])
+- Ignore Xiaomi hub callbacks during setup ([@amelchio] - [#16910]) ([xiaomi_aqara docs])
+- Update new values coming in for dev registry ([@balloob] - [#16852])
+- MQTT Light - Do not throw if property is missing from templated MQTT message ([@emontnemery] - [#16720]) ([light.mqtt docs])
+- Add new services for set/refresh Z-Wave device values ([@blakeblackshear] - [#16638]) ([zwave docs])
+- Add (EU-based) Honeywell evohome CH/DHW controller ([@zxdavb] - [#16427]) ([evohome docs]) ([climate.evohome docs]) ([climate.honeywell docs]) (new-platform)
+- Make MQTT platforms config entries ([@OttoWinter] - [#16904]) ([mqtt docs]) ([sensor.mqtt docs])
+- Fix auth redirect ([@balloob] - [#16914]) ([frontend docs])
+- Fix MQTT Config Entry Discovery ([@OttoWinter] - [#16919]) ([mqtt docs])
+- Remove service helper (5) ([@cdce8p] - [#16917]) ([config docs]) ([device_sun_light_trigger docs]) ([light docs]) ([script docs]) ([switch docs]) ([switch.flux docs]) (breaking change)
+- Remove service helper (6) ([@cdce8p] - [#16920]) ([automation docs]) ([config docs]) ([device_tracker docs]) ([group docs]) (breaking change)
+- Rachio component modernization ([@OverloadUT] - [#16911]) ([rachio docs]) ([binary_sensor.rachio docs]) ([switch.rachio docs]) (breaking change)
+- Remove discovered mqtt_json light entity when discovery is cleared ([@OttoWinter] - [#16906]) ([light.mqtt_json docs])
+- Fix race between script delay and turn_off ([@amelchio] - [#16923])
+- Move more MQTT platforms to config entries ([@OttoWinter] - [#16918]) ([mqtt docs]) ([alarm_control_panel.mqtt docs]) ([binary_sensor.mqtt docs]) ([camera.mqtt docs]) ([climate.mqtt docs]) ([cover.mqtt docs]) ([light.mqtt docs]) ([switch.mqtt docs])
+- Add zwave.network_complete_some_dead event ([@janvanhelvoort] - [#16894]) ([zwave docs])
+- Convert fan component to config entry ([@OttoWinter] - [#16951]) ([fan docs])
+- Add unique_id to MQTT cover ([@OttoWinter] - [#16950]) ([cover.mqtt docs])
+- Add unique_id to MQTT fan ([@OttoWinter] - [#16949]) ([fan.mqtt docs])
+- Add pressure sensor device class ([@OttoWinter] - [#16965]) ([sensor docs]) ([sensor.xiaomi_aqara docs])
+- Upgrade pytest to 3.8.1 ([@scop] - [#16980])
+- Add webhook + IFTTT example ([@balloob] - [#16817]) ([ifttt docs]) ([webhook docs]) (new-platform)
+- Google Maps supports battery level and charging. ([@htotoo] - [#16969]) ([device_tracker docs])
+- Add basic support for Tradfri switches ([@ggravlingen] - [#17007]) ([tradfri docs]) ([switch.tradfri docs]) (new-platform)
+- Homematic cloud device update fix ([@sander76] - [#17001]) ([homematicip_cloud docs])
+- Async syntax 1, alarm_control_panel & automation & binary_sensor ([@cdce8p] - [#17015])
+- Async syntax 2, camera & climate & config ([@cdce8p] - [#17016])
+- Update Z-Wave service descriptions to point to proper log file ([@cgarwood] - [#17024])
+- Async syntax 8/8 ([@cdce8p] - [#17022])
+- Async syntax 7, switch & tts & vacuum ([@cdce8p] - [#17021])
+- Async syntax 6, sensor ([@cdce8p] - [#17020])
+- Async syntax 5, light & lock & remote & scene & telegram & helpers ([@cdce8p] - [#17019])
+- Async syntax 4/8 ([@cdce8p] - [#17018])
+- Async syntax 3/8 ([@cdce8p] - [#17017])
+- Fix MQTT discovery ([@OttoWinter] - [#17004]) ([mqtt docs])
+- Upgrade huawei-lte-api to 1.0.16 ([@scop] - [#16972]) ([huawei_lte docs])
+- Upgrade locationsharinglib to 3.0.3 ([@fabaff] - [#17010]) ([device_tracker docs])
+- Break up websocket component ([@balloob] - [#17003]) ([camera docs]) ([config docs]) ([media_player docs]) ([websocket_api docs])
+- :hammer: update errors ([@timmo001] - [#17029]) ([switch.rest docs])
+- Add new device attributes to fritzbox climate ([@hthiery] - [#17027]) ([fritzbox docs]) ([climate.fritzbox docs])
+- Bump Enphase_Envoy dependency for older models ([@DavidDeSloovere] - [#17032]) ([sensor.enphase_envoy docs])
+- Add Hass.io discovery to MQTT ([@balloob] - [#16962]) ([mqtt docs])
+- Update coverage to exclude not tested file ([@cdce8p] - [#17039])
+- Send headers with REST switch GET request ([@andersonshatch] - [#17036]) ([switch.rest docs])
+- Async syntax ([@cdce8p] - [#17033]) ([alert docs]) ([binary_sensor.ffmpeg_motion docs]) ([binary_sensor.ffmpeg_noise docs]) ([sensor.mqtt_room docs])
+- Break up websocket 2 ([@balloob] - [#17028])
+- Logbook context ([@balloob] - [#16937]) ([logbook docs])
+- Remove error logging when Sonos shuffle_set is not available ([@amelchio] - [#16921]) ([media_player.sonos docs])
+- Fix long update 'load_power' and 'in_use' for Xiaomi Zegbee Plug ([@Anonym-tsk] - [#16915]) ([switch.xiaomi_aqara docs])
+- Mind the unit system (fixes #16819) ([@fabaff] - [#16823]) ([weather.openweathermap docs])
+- Suppress urllib3 header parsing error ([@cgarwood] - [#17042]) ([camera.mjpeg docs])
+- Support code 7 ([@SNoof85] - [#17047]) ([vacuum.xiaomi_miio docs])
+- Update pyhomematic to 0.1.50 ([@danielperna84] - [#17048]) ([homematic docs])
+- Remove alert service helper ([@cdce8p] - [#17038]) ([alert docs]) (breaking change)
+- Add AquaLogic component ([@swilson] - [#16763]) ([aqualogic docs]) ([sensor.aqualogic docs]) ([switch.aqualogic docs]) (new-platform)
+- Update pynetgear to 0.4.2 (fix #14752) ([@MatMaul] - [#17064]) ([device_tracker docs])
+- Added working support for private storage ([@nickovs] - [#16903])
+- GeoRSS events sensor refactored ([@exxamalte] - [#16939]) ([sensor.geo_rss_events docs])
+- Remove service helper (8) ([@cdce8p] - [#17055]) ([config docs]) ([ffmpeg docs]) ([keyboard docs]) ([logger docs]) ([microsoft_face docs]) (breaking change)
+- MJPEG Camera Log Filter Fixes ([@cgarwood] - [#17050]) ([camera.mjpeg docs])
+- OpenUV: Fixed issue with missing protection window data ([@bachya] - [#17051]) ([openuv docs]) ([binary_sensor.openuv docs])
+- async_create_task ([@cdce8p] - [#17059])
+- De-syncing binary_sensor.ping ([@thomasloven] - [#17056]) ([binary_sensor.ping docs])
+- Add logging to light updates ([@balloob] - [#17069]) ([light.hue docs])
+- Catch possible errors from tradfri ([@balloob] - [#17068]) ([tradfri docs])
+- Allow no movement in vamera.onvif_ptz service ([@thomasloven] - [#17065]) ([camera.onvif docs])
+- Upgrade youtube_dl to 2018.09.26 ([@fabaff] - [#17079]) ([media_extractor docs])
+- Overhaul of Blink platform ([@fronzbot] - [#16942]) ([blink docs]) ([alarm_control_panel.blink docs]) ([binary_sensor.blink docs]) ([camera.blink docs]) ([sensor.blink docs]) (breaking change) (new-platform)
+- Bump pyenvisalink ([@Cinntax] - [#17086]) ([envisalink docs])
+- Async response all the things ([@balloob] - [#17073]) ([config docs]) ([websocket_api docs])
+- Add optional headers configuration for scrape ([@dippysan] - [#17085]) ([sensor.scrape docs])
+- Add support for Hass.io discovery feature for Add-ons ([@pvizeli] - [#17035]) ([hassio docs])
+- Keep the repeat mode when setting Sonos shuffle mode ([@amelchio] - [#17083]) ([media_player.sonos docs])
+- Smaller steps for Sonos volume up/down ([@amelchio] - [#17080]) ([media_player.sonos docs])
+- Add weather condition code to OpenWeatherMap sensor ([@dbilay] - [#17093]) ([sensor.openweathermap docs])
+- Adding myself as blink codeowner ([@fronzbot] - [#17096])
+- Change Tile icon to view-grid ([@no2chem] - [#17098]) ([device_tracker docs])
+- Fix jewish calendar sensor with language set to english ([@tsvi] - [#17104]) ([sensor.jewish_calendar docs])
+- Fix counter restore. ([@mvn23] - [#17101]) ([counter docs])
+- Support multiple accounts in Tile, use device identifiers ([@no2chem] - [#17108]) ([device_tracker.tile docs])
+- Bumps simplisafe-python to 3.1.2 ([@bachya] - [#16931]) ([alarm_control_panel.simplisafe docs])
+- Upgrade pytest to 3.8.2 ([@scop] - [#17125])
+- Fix sonos async use ([@MartinHjelmare] - [#17099]) ([media_player.sonos docs])
+- Homekit controller reconnect ([@armills] - [#17060]) ([homekit_controller docs])
+- Tibber component and notify ([@Danielhiversen] - [#17062]) ([notify docs]) ([tibber docs]) ([sensor.tibber docs]) (breaking change) (new-platform)
+- Add time created to persistent notifications. ([@jeradM] - [#17121]) ([persistent_notification docs])
+- Make it easier for auth to consume newer formats ([@balloob] - [#17127])
+- Add new component fritzbox binary_sensor ([@hthiery] - [#17057]) ([fritzbox docs]) ([binary_sensor.fritzbox docs]) (new-platform)
+- Update xiaomi lib ([@Danielhiversen] - [#17129]) ([xiaomi_aqara docs])
+- Add update service to Google Travel Sensor ([@arsaboo] - [#17092]) ([sensor.google_travel_time docs])
+- Fix upnp component l10n error ([@awarecan] - [#17132]) ([upnp docs])
+- Take timezone into consideration when calulating Zmanim. Partial fix for #16946 ([@tsvi] - [#17131]) ([sensor.jewish_calendar docs])
+- Allow config entry setup to raise not ready ([@balloob] - [#17135])
+- Webhook component - pass headers to webhook handler ([@kirichkov] - [#17091]) ([webhook docs])
+- Add timeout and fix oscillations on Samsung TV component ([@anapaulagomes] - [#17102]) ([media_player.samsungtv docs])
+- Remove discovery ([@balloob] - [#17070]) ([hue docs]) (breaking change)
+- Bugfix invalid entity_config parameter HomeKit ([@cdce8p] - [#17143]) ([homekit docs])
+- verisure configurable polling ([@persandstrom] - [#17144]) ([verisure docs])
+- YesssSMS handling more errors, upgrade to version 0.2.3 ([@flowolf] - [#17052]) ([notify docs])
+- Added OpenUV CODEOWNERS info ([@bachya] - [#17149]) ([openuv docs])
+- Fix a typo ([@gerard33] - [#17147]) ([switch.volvooncall docs])
+- Cleanly stop tradfri on shutdown ([@lwis] - [#17114]) ([auth docs]) ([tradfri docs])
+- Fix zoneminder zms_url construction ([@rohankapoorcom] - [#17150]) ([zoneminder docs])
+- Added warning to HomeKit component ([@Julius2342] - [#16807]) ([homekit docs])
+- Add faucet, shower, sprinkler, valve to HomeKit ([@cdce8p] - [#17145]) ([homekit docs]) (new-feature)
+- Fix miflora connection errors during platform setup ([@PaulAnnekov] - [#16798]) ([sensor.miflora docs])
+- Discover Danfoss/devolo RS Room Sensor thermostat ([@prophit987] - [#17153]) ([zwave docs])
+- @danielhiversen as codeowner for Tibber ([@prophit987] - [#17154])
+- Fix incorrect yaml in hangouts ([@balloob] - [#17169]) (beta fix)
+- Fix data used for logbook ([@balloob] - [#17172]) ([logbook docs]) (beta fix)
+- Fix device_tracker service call & cleanup ([@cdce8p] - [#17173]) ([alert docs]) ([device_sun_light_trigger docs]) ([device_tracker docs]) ([notify docs]) ([switch.flux docs]) (beta fix)
+- Bugfix switch flux - light service call ([@cdce8p] - [#17187]) ([switch.flux docs]) (beta fix)
+- Upgrade aiolifx_effects to 0.2.1 ([@amelchio] - [#17188]) ([light.lifx docs]) (beta fix)
+- Verisure standard config for scan interval ([@persandstrom] - [#17192]) ([verisure docs]) (beta fix)
+- Init sub-components using global var. ([@mbrrg] - [#17220]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix)
+- Prevent accidental device reg override ([@balloob] - [#17136]) (beta fix)
+- MyQ cover return unknown state if not available ([@schmittx] - [#17207]) ([cover.myq docs]) (beta fix)
+- Fix potential MQTT discovery race condition ([@OttoWinter] - [#17208]) ([mqtt docs]) (beta fix)
+- Fix SPC ([@balloob] - [#17236]) ([spc docs]) ([alarm_control_panel.spc docs]) ([binary_sensor.spc docs]) (beta fix)
+- Guard for bad device info ([@balloob] - [#17238]) (beta fix)
+- updated georss-client library to 0.3 ([@exxamalte] - [#17239]) ([sensor.geo_rss_events docs]) (beta fix)
+- Add a webhook automation trigger ([@balloob] - [#17246]) ([automation.webhook docs]) (beta fix) (new-platform)
+- block external IP ([@balloob] - [#17248]) ([emulated_hue docs]) (beta fix)
+- Fix ambient light state of the Philips Eyecare Lamp (Closes: #16269) ([@syssi] - [#17259]) ([light.xiaomi_miio docs]) (beta fix)
+- Add defaults, fixing #17229 ([@StevenLooman] - [#17261]) ([upnp docs]) (beta fix)
+- Remove warning on script delay ([@amelchio] - [#17264]) (beta fix)
+- Hassio auth ([@pvizeli] - [#17274]) ([hassio docs]) (beta fix) (new-platform)
+- Fix hassio discovery ([@pvizeli] - [#17275]) ([hassio docs]) (beta fix)
+- fixed 'on_startup() takes 0 positional arguments but 1 was given' ([@PaulAnnekov] - [#17295]) ([sensor.miflora docs]) (beta fix)
+- Logbook: filter by entity and period ([@Anonym-tsk] - [#17095]) ([logbook docs]) (beta fix)
+- Fix samsung bug ([@arsaboo] - [#17285]) ([media_player.samsungtv docs]) (beta fix)
+- Allow tradfri groups for new imported entries ([@MartinHjelmare] - [#17310]) ([tradfri docs]) (beta fix)
+- Fix auth for hass.io ([@pvizeli] - [#17318]) ([hassio docs]) (beta fix)
+- Hass.io auth/sso part2 ([@pvizeli] - [#17324]) ([hassio docs]) (beta fix) (new-platform)
+
+[#16427]: https://github.com/home-assistant/home-assistant/pull/16427
+[#16560]: https://github.com/home-assistant/home-assistant/pull/16560
+[#16561]: https://github.com/home-assistant/home-assistant/pull/16561
+[#16638]: https://github.com/home-assistant/home-assistant/pull/16638
+[#16671]: https://github.com/home-assistant/home-assistant/pull/16671
+[#16719]: https://github.com/home-assistant/home-assistant/pull/16719
+[#16720]: https://github.com/home-assistant/home-assistant/pull/16720
+[#16740]: https://github.com/home-assistant/home-assistant/pull/16740
+[#16763]: https://github.com/home-assistant/home-assistant/pull/16763
+[#16765]: https://github.com/home-assistant/home-assistant/pull/16765
+[#16798]: https://github.com/home-assistant/home-assistant/pull/16798
+[#16807]: https://github.com/home-assistant/home-assistant/pull/16807
+[#16816]: https://github.com/home-assistant/home-assistant/pull/16816
+[#16817]: https://github.com/home-assistant/home-assistant/pull/16817
+[#16823]: https://github.com/home-assistant/home-assistant/pull/16823
+[#16824]: https://github.com/home-assistant/home-assistant/pull/16824
+[#16825]: https://github.com/home-assistant/home-assistant/pull/16825
+[#16826]: https://github.com/home-assistant/home-assistant/pull/16826
+[#16828]: https://github.com/home-assistant/home-assistant/pull/16828
+[#16832]: https://github.com/home-assistant/home-assistant/pull/16832
+[#16833]: https://github.com/home-assistant/home-assistant/pull/16833
+[#16838]: https://github.com/home-assistant/home-assistant/pull/16838
+[#16839]: https://github.com/home-assistant/home-assistant/pull/16839
+[#16840]: https://github.com/home-assistant/home-assistant/pull/16840
+[#16843]: https://github.com/home-assistant/home-assistant/pull/16843
+[#16844]: https://github.com/home-assistant/home-assistant/pull/16844
+[#16845]: https://github.com/home-assistant/home-assistant/pull/16845
+[#16848]: https://github.com/home-assistant/home-assistant/pull/16848
+[#16852]: https://github.com/home-assistant/home-assistant/pull/16852
+[#16853]: https://github.com/home-assistant/home-assistant/pull/16853
+[#16855]: https://github.com/home-assistant/home-assistant/pull/16855
+[#16856]: https://github.com/home-assistant/home-assistant/pull/16856
+[#16857]: https://github.com/home-assistant/home-assistant/pull/16857
+[#16858]: https://github.com/home-assistant/home-assistant/pull/16858
+[#16859]: https://github.com/home-assistant/home-assistant/pull/16859
+[#16860]: https://github.com/home-assistant/home-assistant/pull/16860
+[#16861]: https://github.com/home-assistant/home-assistant/pull/16861
+[#16863]: https://github.com/home-assistant/home-assistant/pull/16863
+[#16865]: https://github.com/home-assistant/home-assistant/pull/16865
+[#16870]: https://github.com/home-assistant/home-assistant/pull/16870
+[#16871]: https://github.com/home-assistant/home-assistant/pull/16871
+[#16874]: https://github.com/home-assistant/home-assistant/pull/16874
+[#16877]: https://github.com/home-assistant/home-assistant/pull/16877
+[#16878]: https://github.com/home-assistant/home-assistant/pull/16878
+[#16879]: https://github.com/home-assistant/home-assistant/pull/16879
+[#16882]: https://github.com/home-assistant/home-assistant/pull/16882
+[#16883]: https://github.com/home-assistant/home-assistant/pull/16883
+[#16884]: https://github.com/home-assistant/home-assistant/pull/16884
+[#16892]: https://github.com/home-assistant/home-assistant/pull/16892
+[#16893]: https://github.com/home-assistant/home-assistant/pull/16893
+[#16894]: https://github.com/home-assistant/home-assistant/pull/16894
+[#16896]: https://github.com/home-assistant/home-assistant/pull/16896
+[#16897]: https://github.com/home-assistant/home-assistant/pull/16897
+[#16900]: https://github.com/home-assistant/home-assistant/pull/16900
+[#16901]: https://github.com/home-assistant/home-assistant/pull/16901
+[#16903]: https://github.com/home-assistant/home-assistant/pull/16903
+[#16904]: https://github.com/home-assistant/home-assistant/pull/16904
+[#16906]: https://github.com/home-assistant/home-assistant/pull/16906
+[#16909]: https://github.com/home-assistant/home-assistant/pull/16909
+[#16910]: https://github.com/home-assistant/home-assistant/pull/16910
+[#16911]: https://github.com/home-assistant/home-assistant/pull/16911
+[#16914]: https://github.com/home-assistant/home-assistant/pull/16914
+[#16915]: https://github.com/home-assistant/home-assistant/pull/16915
+[#16917]: https://github.com/home-assistant/home-assistant/pull/16917
+[#16918]: https://github.com/home-assistant/home-assistant/pull/16918
+[#16919]: https://github.com/home-assistant/home-assistant/pull/16919
+[#16920]: https://github.com/home-assistant/home-assistant/pull/16920
+[#16921]: https://github.com/home-assistant/home-assistant/pull/16921
+[#16923]: https://github.com/home-assistant/home-assistant/pull/16923
+[#16931]: https://github.com/home-assistant/home-assistant/pull/16931
+[#16937]: https://github.com/home-assistant/home-assistant/pull/16937
+[#16939]: https://github.com/home-assistant/home-assistant/pull/16939
+[#16942]: https://github.com/home-assistant/home-assistant/pull/16942
+[#16949]: https://github.com/home-assistant/home-assistant/pull/16949
+[#16950]: https://github.com/home-assistant/home-assistant/pull/16950
+[#16951]: https://github.com/home-assistant/home-assistant/pull/16951
+[#16962]: https://github.com/home-assistant/home-assistant/pull/16962
+[#16965]: https://github.com/home-assistant/home-assistant/pull/16965
+[#16969]: https://github.com/home-assistant/home-assistant/pull/16969
+[#16972]: https://github.com/home-assistant/home-assistant/pull/16972
+[#16980]: https://github.com/home-assistant/home-assistant/pull/16980
+[#17001]: https://github.com/home-assistant/home-assistant/pull/17001
+[#17003]: https://github.com/home-assistant/home-assistant/pull/17003
+[#17004]: https://github.com/home-assistant/home-assistant/pull/17004
+[#17007]: https://github.com/home-assistant/home-assistant/pull/17007
+[#17010]: https://github.com/home-assistant/home-assistant/pull/17010
+[#17015]: https://github.com/home-assistant/home-assistant/pull/17015
+[#17016]: https://github.com/home-assistant/home-assistant/pull/17016
+[#17017]: https://github.com/home-assistant/home-assistant/pull/17017
+[#17018]: https://github.com/home-assistant/home-assistant/pull/17018
+[#17019]: https://github.com/home-assistant/home-assistant/pull/17019
+[#17020]: https://github.com/home-assistant/home-assistant/pull/17020
+[#17021]: https://github.com/home-assistant/home-assistant/pull/17021
+[#17022]: https://github.com/home-assistant/home-assistant/pull/17022
+[#17024]: https://github.com/home-assistant/home-assistant/pull/17024
+[#17027]: https://github.com/home-assistant/home-assistant/pull/17027
+[#17028]: https://github.com/home-assistant/home-assistant/pull/17028
+[#17029]: https://github.com/home-assistant/home-assistant/pull/17029
+[#17032]: https://github.com/home-assistant/home-assistant/pull/17032
+[#17033]: https://github.com/home-assistant/home-assistant/pull/17033
+[#17035]: https://github.com/home-assistant/home-assistant/pull/17035
+[#17036]: https://github.com/home-assistant/home-assistant/pull/17036
+[#17038]: https://github.com/home-assistant/home-assistant/pull/17038
+[#17039]: https://github.com/home-assistant/home-assistant/pull/17039
+[#17042]: https://github.com/home-assistant/home-assistant/pull/17042
+[#17047]: https://github.com/home-assistant/home-assistant/pull/17047
+[#17048]: https://github.com/home-assistant/home-assistant/pull/17048
+[#17050]: https://github.com/home-assistant/home-assistant/pull/17050
+[#17051]: https://github.com/home-assistant/home-assistant/pull/17051
+[#17052]: https://github.com/home-assistant/home-assistant/pull/17052
+[#17055]: https://github.com/home-assistant/home-assistant/pull/17055
+[#17056]: https://github.com/home-assistant/home-assistant/pull/17056
+[#17057]: https://github.com/home-assistant/home-assistant/pull/17057
+[#17059]: https://github.com/home-assistant/home-assistant/pull/17059
+[#17060]: https://github.com/home-assistant/home-assistant/pull/17060
+[#17062]: https://github.com/home-assistant/home-assistant/pull/17062
+[#17064]: https://github.com/home-assistant/home-assistant/pull/17064
+[#17065]: https://github.com/home-assistant/home-assistant/pull/17065
+[#17068]: https://github.com/home-assistant/home-assistant/pull/17068
+[#17069]: https://github.com/home-assistant/home-assistant/pull/17069
+[#17070]: https://github.com/home-assistant/home-assistant/pull/17070
+[#17073]: https://github.com/home-assistant/home-assistant/pull/17073
+[#17079]: https://github.com/home-assistant/home-assistant/pull/17079
+[#17080]: https://github.com/home-assistant/home-assistant/pull/17080
+[#17083]: https://github.com/home-assistant/home-assistant/pull/17083
+[#17085]: https://github.com/home-assistant/home-assistant/pull/17085
+[#17086]: https://github.com/home-assistant/home-assistant/pull/17086
+[#17091]: https://github.com/home-assistant/home-assistant/pull/17091
+[#17092]: https://github.com/home-assistant/home-assistant/pull/17092
+[#17093]: https://github.com/home-assistant/home-assistant/pull/17093
+[#17095]: https://github.com/home-assistant/home-assistant/pull/17095
+[#17096]: https://github.com/home-assistant/home-assistant/pull/17096
+[#17098]: https://github.com/home-assistant/home-assistant/pull/17098
+[#17099]: https://github.com/home-assistant/home-assistant/pull/17099
+[#17101]: https://github.com/home-assistant/home-assistant/pull/17101
+[#17102]: https://github.com/home-assistant/home-assistant/pull/17102
+[#17104]: https://github.com/home-assistant/home-assistant/pull/17104
+[#17108]: https://github.com/home-assistant/home-assistant/pull/17108
+[#17114]: https://github.com/home-assistant/home-assistant/pull/17114
+[#17121]: https://github.com/home-assistant/home-assistant/pull/17121
+[#17125]: https://github.com/home-assistant/home-assistant/pull/17125
+[#17127]: https://github.com/home-assistant/home-assistant/pull/17127
+[#17129]: https://github.com/home-assistant/home-assistant/pull/17129
+[#17131]: https://github.com/home-assistant/home-assistant/pull/17131
+[#17132]: https://github.com/home-assistant/home-assistant/pull/17132
+[#17135]: https://github.com/home-assistant/home-assistant/pull/17135
+[#17136]: https://github.com/home-assistant/home-assistant/pull/17136
+[#17143]: https://github.com/home-assistant/home-assistant/pull/17143
+[#17144]: https://github.com/home-assistant/home-assistant/pull/17144
+[#17145]: https://github.com/home-assistant/home-assistant/pull/17145
+[#17147]: https://github.com/home-assistant/home-assistant/pull/17147
+[#17149]: https://github.com/home-assistant/home-assistant/pull/17149
+[#17150]: https://github.com/home-assistant/home-assistant/pull/17150
+[#17153]: https://github.com/home-assistant/home-assistant/pull/17153
+[#17154]: https://github.com/home-assistant/home-assistant/pull/17154
+[#17169]: https://github.com/home-assistant/home-assistant/pull/17169
+[#17172]: https://github.com/home-assistant/home-assistant/pull/17172
+[#17173]: https://github.com/home-assistant/home-assistant/pull/17173
+[#17187]: https://github.com/home-assistant/home-assistant/pull/17187
+[#17188]: https://github.com/home-assistant/home-assistant/pull/17188
+[#17192]: https://github.com/home-assistant/home-assistant/pull/17192
+[#17207]: https://github.com/home-assistant/home-assistant/pull/17207
+[#17208]: https://github.com/home-assistant/home-assistant/pull/17208
+[#17220]: https://github.com/home-assistant/home-assistant/pull/17220
+[#17236]: https://github.com/home-assistant/home-assistant/pull/17236
+[#17238]: https://github.com/home-assistant/home-assistant/pull/17238
+[#17239]: https://github.com/home-assistant/home-assistant/pull/17239
+[#17246]: https://github.com/home-assistant/home-assistant/pull/17246
+[#17248]: https://github.com/home-assistant/home-assistant/pull/17248
+[#17259]: https://github.com/home-assistant/home-assistant/pull/17259
+[#17261]: https://github.com/home-assistant/home-assistant/pull/17261
+[#17264]: https://github.com/home-assistant/home-assistant/pull/17264
+[#17274]: https://github.com/home-assistant/home-assistant/pull/17274
+[#17275]: https://github.com/home-assistant/home-assistant/pull/17275
+[#17285]: https://github.com/home-assistant/home-assistant/pull/17285
+[#17295]: https://github.com/home-assistant/home-assistant/pull/17295
+[#17310]: https://github.com/home-assistant/home-assistant/pull/17310
+[#17318]: https://github.com/home-assistant/home-assistant/pull/17318
+[#17324]: https://github.com/home-assistant/home-assistant/pull/17324
+[@Anonym-tsk]: https://github.com/Anonym-tsk
+[@Cinntax]: https://github.com/Cinntax
+[@DanielWinks]: https://github.com/DanielWinks
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@DavidDeSloovere]: https://github.com/DavidDeSloovere
+[@GP8x]: https://github.com/GP8x
+[@Julius2342]: https://github.com/Julius2342
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@MatMaul]: https://github.com/MatMaul
+[@OttoWinter]: https://github.com/OttoWinter
+[@OverloadUT]: https://github.com/OverloadUT
+[@PaulAnnekov]: https://github.com/PaulAnnekov
+[@SNoof85]: https://github.com/SNoof85
+[@StevenLooman]: https://github.com/StevenLooman
+[@amelchio]: https://github.com/amelchio
+[@anapaulagomes]: https://github.com/anapaulagomes
+[@andersonshatch]: https://github.com/andersonshatch
+[@armills]: https://github.com/armills
+[@arsaboo]: https://github.com/arsaboo
+[@awarecan]: https://github.com/awarecan
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@blakeblackshear]: https://github.com/blakeblackshear
+[@cdce8p]: https://github.com/cdce8p
+[@cgarwood]: https://github.com/cgarwood
+[@cgtobi]: https://github.com/cgtobi
+[@danielperna84]: https://github.com/danielperna84
+[@dbilay]: https://github.com/dbilay
+[@dippysan]: https://github.com/dippysan
+[@emontnemery]: https://github.com/emontnemery
+[@exxamalte]: https://github.com/exxamalte
+[@fabaff]: https://github.com/fabaff
+[@flowolf]: https://github.com/flowolf
+[@fronzbot]: https://github.com/fronzbot
+[@gerard33]: https://github.com/gerard33
+[@ggravlingen]: https://github.com/ggravlingen
+[@hthiery]: https://github.com/hthiery
+[@htotoo]: https://github.com/htotoo
+[@janvanhelvoort]: https://github.com/janvanhelvoort
+[@jedmeng]: https://github.com/jedmeng
+[@jeradM]: https://github.com/jeradM
+[@kirichkov]: https://github.com/kirichkov
+[@lwis]: https://github.com/lwis
+[@mbrrg]: https://github.com/mbrrg
+[@mvn23]: https://github.com/mvn23
+[@nickovs]: https://github.com/nickovs
+[@no2chem]: https://github.com/no2chem
+[@persandstrom]: https://github.com/persandstrom
+[@prophit987]: https://github.com/prophit987
+[@pvizeli]: https://github.com/pvizeli
+[@quazzie]: https://github.com/quazzie
+[@randellhodges]: https://github.com/randellhodges
+[@rohankapoorcom]: https://github.com/rohankapoorcom
+[@sander76]: https://github.com/sander76
+[@schmittx]: https://github.com/schmittx
+[@scop]: https://github.com/scop
+[@siom79]: https://github.com/siom79
+[@swilson]: https://github.com/swilson
+[@syssi]: https://github.com/syssi
+[@thomasloven]: https://github.com/thomasloven
+[@timmo001]: https://github.com/timmo001
+[@tsvi]: https://github.com/tsvi
+[@zxdavb]: https://github.com/zxdavb
+[alarm_control_panel docs]: /components/alarm_control_panel/
+[alarm_control_panel.blink docs]: /components/alarm_control_panel.blink/
+[alarm_control_panel.mqtt docs]: /components/alarm_control_panel.mqtt/
+[alarm_control_panel.simplisafe docs]: /components/alarm_control_panel.simplisafe/
+[alarm_control_panel.spc docs]: /components/alarm_control_panel.spc/
+[alert docs]: /components/alert/
+[aqualogic docs]: /components/aqualogic/
+[auth docs]: /components/auth/
+[automation docs]: /components/automation/
+[automation.webhook docs]: /docs/automation/trigger/#webhook-trigger
+[binary_sensor.blink docs]: /components/binary_sensor.blink/
+[binary_sensor.bmw_connected_drive docs]: /components/binary_sensor.bmw_connected_drive/
+[binary_sensor.ffmpeg_motion docs]: /components/binary_sensor.ffmpeg_motion/
+[binary_sensor.ffmpeg_noise docs]: /components/binary_sensor.ffmpeg_noise/
+[binary_sensor.fritzbox docs]: /components/binary_sensor.fritzbox/
+[binary_sensor.mqtt docs]: /components/binary_sensor.mqtt/
+[binary_sensor.openuv docs]: /components/binary_sensor.openuv/
+[binary_sensor.ping docs]: /components/binary_sensor.ping/
+[binary_sensor.rachio docs]: /components/binary_sensor.rachio/
+[binary_sensor.spc docs]: /components/binary_sensor.spc/
+[blink docs]: /components/blink/
+[bmw_connected_drive docs]: /components/bmw_connected_drive/
+[camera docs]: /components/camera/
+[camera.blink docs]: /components/camera.blink/
+[camera.mjpeg docs]: /components/camera.mjpeg/
+[camera.mqtt docs]: /components/camera.mqtt/
+[camera.onvif docs]: /components/camera.onvif/
+[climate docs]: /components/climate/
+[climate.evohome docs]: /components/climate.evohome/
+[climate.fritzbox docs]: /components/climate.fritzbox/
+[climate.honeywell docs]: /components/climate.honeywell/
+[climate.mqtt docs]: /components/climate.mqtt/
+[config docs]: /components/config/
+[counter docs]: /components/counter/
+[cover docs]: /components/cover/
+[cover.mqtt docs]: /components/cover.mqtt/
+[cover.myq docs]: /components/cover.myq/
+[device_sun_light_trigger docs]: /components/device_sun_light_trigger/
+[device_tracker docs]: /components/device_tracker/
+[device_tracker.tile docs]: /components/device_tracker.tile/
+[duckdns docs]: /components/duckdns/
+[emulated_hue docs]: /components/emulated_hue/
+[envisalink docs]: /components/envisalink/
+[evohome docs]: /components/evohome/
+[fan docs]: /components/fan/
+[fan.mqtt docs]: /components/fan.mqtt/
+[ffmpeg docs]: /components/ffmpeg/
+[fritzbox docs]: /components/fritzbox/
+[frontend docs]: /components/frontend/
+[google_assistant docs]: /components/google_assistant/
+[group docs]: /components/group/
+[hangouts docs]: /components/hangouts/
+[hassio docs]: /components/hassio/
+[homekit docs]: /components/homekit/
+[homekit_controller docs]: /components/homekit_controller/
+[homematic docs]: /components/homematic/
+[homematicip_cloud docs]: /components/homematicip_cloud/
+[huawei_lte docs]: /components/huawei_lte/
+[hue docs]: /components/hue/
+[ifttt docs]: /components/ifttt/
+[image_processing docs]: /components/image_processing/
+[input_boolean docs]: /components/input_boolean/
+[input_number docs]: /components/input_number/
+[input_select docs]: /components/input_select/
+[input_text docs]: /components/input_text/
+[keyboard docs]: /components/keyboard/
+[light docs]: /components/light/
+[light.hue docs]: /components/light.hue/
+[light.lifx docs]: /components/light.lifx/
+[light.mqtt docs]: /components/light.mqtt/
+[light.mqtt_json docs]: /components/light.mqtt_json/
+[light.opple docs]: /components/light.opple/
+[light.xiaomi_miio docs]: /components/light.xiaomi_miio/
+[lock docs]: /components/lock/
+[lock.mqtt docs]: /components/lock.mqtt/
+[logbook docs]: /components/logbook/
+[logger docs]: /components/logger/
+[lovelace docs]: /components/lovelace/
+[media_extractor docs]: /components/media_extractor/
+[media_player docs]: /components/media_player/
+[media_player.samsungtv docs]: /components/media_player.samsungtv/
+[media_player.sonos docs]: /components/media_player.sonos/
+[media_player.soundtouch docs]: /components/media_player.soundtouch/
+[microsoft_face docs]: /components/microsoft_face/
+[mqtt docs]: /components/mqtt/
+[netatmo docs]: /components/netatmo/
+[notify docs]: /components/notify/
+[onboarding docs]: /components/onboarding/
+[openuv docs]: /components/openuv/
+[persistent_notification docs]: /components/persistent_notification/
+[rachio docs]: /components/rachio/
+[remote docs]: /components/remote/
+[scene docs]: /components/scene/
+[script docs]: /components/script/
+[sensor docs]: /components/sensor/
+[sensor.aqualogic docs]: /components/sensor.aqualogic/
+[sensor.blink docs]: /components/sensor.blink/
+[sensor.enphase_envoy docs]: /components/sensor.enphase_envoy/
+[sensor.geo_rss_events docs]: /components/sensor.geo_rss_events/
+[sensor.gitlab_ci docs]: /components/sensor.gitlab_ci/
+[sensor.google_travel_time docs]: /components/sensor.google_travel_time/
+[sensor.jewish_calendar docs]: /components/sensor.jewish_calendar/
+[sensor.miflora docs]: /components/sensor.miflora/
+[sensor.mqtt docs]: /components/sensor.mqtt/
+[sensor.mqtt_room docs]: /components/sensor.mqtt_room/
+[sensor.netatmo_public docs]: /components/sensor.netatmo_public/
+[sensor.openweathermap docs]: /components/sensor.openweathermap/
+[sensor.scrape docs]: /components/sensor.scrape/
+[sensor.tibber docs]: /components/sensor.tibber/
+[sensor.xiaomi_aqara docs]: /components/sensor.xiaomi_aqara/
+[sonos docs]: /components/sonos/
+[spc docs]: /components/spc/
+[switch docs]: /components/switch/
+[switch.aqualogic docs]: /components/switch.aqualogic/
+[switch.flux docs]: /components/switch.flux/
+[switch.mqtt docs]: /components/switch.mqtt/
+[switch.rachio docs]: /components/switch.rachio/
+[switch.rest docs]: /components/switch.rest/
+[switch.tradfri docs]: /components/switch.tradfri/
+[switch.volvooncall docs]: /components/switch.volvooncall/
+[switch.xiaomi_aqara docs]: /components/switch.xiaomi_aqara/
+[telegram_bot docs]: /components/telegram_bot/
+[tibber docs]: /components/tibber/
+[timer docs]: /components/timer/
+[tradfri docs]: /components/tradfri/
+[upnp docs]: /components/upnp/
+[vacuum docs]: /components/vacuum/
+[vacuum.xiaomi_miio docs]: /components/vacuum.xiaomi_miio/
+[verisure docs]: /components/verisure/
+[weather docs]: /components/weather/
+[weather.darksky docs]: /components/weather.darksky/
+[weather.openweathermap docs]: /components/weather.openweathermap/
+[webhook docs]: /components/webhook/
+[websocket_api docs]: /components/websocket_api/
+[xiaomi_aqara docs]: /components/xiaomi_aqara/
+[zoneminder docs]: /components/zoneminder/
+[zwave docs]: /components/zwave/
diff --git a/source/images/blog/2018-10-release-80/config-ifttt.png b/source/images/blog/2018-10-release-80/config-ifttt.png
new file mode 100644
index 00000000000..198091207f8
Binary files /dev/null and b/source/images/blog/2018-10-release-80/config-ifttt.png differ
diff --git a/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png b/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png
new file mode 100644
index 00000000000..c172071b5b4
Binary files /dev/null and b/source/images/blog/2018-10-release-80/lovelace-glance-sensor.png differ
diff --git a/source/images/components/google_assistant/accountlinking.png b/source/images/components/google_assistant/accountlinking.png
new file mode 100644
index 00000000000..ae3198cdd2a
Binary files /dev/null and b/source/images/components/google_assistant/accountlinking.png differ
diff --git a/source/images/components/ifttt/IFTTT_to_HA.png b/source/images/components/ifttt/IFTTT_to_HA.png
deleted file mode 100644
index 53a7573ec4c..00000000000
Binary files a/source/images/components/ifttt/IFTTT_to_HA.png and /dev/null differ
diff --git a/source/images/lovelace/lovelace_gauge_card.gif b/source/images/lovelace/lovelace_gauge_card.gif
new file mode 100644
index 00000000000..723d4785ff3
Binary files /dev/null and b/source/images/lovelace/lovelace_gauge_card.gif differ
diff --git a/source/images/lovelace/lovelace_sensor.png b/source/images/lovelace/lovelace_sensor.png
new file mode 100644
index 00000000000..5b5f850ebf2
Binary files /dev/null and b/source/images/lovelace/lovelace_sensor.png differ
diff --git a/source/images/screenshots/server-management.png b/source/images/screenshots/server-management.png
index 74c43b2b9a5..37c0c171382 100644
Binary files a/source/images/screenshots/server-management.png and b/source/images/screenshots/server-management.png differ
diff --git a/source/images/supported_brands/blink.png b/source/images/supported_brands/blink.png
index cb96d9a114d..f8021275bb7 100644
Binary files a/source/images/supported_brands/blink.png and b/source/images/supported_brands/blink.png differ
diff --git a/source/images/supported_brands/elkproducts.png b/source/images/supported_brands/elkproducts.png
new file mode 100644
index 00000000000..3f026c21b0e
Binary files /dev/null and b/source/images/supported_brands/elkproducts.png differ
diff --git a/source/images/supported_brands/gitlab.png b/source/images/supported_brands/gitlab.png
new file mode 100644
index 00000000000..7e6ced979f4
Binary files /dev/null and b/source/images/supported_brands/gitlab.png differ
diff --git a/source/images/supported_brands/hayward.png b/source/images/supported_brands/hayward.png
new file mode 100644
index 00000000000..e83069dc678
Binary files /dev/null and b/source/images/supported_brands/hayward.png differ
diff --git a/source/images/supported_brands/opple.png b/source/images/supported_brands/opple.png
new file mode 100644
index 00000000000..da7a22f06c3
Binary files /dev/null and b/source/images/supported_brands/opple.png differ
diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown
index 936b98fbe92..5bb15411593 100644
--- a/source/lovelace/index.markdown
+++ b/source/lovelace/index.markdown
@@ -7,6 +7,7 @@ sidebar: true
comments: false
sharing: true
footer: true
+redirect_from: /components/lovelace/
---
@@ -116,7 +117,7 @@ views:
Now restart Home Assistant, navigate to `/lovelace`. When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button at the top of the UI.
## {% linkable_title Setting Lovelace as the Default UI %}
-Once you are ready to start using Lovelace UI as your main user interface, click on info, the "i" icon under 'Developer Tools" in the Home Assistant side-bar. Next, locate >>Set Lovelace as default page on this device<< under the Home Assistant version information and click it.
+Once you are ready to start using Lovelace UI as your main user interface, click on info, the "i" icon under 'Developer Tools" in the Home Assistant side-bar. Next, locate >>Set Lovelace as default page on this device<< under the Home Assistant version information and click it.
Note that this is a per-device setting and will need to be changed on each device you access the UI from.