-The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the results: turning a light on versus a light being on.
-
-
-### Exploring the internal state
-
-Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. **Developer Tools** -> **States** will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts:
-
-| Name | Description | Example |
-| ---- | ----- | ---- |
-| Entity ID | Unique identifier for the entity. | `light.kitchen`
-| State | The current state of the device. | `home`
-| Attributes | Extra data related to the device and/or current state. | `brightness`
-
-State changes can be used as the source of triggers and the current state can be used in conditions.
-
-Actions are all about calling services. To explore the available services open the **Developer Tools** -> **Services**. Services allow to change anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.
+### [Learn about automation basics »](/docs/automation/basics/)
diff --git a/source/_docs/automation/basics.markdown b/source/_docs/automation/basics.markdown
new file mode 100644
index 00000000000..fb46acb9a40
--- /dev/null
+++ b/source/_docs/automation/basics.markdown
@@ -0,0 +1,46 @@
+---
+title: "Understanding Automations"
+description: "A breakdown of what an automation consists of."
+---
+
+All automations are made up of a trigger and an action. Optionally combined with a condition. Take for example the automation:
+
+> When Paulus arrives home and it is after sunset: Turn the lights on in the living room.".
+
+We can break up this automation into the following three parts:
+
+```text
+(trigger) When Paulus arrives home
+(condition) and it is after sunset:
+(action) Turn the lights on in the living room
+```
+
+The first part is the [trigger](/docs/automation/trigger/) of the automation rule. Triggers describe events that should trigger the automation rule. In this case, it is a person arriving home, which can be observed in Home Assistant by observing the state of Paulus changing from 'not_home' to 'home'.
+
+The second part is the [condition](/docs/automation/condition/). Conditions are optional tests that can limit an automation rule to only work in your specific use cases. A condition will test against the current state of the system. This includes the current time, devices, people and other things like the sun. In this case, we only want to act when the sun has set.
+
+The third part is the [action](/docs/automation/action/), which will be performed when a rule is triggered and all conditions are met. For example, it can turn a light on, set the temperature on your thermostat or activate a scene.
+
+
+The difference between a condition and a trigger can be confusing as they are very similar. Triggers look at the actions, while conditions look at the results: turning a light on versus a light being on.
+
+
+## Exploring the internal state
+
+Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. **Developer Tools** -> **States** will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts:
+
+| Name | Description | Example |
+| ---- | ----- | ---- |
+| Entity ID | Unique identifier for the entity. | `light.kitchen`
+| State | The current state of the device. | `home`
+| Attributes | Extra data related to the device and/or current state. | `brightness`
+
+State changes can be used as the source of triggers and the current state can be used in conditions.
+
+Actions are all about calling services. To explore the available services open the **Developer Tools** -> **Services**. Services allow changing anything. For example turn on a light, run a script or enable a scene. Each service has a domain and a name. For example the service `light.turn_on` is capable of turning on any light in your system. Services can be passed parameters to for example tell which device to turn on or what color to use.
+
+## Creating automations
+
+Now that you've got a sneak peek of what is possible, it's time to get your feet wet and create your first automation.
+
+### [Using the automation editor »](/docs/automation/editor/)
diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown
index a1ad5f128a3..6e3b2e3b0da 100644
--- a/source/_docs/automation/editor.markdown
+++ b/source/_docs/automation/editor.markdown
@@ -3,8 +3,6 @@ title: "Automation Editor"
description: "Instructions on how to use the automation editor."
---
-In Home Assistant 0.45 we introduced the first version of our automation editor. If you just created a new configuration with Home Assistant, then you're all set! Go to the UI and enjoy.
-
From the UI choose **Configuration** which is located in the sidebar, then click on **Automation** to go to the automation editor. Press the **+** sign in the lower right corner to get started. This example is based on the manual steps described in the [Getting started section](/getting-started/automation/) for a [`random` sensor](/integrations/random#sensor).
Choose a meaningful name for your automation rules.
@@ -27,75 +25,9 @@ Firing a [persistent notification](/integrations/persistent_notification/) is th
As "Service Data" we want a simple text that is shown as part of the notification.
-```json
-{
- "message": "Sensor value greater than 10"
-}
+```yaml
+message: Sensor value greater than 10
```
Don't forget to save your new automation rule. For your saved automation rule to come into effect, you will need to go to the **Configuration** page and click on **Reload Automation**.
-## Updating your configuration to use the editor
-
-First, check that you have activated the configuration editor.
-
-```yaml
-# Activate the configuration editor
-config:
-```
-
-The automation editor reads and writes to the file `automations.yaml` in the root of your [configuration](/docs/configuration/) folder.
-Currently, both the name of this file and its location are fixed.
-Make sure that you have set up the automation integration to read from it:
-
-```yaml
-# Configuration.yaml example
-automation: !include automations.yaml
-```
-
-If you still want to use your old automation section, add a label to the old entry:
-
-```yaml
-automation old:
-- trigger:
- platform: ...
-```
-
-You can use the `automation:` and `automation old:` sections at the same time:
- - `automation old:` to keep your manual designed automations
- - `automation:` to save the automation created by the online editor
-
-```yaml
-automation: !include automations.yaml
-automation old: !include_dir_merge_list automations
-```
-
-
-## Migrating your automations to `automations.yaml`
-
-If you want to migrate your old automations to use the editor, you'll have to copy them to `automations.yaml`. Make sure that `automations.yaml` remains a list! For each automation that you copy over, you'll have to add an `id`. This can be any string as long as it's unique.
-
-For example, the below automation will be triggered when the sun goes from below the horizon to above the horizon. Then, if the temperature is between 17 and 25 degrees, a light will be turned on.
-
-```yaml
-# Example automations.yaml entry
-- id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated.
- alias: Hello world
- trigger:
- - platform: state
- entity_id: sun.sun
- from: below_horizon
- to: above_horizon
- condition:
- - condition: numeric_state
- entity_id: sensor.temperature
- above: 17
- below: 25
- value_template: '{% raw %}{{ float(state.state) + 2 }}{% endraw %}'
- action:
- - service: light.turn_on
-```
-
-
-Any comments in the YAML file will be lost and templates will be reformatted when you update an automation via the editor.
-
diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown
deleted file mode 100644
index 2a9e33309b2..00000000000
--- a/source/_docs/automation/examples.markdown
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: "Automation Examples"
-description: "Some automation examples to get you started."
----
-
-Just some sample automation rules to get you started.
-
-{% raw %}
-```yaml
-# Example of entry in configuration.yaml
-automation:
-# Turns on lights 1 hour before sunset if people are home
-# and if people get home between 16:00-23:00
- - alias: 'Rule 1 Light on in the evening'
- trigger:
- # Prefix the first line of each trigger configuration
- # with a '-' to enter multiple
- - platform: sun
- event: sunset
- offset: '-01:00:00'
- - platform: state
- entity_id: all
- to: 'home'
- condition:
- # Prefix the first line of each condition configuration
- # with a '-'' to enter multiple
- - condition: state
- entity_id: all
- state: 'home'
- - condition: time
- after: '16:00:00'
- before: '23:00:00'
- action:
- # With a single service call, we don't need a '-' before service - though you can if you want to
- service: homeassistant.turn_on
- entity_id: group.living_room
-
-# Turn off lights when everybody leaves the house
- - alias: 'Rule 2 - Away Mode'
- trigger:
- platform: state
- entity_id: all
- to: 'not_home'
- action:
- service: light.turn_off
- entity_id: all
-
-# Notify when Paulus leaves the house in the evening
- - alias: 'Leave Home notification'
- trigger:
- platform: zone
- event: leave
- zone: zone.home
- entity_id: device_tracker.paulus
- condition:
- condition: time
- after: '20:00'
- action:
- service: notify.notify
- data:
- message: 'Paulus left the house'
-
-# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component.
- - alias: 'Xiaomi Cube Action'
- initial_state: false
- trigger:
- platform: event
- event_type: cube_action
- event_data:
- entity_id: binary_sensor.cube_158d000103a3de
- action:
- service: notify.pushover
- data:
- title: "Cube event detected"
- message: "Cube has triggered this event: {{ trigger.event }}"
-```
-{% endraw %}
diff --git a/source/_docs/automation/modes.markdown b/source/_docs/automation/modes.markdown
new file mode 100644
index 00000000000..70b083f3f07
--- /dev/null
+++ b/source/_docs/automation/modes.markdown
@@ -0,0 +1,53 @@
+---
+title: "Automation Modes"
+description: "How to use and configure automation modes."
+---
+
+An automation can be triggered while it is already running.
+
+The automation's `mode` configuration option controls what happens when the automation is triggered while the actions are still running from a previous trigger.
+
+Mode | Description
+-|-
+`single` | (Default) Do not start a new run. Issue a warning.
+`restart` | Start a new run after first stopping previous run.
+`queued` | Start a new run after all previous runs complete. Runs are guaranteed to execute in the order they were queued.
+`parallel` | Start a new, independent run in parallel with previous runs.
+
+
+
+
+
+For both `queued` and `parallel` modes, configuration option `max` controls the maximum
+number of runs that can be executing and/or queued up at a time. The default is 10.
+
+When `max` is exceeded (which is effectively 1 for `single` mode) a log message will be emitted to indicate this has happened. Configuration option `max_exceeded` controls the severity level of that log message. Set it to `silent` to ignore warnings or set it to a [log level](/integrations/logger/#log-levels). The default is `warning`.
+
+## Example throttled automation
+
+Some automations you only want to run every 5 minutes. This can be achieved using the `single` mode and silencing the warnings when the automation is triggered while it's running.
+
+```yaml
+automation:
+ - mode: single
+ max_exceeded: silent
+ trigger:
+ - ...
+ action:
+ - ...
+ - delay: 300 # seconds (=5 minutes)
+```
+
+## Example Queued
+
+Sometimes an automation is doing an action on a device that does not support multiple simultaneous actions. In such cases, a queue can be used. In that case, the automation will be executed once it's current invocation and queue are done.
+
+```yaml
+automation:
+ - mode: queued
+ max: 25
+ trigger:
+ - ...
+ action:
+ - ...
+```
diff --git a/source/_docs/automation/services.markdown b/source/_docs/automation/services.markdown
new file mode 100644
index 00000000000..57525889bde
--- /dev/null
+++ b/source/_docs/automation/services.markdown
@@ -0,0 +1,46 @@
+---
+title: "Automation Services"
+description: "How to use the various automation services."
+---
+
+The automation integration has services to control automations, like turning automations on and off. This can be useful if you want to disable an automation from another automation.
+
+## Service `automation.turn_on`
+
+This service enables the automation's triggers.
+
+Service data attribute | Optional | Description
+-|-|-
+`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
+
+## Service `automation.turn_off`
+
+This service disables the automation's triggers, and optionally stops any currently active actions.
+
+Service data attribute | Optional | Description
+-|-|-
+`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
+`stop_actions` | yes | Stop any currently active actions (defaults to true).
+
+## Service `automation.toggle`
+
+This service enables the automation's triggers if they were disabled, or disables the automation's triggers, and stops any currently active actions, if the triggers were enabled.
+
+Service data attribute | Optional | Description
+-|-|-
+`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
+
+## Service `automation.trigger`
+
+This service will trigger the action of an automation. By default it bypasses any conditions, though that can be changed via the `skip_condition` attribute.
+
+Service data attribute | Optional | Description
+-|-|-
+`entity_id` | no | Entity ID of automation to trigger. Can be a list. `none` or `all` are also accepted.
+`skip_condition` | yes | Whether or not the condition will be skipped (defaults to true).
+
+## Service `automation.reload`
+
+_This service is only required if you create/edit automations in YAML. Automations via the UI do this automatically._
+
+This service reloads all automations, stopping all currently active automation actions.
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 4d7466069d8..443349800f6 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -32,6 +32,18 @@ automation:
- ANOTHER_USER_ID
```
+It is also possible to listen for multiple events at once. This is useful for
+event that contain no, or similar, data and contexts.
+
+```yaml
+automation:
+ trigger:
+ platform: event
+ event_type:
+ - automation_reloaded
+ - scene_reloaded
+```
+
### Home Assistant trigger
Fires when Home Assistant starts up or shuts down.
@@ -319,8 +331,6 @@ A very thorough explanation of this is available in the Wikipedia article about
Fires when a [tag](/integrations/tag) is scanned. For example, a NFC tag is
scanned using the Home Assistant Companion mobile application.
-{% raw %}
-
```yaml
automation:
trigger:
@@ -328,13 +338,9 @@ automation:
tag_id: A7-6B-90-5F
```
-{% endraw %}
-
Additionally, you can also only trigger if a card is scanned by a specific
device/scanner by setting the `device_id`:
-{% raw %}
-
```yaml
automation:
trigger:
@@ -343,7 +349,19 @@ automation:
device_id: 0e19cd3cf2b311ea88f469a7512c307d
```
-{% endraw %}
+Or trigger on multiple possible devices for multiple tags:
+
+```yaml
+automation:
+ trigger:
+ platform: tag
+ tag_id:
+ - A7-6B-90-5F
+ - A7-6B-15-AC
+ device_id:
+ - 0e19cd3cf2b311ea88f469a7512c307d
+ - d0609cb25f4a13922bb27d8f86e4c821
+```
### Template trigger
diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown
new file mode 100644
index 00000000000..4eccd471673
--- /dev/null
+++ b/source/_docs/automation/using_blueprints.markdown
@@ -0,0 +1,45 @@
+---
+title: "Using Automation Blueprints"
+description: "How to create automations based off blueprints."
+---
+
+Automation blueprints are pre-made automations that you can easily add to your Home Assistant instance. Each blueprint can be added as many times as you want.
+
+Quick links:
+ - [Blueprints in the Home Assistant forums][blueprint-forums]
+
+## Blueprint Automations
+
+Automations based on a blueprint only need to be configured to be used. What needs to be configured differs on each blueprint.
+
+To create your first automation based on a blueprint, go to **Configuration** and then **Blueprints**. Find the blueprint that you want to use and click on "Create Automation".
+
+This will open the automation editor with the blueprint selected. Give it a name and configure the blueprint and click on the blue button "Save Automation" in the bottom right.
+
+Done! If you want to revisit the configuration values, you can find it by going to **Configuration** and then **Automations**.
+
+## Importing blueprints
+
+Home Assistant can import blueprints from the Home Assistant forums, GitHub and GitHub gists.
+
+To do this, first [find a blueprint you want to import][blueprint-forums]. If you just want to practice importing, you can use this URL:
+
+```text
+https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml
+```
+
+Go to **Configuration** and then **Blueprints**. Click on the blue "Import Blueprint" button in the bottom right.
+
+A new dialog will pop-up asking you for the URL. Enter the URL and click on "preview blueprint".
+
+This will load the blueprint and show a preview in the import dialog. You can change the name and finish the import.
+
+The blueprint can now be used for creating automations.
+
+## Finding new blueprints
+
+The Home Assistant Community forums have a specific tag for blueprints. This tag is used to collect all blueprints.
+
+[Visit the Home Assistant forums][blueprint-forums]
+
+[blueprint-forums]: /get-blueprints
\ No newline at end of file
diff --git a/source/_docs/automation/yaml.markdown b/source/_docs/automation/yaml.markdown
new file mode 100644
index 00000000000..7ab5a71d95f
--- /dev/null
+++ b/source/_docs/automation/yaml.markdown
@@ -0,0 +1,145 @@
+---
+title: "Automation YAML"
+description: "How to use the automation integration with YAML."
+---
+
+Automations are created in Home Assistant via the UI, but are stored in a YAML format. If you want to edit the YAML of an automation, go to edit the automation, click on the menu button in the top right and turn on YAML mode.
+
+The UI will write your automations to `automations.yaml`. This file is managed by the UI and should not be edited manually.
+
+It is also possible to write your automations directly inside `configuration.yaml` or other YAML files. You can do this by adding a labeled `automation` block to your `configuration.yaml`:
+
+```yaml
+# The configuration required for the UI to work
+automation: !include automations.yaml
+
+# Labeled automation block
+automation kitchen:
+- trigger:
+ platform: ...
+```
+
+You can add as many labeled `automation` blocks as you want.
+
+## YAML Example
+
+Example of a YAML based automation that you can add to `configuration.yaml`.
+
+{% raw %}
+```yaml
+# Example of entry in configuration.yaml
+automation my_lights:
+# Turns on lights 1 hour before sunset if people are home
+# and if people get home between 16:00-23:00
+ - alias: 'Rule 1 Light on in the evening'
+ trigger:
+ # Prefix the first line of each trigger configuration
+ # with a '-' to enter multiple
+ - platform: sun
+ event: sunset
+ offset: '-01:00:00'
+ - platform: state
+ entity_id: all
+ to: 'home'
+ condition:
+ # Prefix the first line of each condition configuration
+ # with a '-'' to enter multiple
+ - condition: state
+ entity_id: all
+ state: 'home'
+ - condition: time
+ after: '16:00:00'
+ before: '23:00:00'
+ action:
+ # With a single service call, we don't need a '-' before service - though you can if you want to
+ service: homeassistant.turn_on
+ entity_id: group.living_room
+
+# Turn off lights when everybody leaves the house
+ - alias: 'Rule 2 - Away Mode'
+ trigger:
+ platform: state
+ entity_id: all
+ to: 'not_home'
+ action:
+ service: light.turn_off
+ entity_id: all
+
+# Notify when Paulus leaves the house in the evening
+ - alias: 'Leave Home notification'
+ trigger:
+ platform: zone
+ event: leave
+ zone: zone.home
+ entity_id: device_tracker.paulus
+ condition:
+ condition: time
+ after: '20:00'
+ action:
+ service: notify.notify
+ data:
+ message: 'Paulus left the house'
+
+# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component.
+ - alias: 'Xiaomi Cube Action'
+ initial_state: false
+ trigger:
+ platform: event
+ event_type: cube_action
+ event_data:
+ entity_id: binary_sensor.cube_158d000103a3de
+ action:
+ service: notify.pushover
+ data:
+ title: "Cube event detected"
+ message: "Cube has triggered this event: {{ trigger.event }}"
+```
+{% endraw %}
+
+
+## Extra options
+
+When writing automations directly in YAML, you will have access to advanced options that are not available in the user interface.
+
+### Automation initial state
+
+At startup, automations by default restore their last state of when Home Assistant ran. This can be controlled with the `initial_state` option. Set it to `false` or `true` to force initial state to be off or on.
+
+```yaml
+automation:
+- alias: Automation Name
+ initial_state: false
+ trigger:
+ - platform: ...
+```
+
+## Migrating your YAML automations to `automations.yaml`
+
+If you want to migrate your manual automations to use the editor, you'll have to copy them to `automations.yaml`. Make sure that `automations.yaml` remains a list! For each automation that you copy over, you'll have to add an `id`. This can be any string as long as it's unique.
+
+```yaml
+# Example automations.yaml entry. Note, automations.yaml is always a list!
+- id: my_unique_id # <-- Required for editor to work, for automations created with the editor the id will be automatically generated.
+ alias: Hello world
+ trigger:
+ - platform: state
+ entity_id: sun.sun
+ from: below_horizon
+ to: above_horizon
+ condition:
+ - condition: numeric_state
+ entity_id: sensor.temperature
+ above: 17
+ below: 25
+ value_template: '{% raw %}{{ float(state.state) + 2 }}{% endraw %}'
+ action:
+ - service: light.turn_on
+```
+
+### Deleting Automations
+
+When automations remain visible in the Home Assistant Dashboard, even after having deleted in the YAML file, you have to delete them in the UI.
+
+To delete them completely, go to UI **Configuration** -> **Entities** and find the automation in the search field or by scrolling down.
+
+Check the square box aside of the automation you wish to delete and from the top-right of your screen, select 'REMOVE SELECTED'.
diff --git a/source/_docs/blueprint.markdown b/source/_docs/blueprint.markdown
new file mode 100644
index 00000000000..d97d4f95c24
--- /dev/null
+++ b/source/_docs/blueprint.markdown
@@ -0,0 +1,22 @@
+---
+title: "Creating blueprints"
+description: "Documentation on how to get started creating blueprints."
+---
+
+
+
+If you're looking on how to use blueprints, see the [automation documentation](/docs/automation/using_blueprints/).
+
+
+
+An automation blueprint is an automation configuration with certain parts marked as configurable. This allows users to create multiple automations based on the same blueprint, with each having its own configuration.
+
+Imagine a blueprint that controls a light based on motion, that allows you to configure the motion sensor to trigger on, and the light to control. It is now possible to create two automations that each have their own configuration for this blueprint and that act completely independent, yet are based on the same automation configuration.
+
+
+
+This is an advanced feature and requires knowledge of writing [automations in YAML](/docs/automation/yaml/).
+
+
+
+### [Tutorial: Create a blueprint »](/docs/blueprint/tutorial/)
diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown
new file mode 100644
index 00000000000..90f2c105fd1
--- /dev/null
+++ b/source/_docs/blueprint/schema.markdown
@@ -0,0 +1,183 @@
+---
+title: "Blueprint schema"
+description: "The schema for a valid blueprint."
+---
+
+The configuration schema of a blueprint consists of 2 parts:
+
+- The blueprint high-level metadata, like its name and a description and
+ the input the blueprint needs from the user.
+- The schema of the thing the blueprint describes.
+
+The first part is referred to as the blueprint schema and contains mainly the
+blueprint's metadata. The second part depends on what the blueprint is for.
+
+For example, in the case of creating a blueprint for an automation, the full
+schema for an [automation](/docs/automation/yaml/) applies.
+
+This page is mainly set up to describe the configuration schema of the
+blueprint metadata. Try our [blueprint tutorial](/docs/blueprint/tutorial/)
+in case you are interested in creating your first blueprint.
+
+## The blueprint schema
+
+The only requirement for a blueprint is a name. In its most basic form,
+a blueprint would look like:
+
+```yaml
+blueprint:
+ name: Example blueprint
+ domain: automation
+```
+
+And this is already a valid blueprint. But typically, one would need
+more. For example, user inputs or a description to describe the blueprint's
+functionality.
+
+This is the full blueprint schema:
+
+{% configuration %}
+name:
+ description: The name of the blueprint. Keep this short and descriptive.
+ type: string
+ required: true
+description:
+ description: >
+ The description of the blueprint. While optional, this field is highly
+ recommended. For example, to describe what the blueprint does, or tell more
+ about the options inputs of the blueprint provide. New lines in this
+ description are displayed in the UI, so paragraphs are allowed.
+ type: string
+ required: false
+domain:
+ description: >
+ The domain name this blueprint provides a blueprint for. Currently, only
+ `automation` is supported.
+ type: string
+ required: true
+input:
+ description: >
+ A dictionary of defined user inputs. These are the input fields that the
+ consumer of your blueprint can provide using YAML definition, or via
+ a configuration form in the UI.
+ type: map
+ required: false
+ keys:
+ name:
+ description: The name of the input field.
+ type: string
+ required: false
+ description:
+ description: >
+ A short description of the input field. Keep this short and descriptive.
+ type: string
+ required: false
+ selector:
+ description: >
+ The [selector](/docs/blueprint/selectors/) to use for this input. A
+ selector defines how the input is displayed in the frontend UI.
+ type: selector
+ required: false
+ default:
+ description: >
+ The default value of this input, in case the input is not provided
+ by the user of this blueprint.
+ type: any
+ required: false
+{% endconfiguration %}
+
+## Blueprint inputs
+
+As written in the above schema, a blueprint can accept one (or multiple)
+inputs from the blueprint consumer.
+
+These inputs can be of any type (string, boolean, list, dictionary), can have
+a default value and also provide a [selector](/docs/blueprint/selectors/) that
+ensures a matching input field in the user interface.
+
+Each input field can be referred to, outside of the blueprint metadata, using
+the `!input` custom tag.
+
+The following example shows a minimal blueprint with a single input:
+
+```yaml
+blueprint:
+ name: Example blueprint
+ description: Example showing an input
+ input:
+ my_input:
+ name: Example input
+```
+
+In the above example, `my_input` is the identifier of the input, that can be
+referred to later on using the `!input my_input` custom tag.
+
+In this example, no `selector` was provided. In this case, if this blueprint
+was used in the user interface, a text input field would be shown to the user.
+
+A blueprint can have as many inputs as you like.
+
+## Example blueprints
+
+The [built-in blueprints][blueprint-built-in]
+are great examples to get a bit of a feeling of how blueprints work.
+
+Here is the built-in motion light automation blueprint:
+
+```yaml
+blueprint:
+ name: Motion-activated Light
+ description: Turn on a light when motion is detected.
+ domain: automation
+ input:
+ motion_entity:
+ name: Motion Sensor
+ selector:
+ entity:
+ domain: binary_sensor
+ device_class: motion
+ light_target:
+ name: Light
+ selector:
+ target:
+ entity:
+ domain: light
+ no_motion_wait:
+ name: Wait time
+ description: Time to leave the light on after last motion is detected.
+ default: 120
+ selector:
+ number:
+ min: 0
+ max: 3600
+ unit_of_measurement: seconds
+
+# If motion is detected within the delay,
+# we restart the script.
+mode: restart
+max_exceeded: silent
+
+trigger:
+ platform: state
+ entity_id: !input motion_entity
+ from: "off"
+ to: "on"
+
+action:
+ - service: light.turn_on
+ target: !input light_target
+ - wait_for_trigger:
+ platform: state
+ entity_id: !input motion_entity
+ from: "on"
+ to: "off"
+ - delay: !input no_motion_wait
+ - service: light.turn_off
+ target: !input light_target
+```
+
+Additional examples, provided by the community, can be found on the
+[community forum][blueprint-forums].
+
+[blueprint-built-in]: https://github.com/home-assistant/core/tree/dev/homeassistant/components/automation/blueprints
+[blueprint-forums]: /get-blueprints
diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown
new file mode 100644
index 00000000000..a67a244039b
--- /dev/null
+++ b/source/_docs/blueprint/selectors.markdown
@@ -0,0 +1,492 @@
+---
+title: "Selectors"
+description: "Documentation on available selectors."
+---
+
+Selectors can be used to specify what values are accepted for a blueprint
+input. The selector also defines how the input is shown in the user interface.
+
+Some selectors can, for example, show a toggle button to turn something
+on or off, while another select can filter a list of devices to show
+only devices that have motion-sensing capabilities.
+
+Having the good selectors set on your blueprint automations inputs makes a
+blueprint easier to use from the UI.
+
+The following selectors are currently available:
+
+- [Action selector](#action-selector)
+- [Area selector](#area-selector)
+- [Boolean selector](#boolean-selector)
+- [Device selector](#device-selector)
+- [Entity selector](#entity-selector)
+- [Number selector](#number-selector)
+- [Target selector](#target-selector)
+- [Time selector](#time-selector)
+
+If no selector is defined, a text input for a single line will be shown.
+
+## Action selector
+
+The action selector allows the user to input one or more sequences of actions.
+On the user interface, the action part of the automation editor will be shown.
+The value of the input will contain a list of actions to perform.
+
+
+
+This selector does not have any other options; therefore, it only has its key.
+
+```yaml
+action:
+```
+
+## Area selector
+
+The area selector shows an area finder that can pick a single area. The value
+of the input will be the area ID of the user-selected area.
+
+An area selector can filter the list of areas, based on properties of the devices
+and entities that are assigned to those areas. For example, the areas list could
+be limited to areas with entities provided by the [ZHA](/integration/zha)
+integration.
+
+In its most basic form, it doesn't require any options, which will show
+all areas.
+
+```yaml
+area:
+```
+
+{% configuration area %}
+device:
+ description: >
+ When device options are provided, the list of areas is filtered by areas
+ that at least provide one device that matches the given conditions.
+ type: map
+ keys:
+ integration:
+ description: >
+ Can be set to an integration domain. Limits the list of areas that
+ provide devices by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+ manufacturer:
+ description: >
+ When set, it limits the list of areas that provide devices by the set
+ manufacturer name.
+ type: string
+ required: false
+ model:
+ description: >
+ When set, it limits the list of areas that provide devices that have
+ the set model.
+ type: string
+ required: false
+entity:
+ description: >
+ When entity options are provided, the list of areas is filtered by areas
+ that at least provide one entity that matches the given conditions.
+ type: map
+ required: false
+ keys:
+ integration:
+ description: >
+ Can be set to an integration domain. Limits the list of areas that
+ provide entities by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+ domain:
+ description: >
+ Limits the list of areas that provide entities of a certain domain,
+ for example, [`light`](/integrations/light) or
+ [`binary_sensor`](/integrations/binary_sensor).
+ type: string
+ required: false
+ device_class:
+ description: >
+ Limits the list of areas to areas that have entities with a certain
+ device class, for example, `motion` or `window`.
+ type: device_class
+ required: false
+{% endconfiguration %}
+
+### Example area selectors
+
+An example area selector only shows areas that provide one or more lights
+provided by the [ZHA](/integrations/zha) integration.
+
+```yaml
+area:
+ entity:
+ integration: zha
+ domain: light
+```
+
+Another example uses the area selector, which only shows areas that provide one
+or more remote controls provided by the [deCONZ](/integrations/deconz)
+integration.
+
+```yaml
+area:
+ device:
+ integration: deconz
+ manufacturer: IKEA of Sweden
+ model: TRADFRI remote control
+```
+
+## Boolean selector
+
+The boolean selector shows a toggle that allows the user to turn on or off
+the selected option. The input's value will contain the boolean value of that
+toggle as a boolean value, being `true` or `false`.
+
+
+
+The boolean selector can be incredibly useful for adding feature switches
+to, for example, blueprints.
+
+This selector does not have any other options; therefore, it only has its key.
+
+```yaml
+boolean:
+```
+
+## Device selector
+
+The device selector shows a device finder that can pick a single device.
+The value of the input will contain the device ID of the user-selected device.
+
+A device selector can filter the list of devices, based on things like the
+manufacturer or model of the device, the entities the device provides or based
+on the domain that provided the device.
+
+
+
+In its most basic form, it doesn't require any options, which will show
+all devices.
+
+```yaml
+device:
+```
+
+{% configuration device %}
+integration:
+ description: >
+ Can be set to an integration domain. Limits the list of devices to devices
+ provided by the set integration domain.
+ type: string
+ required: false
+manufacturer:
+ description: >
+ When set, it limits the list of devices to devices provided by the set
+ manufacturer name.
+ type: string
+ required: false
+model:
+ description: >
+ When set, it limits the list of devices to devices that have the set model.
+ type: string
+ required: false
+entity:
+ description: >
+ When entity options are provided, the list of devices is filtered by devices
+ that at least provide one entity that matches the given conditions.
+ type: map
+ required: false
+ keys:
+ integration:
+ description: >
+ Can be set to an integration domain. Limits the list of devices that
+ provide entities by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+ domain:
+ description: >
+ Limits the list of devices that provide entities of a certain domain,
+ for example, [`light`](/integrations/light)
+ or [`binary_sensor`](/integrations/binary_sensor).
+ type: string
+ required: false
+ device_class:
+ description: >
+ Limits the list of entities to entities that have a certain device
+ class, for example, `motion` or `window`.
+ type: device_class
+ required: false
+{% endconfiguration %}
+
+### Example device selector
+
+An example entity selector that, will only show devices that are:
+
+- Provided by the [deCONZ](/integration/deconz) integration.
+- Are a Philips Hue Remote of Model RWL021.
+- Provide a battery [sensor](/integration/sensor).
+
+And this is what is looks like in YAML:
+
+```yaml
+device:
+ integration: deconz
+ manufacturer: Philips
+ model: RWL021
+ entity:
+ domain: sensor
+ device_class: battery
+```
+
+## Entity selector
+
+The entity selector shows an entity finder that can pick a single entity.
+The value of the input will contain the entity ID of user-selected entity.
+
+An entity selector can filter the list of entities, based on things like the
+class of the device, the domain of the entity or the domain that provided the
+entity.
+
+
+
+In its most basic form, it doesn't require any options, which will show
+all entities.
+
+```yaml
+entity:
+```
+
+{% configuration entity %}
+integration:
+ description: >
+ Can be set to an integration domain. Limits the list of entities to entities
+ provided by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+domain:
+ description: >
+ Limits the list of entities to entities of a certain domain, for example,
+ [`light`](/integrations/light) or
+ [`binary_sensor`](/integrations/binary_sensor).
+ type: string
+ required: false
+device_class:
+ description: >
+ Limits the list of entities to entities that have a certain device class,
+ for example, `motion` or `window`.
+ type: device_class
+ required: false
+{% endconfiguration %}
+
+### Example entity selector
+
+An example entity selector that, will only show entities that are:
+
+- Provided by the [ZHA](/integration/zha) integration.
+- From the [Binary Sensor](/integration/binary_sensor) domain.
+- Have presented themselves as devices of a motion device class.
+
+And this is what it looks like in YAML:
+
+```yaml
+entity:
+ integration: zha
+ domain: binary_sensor
+ device_class: motion
+```
+
+## Number selector
+
+The number selector shows either a number input or a slider input, that allows
+the user to specify a numeric value. The value of the input will contain
+the select value.
+
+
+
+On the user interface, the input can either be in a slider or number mode.
+Both modes limit the user input by a minimal and maximum value, and can
+have a unit of measurement to go with it.
+
+In its most basic form, it requires a minimal and maximum value:
+
+```yaml
+number:
+ min: 0
+ max: 100
+```
+
+{% configuration number %}
+min:
+ description: The minimal user-settable number value.
+ type: [integer, float]
+ required: true
+max:
+ description: The maximum user-settable number value.
+ type: [integer, float]
+ required: true
+step:
+ description: The step value of the number value.
+ type: [integer, float]
+ required: false
+ default: 1
+unit_of_measurement:
+ description: Unit of measurement in which the number value is expressed in.
+ type: string
+ required: false
+mode:
+ description: This can be either `box` or `slider` mode.
+ type: string
+ required: false
+ default: box
+{% endconfiguration %}
+
+### Example number selectors
+
+An example number selector that allows a user a percentage, directly in a
+regular number input box.
+
+```yaml
+number:
+ min: 0
+ max: 100
+ unit_of_measurement: "%"
+```
+
+A more visual variant of this example could be achieved using a slider.
+This can be helpful for things like allowing the user to select a
+brightness level of lights. Additionally, this example changes the brightness
+in incremental steps of 10%.
+
+```yaml
+number:
+ min: 0
+ max: 100
+ step: 10
+ unit_of_measurement: "%"
+ mode: slider
+```
+
+## Target selector
+
+The target selector is a rather special selector, allowing the user to selector
+targeted entities, devices or areas for service calls. The value of
+the input will contain a special target format, that is accepted by
+service calls.
+
+The selectable targets can be filtered, based on entity or device properties.
+Areas are only selectable as a target, if some entities or devices match
+those properties in those areas.
+
+
+
+Its most basic form, doesn't require any options, which will allow the
+user to target any entity, device or area available in the system.
+
+```yaml
+target:
+```
+
+{% configuration target %}
+device:
+ description: >
+ When device options are provided, the targets are limited by devices
+ that at least match the given conditions.
+ type: map
+ keys:
+ integration:
+ description: >
+ Can be set to an integration domain. Limits the device targets that
+ are provided devices by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+ manufacturer:
+ description: >
+ When set, it limits the targets to devices provided by the set
+ manufacturer name.
+ type: string
+ required: false
+ model:
+ description: When set, it limits the targets to devices by the set model.
+ type: string
+ required: false
+entity:
+ description: >
+ When entity options are provided, the targets are limited by entities
+ that at least match the given conditions.
+ type: map
+ required: false
+ keys:
+ integration:
+ description: >
+ Can be set to an integration domain. Limits targets to entities
+ provided by the set integration domain, for example,
+ [`zha`](/integrations/zha).
+ type: string
+ required: false
+ domain:
+ description: >
+ Limits the targets to entities of a certain domain,
+ for example, [`light`](/integrations/light) or
+ [`binary_sensor`](/integrations/binary_sensor).
+ type: string
+ required: false
+ device_class:
+ description: >
+ Limits the targets to entities with a certain
+ device class, for example, `motion` or `window`.
+ type: device_class
+ required: false
+{% endconfiguration %}
+
+
+
+Targets are meant to be used with the `target` property of a service call in
+a script sequence. For example:
+
+```yaml
+action:
+ - service: light.turn_on
+ target: !input lights
+```
+
+
+
+### Example target selectors
+
+An example target selector that only shows targets that at least provide one
+or more lights, provided by the [ZHA](/integrations/zha) integration.
+
+```yaml
+target:
+ entity:
+ integration: zha
+ domain: light
+```
+
+Another example using the target selector, which only shows targets that
+provide one or more remote controls, provided by the
+[deCONZ](/integrations/deconz) integration.
+
+```yaml
+target:
+ device:
+ integration: deconz
+ manufacturer: IKEA of Sweden
+ model: TRADFRI remote control
+```
+
+## Time selector
+
+The time selector shows a time input that allows the user to specify a time
+of the day. The value of the input will contain the time in 24-hour format,
+for example, `23:59:59`.
+
+
+
+This selector does not have any other options; therefore, it only has its key.
+
+```yaml
+time:
+```
diff --git a/source/_docs/blueprint/tutorial.markdown b/source/_docs/blueprint/tutorial.markdown
new file mode 100644
index 00000000000..97011da201b
--- /dev/null
+++ b/source/_docs/blueprint/tutorial.markdown
@@ -0,0 +1,229 @@
+---
+title: "Blueprint tutorial"
+description: "Tutorial on creating a blueprint."
+---
+
+In this tutorial, we're going to create a blueprint that controls a light based on a motion sensor. We will do this by taking an existing automation and converting it to a blueprint.
+
+For this tutorial, we use a simple automation. The process for converting a complex automation is not any different.
+
+## Our automation
+
+To create a blueprint, we first need to have a working automation. The automation we're going to use in this tutorial, which controls a light based on a motion sensor, looks like this:
+
+{% raw %}
+
+```yaml
+trigger:
+ platform: state
+ entity_id: binary_sensor.motion_kitchen
+
+action:
+ service: >
+ {% if trigger.to_state.state == "on" %}
+ light.turn_on
+ {% else %}
+ light.turn_off
+ {% endif %}
+ target:
+ entity_id: light.kitchen
+```
+
+{% endraw %}
+
+## Create the blueprint file
+
+Automation blueprints are YAML files (with the `.yaml` extension) and live in the `/blueprints/automation/` folder. You can create as many subdirectories in this folder as you want.
+
+To get started with our blueprint, we're going to copy the above automation YAML and save it in that directory with the name `motion_light_tutorial.yaml`.
+
+## Add basic blueprint metadata
+
+Home Assistant needs to know about the blueprint. This is achieved by adding a `blueprint:` section. It should contain the `domain` of the integration it is for (`automation`) and `name`, the name of your blueprint. Optionally, you can also include a `description` for your blueprint.
+
+Add this to the top of the file:
+
+```yaml
+blueprint:
+ name: Motion Light Tutorial
+ description: Turn a light on based on detected motion
+ domain: automation
+```
+
+## Define the configurable parts as inputs
+
+Now we have to decide what steps we want to make configurable. We want to make it as re-usable as possible, without losing its original intent of turning on a light-based on a motion sensor.
+
+Configurable parts in blueprints are called inputs. To make the motion sensor entity configurable, we're replacing the entity ID with a custom YAML tag `!input`. This YAML tag has to be combined with the name of the input:
+
+```yaml
+trigger:
+ platform: state
+ entity_id: !input motion_sensor
+```
+
+For the light, we can offer some more flexibility. We want to allow the user to be able to define any device or area as the target. The `target` property in the service action can contain references to areas, devices and/or entities, so that's what we will use.
+
+Inputs are not limited to strings. They can contain complex objects too. So in this case, we're going to mark the whole `target` as input:
+
+{% raw %}
+
+```yaml
+action:
+ service: >
+ {% if trigger.to_state.state == "on" %}
+ light.turn_on
+ {% else %}
+ light.turn_off
+ {% endif %}
+ target: !input target_light
+```
+
+{% endraw %}
+
+## Add the inputs to the metadata
+
+All parts that are marked as inputs need to be added to the metadata. The minimum is that we add their names as used in the automation:
+
+```yaml
+blueprint:
+ name: Motion Light Tutorial
+ description: Turn a light on based on detected motion
+ domain: automation
+ input:
+ motion_sensor:
+ target_light:
+```
+
+## Use it via `configuration.yaml`
+
+With the bare minimum metadata added, your blueprint is ready to use.
+
+Open your `configuration.yaml` and add the following:
+
+```yaml
+automation tutorial:
+ use_blueprint:
+ path: motion_light_tutorial.yaml
+ input:
+ motion_sensor: binary_sensor.kitchen
+ target_light:
+ entity_id: light.kitchen
+```
+
+Reload automations and your new automation should popup. Because we configured the exact values as the original automation, they should work exactly the same.
+
+## Adding user friendly names to the inputs
+
+Blueprints are easier to use if it's easy to see what each field is used for. We can improve this experience by adding names and descriptions to our inputs:
+
+```yaml
+blueprint:
+ name: Motion Light Tutorial
+ domain: automation
+ input:
+ motion_sensor:
+ name: Motion Sensor
+ description: This sensor will be synchronized with the light.
+ target_light:
+ name: Lights
+ description: The lights to keep in sync.
+```
+
+## Describing the inputs
+
+Our blueprint doesn't currently describe what the inputs should contain. Without this information, Home Assistant will offer the user an empty text box.
+
+To instead allow Home Assistant to offer more assistance, we will use [selectors](/docs/blueprint/selectors/). Selectors describe a type and can be used to help the user pick a matching value.
+
+The selector for the motion sensor entity should describe that we want entities from the binary sensor domain that have the device class `motion`.
+
+The selector for the target light should describe that we want to target light entities.
+
+```yaml
+blueprint:
+ name: Motion Light Tutorial
+ domain: automation
+ input:
+ motion_sensor:
+ name: Motion Sensor
+ description: This sensor will be synchronized with the light.
+ selector:
+ entity:
+ domain: binary_sensor
+ device_class: motion
+ target_light:
+ name: Lights
+ description: The lights to keep in sync.
+ selector:
+ target:
+ entity:
+ domain: light
+```
+
+By limiting our blueprint to working with lights and motion sensors, we unlock a couple of benefits: the UI will be able to limit suggested values to lights and motion sensors instead of all devices. It will also allow the user to pick an area to control the lights in.
+
+## The final blueprint
+
+After we have added all the steps, our blueprint will look like this:
+
+{% raw %}
+
+```yaml
+blueprint:
+ name: Motion Light Tutorial
+ description: Turn a light on based on detected motion
+ domain: automation
+ input:
+ motion_sensor:
+ name: Motion Sensor
+ description: This sensor will be synchronized with the light.
+ selector:
+ entity:
+ domain: binary_sensor
+ device_class: motion
+ target_light:
+ name: Lights
+ description: The lights to keep in sync.
+ selector:
+ target:
+ entity:
+ domain: light
+
+trigger:
+ platform: state
+ entity_id: !input motion_sensor
+
+action:
+ service: >
+ {% if trigger.to_state.state == "on" %}
+ light.turn_on
+ {% else %}
+ light.turn_off
+ {% endif %}
+ target: !input target_light
+```
+
+{% endraw %}
+
+## Use it via the UI
+
+To configure it via the UI, go to **Configuration** and then **Blueprints**. Find the "Motion Light Tutorial" blueprint and click on "Create Automation".
+
+
+Don't forget to reload automations after you make changes to your blueprint to have the UI and the automation integration pick up the latest blueprint changes.
+
+
+
+
+## Share the love
+
+The final step is to share this blueprint with others. For this tutorial we're going to share it on GitHub Gists.
+
+- Go to [GitHub Gists](https://gist.github.com/)
+- Gist description: blueprint tutorial
+- Filename including extension: `motion_light_tutorial.yaml`
+- Content is the content of the blueprint file.
+- Click the "Create Gist" button
+
+You can now copy the URL of your new Gist and share it with other people. They can import it by going to **Configuration**, **Blueprints** and clicking on the blue "Import Blueprint" button.
diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown
index 9559af19c81..98f081eac56 100644
--- a/source/_docs/scripts/service-calls.markdown
+++ b/source/_docs/scripts/service-calls.markdown
@@ -22,6 +22,28 @@ service: homeassistant.turn_on
entity_id: group.living_room
```
+### Targeting areas and devices
+
+Instead of targeting an entity, you can also target an area or device. Or a combination of these.
+This is done with the `target` key.
+
+A `target` is a map thats contains atleast one of the following: `area_id`, `device_id`, `entity_id`.
+Each of these can be a list.
+
+When the service is called, the area's and devices will be resolved to entities.
+
+```yaml
+service: homeassistant.turn_on
+target:
+ area_id: livingroom
+ device_id:
+ - ff22a1889a6149c5ab6327a8236ae704
+ - 52c050ca1a744e238ad94d170651f96b
+ entity_id:
+ - light.hallway
+ - light.landing
+```
+
### Passing data to the service call
You can also specify other parameters beside the entity to target. For example, the light turn on service allows specifying the brightness.
diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html
index 5ccf656b2e8..f70674aa17c 100644
--- a/source/_includes/asides/docs_navigation.html
+++ b/source/_includes/asides/docs_navigation.html
@@ -85,17 +85,29 @@
Home Assistant keeps your data local, not need for a cloud.
+
+
+ Home Assistant communicates with your devices locally, and will fallback
+ to pulling in data from the cloud if there is no other option. No data
+ is stored in the cloud, and everything is processed locally.
+
+
+
+
+
+
+ Companion Mobile Apps
+
+
+
+ Use the official Home Assistant apps, a convenient companion to quickly
+ control your devices and be notified when things happen in your home,
+ even on your wrist using the Apple Watch.
+
+
+
+ The apps can also be used to send your location home to use presence
+ detection as part of your automations. Data is sent directly to your
+ home, no access by third-parties.
+
diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown
index 73fd777d8c5..ba989b90c6b 100644
--- a/source/_integrations/abode.markdown
+++ b/source/_integrations/abode.markdown
@@ -36,7 +36,7 @@ There is currently support for the following device types within Home Assistant:
## Configuration
-To use Abode devices in your installation, add your Abode account from the integrations page. Two-factor authentication must be disabled on your Abode account. Alternatively, Abode can be configured by adding the following `abode` section to your `configuration.yaml` file:
+To use Abode devices in your installation, add your Abode account from the integrations page. Alternatively, Abode can be configured by adding the following `abode` section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown
index 980d3fdebac..23f239dffa1 100644
--- a/source/_integrations/alexa.smart_home.markdown
+++ b/source/_integrations/alexa.smart_home.markdown
@@ -349,10 +349,13 @@ The supported locales are:
- `en-US`
- `es-ES`
- `es-MX`
+- `es-US`
- `fr-CA`
- `fr-FR`
+- `hi-IN`
- `it-IT`
- `ja-JP`
+- `pt-BR`
See [List of Capability Interfaces and Supported Locales][alexa-supported-locales].
diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown
index 881314f5aac..661ca6e9d92 100644
--- a/source/_integrations/apple_tv.markdown
+++ b/source/_integrations/apple_tv.markdown
@@ -10,173 +10,73 @@ ha_release: 0.49
ha_domain: apple_tv
---
-The `apple_tv` platform allows you to control an Apple TV (3rd and 4th generation). See the [remote platform](/integrations/apple_tv#remote) if you want to send remote control buttons, e.g., arrow keys.
+The Apple TV integration allows you to control an Apple TV (any generation). See the
+[remote platform](/integrations/apple_tv#remote) if you want to send remote control buttons,
+e.g., arrow keys.
There is currently support for the following device types within Home Assistant:
- Media Player
- [Remote](#remote)
-
-Currently, you must have Home Sharing enabled for this to work. Support for pairing Home Assistant with your device will be supported in a later release.
-
-
## Configuration
-To use this component, you must first install some system libraries and a compiler. For Debian or a similar system, this should be enough:
+Menu: *Configuration* > *Integrations*
-```shell
-sudo apt-get install build-essential libssl-dev libffi-dev python-dev
-```
+Press on **Apple TV** and configure the integration:
-If you want to discover new devices automatically, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add one or more Apple TVs to your installation, add the following to your `configuration.yaml` file:
+* Enter either an IP address or a device name and follow the next few steps
-```yaml
-# Example configuration.yaml entry
-apple_tv:
- - host: IP_1
- login_id: LOGIN_ID_1
- name: NAME_1
- start_off: START_OFF_1
- credentials: CREDENTIALS_1
- - host: IP_2
- login_id: LOGIN_ID_2
- name: NAME_2
- start_off: START_OFF_2
- credentials: CREDENTIALS_2
-```
+## FAQ
-{% configuration %}
-host:
- description: The IP-address of the device.
- required: true
- type: string
-login_id:
- description: An identifier used to login to the device, see below.
- required: true
- type: string
-name:
- description: The name of the device used in the frontend.
- required: false
- type: string
-start_off:
- description: Set to true if the device should start in fake standby.
- required: false
- type: boolean
- default: false
-credentials:
- description: Credentials used for AirPlay playback.
- required: false
- type: string
-{% endconfiguration %}
+### My Apple TV does not turn on/off when I press on/off in the frontend
-In order to connect to the device, you need a *login id*. The easiest way to obtain this identifier is to use the `apple_tv_scan` service (described below). Additional information about `start_off` and `credentials` can also be found under the guides section.
+That is correct; it only toggles the power state in Home Assistant. Turning the device on or off is
+currently not supported. However, support for this is in development so that it will be added at some
+point in the future
-## Guides
+### Is it possible to see if a device is on without interacting with it
-### Scanning for devices
+No
-Make sure Home Sharing is enabled on the Apple TV.
+### When adding a new device, a PIN code is requested, but none is shown on the screen
-To scan for devices and determine the `login_id`, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**.
+This can happen when pairing the AirPlay protocol in case the access settings are wrong. On your
+Apple TV, navigate to Settings, find the AirPlay menu and make sure that the access setting
+is set to "Everyone on the same network" and try again.
-
+### The buttons (play, pause, etc.) does not work
-Select `apple_tv` as domain and `apple_tv_scan` as service then press the button:
+The tvOS apps themselves decide what commands they support and when they support
+them. Likely, the app you are using does not support the action you are trying
+to perform. Before writing an issue about this, verify if the same action is possible with the
+Remote app in iOS. If that is the case, please write a bug in
+[pyatv](https://github.com/postlund/pyatv/issues/new?assignees=&labels=bug&template=bug_report.md&title=)
+and include logs (see Debugging below).
-
+### I'm trying to play a stream via AirPlay, but it doesn't work
-Scanning will be done for three seconds and notification will be shown in the state view with all found devices:
-
-
-
-Alternatively, you may use the application ``atvremote``. Install it with ``pip3 install --upgrade pyatv`` in your Home Assistant environment (note: do *not* use sudo). Then run ``atvremote scan`` to scan for all devices (try again if a device is missing):
-
-```bash
-$ atvremote scan
-Found Apple TVs:
- - Apple TV at 10.0.10.22 (login id: 00000000-1234-5678-9012-345678901234)
-
-Note: You must use 'pair' with devices that have home sharing disabled
-```
-
-Just copy and paste the `login_id` from the device you want to add. For more details about `atvremote`, see: [this page](https://postlund.github.io/pyatv).
-
-### Setting up device authentication
-
-If you, when playing media with `play_url`, get the following error message:
-
-“This AirPlay connection requires iOS 7.1 or later, macOS 10.10 or later, or iTunes 11.2 or later.”
-
-then device authentication is required, open the developer tools by selecting the hammer icon in the sidebar. Once in the developer tools select **services**.
-
-
-
-Select `apple_tv` as domain, `apple_tv_authenticate` as service and enter `{"entity_id": "XXX"}` into "Service Data", but replace XXX with the entity id of your device (e.g., `media_player.apple_tv`). Press the button and hopefully you are presented with an input dialog asking for a pin code:
-
-
-
-If no dialog appears, go back to the states view and display it from there (press `CONFIGURE` as displayed in the image):
-
-
-
-A PIN code should now be visible on your TV, just enter it into the dialog and press "Confirm". You should see if it succeeded in the state view. Copy the credentials and insert it into your configuration (make sure you copy everything, it should be 81 characters) after ``credentials:`` with no line-break:
-
-```yaml
-# Example configuration.yaml entry
-apple_tv:
- - host: 10.0.0.20
- login_id: 00000000-1234-5678-9012-345678901234
- credentials: 1B8C387DDB59BDF6:CF5ABB6A2C070688F5926ADB7C010F6DF847252C15F9BDB6DA3E09D6591E90E5
-```
-
-Restart Home Assistant, and you should now be able to use `play_url` as before.
-
-### My Apple TV turns on when I restart Home Assistant
-
-The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI-CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured.
-
-So, if your TV is randomly turning on, this is probably the reason. As stated, this is by design, and there is no real fix for it. There's also no known way to turn off the Apple TV via the protocol used for communication. You have the following options:
-
-- Do not use this platform
-- Disable HDMI-CEC on your Apple TV
-- Use "fake standby"
-
-The first two points are quite obvious. Fake standby is a concept implemented in this platform that disables all requests to the device and makes it appear as being "off" in the web interface. This will make sure that the device is not woken up, but it will of course not show any information or allow you to control it. It is however easy to turn it on (or off) in the web interface or to use an automation with `turn_on`. To make it more useful, you can write automations that turn it on or off depending on some other device, like the input source on your receiver.
-
-To put a device into fake standby when starting Home Assistant, add `start_off: true` to your configuration.
-
-
-Turning the device on/off in the user interface will *not* turn the physical device on/off according to the description above.
-
-
-## Services
-
-### Service `apple_tv_authenticate`
-
-To play media on an Apple TV with device authentication enabled (e.g., ATV4 with tvOS 10.2+), Home Assistant must be properly authenticated. This method starts the process and presents the credentials needed for playback as a persistent notification. Please see guide above for usage.
-
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ------------------------------------------------------------------ |
-| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. |
-
-### Service `apple_tv_scan`
-
-Scans the local network for Apple TVs. All found devices are presented as a persistent notification.
+The Apple TV is quite picky when it comes to which formats it plays. The best bet is MP4. If it doesn't
+work, it's likely because of the media format.
## Remote
-The `apple_tv` remote platform allows you to send remote control buttons to an Apple TV. It is automatically setup when an Apple TV is configured.
+The `apple_tv` remote platform allows you to send remote control buttons to an Apple TV. It is
+automatically set up when an Apple TV is configured.
-At the moment, the following buttons are supported:
+At the moment, the following buttons are available (but not necessarily supported by all devices):
-- up
-- down
-- left
-- right
-- menu
-- top_menu
-- select
+- `up`
+- `down`
+- `left`
+- `right`
+- `menu`
+- `top_menu`
+- `select`
+- `volume_up`
+- `volume_down`
+- `home`
+- `home_hold`
A typical service call for press several buttons looks like this.
@@ -190,3 +90,18 @@ data:
- menu
- select
```
+
+## Debugging
+
+If you have any problems and intend to write an issue, make sure you have the
+relevant logs included. For this integration, you can enable them like this:
+
+```yaml
+logger:
+ logs:
+ pyatv: debug
+ homeassistant.components.apple_tv: debug
+```
+
+By providing logs directly when creating the issue, you will likely get help
+much faster.
diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown
index a937af28a6a..6ae26f74042 100644
--- a/source/_integrations/aurora.markdown
+++ b/source/_integrations/aurora.markdown
@@ -16,31 +16,18 @@ You can check the attributes of the sensor to see your exact forecast.
## Configuration
-To add the aurora binary sensor to your installation, add the following to your `configuration.yaml` file:
+To add the aurora binary sensor to your installation, search for the Aurora integration through the Configuration -> Integrations menu.
-```yaml
-# Example configuration.yaml entry
-binary_sensor:
- - platform: aurora
-```
+Enter a name for your Aurora location as well as the longitude and latitude of the location (default to your Home Assistant location).
-{% configuration %}
-forecast_threshold:
- description: Provide your own threshold number above which the sensor will trigger.
- required: false
- type: integer
- default: 75
-name:
- description: The name of the sensor.
- required: false
- type: string
- default: Aurora Visibility
-{% endconfiguration %}
+Click Submit to add the integration to your environment.
-## Full example
+You can configure multiple locations by adding the integration multiple times.
-```yaml
-binary_sensor:
- - platform: aurora
- forecast_threshold: 50
-```
+## Options
+
+Once installed you can adjust the threshold for this location by clicking on the Options link on the integration.
+
+## Sensors
+
+The integration will add a single binary sensor for each location you configure which will be in the state on when there is a forecast probability of Aurora viewing above your threshold and off when it is below your selected threshold.
diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown
index 1882d98d6ae..b5a19fd579b 100644
--- a/source/_integrations/automation.markdown
+++ b/source/_integrations/automation.markdown
@@ -11,112 +11,4 @@ ha_iot_class:
ha_domain: automation
---
-Please see [Automating Home Assistant](/docs/automation/) for in-depth
-documentation on how to use the automation integration.
-
-
-
-
-
-## Configuration
-
-This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
-
-```yaml
-# Example configuration.yaml entry
-automation:
-```
-
-### Automation initial state
-
-When you create a new automation, it will be enabled unless you explicitly add `initial_state: false` to it or turn it off manually via UI/another automation/developer tools. In case automations need to be always enabled or disabled when Home Assistant starts, then you can set the `initial_state` in your automations. Otherwise, the previous state will be restored.
-
-Please note that if for some reason Home Assistant cannot restore the previous state, it will result in the automation being enabled.
-
-```yaml
-automation:
-- alias: Automation Name
- initial_state: false
- trigger:
- ...
-```
-
-### Automation Modes
-
-The automation's `mode` configuration option controls what happens when the automation is triggered while the actions are still running from a previous trigger.
-
-Mode | Description
--|-
-`single` | (Default) Do not start a new run. Issue a warning.
-`restart` | Start a new run after first stopping previous run.
-`queued` | Start a new run after all previous runs complete. Runs are guaranteed to execute in the order they were queued.
-`parallel` | Start a new, independent run in parallel with previous runs.
-
-
-
-
-
-For both `queued` and `parallel` modes, configuration option `max` controls the maximum
-number of runs that can be executing and/or queued up at a time. The default is 10.
-
-When `max` is exceeded (which is effectively 1 for `single` mode) a log message will be emitted to indicate this has happened. Configuration option `max_exceeded` controls the severity level of that log message. See [Log Levels](/integrations/logger/#log-levels) for a list of valid options. Or `silent` may be specified to suppress the message from being emitted. The default is `warning`.
-
-#### Example Setting Automation Mode
-
-```yaml
-automation:
- - trigger:
- - ...
- mode: queued
- max: 25
- action:
- - ...
-```
-
-### Deleting Automations
-
-When automations remain visible in the Home Assistant Dashboard, even after having deleted in the YAML file, you have to delete them in the UI.
-
-To delete them completely, go to UI **Configuration** -> **Entities** and find the automation in the search field or by scrolling down.
-
-Check the square box aside of the automation you wish to delete and from the top-right of your screen, select 'REMOVE SELECTED'.
-
-## Services
-
-### `automation.turn_on`
-
-This service enables the automation's triggers.
-
-Service data attribute | Optional | Description
--|-|-
-`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
-
-### `automation.turn_off`
-
-This service disables the automation's triggers, and optionally stops any currently active actions.
-
-Service data attribute | Optional | Description
--|-|-
-`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
-`stop_actions` | yes | Stop any currently active actions (defaults to true).
-
-### `automation.toggle`
-
-This service enables the automation's triggers if they were disabled, or disables the automation's triggers, and stops any currently active actions, if the triggers were enabled.
-
-Service data attribute | Optional | Description
--|-|-
-`entity_id` | no | Entity ID of automation to turn on. Can be a list. `none` or `all` are also accepted.
-
-### `automation.reload`
-
-This service reloads all automations, stopping any currently active actions in all of them.
-
-### `automation.trigger`
-
-This service will trigger the action of an automation. By default it bypasses any conditions, though that can be changed via the `skip_condition` attribute.
-
-Service data attribute | Optional | Description
--|-|-
-`entity_id` | no | Entity ID of automation to trigger. Can be a list. `none` or `all` are also accepted.
-`skip_condition` | yes | Whether or not the condition will be skipped (defaults to true).
+
diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown
index 394a321224e..22ebd90ef48 100644
--- a/source/_integrations/binary_sensor.template.markdown
+++ b/source/_integrations/binary_sensor.template.markdown
@@ -83,11 +83,11 @@ sensors:
required: true
type: template
delay_on:
- description: The amount of time the template state must be ***met*** before this sensor will switch to `on`.
+ description: The amount of time the template state must be ***met*** before this sensor will switch to `on`. This can also be a template.
required: false
type: time
delay_off:
- description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`.
+ description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`. This can also be a template.
required: false
type: time
{% endconfiguration %}
diff --git a/source/_integrations/blueprint.markdown b/source/_integrations/blueprint.markdown
new file mode 100644
index 00000000000..a895a5d25b7
--- /dev/null
+++ b/source/_integrations/blueprint.markdown
@@ -0,0 +1,14 @@
+---
+title: Blueprints
+description: Instructions on how to use Automation Blueprints with Home Assistant.
+ha_category:
+ - Automation
+ha_release: 2020.12
+ha_quality_scale: internal
+ha_codeowners:
+ - '@home-assistant/core'
+ha_iot_class:
+ha_domain: blueprint
+---
+
+
diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown
index 2cb535982a6..d53fd17aab2 100644
--- a/source/_integrations/broadlink.markdown
+++ b/source/_integrations/broadlink.markdown
@@ -20,7 +20,7 @@ The Broadlink integration allows you to control and monitor Broadlink universal
- Sensors: `e-Sensor`
- Smart Plugs: `SP mini`, `SP mini+`, `SP mini 3`, `SP1`, `SP2`, `SP2-CL`, `SP2-UK/BR/IN`, `SP3`, `SP3-EU`, `SP3S-EU`, `SP3S-US`, `SP4L-EU` and `SP4M-US`
- Universal Remotes: `RM mini`, `RM mini 3`, `RM pro`, `RM pro+`, `RM plus`, `RM4 mini`, `RM4 pro` and `RM4C mini`
-- Wi-Fi Controlled Switches: `SC1`
+- Wi-Fi Controlled Switches: `BG1`, `SC1`
## Configuration
@@ -40,34 +40,67 @@ The entities are divided into three subdomains:
## Remote
-The `remote` entities allow you to control Broadlink universal remotes. You can learn IR codes, send the codes you have learned and send RF codes (use the base64 functionality). These entities are created automatically when you configure a device that has IR/RF capabilities.
+The `remote` entities allow you to learn and send codes with universal remotes. They are created automatically when you configure devices with IR/RF capabilities.
-### Learning IR codes
+### Learning commands
-Use the `remote.learn_command` service to learn IR codes.
+Use `remote.learn_command` to learn IR and RF codes. These codes are grouped by device and stored as commands in the [storage folder](#Learned%20codes%20storage%20location). They can be sent with the `remote.send_command` service later.
-| Service data attribute | Optional | Description |
-| ---------------------- | -------- | ------------------------------------ |
-| `entity_id` | no | ID of the remote. |
-| `device` | no | Name of the device to be controlled. |
-| `command` | no | Names of the commands to be learned. |
-| `alternative` | yes | Are they toggle commands? |
-Example 1: Learn a single command
+| Service data attribute | Optional | Description |
+| ---------------------- | -------- | ------------------------------------- |
+| `entity_id` | no | ID of the remote. |
+| `device` | no | Name of the device to be controlled. |
+| `command` | no | Names of the commands to be learned. |
+| `command_type` | yes | Command type. `ir` (default) or `rf`. |
+| `alternative` | yes | Toggle command indicator. |
+
+#### Learning IR codes
+
+To learn IR codes, call `remote.learn_command` with the device name and command to be learned:
```yaml
# Example configuration.yaml entry
script:
- learn_mute_tv:
+ learn_tv_power:
sequence:
- service: remote.learn_command
data:
entity_id: remote.bedroom
device: television
- command: ok
+ command: power
```
-Example 2: Learn a sequence of commands
+When the LED blinks, point the remote at the Broadlink device and press the button you want to learn.
+
+After this, you can call `remote.send_command` with the same data to send the code. You can also access the code in the storage folder to build a custom IR/RF switch or send it with the prefix `b64:`.
+
+#### Learning RF codes
+
+Learning RF codes takes place in two steps. First call `remote.learn_command` with the `command_type: rf` option:
+
+```yaml
+# Example configuration.yaml entry
+script:
+ learn_car_unlock:
+ sequence:
+ - service: remote.learn_command
+ data:
+ entity_id: remote.garage
+ device: car
+ command: unlock
+ command_type: rf
+```
+
+When the LED blinks for the first time, press and hold the button to sweep the frequency. Then wait for the LED to blink again and press the button a second time to capture the code.
+
+The codes will be stored in the same way as the IR codes. You don't need to specify `command_type` to send them because this information is stored in the first byte of the code.
+
+_Tip:_ Click Notifications in the sidebar after calling the service and follow the instructions to make sure you are pressing the button at the right time.
+
+#### Learning a sequence of commands
+
+In order to streamline the learning process, you may want to provide a list of commands to be learned sequentially:
```yaml
# Example configuration.yaml entry
@@ -85,9 +118,15 @@ script:
- volume down
```
-Example 3: Learn a toggle command
+After calling this service, you will be prompted to press the buttons in the same order as provided. Check the notifications to stay on track and make sure you are pressing the right button at the right time.
-The `alternative` flag is useful for capturing commands in which the same button is used for more than one purpose, such as the power button, which can turn the television on and off.
+#### Learning an alternative code
+
+Some protocols require a toggle bit to distinguish one button press from another. In such cases, learning an alternative code will significantly increase the response rate of the device.
+
+The toggle bit is common when a button is used for multiple purposes, such as the power button, which can turn the television on and off, and the volume button, which can be used with a short press or a long press.
+
+If the code works sometimes, and sometimes it doesn't, you can try to relearn it with the `alternative: true` option:
```yaml
# Example configuration.yaml entry
@@ -102,15 +141,15 @@ script:
alternative: true
```
-In the above example, two codes will be captured for the power command, and they will be sent alternately each time this command is called.
+When the LED blinks for the first time, press the button you want to learn. Then wait for the LED to blink again and press the same button. By doing so, two different codes will be learned for the same command, and they will be sent alternately at each call.
#### Learned codes storage location
-The learned codes are stored in the `/configuration/.storage` folder in a file called `broadlink_remote_xxxxxxxxxxx_codes.json`. You can open this file with a text editor and copy the codes to set up a custom switch, but beware: the files in the .storage folder _should never be edited manually_.
+The learned codes are stored in `/configuration/.storage/` in a JSON file called `broadlink_remote_MACADDRESS_codes`. You can open this file with a text editor and copy the codes to set up [custom IR/RF switches](#Setting%20up%20custom%20IR/RF%20switches) or to send them as [base64 codes](#Sending%20a%20base64%20code), but beware: the files in the .storage folder _should never be edited manually_.
-### Sending IR/RF codes
+### Sending commands
-Use the `remote.send_command` service to send IR/RF codes.
+After learning IR and RF codes with the `remote.learn_command` service, you can use `remote.send_command` to send them. You can also use this service to send base64 codes taken from elsewhere.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ---------------------------------------------------------------------- |
@@ -120,21 +159,25 @@ Use the `remote.send_command` service to send IR/RF codes.
| `num_repeats` | yes | Number of times to repeat the commands. |
| `delay_secs` | yes | Interval in seconds between one send and another. |
-Example 1: Send a single command
+#### Sending a command
+
+To send a command that you've learned, call `remote.send_command` with the device name and the command to be sent:
```yaml
# Example configuration.yaml entry
script:
- mute_tv:
+ tv_power:
sequence:
- service: remote.send_command
data:
entity_id: remote.bedroom
device: television
- command: mute
+ command: power
```
-Example 2: Send a command repeatedly
+#### Sending a command repeatedly
+
+Use `num_repeats:` to send the same command multiple times:
```yaml
# Example configuration.yaml entry
@@ -149,7 +192,9 @@ script:
num_repeats: 20
```
-Example 3: Send a sequence of commands
+#### Sending a sequence of commands
+
+You can provide a list of commands to be sent sequentially:
```yaml
# Example configuration.yaml entry
@@ -165,7 +210,9 @@ script:
- turn off display
```
-Example 4: Send a single base64 code
+#### Sending a base64 code
+
+Sometimes you may want to send a base64 code obtained elsewhere. Use the `b64:` prefix for this:
```yaml
# Example configuration.yaml entry
@@ -178,7 +225,9 @@ script:
command: b64:JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA=
```
-Example 5: Send a sequence of base64 codes
+#### Sending a sequence of base64 codes
+
+You can send a sequence of base64 codes just like normal commands:
```yaml
# Example configuration.yaml entry
@@ -193,7 +242,9 @@ script:
- b64:JgAaABweOR4bHhwdHB4dHRw6HhsdHR0dOTocAA0FAAAAAAAAAAAAAAAAAAA=
```
-Example 6: Mix commands and base64 codes
+#### Mixing commands and base64 codes
+
+You can mix commands and base64 codes:
```yaml
# Example configuration.yaml entry
diff --git a/source/_integrations/bsblan.markdown b/source/_integrations/bsblan.markdown
index b54d79cdf67..d3e20b66212 100644
--- a/source/_integrations/bsblan.markdown
+++ b/source/_integrations/bsblan.markdown
@@ -30,9 +30,8 @@ Menu: **Configuration** -> **Integrations**.
Click on the `+` sign to add an integration and click on **BSBLan**.
Fill in the IP address of the device in your network and, if needed,
-the port number. The default value should be 80.
-For authentication now only passkey is supported.
-Username and password are not supported yet. This will be supported in the next release.
+the port number. The default value should be `80`.
+For authentication passkey is supported and also HTTP authentication with username and password.
After completing the configuration flow, the BSBLan Climate integration will be
available.
@@ -45,4 +44,5 @@ To see a more detailed listing of the reported systems which are successfully us
- [`Elco`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#312-elco)
- [`Other Manufacturers (e.g. Fujitsu, Atlantic, Weishaupt)`](https://1coderookie.github.io/BSB-LPB-LAN_EN/chap03.html#313-other-manufacturers)
-The integration is tested with firmware the stable version `v0.43`.
+The integration is tested with the stable firmware version `1.00`. A newer firmware versions will not work, because the parameters are changed of the specific info that is needed.
+Please use the latest release. [release 1.0](https://github.com/fredlcore/bsb_lan/releases/tag/v1.0)
diff --git a/source/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown
index 1823fb68cae..91d3661b90e 100644
--- a/source/_integrations/cert_expiry.markdown
+++ b/source/_integrations/cert_expiry.markdown
@@ -12,7 +12,7 @@ ha_codeowners:
ha_domain: cert_expiry
---
-The `cert_expiry` integration fetches the certificate from a configured host and displays its expiration in both timestamp and days-to-expiry sensors.
+The `cert_expiry` integration fetches the certificate from a configured host and displays its expiration in a timestamp sensor.
## Configuration
diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown
index 824323274a8..f47d63d3d38 100644
--- a/source/_integrations/demo.markdown
+++ b/source/_integrations/demo.markdown
@@ -30,6 +30,7 @@ Available demo platforms:
- [Mailbox](/integrations/mailbox/) (`mailbox`)
- [Media Player](/integrations/media_player/) (`media_player`)
- [Notification](/integrations/notify/) (`notify`)
+- [Number](/integrations/number/) (`number`)
- [Remote](/integrations/remote/) (`remote`)
- [Sensor](/integrations/sensor/) (`sensor`)
- [Switch](/integrations/switch/) (`switch`)
diff --git a/source/_integrations/edl21.markdown b/source/_integrations/edl21.markdown
index 469634a26a0..33af296d09f 100644
--- a/source/_integrations/edl21.markdown
+++ b/source/_integrations/edl21.markdown
@@ -21,6 +21,7 @@ Compatible transceivers:
Tested smart meters:
+- APATOR Norax 3D (enable InF Mode as described in manual to retrieve full data)
- Iskraemeco MT175 (ISKRA MT175-D2A51-V22-K0t)
## Configuration
@@ -43,3 +44,11 @@ serial_port:
required: true
type: string
{% endconfiguration %}
+
+### ser2net
+
+To use this integration with a remote transceiver you could use [ser2net](https://linux.die.net/man/8/ser2net).
+
+Example `ser2net.conf` configuration file:
+
+> 2001:raw:0:/dev/ttyUSB0:9600 8DATABITS NONE 1STOPBIT
\ No newline at end of file
diff --git a/source/_integrations/fireservicerota.markdown b/source/_integrations/fireservicerota.markdown
new file mode 100644
index 00000000000..7cf918c4df9
--- /dev/null
+++ b/source/_integrations/fireservicerota.markdown
@@ -0,0 +1,224 @@
+---
+title: FireServiceRota
+description: Instructions on how to configure the FireServiceRota integration for Home Assistant.
+ha_category:
+ - Binary Sensor
+ - Sensor
+ - Switch
+ha_iot_class: Cloud Polling
+ha_release: 2020.12
+ha_codeowners:
+ - '@cyberjunky'
+ha_config_flow: true
+ha_domain: fireservicerota
+---
+
+FireServiceRota is a powerful and flexible availability, scheduling and dispatching system for firefighters.
+It's the international brand of the Dutch [BrandweerRooster](https://www.brandweerrooster.nl), which is in use by more than 200 fire stations in The Netherlands.
+
+The FireServiceRota integration provides you real-time information about incidents (emergency calls) from your local fire station and the ability to send a response depending on your duty schedule.
+
+You will need a FireServiceRota or BrandweerRooster account.
+
+
+
+A word of caution: Do not solely rely on this integration for your emergency calls!
+
+
+
+This integration provides the following platforms:
+
+- Sensor: Incoming emergency calls. Metadata contains _among other data_ the location of the incident and a text-to-speech URL. The integration uses a WebSocket client connection with the service to ensure a minimum delay.
+- Binary Sensor: Your current duty status (as scheduled via the FireServiceRota mobile app and/or website).
+- Switch: Enabled for 30 minutes after an emergency call. ‘on’ represents a confirmed response. Use this to automate your emergency call response and save valuable seconds.
+
+On how to write automations using these platform read the 'Advanced Configuration' section below.
+
+## Configuration
+
+1. From Home Assistant, navigate to ‘Configuration’ then ‘Integrations’. Click the plus icon and type/select ‘FireServiceRota’.
+1. Choose your platform `BrandweerRooster` or `FireServiceRota`.
+1. Enter your login credentials.
+
+1. Click the Save button.
+
+## Entities
+
+The following entity types are created:
+
+### Incidents Sensor
+
+This is the main entity of the integration containing the incident message as it's `value`, it has several attributes which are described below.
+
+| Attribute | Description |
+| --------- | ----------- |
+| `trigger` | Type of trigger, `new` or `update`.|
+| `state` | The state of the incident. |
+| `created_at` | Date and time when incident was created.|
+| `message_to_speech_url` | The URL of the mp3 file containing the spoken text of the incident.|
+| `prio` | Priority of the incident, `a1`, `a2`, `b1` or `b2`.|
+| `type` | Type of incident, e.g. `incident_alert`.|
+| `responder_mode` | Modes of response, e.g. `available_in_schedule_is_acknowledgment`.|
+| `can_respond_until` | Date and time until response is accepted.|
+| `latitude` | The Latitude of the incident.|
+| `longitude` | The Longitude of the incident.|
+| `address_type` | Type of address, e.g. `home`.|
+| `formatted_address` | Address in string format.|
+
+### Duty Binary Sensor
+
+This entity reflects the duty you have scheduled, the value can be `on` = on duty, `off` = no duty. When you have no duty the response switch is disabled which means you cannot respond to a call.
+
+| Attribute | Description |
+| --------- | ----------- |
+| `start_time` | Start date and time of duty schedule.|
+| `end_time` | End date and time of duty schedule.|
+| `available` | `true` or `false`.|
+| `active` | `true` or `false`.|
+| `assigned_function_ids` | Function id's, e.g. `540`.|
+| `skill_ids` | Skill id's, e.g. `6, 8`.|
+| `type` | Type, e.g. `standby_duty`.|
+| `assigned function` | Assigned function, e.g. `Chauffeur`.|
+
+### Incident Response Switch
+
+With this switch you can respond to a incident, either by manually controlling the switch via the GUI, or by using an automation action.
+It gets reset to `unknown` value with every incident received. Switching it to `on` means you send a response acknowledgement, switching it back `off` sends a response rejected.
+
+The following attributes are available:
+
+| Attribute | Description |
+| --------- | ----------- |
+| `user_name` | Your username.|
+| `assigned_skill_ids` | Assigned skill ID's.|
+| `responded_at` | Time you responded.|
+| `start_time` | Incident response start time.|
+| `status` | Status of response, e.g., `pending`.|
+| `reported_status` | Reported status, e.g., `shown_up`.|
+| `arrived_at_station` | `true` or `false`.|
+| `available_at_incident_creation` | `true` or `false`.|
+| `active_duty_function_ids` | Active function ID's, e.g., `540`.|
+
+## Advanced Configuration
+
+With Automation you can configure one or more of the following useful actions:
+
+1. Sound an alarm and/or switch on lights when an emergency incident is received.
+1. Use text to speech to play incident details via a media player while getting dressed.
+1. Respond with a response acknowledgment using a door-sensor when leaving the house or by pressing a button to let your teammates know you are underway.
+1. Cast a FireServiceRota dashboard to a Chromecast device. (this requires a Nabu Casa subscription)
+
+These are documented below.
+
+### Example Automation
+
+{% raw %}
+
+```yaml
+automation:
+ - alias: 'Switch on a light when incident is received'
+ trigger:
+ platform: state
+ entity_id: sensor.incidents
+ action:
+ service: light.turn_on
+ entity_id: light.bedroom
+
+ - alias: 'Play TTS incident details when incident is received'
+ trigger:
+ platform: state
+ entity_id: sensor.incidents
+ attribute: message_to_speech_url
+ condition:
+ - condition: not
+ conditions:
+ - condition: state
+ entity_id: sensor.incidents
+ attribute: message_to_speech_url
+ state: None
+ action:
+ - service: media_player.play_media
+ data_template:
+ entity_id: media_player.nest_hub_bedroom
+ media_content_id: >
+ {{ state_attr('sensor.incidents','message_to_speech_url') }}
+ media_content_type: 'audio/mp4'
+
+ - alias: 'Send response acknowledgement when a button is pressed'
+ trigger:
+ platform: state
+ entity_id: switch.response_button
+ action:
+ service: homeassistant.turn_on
+ entity_id: switch.incident_response
+
+ - alias: 'Cast FireServiceRota dashboard to Nest Hub'
+ trigger:
+ platform: homeassistant
+ event: start
+ action:
+ service: cast.show_lovelace_view
+ data:
+ entity_id: media_player.nest_hub_bedroom
+ view_path: fsr
+```
+
+
+### Example Lovelace Dashboard
+
+```yaml
+panel: true
+title: Home
+views:
+ - badges: []
+ cards:
+ - entity: sensor.incidents
+ type: entity
+ - cards:
+ - cards:
+ - default_zoom: 15
+ entities:
+ - entity: sensor.incidents
+ hours_to_show: 0
+ type: map
+ type: vertical-stack
+ - cards:
+ - entities:
+ - entity: sensor.incidents
+ hours_to_show: 1
+ refresh_interval: 0
+ type: history-graph
+ type: vertical-stack
+ type: horizontal-stack
+ - content: |
+ {{ states('sensor.incidents') }}
+ title: Incident
+ type: markdown
+ - entities:
+ - entity: binary_sensor.duty
+ - entity: switch.incident_response
+ type: entities
+ path: fsr
+ title: FireServiceRota
+ type: horizontal-stack
+```
+
+{% endraw %}
+
+### Screenshot
+
+
+
+This screenshot shows what a FireServiceRota dashboard can look like.
+
+## Debugging
+
+The FireServiceRota integration will log additional information about WebSocket incidents received, response and duty status gathered, and other messages when the log level is set to `debug`. Add the relevant lines below to the `configuration.yaml`:
+
+```yaml
+logger:
+ default: info
+ logs:
+ homeassistant.components.fireservicerota: debug
+ pyfireservicerota: debug
+```
diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown
index b9f62f2e38f..fc690ed1fd9 100644
--- a/source/_integrations/history_stats.markdown
+++ b/source/_integrations/history_stats.markdown
@@ -46,9 +46,9 @@ entity_id:
required: true
type: string
state:
- description: The state you want to track.
+ description: The states you want to track.
required: true
- type: string
+ type: [list, string]
name:
description: Name displayed on the frontend. Note that it is used by Home Assistant to generate sensor's `object_id` so it is advisable to choose a unique one and change name for frontend using [customization](/docs/configuration/customizing-devices/#friendly_name) or via [Lovelace](/lovelace/entities/#name).
required: false
diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown
index 5f6e6db3206..a9a52de7e44 100644
--- a/source/_integrations/homekit_controller.markdown
+++ b/source/_integrations/homekit_controller.markdown
@@ -13,6 +13,7 @@ ha_category:
- Sensor
- Fan
- Health
+ - Humidifier
ha_release: 0.68
ha_iot_class: Local Push
ha_config_flow: true
@@ -41,6 +42,7 @@ There is currently support for the following device types within Home Assistant:
- Sensor (HomeKit humidity, temperature, co2 and light level sensors)
- Fan
- Air Quality
+- Humidifier (HomeKit humidifiers and dehumidifiers)
- Automation Triggers (HomeKit 'stateless' accessories like buttons, remotes and doorbells)
diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown
index 490a1a7fc5b..602686baca7 100644
--- a/source/_integrations/hyperion.markdown
+++ b/source/_integrations/hyperion.markdown
@@ -14,41 +14,40 @@ The `hyperion` platform allows you to integrate your
[Hyperion](https://docs.hyperion-project.org/) into Home Assistant. Hyperion is
an open source Ambilight implementation which runs on many platforms.
-NOTE: [Hyperion-NG](https://github.com/hyperion-project/hyperion.ng) is
+**NOTE**: [Hyperion-NG](https://github.com/hyperion-project/hyperion.ng) is
supported, the original [discontinued Hyperion](https://github.com/hyperion-project/hyperion) is not supported by
this integration.
## Configuration
-To use your Hyperion light in your installation, add the following to your `configuration.yaml` file:
+This integration can be configured using the integrations in the
+Home Assistant frontend.
-```yaml
-# Example configuration.yaml entry
-light:
- - platform: hyperion
- host: IP_ADDRESS
-```
+Menu: **Configuration** -> **Integrations**.
-{% configuration %}
- host:
- description: The IP address of the device the Hyperion service is running on.
- required: true
- type: string
- port:
- description: The port used to communicate with the Hyperion service.
- required: false
- type: integer
- default: 19444
- name:
- description: The name of the device used in the frontend.
- required: false
- type: string
- priority:
- description: The priority for color and effects, make sure this is lower then the streaming sources priority in hyperion itself (typically lower than 200 is appropriate).
- required: false
- type: integer
- default: 128
-{% endconfiguration %}
+In most cases, Hyperion servers will be automatically discovered by
+Home Assistant. Those automatically discovered devices are listed
+on the integrations page.
+
+If for some reason Hyperion isn't discovered, it can be added manually.
+
+Click on the `+` sign to add an integration and click on **Hyperion**.
+After completing the configuration flow, the Hyperion integration will be
+available.
+
+### Extra configuration of the integration
+
+All configuration options are offered from the frontend. Choose `Options` under the
+relevant entry on the `Integrations` page.
+
+Options supported:
+- **priority**: The priority for color and effects, make sure this is lower then the streaming sources priority in hyperion itself (typically lower than 200 is appropriate).
+
+## Hyperion Instances
+
+This integration supports multiple Hyperion instances running on a single Hyperion
+server. As instances are added/removed on the Hyperion UI, they will automatically be
+added/removed from Home Assistant.
## Effects
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index 9eef63b5d98..732b07c26d9 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -666,6 +666,10 @@ invert_angle:
required: false
default: false
type: boolean
+device_class:
+ description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend.
+ required: false
+ type: string
{% endconfiguration %}
## Light
diff --git a/source/_integrations/kulersky.markdown b/source/_integrations/kulersky.markdown
new file mode 100644
index 00000000000..d387a200aee
--- /dev/null
+++ b/source/_integrations/kulersky.markdown
@@ -0,0 +1,46 @@
+---
+title: Kuler Sky
+description: Instructions for integrating Brightech Kuler Sky Bluetooth floor lamps with Home Assistant.
+ha_category:
+ - Light
+ha_iot_class: Local Polling
+ha_release: 2020.12
+ha_domain: kulersky
+ha_codeowners:
+ - '@emlove'
+ha_config_flow: true
+---
+
+This integration connects Brightech Kuler Sky floor lamps to Home Assistant.
+
+## Configuration
+
+This integration can be configured using the integrations page in Home Assistant.
+
+Menu: **Configuration** -> **Integrations**.
+
+Click on the `+` sign to add an integration and search for **Kuler Sky**.
+
+The integration will scan for nearby Bluetooth devices, and ask you to select your lamp.
+
+## Additional information for Home Assistant Core on Python environments
+
+This integration requires `pybluez` to be installed. On Debian based installs, run:
+
+```bash
+sudo apt install bluetooth
+```
+
+Before you get started with this integration, please note that:
+
+- Requires access to the Bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information
+
+## Rootless Setup
+
+Normally accessing the Bluetooth stack is reserved for `root`, but running programs that are networked as `root` is a bad security wise. To allow non-root access to the Bluetooth stack we can give Python 3 and `hcitool` the missing capabilities to access the Bluetooth stack. Quite like setting the setuid bit (see [Stack Exchange](https://unix.stackexchange.com/questions/96106/bluetooth-le-scan-as-non-root) for more information).
+
+```bash
+sudo apt-get install libcap2-bin
+sudo setcap 'cap_net_raw,cap_net_admin+eip' `readlink -f \`which python3\``
+sudo setcap 'cap_net_raw+ep' `readlink -f \`which hcitool\``
+```
diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown
index ecad4a4297a..5d5cc80064e 100644
--- a/source/_integrations/lcn.markdown
+++ b/source/_integrations/lcn.markdown
@@ -402,7 +402,7 @@ The [MOTOR_PORT](#ports) values specify which hardware relay or outputs configur
| Constant | Values |
| -------- | ------ |
| LED_STATE | `on`, `off`, `blink`, `flicker` |
-| LOGICOP_STATE | `not`, `or`, `and` |
+| LOGICOP_STATE | `none`, `some`, `all` |
| KEY_STATE | `hit`, `make`, `break`, `dontsend` |
### Keys:
diff --git a/source/_integrations/meraki.markdown b/source/_integrations/meraki.markdown
index 93240e61236..0621343580f 100644
--- a/source/_integrations/meraki.markdown
+++ b/source/_integrations/meraki.markdown
@@ -16,7 +16,7 @@ Use your Meraki AP as device tracker. Note that Meraki will see all devices, not
1. Make sure analytics and Scanning API are both enabled.
1. Make note of the Validator string, which will be used in the `device_tracker` configuration.
1. Click **Add a Post URL**:
- 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki?api_password=YOUR_HASS_PASSWORD`
+ 1. Set the Post URL to `https://YOUR_HOSTNAME/api/meraki`
1. Set the Secret to a randomly generated string, and make note of it for the `device_tracker` configuration.
1. Make sure the API Version is set to `2.0`.
1. Hit **Save** in the bottom right of the page.
diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown
new file mode 100644
index 00000000000..11a3b8b0965
--- /dev/null
+++ b/source/_integrations/motion_blinds.markdown
@@ -0,0 +1,32 @@
+---
+title: Motion Blinds
+description: Instructions on how to integrate Motion Blinds from Coulisse B.V. into Home Assistant.
+ha_category:
+ - Cover
+ha_iot_class: Local Polling
+ha_release: 2020.12
+ha_domain: motion_blinds
+ha_codeowners:
+ - '@starkillerOG'
+ha_config_flow: true
+---
+
+The integration allows you to control [Motion Blinds](https://motion-blinds.com) from [Coulisse B.V.](https://coulisse.com/products/motion).
+
+To add a Motion Bridge to your installation, click Configuration in the sidebar, then click Integrations. Click the + icon in the lower right. Then search for "Motion Blinds" and enter the setup.
+
+You will be asked for the IP address of the Motion Bridge, e.g., 192.168.1.100. Note that a static IP address is required in order for this integration to keep working properly.
+
+## Retrieving the API Key
+
+
+The Motion Blinds API uses a 16 character key that can be retrieved from the official "Motion Blinds" app for [IOS](https://apps.apple.com/us/app/motion-blinds/id1437234324) or [Android](https://play.google.com/store/apps/details?id=com.coulisse.motion).
+
+Open the app, click the 3 dots in the top right corner, go to "settings", go to "Motion APP About", Please quickly tap this "Motion APP About" page 5 times, a popup will appear that gives you the key.
+
+Please note that "-" characters need to be included in the key when providing it to Home Assistant. The key needs to be similar to `12ab345c-d67e-8f`
+
+
+
+
+
diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown
index 08ff9f05e7b..ba76bbaae44 100644
--- a/source/_integrations/nest.markdown
+++ b/source/_integrations/nest.markdown
@@ -6,6 +6,7 @@ ha_category:
- Binary Sensor
- Camera
- Climate
+ - Doorbell
- Sensor
ha_iot_class: Cloud Push
ha_release: 0.7
@@ -238,6 +239,18 @@ All Google Nest Thermostat models have traits exposed from the SDM API. The init
Given a thermostat named `Upstairs` then sensors are created with names such as `sensor.upstairs_temperature` or `sensor.upstairs_humidity`.
+## Automation and Device Triggers
+
+All Google Nest Cam models and the Google Nest Hello Video Doorbell support [Device Triggers](/docs/automation/trigger/#device-triggers) that enable automation in Home Assistant:
+
+- `camera_motion`: Motion detected, when a [CameraMotion](https://developers.google.com/nest/device-access/traits/device/camera-motion#events) event is received.
+- `camera_person`: Person detected, when a [CameraPerson](https://developers.google.com/nest/device-access/traits/device/camera-person#events) event is received.
+- `camera_sound`: Sound detected, when a [CameraSound](https://developers.google.com/nest/device-access/traits/device/camera-sound#events) event is received.
+- `doorbell_chime`: Doorbell pressed, when a [DoorbellChime](https://developers.google.com/nest/device-access/traits/device/doorbell-chime#events) event is received.
+
+See [Automating Home Assistant](/getting-started/automation/) for the getting started guide on automations or the [Automation](/docs/automation/) documentation for full details.
+
+
# Legacy Works With Nest API
This section contains instructions for the Legacy [Works with Nest](https://developers.nest.com/) API.
diff --git a/source/_integrations/number.markdown b/source/_integrations/number.markdown
new file mode 100644
index 00000000000..3d76e187a9e
--- /dev/null
+++ b/source/_integrations/number.markdown
@@ -0,0 +1,20 @@
+---
+title: Number
+description: Instructions on how to manage your Number entities with Home Assistant.
+ha_category:
+ - Number
+ha_release: 2020.12
+ha_quality_scale: internal
+ha_domain: number
+ha_iot_class: ~
+---
+
+Keeps track on `number` entities in your environment, their state, and allows you to control them. This integration allows other integrations to get a value input from user within a range.
+
+### Services
+
+The Number entities registers the following services:
+
+| Service | Data | Description |
+| ------- | ---- | ----------- |
+| `set_value` | `value` `entity_id(s)` `area_id(s)` | Set the value of specific `number` entities
diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown
index a34e8aba161..48f870b7146 100644
--- a/source/_integrations/onvif.markdown
+++ b/source/_integrations/onvif.markdown
@@ -74,7 +74,7 @@ If your ONVIF camera supports PTZ, you will be able to pan, tilt or zoom your ca
| `distance` | Distance coefficient. Sets how much PTZ should be executed in one request. Allowed values: floating point numbers, 0 to 1. Default : 0.1 |
| `speed` | Speed coefficient. Sets how fast PTZ will be executed. Allowed values: floating point numbers, 0 to 1. Default : 0.5 |
| `preset` | PTZ preset profile token. Sets the preset profile token which is executed with GotoPreset. |
-| `move_mode` | PTZ moving mode. Allowed values: `ContinuousMove`, `RelativeMove`, `AbsoluteMove`, `GotoPreset`. Default :`RelativeMove` |
+| `move_mode` | PTZ moving mode. Allowed values: `ContinuousMove`, `RelativeMove`, `AbsoluteMove`, `GotoPreset`, `Stop`. Default :`RelativeMove` |
| `continuous_duration` | Set ContinuousMove delay in seconds before stoping the move. Allowed values: floating point numbers or integer. Default : 0.5 |
If you are running into trouble with this sensor, please refer to the [Troubleshooting section](/integrations/ffmpeg/#troubleshooting).
diff --git a/source/_integrations/ozw.markdown b/source/_integrations/ozw.markdown
index 82b48a8f130..7e3f0e3682b 100644
--- a/source/_integrations/ozw.markdown
+++ b/source/_integrations/ozw.markdown
@@ -17,9 +17,17 @@ This integration allows you to utilize OpenZWave's ozwdaemon to control a Z-Wave
## Requirements
+### Supervisor managed installation
+
+- The official OpenZWave add-on installed available from the add-on store.
+
+### Core installation
+
- MQTT server and the [MQTT integration](/integrations/mqtt/) set up in Home Assistant.
- The [ozwdaemon](https://github.com/OpenZWave/qt-openzwave) installed and running in your network.
- For Home Assistant Supervisor there's an official add-on named OpenZWave available from the add-on store.
+
+### Hardware requirements
+
- Supported Z-Wave dongle compatible with OpenZWave 1.6. See this [list](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules) of controllers. The Z-Wave controller dongle should be connected to the same host as where the ozwdaemon is running.
## Configuration
@@ -136,6 +144,7 @@ This event is fired upon scene activation. The data in the event will vary depen
{
"event_type": "ozw.scene_activated",
"data": {
+ "instance_id": 1,
"node_id": 9,
"scene_id": 1,
"scene_label": "Scene 1",
diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown
index 5a1e7e12b11..5d625b00725 100644
--- a/source/_integrations/recollect_waste.markdown
+++ b/source/_integrations/recollect_waste.markdown
@@ -19,36 +19,13 @@ The `recollect_waste` integration allows you to track the next scheduled waste p
5. Use the place_id and service_id when configuring the sensor.
-## Configuration
-
-To enable this sensor, add the following lines to your `configuration.yaml`:
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: recollect_waste
- place_id: YOUR_PLACE_ID
- service_id: YOUR_SERVICE_ID
-```
-
-{% configuration %}
-place_id:
- description: The place_id used for your neighbourhood.
- required: true
- type: string
-service_id:
- description: The service_id used for your city.
- required: true
- type: string
-name:
- description: Name the sensor.
- required: false
- type: string
- default: recollect_waste
-{% endconfiguration %}
-
The default frequency for pulling data from Recollect Waste is once a day (86400 seconds).
The Recollect Waste sensor uses the Recollect API URL to obtain data not an official API from Recollect. Use at your own risk.
+
+## Configuration
+
+This integration can be configured via the Home Assistant UI by navigating to
+**Configuration** -> **Integrations**.
diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown
index 61a82a08135..910777ecedb 100644
--- a/source/_integrations/rest.markdown
+++ b/source/_integrations/rest.markdown
@@ -104,6 +104,10 @@ headers:
description: The headers for the requests.
required: false
type: [string, list]
+params:
+ description: The query params for the requests.
+ required: false
+ type: [string, list]
json_attributes:
description: A list of keys to extract values from a JSON dictionary result and then set as sensor attributes. If the endpoint returns XML with the "text/xml" or "application/xml" content type, it will automatically be converted to JSON according to this [specification](https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html)
required: false
diff --git a/source/_integrations/salt.markdown b/source/_integrations/salt.markdown
deleted file mode 100644
index 331f193b74a..00000000000
--- a/source/_integrations/salt.markdown
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Salt Fiber Box
-description: Instructions on how to integrate Salt Fiber Box router into Home Assistant.
-ha_category:
- - Presence Detection
-ha_iot_class: Local Polling
-ha_codeowners:
- - '@bjornorri'
-ha_release: 0.106
-ha_domain: salt
----
-
-The `salt` platform offers presence detection by looking at connected devices to a [Salt Fiber Box](https://fiber.salt.ch/en/fiber/equipment/fiber-box) router from [Salt](https://www.salt.ch), which is an internet provider in Switzerland.
-
-
-The router only allows one user session at a time. If you log into the router's web interface, the platform will stop updating until you log out.
-
-
-## Configuration
-
-To use a Salt Fiber Box router in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-device_tracker:
- - platform: salt
- host: 192.168.1.1
- username: admin
- password: YOUR_PASSWORD
-```
-
-{% configuration %}
-host:
- description: The IP address of your router, e.g. `192.168.1.1`.
- required: true
- type: string
-username:
- description: The username used to log into the router's web interface, e.g. `admin`.
- required: true
- type: string
-password:
- description: The password used to log into the router's web interface.
- required: true
- type: string
-{% endconfiguration %}
-
-See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown
new file mode 100644
index 00000000000..60a2fb8b768
--- /dev/null
+++ b/source/_integrations/scene.mqtt.markdown
@@ -0,0 +1,132 @@
+---
+title: "MQTT Scene"
+description: "Instructions on how to integrate MQTT scenes into Home Assistant."
+ha_category:
+ - Scene
+ha_release: 2020.12
+ha_iot_class: Configurable
+ha_domain: mqtt
+---
+
+The `mqtt` scene platform lets you control your MQTT enabled scenes.
+
+## Configuration
+
+To enable a MQTT scene in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+scene:
+ - platform: mqtt
+ command_topic: zigbee2mqtt/living_room_group/set
+```
+
+{% configuration %}
+availability:
+ description: A list of MQTT topics subscribed to receive availability (online/offline) updates. Must not be used together with `availability_topic`.
+ required: false
+ type: list
+ keys:
+ payload_available:
+ description: The payload that represents the available state.
+ required: false
+ type: string
+ default: online
+ payload_not_available:
+ description: The payload that represents the unavailable state.
+ required: false
+ type: string
+ default: offline
+ topic:
+ description: An MQTT topic subscribed to receive availability (online/offline) updates.
+ required: true
+ type: string
+availability_topic:
+ description: The MQTT topic subscribed to receive availability (online/offline) updates. Must not be used together with `availability`.
+ required: false
+ type: string
+command_topic:
+ description: The MQTT topic to publish commands to change the switch state.
+ required: false
+ type: string
+icon:
+ description: Icon for the switch.
+ required: false
+ type: icon
+name:
+ description: The name to use when displaying this switch.
+ required: false
+ type: string
+ default: MQTT Switch
+payload_available:
+ description: The payload that represents the available state.
+ required: false
+ type: string
+ default: online
+payload_not_available:
+ description: The payload that represents the unavailable state.
+ required: false
+ type: string
+ default: offline
+payload_on:
+ description: The payload that represents `on` state. If specified, will be used for both comparing to the value in the `state_topic` (see `value_template` and `state_on` for details) and sending as `on` command to the `command_topic`.
+ required: false
+ type: string
+ default: "ON"
+qos:
+ description: The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages.
+ required: false
+ type: integer
+ default: 0
+retain:
+ description: If the published message should have the retain flag on or not.
+ required: false
+ type: boolean
+ default: false
+unique_id:
+ description: An ID that uniquely identifies this switch device. If two switches have the same unique ID, Home Assistant will raise an exception.
+ required: false
+ type: string
+{% endconfiguration %}
+
+
+
+Make sure that your topic matches exactly. `some-topic/` and `some-topic` are different topics.
+
+
+
+## Examples
+
+In this section, you will find some real-life examples of how to use this sensor.
+
+### Full configuration
+
+The example below shows a full configuration for a switch.
+
+```yaml
+# Example configuration.yaml entry
+switch:
+ - platform: mqtt
+ unique_id: living_room_party_scene
+ name: "Living Room Party Scene"
+ command_topic: "home/living_room/party_scene/set"
+ availability:
+ - topic: "home/living_room/party_scene/available"
+ payload_on: "ON"
+ qos: 0
+ retain: true
+```
+
+### Use with a JSON Payload
+
+The example below shows a configuration using a JSON payload.
+
+```yaml
+# Example configuration.yaml entry
+scene:
+ - platform: mqtt
+ name: Living Room Blue Scene
+ unique_id: living_room_blue_scene
+ command_topic: "home/living_room/set"
+ payload_on: '{"activate_scene": "Blue Scene"}'
+```
diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown
index 6d545187c22..7e85a6ab2e7 100644
--- a/source/_integrations/shelly.markdown
+++ b/source/_integrations/shelly.markdown
@@ -51,8 +51,61 @@ Names are set from the device web page:
- Channel name for single-channel devices can be set in **Settings** >> **CHANNEL NAME**
- Channel name for multi-channel devices can be set in **Settings** >> **CHANNEL NAME** after selecting the channel, by clicking on the channel name.
+## Appliance type
+
+Shelly device relays are added to the Home Assistant by default as `switch` entities. A relay can be added as a `light` entity if the device uses firmware version 1.9.0 or newer and the **Settings** >> **APPLIANCE TYPE** value is set to `light`.
+
+## Events
+
+If the **BUTTON TYPE** of the switch connected to the device is set to `momentary` or `detached switch`, integration fires events when the switch is used. You can use these events in your automations.
+
+### Automation examples
+
+```yaml
+- alias: "Toggle living room light"
+ trigger:
+ platform: event
+ event_type: shelly.click
+ event_data:
+ device: shellyswitch25-AABBCC
+ channel: 1
+ click_type: single
+ action:
+ service: light.toggle
+ entity_id: light.living_room
+
+- alias: "Toggle living room lamp"
+ trigger:
+ platform: event
+ event_type: shelly.click
+ event_data:
+ device: shellyswitch25-AABBCC
+ channel: 2
+ click_type: long
+ action:
+ service: light.toggle
+ entity_id: light.lamp_living_room
+```
+
+### Possible values for `click_type`
+
+| Shelly input event | Click Type |
+| ------------------ | --------------|
+| `S` | `single` |
+| `SS` | `double` |
+| `SSS` | `triple` |
+| `L` | `long` |
+| `SL` | `single_long` |
+| `LS` | `long_single` |
+
+
+
+Not all devices support all input events. You can check on [Shelly API Reference](https://shelly-api-docs.shelly.cloud/) website what types of Shelly input events your device supports.
+
+
+
## Known issues and limitations
- Only supports firmware 1.8 and later
-- Support relays, lights (with brightness), sensors and rollers
-- Support for battery-powered devices is currently very limited
+- Support for RGB devices is limited
+- Support for battery-powered devices is limited
diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown
index b12963cd2f4..d557ba3729e 100644
--- a/source/_integrations/smartthings.markdown
+++ b/source/_integrations/smartthings.markdown
@@ -228,6 +228,7 @@ The SmartThings Sensor platform lets your view devices that have sensor-related
| [`energyMeter`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Energy-Meter) | `energy` |
| [`equivalentCarbonDioxideMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Equivalent-Carbon-Dioxide-Measurement) | `equivalentCarbonDioxideMeasurement` |
| [`formaldehydeMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Formaldehyde-Measurement) | `formaldehydeLevel` |
+| `gasMeter` | `gasMeter`, `meterCalorific`, `meterTime`, and `meterVolume` |
| [`illuminanceMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Illuminance-Measurement) | `illuminance` |
| [`infraredLevel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Infrared-Level) | `infraredLevel` |
| [`lock`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Lock) | `lock` |
@@ -256,7 +257,7 @@ The SmartThings Sensor platform lets your view devices that have sensor-related
| [`thermostatOperatingState`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Operating-State) | `thermostatOperatingState` |
| [`thermostatSetpoint`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Thermostat-Setpoint) | `thermostatSetpoint` |
| [`threeAxis`](https://docs.smartthings.com/en/latest/capabilities-reference.html#three-axis) | `threeAxis` (as discrete sensors `X`, `Y` and `Z`) |
-| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` |
+| [`tvChannel`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tv-Channel) | `tvChannel` and `tvChannelName` |
| [`tvocMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Tvoc-Measurement) | `tvocLevel` |
| [`ultravioletIndex`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Ultraviolet-Index) | `ultravioletIndex` |
| [`voltageMeasurement`](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Voltage-Measurement) | `voltage` |
diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown
index dcf5e9264ea..4922f493d80 100644
--- a/source/_integrations/solarlog.markdown
+++ b/source/_integrations/solarlog.markdown
@@ -23,41 +23,9 @@ The open JSON interface is deactivated by default. To activate the open JSON int
## Configuration
-There are 2 options in configuring the `solarlog` integration:
-
-- Via the Home Assistant user interface where it will let you enter the name and host to connect to your Solar-Log device.
-- Via the Home Assistant `configuration.yaml` file.
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- platform: solarlog
-```
-
-{% configuration %}
-host:
- description: The IP Address or host address of your Solar-Log device.
- required: false
- default: http://solar-log
- type: string
-name:
- description: Let you overwrite the name of the device in the frontend.
- required: false
- default: solarlog
- type: string
-{% endconfiguration %}
-
-### Full configuration sample
-
-A full configuration entry would look like the sample below.
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: solarlog
- name: solarlog
- host: 192.168.1.123
-```
+This integration can be configured via the Home Assistant UI by navigating to
+**Configuration** -> **Integrations**.
+You will have to enter a name that is used as prefix for your sensors and a host to connect to your Solar-Log device.
In case you would like to convert the values, for example, to Wh instead of the default kWh, you can use the [template platform](/integrations/template/).
diff --git a/source/_integrations/srp_energy.markdown b/source/_integrations/srp_energy.markdown
new file mode 100644
index 00000000000..32cb8d874c0
--- /dev/null
+++ b/source/_integrations/srp_energy.markdown
@@ -0,0 +1,18 @@
+---
+title: "SRP Energy"
+description: "How to integrate SRP Energy within Home Assistant."
+ha_category:
+ - Energy
+ha_release: 2020.12
+ha_iot_class: Cloud Polling
+---
+
+The SRP Energy integration shows information from SRP hourly energy usage report for their customers.
+
+You need a username, password, and account ID which you can create at [SRP](https://www.srpnet.com).
+
+## Configuration
+
+Add SRP Energy to your installation from the configuration integration.
+
+Navigate to "Configuration", then "Integrations" and click `+` button in the bottom right. Select `SRP Energy` to start the configuration. After completing the configuration procedure, the SRP Energy integration will be available.
diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown
index 8192c6d8357..9b5db8855a4 100644
--- a/source/_integrations/telegram_bot.markdown
+++ b/source/_integrations/telegram_bot.markdown
@@ -16,8 +16,6 @@ If you don't need to receive messages, you can use the [broadcast](/integrations
## Notification services
-Available services: `send_message`, `send_photo`, `send_document`, `send_location`, `send_sticker`, `edit_message`, `edit_replymarkup`, `edit_caption`, `answer_callback_query`, `delete_message` and `leave_chat`.
-
### Service `telegram_bot.send_message`
Send a notification.
@@ -74,6 +72,26 @@ Send a video.
| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` |
+### Service `telegram_bot.send_voice`
+
+Send a voice message.
+
+| Service data attribute | Optional | Description |
+|---------------------------|----------|--------------------------------------------------|
+| `url` | no | Remote path to a voice message. |
+| `file` | no | Local path to a voice message. |
+| `caption` | yes | The title of the voice message. |
+| `username` | yes | Username for a URL which requires HTTP basic authentication. |
+| `password` | yes | Password for a URL which requires HTTP basic authentication. |
+| `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. |
+| `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. |
+| `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. |
+| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. |
+| `timeout` | yes | Timeout for send voice. Will help with timeout errors (poor internet connection, etc) |
+| `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. `[]` to reset to no custom keyboard. Example: `["/command1, /command2", "/command3"]` |
+| `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` |
+| `message_tag` | yes | Tag for sent message. In `telegram_sent` event data: `{{trigger.event.data.message_tag}}` |
+
### Service `telegram_bot.send_document`
Send a document.
diff --git a/source/_integrations/twinkly.markdown b/source/_integrations/twinkly.markdown
new file mode 100644
index 00000000000..049c6cd7d5f
--- /dev/null
+++ b/source/_integrations/twinkly.markdown
@@ -0,0 +1,28 @@
+---
+title: Twinkly
+description: Instructions on how to integrate Twinkly LED string to Home Assistant.
+ha_category:
+ - Light
+ha_release: 2020.12
+ha_config_flow: true
+ha_domain: twinkly
+ha_iot_class: Local pull
+---
+
+The Twinkly integration allows you to control [Twinkly](https://twinkly.com/) LED string from Home Assistant.
+
+The Twinkly devices does not store the effects locally, they are instead re-sent from the Twinkly application each time.
+This means that this integration does not support to change the LED string effect.
+It only supports to configure the brightness and to turn the device on and off.
+
+## Configuration
+
+You can setup this integration from the Home Assistant user interface:
+
+1. In Home Assistant, go to **Configuration > Integrations**.
+1. At the bottom right, click on the **+** button.
+1. In the list select the **Twinkly** integration.
+1. Configure the host (or IP address) of your twinkly device.
+
+ _If configured using an IP address, on your router / DHCP, you should assign a static IP to your Twinkly device._
+
diff --git a/source/_integrations/ubee.markdown b/source/_integrations/ubee.markdown
deleted file mode 100644
index 6e355a24120..00000000000
--- a/source/_integrations/ubee.markdown
+++ /dev/null
@@ -1,63 +0,0 @@
----
-title: Ubee Router
-description: Instructions on how to integrate Ubee routers into Home Assistant.
-ha_category:
- - Presence Detection
-ha_release: 0.89
-ha_iot_class: Local Polling
-ha_codeowners:
- - '@mzdrale'
-ha_domain: ubee
----
-
-This platform offers presence detection by looking at connected devices to a [Ubee Router](https://www.ubeeinteractive.com/).
-
-To use a Ubee router in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-device_tracker:
- - platform: ubee
- host: ROUTER_IP_ADDRESS
- username: YOUR_ADMIN_USERNAME
- password: YOUR_ADMIN_PASSWORD
-```
-
-{% configuration %}
-model:
- description: Ubee Router model, e.g., `EVW32C-0N`. If omitted, model will be detected automatically.
- required: false
- default: detect
- type: string
-host:
- description: The IP address of your router, e.g., `192.168.1.1`.
- required: true
- type: string
-username:
- description: The username of a user with administrative privileges, usually `admin`.
- required: true
- type: string
-password:
- description: The password for your given admin account.
- required: true
- type: string
-{% endconfiguration %}
-
-Supported models:
-
-- Ambit EVW320B
-- Ambit EVW321B
-- Ubee DDW36C
-- Ubee DVW32CB
-- Ubee EVW3200-Wifi
-- Ubee EVW3226 (UPC)
-- Ubee EVW32C-0N
-
-
-
-This integration uses pyUbee library, which was tested with models listed above. If you have different model of Ubee Router and it doesn't work with this component, please create pyUbee issue to request for support for your model.
-
-
-
-By default, Home Assistant pulls information about connected devices from Ubee router every 5 seconds.
-See the [device tracker integration page](/integrations/device_tracker/) for instructions on how to configure the people to be tracked.
diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown
index a0bc44dc199..9c60a196188 100644
--- a/source/_integrations/uptime.markdown
+++ b/source/_integrations/uptime.markdown
@@ -28,11 +28,6 @@ name:
required: false
type: string
default: Uptime
-unit_of_measurement:
- description: "Units for uptime measurement in either `days`, `hours` or `minutes`."
- required: false
- type: string
- default: days
{% endconfiguration %}
## Example
@@ -42,5 +37,4 @@ unit_of_measurement:
sensor:
- platform: uptime
name: Time Online
- unit_of_measurement: hours
````
diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown
index 0474017c858..ddd52292143 100644
--- a/source/_integrations/utility_meter.markdown
+++ b/source/_integrations/utility_meter.markdown
@@ -39,7 +39,7 @@ source:
required: true
type: string
cycle:
- description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly`, `bimonthly`, `quarterly` and `yearly`. Cycle value `bimonthly` will reset the counter once in two months.
+ description: How often to reset the counter. Valid values are `quarter-hourly`, `hourly`, `daily`, `weekly`, `monthly`, `bimonthly`, `quarterly` and `yearly`. Cycle value `bimonthly` will reset the counter once in two months.
required: true
type: string
offset:
diff --git a/source/_integrations/vasttrafik.markdown b/source/_integrations/vasttrafik.markdown
index 291967d3c1e..2f9c9842b45 100644
--- a/source/_integrations/vasttrafik.markdown
+++ b/source/_integrations/vasttrafik.markdown
@@ -43,11 +43,11 @@ departures:
required: false
type: string
from:
- description: The start station.
+ description: The start station name or ID.
required: true
type: string
heading:
- description: Direction of the traveling.
+ description: The destination station name or ID.
required: false
type: string
lines:
@@ -80,3 +80,33 @@ sensor:
- GRÖN
delay: 10
```
+
+## Solving incorrect selected station problems
+
+It is possible to use the full name of the station for the from/heading values, e.g., Musikvägen, Göteborg.
+
+In cases where the wrong station is being selected, it is possible to provide the station ID instead. To do this you first need to retrieve the station ID either via Västtrafik's [API-konsole](https://developer.vasttrafik.se/portal/#/api/Reseplaneraren/v2/landerss) or with `curl`.
+
+To retrieve the ID using `curl`:
+
+1. Login into the Västtrafik API and go to "Hantera nycklar" next to the application you created for Home Assistant.
+2. Make a copy of your AccessToken and execute the following `curl` command, replacing "" and "" as necessary:
+
+ ```shell
+ curl -H "Authorization: Bearer " "https://api.vasttrafik.se/bin/rest.exe/v2/location.name?input=&format=json
+ ```
+
+3. In the output locate the key called "StopLocation", and under this key, you will find a list of stops. Copy the ID for your desired stop and use it in your configuration.
+
+```yaml
+# Example configuration.yaml entry using station ID as departure and station name as destination
+sensor:
+ - platform: vasttrafik
+ key: YOUR_API_KEY
+ secret: YOUR_API_SECRET
+ departures:
+ - name: To the Iron Square \o/
+ from: 9021014004870000
+ heading: Järntorget
+ delay: 0
+```
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index a26a4b53277..8d59e94989e 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -24,7 +24,7 @@ The `xiaomi_miio` integration supports the following devices:
- [Xiaomi Gateway](#xiaomi-gateway)
- [Xiaomi device tracker (Xiaomi Mi WiFi Repeater 2)](#xiaomi-device-tracker-xiaomi-mi-wifi-repeater-2))
-- [Xiaomi Air Purifier](#xiaomi-air-purifier)
+- [Xiaomi Air Purifier and Humidifier](#xiaomi-air-purifier-and-humidifier)
- [Xiaomi Air Quality Index Monitor](#xiaomi-air-quality-index-monitor)
- [Xiaomi Mi Air Quality Monitor](#xiaomi-mi-air-quality-monitor)
- [Xiaomi IR Remote](#xiaomi-ir-remote)
@@ -109,7 +109,7 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu
### iOS
1. Configure the robot with the Mi Home app. Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. Note that the new RoboRock app is currently not supported for this method.
-2. Using iTunes, create an unencrypted backup of your iPhone. Since macOS 10.15 there is no iTunes app. Use Finder instead - after connecting your iOS device you should see it in left menu of Finder window.
+2. Using iTunes, create an unencrypted backup of your iPhone. Since macOS 10.15 there is no iTunes app. Use Finder instead - after connecting your iOS device you should see it in left menu of Finder window.
3. Install [iBackup Viewer](https://www.imactools.com/iphonebackupviewer/), open it, and open your backup.
4. Open the "Raw Data" module.
5. Navigate to `com.xiaomi.mihome`.
@@ -126,7 +126,7 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu
-- Execute to retrieve token for Smart Powerstrip
SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%powerstrip%"
-
+
-- Execute to retrieve token for Smart Plug
SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%plug%"
```
@@ -324,7 +324,7 @@ token:
type: string
{% endconfiguration %}
-## Xiaomi Air Purifier
+## Xiaomi Air Purifier and Humidifier
The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier, Air Humidifier and Air Fresh.
@@ -349,6 +349,7 @@ Supported devices:
| Air Purifier 3H (2019) | zhimi.airpurifier.mb3 | |
| Air Humidifier | zhimi.humidifier.v1 | |
| Air Humidifier CA1 | zhimi.humidifier.ca1 | |
+| Air Humidifier CA4 | zhimi.humidifier.ca4 | |
| Air Humidifier CB1 | zhimi.humidifier.cb1 | |
| Air Fresh VA2 | zhimi.airfresh.va2 | |
@@ -599,6 +600,34 @@ This model uses newer MiOT communication protocol.
- `depth`
- `dry`
+### Air Humidifier CA (zhimi.humidifier.ca4)
+
+- On, Off
+- Operation modes (auto, low, mid, high)
+- Buzzer (on, off)
+- Child lock (on, off)
+- LED brightness (off, dim, bright)
+- Target humidity (30 - 80)
+- Dry mode (on, off)
+- Motor speed rpm (200 - 2000)
+- Attributes
+ - `model`
+ - `temperature`
+ - `humidity`
+ - `mode`
+ - `buzzer`
+ - `child_lock`
+ - `target_humidity`
+ - `led_brightness`
+ - `use_time`
+ - `actual_speed`
+ - `button_pressed`
+ - `dry`
+ - `fahrenheit`
+ - `motor_speed`
+ - `power_time`
+ - `water_level`
+
### Air Humidifier CB (zhimi.humidifier.cb1)
- On, Off
@@ -852,13 +881,22 @@ Turn the dry mode off.
|---------------------------|----------|---------------------------------------------------------|
| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. |
+### Service `xiaomi_miio.fan_set_motor_speed` (Air Humidifier CA4)
+
+Set motor speed RPM.
+
+| Service data attribute | Optional | Description |
+|---------------------------|----------|----------------------------------------------------------|
+| `entity_id` | no | Only act on a specific Xiaomi miIO fan entity. |
+| `motor_speed` | no | Motor speed RPM. Allowed values are between 200 and 2000 |
+
### Troubleshooting `Unable to find device` error messages
Check if the device is in the same subnet as the Home Assistant instance. Otherwise, you should configure your router/firewall to put this device in the same VLAN as the Home Assistant instance.
If it's not possible to use VLANs for some reason, your last resort may be using NAT translation, between the IPs.
-## Xiaomi Air Quality Index Monitor
+## Xiaomi Air Quality Index Monitor
The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monitor (PM2.5) and reporting the air quality index.
@@ -1317,7 +1355,7 @@ Clean the specified segment/room. A room is identified by a number. Instructions
| Service data attribute | Optional | Description |
|---------------------------|----------|-------------------------------------------------------|
-| `entity_id` | no | Only act on a specific robot |
+| `entity_id` | no | Only act on a specific robot |
| `segments` | no | List of segment numbers or one single segment number. |
Example of `xiaomi_miio.vacuum_clean_segment` use:
diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown
deleted file mode 100644
index b12191a7453..00000000000
--- a/source/_integrations/yessssms.markdown
+++ /dev/null
@@ -1,96 +0,0 @@
----
-title: yesss! SMS
-description: Instructions on how to add Yesss-SMS notifications to Home Assistant.
-ha_category:
- - Notifications
-ha_release: 0.57
-ha_codeowners:
- - '@flowolf'
-ha_domain: yessssms
-ha_iot_class: Cloud Push
----
-
-The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) and others to send SMS via their web-site.
-
-Currently some MVNOs (mobile virtual network operators), in the A1 network, that use the kontomanager.at interface work. These are currently (as of version 0.4.0 of [YesssSMS](https://pypi.org/project/YesssSMS/)):
-* YESSS
-* billitel
-* EDUCOM
-* fenercell
-* georg
-* goood
-* kronemobile
-* kuriermobil
-* SIMfonie
-* teleplanet
-* WOWWW
-* yooopi
-
-
-
-
-Regular charges apply and a contract or prepaid plan is needed.
-
-
-
-Do not use this for high frequency notifications. The web-SMS page is rate limited and sending more than 45 SMS/h might get you blocked.
-
-
-You can send to any number, but your phone number will appear as sender.
-
-To enable SMS notifications in your installation, add the following to your `configuration.yaml` file:
-
-```yaml
-# Example configuration.yaml entry
-notify:
- - name: NOTIFIER_NAME
- platform: yessssms
- username: YOUR_PHONE_NUMBER
- password: YOUR_PASSWORD
- recipient: PHONE_NUMBER_TO_NOTIFY
-```
-
-{% configuration %}
-name:
- description: "The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME."
- required: false
- type: string
- default: notify
-username:
- description: This is your login name (usually your phone number, but in some cases it could be your e-mail). Veryfy that you can use your credentials on the Yesss.at website.
- required: true
- type: string
-password:
- description: This is the password you use to login to Yesss.at.
- required: true
- type: string
-recipient:
- description: This is the phone number you want to send the SMS notification to.
- required: true
- type: string
-provider:
- description: Possible values are `yesss`, `billitel`, `educom`, `fenercell`, `georg`, `goood`, `kronemobile`, `kuriermobil`, `simfonie`, `teleplanet`, `wowww` and `yooopi`.
- required: false
- default: "YESSS"
- type: string
-{% endconfiguration %}
-
-For an alternative provider you would set the `provider` option. An example configuration for the `educom` provider with SMS to yourself would be:
-```yaml
-# Example configuration.yaml entry
-notify:
- - name: sms_to_self
- platform: yessssms
- username: "+436641234567"
- password: tops3cr3tpass0rd
- recipient: "+436641234567"
- provider: educom
-```
-
-
-Verify that your credentials work on the website of your provider.
-Using the wrong credentials three times in a row will get you suspended for one hour.
-
-
-Home Assistant will check your credentials on startup. Check the logs for errors.
-If the login credentials are not valid, re-check the credentials and restart Home Assistant.
diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown
index e8f786460d8..5208886dacd 100644
--- a/source/_posts/2017-11-04-release-57.markdown
+++ b/source/_posts/2017-11-04-release-57.markdown
@@ -72,7 +72,7 @@ Okay, one more highlight before we'll let you check out the changelog. Contribut
- Support for NO-IP ([@fabaff] - [#10155]) ([no_ip docs]) (new-platform)
- Linode ([@ryanm101] - [#9936]) ([linode docs]) ([binary_sensor.linode docs]) (new-platform)
- Nederlandse spoorwegen ([@b10m] - [#10136]) ([sensor.nederlandse_spoorwegen docs]) (new-platform)
-- added Yesss SMS platform ([@flowolf] - [#10177]) ([notify.yessssms docs]) (new-platform)
+- added Yesss SMS platform ([@flowolf] - [#10177]) (new-platform)
- Add Sytadin Traffic component ([@gautric] - [#9524]) (new-platform)
- Added new Clickatell SMS messaging Notify Platform ([@davlloyd] - [#9775]) ([notify.clickatell docs]) (new-platform)
- Add Random binary sensor ([@fabaff] - [#10164]) ([binary_sensor.random docs]) (new-platform)
@@ -209,7 +209,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Nederlandse spoorwegen ([@b10m] - [#10136]) ([sensor.nederlandse_spoorwegen docs]) (new-platform)
- Added capability to pass a filename to the downloader component ([@tchellomello] - [#10059]) ([downloader docs])
- Limits of the favorite level updated. Values between 0 and 16 will be accepted. ([@syssi] - [#10186]) ([fan.xiaomi_miio docs])
-- added Yesss SMS platform ([@flowolf] - [#10177]) ([notify.yessssms docs]) (new-platform)
+- added Yesss SMS platform ([@flowolf] - [#10177]) (new-platform)
- Add Sytadin Traffic component ([@gautric] - [#9524]) (new-platform)
- media_title property now returns current source ([@etsinko] - [#10120]) ([media_player.monoprice docs])
- Added new Clickatell SMS messaging Notify Platform ([@davlloyd] - [#9775]) ([notify.clickatell docs]) (new-platform)
@@ -585,7 +585,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[no_ip docs]: /integrations/no_ip/
[notify.clickatell docs]: /integrations/clickatell
[notify.sendgrid docs]: /integrations/sendgrid
-[notify.yessssms docs]: /integrations/yessssms
[panel_custom docs]: /integrations/panel_custom/
[persistent_notification docs]: /integrations/persistent_notification/
[plant docs]: /integrations/plant/
diff --git a/source/_posts/2019-04-24-release-92.markdown b/source/_posts/2019-04-24-release-92.markdown
index f86136fef7a..84755f12c19 100644
--- a/source/_posts/2019-04-24-release-92.markdown
+++ b/source/_posts/2019-04-24-release-92.markdown
@@ -405,7 +405,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Catch connection reset ([@balloob] - [#22982]) ([websocket_api docs])
- Stream support for Netatmo cameras ([@cgtobi] - [#22952]) ([netatmo docs])
- Google Assistant: Migrate light setting trait to use HSV color spectrum ([@balloob] - [#22980]) ([google_assistant docs]) (breaking change)
-- Bump pyubee version to support more models and detect model automatically ([@mzdrale] - [#22450]) ([ubee docs])
+- Bump pyubee version to support more models and detect model automatically ([@mzdrale] - [#22450])
- Load requirements and dependencies from manifests. Fallback to current `REQUIREMENTS` and `DEPENDENCIES` ([@rohankapoorcom] - [#22717]) (breaking change)
- Add device HmIP-MIOB to Homematic IP Cloud ([@SukramJ] - [#22975]) ([homematicip_cloud docs])
- Prevent the projector to toogle on/off ([@stbkde] - [#22985]) ([epson docs])
@@ -1081,7 +1081,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[trend docs]: /integrations/trend/
[tts docs]: /integrations/tts/
[twilio docs]: /integrations/twilio/
-[ubee docs]: /integrations/ubee/
[version docs]: /integrations/version/
[water_heater docs]: /integrations/water_heater/
[websocket_api docs]: /integrations/websocket_api/
diff --git a/source/_posts/2019-05-16-release-93.markdown b/source/_posts/2019-05-16-release-93.markdown
index 3317d19f38c..94c7bc04629 100644
--- a/source/_posts/2019-05-16-release-93.markdown
+++ b/source/_posts/2019-05-16-release-93.markdown
@@ -282,7 +282,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Fix non-syncthru supporting printers ([@nielstron] - [#21482]) ([syncthru docs])
- Add support for a wider variety of EnOcean devices ([@bdurrer] - [#22052]) ([enocean docs])
- Convert Pollen.com sensor into IQVIA component ([@bachya] - [#22986]) ([iqvia docs]) ([pollen docs]) (breaking change) (new-integration) (new-platform)
-- Upgrade to pyubee==0.6 ([@StevenLooman] - [#23355]) ([ubee docs])
+- Upgrade to pyubee==0.6 ([@StevenLooman] - [#23355])
- Fix tox.ini lint target ([@ViViDboarder] - [#23359])
- Add media player external url ([@balloob] - [#23337]) ([media_player docs])
- Fix race condition. ([@mitchellrj] - [#21244]) ([plex docs])
@@ -859,7 +859,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[tplink_lte docs]: /integrations/tplink_lte/
[traccar docs]: /integrations/traccar/
[trend docs]: /integrations/trend/
-[ubee docs]: /integrations/ubee/
[upc_connect docs]: /integrations/upc_connect/
[upnp docs]: /integrations/upnp/
[velux docs]: /integrations/velux/
diff --git a/source/_posts/2019-06-26-release-95.markdown b/source/_posts/2019-06-26-release-95.markdown
index 10582a641bf..f6de57b1405 100644
--- a/source/_posts/2019-06-26-release-95.markdown
+++ b/source/_posts/2019-06-26-release-95.markdown
@@ -301,7 +301,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Add websock command to query device for triggers ([@emontnemery] - [#24044]) ([automation docs]) ([light docs])
- Uber API is going away on June 13, 2019, remove component ([@robbiet480] - [#24468]) (breaking change)
- Use met.no instead of yr.no in default config ([@thomasloven] - [#24470])
-- Bump pyubee to 0.7 to support more models ([@mzdrale] - [#24477]) ([ubee docs])
+- Bump pyubee to 0.7 to support more models ([@mzdrale] - [#24477])
- Somfy open api ([@tetienne] - [#19548]) ([somfy docs]) (new-platform)
- Add APRS device tracker component ([@PhilRW] - [#22469]) ([aprs docs]) (new-platform)
- Add Linky sensors : yesterday + months + years ([@Quentame] - [#23726]) (breaking change)
@@ -780,7 +780,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[totalconnect docs]: /integrations/totalconnect/
[traccar docs]: /integrations/traccar/
[tradfri docs]: /integrations/tradfri/
-[ubee docs]: /integrations/ubee/
[unifi docs]: /integrations/unifi/
[velbus docs]: /integrations/velbus/
[velux docs]: /integrations/velux/
diff --git a/source/_posts/2019-10-10-release-100.markdown b/source/_posts/2019-10-10-release-100.markdown
index f50b8720265..a9e3c68e4e6 100644
--- a/source/_posts/2019-10-10-release-100.markdown
+++ b/source/_posts/2019-10-10-release-100.markdown
@@ -471,7 +471,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Fix possible OpenUV exception due to missing data ([@bachya] - [#26958]) ([openuv docs])
- Update pythonegardia to 1.0.40 ([@SneakSnackSnake] - [#27009]) ([egardia docs])
- Improve ecobee service schemas ([@marthoc] - [#26955]) ([ecobee docs])
-- Add more providers, bump yessssms version to 0.4.1 ([@flowolf] - [#26874]) ([yessssms docs])
+- Add more providers, bump yessssms version to 0.4.1 ([@flowolf] - [#26874])
- Upgrade youtube_dl to 2019.09.28 ([@BKPepe] - [#27031]) ([media_extractor docs])
- Add availability_template to Template Cover platform ([@grillp] - [#26509]) ([template docs])
- Add availability_template to Template Binary Sensor platform ([@grillp] - [#26510]) ([template docs])
@@ -1001,7 +1001,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[xbox_live docs]: /integrations/xbox_live/
[xiaomi_aqara docs]: /integrations/xiaomi_aqara/
[yandex_transport docs]: /integrations/yandex_transport/
-[yessssms docs]: /integrations/yessssms/
[zha docs]: /integrations/zha/
[zone docs]: /integrations/zone/
[zwave docs]: /integrations/zwave/
diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown
index 4a795095b65..ea96afa1c48 100644
--- a/source/_posts/2019-12-11-release-103.markdown
+++ b/source/_posts/2019-12-11-release-103.markdown
@@ -556,7 +556,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- move service constants to const.py, move custom services to monoprice domain ([@raman325] - [#29099]) ([monoprice docs]) (breaking change)
- Move imports to top for uptimerobot ([@springstan] - [#29103]) ([uptimerobot docs])
- Move imports to top for twilio_call ([@springstan] - [#29104]) ([twilio_call docs])
-- Move imports to top for ubee ([@springstan] - [#29105]) ([ubee docs])
+- Move imports to top for ubee ([@springstan] - [#29105])
- Move flexit imports at top-level ([@Quentame] - [#29097]) ([flexit docs])
- Move flunearyou imports at top-level ([@Quentame] - [#29096]) ([flunearyou docs])
- Move folder_watcher imports at top-level ([@Quentame] - [#29095]) ([folder_watcher docs])
@@ -1771,7 +1771,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[tts docs]: /integrations/tts/
[tuya docs]: /integrations/tuya/
[twilio_call docs]: /integrations/twilio_call/
-[ubee docs]: /integrations/ubee/
[unifi docs]: /integrations/unifi/
[unifi_direct docs]: /integrations/unifi_direct/
[universal docs]: /integrations/universal/
diff --git a/source/_posts/2020-01-15-release-104.markdown b/source/_posts/2020-01-15-release-104.markdown
index b09976634eb..16037541a7a 100644
--- a/source/_posts/2020-01-15-release-104.markdown
+++ b/source/_posts/2020-01-15-release-104.markdown
@@ -723,7 +723,7 @@ Make sure to fill in all fields of the issue template, that is helping us a lot!
- Sort imports according to PEP8 for components starting with "N" ([@basnijholt] - [#29773])
- Sort imports according to PEP8 for components starting with "W" ([@basnijholt] - [#29781])
- Sort imports according to PEP8 for components starting with "Q" ([@basnijholt] - [#29785])
-- Sort imports according to PEP8 for components starting with "Y" ([@basnijholt] - [#29783]) ([yale_smart_alarm docs]) ([yamaha docs]) ([yamaha_musiccast docs]) ([yandex_transport docs]) ([yeelightsunflower docs]) ([yessssms docs])
+- Sort imports according to PEP8 for components starting with "Y" ([@basnijholt] - [#29783]) ([yale_smart_alarm docs]) ([yamaha docs]) ([yamaha_musiccast docs]) ([yandex_transport docs]) ([yeelightsunflower docs])
- Sort imports according to PEP8 for components starting with "X" ([@basnijholt] - [#29782]) ([x10 docs]) ([xbox_live docs]) ([xeoma docs]) ([xiaomi_tv docs]) ([xmpp docs]) ([xs1 docs])
- Move imports to top for homekit ([@springstan] - [#29560]) ([homekit docs])
- Cleanup removed component ([@pvizeli] - [#29788])
@@ -2083,7 +2083,6 @@ Make sure to fill in all fields of the issue template, that is helping us a lot!
[yandex_transport docs]: /integrations/yandex_transport/
[yeelight docs]: /integrations/yeelight/
[yeelightsunflower docs]: /integrations/yeelightsunflower/
-[yessssms docs]: /integrations/yessssms/
[zamg docs]: /integrations/zamg/
[zengge docs]: /integrations/zengge/
[zeroconf docs]: /integrations/zeroconf/
diff --git a/source/_posts/2020-02-05-release-105.markdown b/source/_posts/2020-02-05-release-105.markdown
index 1101061275d..a60f6f205c7 100644
--- a/source/_posts/2020-02-05-release-105.markdown
+++ b/source/_posts/2020-02-05-release-105.markdown
@@ -765,7 +765,7 @@ Hats over your heart for these shuttered integrations. Pour one out for:
- Search: Add search to default config and don't resolve area ([@bramkragten] - [#30762]) ([default_config docs]) ([search docs])
- Allow input_* and timer component setup without config ([@Adminiuga] - [#30772]) ([input_boolean docs]) ([input_number docs]) ([input_select docs]) ([input_text docs]) ([timer docs])
- Add Config Flow support, Device Registry support, available property to vizio component ([@raman325] - [#30653]) ([vizio docs]) (breaking change)
-- Update pyubee to 0.8 ([@mzdrale] - [#30785]) ([ubee docs])
+- Update pyubee to 0.8 ([@mzdrale] - [#30785])
- Add support for vacuums to Alexa. ([@ochlocracy] - [#30764]) ([alexa docs])
- Mark hide_entity deprecated in automation integration ([@frenck] - [#30799]) ([automation docs]) (breaking change)
- Bump librouteros to 3.0.0 ([@springstan] - [#30800]) ([mikrotik docs])
@@ -1544,7 +1544,6 @@ Hats over your heart for these shuttered integrations. Pour one out for:
[tod docs]: /integrations/tod/
[tplink docs]: /integrations/tplink/
[tuya docs]: /integrations/tuya/
-[ubee docs]: /integrations/ubee/
[velbus docs]: /integrations/velbus/
[versasense docs]: /integrations/versasense/
[vicare docs]: /integrations/vicare/
diff --git a/source/_posts/2020-02-26-release-106.markdown b/source/_posts/2020-02-26-release-106.markdown
index 1dea56edb57..7185e79ce5b 100644
--- a/source/_posts/2020-02-26-release-106.markdown
+++ b/source/_posts/2020-02-26-release-106.markdown
@@ -121,7 +121,7 @@ We have made some changes to Lovelace that might impact your custom card, so be
## New Integrations
-- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) ([salt docs]) (new-integration)
+- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) (new-integration)
- Add GDACS feed integration ([@exxamalte] - [#31235]) ([gdacs docs]) (new-integration)
- Add Minecraft Server Integration ([@elmurato] - [#30992]) ([minecraft_server docs]) (new-integration)
- Add MELCloud integration ([@vilppuvuorinen] - [#30712]) ([melcloud docs]) (new-integration)
@@ -487,7 +487,7 @@ Added a Coronavirus integration to help monitor the ongoing epidemic. [More info
- Catch device not found in device automations ([@balloob] - [#31401]) ([device_automation docs])
- Upgrade numpy to 1.18.1 ([@fabaff] - [#31411]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs])
- Update pyhomematic to 0.1.64 ([@danielperna84] - [#31406]) ([homematic docs])
-- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) ([salt docs]) (new-integration)
+- Add Salt Fiber Box device tracker ([@bjornorri] - [#30986]) (new-integration)
- Upgrade alpha_vantage to 2.1.3 ([@fabaff] - [#31388]) ([alpha_vantage docs])
- Search specific train in Nederlandse Spoorwegen ([@gurbyz] - [#28898]) ([nederlandse_spoorwegen docs])
- Enable SUPPORT_VOLUME_STEP ([@Cloudenius] - [#31023]) ([pioneer docs])
@@ -1194,7 +1194,6 @@ Added a Coronavirus integration to help monitor the ongoing epidemic. [More info
[roku docs]: /integrations/roku/
[rpi_gpio_pwm docs]: /integrations/rpi_gpio_pwm/
[sabnzbd docs]: /integrations/sabnzbd/
-[salt docs]: /integrations/salt/
[samsungtv docs]: /integrations/samsungtv/
[scrape docs]: /integrations/scrape/
[script docs]: /integrations/script/
diff --git a/source/_posts/2020-03-18-release-107.markdown b/source/_posts/2020-03-18-release-107.markdown
index 66ac327b93f..f12d7444474 100644
--- a/source/_posts/2020-03-18-release-107.markdown
+++ b/source/_posts/2020-03-18-release-107.markdown
@@ -746,7 +746,7 @@ Experiencing issues introduced by this release? Please report them in our [issue
- Bump pyicloud to 0.9.3 ([@Quentame] - [#32582]) ([icloud docs])
- Upgrade youtube_dl to version 2020.03.08 ([@BKPepe] - [#32581]) ([media_extractor docs])
- Bump denonavr to 0.8.0 ([@scarface-4711] - [#32578]) ([denonavr docs])
-- Add support for Ubee Router DVW32CB ([@seanvictory] - [#32406]) ([ubee docs])
+- Add support for Ubee Router DVW32CB ([@seanvictory] - [#32406])
- Bump rflink to 0.0.52 ([@jeyrb] - [#32588]) ([rflink docs])
- Correct grammatical error in CUSTOM_WARNING ([@davet2001] - [#32569])
- Add Steam game ID and screenshot paths as attributes ([@i00] - [#32005]) ([steam_online docs])
@@ -1441,7 +1441,6 @@ Experiencing issues introduced by this release? Please report them in our [issue
[transmission docs]: /integrations/transmission/
[tts docs]: /integrations/tts/
[twitch docs]: /integrations/twitch/
-[ubee docs]: /integrations/ubee/
[unifi docs]: /integrations/unifi/
[upnp docs]: /integrations/upnp/
[utility_meter docs]: /integrations/utility_meter/
diff --git a/source/_posts/2020-04-08-release-108.markdown b/source/_posts/2020-04-08-release-108.markdown
index ed2a6a4b9d3..cf63cf72652 100644
--- a/source/_posts/2020-04-08-release-108.markdown
+++ b/source/_posts/2020-04-08-release-108.markdown
@@ -651,7 +651,7 @@ These integrations have been removed. The websites for both have changed, causin
- Type hint improvements ([@scop] - [#32905]) ([directv docs]) ([directv docs]) ([gtfs docs]) ([here_travel_time docs]) ([remote docs]) ([switch docs]) ([switcher_kis docs]) ([vizio docs]) ([zone docs])
- Small tweaks ([@dshokouhi] - [#32946]) ([obihai docs])
- Resolve unexpected exception caused by sinch error_code being a string ([@bendikrb] - [#32929]) ([sinch docs])
-- Bump pyubee to 0.10 to support more Ubee routers ([@mzdrale] - [#32934]) ([ubee docs])
+- Bump pyubee to 0.10 to support more Ubee routers ([@mzdrale] - [#32934])
- Add support for homekit valve accessories to homekit_controller ([@Jc2k] - [#32937]) ([homekit_controller docs])
- Remove deprecated features from MQTT platforms ([@emontnemery] - [#32909]) ([mqtt docs]) (breaking change)
- Add pending to template alarm ([@MatthewFlamm] - [#31614]) ([template docs])
@@ -1450,7 +1450,6 @@ These integrations have been removed. The websites for both have changed, causin
[tplink docs]: /integrations/tplink/
[tts docs]: /integrations/tts/
[twentemilieu docs]: /integrations/twentemilieu/
-[ubee docs]: /integrations/ubee/
[unifi docs]: /integrations/unifi/
[velbus docs]: /integrations/velbus/
[version docs]: /integrations/version/
diff --git a/source/_posts/2020-10-28-release-117.markdown b/source/_posts/2020-10-28-release-117.markdown
index f63ea27ed91..7a5aa87bcf4 100644
--- a/source/_posts/2020-10-28-release-117.markdown
+++ b/source/_posts/2020-10-28-release-117.markdown
@@ -1088,7 +1088,7 @@ is automatically imported after upgrading and can be safely removed afterward.
- Use reference strings in Hunter Douglas PowerView ([@SNoof85] - [#41291]) ([hunterdouglas_powerview docs])
- Indicate to user that remote was turned off when call was attempted ([@elupus] - [#40715]) ([broadlink docs])
- Fix reported temperatures in Maxcube ([@Bre77] - [#41259]) ([maxcube docs])
-- Improve yessssms test notify ([@sycx2] - [#41283]) ([yessssms docs])
+- Improve yessssms test notify ([@sycx2] - [#41283])
- Use reference strings in ambient_station ([@SNoof85] - [#41276]) ([ambient_station docs])
- Don't use asynctest directly ([@balloob] - [#41306])
- Rewrite sigfox unittest tests to pytest ([@frangiz] - [#41302]) ([sigfox docs])
@@ -2866,7 +2866,6 @@ is automatically imported after upgrading and can be safely removed afterward.
[xiaomi_aqara docs]: /integrations/xiaomi_aqara/
[xiaomi_miio docs]: /integrations/xiaomi_miio/
[yamaha_musiccast docs]: /integrations/yamaha_musiccast/
-[yessssms docs]: /integrations/yessssms/
[zabbix docs]: /integrations/zabbix/
[zengge docs]: /integrations/zengge/
[zeroconf docs]: /integrations/zeroconf/
diff --git a/source/_posts/2020-12-13-home-assistant-os-release-5.markdown b/source/_posts/2020-12-13-home-assistant-os-release-5.markdown
new file mode 100644
index 00000000000..dea0f2d730e
--- /dev/null
+++ b/source/_posts/2020-12-13-home-assistant-os-release-5.markdown
@@ -0,0 +1,123 @@
+---
+layout: post
+title: "Home Assistant OS Release 5"
+description: "Improved name resolution, external data disk, more reliability and supporting 3 new devices!"
+date: 2020-12-13 00:00:00
+date_formatted: "December 13, 2020"
+author: Stefan Agner
+author_twitter: falstaff_ch
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2020-12-13-os5/social.png
+---
+
+
+
+Today we also release Home Assistant OS 5.8, the first stable version of the 5.x
+release series.
+
+**Highlights**:
+
+- Improved Multicast Name Resolution on OS level
+- External Data Disk Feature
+- Improved Reliability against Container corruption
+
+- New support: Raspberry Pi 4 – 8GB
+- New support: ASUS Tinker Board S
+- New support: ODROID-C4
+- Improved: OVA Virtual image includes more drivers
+
+## Table of contents
+
+- [Table of contents](#table-of-contents)
+- [Operating System Changes](#operating-system-changes)
+ - [Multicast Name Resolution](#multicast-name-resolution)
+ - [External Data Disk](#external-data-disk)
+ - [Improved Reliability](#improved-reliability)
+ - [Under the Hood](#under-the-hood)
+- [Board Support](#board-support)
+ - [Raspberry Pi](#raspberry-pi)
+ - [ODROID](#odroid)
+ - [Open Virtualization Appliance/Intel NUC](#open-virtualization-appliance-intel-nuc)
+ - [New Board Support](#new-board-suport)
+- [Other Changes](#other-changes)
+
+## Operating System Changes
+
+### Multicast Name Resolution
+
+Release 5 uses systemd-resolved to provide DNS services on the operating system
+level and acts as a multicast name resolution responder. Besides, mDNS
+systemd-resolved also supports the LLMNR hostname resolution protocol. In
+practice, this makes discovering a new installation of Home Assistant OS working
+in most situations, either using `http://homeassistant.local:8123` or
+`http://homeassistant:8123`.
+
+### External Data Disk
+
+In release 4 we introduced external data disk support. The command `datactl`
+allows moving the main data partition to any disk connected to the system. The
+boot partition and main operating system partitions stay on the boot medium
+(typically the SD card). Using this approach is more reliable than booting the
+system from USB. Booting from USB requires several parts of the software stack
+to rediscover the external storage. In release 5 we made the external data disk
+feature more robust and the initial moving process much faster. We plan to
+improve that feature even more and are happy to get your feedback!
+
+### Improved Reliability
+
+The main system service to start Home Assistant Supervisor is now more reliable.
+Home Assistant OS is now able to detect a corrupted supervisor container in most
+situations and automatically downloads a new version of it. File system checks
+have also been expanded to the boot partition, which makes sure that all file
+systems are being checked now.
+
+### Under the Hood
+
+Under the hood, we updated to Buildroot 2020.11, which brings tons of new software
+versions along with bug and security fixes. Some key components which received
+an update were systemd 246 and AppArmor version 3.0.
+
+## Board Support
+
+### Raspberry Pi
+
+All Raspberry Pi versions now use Linux Kernel 5.4, just like Raspberry Pi OS.
+With the move to U-Boot 2020.10, we are now also supporting Raspberry Pi with 8GB
+of memory. With the new kernel and U-Boot Home Assistant OS can now also run on
+the Compute Module 4 as well as the Pi 400 (the keyboard). A keyboard is
+probably not the ideal form factor for a headless system such as Home Assistant
+OS, but it comes with good cooling, which makes it not the worst choice :-). We
+recently tested the 64-bit variant of Home Assistant OS much more and feel
+comfortable to recommend the 64-bit version for Raspberry Pi 4.
+
+### ODROID
+
+The ODROID platforms now use Linux 5.9, which brings improved support for all
+ODROID platforms such as the ODROID N2(+). For the N2(+) the Real-Time Clock is
+now supported as well.
+
+### Open Virtualization Appliance/Intel NUC
+
+The x86 platforms (Intel NUC, OVA - Open Virtualization Appliance) now use
+Linux 5.9. The kernel for OVA images has new drivers enabled for Intel Network
+devices with Virtual Function, PCIe passthrough for Hyper-V, or support for
+Audio (HDA audio devices).
+
+### New Board Support
+
+Besides the ASUS Tinker Board, we now also support the Tinker Board S, a variant
+with fast on-board eMMC storage. Thanks to [@ubergeek801] we now also have support
+for ODROID-C4, a cost-effective alternative to Raspberry Pi in a similar form
+factor.
+
+## Other Changes
+
+The build pipeline is now using GitHub Actions and we compress the images using
+the xz compression algorithm instead of gz. The flashing process will stay the
+same: Etcher supports flashing from gz as well as xz.
+
+This is all I can think of for now. The release 5.8 will be on the stable
+channel today, so watch out for the update notification in the Supervisor
+section. Images are available in the release section over on
+[GitHub](https://github.com/home-assistant/operating-system/releases).
diff --git a/source/_posts/2020-12-13-release-202012.markdown b/source/_posts/2020-12-13-release-202012.markdown
new file mode 100644
index 00000000000..ad8e484bb86
--- /dev/null
+++ b/source/_posts/2020-12-13-release-202012.markdown
@@ -0,0 +1,1372 @@
+---
+layout: post
+title: "2020.12: Automate with Blueprints!"
+description: "Sharable automations using blueprints, new neural voices for Nabu Casa TTS, disable devices and assign entities to areas!"
+date: 2020-12-13 00:00:00
+date_formatted: "December 13, 2020"
+author: Franck Nijhof
+author_twitter: frenck
+comments: true
+categories: Release-Notes
+og_image: /images/blog/2020-12/social.png
+---
+
+
+
+Welcome to Home Assistant Core 2020.12!
+
+You are looking at our new versioning schema. From now on, the Home Assistant
+Core will be using calendar versioning, consisting of the year, month and
+a patch number to indicate a bug-fix release. This also means our release
+schedule is changing. Home Assistant Core will now be released every first
+Wednesday of the month!
+
+As most things are announced at the [Home Assistant Conference](/conference);
+more things will be added/tweak in these release notes the next couple of days.
+
+For me, this has been an exiting year! And thanks everybody for contributing
+to this amazing project, not matter what and how you contributed. You are all
+amazing! ❤️
+
+With the Holiday season coming, it is time to slow down a bit, enjoy time with
+our family. And in a couple of weeks, a new year will start; Let's make it a
+good one!
+
+Happy holidays, stay safe and for the last time this year: Enjoy the release!
+
+../Frenck
+
+- [Blueprints](#blueprints)
+ - [Sharing blueprints](#sharing-blueprints)
+ - [Using blueprints](#using-blueprints)
+ - [Creating blueprints](#creating-blueprints)
+- [New neural voices for Nabu Casa Cloud TTS](#new-neural-voices-for-nabu-casa-cloud-tts)
+- [Assign areas to entities and readable area IDs](#assign-areas-to-entities-and-readable-area-ids)
+- [Temporarily disable devices](#temporarily-disable-devices)
+- [Other noteworthy changes](#other-noteworthy-changes)
+- [New Integrations](#new-integrations)
+- [New Platforms](#new-platforms)
+- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
+- [If you need help...](#if-you-need-help)
+- [Breaking Changes](#breaking-changes)
+- [Farewell to the following](#farewell-to-the-following)
+- [All changes](#all-changes)
+
+## Blueprints
+
+Say hello; to the major new feature of Home Assistant 2020.12: Blueprints!
+
+
+
+Screenshot of the blueprints configuration panel.
+
+
+An automation blueprint is a pre-created automation with user-settable options.
+This allows for a separation of the logic and inputs of an automation. It
+sounds a bit complicated, but as a matter of fact, it will make things
+re-usable and easier.
+
+Imagine a blueprint that controls a light based on motion, that allows you to
+configure the motion sensor to trigger on, and the light to control.
+
+It is now possible to create two automations that each have their own
+configuration for this blueprint and act completely independently, yet are
+based on the same automation configuration.
+
+### Sharing blueprints
+
+Blueprints are great for sharing your automations and ideas with the community.
+
+We created a [Blueprint Exchange forum category](/get-blueprints) where you can
+post your created blueprints. For others to use!
+
+We believe that the power of blueprint relies in sharing. You can now share
+complex automations that others can use, even if they are using the UI editors.
+
+For example, a blueprint can be shared for a specific Zigbee remote control
+that maps all buttons to a light. A blueprint that sends a notification when
+it found empty batteries. A blueprint for muting music when you pick up
+your Android phone.
+
+The sky is the limit in the ideas and automations blueprints we can share!
+
+### Using blueprints
+
+Let's cut a long story short, it sounds exciting, but what does it mean?
+
+You can import blueprints by copying the URL of the forum topic or from GitHub
+into the UI. Then you can create automations from these blueprints by filling
+out the required inputs.
+
+
+
+Screenshot of a blueprint.
+
+
+It is really easy to deploy a blueprint, even multiple times! Blueprints are
+fully functional in both the UI and for YAML.
+
+### Creating blueprints
+
+We created a really nice [tutorial](/docs/blueprint/tutorial/) on how to make
+blueprints.
+
+Essentially, a blueprint is just like an automation, with some added blueprint
+metadata. You can convert any existing automation into a blueprint!
+
+As the last step, be sure to [share your freshly created blueprint](/get-blueprints)
+on the community on the [Blueprint Exchange](/get-blueprints), helping and and
+inspiring others.
+
+## New neural voices for Nabu Casa Cloud TTS
+
+If you have a [Nabu Casa Home Assistant Cloud][cloud] subscription, this release
+brings in some really nice goodness for you. The Text-to-Speech service offered
+by Nabu Casa has been extended and now supports a lot of new voices in many
+different languages.
+
+This is a great alternative to, for example, the Google TTS integration. The
+resulting audio is absolutely stunning and the neural voices sound supernatural.
+
+This service is automatically enabled when you are signed in to your
+Nabu Casa cloud account and can be called using the [`tts.cloud_say`][cloud_say]
+service in your automations.
+
+For example:
+
+```yaml
+action:
+ service: tts.cloud_say
+ entity_id: media_player.family_room_speaker
+ data:
+ message: These new voices sound absolutely stunning!
+ options:
+ gender: female
+ language: en-US
+```
+
+[cloud_say]: https://www.nabucasa.com/config/tts/
+[cloud]: https://www.nabucasa.com/
+
+## Assign areas to entities and readable area IDs
+
+Areas have been around for a bit already. But, not everything supports
+areas yet. And using it in for example YAML-based automations, is not really
+an easy task to do.
+
+Today that changes, as this release works towards making areas more useful by
+making them more accessible and more universal.
+
+The first change: individual entities can now be assigned to areas.
+
+Previously this was limited to devices only. This also works for entities
+without a device (for example, entities provided by Helpers). Devices provide
+entities, and thus it is now possible to override the area with a single entity for
+a device as well. For example, your in-wall mounted switch controls a light in
+another room.
+
+
+
+Screenshot of disabling a device.
+
+
+Second improvement: The ID of a newly created area will now be based on the name
+of the area instead of a random string.
+
+This makes it easier to use areas in service calls, as you can now use
+area identifiers that actually make sense for a human! In a YAML automation
+or script it will look like this:
+
+```yaml
+action:
+ - service: light.turn_on
+ target:
+ area_id: living_room
+```
+
+To find the area ID for the area you want to target, go to the Configuration
+Panel, and edit the area you want to target. In area edit dialog, the ID is
+shown.
+
+## Temporarily disable devices
+
+Do you have your Christmas tree set up in Home Assistant? After the Holidays
+are over, you store all those decorations for the next season. But what about
+those devices in Home Assistant?
+
+Thanks to [@emontnemery], you can now disable devices in Home Assistant. So,
+next year, when you unpack all decorations, enable them again and you're
+ready to go for another Holiday season!
+
+
+
+Screenshot of disabling a device.
+
+
+Of course, besides seasonal things, it can also be helpful if you have a broken
+device or temporarily taking down any other device.
+
+## Other noteworthy changes
+
+- The [Apple TV integration][apple_tv docs] now supports tvOS version 13 and
+ above and can be setup from the UI, thanks [@postlund]!
+- [@thecode] has been busy with the [Shelly integration][shelly docs] and added
+ support for inputs, so you can now use the Shelly i3 and Shelly's in detached
+ state.
+- Thanks to [@adrum], the [HomeKit controller integration][homekit_controller docs]
+ now has support for (de)humidifiers.
+- [deCONZ][deCONZ docs] now supports tilt on covers, and preset and fan
+ for climate devices, thanks [@Kane610]!
+- [@frenck] added support for setting the repeat mode to the
+ [Spotify][spotify docs] integration.
+- The [Nest integration][nest docs] now supports camera and doorbell events,
+ thanks [@allenporter]!
+- Changes made to your [KNX integration's][knx docs] YAML configuration,
+ can now be reloaded without restarting Home Assistant. Thanks [@spacegaier]!
+- The number formatting in the frontend is more consistent, thanks to [@joshmcrty]!
+- [@dmulcahey] has been improving the user experience of [ZHA][zha docs].
+ The feedback when pairing a new Zigbee device in the frontend is improved,
+ discovered devices are shown earlier with their progress, and the ZHA
+ configuration panel now has a Zigbee network visualization tab! This allows
+ you to see your network and find connection issues.
+- The [rest integration][rest docs] can now handle request parameters, nicely
+ done [@boxcee]!
+- Learn new RF commands using a Broadlink remote! Thanks, [@felipediel]!
+- [@mLupine] extended templated binary sensors and these now support templating
+ the `delay_on` and `delay_off`!
+
+[@joshmcrty]: https://github.com/joshmcrty
+
+## New Integrations
+
+We welcome the following new integrations this release:
+
+- [FireServiceRota][fireservicerota docs], added by [@cyberjunky]
+- [Kuler Sky][kulersky docs], added by [@emlove]
+- [Motion Blinds][motion_blinds docs], added by [@starkillerOG]
+- [SRP Energy][srp_energy docs], added by [@briglx]
+- [Twinkly][twinkly docs], added by [@dr1rrb]
+
+## New Platforms
+
+The following integration got support for a new platform:
+
+- [HomeKit Controller][homekit_controller docs] now has initial support for
+ cameras, added by [@Jc2k]
+- [@emontnemery] has added support for fans and covers to the
+ [Tasmota][tasmota docs] integration
+- [MQTT][MQTT docs] added support for scenes, added by [@kiall]
+
+## Integrations now available to set up from the UI
+
+The following integrations are now available via the Home Assistant UI:
+
+- [Aurora][aurora docs], done by [@djtimca]
+- [Recollect Waste][recollect_waste docs], done by [@bachya]
+
+## 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).
+
+Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/core/issues). Make sure to fill in all fields of the issue template.
+
+
+
+## Breaking Changes
+
+Below is a listing of the breaking change for this release, per subject or
+integration. Click on one of those to read more about the breaking change
+for that specific item.
+
+
+ Aurora
+
+
+Configuring Aurora sensor via YAML has been removed (it was non-functional
+already). The Aurora integration can now be configured via the UI.
+
+([@djtimca] - [#43045]) ([aurora docs])
+
+
+
+
+
+ Certificate Expiry
+
+
+In order to optimize stability and performance of Home Assistant, time based
+sensors should use only absolute time values (store the date of the event) and
+not relative time values (seconds from event), so the value doesn't change
+each second.
+
+The Certificate Expiry integration has both of them, so to adhere to
+Home Assistant architectural design rules, the offending relative time
+sensor is now removed.
+
+If your configuration was based on the relative time sensor, please switch to the other one.
+
+([@chemelli74] - [#42338]) ([cert_expiry docs])
+
+
+
+
+
+ Solar-Log
+
+
+Per ADR-0010, this release deprecates YAML configuration for the Solar-log
+integration. If you already use the Solar-log integration you do not need to
+take action, as your configuration has already been imported into the UI.
+
+([@Ernst79] - [#43484]) ([solarlog docs])
+
+
+
+
+
+ LCN
+
+
+The logic operation sensor states are renamed from (`not`, `or`, `and`) to
+(`none`, `some`, `all`).
+
+The renaming is more consistent with the LCN naming convention.
+When using the states in an automation ensure they are correctly renamed.
+
+([@alengwenus] - [#43710]) ([lcn docs])
+
+
+
+
+
+ Uptime
+
+
+In order to optimize stability and performance of Home Assistant, sensors
+should use only absolute time values (store the date of the event) and not
+relative time values (seconds from event) so the value doesn't change each
+second.
+
+The Uptime integration is one leftover, so to adhere to Home Assistant
+architectural design rules, the sensor is now changed to a timestamp.
+
+As a side effect of this change, the `unit_of_measurement` option of this
+integration is now deprecated and can be removed from your configuration if
+you used that.
+
+Please review your Automations and Lovelace configuration to reflect this
+change.
+
+([@chemelli74] - [#43623]) ([uptime docs])
+
+
+
+
+
+ Keyring & Credstash
+
+
+Support for storing secrets in Credstash and Keyring is deprecated and will be
+removed in March 2021.
+
+([@balloob] - [#43854])
+
+
+
+
+
+ Apple TV
+
+
+The Apple TV integration has been completely rewritten. Support for YAML is
+removed, so old configuration must be removed and devices re-added via the
+integrations page.
+
+Furthermore, the old services `apple_tv.apple_tv_authenticate` and
+`apple_tv.apple_tv_scan` are deprecated and replaced by the configration flow.
+
+([@postlund] - [#31952]) ([apple_tv docs])
+
+
+
+
+
+ Telegram Bot
+
+
+The telegram bot integration now allows/accepts messages when either the allowed
+group (Chat ID) OR the User ID of the sender matches.
+
+This is a different behavior compared to before as before both Group (Chat ID)
+AND User ID needed to be allowed. This allows members of a group to talk to
+the bot, even if they are not specifically listed as a user.
+
+If you use Telegram groups, make sure you adjust your configuration accordingly.
+
+([@wicol] - [#43241]) ([telegram_bot docs])
+
+
+
+
+## Farewell to the following
+
+The following integrations have been removed:
+
+- **Salt Fiber Box** ([@MartinHjelmare] - [#43452])
+- **Ubee Router** ([@frenck] - [#43809])
+- **Yessssms** ([@flowolf] - [#43200])
+
+These integrations where using webscraping, which is no longer allowed.
+
+## All changes
+
+
+ Click to see all changes!
+
+- Add initial rest query params ([@boxcee] - [#42198]) ([pvoutput docs]) ([rest docs]) ([scrape docs])
+- Simplify distance conversion ([@springstan] - [#43107])
+- Add Shelly support for REST sensors ([@chemelli74] - [#40429]) ([shelly docs])
+- Fix Aurora integration including externalizing API to PyPi and adding config_flow ([@djtimca] - [#43045]) ([aurora docs]) (breaking-change)
+- Add save and delete WS commands to blueprints ([@bramkragten] - [#42907]) ([blueprint docs])
+- Add Shelly totalWorkTime as Lamp life (Shelly Air) ([@chemelli74] - [#43112]) ([shelly docs])
+- Add a config flow for Recollect Waste ([@bachya] - [#43063]) ([recollect_waste docs])
+- Add support for multiple event triggers in automation ([@frenck] - [#43097]) ([homeassistant docs])
+- Fix aurora config flow tests ([@MartinHjelmare] - [#43128]) ([aurora docs])
+- Add reload support to KNX ([@spacegaier] - [#42429]) ([knx docs])
+- Revert "shelly_naming" rebase errors ([@thecode] - [#43134]) ([shelly docs])
+- Add VSCode debug launch conf ([@balloob] - [#43130])
+- Add support for learning RF commands with Broadlink remotes ([@felipediel] - [#39671]) ([broadlink docs]) ([remote docs])
+- Shelly: minor improvements ([@chemelli74] - [#43138]) ([shelly docs])
+- Mock time_date sensor tests ([@amelchio] - [#43141]) ([time_date docs])
+- Fix beat calculation ([@amelchio] - [#43142]) ([time_date docs])
+- Further improve MFI tests ([@balloob] - [#43167])
+- Remove relative time sensor from cert_expiry ([@chemelli74] - [#42338]) ([cert_expiry docs]) (breaking-change)
+- Fix time_date timestamp offsets ([@amelchio] - [#43165]) ([time_date docs])
+- Improve entity domain validator ([@balloob] - [#43164])
+- Fix time_date interval for DST ([@amelchio] - [#43166]) ([time_date docs])
+- Add test to access current request in websocket API ([@balloob] - [#43133]) ([websocket_api docs])
+- Add log message server startup ([@balloob] - [#43177]) ([http docs])
+- Upgrade sentry-sdk to 0.19.3 ([@frenck] - [#43176]) ([sentry docs])
+- Rewrite google_wifi unittest tests to pytest style ([@Danielinte] - [#42030]) ([google_wifi docs])
+- Copy default vscode settings during bootstrap ([@MartinHjelmare] - [#43180])
+- Update ozw get_config_parameter websocket response ([@cgarwood] - [#43058]) ([ozw docs])
+- Hide cancelled trips from being displayed in vasttrafik integration ([@ttuffin] - [#43184]) ([vasttrafik docs])
+- Fix automation in packages ([@balloob] - [#43202]) ([automation docs])
+- Add support for selectors in services.yaml ([@balloob] - [#43162]) ([blueprint docs]) ([sonos docs])
+- Update fitbit battery status ([@czechmark] - [#42980]) ([fitbit docs])
+- Add quarter-hour period feature for utility_meter component ([@thomasdelaet] - [#41999]) ([utility_meter docs])
+- Add initial camera support to homekit_controller ([@Jc2k] - [#43100]) ([homekit_controller docs]) (new-platform)
+- Add support for Broadlink BG1 devices ([@b4dpxl] - [#42314]) ([broadlink docs])
+- Add HomeKit humidifier/dehumidifier ([@adrum] - [#42311]) ([homekit_controller docs])
+- Upgrade youtube_dl to version 2020.11.12 ([@BKPepe] - [#43231]) ([media_extractor docs])
+- Switch ios to dispatching instead of polling ([@bdraco] - [#43233]) ([ios docs])
+- Bump pyheos to 0.7.2 ([@andrewsayre] - [#43239]) ([heos docs])
+- Bypass the slow update warning for group updates ([@bdraco] - [#43209]) ([group docs])
+- Eliminate doorbird switch polling ([@bdraco] - [#43215]) ([doorbird docs])
+- Bump pysmartthings and pysmartapp ([@andrewsayre] - [#43240]) ([smartthings docs])
+- Refactor ZHA light initialization ([@Adminiuga] - [#43149]) ([zha docs])
+- Remove yessssms integration ([@flowolf] - [#43200])
+- Set should_poll for zone entities ([@bdraco] - [#43212]) ([zone docs])
+- Support gas meter capability for smartthings ([@javache] - [#41310]) ([smartthings docs])
+- Add dsmr_reader telegram timestamp and device classes ([@tim427] - [#42909]) ([dsmr_reader docs])
+- Convert most esphome state updates to callbacks ([@bdraco] - [#43246]) ([esphome docs])
+- Add tests for browse media image proxy ([@ctalkington] - [#43076]) ([media_player docs])
+- Apply suggestions from #42697 to synology_dsm ([@mib1185] - [#43197]) ([synology_dsm docs])
+- Avoid creating battery sensor if Shelly device is external powered ([@chemelli74] - [#43243]) ([shelly docs])
+- Rewrite ecobee unittest tests to pytest ([@adriansuwala] - [#42584]) ([ecobee docs])
+- Bump python-miio and construct version ([@syssi] - [#43267]) ([eddystone_temperature docs]) ([eq3btsmart docs]) ([xiaomi_miio docs])
+- Xiaomi Device Tracker - Move "Refreshing device list" to debug ([@GuyKh] - [#43276]) ([xiaomi docs])
+- Bump actions/upload-artifact from v2.2.0 to v2.2.1 (dependabot - [#43272])
+- Bump Pywemo to 0.5.3 ([@pavoni] - [#43263]) ([wemo docs])
+- Automatically clean up executor as part of closing loop ([@balloob] - [#43284])
+- Convert core tests to async ([@balloob] - [#43287])
+- Bump PyEssent to 0.14 ([@TheLastProject] - [#43282]) ([essent docs])
+- Refactor how entities are created for homekit_controller services ([@Jc2k] - [#43242]) ([homekit_controller docs])
+- Add notification binary_sensor to Plugwise integration ([@CoMPaTech] - [#41473]) ([plugwise docs])
+- Update directv to 0.4.0 ([@ctalkington] - [#43302]) ([directv docs]) ([directv docs])
+- Improvement to allow parsing of station ID in vasttrafik integration. Addresses #34851 ([@ttuffin] - [#43136]) ([vasttrafik docs])
+- Bump codecov/codecov-action from v1.0.14 to v1.0.15 (dependabot - [#43304])
+- Add progress translation key to hassfest ([@MartinHjelmare] - [#43311])
+- Update cloud integration to 0.38.0 ([@klaasnicolaas] - [#43314]) ([cloud docs])
+- Add an option to template delay_on/off in template binary sensor ([@mLupine] - [#43259]) ([template docs])
+- Fix kodi media_player unavailable at start ([@mvn23] - [#41714]) ([kodi docs])
+- Improve Google Assistant cover assumed state handling ([@elupus] - [#43255]) ([google_assistant docs])
+- Add TV channel name to smartthings integration ([@Alex-Klein] - [#41729]) ([smartthings docs])
+- Tweak OZW Light discovery ([@firstof9] - [#43325]) ([ozw docs])
+- Refactor ZHA tests to allow attribute reads during device initialization ([@Adminiuga] - [#43357]) ([zha docs])
+- Update Zha dependencies ([@Adminiuga] - [#43373]) ([zha docs])
+- Refactor ZHA sensor initialization ([@Adminiuga] - [#43339]) ([zha docs])
+- Update denonavr to 0.9.6 ([@scarface-4711] - [#43370]) ([denonavr docs])
+- Add shelly installed firmware info ([@chemelli74] - [#43221]) ([shelly docs])
+- Support for Shelly Binary Input Sensors ([@thecode] - [#43313]) ([shelly docs])
+- Reword numeric_state trigger ([@amelchio] - [#43367]) ([homeassistant docs])
+- Raise in base implementation of FanEntity.oscillate ([@emontnemery] - [#43354]) ([fan docs])
+- Improve nest SDM integration error handling ([@allenporter] - [#43271]) ([nest docs])
+- Update ovoenergy to v1.1.11 ([@timmo001] - [#43391]) ([ovo_energy docs])
+- Fix selector to return the selector type ([@bramkragten] - [#43395])
+- Add twinkly integration ([@dr1rrb] - [#42103]) ([twinkly docs]) (new-integration)
+- Add new air-humidifier device CA4 with miot protocol ([@Toxblh] - [#39398]) ([xiaomi_miio docs])
+- Check config to use config platforms ([@balloob] - [#43407])
+- Update pymyq to 2.0.10 ([@ehendrix23] - [#43413]) ([myq docs])
+- Update python-awair to 0.2.1 ([@ahayworth] - [#43415]) ([awair docs])
+- Add Srp energy component ([@briglx] - [#41091]) ([srp_energy docs]) (new-integration)
+- Update Alexa supported languages ([@100ferhas] - [#43139]) ([alexa docs])
+- Support openRelativePercent for google assistant covers ([@elupus] - [#43336]) ([google_assistant docs])
+- Add support for checking minimum HA version ([@balloob] - [#43350]) ([blueprint docs])
+- Provide HA username via auth WS ([@spacegaier] - [#43283]) ([config docs])
+- Verify that we register blueprints on automation setup ([@balloob] - [#43434]) ([automation docs]) ([blueprint docs])
+- Update dsmr_parser to 0.23 ([@RobBie1221] - [#43403]) ([dsmr docs])
+- Upgrade Beewi Smartclim component to 0.0.10 ([@alemuro] - [#43441]) ([beewi_smartclim docs])
+- Fix empty local_ip config flow ([@spacegaier] - [#43333]) ([local_ip docs])
+- Use weather attribute conditions constants ([@springstan] - [#39945])
+- Move Flo logger to a package logger ([@bachya] - [#43449]) ([flo docs])
+- Move Ambient PWS logger to a package logger ([@bachya] - [#43448]) ([ambient_station docs])
+- Move legacy device tracker setup to legacy module ([@MartinHjelmare] - [#43447]) ([device_tracker docs])
+- Remove salt integration for webscraping ([@MartinHjelmare] - [#43452]) (breaking-change)
+- Move Notion logger to a package logger ([@bachya] - [#43450]) ([notion docs])
+- Add ONVIF PTZ Stop support ([@scop] - [#39734]) ([onvif docs])
+- Remove zigpy monkey patching ([@Adminiuga] - [#43456]) ([zha docs])
+- Change Plugwise integration to plugwise module ([@CoMPaTech] - [#43036]) ([plugwise docs])
+- Avoid arbitrarily reducing ZHA climate temperature information ([@FrnchFrgg] - [#43442]) ([zha docs])
+- Bump acmeda dependency aiopulse to 0.4.2 ([@atmurray] - [#43217]) ([acmeda docs])
+- Fix ConnectTimeout during wolflink start ([@adamkrol93] - [#43418]) ([wolflink docs])
+- Add reauth support for OVO Energy ([@timmo001] - [#38882]) ([ovo_energy docs])
+- Upgrade debugpy to 1.2.0 ([@frenck] - [#43328]) ([debugpy docs])
+- Add repeat mode support to Spotify ([@frenck] - [#43247]) ([spotify docs])
+- Fix Luftdaten.info data retrieval ([@FlavorFx] - [#43471]) ([luftdaten docs])
+- Support for multiple states in history_stats ([@iprak] - [#43416]) ([history_stats docs])
+- Upgrade discord.py to 1.5.1 ([@LordBoos] - [#43473])
+- Bump rpi-bad-power to 0.1.0 ([@shenxn] - [#43476]) ([rpi_power docs])
+- Deprecate YAML config for Solar-log ([@Ernst79] - [#43484]) ([solarlog docs]) (breaking-change)
+- Add updated British Voices ([@CrashWorksLLC] - [#43496]) ([watson_tts docs])
+- Clean up Solar-log review comments ([@frenck] - [#43503]) ([solarlog docs])
+- Optimize Sonos queue position ([@amelchio] - [#43514]) ([sonos docs])
+- Re-organize OpenUV constants ([@bachya] - [#43453]) ([openuv docs])
+- Bump envoy version to 0.17.0 ([@gtdiehl] - [#43498]) ([enphase_envoy docs])
+- Optimize Sonos favorites updates ([@amelchio] - [#43516]) ([sonos docs])
+- Add seek support to plex media players ([@shocklateboy92] - [#43420]) ([plex docs])
+- Clean up RainMachine config entry ([@bachya] - [#43508]) ([rainmachine docs])
+- Add vendor effects to Yeelight integration ([@danielrheinbay] - [#42711]) ([yeelight docs])
+- Optimize Sonos current playing state ([@amelchio] - [#43517]) ([sonos docs])
+- Make Brother uptime sensor disabled by default ([@bieniu] - [#43478]) ([brother docs])
+- Add device id to deconz_event ([@Kane610] - [#43552]) ([deconz docs])
+- Bump actions/stale from v3.0.13 to v3.0.14 (dependabot - [#43551])
+- Update Blinkpy to fix non-updating blink mini cameras ([@fronzbot] - [#43549]) ([blink docs])
+- Optimize reading of Sonos source mode ([@amelchio] - [#43541]) ([sonos docs])
+- Mill Heater: Add support for Energy consumption ([@Danielhiversen] - [#43523]) ([mill docs])
+- Track deCONZ lib changes to light based devices ([@Kane610] - [#43366]) ([deconz docs])
+- update solax to 0.2.5 ([@squishykid] - [#43564]) ([solax docs])
+- Upgrade sentry-sdk to 0.19.4 ([@frenck] - [#43504]) ([sentry docs])
+- Update denonavr to 0.9.7 ([@scarface-4711] - [#43546]) ([denonavr docs])
+- Fix RTS cover with set position available ([@tetienne] - [#43555]) ([somfy docs])
+- Add codeowner to Enphase Envoy manifest ([@gtdiehl] - [#43402]) ([enphase_envoy docs])
+- Add webhook to default config ([@frenck] - [#43521]) ([default_config docs])
+- Cannot use vcgencmd in HassOS ([@denics] - [#42710]) ([sensehat docs])
+- Add Motion Blinds integration ([@starkillerOG] - [#42989]) ([motion_blinds docs]) (new-integration)
+- Use references in config flow for solaredge ([@Cereal2nd] - [#43511]) ([solaredge docs])
+- Bump version to 0.119.0dev0 ([@frenck] - [#43485])
+- Decrease asuswrt connects per sensor ([@JJdeVries] - [#43383]) ([asuswrt docs])
+- Fix warning generated by surpetcare test ([@balloob] - [#43598]) ([surepetcare docs])
+- Fix conversion of cover position between HASS and deCONZ ([@Kane610] - [#43602]) ([deconz docs])
+- Update nest library and switch events to async ([@allenporter] - [#43583]) ([nest docs])
+- Add unknown_authorize_url_generation to base strings for config flows ([@springstan] - [#42484]) ([nest docs]) ([point docs]) ([tellduslive docs]) ([toon docs])
+- Bump hatasmota to 0.1.1 ([@emontnemery] - [#43608]) ([tasmota docs])
+- Fix Meraki API Auth ([@koolsb] - [#43578]) ([meraki docs])
+- Upgrade foobot_async to 1.0.0 ([@balloob] - [#43611]) ([foobot docs])
+- Add tilt support to deCONZ covers ([@Kane610] - [#43607]) ([deconz docs])
+- update xknx to 0.15.4 ([@farmio] - [#43536]) ([knx docs])
+- Add nest SDM API camera/doorbell events ([@allenporter] - [#42700]) ([nest docs])
+- Bump pyhs100 dependency to fix hs220 discoverability issues ([@rytilahti] - [#43619]) ([tplink docs])
+- Bump ha-ffmpeg to 3.0.2 ([@balloob] - [#43597])
+- Add default config if not there ([@balloob] - [#43321])
+- Support for Shelly Input Events ([@thecode] - [#43479]) ([shelly docs])
+- Add Shelly UNI ADC sensor ([@chemelli74] - [#43490]) ([shelly docs])
+- Add FireServiceRota/BrandweerRooster integration ([@cyberjunky] - [#38206]) ([fireservicerota docs]) (new-integration)
+- Fix flapping derivative tests where time would move between state changes ([@elupus] - [#43579]) ([derivative docs])
+- Add Tasmota fan ([@emontnemery] - [#43353]) ([tasmota docs]) (new-platform)
+- Add Tasmota cover ([@emontnemery] - [#43368]) ([tasmota docs]) (new-platform)
+- Add more selectors ([@bramkragten] - [#43639]) ([input_number docs])
+- Add default to inputs ([@bramkragten] - [#43636]) ([blueprint docs])
+- Add location to summary sensor attributes ([@ofalvai] - [#43641]) ([seventeentrack docs])
+- Suggest folder when importing blueprint and store source_url ([@balloob] - [#43650]) ([blueprint docs])
+- Add Duty binary_sensor platform to FireServiceRota integration ([@cyberjunky] - [#43638]) ([fireservicerota docs]) (new-platform)
+- Add area selector, remove date selector ([@bramkragten] - [#43658])
+- Allow importing gist ([@balloob] - [#43659]) ([blueprint docs])
+- Support disabling devices ([@emontnemery] - [#43293]) ([config docs])
+- Add Roomba support for automatic emptying of bin ([@jasperslits] - [#43594]) ([roomba docs])
+- Make input_datetime better handle timezones ([@balloob] - [#43396]) ([input_datetime docs])
+- Fix check config ([@balloob] - [#43663]) ([blueprint docs])
+- Fix MQTT threading bug ([@emontnemery] - [#43667]) ([mqtt docs])
+- Upgrade pre-commit to 2.9.2 ([@frenck] - [#43655])
+- Small cleanup of Tasmota ([@emontnemery] - [#43642]) ([tasmota docs])
+- Updated frontend to 20201126.0 ([@bramkragten] - [#43682]) ([frontend docs])
+- Met.no: Fix for zero temp entries ([@thimic] - [#43684]) ([met docs])
+- OAuth2 to use current request header ([@balloob] - [#43668]) ([toon docs])
+- Exclude disabled entities from async_entries_for_device ([@emontnemery] - [#43665]) ([deconz docs]) ([mqtt docs]) ([tasmota docs]) ([tuya docs]) ([unifi docs]) ([zha docs])
+- Add option to deactivate a user ([@spacegaier] - [#43463]) ([config docs])
+- Bugfix schedule assigned to wrong day of week ([@zxdavb] - [#43676]) ([evohome docs])
+- Code quality improvement for evohome ([@zxdavb] - [#43678]) ([evohome docs])
+- Fix Shelly uptime sensor ([@thecode] - [#43651]) ([shelly docs])
+- Convert API integration to async setup ([@balloob] - [#43685]) ([api docs])
+- Eliminate evohome unhandled exceptions when client API call fails ([@zxdavb] - [#43681]) ([evohome docs])
+- Maybe fix flaky test ([@balloob] - [#43690]) ([shelly docs])
+- Stub finding custom integrations in tests ([@balloob] - [#43692])
+- Add Abode MFA support ([@shred86] - [#43572]) ([abode docs])
+- Use run_job for service helper ([@balloob] - [#43696]) ([input_boolean docs]) ([input_datetime docs])
+- Use utcnow from date util for http.ban ([@balloob] - [#43686]) ([http docs])
+- Await callbacks to keep cleaner stacktraces ([@balloob] - [#43693]) ([mqtt docs])
+- Update xknx to 0.15.6 ([@farmio] - [#43645]) ([knx docs])
+- Add system health check to Spotify ([@frenck] - [#43249]) ([spotify docs])
+- Fix exception upon lock initialization on V2 SimpliSafe systems ([@bachya] - [#43705]) ([simplisafe docs])
+- Bump RFLink to v0.0.55 ([@javicalle] - [#43704]) ([rflink docs])
+- Proxy Plex media browser images ([@jjlawren] - [#43111]) ([plex docs])
+- Bump up ZHA dependencies ([@Adminiuga] - [#43707]) ([zha docs])
+- Add support to control cooling in deCONZ climate platform ([@Kane610] - [#43720]) ([deconz docs])
+- Blueprint config to override blueprint ([@balloob] - [#43724]) ([blueprint docs])
+- Ensure MariaDB/MySQL can be purged and handle states being deleted out from under the recorder ([@moinmoin-sh] - [#43610]) ([recorder docs])
+- Bump Brother library to version 0.1.20 ([@bieniu] - [#43628]) ([brother docs])
+- Bump hatasmota to 0.1.2 ([@emontnemery] - [#43719]) ([tasmota docs])
+- Make threshold binary sensor faster ([@balloob] - [#43695]) ([threshold docs])
+- Add Response switch platform to FireServiceRota integration ([@cyberjunky] - [#43700]) ([fireservicerota docs]) (new-platform)
+- Add additional events to enhance the ZHA device pairing experience ([@dmulcahey] - [#43729]) ([zha docs])
+- Add a service target ([@balloob] - [#43725])
+- Create tables with a charset that can hold all expected data under mysql ([@bdraco] - [#43732]) ([recorder docs])
+- Allow configuring the delay in the motion light blueprint ([@balloob] - [#43737]) ([automation docs])
+- Add support for multiple tags and devices in tag trigger ([@frenck] - [#43098]) ([tag docs])
+- Remove temporary variable by only retrieving needed value ([@springstan] - [#42522])
+- Bump pypck to v0.7.6 ([@alengwenus] - [#43710]) ([lcn docs]) (breaking-change)
+- Use the correct property for full init event ([@dmulcahey] - [#43745]) ([zha docs])
+- ZHA: remove unused 'from_cache' argument from 'async_get_state' and add 'async_update' ([@basnijholt] - [#42413]) ([zha docs])
+- Address FireServiceRota late code review ([@cyberjunky] - [#43741]) ([fireservicerota docs])
+- Always keep the current recorder run when purging ([@bdraco] - [#43733]) ([recorder docs])
+- Add nest device triggers for camera and doorbell events ([@allenporter] - [#43548]) ([nest docs])
+- Report correct weather condition at night for OpenWeatherMap ([@springstan] - [#42982]) ([openweathermap docs])
+- Support asking covers to stop using google assistant ([@elupus] - [#43537]) ([google_assistant docs])
+- Fix updating of Tesla switches after command ([@alandtse] - [#43754]) ([tesla docs])
+- Allow specifying device_id as target ([@balloob] - [#43767])
+- Add system health check to IPMA ([@dgomes] - [#43762]) ([ipma docs])
+- Add device information to solarlog integration ([@Ernst79] - [#43680]) ([solarlog docs])
+- Add hyperion config options flow ([@dermotduffy] - [#43673]) ([hyperion docs])
+- Add show progress to ozw config flow ([@MartinHjelmare] - [#43310]) ([ozw docs])
+- Add authentication support to bsblan ([@liudger] - [#42306]) ([bsblan docs])
+- Increase Supervisor add-on helper timeout ([@MartinHjelmare] - [#43778]) ([hassio docs])
+- Add support for device class in target selector ([@balloob] - [#43768])
+- Fix MQTT birth message deadlock ([@emontnemery] - [#43790]) ([mqtt docs])
+- Warn when referencing missing devices/areas ([@balloob] - [#43787])
+- Add lock.open service to nello ([@pattyland] - [#42141]) ([nello docs]) ([nello docs])
+- Migrate foscam to use entity platform entity services ([@balloob] - [#43775]) ([foscam docs])
+- Use entity platform for Neato ([@balloob] - [#43772]) ([neato docs])
+- Upgrade elgato to 1.0.0 ([@frenck] - [#43792]) ([elgato docs])
+- Bump aiorecollect to 0.2.2 ([@bachya] - [#43796]) ([recollect_waste docs])
+- Base area IDs on initial name ([@balloob] - [#43804])
+- Remove unused stuff from ZHA registries ([@abmantis] - [#43786]) ([zha docs])
+- Remove Ubee Router integration (ADR-0004) ([@frenck] - [#43809]) (breaking-change)
+- Fix config validation tests for upcoming beta ([@frenck] - [#43811])
+- Remove invalidation version from Airvisual ([@frenck] - [#43810]) ([airvisual docs])
+- Move uptime from relative time to absolute time ([@chemelli74] - [#43623]) ([uptime docs]) (breaking-change)
+- Add device action to mobile app to notify ([@balloob] - [#43814]) ([mobile_app docs]) ([notify docs])
+- Use !input instead of !placeholder ([@balloob] - [#43820]) ([automation docs]) ([blueprint docs])
+- Fix wrong temperature setting in LCN climate ([@alengwenus] - [#43818]) ([lcn docs])
+- Make simple deCONZ thermostats work ([@Kane610] - [#43781]) ([deconz docs])
+- Another try to get rid of Shelly flaky test ([@balloob] - [#43821]) ([shelly docs])
+- Add Analog cluster for Lumi plugs ([@Adminiuga] - [#43817]) ([zha docs])
+- Add ozw scene_instance to scene_activated ([@firstof9] - [#43829]) ([ozw docs])
+- Support more edl21 devices and sensors ([@mtdcr] - [#43603]) ([edl21 docs])
+- Update area and target selectors add sequence selector ([@bramkragten] - [#43831]) ([automation docs])
+- Bump libpurecool to 0.6.4 ([@etheralm] - [#43779]) ([dyson docs])
+- Add test for is_internal_request ([@ctalkington] - [#43841])
+- Upgrade TwitterAPI to 2.6.2.1 ([@fabaff] - [#43833]) ([twitter docs])
+- Correct service not found exception message ([@frenck] - [#43846])
+- Upgrade pylast to 4.0.0 ([@fabaff] - [#43830]) ([lastfm docs])
+- Bump pypck to 0.7.7 ([@alengwenus] - [#43824]) ([lcn docs])
+- Use light turn on service ([@balloob] - [#43847]) ([automation docs])
+- Do not warn for weak referenced entities ([@balloob] - [#43848]) ([homeassistant docs])
+- Migrate notify-leaving-zone to use mobile app device action ([@balloob] - [#43832]) ([automation docs]) ([mobile_app docs])
+- Add new number entity integration ([@Shulyaka] - [#42735]) ([demo docs]) ([number docs]) (new-integration)
+- Make "invalid password" error message clearer ([@spacegaier] - [#43853]) ([config docs])
+- Guard for when refreshing token fails ([@balloob] - [#43855]) ([spotify docs])
+- Cleanup unique_id on onewire integration ([@epenet] - [#43783]) ([onewire docs])
+- Fix using execute on the notify_leaving_zone ([@balloob] - [#43858]) ([automation docs])
+- deCONZ improve options updating entities ([@Kane610] - [#42320]) ([deconz docs])
+- Deprecate the use of keyring and credstash ([@balloob] - [#43854]) (breaking-change)
+- Refactor Apple TV integration ([@postlund] - [#31952]) ([apple_tv docs]) (breaking-change)
+- Add preset support to deCONZ climate platform ([@Kane610] - [#43722]) ([deconz docs])
+- Bump androidtv to 0.0.56 ([@JeffLIrion] - [#43859])
+- Add fan support to deCONZ climate platform ([@Kane610] - [#43721]) ([deconz docs])
+- Use Plex websocket payloads to reduce overhead ([@jjlawren] - [#42332]) ([plex docs])
+- Bump Synology DSM to 1.0.1 ([@Quentame] - [#43860]) ([synology_dsm docs])
+- Allow members of allowed groups to talk to telegram_bot ([@wicol] - [#43241]) ([telegram_bot docs]) (breaking-change)
+- Add support for system health to Airly integrarion ([@bieniu] - [#43220]) ([airly docs])
+- Add support for system health to AccuWeather integration ([@bieniu] - [#43277]) ([accuweather docs])
+- Automatically select "Solid" effect in Hyperion ([@dermotduffy] - [#43799]) ([hyperion docs])
+- Add support for MQTT Scenes ([@kiall] - [#42639]) ([mqtt docs]) (new-platform)
+- Add ozw add-on discovery and mqtt client ([@MartinHjelmare] - [#43838]) ([hassio docs]) ([ozw docs])
+- Add telegram_bot.send_voice service ([@dvv] - [#43433]) ([telegram_bot docs])
+- Updated frontend to 20201202.0 ([@bramkragten] - [#43862]) ([frontend docs])
+- Improve custom datatype parsing in Modbus sensor and climate ([@vzahradnik] - [#42354]) ([modbus docs])
+- Improve handling of disabled devices ([@emontnemery] - [#43864]) ([config docs])
+- Add Kuler Sky Bluetooth floor lamp integration ([@emlove] - [#42372]) ([kulersky docs]) (beta fix) (new-integration)
+- Fix intesishome passing coroutine to HassJob ([@tehbrd] - [#43837]) ([intesishome docs]) (beta fix)
+- Fix Slack "invalid_blocks_format" bug ([@bachya] - [#43875]) ([slack docs]) (beta fix)
+- Bump auroranoaa library to 0.0.2 ([@djtimca] - [#43898]) ([aurora docs]) (beta fix)
+- Blueprint: descriptions + descriptive errors ([@balloob] - [#43899]) ([automation docs]) ([blueprint docs]) (beta fix)
+- Unsubscribe ozw stop listener on entry unload ([@MartinHjelmare] - [#43900]) ([ozw docs]) (beta fix)
+- Kulersky cleanups ([@emlove] - [#43901]) ([kulersky docs]) (beta fix)
+- Updated frontend to 20201203.0 ([@bramkragten] - [#43907]) ([frontend docs]) (beta fix)
+- Bump hatasmota to 0.1.4 ([@emontnemery] - [#43912]) ([tasmota docs]) (beta fix)
+- Always send ozw network key to add-on config ([@MartinHjelmare] - [#43938]) ([ozw docs]) (beta fix)
+- Handle stale ozw discovery flow ([@MartinHjelmare] - [#43939]) ([ozw docs]) (beta fix)
+- Return unique id of Blink binary sensor ([@brg468] - [#43942]) ([blink docs]) (beta fix)
+- Updated frontend to 20201204.0 ([@bramkragten] - [#43945]) ([frontend docs]) (beta fix)
+- Fix device refresh service can always add devices ([@Kane610] - [#43950]) ([deconz docs]) (beta fix)
+- Fix Ecobee set humidity ([@treylok] - [#43954]) (beta fix)
+- Prevent firing Shelly input events at startup ([@thecode] - [#43986]) ([shelly docs]) (beta fix)
+- Update ring to 0.6.2 ([@balloob] - [#43995]) ([ring docs]) (beta fix)
+- Fix Solaredge integration in case the data is not complete ([@Cereal2nd] - [#43557]) ([solaredge docs]) (beta fix)
+- Update generic_thermostat current_temperature on startup ([@NigelRook] - [#43951]) ([generic_thermostat docs]) (beta fix)
+- Retry tuya setup on auth rate limiting ([@AlexSzlavik] - [#44001]) ([tuya docs]) (beta fix)
+- Bump pymyq to 2.0.11 ([@imbrianj] - [#44003]) ([myq docs]) (beta fix)
+- Fix unit of measurement for asuswrt sensors ([@JJdeVries] - [#44009]) ([asuswrt docs]) (beta fix)
+- Hide HomeKit devices from discovery that are known to be problematic ([@Jc2k] - [#44014]) ([homekit_controller docs]) (beta fix)
+- Add T8400 to ignore list ([@FuzzyMistborn] - [#44017]) ([homekit_controller docs]) (beta fix)
+- Fix how homekit_controller enumerates Hue remote ([@Jc2k] - [#44019]) ([homekit_controller docs]) (beta fix)
+- Bump simplisafe-python to 9.6.1 ([@bachya] - [#44030]) ([simplisafe docs]) (beta fix)
+- Update pyarlo to 0.2.4 ([@TakesTheBiscuit] - [#44034]) ([arlo docs]) (beta fix)
+- Add the missing ATTR_ENABLED attribute to Brother integration list of sensors ([@bieniu] - [#44036]) ([brother docs]) (beta fix)
+- Update ZHA dependencies ([@Adminiuga] - [#44039]) ([zha docs]) (beta fix)
+- Bump simplisafe-python to 9.6.2 ([@bachya] - [#44040]) ([simplisafe docs]) (beta fix)
+- Fix extracting entity and device IDs from scripts ([@balloob] - [#44048]) ([automation docs]) (beta fix)
+- Bump pyatv to 0.7.5 ([@postlund] - [#44051]) ([apple_tv docs]) (beta fix)
+- Exclude coordinator when looking up group members entity IDs ([@Adminiuga] - [#44058]) ([zha docs]) (beta fix)
+- Some lights only support hs, like the lidl christmas lights ([@Kane610] - [#44059]) ([deconz docs]) (beta fix)
+- Fix ignored Axis config entries doesn't break set up of new entries ([@Kane610] - [#44062]) ([axis docs]) (beta fix)
+- Fix yeelight unavailbility ([@zewelor] - [#44061]) ([yeelight docs]) (beta fix)
+- Fix transmission torrent filtering and sorting ([@JPHutchins] - [#44069]) ([transmission docs]) (beta fix)
+- Bump hass-nabucasa to 0.39.0 ([@balloob] - [#44097]) ([cloud docs]) (beta fix)
+- Fix importing blueprints from forums with HTML entities ([@balloob] - [#44098]) ([blueprint docs]) (beta fix)
+- Fix importing blueprint from community ([@bramkragten] - [#44104]) ([blueprint docs]) (beta fix)
+- Update frontend to 20201210.0 ([@bramkragten] - [#44105]) ([frontend docs]) (beta fix)
+- Support more errors to better do retries in UniFi ([@Kane610] - [#44108]) ([unifi docs]) (beta fix)
+- Fix Met.no forecast precipitation ([@brg468] - [#44106]) ([met docs]) (beta fix)
+- Fix inability to erase SimpliSafe code ([@bachya] - [#44137]) ([simplisafe docs]) (beta fix)
+- Fix upnp first discovered device is used ([@StevenLooman] - [#44151]) ([upnp docs]) (beta fix)
+- Updated frontend to 20201212.0 ([@bramkragten] - [#44154]) ([frontend docs]) (beta fix)
+- Remove invalidation_version from deprecated ([@balloob] - [#44156]) (beta fix)
+- Bump zeroconf to 0.28.7 to fix thread safety ([@bdraco] - [#44160]) ([zeroconf docs]) (beta fix)
+- Bump the ZHA quirks lib to 0.0.49 ([@dmulcahey] - [#44173]) ([zha docs]) (beta fix)
+- Remove deprecated CONF_ALLOW_UNLOCK, CONF_API_KEY from Google Assistant ([@hmmbob] - [#44087]) ([google_assistant docs]) (beta fix)
+
+
+
+[#31952]: https://github.com/home-assistant/core/pull/31952
+[#38206]: https://github.com/home-assistant/core/pull/38206
+[#38882]: https://github.com/home-assistant/core/pull/38882
+[#39398]: https://github.com/home-assistant/core/pull/39398
+[#39671]: https://github.com/home-assistant/core/pull/39671
+[#39734]: https://github.com/home-assistant/core/pull/39734
+[#39945]: https://github.com/home-assistant/core/pull/39945
+[#40429]: https://github.com/home-assistant/core/pull/40429
+[#41091]: https://github.com/home-assistant/core/pull/41091
+[#41310]: https://github.com/home-assistant/core/pull/41310
+[#41473]: https://github.com/home-assistant/core/pull/41473
+[#41714]: https://github.com/home-assistant/core/pull/41714
+[#41729]: https://github.com/home-assistant/core/pull/41729
+[#41999]: https://github.com/home-assistant/core/pull/41999
+[#42030]: https://github.com/home-assistant/core/pull/42030
+[#42103]: https://github.com/home-assistant/core/pull/42103
+[#42141]: https://github.com/home-assistant/core/pull/42141
+[#42198]: https://github.com/home-assistant/core/pull/42198
+[#42306]: https://github.com/home-assistant/core/pull/42306
+[#42311]: https://github.com/home-assistant/core/pull/42311
+[#42314]: https://github.com/home-assistant/core/pull/42314
+[#42320]: https://github.com/home-assistant/core/pull/42320
+[#42332]: https://github.com/home-assistant/core/pull/42332
+[#42338]: https://github.com/home-assistant/core/pull/42338
+[#42354]: https://github.com/home-assistant/core/pull/42354
+[#42372]: https://github.com/home-assistant/core/pull/42372
+[#42413]: https://github.com/home-assistant/core/pull/42413
+[#42429]: https://github.com/home-assistant/core/pull/42429
+[#42484]: https://github.com/home-assistant/core/pull/42484
+[#42522]: https://github.com/home-assistant/core/pull/42522
+[#42584]: https://github.com/home-assistant/core/pull/42584
+[#42639]: https://github.com/home-assistant/core/pull/42639
+[#42700]: https://github.com/home-assistant/core/pull/42700
+[#42710]: https://github.com/home-assistant/core/pull/42710
+[#42711]: https://github.com/home-assistant/core/pull/42711
+[#42735]: https://github.com/home-assistant/core/pull/42735
+[#42907]: https://github.com/home-assistant/core/pull/42907
+[#42909]: https://github.com/home-assistant/core/pull/42909
+[#42980]: https://github.com/home-assistant/core/pull/42980
+[#42982]: https://github.com/home-assistant/core/pull/42982
+[#42989]: https://github.com/home-assistant/core/pull/42989
+[#43036]: https://github.com/home-assistant/core/pull/43036
+[#43045]: https://github.com/home-assistant/core/pull/43045
+[#43058]: https://github.com/home-assistant/core/pull/43058
+[#43063]: https://github.com/home-assistant/core/pull/43063
+[#43076]: https://github.com/home-assistant/core/pull/43076
+[#43097]: https://github.com/home-assistant/core/pull/43097
+[#43098]: https://github.com/home-assistant/core/pull/43098
+[#43100]: https://github.com/home-assistant/core/pull/43100
+[#43107]: https://github.com/home-assistant/core/pull/43107
+[#43111]: https://github.com/home-assistant/core/pull/43111
+[#43112]: https://github.com/home-assistant/core/pull/43112
+[#43128]: https://github.com/home-assistant/core/pull/43128
+[#43130]: https://github.com/home-assistant/core/pull/43130
+[#43133]: https://github.com/home-assistant/core/pull/43133
+[#43134]: https://github.com/home-assistant/core/pull/43134
+[#43136]: https://github.com/home-assistant/core/pull/43136
+[#43138]: https://github.com/home-assistant/core/pull/43138
+[#43139]: https://github.com/home-assistant/core/pull/43139
+[#43141]: https://github.com/home-assistant/core/pull/43141
+[#43142]: https://github.com/home-assistant/core/pull/43142
+[#43149]: https://github.com/home-assistant/core/pull/43149
+[#43162]: https://github.com/home-assistant/core/pull/43162
+[#43164]: https://github.com/home-assistant/core/pull/43164
+[#43165]: https://github.com/home-assistant/core/pull/43165
+[#43166]: https://github.com/home-assistant/core/pull/43166
+[#43167]: https://github.com/home-assistant/core/pull/43167
+[#43176]: https://github.com/home-assistant/core/pull/43176
+[#43177]: https://github.com/home-assistant/core/pull/43177
+[#43180]: https://github.com/home-assistant/core/pull/43180
+[#43184]: https://github.com/home-assistant/core/pull/43184
+[#43197]: https://github.com/home-assistant/core/pull/43197
+[#43200]: https://github.com/home-assistant/core/pull/43200
+[#43202]: https://github.com/home-assistant/core/pull/43202
+[#43209]: https://github.com/home-assistant/core/pull/43209
+[#43212]: https://github.com/home-assistant/core/pull/43212
+[#43215]: https://github.com/home-assistant/core/pull/43215
+[#43217]: https://github.com/home-assistant/core/pull/43217
+[#43220]: https://github.com/home-assistant/core/pull/43220
+[#43221]: https://github.com/home-assistant/core/pull/43221
+[#43231]: https://github.com/home-assistant/core/pull/43231
+[#43233]: https://github.com/home-assistant/core/pull/43233
+[#43239]: https://github.com/home-assistant/core/pull/43239
+[#43240]: https://github.com/home-assistant/core/pull/43240
+[#43241]: https://github.com/home-assistant/core/pull/43241
+[#43242]: https://github.com/home-assistant/core/pull/43242
+[#43243]: https://github.com/home-assistant/core/pull/43243
+[#43246]: https://github.com/home-assistant/core/pull/43246
+[#43247]: https://github.com/home-assistant/core/pull/43247
+[#43249]: https://github.com/home-assistant/core/pull/43249
+[#43255]: https://github.com/home-assistant/core/pull/43255
+[#43259]: https://github.com/home-assistant/core/pull/43259
+[#43263]: https://github.com/home-assistant/core/pull/43263
+[#43267]: https://github.com/home-assistant/core/pull/43267
+[#43271]: https://github.com/home-assistant/core/pull/43271
+[#43272]: https://github.com/home-assistant/core/pull/43272
+[#43276]: https://github.com/home-assistant/core/pull/43276
+[#43277]: https://github.com/home-assistant/core/pull/43277
+[#43282]: https://github.com/home-assistant/core/pull/43282
+[#43283]: https://github.com/home-assistant/core/pull/43283
+[#43284]: https://github.com/home-assistant/core/pull/43284
+[#43287]: https://github.com/home-assistant/core/pull/43287
+[#43293]: https://github.com/home-assistant/core/pull/43293
+[#43302]: https://github.com/home-assistant/core/pull/43302
+[#43304]: https://github.com/home-assistant/core/pull/43304
+[#43310]: https://github.com/home-assistant/core/pull/43310
+[#43311]: https://github.com/home-assistant/core/pull/43311
+[#43313]: https://github.com/home-assistant/core/pull/43313
+[#43314]: https://github.com/home-assistant/core/pull/43314
+[#43321]: https://github.com/home-assistant/core/pull/43321
+[#43325]: https://github.com/home-assistant/core/pull/43325
+[#43328]: https://github.com/home-assistant/core/pull/43328
+[#43333]: https://github.com/home-assistant/core/pull/43333
+[#43336]: https://github.com/home-assistant/core/pull/43336
+[#43339]: https://github.com/home-assistant/core/pull/43339
+[#43350]: https://github.com/home-assistant/core/pull/43350
+[#43353]: https://github.com/home-assistant/core/pull/43353
+[#43354]: https://github.com/home-assistant/core/pull/43354
+[#43357]: https://github.com/home-assistant/core/pull/43357
+[#43366]: https://github.com/home-assistant/core/pull/43366
+[#43367]: https://github.com/home-assistant/core/pull/43367
+[#43368]: https://github.com/home-assistant/core/pull/43368
+[#43370]: https://github.com/home-assistant/core/pull/43370
+[#43373]: https://github.com/home-assistant/core/pull/43373
+[#43383]: https://github.com/home-assistant/core/pull/43383
+[#43391]: https://github.com/home-assistant/core/pull/43391
+[#43395]: https://github.com/home-assistant/core/pull/43395
+[#43396]: https://github.com/home-assistant/core/pull/43396
+[#43402]: https://github.com/home-assistant/core/pull/43402
+[#43403]: https://github.com/home-assistant/core/pull/43403
+[#43407]: https://github.com/home-assistant/core/pull/43407
+[#43413]: https://github.com/home-assistant/core/pull/43413
+[#43415]: https://github.com/home-assistant/core/pull/43415
+[#43416]: https://github.com/home-assistant/core/pull/43416
+[#43418]: https://github.com/home-assistant/core/pull/43418
+[#43420]: https://github.com/home-assistant/core/pull/43420
+[#43433]: https://github.com/home-assistant/core/pull/43433
+[#43434]: https://github.com/home-assistant/core/pull/43434
+[#43441]: https://github.com/home-assistant/core/pull/43441
+[#43442]: https://github.com/home-assistant/core/pull/43442
+[#43447]: https://github.com/home-assistant/core/pull/43447
+[#43448]: https://github.com/home-assistant/core/pull/43448
+[#43449]: https://github.com/home-assistant/core/pull/43449
+[#43450]: https://github.com/home-assistant/core/pull/43450
+[#43452]: https://github.com/home-assistant/core/pull/43452
+[#43453]: https://github.com/home-assistant/core/pull/43453
+[#43456]: https://github.com/home-assistant/core/pull/43456
+[#43463]: https://github.com/home-assistant/core/pull/43463
+[#43471]: https://github.com/home-assistant/core/pull/43471
+[#43473]: https://github.com/home-assistant/core/pull/43473
+[#43476]: https://github.com/home-assistant/core/pull/43476
+[#43478]: https://github.com/home-assistant/core/pull/43478
+[#43479]: https://github.com/home-assistant/core/pull/43479
+[#43484]: https://github.com/home-assistant/core/pull/43484
+[#43485]: https://github.com/home-assistant/core/pull/43485
+[#43490]: https://github.com/home-assistant/core/pull/43490
+[#43496]: https://github.com/home-assistant/core/pull/43496
+[#43498]: https://github.com/home-assistant/core/pull/43498
+[#43503]: https://github.com/home-assistant/core/pull/43503
+[#43504]: https://github.com/home-assistant/core/pull/43504
+[#43508]: https://github.com/home-assistant/core/pull/43508
+[#43511]: https://github.com/home-assistant/core/pull/43511
+[#43514]: https://github.com/home-assistant/core/pull/43514
+[#43516]: https://github.com/home-assistant/core/pull/43516
+[#43517]: https://github.com/home-assistant/core/pull/43517
+[#43521]: https://github.com/home-assistant/core/pull/43521
+[#43523]: https://github.com/home-assistant/core/pull/43523
+[#43536]: https://github.com/home-assistant/core/pull/43536
+[#43537]: https://github.com/home-assistant/core/pull/43537
+[#43541]: https://github.com/home-assistant/core/pull/43541
+[#43546]: https://github.com/home-assistant/core/pull/43546
+[#43548]: https://github.com/home-assistant/core/pull/43548
+[#43549]: https://github.com/home-assistant/core/pull/43549
+[#43551]: https://github.com/home-assistant/core/pull/43551
+[#43552]: https://github.com/home-assistant/core/pull/43552
+[#43555]: https://github.com/home-assistant/core/pull/43555
+[#43557]: https://github.com/home-assistant/core/pull/43557
+[#43564]: https://github.com/home-assistant/core/pull/43564
+[#43572]: https://github.com/home-assistant/core/pull/43572
+[#43578]: https://github.com/home-assistant/core/pull/43578
+[#43579]: https://github.com/home-assistant/core/pull/43579
+[#43583]: https://github.com/home-assistant/core/pull/43583
+[#43594]: https://github.com/home-assistant/core/pull/43594
+[#43597]: https://github.com/home-assistant/core/pull/43597
+[#43598]: https://github.com/home-assistant/core/pull/43598
+[#43602]: https://github.com/home-assistant/core/pull/43602
+[#43603]: https://github.com/home-assistant/core/pull/43603
+[#43607]: https://github.com/home-assistant/core/pull/43607
+[#43608]: https://github.com/home-assistant/core/pull/43608
+[#43610]: https://github.com/home-assistant/core/pull/43610
+[#43611]: https://github.com/home-assistant/core/pull/43611
+[#43619]: https://github.com/home-assistant/core/pull/43619
+[#43623]: https://github.com/home-assistant/core/pull/43623
+[#43628]: https://github.com/home-assistant/core/pull/43628
+[#43636]: https://github.com/home-assistant/core/pull/43636
+[#43638]: https://github.com/home-assistant/core/pull/43638
+[#43639]: https://github.com/home-assistant/core/pull/43639
+[#43641]: https://github.com/home-assistant/core/pull/43641
+[#43642]: https://github.com/home-assistant/core/pull/43642
+[#43645]: https://github.com/home-assistant/core/pull/43645
+[#43650]: https://github.com/home-assistant/core/pull/43650
+[#43651]: https://github.com/home-assistant/core/pull/43651
+[#43655]: https://github.com/home-assistant/core/pull/43655
+[#43658]: https://github.com/home-assistant/core/pull/43658
+[#43659]: https://github.com/home-assistant/core/pull/43659
+[#43663]: https://github.com/home-assistant/core/pull/43663
+[#43665]: https://github.com/home-assistant/core/pull/43665
+[#43667]: https://github.com/home-assistant/core/pull/43667
+[#43668]: https://github.com/home-assistant/core/pull/43668
+[#43673]: https://github.com/home-assistant/core/pull/43673
+[#43676]: https://github.com/home-assistant/core/pull/43676
+[#43678]: https://github.com/home-assistant/core/pull/43678
+[#43680]: https://github.com/home-assistant/core/pull/43680
+[#43681]: https://github.com/home-assistant/core/pull/43681
+[#43682]: https://github.com/home-assistant/core/pull/43682
+[#43684]: https://github.com/home-assistant/core/pull/43684
+[#43685]: https://github.com/home-assistant/core/pull/43685
+[#43686]: https://github.com/home-assistant/core/pull/43686
+[#43690]: https://github.com/home-assistant/core/pull/43690
+[#43692]: https://github.com/home-assistant/core/pull/43692
+[#43693]: https://github.com/home-assistant/core/pull/43693
+[#43695]: https://github.com/home-assistant/core/pull/43695
+[#43696]: https://github.com/home-assistant/core/pull/43696
+[#43700]: https://github.com/home-assistant/core/pull/43700
+[#43704]: https://github.com/home-assistant/core/pull/43704
+[#43705]: https://github.com/home-assistant/core/pull/43705
+[#43707]: https://github.com/home-assistant/core/pull/43707
+[#43710]: https://github.com/home-assistant/core/pull/43710
+[#43719]: https://github.com/home-assistant/core/pull/43719
+[#43720]: https://github.com/home-assistant/core/pull/43720
+[#43721]: https://github.com/home-assistant/core/pull/43721
+[#43722]: https://github.com/home-assistant/core/pull/43722
+[#43724]: https://github.com/home-assistant/core/pull/43724
+[#43725]: https://github.com/home-assistant/core/pull/43725
+[#43729]: https://github.com/home-assistant/core/pull/43729
+[#43732]: https://github.com/home-assistant/core/pull/43732
+[#43733]: https://github.com/home-assistant/core/pull/43733
+[#43737]: https://github.com/home-assistant/core/pull/43737
+[#43741]: https://github.com/home-assistant/core/pull/43741
+[#43745]: https://github.com/home-assistant/core/pull/43745
+[#43754]: https://github.com/home-assistant/core/pull/43754
+[#43762]: https://github.com/home-assistant/core/pull/43762
+[#43767]: https://github.com/home-assistant/core/pull/43767
+[#43768]: https://github.com/home-assistant/core/pull/43768
+[#43772]: https://github.com/home-assistant/core/pull/43772
+[#43775]: https://github.com/home-assistant/core/pull/43775
+[#43778]: https://github.com/home-assistant/core/pull/43778
+[#43779]: https://github.com/home-assistant/core/pull/43779
+[#43781]: https://github.com/home-assistant/core/pull/43781
+[#43783]: https://github.com/home-assistant/core/pull/43783
+[#43786]: https://github.com/home-assistant/core/pull/43786
+[#43787]: https://github.com/home-assistant/core/pull/43787
+[#43790]: https://github.com/home-assistant/core/pull/43790
+[#43792]: https://github.com/home-assistant/core/pull/43792
+[#43796]: https://github.com/home-assistant/core/pull/43796
+[#43799]: https://github.com/home-assistant/core/pull/43799
+[#43804]: https://github.com/home-assistant/core/pull/43804
+[#43809]: https://github.com/home-assistant/core/pull/43809
+[#43810]: https://github.com/home-assistant/core/pull/43810
+[#43811]: https://github.com/home-assistant/core/pull/43811
+[#43814]: https://github.com/home-assistant/core/pull/43814
+[#43817]: https://github.com/home-assistant/core/pull/43817
+[#43818]: https://github.com/home-assistant/core/pull/43818
+[#43820]: https://github.com/home-assistant/core/pull/43820
+[#43821]: https://github.com/home-assistant/core/pull/43821
+[#43824]: https://github.com/home-assistant/core/pull/43824
+[#43829]: https://github.com/home-assistant/core/pull/43829
+[#43830]: https://github.com/home-assistant/core/pull/43830
+[#43831]: https://github.com/home-assistant/core/pull/43831
+[#43832]: https://github.com/home-assistant/core/pull/43832
+[#43833]: https://github.com/home-assistant/core/pull/43833
+[#43837]: https://github.com/home-assistant/core/pull/43837
+[#43838]: https://github.com/home-assistant/core/pull/43838
+[#43841]: https://github.com/home-assistant/core/pull/43841
+[#43846]: https://github.com/home-assistant/core/pull/43846
+[#43847]: https://github.com/home-assistant/core/pull/43847
+[#43848]: https://github.com/home-assistant/core/pull/43848
+[#43853]: https://github.com/home-assistant/core/pull/43853
+[#43854]: https://github.com/home-assistant/core/pull/43854
+[#43855]: https://github.com/home-assistant/core/pull/43855
+[#43858]: https://github.com/home-assistant/core/pull/43858
+[#43859]: https://github.com/home-assistant/core/pull/43859
+[#43860]: https://github.com/home-assistant/core/pull/43860
+[#43862]: https://github.com/home-assistant/core/pull/43862
+[#43864]: https://github.com/home-assistant/core/pull/43864
+[#43875]: https://github.com/home-assistant/core/pull/43875
+[#43898]: https://github.com/home-assistant/core/pull/43898
+[#43899]: https://github.com/home-assistant/core/pull/43899
+[#43900]: https://github.com/home-assistant/core/pull/43900
+[#43901]: https://github.com/home-assistant/core/pull/43901
+[#43907]: https://github.com/home-assistant/core/pull/43907
+[#43912]: https://github.com/home-assistant/core/pull/43912
+[#43938]: https://github.com/home-assistant/core/pull/43938
+[#43939]: https://github.com/home-assistant/core/pull/43939
+[#43942]: https://github.com/home-assistant/core/pull/43942
+[#43945]: https://github.com/home-assistant/core/pull/43945
+[#43950]: https://github.com/home-assistant/core/pull/43950
+[#43951]: https://github.com/home-assistant/core/pull/43951
+[#43954]: https://github.com/home-assistant/core/pull/43954
+[#43986]: https://github.com/home-assistant/core/pull/43986
+[#43995]: https://github.com/home-assistant/core/pull/43995
+[#44001]: https://github.com/home-assistant/core/pull/44001
+[#44003]: https://github.com/home-assistant/core/pull/44003
+[#44009]: https://github.com/home-assistant/core/pull/44009
+[#44014]: https://github.com/home-assistant/core/pull/44014
+[#44017]: https://github.com/home-assistant/core/pull/44017
+[#44019]: https://github.com/home-assistant/core/pull/44019
+[#44030]: https://github.com/home-assistant/core/pull/44030
+[#44034]: https://github.com/home-assistant/core/pull/44034
+[#44036]: https://github.com/home-assistant/core/pull/44036
+[#44039]: https://github.com/home-assistant/core/pull/44039
+[#44040]: https://github.com/home-assistant/core/pull/44040
+[#44048]: https://github.com/home-assistant/core/pull/44048
+[#44051]: https://github.com/home-assistant/core/pull/44051
+[#44058]: https://github.com/home-assistant/core/pull/44058
+[#44059]: https://github.com/home-assistant/core/pull/44059
+[#44061]: https://github.com/home-assistant/core/pull/44061
+[#44062]: https://github.com/home-assistant/core/pull/44062
+[#44069]: https://github.com/home-assistant/core/pull/44069
+[#44087]: https://github.com/home-assistant/core/pull/44087
+[#44097]: https://github.com/home-assistant/core/pull/44097
+[#44098]: https://github.com/home-assistant/core/pull/44098
+[#44104]: https://github.com/home-assistant/core/pull/44104
+[#44105]: https://github.com/home-assistant/core/pull/44105
+[#44106]: https://github.com/home-assistant/core/pull/44106
+[#44108]: https://github.com/home-assistant/core/pull/44108
+[#44137]: https://github.com/home-assistant/core/pull/44137
+[#44151]: https://github.com/home-assistant/core/pull/44151
+[#44154]: https://github.com/home-assistant/core/pull/44154
+[#44156]: https://github.com/home-assistant/core/pull/44156
+[#44160]: https://github.com/home-assistant/core/pull/44160
+[#44173]: https://github.com/home-assistant/core/pull/44173
+[@100ferhas]: https://github.com/100ferhas
+[@Adminiuga]: https://github.com/Adminiuga
+[@Alex-Klein]: https://github.com/Alex-Klein
+[@AlexSzlavik]: https://github.com/AlexSzlavik
+[@BKPepe]: https://github.com/BKPepe
+[@Cereal2nd]: https://github.com/Cereal2nd
+[@CoMPaTech]: https://github.com/CoMPaTech
+[@CrashWorksLLC]: https://github.com/CrashWorksLLC
+[@Danielhiversen]: https://github.com/Danielhiversen
+[@Danielinte]: https://github.com/Danielinte
+[@Ernst79]: https://github.com/Ernst79
+[@FlavorFx]: https://github.com/FlavorFx
+[@FrnchFrgg]: https://github.com/FrnchFrgg
+[@FuzzyMistborn]: https://github.com/FuzzyMistborn
+[@GuyKh]: https://github.com/GuyKh
+[@JJdeVries]: https://github.com/JJdeVries
+[@JPHutchins]: https://github.com/JPHutchins
+[@Jc2k]: https://github.com/Jc2k
+[@JeffLIrion]: https://github.com/JeffLIrion
+[@Kane610]: https://github.com/Kane610
+[@LordBoos]: https://github.com/LordBoos
+[@MartinHjelmare]: https://github.com/MartinHjelmare
+[@NigelRook]: https://github.com/NigelRook
+[@Quentame]: https://github.com/Quentame
+[@RobBie1221]: https://github.com/RobBie1221
+[@Shulyaka]: https://github.com/Shulyaka
+[@StevenLooman]: https://github.com/StevenLooman
+[@TakesTheBiscuit]: https://github.com/TakesTheBiscuit
+[@TheLastProject]: https://github.com/TheLastProject
+[@Toxblh]: https://github.com/Toxblh
+[@abmantis]: https://github.com/abmantis
+[@adamkrol93]: https://github.com/adamkrol93
+[@adriansuwala]: https://github.com/adriansuwala
+[@adrum]: https://github.com/adrum
+[@ahayworth]: https://github.com/ahayworth
+[@alandtse]: https://github.com/alandtse
+[@alemuro]: https://github.com/alemuro
+[@alengwenus]: https://github.com/alengwenus
+[@allenporter]: https://github.com/allenporter
+[@amelchio]: https://github.com/amelchio
+[@andrewsayre]: https://github.com/andrewsayre
+[@atmurray]: https://github.com/atmurray
+[@b4dpxl]: https://github.com/b4dpxl
+[@bachya]: https://github.com/bachya
+[@balloob]: https://github.com/balloob
+[@basnijholt]: https://github.com/basnijholt
+[@bdraco]: https://github.com/bdraco
+[@bieniu]: https://github.com/bieniu
+[@boxcee]: https://github.com/boxcee
+[@bramkragten]: https://github.com/bramkragten
+[@brg468]: https://github.com/brg468
+[@briglx]: https://github.com/briglx
+[@cgarwood]: https://github.com/cgarwood
+[@chemelli74]: https://github.com/chemelli74
+[@ctalkington]: https://github.com/ctalkington
+[@cyberjunky]: https://github.com/cyberjunky
+[@czechmark]: https://github.com/czechmark
+[@danielrheinbay]: https://github.com/danielrheinbay
+[@denics]: https://github.com/denics
+[@dermotduffy]: https://github.com/dermotduffy
+[@dgomes]: https://github.com/dgomes
+[@djtimca]: https://github.com/djtimca
+[@dmulcahey]: https://github.com/dmulcahey
+[@dr1rrb]: https://github.com/dr1rrb
+[@dvv]: https://github.com/dvv
+[@ehendrix23]: https://github.com/ehendrix23
+[@elupus]: https://github.com/elupus
+[@emlove]: https://github.com/emlove
+[@emontnemery]: https://github.com/emontnemery
+[@epenet]: https://github.com/epenet
+[@etheralm]: https://github.com/etheralm
+[@fabaff]: https://github.com/fabaff
+[@farmio]: https://github.com/farmio
+[@felipediel]: https://github.com/felipediel
+[@firstof9]: https://github.com/firstof9
+[@flowolf]: https://github.com/flowolf
+[@frenck]: https://github.com/frenck
+[@fronzbot]: https://github.com/fronzbot
+[@gtdiehl]: https://github.com/gtdiehl
+[@hmmbob]: https://github.com/hmmbob
+[@imbrianj]: https://github.com/imbrianj
+[@iprak]: https://github.com/iprak
+[@jasperslits]: https://github.com/jasperslits
+[@javache]: https://github.com/javache
+[@javicalle]: https://github.com/javicalle
+[@jjlawren]: https://github.com/jjlawren
+[@kiall]: https://github.com/kiall
+[@klaasnicolaas]: https://github.com/klaasnicolaas
+[@koolsb]: https://github.com/koolsb
+[@liudger]: https://github.com/liudger
+[@mLupine]: https://github.com/mLupine
+[@mib1185]: https://github.com/mib1185
+[@moinmoin-sh]: https://github.com/moinmoin-sh
+[@mtdcr]: https://github.com/mtdcr
+[@mvn23]: https://github.com/mvn23
+[@ofalvai]: https://github.com/ofalvai
+[@pattyland]: https://github.com/pattyland
+[@pavoni]: https://github.com/pavoni
+[@postlund]: https://github.com/postlund
+[@rytilahti]: https://github.com/rytilahti
+[@scarface-4711]: https://github.com/scarface-4711
+[@scop]: https://github.com/scop
+[@shenxn]: https://github.com/shenxn
+[@shocklateboy92]: https://github.com/shocklateboy92
+[@shred86]: https://github.com/shred86
+[@spacegaier]: https://github.com/spacegaier
+[@springstan]: https://github.com/springstan
+[@squishykid]: https://github.com/squishykid
+[@starkillerOG]: https://github.com/starkillerOG
+[@syssi]: https://github.com/syssi
+[@tehbrd]: https://github.com/tehbrd
+[@tetienne]: https://github.com/tetienne
+[@thecode]: https://github.com/thecode
+[@thimic]: https://github.com/thimic
+[@thomasdelaet]: https://github.com/thomasdelaet
+[@tim427]: https://github.com/tim427
+[@timmo001]: https://github.com/timmo001
+[@treylok]: https://github.com/treylok
+[@ttuffin]: https://github.com/ttuffin
+[@vzahradnik]: https://github.com/vzahradnik
+[@wicol]: https://github.com/wicol
+[@zewelor]: https://github.com/zewelor
+[@zxdavb]: https://github.com/zxdavb
+[abode docs]: /integrations/abode/
+[accuweather docs]: /integrations/accuweather/
+[acmeda docs]: /integrations/acmeda/
+[airly docs]: /integrations/airly/
+[airvisual docs]: /integrations/airvisual/
+[alexa docs]: /integrations/alexa/
+[ambient_station docs]: /integrations/ambient_station/
+[api docs]: /integrations/api/
+[apple_tv docs]: /integrations/apple_tv/
+[arlo docs]: /integrations/arlo/
+[asuswrt docs]: /integrations/asuswrt/
+[aurora docs]: /integrations/aurora/
+[automation docs]: /integrations/automation/
+[awair docs]: /integrations/awair/
+[axis docs]: /integrations/axis/
+[beewi_smartclim docs]: /integrations/beewi_smartclim/
+[blink docs]: /integrations/blink/
+[blueprint docs]: /integrations/blueprint/
+[broadlink docs]: /integrations/broadlink/
+[brother docs]: /integrations/brother/
+[bsblan docs]: /integrations/bsblan/
+[cert_expiry docs]: /integrations/cert_expiry/
+[cloud docs]: /integrations/cloud/
+[config docs]: /integrations/config/
+[debugpy docs]: /integrations/debugpy/
+[deconz docs]: /integrations/deconz/
+[default_config docs]: /integrations/default_config/
+[demo docs]: /integrations/demo/
+[denonavr docs]: /integrations/denonavr/
+[derivative docs]: /integrations/derivative/
+[device_tracker docs]: /integrations/device_tracker/
+[directv docs]: /integrations/directv/
+[doorbird docs]: /integrations/doorbird/
+[dsmr docs]: /integrations/dsmr/
+[dsmr_reader docs]: /integrations/dsmr_reader/
+[dyson docs]: /integrations/dyson/
+[ecobee docs]: /integrations/ecobee/
+[eddystone_temperature docs]: /integrations/eddystone_temperature/
+[edl21 docs]: /integrations/edl21/
+[elgato docs]: /integrations/elgato/
+[enphase_envoy docs]: /integrations/enphase_envoy/
+[eq3btsmart docs]: /integrations/eq3btsmart/
+[esphome docs]: /integrations/esphome/
+[essent docs]: /integrations/essent/
+[evohome docs]: /integrations/evohome/
+[fan docs]: /integrations/fan/
+[fireservicerota docs]: /integrations/fireservicerota/
+[fitbit docs]: /integrations/fitbit/
+[flo docs]: /integrations/flo/
+[foobot docs]: /integrations/foobot/
+[foscam docs]: /integrations/foscam/
+[frontend docs]: /integrations/frontend/
+[generic_thermostat docs]: /integrations/generic_thermostat/
+[google_assistant docs]: /integrations/google_assistant/
+[google_wifi docs]: /integrations/google_wifi/
+[group docs]: /integrations/group/
+[hassio docs]: /integrations/hassio/
+[heos docs]: /integrations/heos/
+[history_stats docs]: /integrations/history_stats/
+[homeassistant docs]: /integrations/homeassistant/
+[homekit_controller docs]: /integrations/homekit_controller/
+[http docs]: /integrations/http/
+[hyperion docs]: /integrations/hyperion/
+[input_boolean docs]: /integrations/input_boolean/
+[input_datetime docs]: /integrations/input_datetime/
+[input_number docs]: /integrations/input_number/
+[intesishome docs]: /integrations/intesishome/
+[ios docs]: /integrations/ios/
+[ipma docs]: /integrations/ipma/
+[knx docs]: /integrations/knx/
+[kodi docs]: /integrations/kodi/
+[kulersky docs]: /integrations/kulersky/
+[lastfm docs]: /integrations/lastfm/
+[lcn docs]: /integrations/lcn/
+[local_ip docs]: /integrations/local_ip/
+[luftdaten docs]: /integrations/luftdaten/
+[media_extractor docs]: /integrations/media_extractor/
+[media_player docs]: /integrations/media_player/
+[meraki docs]: /integrations/meraki/
+[met docs]: /integrations/met/
+[mill docs]: /integrations/mill/
+[mobile_app docs]: /integrations/mobile_app/
+[modbus docs]: /integrations/modbus/
+[motion_blinds docs]: /integrations/motion_blinds/
+[mqtt docs]: /integrations/mqtt/
+[myq docs]: /integrations/myq/
+[neato docs]: /integrations/neato/
+[nello docs]: /integrations/nello/
+[nest docs]: /integrations/nest/
+[notify docs]: /integrations/notify/
+[notion docs]: /integrations/notion/
+[number docs]: /integrations/number/
+[onewire docs]: /integrations/onewire/
+[onvif docs]: /integrations/onvif/
+[openuv docs]: /integrations/openuv/
+[openweathermap docs]: /integrations/openweathermap/
+[ovo_energy docs]: /integrations/ovo_energy/
+[ozw docs]: /integrations/ozw/
+[plex docs]: /integrations/plex/
+[plugwise docs]: /integrations/plugwise/
+[point docs]: /integrations/point/
+[pvoutput docs]: /integrations/pvoutput/
+[rainmachine docs]: /integrations/rainmachine/
+[recollect_waste docs]: /integrations/recollect_waste/
+[recorder docs]: /integrations/recorder/
+[remote docs]: /integrations/remote/
+[rest docs]: /integrations/rest/
+[rflink docs]: /integrations/rflink/
+[ring docs]: /integrations/ring/
+[roomba docs]: /integrations/roomba/
+[rpi_power docs]: /integrations/rpi_power/
+[scrape docs]: /integrations/scrape/
+[sensehat docs]: /integrations/sensehat/
+[sentry docs]: /integrations/sentry/
+[seventeentrack docs]: /integrations/seventeentrack/
+[shelly docs]: /integrations/shelly/
+[simplisafe docs]: /integrations/simplisafe/
+[slack docs]: /integrations/slack/
+[smartthings docs]: /integrations/smartthings/
+[solaredge docs]: /integrations/solaredge/
+[solarlog docs]: /integrations/solarlog/
+[solax docs]: /integrations/solax/
+[somfy docs]: /integrations/somfy/
+[sonos docs]: /integrations/sonos/
+[spotify docs]: /integrations/spotify/
+[srp_energy docs]: /integrations/srp_energy/
+[surepetcare docs]: /integrations/surepetcare/
+[synology_dsm docs]: /integrations/synology_dsm/
+[tag docs]: /integrations/tag/
+[tasmota docs]: /integrations/tasmota/
+[telegram_bot docs]: /integrations/telegram_bot/
+[tellduslive docs]: /integrations/tellduslive/
+[template docs]: /integrations/template/
+[tesla docs]: /integrations/tesla/
+[threshold docs]: /integrations/threshold/
+[time_date docs]: /integrations/time_date/
+[toon docs]: /integrations/toon/
+[tplink docs]: /integrations/tplink/
+[transmission docs]: /integrations/transmission/
+[tuya docs]: /integrations/tuya/
+[twinkly docs]: /integrations/twinkly/
+[twitter docs]: /integrations/twitter/
+[unifi docs]: /integrations/unifi/
+[upnp docs]: /integrations/upnp/
+[uptime docs]: /integrations/uptime/
+[utility_meter docs]: /integrations/utility_meter/
+[vasttrafik docs]: /integrations/vasttrafik/
+[watson_tts docs]: /integrations/watson_tts/
+[websocket_api docs]: /integrations/websocket_api/
+[wemo docs]: /integrations/wemo/
+[wolflink docs]: /integrations/wolflink/
+[xiaomi docs]: /integrations/xiaomi/
+[xiaomi_miio docs]: /integrations/xiaomi_miio/
+[yeelight docs]: /integrations/yeelight/
+[zeroconf docs]: /integrations/zeroconf/
+[zha docs]: /integrations/zha/
+[zone docs]: /integrations/zone/
diff --git a/source/_redirects b/source/_redirects
index dba46f443dc..da56a0e89f6 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -367,7 +367,6 @@
/components/device_tracker.tplink /integrations/tplink
/components/device_tracker.traccar /integrations/traccar
/components/device_tracker.trackr /integrations/trackr
-/components/device_tracker.ubee /integrations/ubee
/components/device_tracker.ubus /integrations/ubus
/components/device_tracker.unifi /integrations/unifi
/components/device_tracker.unifi_direct /integrations/unifi_direct
@@ -604,7 +603,6 @@
/components/notify.twitter /integrations/twitter
/components/notify.webostv /integrations/webostv
/components/notify.xmpp /integrations/xmpp
-/components/notify.yessssms /integrations/yessssms
/components/openalpr /integrations/openalpr_local
/components/pollen /integrations/iqvia
/components/public_sensor.netatmo /integrations/netatmo
@@ -1917,7 +1915,6 @@
/components/twilio_sms /integrations/twilio_sms
/components/twitch /integrations/twitch
/components/twitter /integrations/twitter
-/components/ubee /integrations/ubee
/components/ubus /integrations/ubus
/components/ue_smart_radio /integrations/ue_smart_radio
/components/uk_transport /integrations/uk_transport
@@ -2001,7 +1998,6 @@
/components/yandextts /integrations/yandextts
/components/yeelight /integrations/yeelight
/components/yeelightsunflower /integrations/yeelightsunflower
-/components/yessssms /integrations/yessssms
/components/yi /integrations/yi
/components/zabbix /integrations/zabbix
/components/zamg /integrations/zamg
@@ -2055,6 +2051,8 @@
/ecosystem/notebooks/stats https://data.home-assistant.io
/ios/whats-new https://companion.home-assistant.io/docs/getting_started/getting-started
/integrations/auth /docs/authentication
+/integrations/automation /docs/automation
+/integrations/blueprint /docs/automation/using_blueprints
/integrations/binary_sensor.knx /integrations/knx#binary-sensor
/integrations/climate.knx /integrations/knx#climate
/integrations/cover.knx /integrations/knx#cover
diff --git a/source/blue/index.html b/source/blue/index.html
new file mode 100644
index 00000000000..ca797ffb9c3
--- /dev/null
+++ b/source/blue/index.html
@@ -0,0 +1,776 @@
+---
+title: "Home Assistant Blue!"
+description: "Where style and performance meet privacy"
+sidebar: false
+is_homepage: true
+hide_github_edit: true
+body_id: blue
+show_title: false
+og_image: /images/blue/blue_hero.jpg
+---
+
+
+
+
+ Home Assistant
+
+
+
+
+
+
+
+
The missing piece
+
+ We challenged ourselves: what would the perfect home automation hub look
+ like. Not just software, but also hardware and looks.
+
+
+ The result is the limited edition Home Assistant Blue bundle. Hardware
+ that is affordable and fast, packed in a gorgeous case and powered by
+ the most powerful home automation software on the planet: Home
+ Assistant.
+
+
+
+
LIMITED EDITION
+
+ $140
+
*
+
+
+
+
+
+
+
+
BUY NOW
+
+
+
+
+ * Price does not include taxes and import fees
+
+
+
+
+ Powerful
+ ODROID-N2+
+ 4GB DDR4
+
+
+ Reliable
+ eMMC
+ FAST 128GB
+
+
+ Complete
+ All-in-one
+ Core, Case and Power
+
+
+ Ready
+ Zero Setup
+ Comes with Home Assistant
+
+
+
+
+
+
+
Our Blue vision
+
+ The perfect platform to run Home Assistant
+
+
+
+
Easy to use
+
+ Powered by our Home Assistant Operating System, getting started is
+ as easy as plugging in the network and power cables and opening up
+ the Home Assistant mobile app to get started.
+
+
+
+
Reliable
+
+ Home Assistant Blue comes with 128GB of eMMC storage. That’s the
+ same type of storage your phone uses. A sudden loss of power won’t
+ fry it.
+
+
+
+
Beautiful
+
+ Home Assistant Blue looks as good as the software that runs it:
+ eye-catching. Together with
+ Hahn Werke
+ we have designed a beautiful aluminium case.
+
+
+
+
Open source
+
+ All software that runs on Home Assistant Blue is open source.
+ Including all the hardware drivers. We’ve worked with
+ BayLibre to fix
+ bugs and get it merged upstream in the Linux kernel!
+
+
+
+
+
+
+
+
Change of mood?
+
+
+
+ ZEN
+
MODE
+
+
+
+
+
+
+
►
+ Rotate the cover
+ in 2 mins
+
◄
+
+
+
+ DEV
+
MODE
+
+
+
+
+
+
+
+
+
Home Assistant Features
+
+ {% include custom/features.html %}
+
+
Specifications
+
+
+
Components
+
+
Processor
+
+ 6-Core Amlogic S922X Processor (ARMv8-A)
+
+
+
Quad-core Cortex-A73 @ 2.2Ghz
+
Dual-core Cortex-A53 @ 1.8GhZ
+
+
+
+
+
Memory
+
4GB DDR4
+
+
Storage
+
128GB eMMC Flash included
+
+
Networking
+
+ 1x RJ45 LAN Port
+
10/100/1000 Mbps
+
+
+
Audio
+
+ 1x 3.5mm Jack
+
+ High quality 384Khz/32bit stereo line-out
+
+
+
+
Connectivity
+
+ 4x USB Type-A Ports
+
USB 3.0
+
+
+ 1x HDMI Output
+
HDMI 2.0
+
+
+ No Wi-Fi or Bluetooth
+
+ Support for Z-Wave and Zigbee by external USB adaptor
+ (not included)
+
+
+
+
Power
+
+ DC 12V/2A
+
+ Power consumption
+
+
Idle: ≃2.2W
+
Load: ≃6.2W
+
+
+
+
+
+
+
Form Factor
+
+
+ Width
+ 10.4 cm/4.1 inch
+
+
+
+ Height
+ 3.6 cm/1.4 inch
+
+
+
+
+ Depth
+ 9.4 cm/3.7 inch
+
+
+
+
+ Weight
+ 292 g/0.64 lb
+
+
+
+
+
+
FAQs
+
+{% details %}
+ - title: I already run Home Assistant. Is this for me?
+ content: |
+ If your Home Assistant installation has outgrown your Raspberry
+ Pi or if you want a well supported, dedicated system, Home Assistant Blue is
+ for you.
+
+ Or if you are still looking for a present for friends and family.
+
+ - title: What is limited about the bundle?
+ content: |
+ We have only created a limited amount of cases. Once they are sold out,
+ we don't currently have plans to make more.
+ All other parts of the bundle will remain available for purchase.
+
+ - title: I already own an ODROID-N2+. Do I run the same software?
+ content: |
+ Yes! Home Assistant Blue runs the exact same software as that you're
+ currently using and you're benefitting from all the improvements.
+
+ - title: Will Home Assistant drop support for the Raspberry Pi?
+ content: |
+ Nope! We are committed to keep supporting all platforms that are currently available.
+{% enddetails %}
+
+ The Home Assistant Blue is distributed by Hardkernel. The resellers in
+ the various regions will handle the import so you can get your Blue
+ fast and worry free.
+
+
+
+
+
+
+ BUY BLUE
+
+
+
diff --git a/source/images/blog/2020-12-13-os5/social.png b/source/images/blog/2020-12-13-os5/social.png
new file mode 100644
index 00000000000..2d76a601a1c
Binary files /dev/null and b/source/images/blog/2020-12-13-os5/social.png differ
diff --git a/source/images/blog/2020-12/blueprint-ui.png b/source/images/blog/2020-12/blueprint-ui.png
new file mode 100644
index 00000000000..96505b08de3
Binary files /dev/null and b/source/images/blog/2020-12/blueprint-ui.png differ
diff --git a/source/images/blog/2020-12/blueprints.png b/source/images/blog/2020-12/blueprints.png
new file mode 100644
index 00000000000..81f0c683807
Binary files /dev/null and b/source/images/blog/2020-12/blueprints.png differ
diff --git a/source/images/blog/2020-12/disable-device.png b/source/images/blog/2020-12/disable-device.png
new file mode 100644
index 00000000000..8feffb50fad
Binary files /dev/null and b/source/images/blog/2020-12/disable-device.png differ
diff --git a/source/images/blog/2020-12/entity-areas.png b/source/images/blog/2020-12/entity-areas.png
new file mode 100644
index 00000000000..f3b52e483d1
Binary files /dev/null and b/source/images/blog/2020-12/entity-areas.png differ
diff --git a/source/images/blog/2020-12/social.png b/source/images/blog/2020-12/social.png
new file mode 100644
index 00000000000..4be14886778
Binary files /dev/null and b/source/images/blog/2020-12/social.png differ
diff --git a/source/images/blue/blue1.png b/source/images/blue/blue1.png
new file mode 100644
index 00000000000..6bfa8aa17c0
Binary files /dev/null and b/source/images/blue/blue1.png differ
diff --git a/source/images/blue/blue2.png b/source/images/blue/blue2.png
new file mode 100644
index 00000000000..cfdcff9d1bd
Binary files /dev/null and b/source/images/blue/blue2.png differ
diff --git a/source/images/blue/blue3.png b/source/images/blue/blue3.png
new file mode 100644
index 00000000000..d54d32e4750
Binary files /dev/null and b/source/images/blue/blue3.png differ
diff --git a/source/images/blue/blue_3d.jpg b/source/images/blue/blue_3d.jpg
new file mode 100644
index 00000000000..a8cb8797b10
Binary files /dev/null and b/source/images/blue/blue_3d.jpg differ
diff --git a/source/images/blue/blue_dev_mode.png b/source/images/blue/blue_dev_mode.png
new file mode 100644
index 00000000000..b0153830fa3
Binary files /dev/null and b/source/images/blue/blue_dev_mode.png differ
diff --git a/source/images/blue/blue_hero.jpg b/source/images/blue/blue_hero.jpg
new file mode 100644
index 00000000000..5758e4d1376
Binary files /dev/null and b/source/images/blue/blue_hero.jpg differ
diff --git a/source/images/blue/blue_narrow.jpg b/source/images/blue/blue_narrow.jpg
new file mode 100644
index 00000000000..8d77f180a3c
Binary files /dev/null and b/source/images/blue/blue_narrow.jpg differ
diff --git a/source/images/blue/blue_zen_mode.png b/source/images/blue/blue_zen_mode.png
new file mode 100644
index 00000000000..087a5bf4633
Binary files /dev/null and b/source/images/blue/blue_zen_mode.png differ
diff --git a/source/images/blueprints/selector-action.png b/source/images/blueprints/selector-action.png
new file mode 100644
index 00000000000..25d4c17c539
Binary files /dev/null and b/source/images/blueprints/selector-action.png differ
diff --git a/source/images/blueprints/selector-boolean.png b/source/images/blueprints/selector-boolean.png
new file mode 100644
index 00000000000..55dae046c97
Binary files /dev/null and b/source/images/blueprints/selector-boolean.png differ
diff --git a/source/images/blueprints/selector-device.png b/source/images/blueprints/selector-device.png
new file mode 100644
index 00000000000..aa75176341b
Binary files /dev/null and b/source/images/blueprints/selector-device.png differ
diff --git a/source/images/blueprints/selector-entity.png b/source/images/blueprints/selector-entity.png
new file mode 100644
index 00000000000..dcc8bc55d5e
Binary files /dev/null and b/source/images/blueprints/selector-entity.png differ
diff --git a/source/images/blueprints/selector-number.png b/source/images/blueprints/selector-number.png
new file mode 100644
index 00000000000..8d73e008722
Binary files /dev/null and b/source/images/blueprints/selector-number.png differ
diff --git a/source/images/blueprints/selector-target.png b/source/images/blueprints/selector-target.png
new file mode 100644
index 00000000000..ba686317881
Binary files /dev/null and b/source/images/blueprints/selector-target.png differ
diff --git a/source/images/blueprints/selector-time.png b/source/images/blueprints/selector-time.png
new file mode 100644
index 00000000000..8154e277c48
Binary files /dev/null and b/source/images/blueprints/selector-time.png differ
diff --git a/source/images/blueprints/tutorial-ui.png b/source/images/blueprints/tutorial-ui.png
new file mode 100644
index 00000000000..1a84c5718f3
Binary files /dev/null and b/source/images/blueprints/tutorial-ui.png differ
diff --git a/source/images/conference/frontpage-card.png b/source/images/conference/frontpage-card.png
index 70d53f66f96..7f0e312b2fb 100644
Binary files a/source/images/conference/frontpage-card.png and b/source/images/conference/frontpage-card.png differ
diff --git a/source/images/integrations/fireservicerota/dashboard.png b/source/images/integrations/fireservicerota/dashboard.png
new file mode 100644
index 00000000000..eaa27b7266e
Binary files /dev/null and b/source/images/integrations/fireservicerota/dashboard.png differ
diff --git a/source/images/integrations/motion_blinds/Motion_App__get_key_1.jpg b/source/images/integrations/motion_blinds/Motion_App__get_key_1.jpg
new file mode 100644
index 00000000000..a3ede21efd7
Binary files /dev/null and b/source/images/integrations/motion_blinds/Motion_App__get_key_1.jpg differ
diff --git a/source/images/integrations/motion_blinds/Motion_App__get_key_2.jpg b/source/images/integrations/motion_blinds/Motion_App__get_key_2.jpg
new file mode 100644
index 00000000000..35528c52bdc
Binary files /dev/null and b/source/images/integrations/motion_blinds/Motion_App__get_key_2.jpg differ
diff --git a/source/index.html b/source/index.html
index a41d2cb8424..f9c571a0ea4 100644
--- a/source/index.html
+++ b/source/index.html
@@ -26,6 +26,18 @@ description:
Release notes