diff --git a/_config.yml b/_config.yml index f236e7727ea..9dd6542d0d9 100644 --- a/_config.yml +++ b/_config.yml @@ -100,9 +100,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 100 -current_patch_version: 3 -date_released: 2019-10-21 +current_minor_version: 101 +current_patch_version: 0 +date_released: 2019-10-30 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. diff --git a/source/_components/solarlog.markdown b/source/_components/solarlog.markdown new file mode 100644 index 00000000000..c8c21bf73c0 --- /dev/null +++ b/source/_components/solarlog.markdown @@ -0,0 +1,103 @@ +--- +title: "Solar-Log Sensor" +description: "Instructions on how to integrate Solar-Log sensors within Home Assistant." +logo: solar-log.png +ha_category: Sensor +ha_release: 0.101 +ha_iot_class: Local Polling +--- + +The `solarlog` integration uses the open JSON interface on Solar-Log PV monitoring systems to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. + +Before being able to use the integration, you have to activate the open JSON interface on your Solar-Log device. This can be activated from the Configuration | System | Access control menu of your Solar-Log device. +When activating the interface, a red warning triangle with security information and risks is displayed. + +The `solarlog` integration uses the default host address "http://solar-log" if you don't specify a host. If your device isn't accessible on this address, use its IP Address instead. + +
+The open JSON interface is deactivated by default. To activate the open JSON interface, a user password must first be set. The password isn't needed for accessing the open JSON interface. +
+ +## 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 +``` + +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/). + +{% raw %} +```yaml +# Example configuration.yaml entry for sensor template platform +sensor: + - platform: template + sensors: + solarlog_yield_day_template: + value_template: "{{ (states('sensor.solarlog_yield_day') | float * 1000) | round(0) }}" +``` +{% endraw %} + +## Sensors + +The following sensors are available in the library: + +| name | Unit | Description | +|-----------------------|--------|:-------------------------------------------| +| last_update | | Time of latest data update. | +| power_ac | W | Total output PAC from all of the inverters and meters in inverter mode. | +| power_dc | W | Total output PAC from all of the inverters. | +| voltage_ac | V | Average voltage AC from the inverter. | +| voltage_dc | V | Average voltage DC from the inverter | +| yield_day | kWh | Total yield for the day from all of the inverters | +| yield_yesterday | kWh | Total yield for the previous day from all of the inverters. | +| yield_month | kWh | Total yield for the month from all of the inverters. | +| yield_year | kWh | Total yield for the year from all of the inverters. | +| yield_total | kWh | Total yield from all of the inverters. | +| consumption_ac | kWh | Current total consumption AC from all of the consumption meters. | +| consumption_day | kWh | Total consumption for the day from all of the consumption meters. | +| consumption_yesterday | kWh | Total consumption for the previous day from all of the consumption meters. | +| consumption_month | kWh | Total consumption for the month from all of the consumption meters. | +| consumption_year | kWh | Total consumption for the year from all of the consumption meters. | +| consumption_total | kWh | Accumulated total consumption from all consumption meters. | +| total_power | Wp | Installed generator power. | +| alternator_loss | W | Altenator loss (equals to power_dc - power_ac) | +| capacity | % | Capacity (equals to power_dc / total power) | +| efficiency | % W/Wp | Efficiency (equals to power_ac / power_dc | +| power_available | W | Available power (equals to power_ac - consumption_ac) | +| usage | | Usage (equals to consumption_ac / power_ac) | + +
+The solarlog integration is using the sunwatcher pypi package to get the data from your Solar-Log device. The last five sensors are not reported by your Solar-Log device directly, but are computed by the sunwatcher package. +
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index 9719eb1c148..5df06230c4f 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -180,6 +180,54 @@ The same thing can also be expressed as a filter: - Filter `timestamp_utc` will convert a UNIX timestamp to UTC time/data. - Filter `timestamp_custom(format_string, local_boolean)` will convert a UNIX timestamp to a custom format, the use of a local timestamp is default. Supports the standard [Python time formatting options](https://docs.python.org/3/library/time.html#time.strftime). +### To/From JSON + +The `to_json` filter serializes an object to a JSON string. In some cases, it may be necessary to format a JSON string for use with a webhook, as a parameter for command line utilities or any number of other applications. This can be complicated in a template, especially when dealing with escaping special characters. Using the `to_json` filter, this is handled automatically. + +The `from_json` filter operates similarly, but in the other direction, de-serializing a JSON string back into an object. + +### To/From JSON examples + +In this example, the special character '°' will be automatically escaped in order to produce valid JSON. The difference between the stringified object and the actual JSON is evident. + +*Template* + +{% raw %} +```text +{% set temp = {'temperature': 25, 'unit': '°C'} %} +stringified object: {{ temp }} +object|to_json: {{ temp|to_json }} +``` +{% endraw %} + +*Output* + +{% raw %} +```text +stringified object: {'temperature': 25, 'unit': '°C'} +object|to_json: {"temperature": 25, "unit": "\u00b0C"} +``` +{% endraw %} + +Conversely, `from_json` can be used to de-serialize a JSON string back into an object to make it possible to easily extract usable data. + +*Template* + +{% raw %} +```text +{% set temp = '{"temperature": 25, "unit": "\u00b0C"}'|from_json %} +The temperature is {{ temp.temperature }}{{ temp.unit }} +``` +{% endraw %} + +*Output* + +{% raw %} +```text +The temperature is 25°C +``` +{% endraw %} + ### Distance - `distance()` will measure the distance in kilometers between home, entity, coordinates. diff --git a/source/_docs/mqtt/birth_will.markdown b/source/_docs/mqtt/birth_will.markdown index 0a6c2f818e9..3c1737f3a91 100644 --- a/source/_docs/mqtt/birth_will.markdown +++ b/source/_docs/mqtt/birth_will.markdown @@ -41,7 +41,7 @@ birth_message: retain: description: If the published message should have the retain flag on or not. required: false - default: true + default: false type: boolean will_message: description: Will Message @@ -64,6 +64,6 @@ will_message: retain: description: If the published message should have the retain flag on or not. required: false - default: true + default: false type: boolean {% endconfiguration %} diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index bd6679bd9f9..c871b6303da 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -34,6 +34,14 @@ The most important one is the action to call a service. This can be done in vari brightness: 100 ``` +#### Activate a Scene + +Scripts may also use a shortcut syntax for activating scenes instead of calling the `scene.turn_on` service. + +```yaml +- scene: scene.morning_living_room +``` + ### Test a Condition While executing a script you can add a condition to stop further execution. When a condition does not return `true`, the script will stop executing. There are many different conditions which are documented at the [conditions page]. diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown index d8dbd0dd207..8d4f2ca3483 100644 --- a/source/_integrations/abode.markdown +++ b/source/_integrations/abode.markdown @@ -14,6 +14,7 @@ ha_category: - Switch ha_release: 0.52 ha_iot_class: Cloud Push +ha_config_flow: true --- The `abode` integration will allow users to integrate their Abode Home Security systems into Home Assistant and use its alarm system and sensors to automate their homes. @@ -23,31 +24,23 @@ Please visit the [Abode website](https://goabode.com/) for further information a There is currently support for the following device types within Home Assistant: - **Alarm Control Panel**: Reports on the current alarm status and can be used to arm and disarm the system. -- [**Binary Sensor**](/integrations/abode/#binary-sensor): Reports on `Quick Actions`, `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. +- [**Binary Sensor**](/integrations/abode/#binary-sensor): Reports on `Quick Actions`, `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. Also lists all Abode `Quick Actions` that are set up. You can trigger these quick actions by passing the `entity_id` of your quick action binary sensor to the [trigger_quick_action service](/integrations/abode/#trigger_quick_action). - **Camera**: Reports on `Camera` devices and will download and show the latest captured still image. - **Cover**: Reports on `Secure Barriers` and can be used to open and close the cover. - **Lock**: Reports on `Door Locks` and can be used to lock and unlock the door. - [**Light**](/integrations/abode/#light): Reports on `Dimmer` lights and can be used to dim or turn the light on and off. -- [**Switch**](/integrations/abode/#switch): Reports on `Power Switch` devices and can be used to turn the power switch on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them. +- [**Switch**](/integrations/abode/#switch): Reports on `Power Switch` devices and can be used to turn the power switch on and off. Also reports on `Automations` set up in the Abode system and allows you to activate or deactivate them (does not work with Abode's CUE automations). - **Sensor**: Reports on `Temperature`, `Humidity`, and `Light` sensors. ## Configuration -To use Abode devices in your installation, -add the following `abode` section to your `configuration.yaml` file: +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: ```yaml # Example configuration.yaml entry abode: username: abode_username password: abode_password - name: Abode Alarm System - polling: false - exclude: - - 'ZW:0000000034' - - 'RF:00000011' - lights: - - 'ZW:0000000022' ``` {% configuration %} @@ -59,10 +52,6 @@ password: description: Password for your Abode account. required: true type: string -name: - description: The name for your alarm controller. - required: false - type: string polling: description: > Enable polling if cloud push updating is less reliable. @@ -70,18 +59,6 @@ polling: required: false type: boolean default: false -exclude: - description: > - A list of devices to exclude from Home Assistant by their Abode `device_id` - or `automation_id`, found within the integration attributes. - required: false - type: list -lights: - description: > - A list of switch devices that Home Assistant should treat as lights by the - switches Abode `device_id`, found within the integration attributes. - required: false - type: list {% endconfiguration %} ## Events @@ -94,6 +71,12 @@ They are grouped into the below events: - **abode_automation**: Fired when an Automation is triggered from Abode. - **abode_panel_fault**: Fired when there is a fault with the Abode hub. This includes events like loss of power, low battery, tamper switches, polling failures, and signal interference. - **abode_panel_restore**: Fired when the panel fault is restored. +- **abode_disarm**: Fired when the alarm is disarmed. +- **abode_arm**: Fired when the alarm is armed (home or away). +- **abode_test**: Fired when a sensor is in test mode. +- **abode_capture**: Fired when an image is captured. +- **abode_device**: Fired for device changes/additions/deletions. +- **abode_automation_edit**: Fired for changes to automations. All events have the fields: @@ -141,19 +124,3 @@ Trigger a quick action automation on your Abode system. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | No | String or list of strings that point at `entity_id`s of binary_sensors that represent your Abode quick actions. - -### Binary Sensor - -This integration will add `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. - -This integration will also list all Abode `Quick Actions` that are set up. You can trigger these quick actions by passing the `entity_id` of your quick action binary sensor to the [trigger_quick_action service](/integrations/abode/#trigger_quick_action). - -### Light - -This integration will automatically add `Lights` configured in your Abode account. You can reclassify `Switches` to show up within Home Assistant as lights by listing the Abode device ID in your [configuration](/integrations/abode/#configuration). - -### Switch - -This integration will automatically add `Power Switches` configured in your Abode account. You can reclassify switches to show up within Home Assistant as `Lights` by listing the Abode device ID in your [configuration](/integrations/abode/#configuration). - -This integration will also list all Abode `Automations` that are set up within the Abode system, allowing you to activate and deactivate the automations. diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown new file mode 100644 index 00000000000..433dd654567 --- /dev/null +++ b/source/_integrations/airly.markdown @@ -0,0 +1,41 @@ +--- +title: "Airly" +description: "Instructions on how to integrate Airly within Home Assistant." +logo: airly.png +ha_category: + - Health +ha_release: 0.101 +ha_iot_class: Cloud Polling +--- + +The `airly` integration uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. + +## Setup + +To generate an Airly API key, go to [Airly for developers](https://developer.airly.eu/register) page. + +## Configuration + +To add Airly to your installation, go to **Configuration** >> **Integrations** in the UI and enable the Airly integration. By default, the values will be taken from the Home Assistant configuration. + +{% configuration %} +api_key: + description: The Airly API key. + required: true + type: string +name: + description: Manually specify Name. + required: false + type: string + default: Airly +latitude: + description: Manually specify latitude. + required: false + type: float + default: Provided by Home Assistant configuration +longitude: + description: Manually specify longitude. + required: false + type: float + default: Provided by Home Assistant configuration +{% endconfiguration %} diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 846f87189e6..a83c15eb878 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -103,11 +103,11 @@ zones: required: false type: integer relayaddr: - description: "Address of the relay expander board to associate with the zone. (ex: 12, 13, 14, or 15). Typically used in cases where a panel will not send bypassed zones such as motion during an armed home state, the Vista 20P is an example of this. Alarmdecoder can emulate a zone expander board and the panel can be programmed to push zone events to this virtual expander. This allows the bypassed zone binary sensors to be utilized. One example is using bypassed motion sensors at night for motion-based automated lights while the system is armed with the motion sensor bypassed." + description: "Address of the relay or zone expander board to associate with the zone. (ex: 12, 13, 14, or 15). Typically used in cases where a panel will not send bypassed zones such as motion during an armed home state, the Vista 20P is an example of this. Alarmdecoder can emulate a zone expander board and the panel can be programmed to push zone events to this virtual expander. This allows the bypassed zone binary sensors to be utilized. One example is using bypassed motion sensors at night for motion-based automated lights while the system is armed with the motion sensor bypassed." required: inclusive type: integer relaychan: - description: "Channel of the relay expander board to associate with the zone. (ex: 1, 2, 3, or 4)" + description: "Channel of the relay or zone expander board to associate with the zone. (ex: 1, 2, 3, or 4 for relay expander boards, 1 - 8 for zone expander boards)" required: inclusive type: integer {% endconfiguration %} diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index ef6cfbd1103..d2f856283c2 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -29,21 +29,15 @@ For Fire TV devices, the instructions are as follows: ```yaml # Example configuration.yaml entry media_player: - # Use the Python ADB implementation without authentication + # Use the Python ADB implementation - platform: androidtv name: Android TV 1 host: 192.168.0.111 - # Use the Python ADB implementation with authentication + # Use an ADB server for sending ADB commands - platform: androidtv name: Android TV 2 host: 192.168.0.222 - adbkey: "/config/android/adbkey" - - # Use an ADB server for sending ADB commands - - platform: androidtv - name: Android TV 3 - host: 192.168.0.123 adb_server_ip: 127.0.0.1 ``` @@ -63,11 +57,11 @@ port: default: 5555 type: integer adbkey: - description: The path to your `adbkey` file. + description: The path to your `adbkey` file; if not provided, Home Assistant will generate a key for you (if necessary). required: false type: string adb_server_ip: - description: The IP address of the ADB server. + description: The IP address of the ADB server. If this is provided, the integration will utilize an [ADB server](#1-adb-server) to communicate with the device. required: false type: string adb_server_port: @@ -110,14 +104,14 @@ turn_off_command: ```yaml # Example configuration.yaml entry media_player: - # Use an ADB server to setup an Android TV device, provide - # an app name, override the default turn on/off commands, - # and provide custom state detection rules + # Use the Python ADB implementation with a user-provided key to setup an + # Android TV device. Provide an app name, override the default turn on/off + # commands, and provide custom state detection rules. - platform: androidtv name: Android TV device_class: androidtv host: 192.168.0.222 - adb_server_ip: 127.0.0.1 + adbkey: "/config/android/adbkey" apps: com.amazon.tv.launcher: "Fire TV" turn_on_command: "input keyevent 3" @@ -138,19 +132,23 @@ media_player: 'wake_lock_size': 1 # this indentation is important! - 'standby' - # Use the Python ADB implementation with authentication - # to setup a Fire TV device and don't get the running apps + # Use an ADB server to setup a Fire TV device and don't get the running apps. - platform: androidtv name: Fire TV device_class: firetv host: 192.168.0.222 - adbkey: "/config/android/adbkey" + adb_server_ip: 127.0.0.1 + adb_server_port: 5037 get_sources: false ``` ## ADB Setup -This integration works by sending ADB commands to your Android TV / Fire TV device. There are two ways to accomplish this: +This integration works by sending ADB commands to your Android TV / Fire TV device. There are two ways to accomplish this. + +
+When connecting to your device for the first time, a dialog will appear on your Android TV / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK. +
### 1. ADB Server @@ -160,46 +158,29 @@ For Hass.io users, you can install the [Android Debug Bridge](https://github.com ### 2. Python ADB Implementation -The second option is to connect to your device using the `adb-shell` Python package. +The second option is to connect to your device using the `adb-shell` Python package. As of Home Assistant 0.101, if a key is needed for authentication and it is not provided by the `adbkey` configuration option, then Home Assistant will generate a key for you. -If your device requires ADB authentication, you will need to follow the instructions in the [ADB Authentication](#adb-authentication) section below. Once you have an authenticated key, this approach does not require any additional setup or addons. However, users with newer devices may find that the ADB connection is unstable. For a Fire TV device, you can try setting the `get_sources` configuration option to `false`. If the problem cannot be resolved, you should use the ADB server option. - -#### ADB Authentication - -If you get a "Device authentication required, no keys available" error when trying to set up your Android TV or Fire TV, then you'll need to create an adbkey and add its path to your configuration. Follow the instructions on this page to connect to your device from your computer: [Connecting to Fire TV Through adb](https://developer.amazon.com/zh/docs/fire-tv/connecting-adb-to-device.html). - -
-In the dialog appearing on your Android TV / Fire TV, you must check the box that says "always allow connections from this device." ADB authentication in Home Assistant will only work using a trusted key. -
- -Once you've successfully connected to your Android TV / Fire TV via the command `adb connect :5555`, the file `adbkey` will be created on your computer. The default locations for this file are (from [https://developer.android.com/studio/command-line/adb](https://developer.android.com/studio/command-line/adb)): - -- Linux and Mac: `$HOME/.android.` -- Windows: `%userprofile%\.android.` - -Copy the `adbkey` file to your Home Assistant folder and add the path to the `adbkey` file to your configuration. +Prior to Home Assistant 0.101, this approach did not work well for newer devices. Efforts have been made to resolve these issues, but if you experience problems then you should use the ADB server option. ## ADB Troubleshooting -If you receive the error message `Error while setting up platform androidtv` in your log when trying to set up an Android TV or Fire TV device, then there is probably an issue with your ADB connection. Here are some possible causes. +If the setup for your Android TV or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes. -1. ADB is not enabled on your device. +1. You have the wrong IP address for the device. -2. You are already connected to the Android TV / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android TV / Fire TV (for good measure), and then restart Home Assistant. +2. ADB is not enabled on your device. -3. If you are using the [Python ADB implementation](#2-python-adb-implementation): +3. You are already connected to the Android TV / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android TV / Fire TV (for good measure), and then restart Home Assistant. - * This method often does not work for newer devices. Use the [ADB server](#1-adb-server) approach instead. +4. You need to approve the ADB connection; see the note in the [ADB Setup](#adb-setup) section above. - * Your key is not pre-authenticated. Before using the `adbkey` in Home Assistant, you _**must**_ connect to your device using the ADB binary and tell it to always allow connections from this computer. For more information, see the section [ADB Authentication](#adb-authentication) above. +5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to WiFi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. - * Home Assistant does not have the appropriate permissions for the `adbkey` file and so it is not able to use it. Once you fix the permissions, the integration should work. - -4. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to WiFi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. +6. If you are using the [Python ADB implementation](#2-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#1-adb-server) approach instead. ## Services -### `media_player.select_source` +### (Fire TV devices only) `media_player.select_source` For Fire TV devices, you can launch an app using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: @@ -253,7 +234,9 @@ Available key commands include: The full list of key commands can be found [here](https://github.com/JeffLIrion/python-androidtv/blob/bf1058a2f746535921b3f5247801469c4567e51a/androidtv/constants.py#L143-L186). -You can also use the command `GET_PROPERTIES` to retrieve the properties used by Home Assistant to update the device's state. These will be stored in the media player's `'adb_response'` attribute and logged at the INFO level, this information can be used to help improve state detection in the backend [androidtv](https://github.com/JeffLIrion/python-androidtv) package. +You can also use the command `GET_PROPERTIES` to retrieve the properties used by Home Assistant to update the device's state. These will be stored in the media player's `'adb_response'` attribute and logged at the INFO level. This information can be used to help improve state detection in the backend [androidtv](https://github.com/JeffLIrion/python-androidtv) package, and also to define your own [custom state detection](#custom-state-detection) rules. + +A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e6875e1db5c089b1e3ddeb7dba0f304). ## Custom State Detection diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown new file mode 100644 index 00000000000..b2759586a5d --- /dev/null +++ b/source/_integrations/apprise.markdown @@ -0,0 +1,85 @@ +--- +title: "Apprise" +description: "Instructions on how to add Apprise notifications to Home Assistant." +logo: apprise.png +ha_category: + - Notifications +ha_release: 0.101 +--- + +The [Apprise service](https://github.com/caronc/apprise/) is an all-in-one solution to open up Home Assistant to _just about_ every Notification platform (such as Amazon SNS, Discord, Telegram, Slack, MSTeams, Twilio, etc.) + +To use Apprise supported notifications, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry using URLs +notify: + - platform: apprise + url: YOUR_APPRISE_URLS +``` + +You can also pre-define your own configuration files while storing them either remotely or locally. Simply just use the `config` option. + +```yaml +# Example configuration.yaml entry using externally located Apprise +# Configuration Files/Sites: +notify: + - platform: apprise + config: YOUR_APPRISE_CONFIG_URLS +``` + +There is no restriction on the number of URLs or Apprise Configuration locations you wish to define. You can also use both of the lines in conjunction with one another: + +```yaml +# Example configuration.yaml entry using all options +notify: + - platform: apprise + config: YOUR_APPRISE_CONFIG_URLS + url: YOUR_APPRISE_URLS +``` + +{% configuration %} +name: + description: The notifier will bind to the service `notify.NAME`. + required: false + type: string + default: notify +url: + description: One or more Apprise URLs + required: false + type: string +config: + description: One or more Apprise Configuration URLs + required: false + type: string +{% endconfiguration %} + +#### Example service call + +```yaml +- service: notify.apprise + data: + message: "A message from Home Assistant" +``` + +If you're using configuration files to store your Apprise URLs in, then you have the added bonus of associating tags with them. By default, Apprise in Home Assistant will only notify the elements that have no tags associated with them. You can optionally focus on only notifying a specific service based on the tag(s) you assigned them like so: + +```yaml +- service: notify.apprise + data: + message: "A message from Home Assistant" + target: [ + "tag_name1", + ] +``` + +The tag `all` is reserved to notify absolutely everything, whether you have a tag associated with a URL or not. + +### Notes + +There are over 50 supported Notification services supported by Apprise. Each has their own tweaks and customizations you can leverage. + +- For instructions on how to construct the URLs, visit [here](https://github.com/caronc/apprise/wiki#notification-services). +- For instructions on how you can customize your own Apprise configuration files (referenced through the `config` directive), check out the following: + - [Text Formatted URLs](https://github.com/caronc/apprise/wiki/config_text) + - [YAML Formatted URLs](https://github.com/caronc/apprise/wiki/config_yaml) diff --git a/source/_integrations/climate.knx.markdown b/source/_integrations/climate.knx.markdown index c6612ca868f..2fd5dc2cf48 100644 --- a/source/_integrations/climate.knx.markdown +++ b/source/_integrations/climate.knx.markdown @@ -172,6 +172,11 @@ on_off_address: description: KNX address for switching the climate device on/off. required: false type: string +on_off_invert: + description: Value for switching the climate device on/off is inverted. + required: false + default: false + type: boolean on_off_state_address: description: KNX address for gathering the current state (on/off) of the climate device. required: false diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index e325d87b536..51335b919f7 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -9,43 +9,14 @@ ha_iot_class: Local Polling --- -The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). To set it up, add the following information to your `configuration.yaml` file: +The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). -```yaml -climate: - - platform: coolmaster - host: YOUR_COOLMASTER_HOST - port: YOUR_COOLMASTER_PORT - supported_modes: - - heat - - cool - - dry -``` +## Configuration via the frontend -{% configuration %} -host: - description: The host address of your CoolMasterNet instance (IP or host name). - required: true - type: string -port: - description: The port number of your CoolMasterNet instance. - required: false - type: integer - default: 10102 -supported_modes: - description: The operation modes supported by your HVAC. - required: false - type: list - default: All modes - keys: - heat: - description: Heat mode. - cool: - description: Cool mode. - heat_cool: - description: Heat/Cool mode (CoolMasterNet refers to it as Auto). - dry: - description: Dry mode. - fan_only: - description: Fan only mode. -{% endconfiguration %} +Menu: **Configuration** -> **Integrations**. + +Click on the `+` sign to add an integration and click on **CoolMasterNet**. +Select the host and port of your instance, and check the box for the modes +supported by your HVAC units. The units you have configured in CoolMasterNet +will be automatically added to Home Assistant as Climate entities and +matching devices. diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index 7255b0bfc64..45b9b3a1ce3 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -71,7 +71,7 @@ If `restore` is set to `false`, the `initial` value will only be used when no pr ## Services -Available services: `increment`, `decrement`, and `reset`. +Available services: `increment`, `decrement`, `reset` and `configure`. #### Service `counter.increment` @@ -106,7 +106,9 @@ With this service the properties of the counter can be changed while running. | `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. | | `minimum` | yes | Set new value for minimum. None disables minimum. | | `maximum` | yes | Set new value for maximum. None disables maximum. | -| `step` | yes | Set new value for step | +| `step` | yes | Set new value for step. | +| `initial` | yes | Set new value for initial. | +| `value` | yes | Set the counters state to the given value. | diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index 5cdf62e3558..bdde83a6e2e 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -33,8 +33,36 @@ qos: description: The QoS level of the topic. required: false type: integer +payload_home: + description: The payload value that represents the 'home' state for the device. + required: false + type: string + default: 'home' +payload_not_home: + description: The payload value that represents the 'not_home' state for the device. + required: false + type: string + default: 'not_home' +source_type: + description: Attribute of a device tracker that affects state when being used to track a [person](/integrations/person/). Valid options are `gps`, `router`, `bluetooth`, or `bluetooth_le`. + required: false + type: string {% endconfiguration %} +## Complete example configuration + +```yaml +# Complete configuration.yaml entry +device_tracker: + devices: + paulus_oneplus: 'location/paulus' + annetherese_n4: 'location/annetherese' + qos: 1 + payload_home: 'present' + payload_not_home: 'not present' + source_type: bluetooth +``` + ## Usage Example JSON you can publish to the topic (e.g., via mqtt.publish service): diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index e795c170a1a..3fb11bbabfb 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -46,6 +46,11 @@ url: description: The URL of the DOODS server required: true type: string +timeout: + description: Timeout for requests (in seconds) + required: false + type: integer + default: 90 detector: description: The DOODS detector to use required: true @@ -54,6 +59,36 @@ confidence: description: The default confidence for any detected objects where not explicitly set required: false type: float +area: + description: Global detection area. Objects in this box will be reported. Top of image is 0, bottom is 1. Same left to right. + required: false + type: map + keys: + top: + description: Top line defined as % from top of image. + required: false + type: float + default: 0 + left: + description: Left line defined as % from left of image. + required: false + type: float + default: 0 + bottom: + description: Bottom line defined as % from top of image. + required: false + type: float + default: 1 + right: + description: Right line defined as % from left of image. + required: false + type: float + default: 1 + covers: + description: If true the detection must be fully in this box. If false any part of the detection in the box will trigger. + required: false + type: boolean + default: true file_out: description: A [template](/docs/configuration/templating/#processing-incoming-data) for the integration to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera. required: false @@ -96,6 +131,11 @@ labels: required: false type: float default: 1 + covers: + description: If true the detection must be fully in this box. If false any part of the detection in the box will trigger. + required: false + type: boolean + default: true {% endconfiguration %} @@ -106,6 +146,7 @@ image_processing: - platform: doods scan_interval: 1000 url: "http://:8080" + timeout: 60 detector: default source: - entity_id: camera.front_yard @@ -113,6 +154,14 @@ image_processing: - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}{% endraw %}_latest.jpg" - "/tmp/{% raw %}{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}{% endraw %}.jpg" confidence: 50 + # This global detection area is required for all labels + area: + # Exclude top 10% of image + top: 0.1 + # Exclude right 5% of image + right: 0.95 + # The entire detection must be inside this box + covers: true labels: - name: person confidence: 40 @@ -121,6 +170,8 @@ image_processing: top: 0.1 # Exclude right 15% of image right: 0.85 + # Any part of the detection inside this area will trigger + covers: false - car - truck ``` diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index c8ba1b3c277..db77a771c3f 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -135,6 +135,7 @@ The following services are supported by Envisalink and can be used to script or - **alarm_disarm**: Disarms the alarm with the user code provided, or the code specified in the configuration. - **alarm_arm_home**: Arms the alarm in home mode. - **alarm_arm_away**: Arms the alarm in standard away mode. +- **alarm_arm_night**: Arms the alarm in night mode. - **alarm_trigger**: Trigger an alarm on the Envisalink connected alarm system. For example, a newer zwave/zigbee sensor can now be integrated into a legacy alarm system using a Home Assistant automation. - **envisalink_alarm_keypress**: Sends a string of up to 6 characters to the alarm. *DSC alarms only* - **invoke_custom_function**: Invokes a custom PGM function. *DSC alarms only* diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown index 47bb976f126..c888b5cee97 100644 --- a/source/_integrations/flux.markdown +++ b/source/_integrations/flux.markdown @@ -8,7 +8,7 @@ logo: home-assistant.png ha_qa_scale: internal --- -The `flux` switch platform will change the temperature of your lights similar to the way flux works on your computer, using circadian rhythm. They will be bright during the day, and gradually fade to a red/orange at night. +The `flux` switch platform will change the temperature of your lights similar to the way flux works on your computer, using circadian rhythm. They will be bright during the day, and gradually fade to a red/orange at night. The `flux` switch restores its last state after startup. The integration will update your lights based on the time of day. It will only affect lights that are turned on and listed in the flux configuration. diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index 2c3a4bdb7cb..eda94f98cc5 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -56,6 +56,130 @@ name: There seems to be some issues within Foscam with lengthy passwords and passwords containing certain symbols. Be sure to check your camera's documentation. -### Control Foscam PTZ (Pan/Tilt/Zoom) - Home/Away +### Service `foscam.ptz` - Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). For an example of how this can be done, see the [Foscam IP Camera Pan, Tilt, Zoom Control](/cookbook/foscam_away_mode_PTZ/) Cookbook entry. +If your Foscam camera supports PTZ, you will be able to pan or tilt your camera. + +| Service data attribute | Description | +| -----------------------| ----------- | +| `entity_id` | String or list of strings that point at `entity_id`s of cameras. Else targets all. | +| `movement` | Direction of the movement. Allowed values: `up`, `down`, `left`, `right`, `top_left`, `top_right`, `bottom_left`, `bottom_right` | +| `travel_time` | (Optional) Travel time in seconds. Allowed values: float from 0 to 1. Default: 0.125 | + +### Example card with controls + +

+ Screenshot showing a foscam camera using a picture-elements with PTZ controls. + Example showing a Foscam camera with controls for Pan and Tilt. +

+ + +Using the following card code you can achieve a card displaying the live video feed from a Foscam camera with controls for moving the camera at the bottom right corner. + +```yaml +type: picture-elements +entity: camera.bedroom +camera_image: camera.bedroom +camera_view: live +elements: + - type: icon + icon: 'mdi:arrow-up' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + bottom: 50px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: up + - type: icon + icon: 'mdi:arrow-down' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 25px + bottom: 0px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: down + - type: icon + icon: 'mdi:arrow-left' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 50px + bottom: 25px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: left + - type: icon + icon: 'mdi:arrow-right' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + bottom: 25px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: right + - type: icon + icon: 'mdi:arrow-top-left' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 50px + bottom: 50px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: top_left + - type: icon + icon: 'mdi:arrow-top-right' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + bottom: 50px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: top_right + - type: icon + icon: 'mdi:arrow-bottom-left' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 50px + bottom: 0px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: bottom_left + - type: icon + icon: 'mdi:arrow-bottom-right' + style: + background: 'rgba(255, 255, 255, 0.5)' + right: 0px + bottom: 0px + tap_action: + action: call-service + service: foscam.ptz + service_data: + entity_id: camera.bedroom + movement: bottom_right +``` + +### Extra CGI Commands + +Foscam Webcams which support CGI Commands can be controlled by Home Assistant ([Source](http://www.ipcamcontrol.net/files/Foscam%20IPCamera%20CGI%20User%20Guide-V1.0.4.pdf)). For an example of how this can be done, see the [Foscam IP Camera Pan, Tilt, Zoom Control](/cookbook/foscam_away_mode_PTZ/) Cookbook entry. diff --git a/source/_integrations/glances.markdown b/source/_integrations/glances.markdown index 6f1d4a1a774..a4029b1cc01 100644 --- a/source/_integrations/glances.markdown +++ b/source/_integrations/glances.markdown @@ -9,42 +9,39 @@ ha_release: 0.7.3 --- -The `glances` sensor platform is consuming the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. +The `glances` integration allows you to monitor the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. ## Setup -This sensors needs a running instance of `glances` on the host. The minimal supported version of `glances` is 2.3. -To start a Glances RESTful API server on its default port 61208, the a test the following command can be used: +These sensors needs a running instance of `glances` on the host. The minimal supported version of `glances` is 2.3. +To start a Glances RESTful API server on its default port 61208 then test you can use the following command: ```bash $ sudo glances -w Glances web server started on http://0.0.0.0:61208/ ``` -Check if you are able to access the API located at `http://IP_ADRRESS:61208/api/2`. Don't use `-s` as this will start the XMLRPC server on port 61209. Home Assistant only supports the REST API of GLANCES. +Check if you are able to access the API located at `http://IP_ADRRESS:61208/api/3`. Don't use `-s` as this will start the XMLRPC server on port 61209. Home Assistant only supports the REST API of GLANCES. The details about your memory usage is provided as a JSON response. If so, you are good to proceed. ```bash -$ curl -X GET http://IP_ADDRESS:61208/api/2/mem/free +$ curl -X GET http://IP_ADDRESS:61208/api/3/mem/free {"free": 203943936} ``` -If this doesn't work, try changing the `2` for `3`, if you have installed the latest version of Glances. +If this doesn't work, try changing the `3` to `2`, if you don't have the latest version of Glances installed. -For details about auto-starting `glances`, please refer to [Start Glances through Systemd](https://github.com/nicolargo/glances/wiki/Start-Glances-through-Systemd). +For details about auto-starting `glances`, please refer to [Start Glances through Systemd](https://github.com/nicolargo/glances/wiki/Start-Glances-through-Systemd). ## Configuration -To enable the Glances sensor, add the following lines to your `configuration.yaml`: +Set up the integration through **Configuration -> Integrations -> Glances**. To import the configuration from `configuration.yaml` remove any previously configured sensors with platform type `glances` and add the following lines: ```yaml # Example configuration.yaml entry -sensor: - - platform: glances - host: IP_ADDRESS - resources: - - 'disk_use_percent' +glances: + - host: IP_ADDRESS ``` {% configuration %} @@ -85,51 +82,31 @@ version: description: "The version of the Glances API. Supported version: `2` and `3`." required: false type: integer - default: 2 -resources: - description: Entries to monitor. - required: false - type: list - default: disk_use - keys: - disk_use_percent: - description: The used disk space in percent. - disk_use: - description: The used disk space. - disk_free: - description: The free disk space. - memory_use_percent: - description: The used memory in percent. - memory_use: - description: The used memory. - memory_free: - description: The free memory. - swap_use_percent: - description: The used swap space in percent. - swap_use: - description: The used swap space. - swap_free: - description: The free swap space. - processor_load: - description: The load. - process_running: - description: The number of running processes. - process_total: - description: The total number of processes. - process_thread: - description: The number of threads. - process_sleeping: - description: The number of sleeping processes. - cpu_use_percent: - description: The used CPU in percent. - cpu_temp: - description: The CPU temperature (may not be available on all platforms). - docker_active: - description: The count of active Docker containers. - docker_cpu_use: - description: The total CPU usage in percent of Docker containers. - docker_memory_use: - description: The total memory used by Docker containers. + default: 3 {% endconfiguration %} +## Integration Entities + +Glances integration will add the following sensors: + +- disk_use_percent: The used disk space in percent. +- disk_use: The used disk space. +- disk_free: The free disk space. +- memory_use_percent: The used memory in percent. +- memory_use: The used memory. +- memory_free: The free memory. +- swap_use_percent: The used swap space in percent. +- swap_use: The used swap space. +- swap_free: The free swap space. +- processor_load: The load. +- process_running: The number of running processes. +- process_total: The total number of processes. +- process_thread: The number of threads. +- process_sleeping: The number of sleeping processes. +- cpu_use_percent: The used CPU in percent. +- cpu_temp: The CPU temperature (may not be available on all platforms). +- docker_active: The count of active Docker containers. +- docker_cpu_use: The total CPU usage in percent of Docker containers. +- docker_memory_use: The total memory used by Docker containers. + Not all platforms are able to provide all metrics. For instance `cpu_temp` is requires installing and configuring `lmsensors` in Ubuntu, and may not be available at all in other platforms. diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 0571445d77e..669600b83d1 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -64,7 +64,16 @@ If you've added Home Assistant to the home screen, you have to first remove it f 2. Copy and share the link with the new user. 3. When the new user opens the link with their own Google account, it will enable your draft test app under their account. 3. Have the new user go to their `Google Assistant` app to add `[test] your app name` to their account. -2. If you want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: +2. If you want to support actively reporting of state to Google's server (config option `report_state`) and support `google_assistant.request_sync`, you need to generate a service account. + 1. In the GCP Console, go to the [Create Service account key](https://console.cloud.google.com/apis/credentials/serviceaccountkey) page. + 2. From the Service account list, select New service account. + 3. In the Service account name field, enter a name. + 4. In the Service account ID field, enter an ID. + 5. From the Role list, select Service Accounts > Service Account Token Creator. + 6. For the Key type, select the JSON option. + 7. Click Create. A JSON file that contains your key downloads to your computer. + 8. Use the information in this file or the file directly to add to the `service_account`key in the configuration. +3. If you didn't specify a service account and want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: 1. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview). 2. Select your project and click Enable Homegraph API. 3. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials. @@ -79,6 +88,8 @@ Now add the following lines to your `configuration.yaml` file: google_assistant: project_id: YOUR_PROJECT_ID api_key: YOUR_API_KEY + service_account: !include SERVICE_ACCOUNT.JSON + report_state: true exposed_domains: - switch - light @@ -106,9 +117,27 @@ secure_devices_pin: type: string default: "" api_key: - description: Your Homegraph API key (for the `google_assistant.request_sync` service) + description: Your Homegraph API key (for the `google_assistant.request_sync` service). This is not required if a service_account is specified. required: false type: string +service_account: + description: Service account information. You can use an include statement with your downloaded JSON file, enter data here directly or use secrets file to populate. + required: false + type: map + keys: + private_key: + description: Private key in PEM format + requried: true + type: string + client_email: + description: Service email address + required: true + type: string +report_state: + description: Actively report state changes on entities. This speeds up response time for actions affecting multiple entities since Google Assistant knows pre-hand what state they are. It is also required for some features on visual controls. + required: false + default: false + type: boolean expose_by_default: description: "Expose devices in all supported domains by default. If `exposed_domains` domains is set, only these domains are exposed by default. If `expose_by_default` is set to false, devices have to be manually exposed in `entity_config`." required: false diff --git a/source/_integrations/hipchat.markdown b/source/_integrations/hipchat.markdown deleted file mode 100644 index 3057371def7..00000000000 --- a/source/_integrations/hipchat.markdown +++ /dev/null @@ -1,79 +0,0 @@ ---- -title: "HipChat" -description: "Instructions on how to add HipChat notifications to Home Assistant." -logo: hipchat.png -ha_category: - - Notifications -ha_release: 0.52 ---- - -
-This integration will be removed from Home Assistant in the future. Slack has taken over Hipchat and Stride and will therefore stop these platforms. For more information: announcement. -
-
-Hipchat will be discontinued after February 15th, 2019. This to give customers the opportunity to make a switch. -
- -The `hipchat` platform allows you to send notifications from Home Assistant to [HipChat](https://hipchat.com/). - -You need to obtain a [HipChat API token](https://developer.atlassian.com/hipchat/guide/hipchat-rest-api/api-access-tokens#APIaccesstokens-Usergeneratedtokens) to be able to send notifications. - -To enable the HipChat notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - name: NOTIFIER_NAME - platform: hipchat - token: YOUR_TOKEN - room: 1234567 -``` - -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: notify - type: string -token: - description: The HipChat API token to use for sending HipChat notifications. - required: true - type: string -room: - description: The default room to post to if no room is explicitly specified when sending the notification. - required: true - type: integer -color: - description: Setting color will override the default color for the notification. Valid options are 'yellow', 'green', 'red', 'purple', 'gray', 'random'. - required: false - default: yellow - type: string -notify: - description: Setting notify will override the default notify (blink application icon, chime, or otherwise call attention) setting for the notification. Valid options are 'true' and 'false'. - required: false - default: false - type: boolean -format: - description: Setting format will override the default message format. Valid options are 'text' and 'html'. - required: false - default: text - type: string -host: - description: Setting the host will override the default HipChat server host. - required: false - default: "https://api.hipchat.com/" - type: string -{% endconfiguration %} - -### HipChat service data - -The following attributes can be placed `data` for extended functionality. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `room` | yes | (int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `color` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `notify` | yes | (bool) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `format` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index dd615a84d6f..681a06886ef 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -125,7 +125,7 @@ The platform supports the following Hive products: ### Climate -The `hive` climate platform integrates your Hive thermostat into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. +The `hive` climate platform integrates your Hive thermostat and Hive radiator valves into Home Assistant, enabling control of setting the **mode** and setting the **target temperature**. A short boost for Hive Heating can be set by using the **Boost** preset, this will turn on the boost feature for 30 minutes at 0.5 degrees higher than the current temperature. @@ -133,6 +133,7 @@ The platform supports the following Hive products: - Hive Active Heating - Hive Multi-zone +- Hive Radiator Valve ### Light diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 218af288be1..888745f30ab 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -82,6 +82,10 @@ homekit: required: false type: boolean default: false + advertise_ip: + description: If you need to override the IP address used for mDNS advertisement. (For example, using network isolation in Docker and together with an mDNS forwarder like `avahi-daemon` in reflector mode) + required: false + type: string filter: description: Filters for entities to be included/excluded from HomeKit. ([Configure Filter](#configure-filter)) required: false @@ -160,8 +164,8 @@ homekit: After Home Assistant has started, the entities specified by the filter are exposed to HomeKit if they are [supported](#supported-components). To add them: 1. Open the Home Assistant frontend. A new card will display the `pin code`. Note: If pin code is not displayed, check "Notifications" (the bell icon) in the upper-right of the Home Assistant UI. -1. Open the `Home` app. -2. Click `Add Accessory`, then select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`. +2. Open the `Home` app. +3. Click `Add Accessory`, then select `Don't Have a Code or Can't Scan?` and choose the `Home Assistant Bridge`. 4. Confirm that you are adding an `Uncertified Accessory` by clicking on `Add Anyway`. 5. Enter the `PIN` code. 6. Follow the setup by clicking on `Next` and lastly `Done` in the top right-hand corner. @@ -324,6 +328,19 @@ To avoid any errors, after you have successfully paired your Home Assistant Brid +## Docker Network Isolation + +The `advertise_ip` option can be used to run this integration even inside an ephemeral Docker container with network isolation enabled, e.g., not using the host network. + +To use `advertise_ip`, add the option to your `homekit` config: + +```yaml +homekit: + advertise_ip: "STATIC_IP_OF_YOUR_DOCKER_HOST" +``` + +Restart your Home Assistant instance. This feature requires running an mDNS forwarder on your Docker host, e.g., `avahi-daemon` in reflector mode. This kind of setup most likely requires `safe_mode` during the bridge setup. + ## Supported Components The following integrations are currently supported: @@ -403,6 +420,8 @@ Remember that the iOS device needs to be in the same local network as the Home A Set `network_mode: host`. If you have further problems this [issue](https://github.com/home-assistant/home-assistant/issues/15692) might help. +You can also try to use `avahi-daemon` in reflector mode together with the option `advertise_ip`, see above. + #### `Home Assistant Bridge` doesn't appear in the Home App (for pairing) - VirtualBox Configure the network mode as `networkbridge`. Otherwise the Home Assistant Bridge won't be exposed to the network. diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index 87cec0d82ef..800d3e9f9a1 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -84,6 +84,7 @@ Within this delay the device registration should be completed in the App, otherw * Combined Alarm Control Panal with INTERNAL and EXTERNAL Security zones (*HmIP-SecurityZone*) * homematicip_cloud.binary_sensor + * Acceleration Sensor (*HMIP-SAM*) * Window and door contact (*HmIP-SWDO, -I*) * Contact Interface flush-mount – 1 channel (*HmIP-FCI1*) * Contact Interface (*HmIP-SCI*) @@ -158,6 +159,7 @@ Within this delay the device registration should be completed in the App, otherw - `homematicip_cloud.activate_vacation`: Activates the vacation mode until the given time. - `homematicip_cloud.deactivate_eco_mode`: Deactivates the eco mode immediately. - `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately. +- `homematicip_cloud.set_active_climate_profile`: Set the active climate profile index. ### Service Examples @@ -213,11 +215,26 @@ Deactivates the vacation mode immediately. ```yaml ... action: - service: homematicip_cloud.deactivate_vacation_mode + service: homematicip_cloud.deactivate_vacation data: accesspoint_id: 3014xxxxxxxxxxxxxxxxxxxx ``` +Set the active climate profile index. + +The index of the climate profile is 1-based. +You can get the required index from the native Homematic IP App. + +```yaml +... +action: + service: homematicip_cloud.set_active_climate_profile + data: + entity_id: climate.livingroom + climate_profile_index: 1 +``` + + ## Additional info Push button devices are only available with a battery sensor. This is due to a limitation of the vendor API (eq3). diff --git a/source/_integrations/hydroquebec.markdown b/source/_integrations/hydroquebec.markdown deleted file mode 100644 index 2acb7064bb8..00000000000 --- a/source/_integrations/hydroquebec.markdown +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "Hydro-Québec" -description: "Instructions on how to integrate Hydro-Québec consumption profile within Home Assistant." -logo: hydroquebec.svg -ha_category: - - Energy -ha_release: 0.35 -ha_iot_class: Cloud Polling ---- - -Integrate your [Hydro-Québec](https://www.hydroquebec.com/portail/) consumption profile information into Home Assistant. - -
- -Breaking change: Since Home Assistant v0.40, **contract** attribute is required. - -
- -```yaml -# Example configuration.yaml entry -sensor: - - platform: hydroquebec - username: MYUSERNAME - password: MYPASSWORD - contract: '123456789' - monitored_variables: - - period_total_bill - - period_length - - period_total_days -``` - -{% configuration %} -username: - description: Username used to log into the Hydro-Québec site. - required: true - type: string -password: - description: Password used to log into the Hydro-Québec site. - required: true - type: string -contract: - description: Your contract number with Hydro-Québec. - required: true - type: string -name: - description: A friendly name for this sensor. - required: false - default: HydroQuebec - type: string -monitored_variables: - description: Variables to monitor. - required: true - type: list - keys: - balance: - description: Current balance - period_total_bill: - description: Current period bill - period_length: - description: Current period length - period_total_days: - description: Total number of days in this period - period_mean_daily_bill: - description: Period daily average bill - period_mean_daily_consumption: - description: Period daily average consumption - period_total_consumption: - description: Total consumption - period_lower_price_consumption: - description: Period lower price consumption - period_higher_price_consumption: - description: Period higher price consumption - period_average_temperature: - description: Period average temperature - yesterday_total_consumption: - description: Yesterday total consumption - yesterday_lower_price_consumption: - description: Yesterday lower price consumption - yesterday_higher_price_consumption: - description: Yesterday higher price consumption - yesterday_average_temperature: - description: Yesterday average temperature -{% endconfiguration %} - -To find your contract id, go to the [Hydro-Québec website](https://www.hydroquebec.com/portail/) -and connect to your account. -On the main page your can see your contract IDs. -It should be something like: "Contract 1234 56789". -You just have to keep numbers and remove the space. - -
-Multi contracts accounts are supported only from Home Assistant v0.40. -
diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 084225cb371..3e46a5bdcfb 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -77,6 +77,18 @@ input_number: This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +### Scenes + +To set the value of an input_number in a [Scene](/integrations/scene/): + +```yaml +# Example configuration.yaml entry +scene: + - name: Example Scene + entities: + input_number.example_number: 13 +``` + ## Automation Examples Here's an example of `input_number` being used as a trigger in an automation. diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index a666ce98c07..dadf14dd546 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -77,17 +77,32 @@ This integrations provide three services to modify the state of the `input_selec ### Scenes -To specify a target option in a [Scene](/integrations/scene/) you have to specify the target as `option` attribute: +Specifying a target option in a [Scene](/integrations/scene/) is simple: ```yaml # Example configuration.yaml entry scene: - name: Example1 entities: - input_select.who_cooks: - option: Paulus + input_select.who_cooks: Paulus ``` +The list of options can also be set in a [Scene](/integrations/scene). In that case, you also need to specify what the new state will be. + +```yaml +# Example configuration.yaml entry +scene: + - name: Example2 + entities: + input_select.who_cooks: + options: + - Alice + - Bob + - Paulus + state: Bob +``` + + ## Automation Examples The following example shows the usage of the `input_select.select_option` service in an automation: diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 1ae093a378c..1cda4f554e5 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -81,6 +81,18 @@ This integration provides a single service to modify the state of the `input_tex This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +### Scenes + +To set the state of the input_text in a [Scene](/integrations/scene/): + +```yaml +# Example configuration.yaml entry +scene: + - name: Example1 + entities: + input_text.example: Hello! +``` + ## Automation Examples Here's an example using `input_text` in an action in an automation. diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index 3166f74adf8..1fd34e689fb 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -56,11 +56,16 @@ havdalah_minutes_after_sunset: ### Data sensors - date: Shows the hebrew date for today. - weekly_portion: Shows the weekly portion (parshat hashavu'a). -- holiday_name: If it is a holiday, shows the name of the holiday. -- holiday_type: Shows the type of the holiday _(see below)_. +- holiday: If it is a holiday, shows the name of the holiday _(see below for more info)_. - omer_count: An integer sensor indicating the day of the Omer (1-49) or 0 if it is not currently the Omer. ### Time sensors + +*Note: Due to the variety of rabbinic opinions on how to calculate the different times, we do not take any responsibility on your religious reliance upon these calculations.* + +Time sensor states are represented as ISO8601 formatted *UTC time*. +For easier use in automations, all time sensors have a `timestamp` attribute, which returns the UNIX timestamp. + - first_light: First light of dawn (Alot Hashachar - עלות השחר). - gra_end_shma: Last time for reading of the Shma according to the GR"A. - mga_end_shma: Last time for reading of the Shma according to the MG"A. @@ -75,17 +80,56 @@ havdalah_minutes_after_sunset: - issur_melacha_in_effect: A boolean sensor indicating if melacha is currently not permitted. The value is true when it is currently Shabbat or Yom Tov and false otherwise. -### Holiday types +### Holiday sensor + +The holiday sensor includes two attibutes: *type* and *id*. + +The following is the list of holidays the sensor knows about with their selected type: + + +| ID | English | Hebrew | Type | +|----------------------|----------------------------|-----------------------|---------------------------| +| erev_rosh_hashana | Erev Rosh Hashana | ערב ראש השנה | EREV_YOM_TOV | +| rosh_hashana_i | Rosh Hashana I | א' ראש השנה | YOM_TOV | +| rosh_hashana_ii | Rosh Hashana II | ב' ראש השנה | YOM_TOV | +| tzom_gedaliah | Tzom Gedaliah | צום גדליה | FAST_DAY | +| erev_yom_kippur | Erev Yom Kippur | עיוה"כ | EREV_YOM_TOV | +| yom_kippur | Yom Kippur | יום הכפורים | YOM_TOV | +| erev_sukkot | Erev Sukkot | ערב סוכות | EREV_YOM_TOV | +| sukkot | Sukkot | סוכות | YOM_TOV | +| hol_hamoed_sukkot | Hol hamoed Sukkot | חול המועד סוכות | HOL_HAMOED | +| hoshana_raba | Hoshana Raba | הושענא רבה | EREV_YOM_TOV | +| simchat_torah | Simchat Torah | שמחת תורה | YOM_TOV | +| chanukah | Chanukah | חנוכה | MELACHA_PERMITTED_HOLIDAY | +| asara_btevet | Asara B'Tevet | צום עשרה בטבת | FAST_DAY | +| tu_bshvat | Tu B'Shvat | ט"ו בשבט | MINOR_HOLIDAY | +| taanit_esther | Ta'anit Esther | תענית אסתר | FAST_DAY | +| purim | Purim | פורים | MELACHA_PERMITTED_HOLIDAY | +| shushan_purim | Shushan Purim | שושן פורים | MELACHA_PERMITTED_HOLIDAY | +| erev_pesach | Erev Pesach | ערב פסח | EREV_YOM_TOV | +| pesach | Pesach | פסח | YOM_TOV | +| hol_hamoed_pesach | Hol hamoed Pesach | חול המועד פסח | HOL_HAMOED | +| pesach_vii | Pesach VII | שביעי פסח | YOM_TOV | +| yom_haatzmaut | Yom HaAtzma'ut | יום העצמאות | MODERN_HOLIDAY | +| lag_bomer | Lag B'Omer | ל"ג בעומר | MINOR_HOLIDAY | +| erev_shavuot | Erev Shavuot | ערב שבועות | EREV_YOM_TOV | +| shavuot | Shavuot | שבועות | YOM_TOV | +| tzom_tammuz | Tzom Tammuz | צום שבעה עשר בתמוז | FAST_DAY | +| tisha_bav | Tish'a B'Av | תשעה באב | FAST_DAY | +| tu_bav | Tu B'Av | ט"ו באב | MINOR_HOLIDAY | +| yom_hashoah | Yom HaShoah | יום השואה | MEMORIAL_DAY | +| yom_hazikaron | Yom HaZikaron | יום הזכרון | MEMORIAL_DAY | +| yom_yerushalayim | Yom Yerushalayim | יום ירושלים | MODERN_HOLIDAY | +| shmini_atzeret | Shmini Atzeret | שמיני עצרת | YOM_TOV | +| pesach_viii | Pesach VIII | אחרון של פסח | YOM_TOV | +| shavuot_ii | Shavuot II | שני של שבועות | YOM_TOV | +| sukkot_ii | Sukkot II | שני של סוכות | YOM_TOV | +| pesach_ii | Pesach II | שני של פסח | YOM_TOV | +| family_day | Family Day | יום המשפחה | ISRAEL_NATIONAL_HOLIDAY | +| memorial_day_unknown | Memorial day for fallen whose place of burial is unknown | יום זכרון... | MEMORIAL_DAY | +| rabin_memorial_day | Yitzhak Rabin memorial day | יום הזכרון ליצחק רבין | MEMORIAL_DAY | +| zeev_zhabotinsky_day | Zeev Zhabotinsky day | יום ז'בוטינסקי | MEMORIAL_DAY | -1. Mido'rayta - by Torah ordination (Rosh Hashana, Yom Kippur, Pesach, Shavuot, Sukkot) -2. Erev Yom Tov -3. Hol Hamo'ed -4. Hanukka and Purim -5. Fast days -6. Modern holidays, e.g. Yom Yerushalayim and Yom Haatsmaut -7. Minor holidays, e.g. Lag ba'omer and Tu bishvat -8. Memorial days: yom hazikaron and yom hashoah -9. Days mentioned by the Israeli parliament: Rabin memorial day, Ze'ev Zhabotinsky day, etc. ## Full configuration sample diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 508628c401f..99405735d26 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -650,6 +650,8 @@ light: - [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. +- [h801-mqtt-json](https://github.com/starkillerOG/h801-mqtt-json) is a custom firmware for the H801 LED dimmer, a 5 channel (RGBWWCW) WiFi LED strip controller for 12V LED strips. The firmware is meant to control the 5 channels of the H801 to simultaneously control an RGB and a Warm-white/Cold-white Led strip such as an 5050 RGB LED strip and a 5025 Dual White strip. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours (RGB strip), brightness, color temperature (CW/WW strip) and transitions. + ## Template schema The `mqtt` light platform with template schema lets you control a MQTT-enabled light that receive commands on a command topic and optionally sends status update on a state topic. diff --git a/source/_integrations/luci.markdown b/source/_integrations/luci.markdown index 172aa93f219..776607e3718 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -52,6 +52,11 @@ ssl: required: false default: false type: boolean +verify_ssl: + description: If SSL/TLS verification for HTTPS resources needs to be turned off (for self-signed certs, etc.) + required: false + type: boolean + default: true {% 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/lutron.markdown b/source/_integrations/lutron.markdown index b7c5dd60c68..7fff4ee7543 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -65,7 +65,7 @@ For single-action buttons (scene selection, etc.), `action` will be `single`, an ## Scene -This integration uses keypad programming to identify scenes. Currently, it works with seeTouch, hybrid seeTouch, main repeater, homeowner, and seeTouch RF tabletop keypads. +This integration uses keypad programming to identify scenes. Currently, it works with seeTouch, hybrid seeTouch, main repeater, homeowner, Pico, and seeTouch RF tabletop keypads. The Lutron scene platform allows you to control scenes programmed into your SeeTouch keypads. After setup, scenes will appear in Home Assistant using the area, keypad and button name. diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown new file mode 100644 index 00000000000..69ae8cb6c9d --- /dev/null +++ b/source/_integrations/msteams.markdown @@ -0,0 +1,54 @@ +--- +title: "Microsoft Teams" +description: "Instructions on how to send a notification to a Microsoft Teams channel." +logo: msteams.jpg +ha_category: + - Notifications +ha_release: 0.101 +--- + +The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://products.office.com/en-us/microsoft-teams/group-chat-software). + +## Setup + +To send a notification to teams, you need to add the Incoming Webhook app to your team channel. When the app is added, you will receive a webhook URL that needs to be added to your `configuration.yaml`. + + +## Configuration + +To add the Microsoft Teams platform to your installation, add the following to your `configuration.yaml` file: + +```yaml +notify: + - platform: msteams + url: https://outlook.office.com/webhook/ +``` + +{% configuration %} +name: + description: Setting this parameter allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + type: string + default: "notify" +url: + description: The webhook URL created in the setup step. + required: true + type: string +{% endconfiguration %} + +### Microsoft Teams service data + +The following attributes can be placed inside `data` for extended functionality. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `image_url` | yes | Attach an image to the message. + +Example for posting file from URL: + +```yaml +title: Title of the message. +message: Message that will be added. +data: + image_url: URL_OF_IMAGE +``` diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 6db41b26cca..4443feb0d08 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -4,14 +4,27 @@ description: "Instructions on how to integrate your Neato within Home Assistant. logo: neato.png ha_category: - Camera + - Sensor - Switch - Vacuum ha_release: 0.33 +ha_config_flow: true --- The `neato` integration allows you to control your [Neato Botvac Connected Robots](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). -To enable `neato` in your installation, add the following to your `configuration.yaml` file: +To activate `neato` in your installation, you can set it up from the integration screen or add it to your `configuration.yaml` file. + +## Setup the integration via the integrations screen + +Menu: *Configuration* -> *Integrations* + +Search for or select **Neato** from the list and configure the integration. You will need to enter your username and password and whether you are using a Neato or Vorwerk device. +After that, all the entities will automatically show up in Home Assistant. + +## Setup the integration via configuration.yaml + +Add the following to your configuration.yaml: ```yaml # Example configuration.yaml entry @@ -92,6 +105,10 @@ Some information about the capabilities might be found on the [Neato Developer P The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). +## Sensor + +The `neato` sensor platform allows you to view the battery level for your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). + ## Switch The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index e9cfd7f758a..18ff6e598cf 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -9,7 +9,8 @@ ha_iot_class: Local Polling --- The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/), [Integra](http://www.integrahometheater.com/) - and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this integration to work in your Hardware. +and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. +Please be aware that you need to enable "Network Standby" for this integration to work in your Hardware. ## Configuration @@ -37,8 +38,14 @@ name: required: false type: string max_volume: - description: Maximum volume. Defaults to 80. + description: Maximum volume as a percentage. Often the maximum volume of the receiver is far too loud. Setting this wil set Home Assistant's 100% volume to be this setting on the amp. i.e. if you set this to 50% when you set Home Assistant to be 100% then your receiver will be set to 50% of it's maximum volume. required: false + default: 100 + type: integer +receiver_max_volume: + description: The maximum volume of the receiver. For older Onkyo receivers this was 80, newer Onkyo receivers use 200. + required: false + default: 80 type: integer sources: description: A list of mappings from source to source name. Valid sources can be found below. A default list will be used if no source mapping is specified. @@ -75,6 +82,14 @@ List of source names: - xm - sirius +To find your receivers max volume use the onkyo-eiscp python module set the receiver to its maximum volume +(don't do this whilst playing something!) and run: + +```bash +onkyo --host 192.168.0.100 volume=query +unknown-model: master-volume = 191 +``` + ### Service `onkyo_select_hdmi_output` Changes HDMI output of your receiver @@ -109,7 +124,6 @@ script: entity_id: media_player.onkyo media_content_type: "radio" media_content_id: "1" - ``` ### Example `onkyo_select_hdmi_output` script @@ -125,5 +139,4 @@ script: service_data: entity_id: media_player.onkyo hdmi_output: out-sub - ``` diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index e4ba6feb5f3..bb38a6313a8 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -27,40 +27,41 @@ The OpenTherm protocol is based on polling. The thermostat sends requests to the # Configuration -In this example, one gateway is configured with `gateway_id` `living_room`. -```yaml -# Example configuration.yaml entry -opentherm_gw: - living_room: - device: /dev/ttyUSB0 -``` - -Each configured gateway accepts the following configuration options. +The OpenTherm Gateway can be added to Home Assistant through the `Integrations` panel in the `Configuration` page of the web interface. +The following configuration options are available: {% configuration %} -device: - description: "Path to OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)." +name: + description: "The friendly name used for the OpenTherm Gateway and its entities." required: true type: string -name: - description: "The friendly name used for the entities added for the gateway." +path: + description: "Path to the OpenTherm Gateway device as supported by [PySerial](https://pythonhosted.org/pyserial/url_handlers.html)." + required: true + type: string +id: + description: "The `gateway_id` for this OpenTherm Gateway's entity IDs and services. The entered value will be slugified." required: false type: string - default: "The `gateway_id` of the gateway." -climate: - description: "Settings for the `opentherm_gw` climate entity." - required: false - type: map - keys: - precision: - description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`." - required: false - type: float - default: "`0.5` for Celsius and `1.0` for Fahrenheit." - floor_temperature: - description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Set this to `true` to override this behavior and round to the lower value according to the configured `precision`." - required: false - type: boolean - default: false + default: "The slugified `name` of this OpenTherm Gateway." +{% endconfiguration %} + +
+The precision and floor_temperature settings that were supported in configuration.yaml entries have been lost upon import of the configuration.yaml entry into the Integrations panel. You can now configure them as per the following Options paragraph. +
+ +# Options + +The OpenTherm Gateway can be further configured through the integration settings in the web interface +The following options are available: +{% configuration %} +Precision: + description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Set to `0` to use the default value for your unit preference." + type: float + default: "`0.5` for Celsius and `1.0` for Fahrenheit." +Floor Temperature: + description: "Some thermostats round all temperatures down to the lower value according to their precision. Default behavior for Home Assistant is to round temperatures to the nearest value. Enable this setting to override this behavior and round to the lower value according to the configured precision." + type: boolean + default: Disabled {% endconfiguration %} ## Services @@ -71,7 +72,7 @@ Reset the OpenTherm Gateway. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. ### Service `opentherm_gw.set_clock` @@ -79,7 +80,7 @@ Provide the time and day of week to the OpenTherm Gateway. The value provided he | Service data attribute | Optional | Default | Description | | ---------------------- | -------- | ------- | ----------- | -| `gateway_id` | no | N/A | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | N/A | The `gateway_id` as specified during configuration. | `date` | yes | Today's date | Date from which the day of week will be extracted. Format: `YYYY-MM-DD`. | `time` | yes | Current time | Time in 24h format. @@ -95,7 +96,7 @@ In a normal situation, the thermostat will calculate and control the central hea | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `temperature` | no | The central heating setpoint. Values between `0.0` and `90.0` are accepted, but your boiler may not support the full range. Set to `0` to disable the override.
@@ -114,7 +115,7 @@ that. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `dhw_override` | no | The domestic hot water override state. Value should be 0 or 1 to enable the override in off or on state, or "A" to disable the override. ### Service `opentherm_gw.set_gpio_mode` @@ -124,7 +125,7 @@ For an explanation of the possible modes, see [GPIO modes](#gpio-modes) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `id` | no | The GPIO ID, `A` or `B`. | `mode` | no | The GPIO mode to be set. @@ -135,7 +136,7 @@ For a list of possible modes with explanation, see [LED modes](#led-modes) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `id` | no | The LED ID, accepted values are `A` through `F`. | `mode` | no | The LED mode to be set. @@ -151,7 +152,7 @@ In a normal situation, the thermostat will control the maximum modulation level | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `level` | no | The maximum modulation level. Accepted values are `-1` through `100`. Set to `-1` to disable the override.
@@ -167,7 +168,7 @@ If your thermostat is unable to display an outside temperature and does not supp | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `temperature` | no | The outside temperature to provide to the thermostat. Accepted values are `-40.0` through `64.0`. Any value above `64.0` will clear a previously configured value (suggestion: `99`). ### Service `opentherm_gw.set_setback_temperature` @@ -177,7 +178,7 @@ The value you provide here will be used with the GPIO `home` (5) and `away` (6) | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `gateway_id` | no | The `gateway_id` as specified in `configuration.yaml`. +| `gateway_id` | no | The `gateway_id` as specified during configuration. | `temperature` | no | The setback temperature. Accepted values are `0.0` through `30.0`. ## Sensors @@ -521,21 +522,3 @@ Possible LED modes and their meaning are listed here: * X. Transmission error has been detected. * M. Boiler requires maintenance. * P. Raised power mode active on thermostat interface. - -# Example - -A full configuration example with two configured OpenTherm Gateways - one connected via USB, the other over the network - looks like the one below. - -```yaml -# Full example configuration.yaml entry -opentherm_gw: - living_room: - device: /dev/ttyUSB0 - name: "Living" - holiday_home: - device: socket://otgw.example.org:2345 - name: "Holiday Home" - climate: - precision: 0.5 - floor_temperature: true -``` diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index 6e4cb365d80..34ee616cb35 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -30,7 +30,7 @@ binary_sensor: {% configuration %} pin_mode: - description: Type of pin mode to use. This depends on which device you are actually using ([PIN_MODE](/integrations/orangepi_gpio#pin_mode)). + description: Type of pin mode to use. This depends on which device you are actually using ([Pin modes](#pin-modes)). required: true type: string ports: @@ -51,13 +51,25 @@ invert_logic: Compared to the [Raspberry Pi GPIO](/integrations/rpi_gpio/) component, this integration does not support pull-up resistors or port debouncing. Use external pull-ups and external port-debouncing. -## Pin_mode +## Pin modes As this platform supports different types of GPIO pinouts for difference Orange Pi or Nano Pi devices, we use the `pin_mode` value to specify which one to use. Enabled values are: | Value | Description | | ----- | ----------- | -| `pc` | Supports the Orange Pi Lite, One, PC and Prime | +| `lite` | Supports the Orange Pi Lite | +| `lite2` | Supports the Orange Pi Lite 2 | +| `one` | Supports the Orange Pi One | +| `oneplus` | Supports the Orange Pi One Plus | +| `pc` | Supports the Orange Pi PC | +| `pc2` | Supports the Orange Pi PC 2 | +| `pcplus` | Supports the Orange Pi PC Plus | +| `pi3` | Supports the Orange Pi 3 | +| `plus2e` | Supports the Orange Pi Plus 2E | +| `prime` | Supports the Orange Pi Prime | +| `r1` | Supports the Orange Pi R1 | +| `winplus` | Supports the Orange Pi WinPlus | +| `zero` | Supports the Orange Pi Zero | | `zeroplus` | Supports the Orange Pi Zero Plus | | `zeroplus2` | Supports the Orange Pi Zero Plus 2 | | `duo` | Supports the NanoPi Duo | diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown new file mode 100644 index 00000000000..a80d95a71bb --- /dev/null +++ b/source/_integrations/oru.markdown @@ -0,0 +1,32 @@ +--- +title: "Orange and Rockland Utility Real-Time Energy Usage Sensor" +description: "Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant." +logo: oru.png +ha_release: 0.101 +ha_category: + - Sensor +ha_iot_class: Cloud Polling +--- + +[Orange and Rockland Utility](https://oru.com) is an energy provider in NY and NJ, USA. +The `oru` sensor platform fetches your current energy usage from your ORU smart meter. + +## Configuration + +To add the `oru` sensor to your installation, add your `meter_number` to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: oru + meter_number: YOUR_METER_NUMBER +``` + +{% configuration %} +meter_number: + description: The meter number of your smart meter with Orange and Rockland Utility. + required: true + type: string +{% endconfiguration %} + +`meter_number` is the smart meter number. It can be found on your energy bill, on the top left corner, alongside your account number. diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index 54b669718ce..1c91c94b0b3 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -30,12 +30,28 @@ sensor: payload: '{ "device" : "heater" }' ``` +or a template based request: + +{% raw %} + +```yaml +# Example configuration.yaml entry +sensor: + - platform: rest + resource_template: http://IP_ADDRESS/{{ now().strftime('%Y-%m-%d') }} +``` + +{% endraw %} + {% configuration %} resource: description: The resource or endpoint that contains the value. required: true type: string - default: string +resource_template: + description: The resource or endpoint that contains the value with template support. + required: true + type: template method: description: The method of the request. Either `POST` or `GET`. required: false @@ -103,6 +119,12 @@ force_update: Make sure that the URL exactly matches your endpoint or resource.
+
+ +Use either `resource` or `resource_template`. + +
+ `curl` can help you identify the variable you want to display in your Home Assistant frontend. The example below shows the JSON response of a device that is running with [aREST](https://arest.io/). ```bash diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown index 4653c06b139..5893f5c41fb 100644 --- a/source/_integrations/rest_command.markdown +++ b/source/_integrations/rest_command.markdown @@ -33,7 +33,7 @@ service_name: required: true type: [string, template] method: - description: HTTP method to use (get, post, put, or delete). + description: HTTP method to use (get, patch, post, put, or delete). required: false default: get type: string @@ -57,7 +57,7 @@ service_name: description: Timeout for requests in seconds. required: false type: string - defaut: 10 + default: 10 content_type: description: Content type for the request. required: false diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index 20c397fca27..c33aaae515d 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -12,6 +12,9 @@ The `saj` sensor will poll a [SAJ](https://www.saj-electric.com/) solar inverter This sensor uses the web interface and to use it, you have to be able to connect to the solar inverter from your favorite web browser. +There is a difference between inverters that are connected via an ethernet module and those connected via a WiFi module. +The WiFi module requires a username and password for authentication where the ethernet module does not. + ## Configuration To enable this sensor, add the following lines to your `configuration.yaml` file: @@ -25,23 +28,47 @@ sensor: {% configuration %} host: - description: The IP address of the SAJ Solar Inverter. + description: "The IP address of the SAJ Solar Inverter." required: true type: string +type: + description: "Type of connection module: 'ethernet' or 'wifi'" + required: false + default: ethernet + type: string +username: + description: "Username for logging in to SAJ Solar Inverter (only used when type is 'wifi' but can be skipped if the inverter still has the default credentials set: admin/admin)" + required: false + type: string +password: + description: "Password for logging in to SAJ Solar Inverter (only used when type is 'wifi' but can be skipped if the inverter still has the default credentials set: admin/admin)" + required: false + type: string {% endconfiguration %} ## Sensors Sensors available in the library: -| name | Unit | Description | -|--------------------|------|:-------------------------------------------| -| current_power | W | Current power generated by the inverter. | -| today_yield | kWh | Power yield for today. | -| today_time | h | Inverter's running time for today. | -| today_max_current | W | Maximum current power for today. | -| total_yield | kWh | Total kWh generated to date. | -| total_time | h | Total running time of the inverter . | -| total_co2_reduced | kg | Total CO2 in kg reduced. | -| temperature | °C | Temperature of the inverter. | -| state | N/A | Live state of the inverter. | +| name | Unit | Description | +|--------------------|------|:-----------------------------------------------------------------------------| +| current_power | W | Current power generated by the inverter. | +| today_yield | kWh | Power yield for today. | +| today_time | h | Inverter's running time for today. | +| today_max_current | W | Maximum current power for today. (only for connection via ethernet module) | +| total_yield | kWh | Total kWh generated to date. | +| total_time | h | Total running time of the inverter . | +| total_co2_reduced | kg | Total CO2 in kg reduced. | +| temperature | °C | Temperature of the inverter. | +| state | N/A | Live state of the inverter. | + +## Full configuration example for WiFi inverters + +```yaml +sensor: + - platform: saj + host: IP_ADDRESS_OF_DEVICE + type: wifi + username: USERNAME + password: PASSWORD +``` diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 466b815b248..2745e4825ef 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -50,14 +50,41 @@ Scenes can be activated using the service `scene.turn_on` (there is no 'scene.tu ```yaml # Example automation -... automation: trigger: platform: state entity_id: device_tracker.sweetheart - from: 'not_home' - to: 'home' + from: "not_home" + to: "home" action: service: scene.turn_on entity_id: scene.romantic ``` + +## Applying a scene without defining it + +With the `scene.apply` service you are able to apply a scene without first defining it via configuration. Instead, you pass the states as part of the service data. The format of the data is the same as the `entities` field in a configuration. + +```yaml +# Example automation +automation: + trigger: + platform: state + entity_id: device_tracker.sweetheart + from: "not_home" + to: "home" + action: + service: scene.apply + data: + entities: + light.tv_back_light: + state: on + brightness: 100 + light.ceiling: off + media_player.sony_bravia_tv: + source: HDMI 1 +``` + +## Reloading scenes + +Whenever you make a change to your scene configuration, you can call the `scene.reload` service to reload the scenes. diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown new file mode 100644 index 00000000000..e2ed441979f --- /dev/null +++ b/source/_integrations/sinch.markdown @@ -0,0 +1,65 @@ +--- +title: "Sinch SMS" +description: "Instructions on how to add Sinch notifications to Home Assistant." +logo: sinch.png +ha_category: + - Notifications +ha_release: 0.101 +--- + +The `sinch` platform uses [Sinch](https://www.sinch.com/products/messaging/sms/) to deliver notifications from Home Assistant. + +## Prerequisites + +Go to your [Sinch Dashboard](https://dashboard.sinch.com/sms/api/rest) and click "Add new REST API". You should now be able to obtain your `service_plan_id` and `api_key`. + +## Configuration + +To add Sinch to your installation, add the following to your Home Assistant `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: sinch + service_plan_id: SINCH_SERVICE_PLAN_ID + api_key: SINCH_API_KEY +``` + +{% configuration %} +name: + description: "Setting the optional parameter name allows multiple notifiers to be created. The default value is `Sinch`. The notifier will bind to the service `notify.NOTIFIER_NAME`." + required: false + type: string +service_plan_id: + description: Your Sinch Service Plan ID. + required: true + type: string +api_key: + description: Your API Token. + required: true + type: string +default_recipient: + description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages by default (when not specifying `target` in the service call), e.g., `09171234567` or `[09171234567, 09177654321]`." + required: false + type: [string, list] +sender: + description: The name or number of the sender. + required: false + type: string + default: 'Home Assistant' +{% endconfiguration %} + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + +### Full configuration example + +```yaml +# Example configuration.yaml entry +notify: + - platform: sinch + name: Sinch + service_plan_id: SINCH_SERVICE_PLAN_ID + api_key: SINCH_API_KEY + default_recipient: [PHONE_NO1, PHONE_NO2] + sender: Home assistant +``` diff --git a/source/_integrations/stride.markdown b/source/_integrations/stride.markdown deleted file mode 100644 index ef8a6e48397..00000000000 --- a/source/_integrations/stride.markdown +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: "Stride" -description: "Instructions how to add Stride notifications to Home Assistant." -logo: stride.png -ha_category: - - Notifications -ha_release: 0.66 ---- - -
- -Slack has taken over Hipchat and Stride and will, therefore, discontinue these platforms. Stride will be discontinued after February 15th, 2019. For more information [read the announcement](https://www.atlassian.com/blog/announcements/new-atlassian-slack-partnership). - -
- -The `stride` platform allows you to send notifications from Home Assistant to [Stride](https://stride.com/). - -You need to obtain a [Stride API token](https://developer.atlassian.com/cloud/stride/security/authentication/#using-room-tokens) to be able to send notifications. When creating the token, you'll see a section labeled "Use this conversation URL to post messages" - it will look something like "https://api.atlassian.com/site/55872e9f-047e-a619-b32c-19d37fbc6038/conversation/26c98c26-0ffd-a11e-3a55-1b397cb71fe0/message". The first set of numbers and letters (`55872e9f-047e-a619-b32c-19d37fbc6038`) is the Cloud ID, and the second set (`26c98c26-0ffd-a11e-3a55-1b397cb71fe0`) is the Room ID. - -To enable the Stride notification in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -notify: - - platform: stride - cloudid: CLOUD-ID - token: TOKEN - room: ROOM-ID -``` - -{% configuration %} -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. - required: false - default: notify - type: string -cloudid: - description: The Stride Cloud ID to use for sending Stride notification. - required: true - type: string -token: - description: The Stride API token to use for sending Stride notifications. - required: true - type: string -room: - description: The default room to post to if no room is explicitly specified when sending the notification. - required: true - type: string -panel: - description: Setting panel will override the default panel type (`None`) for the notification. By default not setting this will post to Stride without using a panel type. Valid options are 'None', 'info', 'note', 'tip', 'warning'. - required: false - type: string -{% endconfiguration %} - -### Stride service data - -The following attributes can be placed `data` for extended functionality. - -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `room` | yes | (int) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. -| `panel` | yes | (str) Same usage as in configuration.yaml. Overrides any setting set in configuration.yaml. - -To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown index d98e57f85eb..050b3f2b16a 100644 --- a/source/_integrations/switch.template.markdown +++ b/source/_integrations/switch.template.markdown @@ -20,6 +20,7 @@ This can simplify the GUI and make it easier to write automations. You can mark To enable Template Switches in your installation, add the following to your `configuration.yaml` file: {% raw %} + ```yaml # Example configuration.yaml entry switch: @@ -36,6 +37,7 @@ switch: data: entity_id: switch.skylight_close ``` + {% endraw %} {% configuration %} @@ -56,6 +58,11 @@ switch: description: Defines a template to set the state of the switch. required: true type: template + availability_template: + description: Defines a template to get the `available` state of the component. If the template returns `true`, the device is `available`. If the template returns any other value, the device will be `unavailable`. If `availability_template` is not configured, the component will always be `available`. + required: false + type: template + default: true turn_on: description: Defines an action to run when the switch is turned on. required: true @@ -87,6 +94,7 @@ In this section you find some real-life examples of how to use this switch. This example shows a switch that copies another switch. {% raw %} + ```yaml switch: - platform: template @@ -102,6 +110,7 @@ switch: data: entity_id: switch.source ``` + {% endraw %} ### Toggle Switch @@ -109,6 +118,7 @@ switch: This example shows a switch that takes its state from a sensor and toggles a switch. {% raw %} + ```yaml switch: - platform: template @@ -125,6 +135,7 @@ switch: data: entity_id: switch.blind_toggle ``` + {% endraw %} ### Sensor and Two Switches @@ -133,6 +144,7 @@ This example shows a switch that takes its state from a sensor, and uses two momentary switches to control a device. {% raw %} + ```yaml switch: - platform: template @@ -149,6 +161,7 @@ switch: data: entity_id: switch.skylight_close ``` + {% endraw %} ### Change The Icon @@ -156,6 +169,7 @@ switch: This example shows how to change the icon based on the day/night cycle. {% raw %} + ```yaml switch: - platform: template @@ -177,6 +191,7 @@ switch: mdi:garage {% endif %} ``` + {% endraw %} ### Change The Entity Picture @@ -184,6 +199,7 @@ switch: This example shows how to change the entity picture based on the day/night cycle. {% raw %} + ```yaml switch: - platform: template @@ -205,4 +221,5 @@ switch: /local/garage-closed.png {% endif %} ``` + {% endraw %} diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index b2da28f417f..3332b859ee2 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -6,7 +6,6 @@ ha_category: - Hub - Switch - Light - - Presence Detection ha_release: 0.89 ha_iot_class: Local Polling --- @@ -17,7 +16,6 @@ There is currently support for the following device types within Home Assistant: - **Light** - **Switch** -- [Presence Detection](#presence-detection) In order to activate the support, you will have to enable the integration inside the config panel. The supported devices in your network are automatically discovered, but if you want to control devices residing in other networks you will need to configure them manually as shown below. @@ -34,6 +32,12 @@ The following devices are known to work with this component. - HS105 - HS110 +### Multi-Plug Strips + +- HS107 (indoor 2-outlet) +- HS300 (powerstrip 6-outlet) +- KP400 (outdoot 2-outlet) + ### Wall Switches - HS200 @@ -73,6 +77,15 @@ light: description: Hostname or IP address of the device. required: true type: string +strip: + description: List of multi-outlet on/off switch devices. + required: false + type: list + keys: + host: + description: Hostname or IP address of the device. + required: true + type: string switch: description: List of on/off switch devices. required: false @@ -108,6 +121,9 @@ tplink: dimmer: - host: 192.168.200.5 - host: 192.168.200.6 + strip: + - host: 192.168.200.7 + - host: 192.168.200.8 ``` ## Extracting Energy Sensor data @@ -142,59 +158,3 @@ sensor: unit_of_measurement: 'kWh' ``` {% endraw %} - -## Presence detection - -The `tplink` platform allows you to detect presence by looking at connected devices to a [TP-Link](https://www.tp-link.com) router. - -Currently supported devices includes the following: - -- Archer C7 firmware version 150427 -- Archer C9 firmware version 150811 -- EAP-225 AP with latest firmware version -- Archer D9 firmware version 0.9.1 0.1 v0041.0 Build 160224 Rel.59129n - -
-TP-Link devices typically only allow one login at a time to the admin console. This integration will count towards your one allowed login. Depending on how aggressively you configure device_tracker you may not be able to access the admin console of your TP-Link device without first stopping Home Assistant. Home Assistant takes a few seconds to login, collect data, and log out. If you log into the admin console manually, remember to log out so that Home Assistant can log in again. -
- -### Configuration - -To enable this device tracker, add the following lines to your `configuration.yaml`: - -```yaml -# Example configuration.yaml entry -device_tracker: - - platform: tplink - host: YOUR_ROUTER_IP - username: YOUR_ADMIN_USERNAME - password: YOUR_ADMIN_PASSWORD -``` - -{% configuration %} -host: - description: The IP address of your router, e.g., 192.168.1.1. - required: true - type: string -username: - description: The username of an user with administrative privileges, usually *admin*. The Archer D9 last firmware does not require a username. - required: true - type: string -password: - description: The password for your given admin account. - required: true - type: string -{% endconfiguration %} - -For Archer C9 models running firmware version 150811 or later please use the encrypted password you can retrieve like this: - -1. Go to the login page of your router. (default: 192.168.0.1) -2. Type in the password you use to login into the password field. -3. Click somewhere else on the page so that the password field is not selected anymore. -4. Open the JavaScript console of your browser (usually by pressing F12 and then clicking on "Console"). -5. Type `document.getElementById("login-password").value;` or `document.getElementById("pcPassword").value;`, depending on your firmware version. -6. Copy the returned value to your Home Assistant configuration as password. - -See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. - -For Archer D9 model the default IP is 192.168.1.1, the username is not necessary and you can leave that field blank. diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 4b7b01a9445..94b4b59edd8 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -35,7 +35,7 @@ name: ### Usage -Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/integrations/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. +Twilio is a notify platform and thus can be controlled by calling the notify service [as described here](/integrations/notify/). It will send a notification to all E.164 phone numbers in the notification **target**. See the notes above regarding the `from_number` configuration variable for information about formatting phone numbers. It's also possible to use `whatsapp:+123456789` for sending notifications to a Whatsapp user. Media can be included with messages by setting the optional `media_url` variable. Only `.gif`, `.png`, or `.jpeg` content are supported, according to the Twilio documentation and this feature is [only supported in the US and Canada.][mms] diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index b00631d5f9d..61eb90f249b 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -355,6 +355,11 @@ To fetch the token follow these instructions depending on your mobile phone plat 2. Install [BlueStacks](https://www.bluestacks.com). 3. Set up [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) in BlueStacks and login to synchronize devices. 4. Use [BlueStacks Tweaker](https://forum.xda-developers.com/general/general/bluestacks-tweaker-2-tool-modifing-t3622681) to access the filesystem and retrieve the token. +5. Copy `/data/data/com.xiaomi.smarthome/databases/miio2.db` file to your computer using the Bluestacks Tweakers filesystem tool. +6. Install [DB Browser for SQLite](https://sqlitebrowser.org/). +7. Open the DB Browser and load the `miio2.db` from your computer. +8. Select `Browse Data` tab from the DB Browser and switch to table called `devicerecord` +9. This will display all the connected devices information with the token. ### Selecting token manually (Windows and Android) diff --git a/source/_lovelace/alarm-panel.markdown b/source/_lovelace/alarm-panel.markdown index 0155f19dcb6..09e25d85f7d 100644 --- a/source/_lovelace/alarm-panel.markdown +++ b/source/_lovelace/alarm-panel.markdown @@ -44,6 +44,10 @@ states: description: Arm Night arm_custom_bypass: description: Arm Custom Bypass +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} ## Examples diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 33db375cb3d..9f352854c81 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -19,6 +19,10 @@ title: required: false description: The card title. type: string +icon: + required: false + description: An icon to display to the left of the title + type: string show_header_toggle: required: false description: Button to turn on/off all entities. @@ -63,6 +67,96 @@ format: required: false description: "How the state should be formatted. Currently only used for timestamp sensors. Valid values are: `relative`, `total`, `date`, `time` and `datetime`." type: string +tap_action: + required: false + description: Action to take on tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`toggle`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none +hold_action: + required: false + description: Action to take on tap-and-hold + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none {% endconfiguration %} ## Special Row Elements diff --git a/source/_lovelace/entity-button.markdown b/source/_lovelace/entity-button.markdown index ee3ed4a6b4e..812c77eb185 100644 --- a/source/_lovelace/entity-button.markdown +++ b/source/_lovelace/entity-button.markdown @@ -80,6 +80,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -110,12 +115,75 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" theme: required: false description: "Set to any theme within `themes.yaml`" type: string {% endconfiguration %} +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string +{% endconfiguration %} + ## Examples Title and Script Service Example: diff --git a/source/_lovelace/glance.markdown b/source/_lovelace/glance.markdown index c69af02b1e1..fb9b54191ac 100644 --- a/source/_lovelace/glance.markdown +++ b/source/_lovelace/glance.markdown @@ -75,6 +75,11 @@ show_last_changed: description: Overwrites the state display with the relative time since last changed. type: boolean default: false +show_state: + required: false + description: Show entity state-text. + type: boolean + default: true tap_action: required: false description: Action to take on tap @@ -105,6 +110,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -135,6 +145,69 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +{% endconfiguration %} + +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string {% endconfiguration %} ## Examples diff --git a/source/_lovelace/horizontal-stack.markdown b/source/_lovelace/horizontal-stack.markdown index 9a5ab1d0308..0c3c05a4581 100644 --- a/source/_lovelace/horizontal-stack.markdown +++ b/source/_lovelace/horizontal-stack.markdown @@ -11,6 +11,10 @@ type: required: true description: horizontal-stack type: string +title: + required: false + description: Title of Stack + type: string cards: required: true description: List of cards. @@ -21,6 +25,7 @@ cards: ```yaml type: horizontal-stack +title: Lights cards: - type: picture-entity image: /local/bed_1.png diff --git a/source/_lovelace/markdown.markdown b/source/_lovelace/markdown.markdown index f0f0efe6858..87a6e06d5a7 100644 --- a/source/_lovelace/markdown.markdown +++ b/source/_lovelace/markdown.markdown @@ -38,6 +38,10 @@ entity_id: type: [string, list] default: none description: "A list of entity IDs so a template in `content:` only reacts to the state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities." +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} ## Example diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown index f5112d3619b..59920f2a60a 100644 --- a/source/_lovelace/picture-elements.markdown +++ b/source/_lovelace/picture-elements.markdown @@ -34,6 +34,10 @@ state_filter: required: false description: '[State-based CSS filters](#how-to-use-state_filter)' type: map +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} ## Elements @@ -58,6 +62,111 @@ title: required: false description: State badge tooltip. Set to null to hide. type: string +tap_action: + required: false + description: Action to take on tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`toggle`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +hold_action: + required: false + description: Action to take on tap-and-hold + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" {% endconfiguration %} ### Icon representing an entity state @@ -109,6 +218,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -139,6 +253,46 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" style: required: true description: Position and style the element using CSS. @@ -199,6 +353,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -229,6 +388,46 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" style: required: true description: Position and style the element using CSS. @@ -311,6 +510,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -341,6 +545,46 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" style: required: true description: Position and style the element using CSS. @@ -393,6 +637,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -423,6 +672,46 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" image: required: false description: The image to display. @@ -492,6 +781,29 @@ elements: type: list {% endconfiguration %} +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string +{% endconfiguration %} + ### Custom Elements {% configuration %} diff --git a/source/_lovelace/picture-entity.markdown b/source/_lovelace/picture-entity.markdown index 925449dde05..4c5fac80557 100644 --- a/source/_lovelace/picture-entity.markdown +++ b/source/_lovelace/picture-entity.markdown @@ -59,6 +59,10 @@ show_state: description: Shows state in footer. type: boolean default: true +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string tap_action: required: false description: Action to take on tap @@ -89,6 +93,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -119,6 +128,69 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +{% endconfiguration %} + +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string {% endconfiguration %} ## How to use state_filter diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index 494d5d78fa3..c26ce3d3c23 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -58,6 +58,15 @@ entity: required: false description: Entity to use for `state_image`. type: string +show_state: + required: false + description: Show entity state-text. + type: boolean + default: true +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string tap_action: required: false description: Action to take on tap @@ -88,6 +97,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -118,6 +132,46 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" {% endconfiguration %} ## Options For Entities @@ -133,6 +187,11 @@ icon: required: false description: Overwrites default icon. type: string +show_state: + required: false + description: Show entity state-text. + type: boolean + default: true tap_action: required: false description: Action to take on tap @@ -140,7 +199,7 @@ tap_action: keys: action: required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `none`)" + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" type: string default: "`more-info`" navigation_path: @@ -158,6 +217,11 @@ tap_action: description: "Service data to include (e.g., `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -165,7 +229,7 @@ hold_action: keys: action: required: true - description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `none`)" + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" type: string default: "`more-info`" navigation_path: @@ -183,6 +247,69 @@ hold_action: description: "Service data to include (e.g., `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +{% endconfiguration %} + +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string {% endconfiguration %} ## How to use state_filter diff --git a/source/_lovelace/picture.markdown b/source/_lovelace/picture.markdown index 6170f9fe43a..6a97fb0e5e4 100644 --- a/source/_lovelace/picture.markdown +++ b/source/_lovelace/picture.markdown @@ -20,6 +20,10 @@ image: required: true description: The URL of an image. type: string +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string tap_action: required: false description: Action to take on tap @@ -50,6 +54,11 @@ tap_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" hold_action: required: false description: Action to take on tap-and-hold @@ -80,6 +89,69 @@ hold_action: description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" type: string default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +{% endconfiguration %} + +## Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +## Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string {% endconfiguration %} ## Examples diff --git a/source/_lovelace/plant-status.markdown b/source/_lovelace/plant-status.markdown index 9b357cfe09d..4a51516674a 100644 --- a/source/_lovelace/plant-status.markdown +++ b/source/_lovelace/plant-status.markdown @@ -25,6 +25,10 @@ name: description: Overwrites Friendly Name type: string default: Entity Name +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} ## Example diff --git a/source/_lovelace/shopping-list.markdown b/source/_lovelace/shopping-list.markdown index f1caa13819b..ac066ceb7a6 100644 --- a/source/_lovelace/shopping-list.markdown +++ b/source/_lovelace/shopping-list.markdown @@ -26,6 +26,10 @@ title: required: false description: Title of Shopping List type: string +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} ## Examples diff --git a/source/_lovelace/vertical-stack.markdown b/source/_lovelace/vertical-stack.markdown index 146f009220d..c918c3cc4ef 100644 --- a/source/_lovelace/vertical-stack.markdown +++ b/source/_lovelace/vertical-stack.markdown @@ -11,6 +11,10 @@ type: required: true description: vertical-stack type: string +title: + required: false + description: Title of Stack + type: string cards: required: true description: List of cards. @@ -23,6 +27,7 @@ Basic example: ```yaml type: vertical-stack +title: Backyard cards: - type: picture-entity entity: camera.demo_camera diff --git a/source/_lovelace/weather-forecast.markdown b/source/_lovelace/weather-forecast.markdown index 651b25d81c4..64354728c2e 100644 --- a/source/_lovelace/weather-forecast.markdown +++ b/source/_lovelace/weather-forecast.markdown @@ -25,6 +25,10 @@ name: description: Overwrites the friendly name. type: string default: Entity Name +theme: + required: false + description: "Set to any theme within `themes.yaml`" + type: string {% endconfiguration %} Example diff --git a/source/_posts/2017-01-14-iss-usps-images-packages.markdown b/source/_posts/2017-01-14-iss-usps-images-packages.markdown index a170f771391..d51fdabfcf9 100644 --- a/source/_posts/2017-01-14-iss-usps-images-packages.markdown +++ b/source/_posts/2017-01-14-iss-usps-images-packages.markdown @@ -34,7 +34,7 @@ The new [image processing component][image] currently works with [number plates] ## All changes -- Sensor: Support for [HydroQuebec][quebec] ([@titilambert]) +- Sensor: Support for HydroQuebec ([@titilambert]) - Sensor: Tracking the [ISS][iss] ([@HydrelioxGitHub]) - Sensor: USPS deliveries tracking ([@happyleavesaoc]) - Device tracker: New [ping-based][ping] tracker ([@michaelarnauts]) @@ -177,7 +177,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [pico]: /integrations/picotts [ping]: /integrations/ping [plates]: /integrations/openalpr_local/ -[quebec]: /integrations/hydroquebec [rest]: /integrations/rest_command/ [sma]: /integrations/sma#sensors [sonarr]: /integrations/sonarr @@ -190,4 +189,3 @@ Experiencing issues introduced by this release? Please report them in our [issue [yandex]: /integrations/yandextts [yeelight]: /integrations/yeelight [zengge]: /integrations/zengge - diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown index 1c80069d819..e3d54c7e025 100644 --- a/source/_posts/2017-07-02-release-48.markdown +++ b/source/_posts/2017-07-02-release-48.markdown @@ -165,7 +165,7 @@ light: - Do not call update() in constructor ([@fabaff] - [#8120]) ([sensor.netdata docs]) - Change Error Message when Turning off ISY994 Light ([@SConaway] - [#8131]) ([light.isy994 docs]) - Allow iteration in python_script ([@balloob] - [#8134]) ([python_script docs]) -- Add current balance to hydroquebec sensor ([@titilambert] - [#8138]) ([sensor.hydroquebec docs]) +- Add current balance to hydroquebec sensor ([@titilambert] - [#8138]) - Decora light: Fix brightness level in UI ([@titilambert] - [#8139]) ([light.decora docs]) - Add I2c BME280 temperature, humidity and pressure sensor for Raspberry Pi ([@azogue] - [#7989]) ([sensor.bme280 docs]) (new-platform) - Upgrade libsoundtouch to prevent Python3.6 errors with enum. #7733 #8103 ([@CharlesBlonde] - [#8143]) ([media_player.soundtouch docs]) @@ -489,7 +489,6 @@ light: [sensor.dyson docs]: /integrations/dyson#sensor [sensor.glances docs]: /integrations/glances [sensor.htu21d docs]: /integrations/htu21d -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.knx docs]: /integrations/sensor.knx/ [sensor.netdata docs]: /integrations/netdata [sensor.openhardwaremonitor docs]: /integrations/openhardwaremonitor diff --git a/source/_posts/2017-07-29-release-50.markdown b/source/_posts/2017-07-29-release-50.markdown index 442d67008c2..2c701c3336e 100644 --- a/source/_posts/2017-07-29-release-50.markdown +++ b/source/_posts/2017-07-29-release-50.markdown @@ -138,7 +138,7 @@ conversation: - Remove deprecated automation keywords ([@amelchio] - [#8510]) ([automation.state docs]) ([automation.time docs]) (breaking change) - Citybikes: Allow None as result for empty slots ([@janLo] - [#8528]) ([sensor.citybikes docs]) - Return a 0 temperature value when none is found ([@phil-lavin] - [#8518]) ([climate.maxcube docs]) -- Fix #6469 and #6828 ([@titilambert] - [#8537]) ([sensor.hydroquebec docs]) +- Fix #6469 and #6828 ([@titilambert] - [#8537]) - Update docstrings ([@fabaff] - [#8536]) - Upgrade TwitterAPI to 2.4.6 ([@fabaff] - [#8535]) ([notify.twitter docs]) - Decora: Fix set brightness and improve reconnection ([@titilambert] - [#8522]) ([light.decora docs]) @@ -381,7 +381,6 @@ conversation: [sensor.dht docs]: /integrations/dht [sensor.fitbit docs]: /integrations/fitbit [sensor.google_wifi docs]: /integrations/google_wifi -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.knx docs]: /integrations/sensor.knx/ [sensor.lyft docs]: /integrations/lyft [sensor.octoprint docs]: /integrations/octoprint#sensor diff --git a/source/_posts/2017-11-18-release-58.markdown b/source/_posts/2017-11-18-release-58.markdown index 253ca44b625..2fb8a97bfdc 100644 --- a/source/_posts/2017-11-18-release-58.markdown +++ b/source/_posts/2017-11-18-release-58.markdown @@ -64,7 +64,7 @@ Our about screen that shows the error logs has gained a nice upgrade by [@postlu - Fix yweather ([@tinloaf] - [#10661]) ([weather.yweather docs]) - Properly initialize Harmony remote ([@amelchio] - [#10665]) ([remote.harmony docs]) -- Handle the new version of HydroQuebec website ([@titilambert] - [#10682]) ([sensor.hydroquebec docs]) +- Handle the new version of HydroQuebec website ([@titilambert] - [#10682]) - Fix for time_date sensor ([@etsinko] - [#10694]) ([sensor.time_date docs]) - Frontend fixes ([@andrey-git] [@armills] [@balloob]) @@ -492,6 +492,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [@tinloaf]: https://github.com/tinloaf [@titilambert]: https://github.com/titilambert [remote.harmony docs]: /integrations/harmony -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.time_date docs]: /integrations/time_date [weather.yweather docs]: /integrations/yweather diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown index 95c6c42ceac..fba4b0fd1a8 100644 --- a/source/_posts/2018-01-14-release-61.markdown +++ b/source/_posts/2018-01-14-release-61.markdown @@ -161,7 +161,7 @@ Note however, that this feature was replaced by a new ignore_string config optio ## All changes - Try multiple methods of getting data in asuswrt. ([@PeWu] - [#11140]) ([device_tracker.asuswrt docs]) -- Hydroquebec component use now asyncio ([@titilambert] - [#10795]) ([sensor.hydroquebec docs]) +- Hydroquebec component use now asyncio ([@titilambert] - [#10795]) - Hive Component Release Two ([@KJonline] - [#11053]) ([hive docs]) ([climate.hive docs]) ([light.hive docs]) - Add Discogs Sensor platform ([@thibmaek] - [#10957]) ([sensor.discogs docs]) (new-platform) - Fix statistics sensor mean and median when only one sample is available. ([@markferry] - [#11180]) ([sensor.statistics docs]) @@ -259,7 +259,7 @@ Note however, that this feature was replaced by a new ignore_string config optio - Input Select - Added service description ([@cdce8p] - [#11456]) ([input_select docs]) - Input Boolean - Deleted 'DEFAULT_INITIAL' ([@cdce8p] - [#11453]) ([input_boolean docs]) - Updated gitignore file ([@cdce8p] - [#11452]) -- Update hydroquebec component to use hass httpsession ([@titilambert] - [#11412]) ([sensor.hydroquebec docs]) +- Update hydroquebec component to use hass httpsession ([@titilambert] - [#11412]) - Catch everything when calling to OctoPrint API to fix #10557 ([@w1ll1am23] - [#11457]) ([octoprint docs]) - Update PULL_REQUEST_TEMPLATE.md ([@danielhiversen] - [#11465]) - Alexa to not use customize for entity config ([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change) diff --git a/source/_posts/2018-04-14-release-67.markdown b/source/_posts/2018-04-14-release-67.markdown index a93cb1c8f09..f92971ab401 100644 --- a/source/_posts/2018-04-14-release-67.markdown +++ b/source/_posts/2018-04-14-release-67.markdown @@ -38,7 +38,7 @@ This release includes a security fix. The error log was accessible via the API w - Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) - Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) - Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) +- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) - Update pyfido to 2.1.1 ([@titilambert] - [#13947]) ([sensor.fido docs]) - Bumped pypollencom to 1.1.2 ([@bachya] - [#13959]) ([sensor.pollen docs]) - Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs]) @@ -111,7 +111,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Remove MercedesME component ([@ReneNulschDE] - [#13538]) ([device_tracker docs]) (mercedesme docs) (binary_sensor.mercedesme docs) (sensor.mercedesme docs) (breaking change) - Added Waze travel time sensor ([@Myrddyn1] - [#12387]) ([sensor.waze_travel_time docs]) (new-platform) - Added switch component to Amcrest IP Camera. ([@adpriebe] - [#12992]) ([amcrest docs]) ([switch.amcrest docs]) (new-platform) -- Upgrade pyhydroquebec 2.2.1 ([@titilambert] - [#13586]) ([sensor.hydroquebec docs]) +- Upgrade pyhydroquebec 2.2.1 ([@titilambert] - [#13586]) - Add mastodon ([@fabaff] - [#13441]) ([notify docs]) (new-platform) - Added support for requesting RSSI values from Bluetooth devices ([@FrederikBolding] - [#12458]) ([device_tracker.bluetooth_tracker docs]) - Fix mysensors update callback ([@MartinHjelmare] - [#13602]) ([mysensors docs]) @@ -384,7 +384,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.canary docs]: /integrations/canary#sensor [sensor.cpuspeed docs]: /integrations/cpuspeed [sensor.file docs]: /integrations/file#sensor -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.imap_email_content docs]: /integrations/imap_email_content/ [sensor.plex docs]: /integrations/plex#sensor [sensor.qnap docs]: /integrations/qnap @@ -435,7 +434,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [fan.xiaomi_miio docs]: /integrations/fan.xiaomi_miio/ [qwikswitch docs]: /integrations/qwikswitch/ [sensor.fido docs]: /integrations/fido -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.pollen docs]: /integrations/iqvia [switch.broadlink docs]: /integrations/broadlink#switch [switch.vesync docs]: /integrations/vesync#switches diff --git a/source/_posts/2018-04-27-release-68.markdown b/source/_posts/2018-04-27-release-68.markdown index 7774988c29a..2a6c06026fc 100644 --- a/source/_posts/2018-04-27-release-68.markdown +++ b/source/_posts/2018-04-27-release-68.markdown @@ -156,7 +156,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add support for new platform: climate.modbus ([@Kirchoff] - [#12224]) ([climate.modbus docs]) (new-platform) - Hive R3 update ([@KJonline] - [#13357]) ([hive docs]) ([binary_sensor.hive docs]) ([climate.hive docs]) ([light.hive docs]) ([sensor.hive docs]) ([switch.hive docs]) - Updated foobot_async package version ([@reefab] - [#13942]) ([sensor.foobot docs]) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) +- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) (beta fix) - Upgrade alpha_vantage to 2.0.0 ([@fabaff] - [#13943]) ([sensor.alpha_vantage docs]) - Cleanup on exit ([@dgomes] - [#13918]) ([media_player.mediaroom docs]) - Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) @@ -183,7 +183,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Import operation modes from air humidifier ([@syssi] - [#13908]) ([fan.xiaomi_miio docs]) (beta fix) - Upgrade pyqwikswitch to 0.71 ([@kellerza] - [#13920]) ([qwikswitch docs]) - Upgrade somecomfort to 0.5.2 ([@balloob] - [#13940]) ([climate.honeywell docs]) (beta fix) -- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) ([sensor.hydroquebec docs]) (beta fix) +- Update pyhydroquebec to 2.2.2 ([@titilambert] - [#13946]) (beta fix) - Revert "Upgrade pyqwikswitch to 0.71 ([@balloob] - [#13920]) ([qwikswitch docs]) - Bump skybellpy version to 0.1.2 ([@MisterWil] - [#13974]) ([skybell docs]) - Fix typo an coding style ([@stephanerosi] - [#13970]) ([device_tracker docs]) @@ -476,7 +476,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.foobot docs]: /integrations/foobot [sensor.fritzbox_netmonitor docs]: /integrations/fritzbox#sensor_netmonitor/ [sensor.hive docs]: /integrations/hive#sensor -[sensor.hydroquebec docs]: /integrations/hydroquebec [sensor.linux_battery docs]: /integrations/linux_battery [sensor.miflora docs]: /integrations/miflora [sensor.mqtt docs]: /integrations/sensor.mqtt/ diff --git a/source/_posts/2018-07-16-release-73-2.markdown b/source/_posts/2018-07-16-release-73-2.markdown index b0fda1db48a..cc34cb7844c 100644 --- a/source/_posts/2018-07-16-release-73-2.markdown +++ b/source/_posts/2018-07-16-release-73-2.markdown @@ -42,7 +42,7 @@ Also impacted, but integrations are read only: - [sensor.ebox](/integrations/ebox) - [sensor.fido](/integrations/fido) - [sensor.foobot](/integrations/foobot) -- [sensor.hydroquebec](/integrations/hydroquebec) +- sensor.hydroquebec - [sensor.startca](/integrations/startca) - [sensor.teksavvy](/integrations/teksavvy) - [sensor.thethingsnetwork](/integrations/thethingsnetwork#sensor) diff --git a/source/_posts/2019-10-20-release-101.markdown b/source/_posts/2019-10-20-release-101.markdown new file mode 100644 index 00000000000..e2faf8480aa --- /dev/null +++ b/source/_posts/2019-10-20-release-101.markdown @@ -0,0 +1,1841 @@ +--- +layout: post +title: "0.101: Airly, Apprise, Sinch, Solar-Log, Microsoft Teams" +description: "TBD" +date: 2019-10-30 20:41:02 +date_formatted: "October 30, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-10-0.101/components.png +--- + + + +## Hacktoberfest + +It is almost the end of Hacktoberfest, and boy, it was a good one. We had a total of 1318 PRs merged in the last month. And most of them are in this release! + +We had: +154 authors on home-assistant +184 authors on home-assistant.io +30 authors on home-assistant-polymer + +A lot of thanks to all the contributors! + +## API Password and trusted networks + +It is no longer possible to make authenticated requests using trusted networks or by appending `?api_password=X` to the URL. You will now first need to get an authentication token and use that token to make requests. + +These features were deprecated in Home Assistant 0.90 and 0.91 (released around April 2019). It was initially planned to be dropped in Home Assistant 0.96 (released July 17, 2019). + +The support of configuring the auth providers for API Password and Trusted Networks via the HTTP configuration is also removed. It now needs to be configured in the auth provider section ([docs](https://www.home-assistant.io/docs/authentication/providers/)). + +Direct authentication meant that you could make an authenticated request without a bearer token by making the request from a trusted network or appending `?api_password=X` to the URL. + +These features are still available as authentication providers ([docs](https://www.home-assistant.io/docs/authentication/providers/)). + +You can use Long-Lived Access Tokens that can be created in the fronted on your profile page. These tokens will not expire and can be added in the header of the request. See the developer documentation for more info. + +

+Screenshot of the Long-Lived Access Tokens interface in the profile page. +Screenshot of the Long-Lived Access Tokens interface in the profile page. +

+ +Or you can use a webhook-based-integration. A webhook is a unique hard to guess URL that can be used to send data to Home Assistant. Requests made to webhooks do not need authentication. +Your webhook should be available from the internet, if you have a cloud subscription, the cloud will take care if this. You can find the cloud webhook URLs on your cloud configuration page. + +## Hassbian + +As you may have already read, we'll be sunsetting Hassbian. + +Hassbian was a superset of Raspbian optimized for Home Assistant. With limited time from the developers and easier alternatives as [Hass.io](hhttps://www.home-assistant.io/hassio/) it is time to sunset Hassbian. + +A big thank you to all those who worked on Hassbian - specifically [@landrash](https://github.com/landrash), who was the primary driver of this for so long, and [@ludeeus](https://github.com/ludeeus). + +For more info, read the [blogpost](https://www.home-assistant.io/blog/2019/10/26/rip-hassbian/) + +## Device automations + +This release includes improved support for alarms, covers, locks and sensors. +A “for” option was added in release 0.100 which allows you to specify triggers for when a certain device has been in a certain state for a period of time, in this release we added support for it in the automation editor. + +

+Screenshot of a device trigger with duration. +Screenshot of a device trigger with duration. +

+ +## Frontend + +A lot has happened on the frontend; we had a ton of Hacktoberfest PRs that added localization to the frontend and made our user experience better. +A special shout out to [@springstan](https://github.com/springstan) who did a lot of localization work, we now have the biggest part of our UI translatable! + +Thanks a lot to all the contributors! + +We now have our own confirmation dialogs thanks to [@timmo001](https://github.com/timmo001)! No more ugly browser modals. + +

+Screenshot of a confirm dialog when restarting Home Assistant. +Screenshot of a confirm dialog when restarting Home Assistant. +

+ +In the last release, we changed all the JSON inputs to YAML inputs, this release we add a code editor to all the YAML and Jinja2 inputs. This makes it a lot easier to read and write YAML. + +

+Screenshot of the service dev tools with YAML editor. +Screenshot of the service dev tools with YAML editor. +

+ +The entity registry is now also migrated to a datatable so you can easily search and sort your entities so it is easier to find the one you are looking for. + +

+Screenshot of the entity registry data table. +Screenshot of the entity registry data table. +

+ +We improved the device picker in automations, you can now search them and see in what area the device is. + +

+Screenshot of the device picker. +Screenshot of the device picker. +

+ +[mdonoughe](https://github.com/mdonoughe) added support the activate scene action in the automation editor. + +## In other news + + + + + + + + + + + +## New Integrations + +- Add Airly integration ([@bieniu] - [#26375]) ([airly docs]) (new-integration) +- Add Apprise notification integration ([@caronc] - [#26868]) ([apprise docs]) (new-integration) +- New sensor platform integration for Orange and Rockland Utility smart energy meter ([@bvlaicu] - [#27571]) ([oru docs]) (new-integration) +- Add sinch integration (notify component) ([@bendikrb] - [#26502]) ([sinch docs]) (new-integration) +- Add Solar-Log platform ([@Ernst79] - [#27036]) ([solarlog docs]) (new-integration) +- New platform for Microsoft Teams ([@peroyvind] - [#27981]) ([msteams docs]) (new-integration) + +## New Platforms + +- UniFi - Bandwidth sensors ([@Kane610] - [#27229]) ([unifi docs]) (breaking change) (new-platform) +- Neato battery sensor ([@dshokouhi] - [#27286]) ([neato docs]) (new-platform) +- Add sensor platform to Airly integration ([@bieniu] - [#27717]) ([airly docs]) (new-platform) +- Move imports in mqtt component ([@exxamalte] - [#27835]) ([mqtt docs]) (new-platform) + +## 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). + +## Reporting Issues + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## Breaking Changes + +- __Removed__ - The following integrations have been removed: + - __Direct authentication via trusted networks or API password__ - It is no longer possible to make authenticated requests using trusted networks or by appending ?api_password=X to the URL. You will now first need to get an authentication token and use that token to make requests. - ([@balloob] - [#27656]) ([auth docs]) ([http docs]) ([websocket_api docs]) + + - __Stride__ - The Stride notification integration was discontinued in February 2019 due to a take over by Slack. - ([@hmmbob] - [#27934]) ([stride docs]) + - __Hipchat__ - The Hipchat notification integration was discontinued in February 2019, also due to a take over by Slack. - ([@fabaff] - [#27399]) ([hipchat docs]) +- __Deprecated__ - Python 3.6 support is deprecated (to be removed completely by December 2019), as version 3.8.0 is now out - ([@scop] - [#27680]) +- __Ecobee__ - Adds `turn_on` method to ecobee climate platform. Previously, calling `climate.turn_on` would cause the ecobee thermostat to turn on in heat mode, regardless of the mode when the thermostat was turned off. Now, the thermostat will turn on to the last "active" HVAC mode (i.e., "heat", "cool", or "auto") (or, if the thermostat was "off" when Home Assistant started, to "auto"). - ([@marthoc] - [#27103]) ([ecobee docs]) + - __Genius Hub__ - This addresses an issue that requires the `unique_id` of **climate** and **water_heater** entities to be changed. After upgrading HA with this change, users will have stale entities in the entity registry that they may wish to clear out. - ([@zxdavb] - [#27916]) ([geniushub docs]) +- __Abode__ - The configuration variables were removed: `name`, `exclude` and `lights`, which were all previously optional. Existing users of the abode integration that use these configuration variables will have to remove them from the `configuration.yaml` file. Entities that users wish to disable can be done from the Entity Registry in the Configuration UI. - ([@shred86] - [#26699]) ([abode docs]) +- __AdGuard Home__ - The AdGuard Home integration has been made compatible with AdGuard Home v0.99.0. However, support for lower versions is now limited. Upgrading to AdGuard Home v0.99.0 or newer is advised. - ([@frenck] - [#27926]) ([adguard docs]) +- __UniFi__ - Previously, UniFi POE control switches had attributes showing network usage for receiving and transmitting data of that entity. This has been replaced with separate sensors, a pair per network client; one for received data and one for transmitted data. The default configuration is to keep this disabled so, if you want to use this, either enable select entities in the entity registry or go to your UniFi Integration options and enable it for all clients (see HASS 0.98 blog post for guidance). - ([@Kane610] - [#27229]) ([unifi docs]) +- __IKEA Tradfri__ - The Tradfri sensors (e.g., button remotes and motion detectors) are now being represented as battery entities and will no longer have remaining battery power represented as an attribute. Use the sensors state instead to monitor the remaining battery power. - ([@ggravlingen] - [#27245]) ([tradfri docs]) + +- __Jewish Calendar__ + - The output of the timestamp sensors have been streamlined, so they're easier to use in automations. All the timestamp sensors will return UTC time in ISO 8601 format. +Attributes have been added to get a UNIX timestamp. - ([@tsvi] - [#26940]) ([jewish_calendar docs]) + - The holiday type sensor has been removed and added as an attribute to the holiday sensor. +The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654]) ([jewish_calendar docs]) (breaking change) +- __Onkyo__ - Added `max_receiver_volume`, which sets the maximum volume of the receiver - this will default to 80, which worked with older Onkyo models. See documentation for details on how to find your receivers' max volume. + + The max_volume is now a percentage instead of a number from 0 to 80. If you have a `max_volume` setting of 80, you will need to change this to 100, if you have it as 40 you will need to change this to 50. To work out the new max volume setting use this formula: `( / 80) * 100` - ([@foxy82] - [#27218]) ([onkyo docs]) + +- __MQTT__ - Allow MQTT JSON light floating-point transition. The MQTT light with JSON schema will now send a float instead of an int with the `transition` key. In this way, transitions shorter than 1s can be used (0.5 seconds, for instance) if the MQTT light supports it. Lights that are based on the "ArduinoJson" module should not experience problems due to the change from int to float (the float value will be truncated to an int). - ([@starkillerOG] - [#27253]) ([mqtt docs]) + +- __Somfy__ - Users that have already created their app in the Sofy developer console will need to update the redirect URI to be able to authorize a new account. You need to change the redirect URI for your app on `https://developers.somfy.com` to `/auth/external/callback` instead of `/auth/somfy/callback`. - ([@balloob] - [#27727]) ([somfy docs]) + + +- __Glances__ - Glances is now its own integration and configured through config flow. Configured sensors with platform type glances should be edited as shown below. - @engrbm87] - [#27221]) ([glances docs]) (breaking change) + + Example configuration YAML: + + Before: + ```yaml + sensors: + - platform: glances + host: 192.168.1.1 + resources: + - 'cpu_use_percent' + ``` + After: + ```yaml + glances: + - host: 192.168.1.1 + ``` + +- __Tesla__ - Tesla `entity_id` and `unique_id` have changed. This is necessary so that multi-vehicle households have a way to distinguish vehicles by basing the name off the name in the app. Users should remove old tesla entries from the entity registry after the upgrade and update automations where tesla entity_ids are used. - ([@alandtse] - [#27957]) ([tesla docs]) +- __Roku__ - Roku TVs will now report "standby" instead of "off" when they are turned off. Roku TVs can be turned on directly to a source by selecting from the source list. When a `media_player` returns `STATE_OFF it` loses access to the source list. By returning `STATE_STANDBY` instead, the state is more accurately reflected and the `source_list` attribute is now accessible when the TV screen is off. - ([@Villhellm] - [#28148]) ([roku docs]) + +## All changes + +- Add unique_id to cert_expiry ([@jjlawren] - [#27140]) ([cert_expiry docs]) +- Improve device tracker tests ([@Kane610] - [#27159]) +- Add PowerLevelController for fan to alexa ([@ochlocracy] - [#27158]) ([alexa docs]) +- update broadlink library ([@Danielhiversen] - [#27157]) ([broadlink docs]) +- Adds fields to light.toggle service description ([@frenck] - [#27155]) +- Add support for `for` to binary_sensor, light and switch device conditions ([@emontnemery] - [#27153]) ([binary_sensor docs]) ([device_automation docs]) ([light docs]) ([switch docs]) +- Unload cert_expiry config entries ([@jjlawren] - [#27150]) ([cert_expiry docs]) +- Envisalink startup reconnect ([@Cinntax] - [#27063]) ([envisalink docs]) +- Fix homekit temperaturesensor round ([@gonzalezcalleja] - [#27047]) ([homekit docs]) +- Support zone expanders in alarmdecoder ([@hugheaves] - [#27167]) ([alarmdecoder docs]) +- Handle all single zone thermostats ([@zxdavb] - [#27168]) ([evohome docs]) +- Add device registry support to ecobee integration ([@marthoc] - [#27109]) ([ecobee docs]) +- WAQI add unique ID and availability ([@dshokouhi] - [#27086]) ([waqi docs]) +- Add Airly integration ([@bieniu] - [#26375]) ([airly docs]) (new-integration) +- Add SecurityPanelController for alarm_control_panel to alexa ([@ochlocracy] - [#27081]) ([alexa docs]) +- Add examples to lights service ([@Santobert] - [#27192]) +- Improve evohome debug logging ([@zxdavb] - [#27178]) ([evohome docs]) +- Add device condition support to sensor entities ([@emontnemery] - [#27163]) ([sensor docs]) +- Fix template fan turn_on action ([@sermayoral] - [#27181]) ([template docs]) +- Fix tests running in hass.io image ([@balloob] - [#27169]) +- lock open service data ([@Santobert] - [#27204]) +- Add acceleration sensor to Homematic IP Cloud ([@SukramJ] - [#27199]) ([homematicip_cloud docs]) +- lock_reproduce_state ([@Santobert] - [#27203]) ([lock docs]) +- switch reproduce state ([@Santobert] - [#27202]) ([switch docs]) +- Add turn_on method to ecobee climate platform ([@marthoc] - [#27103]) ([ecobee docs]) (breaking change) +- Add opentherm_gw config flow ([@mvn23] - [#27148]) ([opentherm_gw docs]) +- Add doods contains flags on areas to allow specifying overlap ([@snowzach] - [#27035]) ([doods docs]) +- Guard against network errors for Dark Sky ([@space-pope] - [#27141]) ([darksky docs]) +- Adds guards for missing information in call stack frames ([@frenck] - [#27217]) +- Add hive trv support ([@MagicalTrev89] - [#27033]) ([hive docs]) +- UniFi - Improve switch tests ([@Kane610] - [#27200]) +- Require Python >= 3.6.1 ([@scop] - [#27226]) +- automation_reproduce_state ([@Santobert] - [#27222]) ([automation docs]) +- Add set_location service doc ([@oncleben31] - [#27216]) +- fan_reproduce_state ([@Santobert] - [#27227]) ([fan docs]) +- Add improved scene support to the light integration ([@Santobert] - [#27182]) ([light docs]) +- Improve influxdb error handling ([@definitio] - [#27225]) ([influxdb docs]) +- Refactor Tradfri switch device ([@ggravlingen] - [#26864]) ([tradfri docs]) +- Add initial state to Flux Switch ([@Santobert] - [#27089]) ([flux docs]) +- Repair SolarEdge_local inverter fahrenheit temperature ([@scheric] - [#27096]) ([solaredge_local docs]) +- add script shortcut for activating scenes ([@mdonoughe] - [#27223]) +- Bump python-miio version to 0.4.6 ([@syssi] - [#27231]) ([xiaomi_miio docs]) +- Add Xiaomi Air Humidifier CB1 (zhimi.humidifier.cb1) support ([@syssi] - [#27232]) ([xiaomi_miio docs]) +- Add io:SomfyBasicContactIOSystemSensor to TaHoma component ([@jensihnow] - [#27234]) ([tahoma docs]) +- Add basic test support to Homematic IP Cloud ([@SukramJ] - [#27228]) ([homematicip_cloud docs]) +- Neato config flow ([@Santobert] - [#26579]) ([neato docs]) +- PS4 bump to renamed dependency ([@ktnrg45] - [#27144]) ([ps4 docs]) +- UniFi - Bandwidth sensors ([@Kane610] - [#27229]) ([unifi docs]) (breaking change) (new-platform) +- Switch on/off all lights, and wait for the result ([@mjrider] - [#27078]) ([light docs]) +- Refactor IKEA Tradfri, part 2 ([@ggravlingen] - [#27245]) ([tradfri docs]) (breaking change) +- Bump pybotvac and use new exceptions ([@Santobert] - [#27249]) ([neato docs]) +- Add 'flash_length' to esphome light async_turn_off ([@CQoute] - [#27214]) ([esphome docs]) +- Add missing documentation for some Hassio services ([@oncleben31] - [#27215]) +- Validate generated condition ([@emontnemery] - [#27263]) ([binary_sensor docs]) ([device_automation docs]) ([light docs]) ([sensor docs]) ([switch docs]) +- Add attributes to neato integration ([@Santobert] - [#27260]) ([neato docs]) +- Add PTZ support to Foscam camera component ([@skgsergio] - [#27238]) ([foscam docs]) +- Note snake_case state attribute name convention in entity docs ([@scop] - [#27287]) +- Upgrade pylint ([@scop] - [#27279]) +- fixed minor typo in docs/source/api/helpers.rst ([@bhageena] - [#27282]) +- FIX: Typo ([@SoldierCorp] - [#27267]) +- Refactor tradfri light ([@ggravlingen] - [#27259]) ([tradfri docs]) +- Neato battery sensor ([@dshokouhi] - [#27286]) ([neato docs]) (new-platform) +- Neato clean up ([@Santobert] - [#27294]) ([neato docs]) +- UniFi - Improve controller tests ([@Kane610] - [#27261]) ([unifi docs]) +- Validate generated device triggers ([@emontnemery] - [#27264]) ([binary_sensor docs]) ([deconz docs]) ([device_automation docs]) ([sensor docs]) ([zha docs]) +- Fix device condition scaffold ([@emontnemery] - [#27300]) +- Making withings logs less noisy. ([@vangorra] - [#27311]) ([withings docs]) +- Do not fail smtp notify service on connection error ([@bbrendon] - [#27240]) ([smtp docs]) +- move import to top-level ([@exxamalte] - [#27314]) ([transport_nsw docs]) +- Move imports in geo_rss_events component ([@exxamalte] - [#27313]) ([geo_rss_events docs]) +- move import to top-level ([@exxamalte] - [#27320]) ([feedreader docs]) +- Upgrade certifi to >=2019.9.11 ([@fabaff] - [#27323]) +- Align user name vs username ([@ottersen] - [#27328]) ([transmission docs]) +- Upgrade beautifulsoup4 to 4.8.1 ([@fabaff] - [#27325]) ([scrape docs]) +- Upgrade sqlalchemy to 1.3.9 ([@fabaff] - [#27322]) ([recorder docs]) ([sql docs]) +- Fix Logi Circle cameras not responding to turn on/off commands ([@evanjd] - [#27317]) ([logi_circle docs]) +- Add scene.apply service ([@balloob] - [#27298]) +- Improve Neato login process ([@Santobert] - [#27327]) ([neato docs]) +- Validate generated device actions ([@emontnemery] - [#27262]) ([device_automation docs]) ([zha docs]) +- Cleanup handling of attributes for HomematicIP Cloud ([@SukramJ] - [#27331]) ([homematicip_cloud docs]) +- Include unit_of_measurement in sensor device trigger capabilities ([@emontnemery] - [#27265]) ([sensor docs]) +- Improve UniFi config flow tests and add options flow test ([@Kane610] - [#27340]) ([unifi docs]) +- Run mypy in pre-commit ([@scop] - [#27339]) +- move import to top-level ([@exxamalte] - [#27348]) ([workday docs]) +- Move imports in caldav component ([@exxamalte] - [#27349]) ([caldav docs]) +- Add documentation for logger.set_level service ([@oncleben31] - [#27211]) +- Support async validation of device trigger ([@emontnemery] - [#27333]) ([automation docs]) ([deconz docs]) ([zha docs]) +- deCONZ - Update discovery address ([@Kane610] - [#27365]) ([deconz docs]) +- Refactor Tradfri constants ([@ggravlingen] - [#27334]) ([tradfri docs]) +- Install requirements for all deps with tests ([@balloob] - [#27362]) ([epsonworkforce docs]) ([ign_sismologia docs]) ([supla docs]) +- Migrate Neato to use top-level imports ([@Santobert] - [#27363]) ([neato docs]) +- Fix ecobee weather platform ([@marthoc] - [#27369]) ([ecobee docs]) +- Move imports in vlc component ([@mnigbur] - [#27361]) ([vlc docs]) +- Move imports in season component ([@Quentame] - [#27358]) ([season docs]) +- Move imports in nissan_leaf component ([@Quentame] - [#27359]) ([nissan_leaf docs]) +- Move imports in netatmo component ([@Quentame] - [#27360]) ([netatmo docs]) +- move import to top-level ([@exxamalte] - [#27353]) ([onkyo docs]) +- move import to top-level ([@exxamalte] - [#27352]) ([systemmonitor docs]) +- Allow Google Assistant relative volume control ([@RyanEwen] - [#26585]) ([google_assistant docs]) +- Remove hipchat ([@fabaff] - [#27399]) ([hipchat docs]) (breaking change) +- Move imports in waze_travel_time component ([@eifinger] - [#27384]) ([waze_travel_time docs]) +- Move imports in wemo component ([@Quentame] - [#27393]) ([wemo docs]) +- Move imports in wink component ([@Quentame] - [#27392]) ([wink docs]) +- Move imports in wunderlist component ([@Quentame] - [#27391]) ([wunderlist docs]) +- Move imports in xmpp component ([@Quentame] - [#27390]) ([xmpp docs]) +- Move imports in yamaha + yamaha_musiccast component ([@Quentame] - [#27389]) ([yamaha docs]) ([yamaha_musiccast docs]) +- Move imports in zengge component ([@Quentame] - [#27387]) ([zengge docs]) +- Move imports in zestimate component ([@Quentame] - [#27386]) ([zestimate docs]) +- Move imports in zigbee component ([@Quentame] - [#27383]) ([zigbee docs]) +- Move imports in yr component ([@Quentame] - [#27382]) ([yr docs]) +- Move imports in google_travel_time component ([@eifinger] - [#27381]) ([google_travel_time docs]) +- Move imports in github component ([@mnigbur] - [#27406]) ([github docs]) +- Move imports in eufy component ([@mnigbur] - [#27405]) ([eufy docs]) +- Move imports in apple_tv component ([@Quentame] - [#27356]) ([apple_tv docs]) +- Remove hydroquebec integration (ADR-0004) ([@frenck] - [#27407]) ([hydroquebec docs]) +- Standardize times in time sensors Jewish calendar ([@tsvi] - [#26940]) ([jewish_calendar docs]) (breaking change) +- Revert "Allow Google Assistant relative volume control (#26585)" ([@balloob] - [#27416]) ([google_assistant docs]) +- Bump aiohttp to 3.6.2 ([@frenck] - [#27409]) +- Bump sqlalchemy to 1.3.10 ([@frenck] - [#27408]) ([recorder docs]) ([sql docs]) +- move songpal imports to top ([@rytilahti] - [#27402]) ([songpal docs]) +- Bump python-slugify to 3.0.6 ([@quthla] - [#27430]) +- Refactor home --> hap for Homematic IP Cloud ([@SukramJ] - [#27368]) ([homematicip_cloud docs]) +- Move Arduino imports ([@tulindo] - [#27438]) ([arduino docs]) +- Update upstream ([@cgtobi] - [#27440]) ([rmvtransport docs]) +- Move imports in waterfurnace component ([@Quentame] - [#27449]) ([waterfurnace docs]) +- Bump pyhik to 0.2.4 ([@mezz64] - [#27523]) ([hikvision docs]) +- moved imports to top level ([@Bouni] - [#27511]) ([browser docs]) +- Move imports in updater component ([@Quentame] - [#27485]) ([updater docs]) +- Move imports in rmvtransport ([@cgtobi] - [#27420]) ([rmvtransport docs]) +- SNMP Switch payloads are not guaranteed to be integers ([@cyberjacob] - [#27422]) ([snmp docs]) +- Move trend imports to top level ([@thaohtp] - [#27507]) ([trend docs]) +- Move imports in waqi component ([@Quentame] - [#27450]) ([waqi docs]) +- Move imports in acer_projector component ([@Bouni] - [#27456]) ([acer_projector docs]) +- Move imports in vizio component ([@Quentame] - [#27452]) ([vizio docs]) +- Bump pygatt to 4.0.5 ([@foreign-sub] - [#27526]) ([bluetooth_le_tracker docs]) ([skybeacon docs]) +- Fix typing for device condition scaffold ([@emontnemery] - [#27487]) +- Move imports in upcloud component to top-level ([@thaohtp] - [#27514]) ([upcloud docs]) +- Refactor Tradfri cover ([@ggravlingen] - [#27413]) ([tradfri docs]) +- Add improved scene support to input number integration ([@abstrakct] - [#27530]) ([input_number docs]) +- Move imports in http component ([@Quentame] - [#27474]) ([http docs]) +- Handle empty service in script action gracefully ([@emontnemery] - [#27467]) +- moved imports to top level ([@Bouni] - [#27494]) ([auth docs]) +- Move imports in rfxtrx component ([@javicalle] - [#27549]) ([rfxtrx docs]) +- fill services.yaml for downloader ([@Mofeywalker] - [#27553]) +- Add test to Homematic IP Cloud weather ([@SukramJ] - [#27536]) +- Add test to Homematic IP Cloud alarm control panel ([@SukramJ] - [#27534]) +- Add test to Homematic IP Cloud cover ([@SukramJ] - [#27535]) +- Add test to Homematic IP Cloud sensor ([@SukramJ] - [#27533]) +- moved imports to top level ([@Bouni] - [#27512]) ([bt_home_hub_5 docs]) +- Add test to Homematic IP Cloud climate ([@SukramJ] - [#27472]) ([homematicip_cloud docs]) +- moved imports to top level ([@Bouni] - [#27508]) ([broadlink docs]) +- moved imports to top level ([@Bouni] - [#27509]) ([brottsplatskartan docs]) +- Move imports in startca to top-level ([@thaohtp] - [#27510]) ([startca docs]) +- moved imports to top level ([@Bouni] - [#27503]) ([bluetooth_le_tracker docs]) +- moved imports to top level ([@Bouni] - [#27501]) ([bh1750 docs]) +- moved imports to top level ([@Bouni] - [#27498]) ([axis docs]) +- Update blink version to 0.14.2 ([@fronzbot] - [#27555]) ([blink docs]) +- moved imports to top level ([@Bouni] - [#27500]) ([bbox docs]) +- Move imports in aruba component to top-level ([@thaohtp] - [#27497]) ([aruba docs]) +- moved imports to top level ([@Bouni] - [#27496]) ([aws docs]) +- moved imports to top level ([@Bouni] - [#27495]) ([automatic docs]) +- Add device condition support to the lock integration ([@emontnemery] - [#27488]) ([lock docs]) +- moved imports to top level ([@Bouni] - [#27483]) ([aquostv docs]) +- Move imports in uscis component ([@Quentame] - [#27481]) ([uscis docs]) +- Move imports in vasttrafik component ([@Quentame] - [#27480]) ([vasttrafik docs]) +- Move imports in venstar component ([@Quentame] - [#27478]) ([venstar docs]) +- Move imports in verisure component ([@Quentame] - [#27476]) ([verisure docs]) +- Move imports in vera component ([@Quentame] - [#27477]) ([vera docs]) +- Fix update after network error ([@bieniu] - [#27444]) ([airly docs]) +- Move AmazonPolly imports ([@tulindo] - [#27443]) ([amazon_polly docs]) +- Change persistent notification about dev-info panel ([@fredrike] - [#27441]) ([hassio docs]) ([homeassistant docs]) +- Bump pysyncthru to 0.5.0 ([@foreign-sub] - [#27439]) ([syncthru docs]) +- Bump RtmAPI to 0.7.2 ([@quthla] - [#27433]) ([remember_the_milk docs]) +- Move imports in watson_iot component ([@Quentame] - [#27448]) ([watson_iot docs]) +- moved imports to top level ([@Bouni] - [#27454]) ([abode docs]) +- Bump PyGithub to 1.43.8 ([@quthla] - [#27432]) ([github docs]) +- Move imports in w800rf32 component ([@Quentame] - [#27451]) ([w800rf32 docs]) +- moved imports to top level ([@Bouni] - [#27458]) ([ads docs]) +- Move imports in dht component ([@doudz] - [#27459]) ([dht docs]) +- Move Epson imports ([@tulindo] - [#27457]) ([epson docs]) +- moved imports to top level ([@Bouni] - [#27468]) ([anthemav docs]) +- moved imports to top level ([@Bouni] - [#27469]) ([aprs docs]) +- Move imports for pushbullet component ([@doudz] - [#27460]) ([pushbullet docs]) +- Add test to Homematic IP Cloud switch ([@SukramJ] - [#27532]) +- add device conditions for platform cover ([@Mofeywalker] - [#27544]) ([cover docs]) +- Add strings for device automations to scaffold ([@balloob] - [#27556]) +- Move imports in tts component ([@Michsior14] - [#27565]) ([tts docs]) +- Filled services.yaml for browser integration ([@springstan] - [#27563]) +- Filled services.yaml for logbook integration ([@springstan] - [#27560]) +- Move imports in tikteck component ([@Michsior14] - [#27568]) ([tikteck docs]) +- Fix pioneer volume when using onkyo component ([@foxy82] - [#27218]) ([onkyo docs]) (breaking change) +- Upgrade alpha_vantage to 2.1.1 ([@fabaff] - [#27580]) ([alpha_vantage docs]) +- Move imports in thermoworks_smoke component ([@Michsior14] - [#27586]) ([thermoworks_smoke docs]) +- Upgrade pillow to 6.2.0 ([@fabaff] - [#27581]) ([image_processing docs]) ([proxy docs]) ([qrcode docs]) +- Move import in deutsche_bahn integration ([@springstan] - [#27579]) ([deutsche_bahn docs]) +- Move imports in thingspeak component ([@Michsior14] - [#27585]) ([thingspeak docs]) +- Move imports in tplink_lte component ([@Michsior14] - [#27583]) ([tplink_lte docs]) +- Move imports in bme280 component ([@Bouni] - [#27505]) ([bme280 docs]) +- Move imports in tplink component ([@Michsior14] - [#27567]) ([tplink docs]) +- Add abode config entries and device registry ([@shred86] - [#26699]) ([abode docs]) (breaking change) +- Allow MQTT json light floating point transition ([@starkillerOG] - [#27253]) ([mqtt docs]) (breaking change) +- Move imports in rflink component ([@javicalle] - [#27367]) ([rflink docs]) +- move imports in tibber component ([@Michsior14] - [#27584]) ([tibber docs]) +- Upgrade to flake8-docstrings 1.5.0, pytest 5.2.1, and pytest-cov 2.8.1 ([@scop] - [#27588]) +- Upgrade Mastodon.py to 1.5.0 ([@fabaff] - [#27598]) ([mastodon docs]) +- Move imports in syslog ([@Michsior14] - [#27602]) ([syslog docs]) +- add content for services.yaml in component media_extractor ([@Mofeywalker] - [#27608]) +- move imports in ted5000 component ([@Michsior14] - [#27601]) ([ted5000 docs]) +- move imports in tellstick component ([@Michsior14] - [#27600]) ([tellstick docs]) +- Move top level imports ([@ggravlingen] - [#27597]) ([tradfri docs]) +- Improve neato tests ([@Santobert] - [#27578]) ([neato docs]) +- Refactor Tradfri base class ([@ggravlingen] - [#27589]) ([tradfri docs]) +- Google Assistant Local SDK ([@balloob] - [#27428]) ([cloud docs]) ([google_assistant docs]) ([http docs]) ([webhook docs]) ([zeroconf docs]) +- Update pyhomematic to 0.1.61 ([@danielperna84] - [#27620]) ([homematic docs]) +- fix: exception after kaiterra api call timeout ([@Michsior14] - [#27622]) ([kaiterra docs]) +- Issue #27288 Moving imports to top for tesla component ([@stevendlander] - [#27618]) ([tesla docs]) +- add content for services.yaml for ccomponent stream ([@Mofeywalker] - [#27610]) +- Update yandex transport after api change ([@rishatik92] - [#27591]) ([yandex_transport docs]) +- Issue #27288 Move imports to top for FFMPEG ([@stevendlander] - [#27613]) ([ffmpeg docs]) +- move imports to top-level ([@exxamalte] - [#27630]) ([pushover docs]) +- move imports in synology_srm component ([@Michsior14] - [#27603]) ([synology_srm docs]) +- moved imports to top level ([@Bouni] - [#27632]) ([bt_smarthub docs]) +- moved imports to top level ([@Bouni] - [#27634]) ([cisco_ios docs]) +- Move imports in darksky component ([@exxamalte] - [#27633]) ([darksky docs]) +- Fix temperature and heating mode ([@crazyfx1] - [#27604]) ([vicare docs]) +- moved imports to top level ([@Bouni] - [#27640]) ([co2signal docs]) +- ESPHome Fix intermediary state published ([@OttoWinter] - [#27638]) ([esphome docs]) +- moved imports to top level ([@Bouni] - [#27641]) ([config docs]) +- Fix html5 notification documentation url ([@delphiki] - [#27636]) ([html5 docs]) +- Apply isort on rfxtrx classes ([@javicalle] - [#27615]) ([rfxtrx docs]) +- Fix ESPHome climate preset mode refactor ([@OttoWinter] - [#27637]) ([esphome docs]) +- Refactor imports for tensorflow ([@stevendlander] - [#27617]) ([tensorflow docs]) +- Move imports in bluesound component ([@Bouni] - [#27502]) ([bluesound docs]) +- Fix ZHA regressions caused by "Support async validation of device trigger" ([@emontnemery] - [#27401]) ([automation docs]) ([deconz docs]) ([zha docs]) +- move imports in squeezebox component ([@Michsior14] - [#27650]) ([squeezebox docs]) +- Typing misc fixes ([@scop] - [#27543]) ([binary_sensor docs]) ([device_automation docs]) ([light docs]) ([sensor docs]) ([switch docs]) +- Updated frontend to 20191014.0 ([@bramkragten] - [#27661]) ([frontend docs]) +- Move imports in panasonic_viera component ([@javicalle] - [#27665]) ([panasonic_viera docs]) +- Improve discovery title ([@Kane610] - [#27664]) ([deconz docs]) +- Move imports in panasonic_bluray component ([@javicalle] - [#27658]) ([panasonic_bluray docs]) +- Update Unlock directive for Alexa LockController ([@ochlocracy] - [#27653]) ([alexa docs]) +- move imports in statsd component ([@Michsior14] - [#27649]) ([statsd docs]) +- Move imports in steam_online component ([@Michsior14] - [#27648]) ([steam_online docs]) +- move imports in stream component ([@Michsior14] - [#27647]) ([stream docs]) +- Move imports in switchmate component ([@Michsior14] - [#27646]) ([switchmate docs]) +- Remove direct authentication via trusted networks or API password ([@balloob] - [#27656]) ([auth docs]) ([http docs]) ([websocket_api docs]) (breaking change) +- Add Apprise notification integration ([@caronc] - [#26868]) ([apprise docs]) (new-integration) +- Deprecate Python 3.6 support, 3.8.0 is out ([@scop] - [#27680]) (breaking change) +- moved imports to top level ([@Bouni] - [#27682]) ([discord docs]) +- moved imports to top level ([@Bouni] - [#27678]) ([digitalloggers docs]) +- moved imports to top level ([@Bouni] - [#27675]) ([denonavr docs]) +- moved imports to top level ([@Bouni] - [#27677]) ([digital_ocean docs]) +- Handle marker attrs that may not exist ([@bwarden] - [#27519]) ([cups docs]) +- Improve code coverage for HomematicIP Cloud ([@SukramJ] - [#27606]) ([homematicip_cloud docs]) +- Move imports in decora component ([@Bouni] - [#27645]) ([decora docs]) +- moved imports to top level ([@Bouni] - [#27683]) ([dlib_face_detect docs]) +- Move imports in yeelight + yeelightsunflower component ([@Quentame] - [#27388]) ([yeelight docs]) ([yeelightsunflower docs]) +- Move imports in bme680 component ([@Bouni] - [#27506]) ([bme680 docs]) +- Fix missing strings in soma config flow ([@ratsept] - [#27689]) ([soma docs]) +- moved imports to top level ([@Bouni] - [#27695]) ([dnsip docs]) +- Add battery status in owntracks ([@luca-angemi] - [#27686]) ([owntracks docs]) +- moved imports to top level ([@Bouni] - [#27693]) ([dlib_face_identify docs]) +- Update fritzconnection requirement to 0.8.4 ([@AaronDavidSchneider] - [#27698]) ([fritz docs]) ([fritzbox_netmonitor docs]) +- Moved imports to top-level in spotify integration ([@springstan] - [#27703]) ([spotify docs]) +- moved imports to top level ([@Bouni] - [#27679]) ([discogs docs]) +- Bump PyMata to 2.20 ([@quthla] - [#27431]) ([arduino docs]) +- Add improved scene support to input_text ([@abstrakct] - [#27687]) ([input_text docs]) +- Fix config imports ([@balloob] - [#27669]) ([config docs]) +- Add improved scene support for input_select ([@abstrakct] - [#27697]) ([input_select docs]) +- move imports in sony_projector component ([@Michsior14] - [#27718]) ([sony_projector docs]) +- move imports in speedtestdotnet component ([@Michsior14] - [#27716]) ([speedtestdotnet docs]) +- move imports in spotcrime component ([@Michsior14] - [#27715]) ([spotcrime docs]) +- Moved imports to top-level in fritzbox_callmonitor component ([@springstan] - [#27705]) ([fritzbox_callmonitor docs]) +- moved imports to top level ([@Bouni] - [#27696]) ([dovado docs]) +- New sensor platform integration for Orange and Rockland Utility smart energy meter ([@bvlaicu] - [#27571]) ([oru docs]) (new-integration) +- Move imports in device_tracker component ([@Bouni] - [#27676]) ([device_tracker docs]) +- Add evohome high_precision temperatures ([@zxdavb] - [#27513]) ([evohome docs]) +- Move imports in Kodi component ([@tulindo] - [#27728]) ([kodi docs]) +- Add sensor platform to Airly integration ([@bieniu] - [#27717]) ([airly docs]) (new-platform) +- Bump pyatmo version to 2.3.2 ([@cgtobi] - [#27731]) ([netatmo docs]) +- New cache on Azure ([@pvizeli] - [#27739]) +- Add cache for mypy ([@pvizeli] - [#27745]) +- Bump ndms2-client to 0.0.10 ([@foxel] - [#27734]) ([keenetic_ndms2 docs]) +- Upgrade youtube_dl to 2019.10.16 ([@BKPepe] - [#27737]) ([media_extractor docs]) +- Axis - Improve discovery title by adding placeholder support ([@Kane610] - [#27663]) ([axis docs]) +- Add device action support to the alarm_control_panel integration ([@emontnemery] - [#27616]) ([alarm_control_panel docs]) ([device_automation docs]) +- Move imports in slack and socialblade ([@springstan] - [#27747]) ([samsungtv docs]) ([slack docs]) ([socialblade docs]) +- Run mypy in pre-commit without args to match CI ([@scop] - [#27741]) +- Fix On/Off for melissa ([@kennedyshead] - [#27733]) ([melissa docs]) +- Forget auth token when going offline so we can reconnect ([@antlarr] - [#26630]) ([amcrest docs]) +- bump rpi.gpio to 0.7.0 ([@Misiu] - [#27753]) ([mcp23017 docs]) ([rpi_gpio docs]) +- Move imports in rpi_gpio ([@Misiu] - [#27752]) ([rpi_gpio docs]) +- Move imports in ifttt component ([@Quentame] - [#27792]) ([ifttt docs]) +- Move imports in keyboard component ([@Quentame] - [#27791]) ([keyboard docs]) +- Move imports in linux_battery component ([@Quentame] - [#27789]) ([linux_battery docs]) +- Move imports in ampio component ([@Bouni] - [#27788]) ([ampio docs]) +- Move imports in liveboxplaytv component ([@Quentame] - [#27790]) ([liveboxplaytv docs]) +- Move imports in amcrest component ([@Bouni] - [#27787]) ([amcrest docs]) +- Move imports in imap + imap_email_content component ([@Quentame] - [#27793]) ([imap docs]) ([imap_email_content docs]) +- Move imports in netgear_lte component ([@Quentame] - [#27777]) ([netgear_lte docs]) +- Move imports in nest component ([@Quentame] - [#27778]) ([nest docs]) +- moved imports to top level ([@Bouni] - [#27781]) ([airvisual docs]) +- Move imports in netgear component ([@Quentame] - [#27776]) ([netgear docs]) +- moved imports to top level ([@Bouni] - [#27784]) ([alarmdotcom docs]) +- Generate ADB key for Android TV integration ([@JeffLIrion] - [#27344]) ([androidtv docs]) +- moved imports to top level ([@Bouni] - [#27782]) ([aladdin_connect docs]) +- Move imports in android_ip_webcam component ([@Bouni] - [#27797]) ([android_ip_webcam docs]) +- Add on_off_inverted to KNX climate ([@tombbo] - [#25900]) ([knx docs]) +- Move imports in html5 component ([@Quentame] - [#27473]) ([html5 docs]) +- Move imports in mqtt component ([@exxamalte] - [#27835]) ([mqtt docs]) (new-platform) +- Move imports in august component ([@Bouni] - [#27810]) ([august docs]) +- Move imports in asterisk_mbox component ([@Bouni] - [#27807]) ([asterisk_mbox docs]) +- Move imports in arlo component ([@Bouni] - [#27806]) ([arlo docs]) +- Move imports in aqualogic component ([@Bouni] - [#27805]) ([aqualogic docs]) +- Move imports in apcupsd component ([@Bouni] - [#27803]) ([apcupsd docs]) +- Move imports in awair component ([@Bouni] - [#27811]) ([awair docs]) +- Move imports in baidu component ([@Bouni] - [#27812]) ([baidu docs]) +- Move imports in gitlab_ci component ([@Quentame] - [#27827]) ([gitlab_ci docs]) +- Move imports in google component ([@Quentame] - [#27826]) ([google docs]) +- Mypy setup fixes ([@scop] - [#27825]) +- Move imports in flic component ([@Quentame] - [#27821]) ([flic docs]) +- Move imports in fitbit component ([@Quentame] - [#27820]) ([fitbit docs]) +- Move imports in flux_led component ([@Quentame] - [#27822]) ([flux_led docs]) +- Move imports in fritz + fritzbox_netmonitor component ([@Quentame] - [#27823]) ([fritz docs]) +- Move imports in MCP23017 component ([@Misiu] - [#27769]) ([mcp23017 docs]) +- Move imports in anel_pwrctrl component ([@Bouni] - [#27798]) ([anel_pwrctrl docs]) +- Move imports in bbb_gpio component ([@Bouni] - [#27813]) ([bbb_gpio docs]) +- Move imports in bitcoin component ([@Bouni] - [#27814]) ([bitcoin docs]) +- bump client ([@zxdavb] - [#27799]) ([geniushub docs]) +- Move imports in telegram_bot component ([@Quentame] - [#27785]) ([telegram_bot docs]) +- Add device action support to the lock integration ([@emontnemery] - [#27499]) ([lock docs]) +- Add grid sensors to SolarEdge_local ([@scheric] - [#27247]) ([solaredge_local docs]) +- Unload linky config entry ([@Quentame] - [#27831]) ([linky docs]) +- Fix attribution ([@bieniu] - [#27815]) ([airly docs]) +- Added handling for connection errors in state update, added available property ([@ratsept] - [#27794]) ([soma docs]) +- Add device_info to HomematicIP climate and acp ([@SukramJ] - [#27771]) ([homematicip_cloud docs]) +- Add opentherm_gw options flow. ([@mvn23] - [#27316]) ([opentherm_gw docs]) +- Add ability for MQTT device tracker to map non-default topic payloads to zones/states ([@raman325] - [#27143]) ([mqtt docs]) +- Move holiday info into a single sensor with multiple attributess ([@tsvi] - [#27654]) ([jewish_calendar docs]) (breaking change) +- Add sinch integration (notify component) ([@bendikrb] - [#26502]) ([sinch docs]) (new-integration) +- Add service description for route53 integration ([@tefinger] - [#27774]) +- Move imports in openweathermap component ([@Quentame] - [#27779]) ([openweathermap docs]) +- Move imports in apns component ([@Bouni] - [#27804]) ([apns docs]) +- Move imports in yweather ([@Misiu] - [#27842]) ([yweather docs]) +- Move imports in brunt component ([@Bouni] - [#27856]) ([brunt docs]) +- Move imports in blockchain component ([@Bouni] - [#27852]) ([blockchain docs]) +- Move blackbird imports ([@Bouni] - [#27849]) ([blackbird docs]) +- cryptography + numpy for python 3.8 ([@pvizeli] - [#27861]) ([iqvia docs]) ([opencv docs]) ([tensorflow docs]) ([trend docs]) +- Move imports in bom component ([@Bouni] - [#27854]) ([bom docs]) +- Move imports in bmw_connected_drive component ([@Bouni] - [#27853]) ([bmw_connected_drive docs]) +- Move imports in blink component ([@Bouni] - [#27850]) ([blink docs]) +- Move imports in blinksticklight component ([@Bouni] - [#27851]) ([blinksticklight docs]) +- Move imports in recorder component ([@exxamalte] - [#27859]) ([recorder docs]) +- Refactor the conversation integration ([@balloob] - [#27839]) ([conversation docs]) ([shopping_list docs]) +- Use pre-commit in CI and tox ([@scop] - [#27743]) +- Introduce new OAuth2 config flow helper ([@balloob] - [#27727]) ([somfy docs]) (breaking change) +- Move imports in fritzbox, fritz device tracker, fritzdect, fritzbox netmonitor ([@springstan] - [#27746]) ([fritz docs]) ([fritzbox docs]) ([fritzbox_netmonitor docs]) ([fritzdect docs]) +- Move imports in cppm_tracker component ([@Bouni] - [#27889]) ([cppm_tracker docs]) +- Move imports in concord232 component ([@Bouni] - [#27887]) ([concord232 docs]) +- Move imports in comfoconnect component ([@Bouni] - [#27886]) ([comfoconnect docs]) +- Move imports in coinmarketcap component ([@Bouni] - [#27885]) ([coinmarketcap docs]) +- Move imports in coinbase component ([@Bouni] - [#27884]) ([coinbase docs]) +- Move imports in ciscospark component ([@Bouni] - [#27879]) ([ciscospark docs]) +- Move imports in cisco_webex_teams component ([@Bouni] - [#27878]) ([cisco_webex_teams docs]) +- Move imports in cmus component ([@Bouni] - [#27883]) ([cmus docs]) +- Move imports in cloud component ([@Bouni] - [#27881]) ([cloud docs]) +- Add remove function to hue sensors ([@bramkragten] - [#27652]) ([hue docs]) +- Move imports to top for hikvisioncam ([@briglx] - [#27895]) ([hikvisioncam docs]) +- Move imports in coolmaster component ([@Bouni] - [#27888]) ([coolmaster docs]) +- Move imports in cisco_mobility_express component ([@Bouni] - [#27877]) ([cisco_mobility_express docs]) +- Move imports in cast component ([@Bouni] - [#27875]) ([cast docs]) +- Move imports in canary component ([@Bouni] - [#27874]) ([canary docs]) +- Move imports in buienradar component ([@Bouni] - [#27873]) ([buienradar docs]) +- Move imports in channels component ([@Bouni] - [#27876]) ([channels docs]) +- Move imports for nilu component ([@hfurubotten] - [#27896]) ([nilu docs]) +- Guard cloud check ([@balloob] - [#27901]) ([owntracks docs]) ([smartthings docs]) +- Bump keyring to 19.2.0 ([@foreign-sub] - [#27899]) +- Better header check for OAuth2 helper ([@balloob] - [#27897]) +- Vacuum reproduce state ([@Santobert] - [#27868]) ([vacuum docs]) +- Azure pytest parallel ([@pvizeli] - [#27864]) +- Move import for htu21d component ([@briglx] - [#27908]) ([htu21d docs]) +- Move imports for hp_ilo components ([@briglx] - [#27906]) ([hp_ilo docs]) +- Fix flaky integration test ([@balloob] - [#27905]) +- Move imports in harmony component ([@briglx] - [#27904]) ([harmony docs]) +- Move imports to top for harman_kardon_avr ([@briglx] - [#27903]) ([harman_kardon_avr docs]) +- Dont create coroutine until acting on it ([@balloob] - [#27907]) ([google_assistant docs]) +- Report state ([@elupus] - [#27759]) ([google_assistant docs]) +- Upgrade pylint to 2.4.3 and astroid to 2.3.2 ([@scop] - [#27912]) +- Run pylint parallel ([@pvizeli] - [#27919]) +- Split homematic color and effect support ([@guillempages] - [#27299]) ([homematic docs]) +- Add climate profiles to Homematic IP Cloud ([@SukramJ] - [#27772]) ([homematicip_cloud docs]) +- Move imports in luftdaten component ([@Quentame] - [#27929]) ([luftdaten docs]) +- Bump version of homematicip to 0.10.13 ([@SukramJ] - [#27928]) ([homematicip_cloud docs]) +- Added night arm mode support to Envisalink component ([@gdrapp] - [#27087]) ([envisalink docs]) +- Move imports in cpuspeed component ([@Bouni] - [#27890]) ([cpuspeed docs]) +- Remove helper imports relying on installed requirements ([@balloob] - [#27898]) +- Upgrade mypy to 0.740 ([@scop] - [#27913]) ([cover docs]) ([group docs]) ([sun docs]) ([switch docs]) ([websocket_api docs]) ([zone docs]) +- Add improved scene support to the cover integration ([@Santobert] - [#27914]) ([cover docs]) +- Bump abodepy version ([@shred86] - [#27931]) ([abode docs]) +- Add support for AdGuard Home v0.99.0 ([@frenck] - [#27926]) ([adguard docs]) (breaking change) +- remove duplicate unique_id, add unique_id for issues ([@zxdavb] - [#27916]) ([geniushub docs]) (breaking change) +- Remove stride ([@hmmbob] - [#27934]) ([stride docs]) (breaking change) +- Import shuffle ([@balloob] - [#27935]) ([http docs]) ([persistent_notification docs]) ([stream docs]) +- Update pysonos to 0.0.24 ([@timmccor] - [#27937]) ([sonos docs]) +- Bump pybotvac ([@Santobert] - [#27933]) ([neato docs]) +- Central update for Plex platforms ([@jjlawren] - [#27764]) ([plex docs]) +- move imports in sonos component ([@Michsior14] - [#27938]) ([sonos docs]) +- Move imports in smappee component ([@Michsior14] - [#27943]) ([smappee docs]) +- move imports in snapcast component ([@Michsior14] - [#27940]) ([snapcast docs]) +- Move imports in snmp component ([@Michsior14] - [#27939]) ([snmp docs]) +- Fix whois error, check expiration_date for list and pick first ([@cyberjacob] - [#27930]) ([whois docs]) +- Move imports in sql component ([@Michsior14] - [#27713]) ([sql docs]) +- move imports in smarthab component ([@Michsior14] - [#27942]) ([smarthab docs]) +- Fixing config_entries.async_forward_entry_unload calls (step 1) ([@Quentame] - [#27857]) ([cert_expiry docs]) ([linky docs]) ([locative docs]) ([luftdaten docs]) ([withings docs]) +- move imports in sma component ([@Michsior14] - [#27945]) ([sma docs]) +- Remove tplink device tracker ([@rytilahti] - [#27936]) ([tplink docs]) +- Add option to disable HTTPS verification in Luci component ([@mzdrale] - [#27946]) ([luci docs]) +- bugfix evohome and bump client ([@zxdavb] - [#27968]) ([evohome docs]) +- Move imports in dte_energy_bridge component ([@djpremier] - [#27975]) ([dte_energy_bridge docs]) +- Move imports in crimereports component ([@djpremier] - [#27973]) ([crimereports docs]) +- move imports in serial component ([@zxdavb] - [#27971]) ([serial docs]) +- Move imports in onvif component ([@djpremier] - [#27969]) ([onvif docs]) +- Move imports in dweet component ([@djpremier] - [#27976]) ([dweet docs]) +- Refactor entity_ids, tweak names and consolidate classes ([@zxdavb] - [#27921]) ([incomfort docs]) +- Move imports for ebusd component ([@djpremier] - [#27979]) ([ebusd docs]) +- isort the geniushub code ([@zxdavb] - [#27978]) ([geniushub docs]) +- isort the evohome code ([@zxdavb] - [#27977]) ([evohome docs]) +- Move imports in futurenow component ([@djpremier] - [#27991]) ([futurenow docs]) +- Move imports in frontier_silicon component ([@djpremier] - [#27990]) ([frontier_silicon docs]) +- Move imports in gc100 component ([@djpremier] - [#27993]) ([gc100 docs]) +- Move imports in gntp component ([@djpremier] - [#27994]) ([gntp docs]) +- Move imports in goalfeed component ([@djpremier] - [#27995]) ([goalfeed docs]) +- Move imports in everlights component ([@djpremier] - [#27983]) ([everlights docs]) +- Move imports in elkm1 component ([@djpremier] - [#27982]) ([elkm1 docs]) +- Move imports in osramlightify component ([@javicalle] - [#27985]) ([osramlightify docs]) +- Move imports in eliqonline component ([@djpremier] - [#27980]) ([eliqonline docs]) +- Move imports in frontend component ([@djpremier] - [#27988]) ([frontend docs]) +- Move imports in message_bird component ([@djpremier] - [#28022]) ([message_bird docs]) +- Move imports in mopar component ([@djpremier] - [#28028]) ([mopar docs]) +- Move imports in mvglive component ([@djpremier] - [#28031]) ([mvglive docs]) +- Move imports in mpd component ([@djpremier] - [#28030]) ([mpd docs]) +- Move imports in namecheapdns component ([@djpremier] - [#28034]) ([namecheapdns docs]) +- Move imports in neurio_energy component ([@djpremier] - [#28035]) ([neurio_energy docs]) +- Move imports in openevse component ([@djpremier] - [#28043]) ([openevse docs]) +- Move imports in magicseaweed component ([@djpremier] - [#28020]) ([magicseaweed docs]) +- Move imports in lw12wifi component ([@djpremier] - [#28019]) ([lw12wifi docs]) +- Move imports in logbook component ([@djpremier] - [#28016]) ([logbook docs]) +- Move imports in lirc component ([@djpremier] - [#28015]) ([lirc docs]) +- Move imports in linode component ([@djpremier] - [#28014]) ([linode docs]) +- Move imports in oasa_telematics component ([@djpremier] - [#28039]) ([oasa_telematics docs]) +- Move imports in iss component ([@djpremier] - [#28003]) ([iss docs]) +- Move imports in iperf3 component ([@djpremier] - [#28002]) ([iperf3 docs]) +- Move imports in pandora component ([@djpremier] - [#28045]) ([pandora docs]) +- Move imports in otp component ([@djpremier] - [#28044]) ([otp docs]) +- Move imports in ohmconnect component ([@djpremier] - [#28041]) ([ohmconnect docs]) +- Move imports in norway_air component ([@djpremier] - [#28037]) ([norway_air docs]) +- Move imports in niko_home_control component ([@djpremier] - [#28036]) ([niko_home_control docs]) +- Move imports in mythicbeastsdns component ([@djpremier] - [#28033]) ([mythicbeastsdns docs]) +- Move imports in mychevy component ([@djpremier] - [#28032]) ([mychevy docs]) +- Move imports in mobile_app component ([@djpremier] - [#28027]) ([mobile_app docs]) +- Add Vivotek camera component code owner ([@HarlemSquirrel] - [#28024]) ([vivotek docs]) +- Move imports in metoffice component ([@djpremier] - [#28023]) ([metoffice docs]) +- Move imports in lupusec component ([@djpremier] - [#28018]) ([lupusec docs]) +- Move imports in loopenergy component ([@djpremier] - [#28017]) ([loopenergy docs]) +- Move imports in lifx_legacy component ([@djpremier] - [#28013]) ([lifx_legacy docs]) +- Move imports in lifx component ([@djpremier] - [#28012]) ([lifx docs]) +- Move imports in lg_soundbar component ([@djpremier] - [#28011]) ([lg_soundbar docs]) +- Glances config flow ([@engrbm87] - [#27221]) ([glances docs]) (breaking change) +- Move imports in konnected component ([@djpremier] - [#28009]) ([konnected docs]) +- Move imports in juicenet component ([@djpremier] - [#28006]) ([juicenet docs]) +- Move imports in insteon component ([@djpremier] - [#28001]) ([insteon docs]) +- Move imports in greenwave component ([@djpremier] - [#27998]) ([greenwave docs]) +- Move imports in kira component ([@djpremier] - [#28007]) ([kira docs]) +- Move imports in itach component ([@djpremier] - [#28005]) ([itach docs]) +- Move imports in gpsd component ([@djpremier] - [#27997]) ([gpsd docs]) +- Make dispatch signals unique per server ([@jjlawren] - [#28029]) ([plex docs]) +- Bump teslajsonpy and add update switch ([@alandtse] - [#27957]) ([tesla docs]) (breaking change) +- rest_command component should support PATCH method ([@pho3nixf1re] - [#27989]) ([rest_command docs]) +- Upgrade discord.py to 1.2.4 ([@fabaff] - [#28054]) ([discord docs]) +- Fix buienradar component and add smoke tests ([@ties] - [#27965]) ([buienradar docs]) +- Code cleanup for orangepi_gpio ([@pascallj] - [#27958]) ([orangepi_gpio docs]) +- Not slugify cert_expiry name ([@Quentame] - [#28055]) ([cert_expiry docs]) +- Add hvac_action to geniushub ([@zxdavb] - [#28056]) ([geniushub docs]) +- Add ESPHome sensor force_update option ([@OttoWinter] - [#28059]) ([esphome docs]) +- Helpers type hint additions and improvements ([@scop] - [#27986]) +- Include subscriber information when MQTT message can't be decoded ([@emontnemery] - [#28062]) ([mqtt docs]) +- Leverage zigpy for IEEE address conversions ([@Adminiuga] - [#27972]) ([zha docs]) +- Refactor Tradfri light group ([@ggravlingen] - [#27714]) ([tradfri docs]) +- Fix mypy missing from dev install script ([@OttoWinter] - [#28060]) +- Upgrade youtube_dl to version 2019.10.22 ([@BKPepe] - [#28070]) ([media_extractor docs]) +- Move imports in piglow component ([@djpremier] - [#28046]) ([piglow docs]) +- Counter configure with value ([@Santobert] - [#28066]) ([counter docs]) +- Fix Plex test timeouts ([@jjlawren] - [#28077]) +- Move remaining of ZHA imports to top level. ([@Adminiuga] - [#28071]) ([zha docs]) +- Move imports in shodan component ([@djpremier] - [#28098]) ([shodan docs]) +- Move imports in skybeacon component ([@djpremier] - [#28099]) ([skybeacon docs]) +- Move imports in shiftr component ([@djpremier] - [#28097]) ([shiftr docs]) +- Move imports in seven_segments component ([@djpremier] - [#28096]) ([seven_segments docs]) +- Move imports in sesame component ([@djpremier] - [#28095]) ([sesame docs]) +- Move imports in rpi_pfio component ([@djpremier] - [#28094]) ([rpi_pfio docs]) +- Move imports in repetier component ([@djpremier] - [#28093]) ([repetier docs]) +- Move imports in remember_the_milk component ([@djpremier] - [#28092]) ([remember_the_milk docs]) +- Move imports in rejseplanen component ([@djpremier] - [#28091]) ([rejseplanen docs]) +- Move imports in recollect_waste component ([@djpremier] - [#28089]) ([recollect_waste docs]) +- Move imports in prometheus component ([@djpremier] - [#28086]) ([prometheus docs]) +- Move imports in proliphix component ([@djpremier] - [#28085]) ([proliphix docs]) +- Move imports in pocketcasts component ([@djpremier] - [#28084]) ([pocketcasts docs]) +- Move imports in opencv component ([@djpremier] - [#28042]) ([opencv docs]) +- Move imports in mitemp_bt component ([@djpremier] - [#28026]) ([mitemp_bt docs]) +- Move imports in miflora component ([@djpremier] - [#28025]) ([miflora docs]) +- Move imports in lastfm component ([@djpremier] - [#28010]) ([lastfm docs]) +- Move imports in knx component ([@djpremier] - [#28008]) ([knx docs]) +- Move imports in gtfs component ([@djpremier] - [#27999]) ([gtfs docs]) +- Move imports in ptvsd component ([@djpremier] - [#28087]) ([ptvsd docs]) +- Move imports in isy994 component ([@djpremier] - [#28004]) ([isy994 docs]) +- Support to use Whatsapp numbers (fixes ##28065) ([@fabaff] - [#28078]) ([twilio docs]) ([twilio_call docs]) ([twilio_sms docs]) +- Add modelnumber for ecobee4 ([@marthoc] - [#28107]) ([ecobee docs]) +- Add support for more Orange Pi devices ([@pascallj] - [#28109]) ([orangepi_gpio docs]) +- Add improved scene support to the counter integration ([@Santobert] - [#28103]) ([counter docs]) +- Add support SQL VACUUM for PostgeSQL ([@bastshoes] - [#28106]) ([recorder docs]) +- Move imports in dsmr component ([@djpremier] - [#27974]) ([dsmr docs]) +- Minor tweaks for sensor device automations ([@emontnemery] - [#27829]) ([sensor docs]) +- Fix test coverage, reverting top level import ptvsd ([@frenck] - [#28118]) ([ptvsd docs]) +- Implement ToggleController, RangeController, and ModeController in alexa ([@ochlocracy] - [#27302]) ([alexa docs]) +- Add option to specify mDNS advertised IP address for HomeKit Bridge ([@mback2k] - [#26791]) ([homekit docs]) +- Support custom source type for MQTT device tracker ([@raman325] - [#27838]) ([mqtt docs]) +- Add support for resource_template for rest sensor ([@fredrike] - [#27869]) ([rest docs]) +- Support SmartStrip type devices (HS300, HS107) in tplink component ([@mattkasa] - [#26220]) ([tplink docs]) +- Add template filters to convert objects to and from JSON strings ([@SteveDinn] - [#27909]) +- Move imports in hue component ([@javicalle] - [#28121]) ([hue docs]) +- Add improved scene support to the input_datetime integration ([@Santobert] - [#28105]) ([input_datetime docs]) +- Fix #28104 - CalDav support for floating datetimes ([@lukas-hetzenecker] - [#28123]) ([caldav docs]) +- Fix service descriptions ([@schmittx] - [#28122]) +- Timer reproduce state ([@Santobert] - [#28117]) ([timer docs]) +- Fix bootstrap dev dependencies message ([@scop] - [#28114]) +- Move imports in wake_on_lan component ([@djpremier] - [#28100]) ([wake_on_lan docs]) +- Open Hardware Monitor Sensor reconnect ([@Anonym-tsk] - [#28052]) ([openhardwaremonitor docs]) +- Squeezebox LMS reconnect ([@Anonym-tsk] - [#27378]) ([squeezebox docs]) +- Move imports in melissa component ([@djpremier] - [#28021]) ([melissa docs]) +- Add Solar-Log platform ([@Ernst79] - [#27036]) ([solarlog docs]) (new-integration) +- Save client identifier from Plex auth for future use ([@jjlawren] - [#27951]) ([plex docs]) +- Additional SSL validation checks for cert_expiry ([@jjlawren] - [#28047]) ([cert_expiry docs]) +- New platform for Microsoft Teams ([@peroyvind] - [#27981]) ([msteams docs]) (new-integration) +- Fix issues with new tile 2020 devices ([@rolfberkenbosch] - [#28133]) ([tile docs]) +- Add Alexa.ChannelController functions for media players ([@Dilbert66] - [#27671]) ([alexa docs]) +- Move imports in nuheat component ([@djpremier] - [#28038]) ([nuheat docs]) +- Move imports in raspihats component ([@djpremier] - [#28088]) ([raspihats docs]) +- Round system monitor load averages to 2 decimal digits ([@scop] - [#27558]) ([systemmonitor docs]) +- Cleanup typing and asserts for HomematicIP Cloud ([@SukramJ] - [#28144]) ([homematicip_cloud docs]) +- Avoid query operations on a pjlink powered off projector ([@mflage] - [#28132]) ([pjlink docs]) +- Fix Lutron Pico ([@JonGilmore] - [#27059]) ([lutron docs]) +- Support for additional Abode timeline events ([@libots] - [#28124]) ([abode docs]) +- Fix supported_features in mqtt cover ([@Tofandel] - [#28120]) ([mqtt docs]) +- Downgrade aioHTTP 3.6.2 to 3.6.1 ([@pvizeli] - [#28143]) +- Rebase Implement Alexa.DoorbellEventSource Interface Controller ([@ochlocracy] - [#27726]) ([alexa docs]) +- Add support for SAJ inverters connected via WiFi ([@fredericvl] - [#27742]) ([saj docs]) +- Config entry and device for Coolmaster integration ([@OnFreund] - [#27925]) ([coolmaster docs]) +- changed STATE_OFF to STATE_STANDBY ([@Villhellm] - [#28148]) ([roku docs]) (breaking change) +- Allow multiple Transmission clients and add unique_id to entities ([@engrbm87] - [#28136]) ([transmission docs]) +- Parallelize pylint everywhere ([@scop] - [#28149]) +- Updated frontend to 20191023.0 ([@bramkragten] - [#28150]) ([frontend docs]) + +[#25900]: https://github.com/home-assistant/home-assistant/pull/25900 +[#26220]: https://github.com/home-assistant/home-assistant/pull/26220 +[#26375]: https://github.com/home-assistant/home-assistant/pull/26375 +[#26502]: https://github.com/home-assistant/home-assistant/pull/26502 +[#26579]: https://github.com/home-assistant/home-assistant/pull/26579 +[#26585]: https://github.com/home-assistant/home-assistant/pull/26585 +[#26630]: https://github.com/home-assistant/home-assistant/pull/26630 +[#26699]: https://github.com/home-assistant/home-assistant/pull/26699 +[#26791]: https://github.com/home-assistant/home-assistant/pull/26791 +[#26864]: https://github.com/home-assistant/home-assistant/pull/26864 +[#26868]: https://github.com/home-assistant/home-assistant/pull/26868 +[#26940]: https://github.com/home-assistant/home-assistant/pull/26940 +[#27033]: https://github.com/home-assistant/home-assistant/pull/27033 +[#27035]: https://github.com/home-assistant/home-assistant/pull/27035 +[#27036]: https://github.com/home-assistant/home-assistant/pull/27036 +[#27047]: https://github.com/home-assistant/home-assistant/pull/27047 +[#27059]: https://github.com/home-assistant/home-assistant/pull/27059 +[#27063]: https://github.com/home-assistant/home-assistant/pull/27063 +[#27078]: https://github.com/home-assistant/home-assistant/pull/27078 +[#27081]: https://github.com/home-assistant/home-assistant/pull/27081 +[#27086]: https://github.com/home-assistant/home-assistant/pull/27086 +[#27087]: https://github.com/home-assistant/home-assistant/pull/27087 +[#27089]: https://github.com/home-assistant/home-assistant/pull/27089 +[#27096]: https://github.com/home-assistant/home-assistant/pull/27096 +[#27103]: https://github.com/home-assistant/home-assistant/pull/27103 +[#27109]: https://github.com/home-assistant/home-assistant/pull/27109 +[#27140]: https://github.com/home-assistant/home-assistant/pull/27140 +[#27141]: https://github.com/home-assistant/home-assistant/pull/27141 +[#27143]: https://github.com/home-assistant/home-assistant/pull/27143 +[#27144]: https://github.com/home-assistant/home-assistant/pull/27144 +[#27148]: https://github.com/home-assistant/home-assistant/pull/27148 +[#27150]: https://github.com/home-assistant/home-assistant/pull/27150 +[#27153]: https://github.com/home-assistant/home-assistant/pull/27153 +[#27155]: https://github.com/home-assistant/home-assistant/pull/27155 +[#27157]: https://github.com/home-assistant/home-assistant/pull/27157 +[#27158]: https://github.com/home-assistant/home-assistant/pull/27158 +[#27159]: https://github.com/home-assistant/home-assistant/pull/27159 +[#27163]: https://github.com/home-assistant/home-assistant/pull/27163 +[#27167]: https://github.com/home-assistant/home-assistant/pull/27167 +[#27168]: https://github.com/home-assistant/home-assistant/pull/27168 +[#27169]: https://github.com/home-assistant/home-assistant/pull/27169 +[#27178]: https://github.com/home-assistant/home-assistant/pull/27178 +[#27181]: https://github.com/home-assistant/home-assistant/pull/27181 +[#27182]: https://github.com/home-assistant/home-assistant/pull/27182 +[#27192]: https://github.com/home-assistant/home-assistant/pull/27192 +[#27199]: https://github.com/home-assistant/home-assistant/pull/27199 +[#27200]: https://github.com/home-assistant/home-assistant/pull/27200 +[#27202]: https://github.com/home-assistant/home-assistant/pull/27202 +[#27203]: https://github.com/home-assistant/home-assistant/pull/27203 +[#27204]: https://github.com/home-assistant/home-assistant/pull/27204 +[#27211]: https://github.com/home-assistant/home-assistant/pull/27211 +[#27214]: https://github.com/home-assistant/home-assistant/pull/27214 +[#27215]: https://github.com/home-assistant/home-assistant/pull/27215 +[#27216]: https://github.com/home-assistant/home-assistant/pull/27216 +[#27217]: https://github.com/home-assistant/home-assistant/pull/27217 +[#27218]: https://github.com/home-assistant/home-assistant/pull/27218 +[#27221]: https://github.com/home-assistant/home-assistant/pull/27221 +[#27222]: https://github.com/home-assistant/home-assistant/pull/27222 +[#27223]: https://github.com/home-assistant/home-assistant/pull/27223 +[#27225]: https://github.com/home-assistant/home-assistant/pull/27225 +[#27226]: https://github.com/home-assistant/home-assistant/pull/27226 +[#27227]: https://github.com/home-assistant/home-assistant/pull/27227 +[#27228]: https://github.com/home-assistant/home-assistant/pull/27228 +[#27229]: https://github.com/home-assistant/home-assistant/pull/27229 +[#27231]: https://github.com/home-assistant/home-assistant/pull/27231 +[#27232]: https://github.com/home-assistant/home-assistant/pull/27232 +[#27234]: https://github.com/home-assistant/home-assistant/pull/27234 +[#27238]: https://github.com/home-assistant/home-assistant/pull/27238 +[#27240]: https://github.com/home-assistant/home-assistant/pull/27240 +[#27245]: https://github.com/home-assistant/home-assistant/pull/27245 +[#27247]: https://github.com/home-assistant/home-assistant/pull/27247 +[#27249]: https://github.com/home-assistant/home-assistant/pull/27249 +[#27253]: https://github.com/home-assistant/home-assistant/pull/27253 +[#27259]: https://github.com/home-assistant/home-assistant/pull/27259 +[#27260]: https://github.com/home-assistant/home-assistant/pull/27260 +[#27261]: https://github.com/home-assistant/home-assistant/pull/27261 +[#27262]: https://github.com/home-assistant/home-assistant/pull/27262 +[#27263]: https://github.com/home-assistant/home-assistant/pull/27263 +[#27264]: https://github.com/home-assistant/home-assistant/pull/27264 +[#27265]: https://github.com/home-assistant/home-assistant/pull/27265 +[#27267]: https://github.com/home-assistant/home-assistant/pull/27267 +[#27279]: https://github.com/home-assistant/home-assistant/pull/27279 +[#27282]: https://github.com/home-assistant/home-assistant/pull/27282 +[#27286]: https://github.com/home-assistant/home-assistant/pull/27286 +[#27287]: https://github.com/home-assistant/home-assistant/pull/27287 +[#27294]: https://github.com/home-assistant/home-assistant/pull/27294 +[#27298]: https://github.com/home-assistant/home-assistant/pull/27298 +[#27299]: https://github.com/home-assistant/home-assistant/pull/27299 +[#27300]: https://github.com/home-assistant/home-assistant/pull/27300 +[#27302]: https://github.com/home-assistant/home-assistant/pull/27302 +[#27311]: https://github.com/home-assistant/home-assistant/pull/27311 +[#27313]: https://github.com/home-assistant/home-assistant/pull/27313 +[#27314]: https://github.com/home-assistant/home-assistant/pull/27314 +[#27316]: https://github.com/home-assistant/home-assistant/pull/27316 +[#27317]: https://github.com/home-assistant/home-assistant/pull/27317 +[#27320]: https://github.com/home-assistant/home-assistant/pull/27320 +[#27322]: https://github.com/home-assistant/home-assistant/pull/27322 +[#27323]: https://github.com/home-assistant/home-assistant/pull/27323 +[#27325]: https://github.com/home-assistant/home-assistant/pull/27325 +[#27327]: https://github.com/home-assistant/home-assistant/pull/27327 +[#27328]: https://github.com/home-assistant/home-assistant/pull/27328 +[#27331]: https://github.com/home-assistant/home-assistant/pull/27331 +[#27333]: https://github.com/home-assistant/home-assistant/pull/27333 +[#27334]: https://github.com/home-assistant/home-assistant/pull/27334 +[#27339]: https://github.com/home-assistant/home-assistant/pull/27339 +[#27340]: https://github.com/home-assistant/home-assistant/pull/27340 +[#27344]: https://github.com/home-assistant/home-assistant/pull/27344 +[#27348]: https://github.com/home-assistant/home-assistant/pull/27348 +[#27349]: https://github.com/home-assistant/home-assistant/pull/27349 +[#27352]: https://github.com/home-assistant/home-assistant/pull/27352 +[#27353]: https://github.com/home-assistant/home-assistant/pull/27353 +[#27356]: https://github.com/home-assistant/home-assistant/pull/27356 +[#27358]: https://github.com/home-assistant/home-assistant/pull/27358 +[#27359]: https://github.com/home-assistant/home-assistant/pull/27359 +[#27360]: https://github.com/home-assistant/home-assistant/pull/27360 +[#27361]: https://github.com/home-assistant/home-assistant/pull/27361 +[#27362]: https://github.com/home-assistant/home-assistant/pull/27362 +[#27363]: https://github.com/home-assistant/home-assistant/pull/27363 +[#27365]: https://github.com/home-assistant/home-assistant/pull/27365 +[#27367]: https://github.com/home-assistant/home-assistant/pull/27367 +[#27368]: https://github.com/home-assistant/home-assistant/pull/27368 +[#27369]: https://github.com/home-assistant/home-assistant/pull/27369 +[#27378]: https://github.com/home-assistant/home-assistant/pull/27378 +[#27381]: https://github.com/home-assistant/home-assistant/pull/27381 +[#27382]: https://github.com/home-assistant/home-assistant/pull/27382 +[#27383]: https://github.com/home-assistant/home-assistant/pull/27383 +[#27384]: https://github.com/home-assistant/home-assistant/pull/27384 +[#27386]: https://github.com/home-assistant/home-assistant/pull/27386 +[#27387]: https://github.com/home-assistant/home-assistant/pull/27387 +[#27388]: https://github.com/home-assistant/home-assistant/pull/27388 +[#27389]: https://github.com/home-assistant/home-assistant/pull/27389 +[#27390]: https://github.com/home-assistant/home-assistant/pull/27390 +[#27391]: https://github.com/home-assistant/home-assistant/pull/27391 +[#27392]: https://github.com/home-assistant/home-assistant/pull/27392 +[#27393]: https://github.com/home-assistant/home-assistant/pull/27393 +[#27399]: https://github.com/home-assistant/home-assistant/pull/27399 +[#27401]: https://github.com/home-assistant/home-assistant/pull/27401 +[#27402]: https://github.com/home-assistant/home-assistant/pull/27402 +[#27405]: https://github.com/home-assistant/home-assistant/pull/27405 +[#27406]: https://github.com/home-assistant/home-assistant/pull/27406 +[#27407]: https://github.com/home-assistant/home-assistant/pull/27407 +[#27408]: https://github.com/home-assistant/home-assistant/pull/27408 +[#27409]: https://github.com/home-assistant/home-assistant/pull/27409 +[#27413]: https://github.com/home-assistant/home-assistant/pull/27413 +[#27416]: https://github.com/home-assistant/home-assistant/pull/27416 +[#27420]: https://github.com/home-assistant/home-assistant/pull/27420 +[#27422]: https://github.com/home-assistant/home-assistant/pull/27422 +[#27428]: https://github.com/home-assistant/home-assistant/pull/27428 +[#27430]: https://github.com/home-assistant/home-assistant/pull/27430 +[#27431]: https://github.com/home-assistant/home-assistant/pull/27431 +[#27432]: https://github.com/home-assistant/home-assistant/pull/27432 +[#27433]: https://github.com/home-assistant/home-assistant/pull/27433 +[#27438]: https://github.com/home-assistant/home-assistant/pull/27438 +[#27439]: https://github.com/home-assistant/home-assistant/pull/27439 +[#27440]: https://github.com/home-assistant/home-assistant/pull/27440 +[#27441]: https://github.com/home-assistant/home-assistant/pull/27441 +[#27443]: https://github.com/home-assistant/home-assistant/pull/27443 +[#27444]: https://github.com/home-assistant/home-assistant/pull/27444 +[#27448]: https://github.com/home-assistant/home-assistant/pull/27448 +[#27449]: https://github.com/home-assistant/home-assistant/pull/27449 +[#27450]: https://github.com/home-assistant/home-assistant/pull/27450 +[#27451]: https://github.com/home-assistant/home-assistant/pull/27451 +[#27452]: https://github.com/home-assistant/home-assistant/pull/27452 +[#27454]: https://github.com/home-assistant/home-assistant/pull/27454 +[#27456]: https://github.com/home-assistant/home-assistant/pull/27456 +[#27457]: https://github.com/home-assistant/home-assistant/pull/27457 +[#27458]: https://github.com/home-assistant/home-assistant/pull/27458 +[#27459]: https://github.com/home-assistant/home-assistant/pull/27459 +[#27460]: https://github.com/home-assistant/home-assistant/pull/27460 +[#27467]: https://github.com/home-assistant/home-assistant/pull/27467 +[#27468]: https://github.com/home-assistant/home-assistant/pull/27468 +[#27469]: https://github.com/home-assistant/home-assistant/pull/27469 +[#27472]: https://github.com/home-assistant/home-assistant/pull/27472 +[#27473]: https://github.com/home-assistant/home-assistant/pull/27473 +[#27474]: https://github.com/home-assistant/home-assistant/pull/27474 +[#27476]: https://github.com/home-assistant/home-assistant/pull/27476 +[#27477]: https://github.com/home-assistant/home-assistant/pull/27477 +[#27478]: https://github.com/home-assistant/home-assistant/pull/27478 +[#27480]: https://github.com/home-assistant/home-assistant/pull/27480 +[#27481]: https://github.com/home-assistant/home-assistant/pull/27481 +[#27483]: https://github.com/home-assistant/home-assistant/pull/27483 +[#27485]: https://github.com/home-assistant/home-assistant/pull/27485 +[#27487]: https://github.com/home-assistant/home-assistant/pull/27487 +[#27488]: https://github.com/home-assistant/home-assistant/pull/27488 +[#27494]: https://github.com/home-assistant/home-assistant/pull/27494 +[#27495]: https://github.com/home-assistant/home-assistant/pull/27495 +[#27496]: https://github.com/home-assistant/home-assistant/pull/27496 +[#27497]: https://github.com/home-assistant/home-assistant/pull/27497 +[#27498]: https://github.com/home-assistant/home-assistant/pull/27498 +[#27499]: https://github.com/home-assistant/home-assistant/pull/27499 +[#27500]: https://github.com/home-assistant/home-assistant/pull/27500 +[#27501]: https://github.com/home-assistant/home-assistant/pull/27501 +[#27502]: https://github.com/home-assistant/home-assistant/pull/27502 +[#27503]: https://github.com/home-assistant/home-assistant/pull/27503 +[#27505]: https://github.com/home-assistant/home-assistant/pull/27505 +[#27506]: https://github.com/home-assistant/home-assistant/pull/27506 +[#27507]: https://github.com/home-assistant/home-assistant/pull/27507 +[#27508]: https://github.com/home-assistant/home-assistant/pull/27508 +[#27509]: https://github.com/home-assistant/home-assistant/pull/27509 +[#27510]: https://github.com/home-assistant/home-assistant/pull/27510 +[#27511]: https://github.com/home-assistant/home-assistant/pull/27511 +[#27512]: https://github.com/home-assistant/home-assistant/pull/27512 +[#27513]: https://github.com/home-assistant/home-assistant/pull/27513 +[#27514]: https://github.com/home-assistant/home-assistant/pull/27514 +[#27519]: https://github.com/home-assistant/home-assistant/pull/27519 +[#27523]: https://github.com/home-assistant/home-assistant/pull/27523 +[#27526]: https://github.com/home-assistant/home-assistant/pull/27526 +[#27530]: https://github.com/home-assistant/home-assistant/pull/27530 +[#27532]: https://github.com/home-assistant/home-assistant/pull/27532 +[#27533]: https://github.com/home-assistant/home-assistant/pull/27533 +[#27534]: https://github.com/home-assistant/home-assistant/pull/27534 +[#27535]: https://github.com/home-assistant/home-assistant/pull/27535 +[#27536]: https://github.com/home-assistant/home-assistant/pull/27536 +[#27543]: https://github.com/home-assistant/home-assistant/pull/27543 +[#27544]: https://github.com/home-assistant/home-assistant/pull/27544 +[#27549]: https://github.com/home-assistant/home-assistant/pull/27549 +[#27553]: https://github.com/home-assistant/home-assistant/pull/27553 +[#27555]: https://github.com/home-assistant/home-assistant/pull/27555 +[#27556]: https://github.com/home-assistant/home-assistant/pull/27556 +[#27558]: https://github.com/home-assistant/home-assistant/pull/27558 +[#27560]: https://github.com/home-assistant/home-assistant/pull/27560 +[#27563]: https://github.com/home-assistant/home-assistant/pull/27563 +[#27565]: https://github.com/home-assistant/home-assistant/pull/27565 +[#27567]: https://github.com/home-assistant/home-assistant/pull/27567 +[#27568]: https://github.com/home-assistant/home-assistant/pull/27568 +[#27571]: https://github.com/home-assistant/home-assistant/pull/27571 +[#27578]: https://github.com/home-assistant/home-assistant/pull/27578 +[#27579]: https://github.com/home-assistant/home-assistant/pull/27579 +[#27580]: https://github.com/home-assistant/home-assistant/pull/27580 +[#27581]: https://github.com/home-assistant/home-assistant/pull/27581 +[#27583]: https://github.com/home-assistant/home-assistant/pull/27583 +[#27584]: https://github.com/home-assistant/home-assistant/pull/27584 +[#27585]: https://github.com/home-assistant/home-assistant/pull/27585 +[#27586]: https://github.com/home-assistant/home-assistant/pull/27586 +[#27588]: https://github.com/home-assistant/home-assistant/pull/27588 +[#27589]: https://github.com/home-assistant/home-assistant/pull/27589 +[#27591]: https://github.com/home-assistant/home-assistant/pull/27591 +[#27597]: https://github.com/home-assistant/home-assistant/pull/27597 +[#27598]: https://github.com/home-assistant/home-assistant/pull/27598 +[#27600]: https://github.com/home-assistant/home-assistant/pull/27600 +[#27601]: https://github.com/home-assistant/home-assistant/pull/27601 +[#27602]: https://github.com/home-assistant/home-assistant/pull/27602 +[#27603]: https://github.com/home-assistant/home-assistant/pull/27603 +[#27604]: https://github.com/home-assistant/home-assistant/pull/27604 +[#27606]: https://github.com/home-assistant/home-assistant/pull/27606 +[#27608]: https://github.com/home-assistant/home-assistant/pull/27608 +[#27610]: https://github.com/home-assistant/home-assistant/pull/27610 +[#27613]: https://github.com/home-assistant/home-assistant/pull/27613 +[#27615]: https://github.com/home-assistant/home-assistant/pull/27615 +[#27616]: https://github.com/home-assistant/home-assistant/pull/27616 +[#27617]: https://github.com/home-assistant/home-assistant/pull/27617 +[#27618]: https://github.com/home-assistant/home-assistant/pull/27618 +[#27620]: https://github.com/home-assistant/home-assistant/pull/27620 +[#27622]: https://github.com/home-assistant/home-assistant/pull/27622 +[#27630]: https://github.com/home-assistant/home-assistant/pull/27630 +[#27632]: https://github.com/home-assistant/home-assistant/pull/27632 +[#27633]: https://github.com/home-assistant/home-assistant/pull/27633 +[#27634]: https://github.com/home-assistant/home-assistant/pull/27634 +[#27636]: https://github.com/home-assistant/home-assistant/pull/27636 +[#27637]: https://github.com/home-assistant/home-assistant/pull/27637 +[#27638]: https://github.com/home-assistant/home-assistant/pull/27638 +[#27640]: https://github.com/home-assistant/home-assistant/pull/27640 +[#27641]: https://github.com/home-assistant/home-assistant/pull/27641 +[#27645]: https://github.com/home-assistant/home-assistant/pull/27645 +[#27646]: https://github.com/home-assistant/home-assistant/pull/27646 +[#27647]: https://github.com/home-assistant/home-assistant/pull/27647 +[#27648]: https://github.com/home-assistant/home-assistant/pull/27648 +[#27649]: https://github.com/home-assistant/home-assistant/pull/27649 +[#27650]: https://github.com/home-assistant/home-assistant/pull/27650 +[#27652]: https://github.com/home-assistant/home-assistant/pull/27652 +[#27653]: https://github.com/home-assistant/home-assistant/pull/27653 +[#27654]: https://github.com/home-assistant/home-assistant/pull/27654 +[#27656]: https://github.com/home-assistant/home-assistant/pull/27656 +[#27658]: https://github.com/home-assistant/home-assistant/pull/27658 +[#27661]: https://github.com/home-assistant/home-assistant/pull/27661 +[#27663]: https://github.com/home-assistant/home-assistant/pull/27663 +[#27664]: https://github.com/home-assistant/home-assistant/pull/27664 +[#27665]: https://github.com/home-assistant/home-assistant/pull/27665 +[#27669]: https://github.com/home-assistant/home-assistant/pull/27669 +[#27671]: https://github.com/home-assistant/home-assistant/pull/27671 +[#27675]: https://github.com/home-assistant/home-assistant/pull/27675 +[#27676]: https://github.com/home-assistant/home-assistant/pull/27676 +[#27677]: https://github.com/home-assistant/home-assistant/pull/27677 +[#27678]: https://github.com/home-assistant/home-assistant/pull/27678 +[#27679]: https://github.com/home-assistant/home-assistant/pull/27679 +[#27680]: https://github.com/home-assistant/home-assistant/pull/27680 +[#27682]: https://github.com/home-assistant/home-assistant/pull/27682 +[#27683]: https://github.com/home-assistant/home-assistant/pull/27683 +[#27686]: https://github.com/home-assistant/home-assistant/pull/27686 +[#27687]: https://github.com/home-assistant/home-assistant/pull/27687 +[#27689]: https://github.com/home-assistant/home-assistant/pull/27689 +[#27693]: https://github.com/home-assistant/home-assistant/pull/27693 +[#27695]: https://github.com/home-assistant/home-assistant/pull/27695 +[#27696]: https://github.com/home-assistant/home-assistant/pull/27696 +[#27697]: https://github.com/home-assistant/home-assistant/pull/27697 +[#27698]: https://github.com/home-assistant/home-assistant/pull/27698 +[#27703]: https://github.com/home-assistant/home-assistant/pull/27703 +[#27705]: https://github.com/home-assistant/home-assistant/pull/27705 +[#27713]: https://github.com/home-assistant/home-assistant/pull/27713 +[#27714]: https://github.com/home-assistant/home-assistant/pull/27714 +[#27715]: https://github.com/home-assistant/home-assistant/pull/27715 +[#27716]: https://github.com/home-assistant/home-assistant/pull/27716 +[#27717]: https://github.com/home-assistant/home-assistant/pull/27717 +[#27718]: https://github.com/home-assistant/home-assistant/pull/27718 +[#27726]: https://github.com/home-assistant/home-assistant/pull/27726 +[#27727]: https://github.com/home-assistant/home-assistant/pull/27727 +[#27728]: https://github.com/home-assistant/home-assistant/pull/27728 +[#27731]: https://github.com/home-assistant/home-assistant/pull/27731 +[#27733]: https://github.com/home-assistant/home-assistant/pull/27733 +[#27734]: https://github.com/home-assistant/home-assistant/pull/27734 +[#27737]: https://github.com/home-assistant/home-assistant/pull/27737 +[#27739]: https://github.com/home-assistant/home-assistant/pull/27739 +[#27741]: https://github.com/home-assistant/home-assistant/pull/27741 +[#27742]: https://github.com/home-assistant/home-assistant/pull/27742 +[#27743]: https://github.com/home-assistant/home-assistant/pull/27743 +[#27745]: https://github.com/home-assistant/home-assistant/pull/27745 +[#27746]: https://github.com/home-assistant/home-assistant/pull/27746 +[#27747]: https://github.com/home-assistant/home-assistant/pull/27747 +[#27752]: https://github.com/home-assistant/home-assistant/pull/27752 +[#27753]: https://github.com/home-assistant/home-assistant/pull/27753 +[#27759]: https://github.com/home-assistant/home-assistant/pull/27759 +[#27764]: https://github.com/home-assistant/home-assistant/pull/27764 +[#27769]: https://github.com/home-assistant/home-assistant/pull/27769 +[#27771]: https://github.com/home-assistant/home-assistant/pull/27771 +[#27772]: https://github.com/home-assistant/home-assistant/pull/27772 +[#27774]: https://github.com/home-assistant/home-assistant/pull/27774 +[#27776]: https://github.com/home-assistant/home-assistant/pull/27776 +[#27777]: https://github.com/home-assistant/home-assistant/pull/27777 +[#27778]: https://github.com/home-assistant/home-assistant/pull/27778 +[#27779]: https://github.com/home-assistant/home-assistant/pull/27779 +[#27781]: https://github.com/home-assistant/home-assistant/pull/27781 +[#27782]: https://github.com/home-assistant/home-assistant/pull/27782 +[#27784]: https://github.com/home-assistant/home-assistant/pull/27784 +[#27785]: https://github.com/home-assistant/home-assistant/pull/27785 +[#27787]: https://github.com/home-assistant/home-assistant/pull/27787 +[#27788]: https://github.com/home-assistant/home-assistant/pull/27788 +[#27789]: https://github.com/home-assistant/home-assistant/pull/27789 +[#27790]: https://github.com/home-assistant/home-assistant/pull/27790 +[#27791]: https://github.com/home-assistant/home-assistant/pull/27791 +[#27792]: https://github.com/home-assistant/home-assistant/pull/27792 +[#27793]: https://github.com/home-assistant/home-assistant/pull/27793 +[#27794]: https://github.com/home-assistant/home-assistant/pull/27794 +[#27797]: https://github.com/home-assistant/home-assistant/pull/27797 +[#27798]: https://github.com/home-assistant/home-assistant/pull/27798 +[#27799]: https://github.com/home-assistant/home-assistant/pull/27799 +[#27803]: https://github.com/home-assistant/home-assistant/pull/27803 +[#27804]: https://github.com/home-assistant/home-assistant/pull/27804 +[#27805]: https://github.com/home-assistant/home-assistant/pull/27805 +[#27806]: https://github.com/home-assistant/home-assistant/pull/27806 +[#27807]: https://github.com/home-assistant/home-assistant/pull/27807 +[#27810]: https://github.com/home-assistant/home-assistant/pull/27810 +[#27811]: https://github.com/home-assistant/home-assistant/pull/27811 +[#27812]: https://github.com/home-assistant/home-assistant/pull/27812 +[#27813]: https://github.com/home-assistant/home-assistant/pull/27813 +[#27814]: https://github.com/home-assistant/home-assistant/pull/27814 +[#27815]: https://github.com/home-assistant/home-assistant/pull/27815 +[#27820]: https://github.com/home-assistant/home-assistant/pull/27820 +[#27821]: https://github.com/home-assistant/home-assistant/pull/27821 +[#27822]: https://github.com/home-assistant/home-assistant/pull/27822 +[#27823]: https://github.com/home-assistant/home-assistant/pull/27823 +[#27825]: https://github.com/home-assistant/home-assistant/pull/27825 +[#27826]: https://github.com/home-assistant/home-assistant/pull/27826 +[#27827]: https://github.com/home-assistant/home-assistant/pull/27827 +[#27829]: https://github.com/home-assistant/home-assistant/pull/27829 +[#27831]: https://github.com/home-assistant/home-assistant/pull/27831 +[#27835]: https://github.com/home-assistant/home-assistant/pull/27835 +[#27838]: https://github.com/home-assistant/home-assistant/pull/27838 +[#27839]: https://github.com/home-assistant/home-assistant/pull/27839 +[#27842]: https://github.com/home-assistant/home-assistant/pull/27842 +[#27849]: https://github.com/home-assistant/home-assistant/pull/27849 +[#27850]: https://github.com/home-assistant/home-assistant/pull/27850 +[#27851]: https://github.com/home-assistant/home-assistant/pull/27851 +[#27852]: https://github.com/home-assistant/home-assistant/pull/27852 +[#27853]: https://github.com/home-assistant/home-assistant/pull/27853 +[#27854]: https://github.com/home-assistant/home-assistant/pull/27854 +[#27856]: https://github.com/home-assistant/home-assistant/pull/27856 +[#27857]: https://github.com/home-assistant/home-assistant/pull/27857 +[#27859]: https://github.com/home-assistant/home-assistant/pull/27859 +[#27861]: https://github.com/home-assistant/home-assistant/pull/27861 +[#27864]: https://github.com/home-assistant/home-assistant/pull/27864 +[#27868]: https://github.com/home-assistant/home-assistant/pull/27868 +[#27869]: https://github.com/home-assistant/home-assistant/pull/27869 +[#27873]: https://github.com/home-assistant/home-assistant/pull/27873 +[#27874]: https://github.com/home-assistant/home-assistant/pull/27874 +[#27875]: https://github.com/home-assistant/home-assistant/pull/27875 +[#27876]: https://github.com/home-assistant/home-assistant/pull/27876 +[#27877]: https://github.com/home-assistant/home-assistant/pull/27877 +[#27878]: https://github.com/home-assistant/home-assistant/pull/27878 +[#27879]: https://github.com/home-assistant/home-assistant/pull/27879 +[#27881]: https://github.com/home-assistant/home-assistant/pull/27881 +[#27883]: https://github.com/home-assistant/home-assistant/pull/27883 +[#27884]: https://github.com/home-assistant/home-assistant/pull/27884 +[#27885]: https://github.com/home-assistant/home-assistant/pull/27885 +[#27886]: https://github.com/home-assistant/home-assistant/pull/27886 +[#27887]: https://github.com/home-assistant/home-assistant/pull/27887 +[#27888]: https://github.com/home-assistant/home-assistant/pull/27888 +[#27889]: https://github.com/home-assistant/home-assistant/pull/27889 +[#27890]: https://github.com/home-assistant/home-assistant/pull/27890 +[#27895]: https://github.com/home-assistant/home-assistant/pull/27895 +[#27896]: https://github.com/home-assistant/home-assistant/pull/27896 +[#27897]: https://github.com/home-assistant/home-assistant/pull/27897 +[#27898]: https://github.com/home-assistant/home-assistant/pull/27898 +[#27899]: https://github.com/home-assistant/home-assistant/pull/27899 +[#27901]: https://github.com/home-assistant/home-assistant/pull/27901 +[#27903]: https://github.com/home-assistant/home-assistant/pull/27903 +[#27904]: https://github.com/home-assistant/home-assistant/pull/27904 +[#27905]: https://github.com/home-assistant/home-assistant/pull/27905 +[#27906]: https://github.com/home-assistant/home-assistant/pull/27906 +[#27907]: https://github.com/home-assistant/home-assistant/pull/27907 +[#27908]: https://github.com/home-assistant/home-assistant/pull/27908 +[#27909]: https://github.com/home-assistant/home-assistant/pull/27909 +[#27912]: https://github.com/home-assistant/home-assistant/pull/27912 +[#27913]: https://github.com/home-assistant/home-assistant/pull/27913 +[#27914]: https://github.com/home-assistant/home-assistant/pull/27914 +[#27916]: https://github.com/home-assistant/home-assistant/pull/27916 +[#27919]: https://github.com/home-assistant/home-assistant/pull/27919 +[#27921]: https://github.com/home-assistant/home-assistant/pull/27921 +[#27925]: https://github.com/home-assistant/home-assistant/pull/27925 +[#27926]: https://github.com/home-assistant/home-assistant/pull/27926 +[#27928]: https://github.com/home-assistant/home-assistant/pull/27928 +[#27929]: https://github.com/home-assistant/home-assistant/pull/27929 +[#27930]: https://github.com/home-assistant/home-assistant/pull/27930 +[#27931]: https://github.com/home-assistant/home-assistant/pull/27931 +[#27933]: https://github.com/home-assistant/home-assistant/pull/27933 +[#27934]: https://github.com/home-assistant/home-assistant/pull/27934 +[#27935]: https://github.com/home-assistant/home-assistant/pull/27935 +[#27936]: https://github.com/home-assistant/home-assistant/pull/27936 +[#27937]: https://github.com/home-assistant/home-assistant/pull/27937 +[#27938]: https://github.com/home-assistant/home-assistant/pull/27938 +[#27939]: https://github.com/home-assistant/home-assistant/pull/27939 +[#27940]: https://github.com/home-assistant/home-assistant/pull/27940 +[#27942]: https://github.com/home-assistant/home-assistant/pull/27942 +[#27943]: https://github.com/home-assistant/home-assistant/pull/27943 +[#27945]: https://github.com/home-assistant/home-assistant/pull/27945 +[#27946]: https://github.com/home-assistant/home-assistant/pull/27946 +[#27951]: https://github.com/home-assistant/home-assistant/pull/27951 +[#27957]: https://github.com/home-assistant/home-assistant/pull/27957 +[#27958]: https://github.com/home-assistant/home-assistant/pull/27958 +[#27965]: https://github.com/home-assistant/home-assistant/pull/27965 +[#27968]: https://github.com/home-assistant/home-assistant/pull/27968 +[#27969]: https://github.com/home-assistant/home-assistant/pull/27969 +[#27971]: https://github.com/home-assistant/home-assistant/pull/27971 +[#27972]: https://github.com/home-assistant/home-assistant/pull/27972 +[#27973]: https://github.com/home-assistant/home-assistant/pull/27973 +[#27974]: https://github.com/home-assistant/home-assistant/pull/27974 +[#27975]: https://github.com/home-assistant/home-assistant/pull/27975 +[#27976]: https://github.com/home-assistant/home-assistant/pull/27976 +[#27977]: https://github.com/home-assistant/home-assistant/pull/27977 +[#27978]: https://github.com/home-assistant/home-assistant/pull/27978 +[#27979]: https://github.com/home-assistant/home-assistant/pull/27979 +[#27980]: https://github.com/home-assistant/home-assistant/pull/27980 +[#27981]: https://github.com/home-assistant/home-assistant/pull/27981 +[#27982]: https://github.com/home-assistant/home-assistant/pull/27982 +[#27983]: https://github.com/home-assistant/home-assistant/pull/27983 +[#27985]: https://github.com/home-assistant/home-assistant/pull/27985 +[#27986]: https://github.com/home-assistant/home-assistant/pull/27986 +[#27988]: https://github.com/home-assistant/home-assistant/pull/27988 +[#27989]: https://github.com/home-assistant/home-assistant/pull/27989 +[#27990]: https://github.com/home-assistant/home-assistant/pull/27990 +[#27991]: https://github.com/home-assistant/home-assistant/pull/27991 +[#27993]: https://github.com/home-assistant/home-assistant/pull/27993 +[#27994]: https://github.com/home-assistant/home-assistant/pull/27994 +[#27995]: https://github.com/home-assistant/home-assistant/pull/27995 +[#27997]: https://github.com/home-assistant/home-assistant/pull/27997 +[#27998]: https://github.com/home-assistant/home-assistant/pull/27998 +[#27999]: https://github.com/home-assistant/home-assistant/pull/27999 +[#28001]: https://github.com/home-assistant/home-assistant/pull/28001 +[#28002]: https://github.com/home-assistant/home-assistant/pull/28002 +[#28003]: https://github.com/home-assistant/home-assistant/pull/28003 +[#28004]: https://github.com/home-assistant/home-assistant/pull/28004 +[#28005]: https://github.com/home-assistant/home-assistant/pull/28005 +[#28006]: https://github.com/home-assistant/home-assistant/pull/28006 +[#28007]: https://github.com/home-assistant/home-assistant/pull/28007 +[#28008]: https://github.com/home-assistant/home-assistant/pull/28008 +[#28009]: https://github.com/home-assistant/home-assistant/pull/28009 +[#28010]: https://github.com/home-assistant/home-assistant/pull/28010 +[#28011]: https://github.com/home-assistant/home-assistant/pull/28011 +[#28012]: https://github.com/home-assistant/home-assistant/pull/28012 +[#28013]: https://github.com/home-assistant/home-assistant/pull/28013 +[#28014]: https://github.com/home-assistant/home-assistant/pull/28014 +[#28015]: https://github.com/home-assistant/home-assistant/pull/28015 +[#28016]: https://github.com/home-assistant/home-assistant/pull/28016 +[#28017]: https://github.com/home-assistant/home-assistant/pull/28017 +[#28018]: https://github.com/home-assistant/home-assistant/pull/28018 +[#28019]: https://github.com/home-assistant/home-assistant/pull/28019 +[#28020]: https://github.com/home-assistant/home-assistant/pull/28020 +[#28021]: https://github.com/home-assistant/home-assistant/pull/28021 +[#28022]: https://github.com/home-assistant/home-assistant/pull/28022 +[#28023]: https://github.com/home-assistant/home-assistant/pull/28023 +[#28024]: https://github.com/home-assistant/home-assistant/pull/28024 +[#28025]: https://github.com/home-assistant/home-assistant/pull/28025 +[#28026]: https://github.com/home-assistant/home-assistant/pull/28026 +[#28027]: https://github.com/home-assistant/home-assistant/pull/28027 +[#28028]: https://github.com/home-assistant/home-assistant/pull/28028 +[#28029]: https://github.com/home-assistant/home-assistant/pull/28029 +[#28030]: https://github.com/home-assistant/home-assistant/pull/28030 +[#28031]: https://github.com/home-assistant/home-assistant/pull/28031 +[#28032]: https://github.com/home-assistant/home-assistant/pull/28032 +[#28033]: https://github.com/home-assistant/home-assistant/pull/28033 +[#28034]: https://github.com/home-assistant/home-assistant/pull/28034 +[#28035]: https://github.com/home-assistant/home-assistant/pull/28035 +[#28036]: https://github.com/home-assistant/home-assistant/pull/28036 +[#28037]: https://github.com/home-assistant/home-assistant/pull/28037 +[#28038]: https://github.com/home-assistant/home-assistant/pull/28038 +[#28039]: https://github.com/home-assistant/home-assistant/pull/28039 +[#28041]: https://github.com/home-assistant/home-assistant/pull/28041 +[#28042]: https://github.com/home-assistant/home-assistant/pull/28042 +[#28043]: https://github.com/home-assistant/home-assistant/pull/28043 +[#28044]: https://github.com/home-assistant/home-assistant/pull/28044 +[#28045]: https://github.com/home-assistant/home-assistant/pull/28045 +[#28046]: https://github.com/home-assistant/home-assistant/pull/28046 +[#28047]: https://github.com/home-assistant/home-assistant/pull/28047 +[#28052]: https://github.com/home-assistant/home-assistant/pull/28052 +[#28054]: https://github.com/home-assistant/home-assistant/pull/28054 +[#28055]: https://github.com/home-assistant/home-assistant/pull/28055 +[#28056]: https://github.com/home-assistant/home-assistant/pull/28056 +[#28059]: https://github.com/home-assistant/home-assistant/pull/28059 +[#28060]: https://github.com/home-assistant/home-assistant/pull/28060 +[#28062]: https://github.com/home-assistant/home-assistant/pull/28062 +[#28066]: https://github.com/home-assistant/home-assistant/pull/28066 +[#28070]: https://github.com/home-assistant/home-assistant/pull/28070 +[#28071]: https://github.com/home-assistant/home-assistant/pull/28071 +[#28077]: https://github.com/home-assistant/home-assistant/pull/28077 +[#28078]: https://github.com/home-assistant/home-assistant/pull/28078 +[#28084]: https://github.com/home-assistant/home-assistant/pull/28084 +[#28085]: https://github.com/home-assistant/home-assistant/pull/28085 +[#28086]: https://github.com/home-assistant/home-assistant/pull/28086 +[#28087]: https://github.com/home-assistant/home-assistant/pull/28087 +[#28088]: https://github.com/home-assistant/home-assistant/pull/28088 +[#28089]: https://github.com/home-assistant/home-assistant/pull/28089 +[#28091]: https://github.com/home-assistant/home-assistant/pull/28091 +[#28092]: https://github.com/home-assistant/home-assistant/pull/28092 +[#28093]: https://github.com/home-assistant/home-assistant/pull/28093 +[#28094]: https://github.com/home-assistant/home-assistant/pull/28094 +[#28095]: https://github.com/home-assistant/home-assistant/pull/28095 +[#28096]: https://github.com/home-assistant/home-assistant/pull/28096 +[#28097]: https://github.com/home-assistant/home-assistant/pull/28097 +[#28098]: https://github.com/home-assistant/home-assistant/pull/28098 +[#28099]: https://github.com/home-assistant/home-assistant/pull/28099 +[#28100]: https://github.com/home-assistant/home-assistant/pull/28100 +[#28103]: https://github.com/home-assistant/home-assistant/pull/28103 +[#28105]: https://github.com/home-assistant/home-assistant/pull/28105 +[#28106]: https://github.com/home-assistant/home-assistant/pull/28106 +[#28107]: https://github.com/home-assistant/home-assistant/pull/28107 +[#28109]: https://github.com/home-assistant/home-assistant/pull/28109 +[#28114]: https://github.com/home-assistant/home-assistant/pull/28114 +[#28117]: https://github.com/home-assistant/home-assistant/pull/28117 +[#28118]: https://github.com/home-assistant/home-assistant/pull/28118 +[#28120]: https://github.com/home-assistant/home-assistant/pull/28120 +[#28121]: https://github.com/home-assistant/home-assistant/pull/28121 +[#28122]: https://github.com/home-assistant/home-assistant/pull/28122 +[#28123]: https://github.com/home-assistant/home-assistant/pull/28123 +[#28124]: https://github.com/home-assistant/home-assistant/pull/28124 +[#28132]: https://github.com/home-assistant/home-assistant/pull/28132 +[#28133]: https://github.com/home-assistant/home-assistant/pull/28133 +[#28136]: https://github.com/home-assistant/home-assistant/pull/28136 +[#28143]: https://github.com/home-assistant/home-assistant/pull/28143 +[#28144]: https://github.com/home-assistant/home-assistant/pull/28144 +[#28148]: https://github.com/home-assistant/home-assistant/pull/28148 +[#28149]: https://github.com/home-assistant/home-assistant/pull/28149 +[#28150]: https://github.com/home-assistant/home-assistant/pull/28150 +[@aarondavidschneider]: https://github.com/AaronDavidSchneider +[@adminiuga]: https://github.com/Adminiuga +[@anonym-tsk]: https://github.com/Anonym-tsk +[@bkpepe]: https://github.com/BKPepe +[@bouni]: https://github.com/Bouni +[@cqoute]: https://github.com/CQoute +[@cinntax]: https://github.com/Cinntax +[@danielhiversen]: https://github.com/Danielhiversen +[@dilbert66]: https://github.com/Dilbert66 +[@ernst79]: https://github.com/Ernst79 +[@harlemsquirrel]: https://github.com/HarlemSquirrel +[@jefflirion]: https://github.com/JeffLIrion +[@jongilmore]: https://github.com/JonGilmore +[@kane610]: https://github.com/Kane610 +[@magicaltrev89]: https://github.com/MagicalTrev89 +[@michsior14]: https://github.com/Michsior14 +[@misiu]: https://github.com/Misiu +[@mofeywalker]: https://github.com/Mofeywalker +[@onfreund]: https://github.com/OnFreund +[@ottowinter]: https://github.com/OttoWinter +[@quentame]: https://github.com/Quentame +[@ryanewen]: https://github.com/RyanEwen +[@santobert]: https://github.com/Santobert +[@soldiercorp]: https://github.com/SoldierCorp +[@stevedinn]: https://github.com/SteveDinn +[@sukramj]: https://github.com/SukramJ +[@tofandel]: https://github.com/Tofandel +[@villhellm]: https://github.com/Villhellm +[@abstrakct]: https://github.com/abstrakct +[@alandtse]: https://github.com/alandtse +[@antlarr]: https://github.com/antlarr +[@balloob]: https://github.com/balloob +[@bastshoes]: https://github.com/bastshoes +[@bbrendon]: https://github.com/bbrendon +[@bendikrb]: https://github.com/bendikrb +[@bhageena]: https://github.com/bhageena +[@bieniu]: https://github.com/bieniu +[@bramkragten]: https://github.com/bramkragten +[@briglx]: https://github.com/briglx +[@bvlaicu]: https://github.com/bvlaicu +[@bwarden]: https://github.com/bwarden +[@caronc]: https://github.com/caronc +[@cgtobi]: https://github.com/cgtobi +[@crazyfx1]: https://github.com/crazyfx1 +[@cyberjacob]: https://github.com/cyberjacob +[@danielperna84]: https://github.com/danielperna84 +[@definitio]: https://github.com/definitio +[@delphiki]: https://github.com/delphiki +[@djpremier]: https://github.com/djpremier +[@doudz]: https://github.com/doudz +[@dshokouhi]: https://github.com/dshokouhi +[@eifinger]: https://github.com/eifinger +[@elupus]: https://github.com/elupus +[@emontnemery]: https://github.com/emontnemery +[@engrbm87]: https://github.com/engrbm87 +[@evanjd]: https://github.com/evanjd +[@exxamalte]: https://github.com/exxamalte +[@fabaff]: https://github.com/fabaff +[@foreign-sub]: https://github.com/foreign-sub +[@foxel]: https://github.com/foxel +[@foxy82]: https://github.com/foxy82 +[@fredericvl]: https://github.com/fredericvl +[@fredrike]: https://github.com/fredrike +[@frenck]: https://github.com/frenck +[@fronzbot]: https://github.com/fronzbot +[@gdrapp]: https://github.com/gdrapp +[@ggravlingen]: https://github.com/ggravlingen +[@gonzalezcalleja]: https://github.com/gonzalezcalleja +[@guillempages]: https://github.com/guillempages +[@hfurubotten]: https://github.com/hfurubotten +[@hmmbob]: https://github.com/hmmbob +[@hugheaves]: https://github.com/hugheaves +[@javicalle]: https://github.com/javicalle +[@jensihnow]: https://github.com/jensihnow +[@jjlawren]: https://github.com/jjlawren +[@kennedyshead]: https://github.com/kennedyshead +[@ktnrg45]: https://github.com/ktnrg45 +[@libots]: https://github.com/libots +[@luca-angemi]: https://github.com/luca-angemi +[@lukas-hetzenecker]: https://github.com/lukas-hetzenecker +[@marthoc]: https://github.com/marthoc +[@mattkasa]: https://github.com/mattkasa +[@mback2k]: https://github.com/mback2k +[@mdonoughe]: https://github.com/mdonoughe +[@mezz64]: https://github.com/mezz64 +[@mflage]: https://github.com/mflage +[@mjrider]: https://github.com/mjrider +[@mnigbur]: https://github.com/mnigbur +[@mvn23]: https://github.com/mvn23 +[@mzdrale]: https://github.com/mzdrale +[@ochlocracy]: https://github.com/ochlocracy +[@oncleben31]: https://github.com/oncleben31 +[@ottersen]: https://github.com/ottersen +[@pascallj]: https://github.com/pascallj +[@peroyvind]: https://github.com/peroyvind +[@pho3nixf1re]: https://github.com/pho3nixf1re +[@pvizeli]: https://github.com/pvizeli +[@quthla]: https://github.com/quthla +[@raman325]: https://github.com/raman325 +[@ratsept]: https://github.com/ratsept +[@rishatik92]: https://github.com/rishatik92 +[@rolfberkenbosch]: https://github.com/rolfberkenbosch +[@rytilahti]: https://github.com/rytilahti +[@scheric]: https://github.com/scheric +[@schmittx]: https://github.com/schmittx +[@scop]: https://github.com/scop +[@sermayoral]: https://github.com/sermayoral +[@shred86]: https://github.com/shred86 +[@skgsergio]: https://github.com/skgsergio +[@snowzach]: https://github.com/snowzach +[@space-pope]: https://github.com/space-pope +[@springstan]: https://github.com/springstan +[@starkillerog]: https://github.com/starkillerOG +[@stevendlander]: https://github.com/stevendlander +[@syssi]: https://github.com/syssi +[@tefinger]: https://github.com/tefinger +[@thaohtp]: https://github.com/thaohtp +[@ties]: https://github.com/ties +[@timmccor]: https://github.com/timmccor +[@tombbo]: https://github.com/tombbo +[@tsvi]: https://github.com/tsvi +[@tulindo]: https://github.com/tulindo +[@vangorra]: https://github.com/vangorra +[@zxdavb]: https://github.com/zxdavb +[abode docs]: /integrations/abode/ +[acer_projector docs]: /integrations/acer_projector/ +[adguard docs]: /integrations/adguard/ +[ads docs]: /integrations/ads/ +[airly docs]: /integrations/airly/ +[airvisual docs]: /integrations/airvisual/ +[aladdin_connect docs]: /integrations/aladdin_connect/ +[alarm_control_panel docs]: /integrations/alarm_control_panel/ +[alarmdecoder docs]: /integrations/alarmdecoder/ +[alarmdotcom docs]: /integrations/alarmdotcom/ +[alexa docs]: /integrations/alexa/ +[alpha_vantage docs]: /integrations/alpha_vantage/ +[amazon_polly docs]: /integrations/amazon_polly/ +[amcrest docs]: /integrations/amcrest/ +[ampio docs]: /integrations/ampio/ +[android_ip_webcam docs]: /integrations/android_ip_webcam/ +[androidtv docs]: /integrations/androidtv/ +[anel_pwrctrl docs]: /integrations/anel_pwrctrl/ +[anthemav docs]: /integrations/anthemav/ +[apcupsd docs]: /integrations/apcupsd/ +[apns docs]: /integrations/apns/ +[apple_tv docs]: /integrations/apple_tv/ +[apprise docs]: /integrations/apprise/ +[aprs docs]: /integrations/aprs/ +[aqualogic docs]: /integrations/aqualogic/ +[aquostv docs]: /integrations/aquostv/ +[arduino docs]: /integrations/arduino/ +[arlo docs]: /integrations/arlo/ +[aruba docs]: /integrations/aruba/ +[asterisk_mbox docs]: /integrations/asterisk_mbox/ +[august docs]: /integrations/august/ +[auth docs]: /integrations/auth/ +[automatic docs]: /integrations/automatic/ +[automation docs]: /integrations/automation/ +[awair docs]: /integrations/awair/ +[aws docs]: /integrations/aws/ +[axis docs]: /integrations/axis/ +[baidu docs]: /integrations/baidu/ +[bbb_gpio docs]: /integrations/bbb_gpio/ +[bbox docs]: /integrations/bbox/ +[bh1750 docs]: /integrations/bh1750/ +[binary_sensor docs]: /integrations/binary_sensor/ +[bitcoin docs]: /integrations/bitcoin/ +[blackbird docs]: /integrations/blackbird/ +[blink docs]: /integrations/blink/ +[blinksticklight docs]: /integrations/blinksticklight/ +[blockchain docs]: /integrations/blockchain/ +[bluesound docs]: /integrations/bluesound/ +[bluetooth_le_tracker docs]: /integrations/bluetooth_le_tracker/ +[bme280 docs]: /integrations/bme280/ +[bme680 docs]: /integrations/bme680/ +[bmw_connected_drive docs]: /integrations/bmw_connected_drive/ +[bom docs]: /integrations/bom/ +[broadlink docs]: /integrations/broadlink/ +[brottsplatskartan docs]: /integrations/brottsplatskartan/ +[browser docs]: /integrations/browser/ +[brunt docs]: /integrations/brunt/ +[bt_home_hub_5 docs]: /integrations/bt_home_hub_5/ +[bt_smarthub docs]: /integrations/bt_smarthub/ +[buienradar docs]: /integrations/buienradar/ +[caldav docs]: /integrations/caldav/ +[canary docs]: /integrations/canary/ +[cast docs]: /integrations/cast/ +[cert_expiry docs]: /integrations/cert_expiry/ +[channels docs]: /integrations/channels/ +[cisco_ios docs]: /integrations/cisco_ios/ +[cisco_mobility_express docs]: /integrations/cisco_mobility_express/ +[cisco_webex_teams docs]: /integrations/cisco_webex_teams/ +[ciscospark docs]: /integrations/ciscospark/ +[cloud docs]: /integrations/cloud/ +[cmus docs]: /integrations/cmus/ +[co2signal docs]: /integrations/co2signal/ +[coinbase docs]: /integrations/coinbase/ +[coinmarketcap docs]: /integrations/coinmarketcap/ +[comfoconnect docs]: /integrations/comfoconnect/ +[concord232 docs]: /integrations/concord232/ +[config docs]: /integrations/config/ +[conversation docs]: /integrations/conversation/ +[coolmaster docs]: /integrations/coolmaster/ +[counter docs]: /integrations/counter/ +[cover docs]: /integrations/cover/ +[cppm_tracker docs]: /integrations/cppm_tracker/ +[cpuspeed docs]: /integrations/cpuspeed/ +[crimereports docs]: /integrations/crimereports/ +[cups docs]: /integrations/cups/ +[darksky docs]: /integrations/darksky/ +[deconz docs]: /integrations/deconz/ +[decora docs]: /integrations/decora/ +[denonavr docs]: /integrations/denonavr/ +[deutsche_bahn docs]: /integrations/deutsche_bahn/ +[device_automation docs]: /integrations/device_automation/ +[device_tracker docs]: /integrations/device_tracker/ +[dht docs]: /integrations/dht/ +[digital_ocean docs]: /integrations/digital_ocean/ +[digitalloggers docs]: /integrations/digitalloggers/ +[discogs docs]: /integrations/discogs/ +[discord docs]: /integrations/discord/ +[dlib_face_detect docs]: /integrations/dlib_face_detect/ +[dlib_face_identify docs]: /integrations/dlib_face_identify/ +[dnsip docs]: /integrations/dnsip/ +[doods docs]: /integrations/doods/ +[dovado docs]: /integrations/dovado/ +[dsmr docs]: /integrations/dsmr/ +[dte_energy_bridge docs]: /integrations/dte_energy_bridge/ +[dweet docs]: /integrations/dweet/ +[ebusd docs]: /integrations/ebusd/ +[ecobee docs]: /integrations/ecobee/ +[eliqonline docs]: /integrations/eliqonline/ +[elkm1 docs]: /integrations/elkm1/ +[envisalink docs]: /integrations/envisalink/ +[epson docs]: /integrations/epson/ +[epsonworkforce docs]: /integrations/epsonworkforce/ +[esphome docs]: /integrations/esphome/ +[eufy docs]: /integrations/eufy/ +[everlights docs]: /integrations/everlights/ +[evohome docs]: /integrations/evohome/ +[fan docs]: /integrations/fan/ +[feedreader docs]: /integrations/feedreader/ +[ffmpeg docs]: /integrations/ffmpeg/ +[fitbit docs]: /integrations/fitbit/ +[flic docs]: /integrations/flic/ +[flux docs]: /integrations/flux/ +[flux_led docs]: /integrations/flux_led/ +[foscam docs]: /integrations/foscam/ +[fritz docs]: /integrations/fritz/ +[fritzbox docs]: /integrations/fritzbox/ +[fritzbox_callmonitor docs]: /integrations/fritzbox_callmonitor/ +[fritzbox_netmonitor docs]: /integrations/fritzbox_netmonitor/ +[fritzdect docs]: /integrations/fritzdect/ +[frontend docs]: /integrations/frontend/ +[frontier_silicon docs]: /integrations/frontier_silicon/ +[futurenow docs]: /integrations/futurenow/ +[gc100 docs]: /integrations/gc100/ +[geniushub docs]: /integrations/geniushub/ +[geo_rss_events docs]: /integrations/geo_rss_events/ +[github docs]: /integrations/github/ +[gitlab_ci docs]: /integrations/gitlab_ci/ +[glances docs]: /integrations/glances/ +[gntp docs]: /integrations/gntp/ +[goalfeed docs]: /integrations/goalfeed/ +[google docs]: /integrations/google/ +[google_assistant docs]: /integrations/google_assistant/ +[google_travel_time docs]: /integrations/google_travel_time/ +[gpsd docs]: /integrations/gpsd/ +[greenwave docs]: /integrations/greenwave/ +[group docs]: /integrations/group/ +[gtfs docs]: /integrations/gtfs/ +[harman_kardon_avr docs]: /integrations/harman_kardon_avr/ +[harmony docs]: /integrations/harmony/ +[hassio docs]: /integrations/hassio/ +[hikvision docs]: /integrations/hikvision/ +[hikvisioncam docs]: /integrations/hikvisioncam/ +[hipchat docs]: /integrations/hipchat/ +[hive docs]: /integrations/hive/ +[homeassistant docs]: /integrations/homeassistant/ +[homekit docs]: /integrations/homekit/ +[homematic docs]: /integrations/homematic/ +[homematicip_cloud docs]: /integrations/homematicip_cloud/ +[hp_ilo docs]: /integrations/hp_ilo/ +[html5 docs]: /integrations/html5/ +[http docs]: /integrations/http/ +[htu21d docs]: /integrations/htu21d/ +[hue docs]: /integrations/hue/ +[hydroquebec docs]: /integrations/hydroquebec/ +[ifttt docs]: /integrations/ifttt/ +[ign_sismologia docs]: /integrations/ign_sismologia/ +[image_processing docs]: /integrations/image_processing/ +[imap docs]: /integrations/imap/ +[imap_email_content docs]: /integrations/imap_email_content/ +[incomfort docs]: /integrations/incomfort/ +[influxdb docs]: /integrations/influxdb/ +[input_datetime docs]: /integrations/input_datetime/ +[input_number docs]: /integrations/input_number/ +[input_select docs]: /integrations/input_select/ +[input_text docs]: /integrations/input_text/ +[insteon docs]: /integrations/insteon/ +[iperf3 docs]: /integrations/iperf3/ +[iqvia docs]: /integrations/iqvia/ +[iss docs]: /integrations/iss/ +[isy994 docs]: /integrations/isy994/ +[itach docs]: /integrations/itach/ +[jewish_calendar docs]: /integrations/jewish_calendar/ +[juicenet docs]: /integrations/juicenet/ +[kaiterra docs]: /integrations/kaiterra/ +[keenetic_ndms2 docs]: /integrations/keenetic_ndms2/ +[keyboard docs]: /integrations/keyboard/ +[kira docs]: /integrations/kira/ +[knx docs]: /integrations/knx/ +[kodi docs]: /integrations/kodi/ +[konnected docs]: /integrations/konnected/ +[lastfm docs]: /integrations/lastfm/ +[lg_soundbar docs]: /integrations/lg_soundbar/ +[lifx docs]: /integrations/lifx/ +[lifx_legacy docs]: /integrations/lifx_legacy/ +[light docs]: /integrations/light/ +[linky docs]: /integrations/linky/ +[linode docs]: /integrations/linode/ +[linux_battery docs]: /integrations/linux_battery/ +[lirc docs]: /integrations/lirc/ +[liveboxplaytv docs]: /integrations/liveboxplaytv/ +[locative docs]: /integrations/locative/ +[lock docs]: /integrations/lock/ +[logbook docs]: /integrations/logbook/ +[logi_circle docs]: /integrations/logi_circle/ +[loopenergy docs]: /integrations/loopenergy/ +[luci docs]: /integrations/luci/ +[luftdaten docs]: /integrations/luftdaten/ +[lupusec docs]: /integrations/lupusec/ +[lutron docs]: /integrations/lutron/ +[lw12wifi docs]: /integrations/lw12wifi/ +[magicseaweed docs]: /integrations/magicseaweed/ +[mastodon docs]: /integrations/mastodon/ +[mcp23017 docs]: /integrations/mcp23017/ +[media_extractor docs]: /integrations/media_extractor/ +[melissa docs]: /integrations/melissa/ +[message_bird docs]: /integrations/message_bird/ +[metoffice docs]: /integrations/metoffice/ +[miflora docs]: /integrations/miflora/ +[mitemp_bt docs]: /integrations/mitemp_bt/ +[mobile_app docs]: /integrations/mobile_app/ +[mopar docs]: /integrations/mopar/ +[mpd docs]: /integrations/mpd/ +[mqtt docs]: /integrations/mqtt/ +[msteams docs]: /integrations/msteams/ +[mvglive docs]: /integrations/mvglive/ +[mychevy docs]: /integrations/mychevy/ +[mythicbeastsdns docs]: /integrations/mythicbeastsdns/ +[namecheapdns docs]: /integrations/namecheapdns/ +[neato docs]: /integrations/neato/ +[nest docs]: /integrations/nest/ +[netatmo docs]: /integrations/netatmo/ +[netgear docs]: /integrations/netgear/ +[netgear_lte docs]: /integrations/netgear_lte/ +[neurio_energy docs]: /integrations/neurio_energy/ +[niko_home_control docs]: /integrations/niko_home_control/ +[nilu docs]: /integrations/nilu/ +[nissan_leaf docs]: /integrations/nissan_leaf/ +[norway_air docs]: /integrations/norway_air/ +[nuheat docs]: /integrations/nuheat/ +[oasa_telematics docs]: /integrations/oasa_telematics/ +[ohmconnect docs]: /integrations/ohmconnect/ +[onkyo docs]: /integrations/onkyo/ +[onvif docs]: /integrations/onvif/ +[opencv docs]: /integrations/opencv/ +[openevse docs]: /integrations/openevse/ +[openhardwaremonitor docs]: /integrations/openhardwaremonitor/ +[opentherm_gw docs]: /integrations/opentherm_gw/ +[openweathermap docs]: /integrations/openweathermap/ +[orangepi_gpio docs]: /integrations/orangepi_gpio/ +[oru docs]: /integrations/oru/ +[osramlightify docs]: /integrations/osramlightify/ +[otp docs]: /integrations/otp/ +[owntracks docs]: /integrations/owntracks/ +[panasonic_bluray docs]: /integrations/panasonic_bluray/ +[panasonic_viera docs]: /integrations/panasonic_viera/ +[pandora docs]: /integrations/pandora/ +[persistent_notification docs]: /integrations/persistent_notification/ +[piglow docs]: /integrations/piglow/ +[pjlink docs]: /integrations/pjlink/ +[plex docs]: /integrations/plex/ +[pocketcasts docs]: /integrations/pocketcasts/ +[proliphix docs]: /integrations/proliphix/ +[prometheus docs]: /integrations/prometheus/ +[proxy docs]: /integrations/proxy/ +[ps4 docs]: /integrations/ps4/ +[ptvsd docs]: /integrations/ptvsd/ +[pushbullet docs]: /integrations/pushbullet/ +[pushover docs]: /integrations/pushover/ +[qrcode docs]: /integrations/qrcode/ +[raspihats docs]: /integrations/raspihats/ +[recollect_waste docs]: /integrations/recollect_waste/ +[recorder docs]: /integrations/recorder/ +[rejseplanen docs]: /integrations/rejseplanen/ +[remember_the_milk docs]: /integrations/remember_the_milk/ +[repetier docs]: /integrations/repetier/ +[rest docs]: /integrations/rest/ +[rest_command docs]: /integrations/rest_command/ +[rflink docs]: /integrations/rflink/ +[rfxtrx docs]: /integrations/rfxtrx/ +[rmvtransport docs]: /integrations/rmvtransport/ +[roku docs]: /integrations/roku/ +[rpi_gpio docs]: /integrations/rpi_gpio/ +[rpi_pfio docs]: /integrations/rpi_pfio/ +[saj docs]: /integrations/saj/ +[samsungtv docs]: /integrations/samsungtv/ +[scrape docs]: /integrations/scrape/ +[season docs]: /integrations/season/ +[sensor docs]: /integrations/sensor/ +[serial docs]: /integrations/serial/ +[sesame docs]: /integrations/sesame/ +[seven_segments docs]: /integrations/seven_segments/ +[shiftr docs]: /integrations/shiftr/ +[shodan docs]: /integrations/shodan/ +[shopping_list docs]: /integrations/shopping_list/ +[sinch docs]: /integrations/sinch/ +[skybeacon docs]: /integrations/skybeacon/ +[slack docs]: /integrations/slack/ +[sma docs]: /integrations/sma/ +[smappee docs]: /integrations/smappee/ +[smarthab docs]: /integrations/smarthab/ +[smartthings docs]: /integrations/smartthings/ +[smtp docs]: /integrations/smtp/ +[snapcast docs]: /integrations/snapcast/ +[snmp docs]: /integrations/snmp/ +[socialblade docs]: /integrations/socialblade/ +[solaredge_local docs]: /integrations/solaredge_local/ +[solarlog docs]: /integrations/solarlog/ +[soma docs]: /integrations/soma/ +[somfy docs]: /integrations/somfy/ +[songpal docs]: /integrations/songpal/ +[sonos docs]: /integrations/sonos/ +[sony_projector docs]: /integrations/sony_projector/ +[speedtestdotnet docs]: /integrations/speedtestdotnet/ +[spotcrime docs]: /integrations/spotcrime/ +[spotify docs]: /integrations/spotify/ +[sql docs]: /integrations/sql/ +[squeezebox docs]: /integrations/squeezebox/ +[startca docs]: /integrations/startca/ +[statsd docs]: /integrations/statsd/ +[steam_online docs]: /integrations/steam_online/ +[stream docs]: /integrations/stream/ +[stride docs]: /integrations/stride/ +[sun docs]: /integrations/sun/ +[supla docs]: /integrations/supla/ +[switch docs]: /integrations/switch/ +[switchmate docs]: /integrations/switchmate/ +[syncthru docs]: /integrations/syncthru/ +[synology_srm docs]: /integrations/synology_srm/ +[syslog docs]: /integrations/syslog/ +[systemmonitor docs]: /integrations/systemmonitor/ +[tahoma docs]: /integrations/tahoma/ +[ted5000 docs]: /integrations/ted5000/ +[telegram_bot docs]: /integrations/telegram_bot/ +[tellstick docs]: /integrations/tellstick/ +[template docs]: /integrations/template/ +[tensorflow docs]: /integrations/tensorflow/ +[tesla docs]: /integrations/tesla/ +[thermoworks_smoke docs]: /integrations/thermoworks_smoke/ +[thingspeak docs]: /integrations/thingspeak/ +[tibber docs]: /integrations/tibber/ +[tikteck docs]: /integrations/tikteck/ +[tile docs]: /integrations/tile/ +[timer docs]: /integrations/timer/ +[tplink docs]: /integrations/tplink/ +[tplink_lte docs]: /integrations/tplink_lte/ +[tradfri docs]: /integrations/tradfri/ +[transmission docs]: /integrations/transmission/ +[transport_nsw docs]: /integrations/transport_nsw/ +[trend docs]: /integrations/trend/ +[tts docs]: /integrations/tts/ +[twilio docs]: /integrations/twilio/ +[twilio_call docs]: /integrations/twilio_call/ +[twilio_sms docs]: /integrations/twilio_sms/ +[unifi docs]: /integrations/unifi/ +[upcloud docs]: /integrations/upcloud/ +[updater docs]: /integrations/updater/ +[uscis docs]: /integrations/uscis/ +[vacuum docs]: /integrations/vacuum/ +[vasttrafik docs]: /integrations/vasttrafik/ +[venstar docs]: /integrations/venstar/ +[vera docs]: /integrations/vera/ +[verisure docs]: /integrations/verisure/ +[vicare docs]: /integrations/vicare/ +[vivotek docs]: /integrations/vivotek/ +[vizio docs]: /integrations/vizio/ +[vlc docs]: /integrations/vlc/ +[w800rf32 docs]: /integrations/w800rf32/ +[wake_on_lan docs]: /integrations/wake_on_lan/ +[waqi docs]: /integrations/waqi/ +[waterfurnace docs]: /integrations/waterfurnace/ +[watson_iot docs]: /integrations/watson_iot/ +[waze_travel_time docs]: /integrations/waze_travel_time/ +[webhook docs]: /integrations/webhook/ +[websocket_api docs]: /integrations/websocket_api/ +[wemo docs]: /integrations/wemo/ +[whois docs]: /integrations/whois/ +[wink docs]: /integrations/wink/ +[withings docs]: /integrations/withings/ +[workday docs]: /integrations/workday/ +[wunderlist docs]: /integrations/wunderlist/ +[xiaomi_miio docs]: /integrations/xiaomi_miio/ +[xmpp docs]: /integrations/xmpp/ +[yamaha docs]: /integrations/yamaha/ +[yamaha_musiccast docs]: /integrations/yamaha_musiccast/ +[yandex_transport docs]: /integrations/yandex_transport/ +[yeelight docs]: /integrations/yeelight/ +[yeelightsunflower docs]: /integrations/yeelightsunflower/ +[yr docs]: /integrations/yr/ +[yweather docs]: /integrations/yweather/ +[zengge docs]: /integrations/zengge/ +[zeroconf docs]: /integrations/zeroconf/ +[zestimate docs]: /integrations/zestimate/ +[zha docs]: /integrations/zha/ +[zigbee docs]: /integrations/zigbee/ +[zone docs]: /integrations/zone/ diff --git a/source/_redirects b/source/_redirects index 454eddd2e52..59b2ef6626a 100644 --- a/source/_redirects +++ b/source/_redirects @@ -571,7 +571,6 @@ /components/notify.free_mobile /integrations/free_mobile /components/notify.gntp /integrations/gntp /components/notify.hangouts /integrations/hangouts -/components/notify.hipchat /integrations/hipchat /components/notify.homematic /integrations/homematic /components/notify.html5 /integrations/html5 /components/notify.huawei_lte /integrations/huawei_lte @@ -597,7 +596,6 @@ /components/notify.simplepush /integrations/simplepush /components/notify.slack /integrations/slack /components/notify.smtp /integrations/smtp -/components/notify.stride /integrations/stride /components/notify.synology_chat /integrations/synology_chat /components/notify.syslog /integrations/syslog /components/notify.telegram /integrations/telegram @@ -752,7 +750,6 @@ /components/sensor.htu21d /integrations/htu21d /components/sensor.huawei_lte /integrations/huawei_lte#sensor /components/sensor.hydrawise /integrations/hydrawise#sensor -/components/sensor.hydroquebec /integrations/hydroquebec /components/sensor.ihc /integrations/ihc#sensor /components/sensor.imap /integrations/imap /components/sensor.imap_email_content /integrations/imap_email_content @@ -1433,7 +1430,6 @@ /components/heos /integrations/heos /components/hikvision /integrations/hikvision /components/hikvisioncam /integrations/hikvisioncam -/components/hipchat /integrations/hipchat /components/history /integrations/history /components/history_graph /integrations/history_graph /components/history_stats /integrations/history_stats @@ -1458,7 +1454,6 @@ /components/hue /integrations/hue /components/hunterdouglas_powerview /integrations/hunterdouglas_powerview /components/hydrawise /integrations/hydrawise -/components/hydroquebec /integrations/hydroquebec /components/hyperion /integrations/hyperion /components/ialarm /integrations/ialarm /components/iaqualink /integrations/iaqualink diff --git a/source/images/blog/2019-10-0.101/components.png b/source/images/blog/2019-10-0.101/components.png new file mode 100644 index 00000000000..9cf4d6339a1 Binary files /dev/null and b/source/images/blog/2019-10-0.101/components.png differ diff --git a/source/images/blog/2019-10-0.101/confirm_dialog.png b/source/images/blog/2019-10-0.101/confirm_dialog.png new file mode 100644 index 00000000000..3843b1db80c Binary files /dev/null and b/source/images/blog/2019-10-0.101/confirm_dialog.png differ diff --git a/source/images/blog/2019-10-0.101/device_automation_device_picker.png b/source/images/blog/2019-10-0.101/device_automation_device_picker.png new file mode 100644 index 00000000000..03290fb4291 Binary files /dev/null and b/source/images/blog/2019-10-0.101/device_automation_device_picker.png differ diff --git a/source/images/blog/2019-10-0.101/device_automation_duration.png b/source/images/blog/2019-10-0.101/device_automation_duration.png new file mode 100644 index 00000000000..ce7f6cf4d2d Binary files /dev/null and b/source/images/blog/2019-10-0.101/device_automation_duration.png differ diff --git a/source/images/blog/2019-10-0.101/entity_registry_data_table.png b/source/images/blog/2019-10-0.101/entity_registry_data_table.png new file mode 100644 index 00000000000..fa6174cce30 Binary files /dev/null and b/source/images/blog/2019-10-0.101/entity_registry_data_table.png differ diff --git a/source/images/blog/2019-10-0.101/long-lived-access-tokens.png b/source/images/blog/2019-10-0.101/long-lived-access-tokens.png new file mode 100644 index 00000000000..4b23c95b60f Binary files /dev/null and b/source/images/blog/2019-10-0.101/long-lived-access-tokens.png differ diff --git a/source/images/blog/2019-10-0.101/yaml_editor.png b/source/images/blog/2019-10-0.101/yaml_editor.png new file mode 100644 index 00000000000..a39f7c11362 Binary files /dev/null and b/source/images/blog/2019-10-0.101/yaml_editor.png differ diff --git a/source/images/integrations/foscam/example-card.png b/source/images/integrations/foscam/example-card.png new file mode 100644 index 00000000000..7e65cc3e6f6 Binary files /dev/null and b/source/images/integrations/foscam/example-card.png differ diff --git a/source/images/supported_brands/airly.png b/source/images/supported_brands/airly.png new file mode 100644 index 00000000000..dd6cc4685fd Binary files /dev/null and b/source/images/supported_brands/airly.png differ diff --git a/source/images/supported_brands/apprise.png b/source/images/supported_brands/apprise.png new file mode 100644 index 00000000000..6dc869a1aea Binary files /dev/null and b/source/images/supported_brands/apprise.png differ diff --git a/source/images/supported_brands/hipchat.png b/source/images/supported_brands/hipchat.png deleted file mode 100644 index a6abc84fae3..00000000000 Binary files a/source/images/supported_brands/hipchat.png and /dev/null differ diff --git a/source/images/supported_brands/hydroquebec.svg b/source/images/supported_brands/hydroquebec.svg deleted file mode 100644 index c482ce108bf..00000000000 --- a/source/images/supported_brands/hydroquebec.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/source/images/supported_brands/msteams.jpg b/source/images/supported_brands/msteams.jpg new file mode 100644 index 00000000000..e411bfcea1b Binary files /dev/null and b/source/images/supported_brands/msteams.jpg differ diff --git a/source/images/supported_brands/oru.png b/source/images/supported_brands/oru.png new file mode 100644 index 00000000000..b06c29e787a Binary files /dev/null and b/source/images/supported_brands/oru.png differ diff --git a/source/images/supported_brands/sinch.png b/source/images/supported_brands/sinch.png new file mode 100644 index 00000000000..53a28454eac Binary files /dev/null and b/source/images/supported_brands/sinch.png differ diff --git a/source/images/supported_brands/solar-log.png b/source/images/supported_brands/solar-log.png new file mode 100644 index 00000000000..ed9a360ba74 Binary files /dev/null and b/source/images/supported_brands/solar-log.png differ diff --git a/source/images/supported_brands/stride.png b/source/images/supported_brands/stride.png deleted file mode 100644 index 4d91980ce8a..00000000000 Binary files a/source/images/supported_brands/stride.png and /dev/null differ diff --git a/source/lovelace/changelog.markdown b/source/lovelace/changelog.markdown index e78645b89d5..a20db478d2e 100644 --- a/source/lovelace/changelog.markdown +++ b/source/lovelace/changelog.markdown @@ -2,30 +2,66 @@ title: "Lovelace Changelog" description: "Changelog of the Lovelace UI." --- +## Changes in 0.101.0 +- ❤️ [entities card]: Add actions on rows [#4023](https://github.com/home-assistant/home-assistant-polymer/pull/4023) @iantrich +- ❤️ [entities card]: New `icon` option for title [#4024](https://github.com/home-assistant/home-assistant-polymer/pull/4024) @iantrich +- ❤️ [views]: New `visible` option [#3811](https://github.com/home-assistant/home-assistant-polymer/pull/3811) @iantrich +- ❤️ [views]: Custom badges [#3867](https://github.com/home-assistant/home-assistant-polymer/pull/3867) @iantrich +- ❤️ [views]: New `entity-filter` badge [#3867](https://github.com/home-assistant/home-assistant-polymer/pull/3867) @iantrich +- ❤️ [views]: New `state-label` badge [#3867](https://github.com/home-assistant/home-assistant-polymer/pull/3867) @iantrich +- ❤️ [views]: Add actions to `state-label` badge [#4028](https://github.com/home-assistant/home-assistant-polymer/pull/4028) @iantrich +- ❤️ [shopping list card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [plant status card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [markdown card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [alarm panel card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [picture card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [picture elements card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [picture elements card]: Add actions to `state-badge` element [#4028](https://github.com/home-assistant/home-assistant-polymer/pull/4028) @iantrich +- ❤️ [picture entity card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [picture glance card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [picture glance card]: New `show_state` option for entities [#3937](https://github.com/home-assistant/home-assistant-polymer/pull/3937) @iantrich +- ❤️ [weather forecast card]: New `theme` option [#4057](https://github.com/home-assistant/home-assistant-polymer/pull/4057) @iantrich +- ❤️ [vertical stack card]: New `title` option [#3839](https://github.com/home-assistant/home-assistant-polymer/pull/3839) @iantrich +- ❤️ [horizontal stack card]: New `title` option [#3839](https://github.com/home-assistant/home-assistant-polymer/pull/3839) @iantrich +- ❤️ New `double_tap_action` option [#3879](https://github.com/home-assistant/home-assistant-polymer/pull/3879) @iantrich +- ❤️ New `confirmation` option for actions [#4006](https://github.com/home-assistant/home-assistant-polymer/pull/4006) @iantrich +- ❤️ Theming: New CSS switch sytle: `switch-checked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch sytle: `switch-unchecked-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch sytle: `switch-unchecked-button-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- ❤️ Theming: New CSS switch sytle: `switch-unchecked-track-color` [#4017](https://github.com/home-assistant/home-assistant-polymer/pull/4017) @iantrich +- 📣 Upgrade MDI icons to 4.5.95 [#3977](https://github.com/home-assistant/home-assistant-polymer/pull/3977) @bonanitech +- 📣 Display card errors in YAML instead of JSON [#4018](https://github.com/home-assistant/home-assistant-polymer/pull/4018) @iantrich +- ⚠️ revert lovelace selectable text [#4095](https://github.com/home-assistant/home-assistant-polymer/pull/4095) @iantrich +- 🔧 [alarm panel card]: Visual accessibility changes [#3991](https://github.com/home-assistant/home-assistant-polymer/pull/3991) @mr-awk +- 🔧 [entities card]: Fix media row secondary info [#3957](https://github.com/home-assistant/home-assistant-polymer/pull/3957) @iantrich +- 🔧 [light card]: Fix name wrapping [#3972](https://github.com/home-assistant/home-assistant-polymer/pull/3972) @shbatm +- 🔧 [map card]: Fix zone icon visibility [#4085](https://github.com/home-assistant/home-assistant-polymer/pull/4085) @springstan +- 📣 [markdown card]: Add default text to card editor [#3960](https://github.com/home-assistant/home-assistant-polymer/pull/3960) @akargl + ## Changes in 0.100.0 -- 📣 [picture glance card]: New config `tap_action` and `hold_action` for `entities` (#3807) @iantrich -- 📣 [entities card]: New config `image` for `entities` (#3832) @iantrich -- 📣 [entity filter card]: Support for operators in `state_filter` and individual `state_filter` option for `entitites` (#3692) @iantrich -- 📣 [light card]: New config `icon` (#3771) @iantrich -- 📣 [picture entity card]: UI Editor (#3708) @iantrich -- 📣 [picture glance card]: UI Editor (#3709) @iantrich -- 📣 [history graph card]: UI Editor (#3782) @iantrich -- 📣 Add support for panels to cast (#3796) @bramkragten -- 📣 Allow for user text selection (Android Chrome not supported) (#3605) @iantrich -- 📣 add `state_filter` to picture cards (#3791) @iantrich -- 📣 Add a setting for vibration (#3813) @bramkragten -- 📣 Switch paper-toggle-button to mwc-switch (#3683) @iantrich -- 📣 New Action `url` (#3773) @iantrich -- 🔧 [map card]: Align background with tiles (#3858) @bramkragten -- 🔧 [map card]: Fix dark switch for map card editor (#3856) @bramkragten -- 🔧 [views]: Guard for null badges (#3841) @bramkragten +- ❤️ [picture glance card]: New config `tap_action` and `hold_action` for `entities` [#3807](https://github.com/home-assistant/home-assistant-polymer/pull/3807) @iantrich +- ❤️ [entities card]: New config `image` for `entities` [#3832](https://github.com/home-assistant/home-assistant-polymer/pull/3832) @iantrich +- ❤️ [entity filter card]: Support for operators in `state_filter` and individual `state_filter` option for `entitites` [#3692](https://github.com/home-assistant/home-assistant-polymer/pull/3692) @iantrich +- ❤️ [light card]: New config `icon` [#3771](https://github.com/home-assistant/home-assistant-polymer/pull/3771) @iantrich +- ❤️ [picture entity card]: UI Editor [#3708](https://github.com/home-assistant/home-assistant-polymer/pull/3708) @iantrich +- ❤️ [picture glance card]: UI Editor [#3709](https://github.com/home-assistant/home-assistant-polymer/pull/3709) @iantrich +- ❤️ [history graph card]: UI Editor [#3782](https://github.com/home-assistant/home-assistant-polymer/pull/3782) @iantrich +- ❤️ Add `state_filter` to picture cards [#3791](https://github.com/home-assistant/home-assistant-polymer/pull/3791) @iantrich +- ❤️ Add a setting for vibration [#3813](https://github.com/home-assistant/home-assistant-polymer/pull/3813) @bramkragten +- ❤️ New Action `url` [#3773](https://github.com/home-assistant/home-assistant-polymer/pull/3773) @iantrich +- 📣 Add support for panels to cast [#3796](https://github.com/home-assistant/home-assistant-polymer/pull/3796) @bramkragten +- 📣 Allow for user text selection (Android Chrome not supported) [#3605](https://github.com/home-assistant/home-assistant-polymer/pull/3605) @iantrich +- ⚠️ Switch paper-toggle-button to mwc-switch [#3683](https://github.com/home-assistant/home-assistant-polymer/pull/3683) @iantrich +- 🔧 [map card]: Align background with tiles [#3858](https://github.com/home-assistant/home-assistant-polymer/pull/3858) @bramkragten +- 🔧 [map card]: Fix dark switch for map card editor [#3856](https://github.com/home-assistant/home-assistant-polymer/pull/3856) @bramkragten +- 🔧 [views]: Guard for null badges [#3841](https://github.com/home-assistant/home-assistant-polymer/pull/3841) @bramkragten ## Changes in 0.99.0 -- 📣 [glance card]: New config `show_last_changed` for `entities` -- 📣 [glance card]: New config `image` for `entities` -- 📣 [views]: New config `image` for `badges` -- 📣 [views]: New config `icon` for `badges` -- 📣 [views]: New config `name` for `badges` +- ❤️ [glance card]: New config `show_last_changed` for `entities` +- ❤️ [glance card]: New config `image` for `entities` +- ❤️ [views]: New config `image` for `badges` +- ❤️ [views]: New config `icon` for `badges` +- ❤️ [views]: New config `name` for `badges` - 📣 Unused entities: Rewritten into a table view - 📣 Unused entities: Add entities to Lovelace cards - 📣 Lovelace background settings moved to theme `--lovelace-background` @@ -46,17 +82,17 @@ description: "Changelog of the Lovelace UI." - 🔧 Break long strings in notifications ## Changes in 0.88.0 +- ❤️ Theming: New CSS card style `ha-card-box-shadow` ([#2855](https://github.com/home-assistant/home-assistant-polymer/pull/2855)) - 📣 Disable toast notifications for successful operations ([#2700](https://github.com/home-assistant/home-assistant-polymer/pull/2822)) - 📣 Color Picker: Toggleable between segmented and continuous ([#2806](https://github.com/home-assistant/home-assistant-polymer/pull/2806)) -- 📣 Theming: New CSS card style `ha-card-box-shadow` ([#2855](https://github.com/home-assistant/home-assistant-polymer/pull/2855)) - 🔧 Fix login issue on Firefox ([#2860](https://github.com/home-assistant/home-assistant-polymer/pull/2860)) - 🔧 [light card]: Fix click events ([#2850](https://github.com/home-assistant/home-assistant-polymer/pull/2850)) ## Changes in 0.87.0 +- ❤️ Theming: New CSS card style `ha-card-border-radius` +- ❤️ Theming: New CSS card style `ha-card-background` +- ❤️ New system-health card in dev-info - 📣 MDI icons updated to [3.3.92](https://cdn.materialdesignicons.com/3.3.92/) -- 📣 Theming: New CSS card style `ha-card-border-radius` -- 📣 Theming: New CSS card style `ha-card-background` -- 📣 New system-health card in dev-info - 📣 UI Editor: YAML syntax support - 📣 UI Editor: Line numbers - 📣 UI Editor: Now supports columns on wide screens @@ -67,8 +103,8 @@ description: "Changelog of the Lovelace UI." - 🔧 Groups are now togglable ## Changes in 0.86.0 -- 📣 Lovelace is now the default UI for Home Assistant! -- 📣 New Lovelace [demos](https://demo.home-assistant.io/#/lovelace/0) page +- ❤️ Lovelace is now the default UI for Home Assistant! +- ❤️ New Lovelace [demos](https://demo.home-assistant.io/#/lovelace/0) page - 🔧 [thermostat card]: Fix sizing - 🔧 [gauge card]: Fix sizing - 🔧 [iframe card]: Fix card size @@ -80,23 +116,23 @@ description: "Changelog of the Lovelace UI." - 🔧 The [weblink row] opens links in new tabs ## Changes in 0.85.0 -- 📣 [map card]: New config `geo_location_sources` +- ❤️ [map card]: New config `geo_location_sources` +- ❤️ UI Editor for [picture card] +- ❤️ UI Editor for [weather forecast card] +- ❤️ UI Editor for [plant status card] +- ❤️ UI Editor for [media control card] +- ❤️ UI Editor for [iframe card] +- ❤️ UI Editor for [sensor card] +- ❤️ UI Editor for [shopping list card] +- ❤️ UI Editor for [light card] +- ❤️ UI Editor for [gauge card] +- ❤️ UI Editor for [markdown card] +- ❤️ UI Editor for [alarm panel card] +- ❤️ UI Editor for [thermostat card] +- ❤️ UI Editor for [entity button card] +- ❤️ UI Editor for [map card] - 📣 [alarm panel card]: Hide keypad if `code_format` attribute is not "Number" - 📣 [alarm panel card]: Hide code input field if `code_format` attribute is not set -- 📣 UI Editor for [picture card] -- 📣 UI Editor for [weather forecast card] -- 📣 UI Editor for [plant status card] -- 📣 UI Editor for [media control card] -- 📣 UI Editor for [iframe card] -- 📣 UI Editor for [sensor card] -- 📣 UI Editor for [shopping list card] -- 📣 UI Editor for [light card] -- 📣 UI Editor for [gauge card] -- 📣 UI Editor for [markdown card] -- 📣 UI Editor for [alarm panel card] -- 📣 UI Editor for [thermostat card] -- 📣 UI Editor for [entity button card] -- 📣 UI Editor for [map card] - 🔧 [thermostat card] Step logic updated to match more-info behavior - 🔧 [weather forecast card] Proper RTL support - 🔧 [thermostat card] Set minimum height of card @@ -122,11 +158,11 @@ description: "Changelog of the Lovelace UI." - ⚠️ [picture glance card]: `tap_action` and `hold_action` configurations changed. See docs. ### All Changes -- 📣 [weather forecast card]: New config `name` -- 📣 [thermostat card]: New config `name` -- 📣 [plant status card]: New config `name` +- ❤️ [weather forecast card]: New config `name` +- ❤️ [thermostat card]: New config `name` +- ❤️ [plant status card]: New config `name` +- ❤️ [picture elements card]: Added `state_image` and `camera_image` - 📣 [entities card]: Alert entity rows are now displayed as toggles -- 📣 [picture elements card]: Added `state_image` and `camera_image` - 📣 Ability to generate a Lovelace config if not present using available entities - 📣 UI Editor now in Beta with support for adding/removing views/cards - 🔧 [map card]: Fix `aspect_ratio` @@ -136,21 +172,21 @@ description: "Changelog of the Lovelace UI." - ❤️ New card type: `shopping-list` ## Changes in 0.82.0 -- 📣 New card type: `light` ❤️ -- 📣 Alpha release of UI Editor -- 📣 [entities card]: can be themed -- 📣 [gauge card]: can be themed -- 📣 [light card]: can be themed -- 📣 [thermostat card]: can be themed +- ❤️ New card type: `light` +- ❤️ Alpha release of UI Editor +- ❤️ [entities card]: New `theme` option +- ❤️ [gauge card]: New `theme` option +- ❤️ [light card]: New `theme` option +- ❤️ [thermostat card]: New `theme` option - 🔧 `!secret` and `!include` usage restored for manual editing, but are not supported with the UI editor ## Changes in 0.81.0 - ❤️ New card type: `alarm-panel` - ❤️ New card type: `thermostat` - ❤️ New card type: `entity-button` -- 📣 [glance card]: can be themed -- 📣 [glance card]: define columns within -- 📣 [entity button card]: can be themed +- ❤️ [glance card]: New `theme` option +- ❤️ [glance card]: New `columns` option +- ❤️ [entity button card]: New `theme` option - 📣 Long press is now supported - 📣 Update to allow the use of Custom UI. If you run into issues please disable Custom UI and test before reporting them. If the issue goes away without Custom UI please report this to the Custom UI developer as this is not officially supported. @@ -167,11 +203,11 @@ description: "Changelog of the Lovelace UI." - ⚠️ [glance card]: `turn-on` replaced with `call-service` ### All changes -- 📣 Add support for CSS imports - ❤️ New card type: `conditional-card` (Drop your [entity filter card] hacks) +- 📣 Add support for CSS imports - 📣 [picture glance card]: Add support for custom icons - 📣 [picture entity card]: Supports hiding name and/or state -- 📣 [glance card]: `turn-on` replaced with `call-service` +- ⚠️ [glance card]: `turn-on` replaced with `call-service` - 📣 [glance card]: Allow selectively empty names - 📣 [picture elements card]: `state-label` now supports prefix and suffix - 📣 [entities card]: Row dividers diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown index 9e6d4e0f253..46c17081047 100644 --- a/source/lovelace/views.markdown +++ b/source/lovelace/views.markdown @@ -41,7 +41,7 @@ views: required: false description: Renders the view in panel mode, more info below. type: boolean - default: "false" + default: false background: required: false description: Style the background using CSS, more info below. @@ -50,13 +50,241 @@ views: required: false description: Themes view and cards, more info below. type: string + visible: + required: false + description: "Hide/show the view tab from all users or a list of individual `visible` objects." + type: [boolean, list] + default: true {% endconfiguration %} -## Options For Badges +## Options For Visible -If you define badges as objects instead of strings (by adding `entity:` before entity ID), allowing you to add more customizations: +If you define `visible` as objects instead of a boolean to specify conditions for displaying the view tab: {% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string +{% endconfiguration %} + +## Badges + +### State Label Badge + +The State Label badge allows you to dislay a state badge + +```yaml +type: state-label +entity: light.living_room +``` + +{% configuration state_label %} +type: + required: true + description: entity-button + type: string +entity: + required: true + description: Home Assistant entity ID. + type: string +name: + required: false + description: Overwrites friendly name. + type: string + default: Name of Entity +icon: + required: false + description: Overwrites icon or entity picture. + type: string + default: Entity Domain Icon +image: + required: false + description: The URL of an image. + type: string +show_name: + required: false + description: Show name. + type: boolean + default: "true" +show_icon: + required: false + description: Show icon. + type: boolean + default: "true" +tap_action: + required: false + description: Action to take on tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`toggle`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +hold_action: + required: false + description: Action to take on tap-and-hold + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +double_tap_action: + required: false + description: Action to take on double tap + type: map + keys: + action: + required: true + description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)" + type: string + default: "`more-info`" + navigation_path: + required: false + description: "Path to navigate to (e.g. `/lovelace/0/`) when `action` defined as `navigate`" + type: string + default: none + url_path: + required: false + description: "Path to navigate to (e.g. `https://www.home-assistant.io`) when `action` defined as `url`" + type: string + default: none + service: + required: false + description: "Service to call (e.g. `media_player.media_play_pause`) when `action` defined as `call-service`" + type: string + default: none + service_data: + required: false + description: "Service data to include (e.g. `entity_id: media_player.bedroom`) when `action` defined as `call-service`" + type: string + default: none + confirmation: + required: false + description: "Present a confirmation dialog to confirm the action. See `confirmation` object below" + type: [boolean, map] + default: "false" +{% endconfiguration %} + +#### Options For Confirmation + +If you define confirmation as an object instead of boolean, you can add more customization and configurations: +{% configuration confirmation %} +text: + required: false + description: Text to present in the confirmation dialog. + type: string +exemptions: + required: false + description: "List of `exemption` objects. See below" + type: list +{% endconfiguration %} + +#### Options For Exemptions + +{% configuration badges %} +user: + required: true + description: User id that can see the view tab. + type: string +{% endconfiguration %} + +#### Example + +View config: + +```yaml +- title: Living room + badges: + - device_tracker.demo_paulus + - entity: light.ceiling_lights + name: Ceiling Lights + icon: mdi:bulb + - entity: switch.decorative_lights + image: /local/lights.png +``` + +### Entity Filter Badge + +This badge allows you to define a list of entities that you want to track only when in a certain state. Very useful for showing lights that you forgot to turn off or show a list of people only when they're at home. + +{% configuration filter_badge %} +type: + required: true + description: entity-filter + type: string +entities: + required: true + description: A list of entity IDs or `entity` objects, see below. + type: list +state_filter: + required: true + description: List of strings representing states or `filter` objects, see below. + type: list +{% endconfiguration %} + +#### Options For Entities + +If you define entities as objects instead of strings (by adding `entity:` before entity ID), you can add more customization and configurations: + +{% configuration entities %} +type: + required: false + description: "Sets a custom badge type: `custom:my-custom-badge`" + type: string entity: required: true description: Home Assistant entity ID. @@ -73,21 +301,62 @@ image: required: false description: The URL of an image. type: string +state_filter: + required: false + description: List of strings representing states or `filter` objects, see below. + type: list {% endconfiguration %} -### Example +#### Options For state_filter -View config: +If you define state_filter as objects instead of strings (by adding `value:` before your state value), you can add more customization to your filter: + +{% configuration state_filter %} +value: + required: true + description: String representing the state. + type: string +operator: + required: false + description: Operator to use in the comparison. Can be `==`, `<=`, `<`, `>=`, `>`, `!=` or `regex`. + type: string +attribute: + required: false + description: Attribute of the entity to use instead of the state. + type: string +{% endconfiguration %} + +#### Examples + +Show only active switches or lights in the house ```yaml -- title: Living room - badges: - - device_tracker.demo_paulus - - entity: light.ceiling_lights - name: Ceiling Lights - icon: mdi:bulb - - entity: switch.decorative_lights - image: /local/lights.png +type: entity-filter +entities: + - entity: light.bed_light + name: Bed + - light.kitchen_lights + - light.ceiling_lights +state_filter: + - "on" +``` + +Specify filter for a single entity + +```yaml +type: entity-filter +state_filter: + - "on" + - operator: ">" + value: 90 +entities: + - sensor.water_leak + - sensor.outside_temp + - entity: sensor.humidity_and_temp + state_filter: + - operator: ">" + value: 50 + attribute: humidity ``` ## Paths