From d17e21d1825a2e6f1c723fbf064f93e0c1abd7dd Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 14 Mar 2019 00:43:02 -0700 Subject: [PATCH 01/61] e --- source/_components/cppm.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/cppm.markdown b/source/_components/cppm.markdown index 735f74cbd48..edfcb33c8de 100644 --- a/source/_components/cppm.markdown +++ b/source/_components/cppm.markdown @@ -20,7 +20,7 @@ Supported platforms (tested): - Aruba ClearPass 6.7.5

-You must first creat an API client from here: https://clearpass.server.com/guest/api_clients.php +You must first create an API client from here: https://clearpass.server.com/guest/api_clients.php

To use this device tracker in your installation, add the following to your `configuration.yaml` file: From e4b3217f2b99803d8d1c2d773988bb8eb2887abf Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Thu, 14 Mar 2019 00:45:02 -0700 Subject: [PATCH 02/61] Fix URL --- source/_components/cppm.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_components/cppm.markdown b/source/_components/cppm.markdown index edfcb33c8de..9b6f86e9f71 100644 --- a/source/_components/cppm.markdown +++ b/source/_components/cppm.markdown @@ -20,7 +20,7 @@ Supported platforms (tested): - Aruba ClearPass 6.7.5

-You must first create an API client from here: https://clearpass.server.com/guest/api_clients.php +You must first create an API client [here](https://clearpass.server.com/guest/api_clients.php).

To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -40,11 +40,11 @@ host: required: true type: string client_id: - description: "The client ID from here: `https://clearpass.server.com/guest/api_clients.php`" + description: "The client ID from the API Clients page." required: true type: string api_key: - description: "Secret from here: `https://clearpass.server.com/guest/api_clients.php`" + description: "The secret from the API Clients page." required: true type: string {% endconfiguration %} From d44940a2330d7a954329879c0fe58ab4d4f7c67e Mon Sep 17 00:00:00 2001 From: Bas Veeling Date: Thu, 14 Mar 2019 13:08:19 +0100 Subject: [PATCH 03/61] Update sensor.mhz19.markdown to reflect new version of sensor and HASS.IO specifics (#8929) * Update sensor.mhz19.markdown * Fix layout --- source/_components/sensor.mhz19.markdown | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/_components/sensor.mhz19.markdown b/source/_components/sensor.mhz19.markdown index 5acbe55ce58..ec41066177a 100644 --- a/source/_components/sensor.mhz19.markdown +++ b/source/_components/sensor.mhz19.markdown @@ -17,6 +17,8 @@ The MH-Z19 is a small non-dispersive infrared sensor that can measure CO2 level. Check out the [Open Home Automation web site](https://www.open-homeautomation.com/2016/08/24/monitor-co2-levels-in-your-house/) for a quick guide how to connect the sensor to your PC or Raspberry Pi. +**Note:** the new version MH-Z19B requires the VIN to be connected to a 5V pin, rather than 3.3V. + ## {% linkable_title Configuration %} To use this sensor in your installation, add the following to your `configuration.yaml` file: @@ -44,3 +46,21 @@ sensor: - co2 - temperature ``` + +## {% linkable_title Raspberry Pi 3(+) GPIO UART and Hass.io %} + +To directly connect the sensor on the GPIO pins of a RPi, first append the following to `config.txt` in the boot directory: + +```text +enable_uart=1 +``` + +Then (after a reboot): you can setup the sensor using: + +```yaml + serial_device: /dev/tty.S0 +``` + +## {% linkable_title Calibration %} + +The MH-Z19B version of the sensor has Automatic Baseline Calibration enabled by default, which will calibrate the 400PPM level to the lowest measured PPM in the last 24h cycle. Currently the component does not allow turning this functionaly off. From 1e5ffc33a6496e2ef0fe7a20b0cdc920ab3fa10e Mon Sep 17 00:00:00 2001 From: emontnemery Date: Thu, 14 Mar 2019 18:59:32 +0100 Subject: [PATCH 04/61] Update python_component_mqtt_basic.markdown with new callback (#8932) --- source/_cookbook/python_component_mqtt_basic.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown index 0d208a38736..8012f01ab2e 100644 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ b/source/_cookbook/python_component_mqtt_basic.markdown @@ -39,9 +39,11 @@ def setup(hass, config): entity_id = 'hello_mqtt.last_message' # Listener to be called when we receive a message. - def message_received(topic, payload, qos): + # The msg parameter is a Message object with the following members: + # - topic, payload, qos, retain + def message_received(msg): """Handle new MQTT messages.""" - hass.states.set(entity_id, payload) + hass.states.set(entity_id, msg.payload) # Subscribe our listener to a topic. mqtt.subscribe(topic, message_received) From 531c348d5b93de87fb4eca227d2e459888adf048 Mon Sep 17 00:00:00 2001 From: Daniel Shokouhi Date: Thu, 14 Mar 2019 17:11:35 -0700 Subject: [PATCH 05/61] Add troubleshooting section (#8940) * Add troubleshooting section When I first attempted to setup the stream component in my dev environment I had the following errors that were only solved by installing these packages. When I moved to a second pi to do further testing I again needed to run the same commands to setup the component so this will be helpful to any user who has the same error. * Update stream.markdown --- source/_components/stream.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_components/stream.markdown b/source/_components/stream.markdown index 56453247b30..aa31666b926 100644 --- a/source/_components/stream.markdown +++ b/source/_components/stream.markdown @@ -25,3 +25,19 @@ To enable this component, add the following lines to your `configuration.yaml` f # Example configuration.yaml entry stream: ``` + +## {% linkable_title Troubleshooting %} + +Some users on manual installs may see the following error in their logs after restarting: + +``` +2019-03-12 08:49:59 ERROR (SyncWorker_5) [homeassistant.util.package] Unable to install package av==6.1.2: Command "/home/pi/home-assistant/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-udfl2b3t/av/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-ftn5zmh2/install-record.txt --single-version-externally-managed --compile --install-headers /home/pi/home-assistant/include/site/python3.6/av" failed with error code 1 in /tmp/pip-install-udfl2b3t/av/ +2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.requirements] Not initializing stream because could not install requirement av==6.1.2 +2019-03-12 08:49:59 ERROR (MainThread) [homeassistant.setup] Setup failed for stream: Could not install all requirements. +``` + +If you see this error you can solve it by running the following commands and restarting Home Assistant (commands do not need to be ran as the `homeassistant` user): + +``` +sudo apt-get install -y python-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libavresample-dev libavfilter-dev +``` From 29ff5d3d911e047ad4f442b7338705835491ad23 Mon Sep 17 00:00:00 2001 From: escoand Date: Fri, 15 Mar 2019 08:46:53 +0100 Subject: [PATCH 06/61] describe new attributes for rest notify (#8935) --- source/_components/notify.rest.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_components/notify.rest.markdown b/source/_components/notify.rest.markdown index e31d35a89c2..0a6876b178e 100644 --- a/source/_components/notify.rest.markdown +++ b/source/_components/notify.rest.markdown @@ -39,6 +39,24 @@ method: required: false default: GET type: string +verify_ssl: + description: Verify the SSL certificate of the endpoint. + required: false + type: boolean + default: True +authentication: + description: Type of the HTTP authentication. `basic` or `digest`. + required: false + default: basic + type: string +username: + description: The username for accessing the REST endpoint. + required: false + type: string +password: + description: The password for accessing the REST endpoint. + required: false + type: string headers: description: The headers for the request. required: false From 01759da4ef91dd0d78fa1136186624c82e575be8 Mon Sep 17 00:00:00 2001 From: Nacho Barrientos Date: Sat, 16 Mar 2019 02:18:27 +0100 Subject: [PATCH 07/61] Telegram_bot: Add option to allow fetching data from unverified SSL endpoints (#22067) (#8950) --- source/_components/notify.telegram.markdown | 15 +++++++++++++++ source/_components/telegram_bot.markdown | 5 ++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/source/_components/notify.telegram.markdown b/source/_components/notify.telegram.markdown index e0332e66e9c..140fe9a1347 100644 --- a/source/_components/notify.telegram.markdown +++ b/source/_components/notify.telegram.markdown @@ -186,6 +186,11 @@ authentication: required: false default: basic type: string +verify_ssl: + description: Set to false to skip the validation of the server's SSL certificate. + required: false + default: true + type: boolean keyboard: description: List of rows of commands, comma-separated, to make a custom keyboard. required: false @@ -255,6 +260,11 @@ authentication: required: false default: basic type: string +verify_ssl: + description: Set to false to skip the validation of the server's SSL certificate. + required: false + default: true + type: boolean keyboard: description: List of rows of commands, comma-separated, to make a custom keyboard. required: false @@ -309,6 +319,11 @@ authentication: required: false default: basic type: string +verify_ssl: + description: Set to false to skip the validation of the server's SSL certificate. + required: false + default: true + type: boolean keyboard: description: List of rows of commands, comma-separated, to make a custom keyboard. required: false diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index 0ec8fd7abec..784b8f26a76 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -51,7 +51,8 @@ Send a photo. | `password` | yes | Password for a URL which requires HTTP basic authentication. | | `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | -| `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | +| `disable_notification | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | +| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -69,6 +70,7 @@ Send a video. | `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false to send the message silently. iOS users and web users will not receive a notification. Android users will receive a notification with no sound. Defaults to False. | +| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | @@ -86,6 +88,7 @@ Send a document. | `authentication` | yes | Define which authentication method to use. Set to `digest` to use HTTP digest authentication. Defaults to `basic`. | | `target` | yes | An array of pre-authorized chat_ids or user_ids to send the notification to. Defaults to the first allowed chat_id. | | `disable_notification` | yes | True/false for send the message silently. iOS users and web users will not receive a notification, Android users will receive a notification with no sound. Defaults to False. | +| `verify_ssl` | yes | True/false for checking the SSL certificate of the server for HTTPS URLs. Defaults to True. | | `keyboard` | yes | List of rows of commands, comma-separated, to make a custom keyboard. Example: `["/command1, /command2", "/command3"]` | | `inline_keyboard` | yes | List of rows of commands, comma-separated, to make a custom inline keyboard with buttons with associated callback data. Example: `["/button1, /button2", "/button3"]` or `[[["Text btn1", "/button1"], ["Text btn2", "/button2"]], [["Text btn3", "/button3"]]]` | From 5037dd811bcd3a1bbbe9066876ca210c653a160a Mon Sep 17 00:00:00 2001 From: dilruacs Date: Sun, 17 Mar 2019 08:03:05 +0100 Subject: [PATCH 08/61] Update media_player.panasonic_viera.markdown (#8953) --- source/_components/media_player.panasonic_viera.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index bf7e4ed32f1..6aea293a770 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -30,6 +30,7 @@ Currently known supported models: - TX-P50GT60E - TH-32ES500 - TX-42AS650 +- TX55ASW654 If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/_components/media_player.panasonic_viera.markdown). From 8fbaca1ba14b1ef7ffd48bf40bca7cc7a5f553b9 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Sun, 17 Mar 2019 01:33:23 -0700 Subject: [PATCH 09/61] Remove hass.config from aws_lambda notify payload (#8966) --- source/_components/notify.aws_lambda.markdown | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/notify.aws_lambda.markdown index 7efd2f837c6..43baab3f033 100644 --- a/source/_components/notify.aws_lambda.markdown +++ b/source/_components/notify.aws_lambda.markdown @@ -56,7 +56,7 @@ name: default: notify type: string context: - description: An optional dictionary you can provide to pass custom context through to the Lambda function. The `context` dictionary (if any) is combined with the same data available at the `/api/config` HTTP API route. + description: An optional dictionary you can provide to pass custom context through to the Lambda function. required: false type: string {% endconfiguration %} @@ -82,15 +82,6 @@ The context will look like this: ```json { - "hass": { - "components": ["recorder", "logger", "http", "logbook", "api", "frontend"], - "latitude": 44.1234, - "location_name": "Home", - "longitude": 5.5678, - "unit_system": "metric", - "time_zone": "Europe/Zurich", - "version": "0.20.0.dev0" - }, "custom": { "two": "three", "test": "one" From 3eda03672f515fdc827bbea466aef46efdda2007 Mon Sep 17 00:00:00 2001 From: Jason Hunter Date: Sun, 17 Mar 2019 04:39:52 -0400 Subject: [PATCH 10/61] update generic ip cam docs for stream component (#8956) --- source/_components/camera.generic.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index 03bcac97578..7020e873a75 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -33,6 +33,10 @@ still_image_url: description: "The URL your camera serves the image on, e.g., http://192.168.1.21:2112/. Can be a [template](/topics/templating/)." required: true type: string +stream_source: + description: "The URL your camera serves the live stream on, e.g., rtsp://192.168.1.21:554/." + required: false + type: string name: description: This parameter allows you to override the name of your camera. required: false @@ -125,3 +129,15 @@ camera: still_image_url: http://example.org/your_image.png verify_ssl: false ``` + +### {% linkable_title Live stream %} + +To access a camera that has both a snapshot and live stream URL, utilizing the [stream](/components/stream/) component. + +```yaml +camera: + - platform: generic + name: Streaming Enabled + still_image_url: http://194.218.96.92/jpg/image.jpg + stream_source: rtsp://194.218.96.92:554 +``` From fff6b9ba288999f6799dfdadabb44d89b03fbd72 Mon Sep 17 00:00:00 2001 From: endor <1937941+endor-force@users.noreply.github.com> Date: Mon, 18 Mar 2019 18:55:30 +0100 Subject: [PATCH 11/61] Added information about additional sensors (#8970) --- .../sensor.trafikverket_weatherstation.markdown | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/sensor.trafikverket_weatherstation.markdown index 9fe7ef4d92a..f1aa584512e 100644 --- a/source/_components/sensor.trafikverket_weatherstation.markdown +++ b/source/_components/sensor.trafikverket_weatherstation.markdown @@ -39,6 +39,8 @@ sensor: - wind_direction - wind_direction_text - wind_speed + - precipitation_amount + - precipitation_amountname ``` {% configuration %} @@ -73,6 +75,11 @@ monitored_conditions: description: Rough wind direction in twelve variants (Swedish text). wind_speed: description: Average wind speed during the last 10 minutes. + precipitation_amount: + description: Amount of precipitation. + precipitation_amountname: + description: Amount of precipitation in thirteen variants (Swedish text). + {% endconfiguration %} ## {% linkable_title Obtaining API key %} @@ -120,4 +127,6 @@ sensor: - road_temp - humidity - precipitation + - precipitation_amount + - precipitation_amountname ``` From 982fed5e05b69dd30bbc01d64d6cdda84fd99d9e Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 19 Mar 2019 16:37:49 +0100 Subject: [PATCH 12/61] Remove Iliad Italy (#8977) --- .../_components/sensor.iliad_italy.markdown | 41 ------------------ source/images/supported_brands/iliad.png | Bin 2685 -> 0 bytes 2 files changed, 41 deletions(-) delete mode 100644 source/_components/sensor.iliad_italy.markdown delete mode 100644 source/images/supported_brands/iliad.png diff --git a/source/_components/sensor.iliad_italy.markdown b/source/_components/sensor.iliad_italy.markdown deleted file mode 100644 index 0da90fc8942..00000000000 --- a/source/_components/sensor.iliad_italy.markdown +++ /dev/null @@ -1,41 +0,0 @@ ---- -layout: page -title: "Iliad Italy" -description: "Instructions on how to integrate Iliad Italy's data inside Home Assistant" -date: 2018-12-29 00:00 -sidebar: true -comments: false -sharing: true -footer: true -ha_category: Sensor -logo: iliad.png -ha_iot_class: Cloud Polling -ha_release: 0.87 ---- - -The `iliad_italy` sensor will give you the data from [Iliad Italy's](https://www.iliad.it/) website inside Home Assistant. - -## {% linkable_title Configuration %} - -To enable this sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: iliad_italy - username: USERNAME - password: PASSWORD -``` - -{% configuration %} -username: - description: The username you use to check Iliad.it. - required: true - type: string -password: - description: The password you use to check Iliad.it. - required: true - type: string -{% endconfiguration %} - -The data is coming from the [iliad.it](https://www.iliad.it/) website. diff --git a/source/images/supported_brands/iliad.png b/source/images/supported_brands/iliad.png deleted file mode 100644 index 481a9585bc48e5d599c0c381be54e42a2cf1fa6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2685 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 From 839b4c7835db1a98be575798fb0b2928590b6a65 Mon Sep 17 00:00:00 2001 From: uchagani Date: Thu, 21 Mar 2019 03:55:54 -0400 Subject: [PATCH 13/61] add doc for date_time_iso to time_date component (#8995) --- source/_components/sensor.time_date.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.time_date.markdown b/source/_components/sensor.time_date.markdown index 69a49706e00..bfacabbd7c3 100644 --- a/source/_components/sensor.time_date.markdown +++ b/source/_components/sensor.time_date.markdown @@ -26,12 +26,13 @@ sensor: - 'time' - 'date' - 'date_time' + - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat' ``` -- **display_options** array (*Required*): The option to display. The types *date_time* and *time_date* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](http://www.swatch.com/en_us/internet-time). +- **display_options** array (*Required*): The option to display. The types *date_time*, *time_date*, and *date_time_iso* shows the date and the time. The other types just the time or the date. *beat* shows the [Swatch Internet Time](http://www.swatch.com/en_us/internet-time).

From 512d0e63fd94e7a02b6812edd3755622fa9742fa Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Thu, 21 Mar 2019 08:56:12 +0100 Subject: [PATCH 14/61] Add some minor changes of python-miio 0.4.5 (#8981) --- source/_components/fan.xiaomi_miio.markdown | 6 +++--- source/_components/light.xiaomi_miio.markdown | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown index 00f03b3d3f7..97e1747dab6 100644 --- a/source/_components/fan.xiaomi_miio.markdown +++ b/source/_components/fan.xiaomi_miio.markdown @@ -209,7 +209,7 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - Operation modes (silent, medium, high, strong) - Buzzer (on, off) - Child lock (on, off) -- LED brightness (bright, dim, off) +- LED (on, off), LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) - Attributes - model @@ -231,7 +231,7 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - Operation modes (silent, medium, high, auto) - Buzzer (on, off) - Child lock (on, off) -- LED brightness (bright, dim, off) +- LED (on, off), LED brightness (bright, dim, off) - Target humidity (30, 40, 50, 60, 70, 80) - Dry mode (on, off) - Attributes @@ -247,7 +247,7 @@ Air Fresh VA2 | zhimi.airfresh.va2 | | - button_pressed - use_time - hardware_version - - speed + - motor_speed - depth - dry diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index ffd09fa8d1b..2156d1c012a 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -89,7 +89,7 @@ Supported models: `philips.light.moonlight` * Brightness * Color (not implemented) * Color temperature (153...588 mireds) -* Scene (1, 2, 3, 4) +* Scene (1, 2, 3, 4, 5, 6) * Attributes - model - scene From d6268c40fe011a6c0ac92e90d583db5e6c6aed0e Mon Sep 17 00:00:00 2001 From: Penny Wood Date: Sat, 23 Mar 2019 03:56:30 +0800 Subject: [PATCH 15/61] Renamed to websocket_api (#8984) --- .../_components/sensor.api_streams.markdown | 29 --------------- .../_components/sensor.websocket_api.markdown | 35 +++++++++++++++++++ 2 files changed, 35 insertions(+), 29 deletions(-) delete mode 100644 source/_components/sensor.api_streams.markdown create mode 100644 source/_components/sensor.websocket_api.markdown diff --git a/source/_components/sensor.api_streams.markdown b/source/_components/sensor.api_streams.markdown deleted file mode 100644 index a264c4c41dd..00000000000 --- a/source/_components/sensor.api_streams.markdown +++ /dev/null @@ -1,29 +0,0 @@ ---- -layout: page -title: "API Streams Sensor" -description: "Instructions on how to count clients using the API streams within Home Assistant." -date: 2016-11-19 10:00 -sidebar: true -comments: false -sharing: true -footer: true -logo: home-assistant.png -ha_category: Utility -ha_release: 0.33 -ha_iot_class: Local Push -ha_qa_scale: internal -redirect_from: /components/sensor.api_stream/ ---- - -The `api_streams` sensor platform shows how many clients are connected to the stream API. - -## {% linkable_title Configuration %} - -To add the connected clients to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: api_streams -``` - diff --git a/source/_components/sensor.websocket_api.markdown b/source/_components/sensor.websocket_api.markdown new file mode 100644 index 00000000000..c08cfa18835 --- /dev/null +++ b/source/_components/sensor.websocket_api.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Websocket Connections Sensor" +description: "Instructions on how to count connected clients within Home Assistant." +date: 2019-03-20 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Utility +ha_release: 0.33 +ha_iot_class: Local Push +ha_qa_scale: internal +redirect_from: + - /components/sensor.api_stream/ + - /components/sensor.api_streams/ + +--- + +The `websocket_api` sensor platform shows how many clients are connected to the stream API. + +## {% linkable_title Configuration %} + +To add the connected clients to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: websocket_api +``` + +### {% linkable_title Note %} + +This replaces the previous `api_streams` sensor. From 5ff8591168988526b0f73078d2e1e0c00288a478 Mon Sep 17 00:00:00 2001 From: Leonardo Merza Date: Fri, 22 Mar 2019 16:06:17 -0400 Subject: [PATCH 16/61] added docs for reddit sort_by config (#8952) * added docs for reddit sort_by config * Added docs for reddit sort_by config --- source/_components/sensor.reddit.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/sensor.reddit.markdown b/source/_components/sensor.reddit.markdown index 11a2bdc4f8e..c4c73bd45e8 100644 --- a/source/_components/sensor.reddit.markdown +++ b/source/_components/sensor.reddit.markdown @@ -56,4 +56,9 @@ subreddits: description: List of subreddits you want to get data on. required: true type: list +sort_by: + description: Sort reddit posts by new, top, controversial, and hot. + required: false + type: string + default: hot {% endconfiguration %} From deaee14a254c23dac0259d4470eeb802761e5299 Mon Sep 17 00:00:00 2001 From: Anders Melchiorsen Date: Sat, 23 Mar 2019 17:09:52 +0100 Subject: [PATCH 17/61] Consolidate the netgear_lte configuration (#9000) * Consolidate the netgear_lte configuration * Address comments from review --- source/_components/netgear_lte.markdown | 96 +++++++++++-------------- 1 file changed, 43 insertions(+), 53 deletions(-) diff --git a/source/_components/netgear_lte.markdown b/source/_components/netgear_lte.markdown index c7fdac5a927..b50027d9d80 100644 --- a/source/_components/netgear_lte.markdown +++ b/source/_components/netgear_lte.markdown @@ -19,7 +19,7 @@ redirect_from: - /components/sensor.netgear_lte/ --- -The Netgear LTE integration for Home Assistant allows you to observe and control [Netgear LTE modems](https://www.netgear.com/home/products/mobile-broadband/lte-modems/default.aspx), currently only tested with LB2120. +The Netgear LTE integration for Home Assistant allows you to observe and control [Netgear LTE modems](https://www.netgear.com/home/products/mobile-broadband/lte-modems/default.aspx). There is currently support for the following device types within Home Assistant: @@ -34,13 +34,21 @@ The integration provides: ## {% linkable_title Configuration %} -To enable the component, add the following lines to your `configuration.yaml` file: +To enable the integration, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry netgear_lte: - host: IP_ADDRESS password: SECRET + notify: + - name: sms + recipient: "+15105550123" + sensor: + monitored_conditions: + - usage + - sms + ``` {% configuration %} @@ -52,63 +60,45 @@ password: description: The password used for the modem web interface. required: true type: string +notify: + description: A list of notification services connected to this specific host. + required: false + type: list + keys: + recipient: + description: The phone number of a default recipient or a list with multiple recipients. + required: false + type: string, list + name: + description: The name of the notification service. + required: false + default: notify + type: string +sensor: + description: Configuration options for sensors. + required: false + type: map + keys: + monitored_conditions: + description: Sensor types to create. + required: false + default: usage + type: list + keys: + sms: + description: Number of unread SMS messages in the modem inbox. + usage: + description: Amount of data transferred. {% endconfiguration %} ## {% linkable_title Notifications %} -The `netgear_lte` platform allows you to use a Netgear LTE modem for notifications from Home Assistant. The message will be sent as an SMS text message. +The `netgear_lte` integration allows you to use a Netgear LTE modem for notifications from Home Assistant. The message will be sent as an SMS text message. -```yaml -# Example configuration.yaml entry -notify: - - platform: netgear_lte - name: sms - target: "+15105550123" -``` - -{% configuration %} -target: - description: The phone number of a default recipient or a list with multiple recipients. - required: true - type: string, list -name: - description: Setting the optional parameter `name` allows multiple notifiers to be created. - required: false - default: notify - type: string -host: - description: The modem to use. Not needed if you only have one. - required: false - type: string -{% endconfiguration %} +If you do not supply `notify` configuration, a default notification service with no default recipient is created. ## {% linkable_title Sensor %} -The `netgear_lte` sensor platform allows you to monitor your Netgear LTE modem. +The `netgear_lte` integration allows you to monitor your Netgear LTE modem. -To enable the sensor, add the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -sensor: - - platform: netgear_lte - sensors: - - sms - - usage -``` - -{% configuration %} -sensors: - description: Sensor types to create. - required: true - type: list - keys: - sms: - description: Number of unread SMS messages in the modem inbox. - usage: - description: Amount of data transferred. -host: - description: The modem to use. Not needed if you only have one. - required: false - type: string -{% endconfiguration %} +If you do not supply `sensor` configuration, a default set of sensors is created. From 413e012109a57d782a32f01d8b8c8bf697ec5912 Mon Sep 17 00:00:00 2001 From: zewelor Date: Sun, 24 Mar 2019 13:03:56 +0100 Subject: [PATCH 18/61] Update docs for moving yeelight into component (#8845) --- ...ht.yeelight.markdown => yeelight.markdown} | 74 ++++++++++--------- 1 file changed, 38 insertions(+), 36 deletions(-) rename source/_components/{light.yeelight.markdown => yeelight.markdown} (89%) diff --git a/source/_components/light.yeelight.markdown b/source/_components/yeelight.markdown similarity index 89% rename from source/_components/light.yeelight.markdown rename to source/_components/yeelight.markdown index 08d7bbe420a..b98b53545cd 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/yeelight.markdown @@ -11,9 +11,15 @@ logo: yeelight.png ha_category: Light ha_release: 0.32 ha_iot_class: Local Polling +redirect_from: + - /components/light.yeelight/ --- -The `yeelight` light platform allows you to control your Yeelight Wifi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. +The `yeelight` component allows you to control your Yeelight Wifi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. + +There is currently support for the following device types within Home Assistant: + +- **Light** - The yeelight platform for supporting lights. ### {% linkable_title Example configuration (Automatic) %} After the lights are connected to the WiFi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: @@ -35,11 +41,10 @@ To enable those lights, add the following lines to your `configuration.yaml` fil discovery: ignore: - yeelight -light: - - platform: yeelight - devices: - 192.168.1.25: - name: Living Room +yeelight: + devices: + 192.168.1.25: + name: Living Room ``` {% configuration %} @@ -142,7 +147,7 @@ This component is tested to work with the following models. If you have a differ ## {% linkable_title Platform Services %} -### {% linkable_title Service `light.yeelight_set_mode` %} +### {% linkable_title Service `yeelight.set_mode` %} Set an operation mode. @@ -152,7 +157,7 @@ Set an operation mode. | `mode` | no | Operation mode. Valid values are 'last', 'normal', 'rgb', 'hsv', 'color_flow', 'moonlight'. | -### {% linkable_title Service `light.yeelight_start_flow` %} +### {% linkable_title Service `yeelight.start_flow` %} Start flow with specified transitions @@ -173,14 +178,13 @@ This example shows how you can use the optional configuration options. ```yaml # Example configuration.yaml entry -light: - - platform: yeelight - devices: - 192.168.1.25: - name: Living Room - transition: 1000 - use_music_mode: true - save_on_change: true +yeelight: + devices: + 192.168.1.25: + name: Living Room + transition: 1000 + use_music_mode: true + save_on_change: true ``` ### {% linkable_title Multiple bulbs %} @@ -188,13 +192,12 @@ light: This example shows how you can add multiple bulbs in your configuration. ```yaml -light: - - platform: yeelight - devices: - 192.168.1.25: - name: Living Room - 192.168.1.13: - name: Front Door +yeelight: + devices: + 192.168.1.25: + name: Living Room + 192.168.1.13: + name: Front Door ``` ### {% linkable_title Custom effects %} @@ -213,17 +216,16 @@ More info about transitions and their expected parameters can be found in [pytho ```yaml -light: - - platform: yeelight - devices: - 192.168.1.25: - name: Living Room - custom_effects: - - name: 'Fire Flicker' - flow_params: - count: 0 - transitions: - - TemperatureTransition: [1900, 1000, 80] - - TemperatureTransition: [1900, 2000, 60] - - SleepTransition: [1000] +yeelight: + devices: + 192.168.1.25: + name: Living Room + custom_effects: + - name: 'Fire Flicker' + flow_params: + count: 0 + transitions: + - TemperatureTransition: [1900, 1000, 80] + - TemperatureTransition: [1900, 2000, 60] + - SleepTransition: [1000] ``` From 084d7a98d78a5564087581a600c599ca11e50857 Mon Sep 17 00:00:00 2001 From: ktnrg45 <38207570+ktnrg45@users.noreply.github.com> Date: Mon, 25 Mar 2019 05:36:08 -0700 Subject: [PATCH 19/61] Update PS4 docs (#8976) --- source/_components/ps4.markdown | 98 ++++++++++++++++++++++++++------- 1 file changed, 77 insertions(+), 21 deletions(-) diff --git a/source/_components/ps4.markdown b/source/_components/ps4.markdown index 126981ce59f..299673e4b8e 100644 --- a/source/_components/ps4.markdown +++ b/source/_components/ps4.markdown @@ -16,7 +16,7 @@ ha_iot_class: Local Polling The `ps4` component allows you to control a [Sony PlayStation 4 console](https://www.playstation.com/en-us/explore/ps4/). -- This component supports controlling multiple PlayStation 4 consoles for your Home Assistant instance. Additional consoles can be added by running the configuration for the PS4 Integration again. +- This component supports controlling a single PlayStation 4 for your instance. Additional consoles may be supported in a future release. ## {% linkable_title Requirements %} @@ -41,7 +41,6 @@ The `ps4` component allows you to control a ## {% linkable_title Granting Port Access %} The PlayStation 4 component requires the use of privileged ports to work correctly, specifically UDP port 987 and TCP port 997. Depending on your OS of your Home Assistant instance you may need to allow usage of privileged ports manually. -Home Assistant installed on a Debian-type OS for example, such as *Debian*, *Hassbian*, *Rassbian*, and *Armbian* may require configuration.

Do not run your Home Assistant instance itself as root or with root/sudo privileges to accomplish this. This would create a security risk for your host system. @@ -53,9 +52,56 @@ There are varying methods to perform this, dependent on your OS that is running If your Home Assistant device is running Hass.io on HassOS, it does not require additional configuration.

-- Example for Debian-based and most UNIX operating systems: -`sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5` -Replace "/usr/bin/python3.5" with your path to Python that is running Home Assistant. +### {% linkable_title Debian-based %} +Home Assistant installed on a Debian-type OS may require configuration. This section is applicable but not limited to the following operating systems: + +- Debian +- Hassbian +- Rassbian +- Armbian +- Ubuntu + +In terminal run the following command: + +```bash +sudo setcap 'cap_net_bind_service=+ep' +``` + +Replace `` with your **system path** to Python that is running Home Assistant and/or your virtual environment if used. The path **should not** be a **symlink** or be **inside of a virtual environment**. + +Example: +```bash +sudo setcap 'cap_net_bind_service=+ep' /usr/bin/python3.5 +``` + +To find your system Python path: + +- Add the [System Health](https://www.home-assistant.io/components/system_health/) component to your `configuration.yaml`. In a web browser access your frontend and navigate to the about/logs page "http:///dev-info). In the System Health box locate the item **python_version** and note the value that is displayed. Then in terminal run: + + ```bash + whereis python + ``` + + Replace `` with the value for `python_version` that is shown in the System Health box. + + Example: + ```bash + whereis python3.5.3 + ``` + + The output which has the directory `/bin/` is likely your system python path which should look like this `/usr/bin/python3.5` + +- If Home Assistant is installed in a virtual environment, use terminal to `cd` to the root/top directory of your environment and run: + + ```bash + readlink -f bin/python3 + ``` + or + ```bash + readlink -f bin/python + ``` + + The output will be your system Python path. ### {% linkable_title Docker %} @@ -69,25 +115,23 @@ When running Home Assistant using Docker, make sure that the Home Assistant cont ## {% linkable_title Regions %} -Some titles will have different SKUs in the PlayStation Store database depending on your region. You must select your specific region in the setup in order to retrieve the cover art for such titles correctly. If you do not know your [region](https://www.gamerbraves.com/ps4-games-region-codes-explained/), reference the table below: +Some titles will have different SKUs in the PlayStation Store database depending on your region. You must select your specific region in the setup in order to retrieve the cover art for such titles correctly. The component will attempt to search other databases for the correct title if it cannot be found, although it will take longer to do so and may fetch an incorrect cover. + +| Available Regions | Unavailable Regions | +| --------------------------------------------------------------------------- | -------------------------- | +| Argentina, Australia, Austria, Bahrain, Belgium, Brazil, Bulgaria, | China, Japan, Phillipines, | +| Canada, Chile, Columbia, Costa Rica, Croatia, Cyprus, Czech Republic, | Serbia, Ukraine, Vietnam | +| Denmark, Ecuador, El Salvador, Finland, France, Germany, Greece, Guatemala, | | +| Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Israel, | | +| Italy, Korea, Kuwait, Lebanon, Luxembourg, Malta, Maylasia, Mexico, | | +| Middle East, Nederland, New Zealand, Nicaragua, Norway, Oman, Panama, | | +| Peru, Poland, Portugal, Qatar, Romania, Russia, Saudi Arabia, Singapore, | | +| Slovakia, Slovenia, South Africa, Spain, Sweden, Switzerland, Taiwan, | | +| Thailand, Turkey, United Arab Emirates, United Kingdom, United States | | -| Region ID | Locales | -| ----------- | ---------------------------------------------- | -| R1 | Bermuda, Canada, United States | -| | and U.S. territories | -| R2 | The Middle East, Western Europe, | -| | Central Europe, Egypt, | -| | French overseas territories, Greenland, | -| | Japan, Lesotho, South Africa and Swaziland | -| R3 | Southeast Asia, Hong Kong, Macau, | -| | South Korea and Taiwan | -| R4 | Australasia, Central America, | -| | the Caribbean, Mexico, Oceania, South America | -| R5 | The rest of Africa, Former Soviet Union, | -| | the Indian subcontinent, Mongolia, North Korea |

- Region 6: Mainland China, is not supported as there is no English database available. + The regions which are unavailable have no database or have formatting in the database which can not be used by the component.

## {% linkable_title Services %} @@ -115,3 +159,15 @@ Full list of supported commands. | `down` | Swipe Down | | `left` | Swipe Left | | `right` | Swipe Right | + +## {% linkable_title Troubleshooting %} + +### {% linkable_title Cover Art Issues %} +If you are running a game/title on your PS4 that does not display a cover or displays the incorrect cover, post an issue [here](https://github.com/ktnrg45/pyps4-homeassistant/issues). + +Be sure to include the following information: +- Your Country + +As well as the exact values for the following attributes found in the state of your PS4 entity. +- media_title +- media_content_id From 327dab3ebef27f5f686e62b33cf8c37eccf9ef87 Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Mon, 25 Mar 2019 05:38:12 -0700 Subject: [PATCH 20/61] Document 'turn_on_command' and 'turn_off_command' config entries (#9018) --- source/_components/androidtv.markdown | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/source/_components/androidtv.markdown b/source/_components/androidtv.markdown index 691948a810b..f6f56df304b 100644 --- a/source/_components/androidtv.markdown +++ b/source/_components/androidtv.markdown @@ -97,6 +97,14 @@ device_class: required: false default: auto type: string +turn_on_command: + description: An ADB shell command that will override the default `turn_on` command. + required: false + type: string +turn_off_command: + description: An ADB shell command that will override the default `turn_off` command. + required: false + type: string {% endconfiguration %} ### {% linkable_title Full Configuration %} @@ -104,8 +112,8 @@ device_class: ```yaml # Example configuration.yaml entry media_player: - # Use an ADB server to setup an Android TV device - # and provide an app name + # Use an ADB server to setup an Android TV device, provide + # an app name, and override the default turn on/off commands - platform: androidtv name: Android TV device_class: androidtv @@ -113,6 +121,8 @@ media_player: adb_server_ip: 127.0.0.1 apps: com.amazon.tv.launcher: "Fire TV" + turn_on_command: "input keyevent 3" + turn_off_command: "input keyevent 223" # Use the Python ADB implementation with authentication # to setup a Fire TV device and don't get the running apps From cbc57a6d3be4aba73f122fde073514a60c224915 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Mon, 25 Mar 2019 16:45:26 +0100 Subject: [PATCH 21/61] Add color support (#8982) --- source/_components/light.xiaomi_miio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown index 2156d1c012a..a1a01f6705f 100644 --- a/source/_components/light.xiaomi_miio.markdown +++ b/source/_components/light.xiaomi_miio.markdown @@ -87,7 +87,7 @@ Supported models: `philips.light.moonlight` * Power (on, off) * Brightness -* Color (not implemented) +* Color * Color temperature (153...588 mireds) * Scene (1, 2, 3, 4, 5, 6) * Attributes From 771b7d14256016332609c3f6e346a294837b1ec8 Mon Sep 17 00:00:00 2001 From: Pablo Mellado Date: Mon, 25 Mar 2019 17:06:11 +0100 Subject: [PATCH 22/61] Tfiac component documentation (#8910) * Tfiac component documentation for pull request Pull request URL: https://github.com/home-assistant/home-assistant/pull/21823 * Update source/_components/climate.tfiac.markdown Co-Authored-By: mellado * Update source/_components/climate.tfiac.markdown Co-Authored-By: mellado * Removed the redirection, not applicable here * :pencil2: Tweak --- source/_components/climate.tfiac.markdown | 34 ++++++++++++++++++++++ source/images/supported_brands/tfiac.png | Bin 0 -> 20377 bytes 2 files changed, 34 insertions(+) create mode 100644 source/_components/climate.tfiac.markdown create mode 100644 source/images/supported_brands/tfiac.png diff --git a/source/_components/climate.tfiac.markdown b/source/_components/climate.tfiac.markdown new file mode 100644 index 00000000000..186912e074f --- /dev/null +++ b/source/_components/climate.tfiac.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Tfiac AC" +description: "Instructions on how to integrate Tfiac AC devices with Home Assistant." +date: 2019-03-10 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tfiac.png +ha_category: Climate +ha_release: 0.91 +ha_iot_class: Local Polling +--- + +The `tfiac` component integrates several vendors air conditioning systems, that uses the Tfiac mobile app, into Home Assistant. App currently available at [Play Store](https://play.google.com/store/apps/details?id=com.tcl.export) and [App Store](https://itunes.apple.com/app/tfiac/id1059938398). + +## {% linkable_title Configuration %} + +To add your Tfiac device into your Home Assistant installation, add the following to your `configuration.yaml` file: + +```yaml +# Full manual example configuration.yaml entry +climate: + - platform: tfiac + host: IP_ADDRESS +``` + +{% configuration %} +host: + description: The IP address of your AC device. + required: true + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/tfiac.png b/source/images/supported_brands/tfiac.png new file mode 100644 index 0000000000000000000000000000000000000000..27c11faedf97029341692323725c08e368a511fd GIT binary patch literal 20377 zcmV*dKvKVnP)eMQnhmSRYY}kAM>DgMtbu zC`urN-kbE20)dbO(zDrm_wFrI&iVau=C-}Nsk^E7yk5(Oow;{r&U}0Me4)CktGcSI zx~i+Xs;j!HtGcRd?Jcn(+@wnNeTlBldX>w4mq5kTlEqsI-zWIsLxN-vGMXS*Fb~zS z3>izH+S>^}`556iXiK1TIaF7td0-(>=@e*Pefz6SEdm*@MWYc2L}L>o7DWdd;d#ih z7UB8-2tN53JP-fvckn)VAH8e|1PYx=BLfX?2Fv%rve3BZD20$V#Nz}=L?VH( zB(#jg*?v6sr}hCSg4|*YL`~xBvblMI96hR2)YQINWe_0v=%ej&Pd?dW@4RzcFl{=) z%$ayIrlJ=u#LA@6N~3$*(Sb)GB|5xi5xyB+@(`l%;_|<%OtAI{NmslBQSvTI--keB zX$8VT*0+EqQPCK3^cbvNcE{dvN37jp?@a8B31s%&Pu4D67?+!Gp5CY#B>3o~bG#Q`{8R3U#}U(~5_~cfKO|@ijaq^9 zuM+=;&m4LMg3Uq`AdqNmtr1&{hh26ja@5g8jyU3ft?jqFbfaUCVD{`=y(gYJ-<|Xy z)caEjx|TqwDbx_%MwNNiA9HJ{-h*X49i&oNO(PNGcgH#DBqGNi`?xiJ{BauvgJd6i zc#ij%JGS;;eIDK2h8BWA$SNgO*D5icr8Q`ctZTyB_fYIJzx-x=!l|Fy;21kcYXd+81G@9u4yCYBd0?skVOo|+G@E6pg zMM91lqt|N&ai4!)IENlu>p%ZOGBfdd{KqFDbbu$V<$Ow04ZBv?stQh98BawV_8FbH z=wjgH5>3-D_+Rq{WbUmrg zu7mv#KK#TUzr&X61%m{O7ESHD^vApChwjD;D-I;OYFbs-T4olFuY4l^xr0=)XPjEN zs9kP8rgfd0SUqQ*t(o*U0hHtBD-7bm75x`MjpyA*5i8cGKHD!*kou%ddf5lT& zFvrRjhE!K|4UI2SFt-qR8pIR-rswoCv^V{|5o^`N%02q1kfS$m&D{03Hhud(FGr6*ew7Gwl{H8(bEXj6Z&&NR@NAp9 z^ESM|t8kd|rG`}py}H(({~^kRvJUCbQ;Oi8J8++T;zeh>9X9vhe_sqMgUIpYoA_W> z(!Jq2{A_PnX)7u?xvD>^Ywa=#VH;ODS}K$C1NoV!6*g^Mmwn zFDF?1F{)qLh%Bkbt*+`?SK6f1+$sp`_W7i*`YocR>001R!=gddqQ$plZ@%?s`kj~2 zqEb^Ss-1e(wZ1wj67|7br2lyRnQHOkXNHAA+!tQ_1}{8LU|ZDw zKSl2GCk`J{2Jxp&74FL~-;$Yl9bT$?(3_~P>RPWEM?fx5)S^XO_^-T*^t~d+ZIwx?YeUu;A;wmL#t~S7hkEsO)Y7E~5A>NqYq7lf z^Xt@%X$TcSSs8IP2U1-d<{At_$e%GCf6knyRnj1KL&J16XD&fiV^r5htWkU+QFCV_ zx%hKF09^%jtFDb#qiDeY_#=Wjvsc~+(OTE38Sf)f%feY2)m2>^=Tbr- zQ{DJ8-a~8MvQiABj_B6RWy5@+HyuLJ)K=LCu?2!4H**!tU-e{$h z0UlR@&SqEagQ%|Vh)(uURUXx~Nof)RI@P;k2GPkRy1S=}uv=Z5mKy@-?jBZXVg;S; z=-%F{aaCPqPAtL#+X1B@@Ic7WF2Vd;h!DNaH~+tZHP{IOq*5!vATvKiEtp@0x2mp? za-{jmWKp4wF7p48KnWjc0m1Fl* zlCZi!*y!FY%7@yoe2Lf(F2>qnydiSSHs+Sr=*}+GCm$1hJQwxR9I`Jwhxha|C_s8Z zj|UcrC=iXC?^fP=rBH+hA;n6VSRa3kS~L$WDrbFE!@irAX(hZI+J~Aieu3J*-pOF0 zO;J;W95)vG5Hl7q9t5am%kW=%k?fs!k$K<&@Qpd9vl*lV#3M#->-ED|(E_wrX){$u zvBbdW>{aI2^p?sQDu`cs6{{5Yw=Cr7(L_!@h5AX880ES&KmG*vHrt^C&^aKhAR9XL z(pnD~L=Y@quwn)wP)M!&H78crCbulxNPWQGdYcliSp~Yt`x=gebIj2+e>98MS6?Oa zsZZf&d~`N|vx_K!O(Hw(gmOV80|KSPC!(iheHjFV5 zGHw{8_Xpn}uoQgoEfM9vp~wJv1-19yG`{y94S&2I5;dq^1sM;tw@#Qu2?2e*D|XU_ zkcAoN)wPnukWZv(LZ>r)!CI9_#e5z>8}lUy%)j+|8ZXoe?ZlALEbg<<(tY58#DD&C z?9Dbq=W?iIFCrGfYHr2ac_(lju;k#xJ&3@KefK*=zkW77ha5_7>bpp#q22*Mw{{;F z&_S>g4B}W|RXYg>e!-%!oyJGA5pEWpF*~fv&KOv4m>Ke}`9lPV+kiA*uR{bGA=eMa zQ9dFOL&z-N+i&Bad~%_QPUp=iA<$AHg}~Z&8{+4mkG0fu*Qxjk9ADi9A#4zu~SZ==CYq4w%U57FXg}dGHnMRj0MPg0n%A3&o9u3 zcrC3GBw`SW4&wMKbS90?X3@R9=miV#UVfSE(@zsT{y2(|=_FWDP!SuUlwnSx*KJ}= z4i=6TMUCKPA*0Mb3{Gc z!7Km8eey}N_ufn3c}AA&Aiuym=>S`JX3Fj{SWsFW3!(Ra!-IyE1x$QxSPH>D_+ zZT2%2LVXHN-IZ4p|IwwDK1n~{L@ixH+tyn{CW}>%4X@i_8Kx*|BfJ;G`ATOh`~{sNY5F%Bs~*VqWl8WwX)I59@FuYf_8ZL{TtbS;^v zH-(8(0#wCxv zNZ6rf8e*qiT8!+X;uwlN>wjtSb#q=FJYROe8C$6JthE2=`h-5IyoxYOcO^aI-F(rR&g7 z>UTk(W2K7_zD5#^aD6%=X# zBinCJ)6>tu*v%{N=cb!Ue)|GLc=fThqeaYkSX6I7WUDP{n)`7Wyiz84*e_GAb6NZ+ zo*;SRNqC_`6>%V98x5(Hc@JI=LMEyC)&bu{CWO2cW@zmD z7Z?AWzka{_5YZUU2`AE`HO&t_go?({8G%muh@2M+7X?lP9rjSAZoY}!4cAu&14=x) z#v5-o$~URjO3l`$#URo)9dLaft`Lm4<91?apIu4HU0oy(K7^h#&m?GT!%EmtXCq<} zljSy|a|mqU5~k4_>52%^DgW#4>fb<08A2E zYy0m<&9}aV)&ktzu=kQ|IwqC~C4Qg63!vrq*AV^w_bQ#i|NNVtbI(C_C6SIc;Y-IU zaWdCZ2vyqPyXaIKW15VR9S;MfV2CY2;V> ze|}B!SHCoVM8XNRFvWaHQXy+=7}42f%-8|GM<;t}A2kyEEY#RTR=c)on^@99r+j=j zpz(V@7?3%#|92b7lTR_YV6iY-;yA`6TB|?pj(@LjvsGKHt^l>yk@o1&Laosf}FS^87 z3kdmwOr}G(lS*_aC4}>N`_5*@B1V! z`zdl{>)_^B`0wP|Unld|znDmMZCG^>g3+lSA1sSesXmAeT>P22@+y*-{R9~SYNHiR zSycvEDW_bak}g`ohIb`;&!hf>gR#g)W=^5e3@!P{@swfEjA38L0A5s~3G zse~{LVMWm0SyUM9b%4m%&n0^FkwgwZ44PYwnY6mXUTbtNhi+Sj_u})o4?jZoU-uHY zexcY_G~_d!dd)OuK9Z!3Z$!>$KWFpJX`VI>(bP2PN7bC!wC%hL(#s+0tWf0{e@As1 zB*zg;+mIti4ET)QW5<$Pv&AQP84xr|$tBD+N07N6J=Bwn~ z&`Ht8K959J?Vd6ja(CZN?|J7Hpmjw;m^@D~L{-9;4e1;ztFh|qXqmSF(NI62xuv_h zSho4*=u8Hyr3RhvNB4bnA6PZDv?PW?GsNRe%4vo`|gk2eDEq^-PJ+zj4zRW>@jmnR6x{WjT4W;_&50=Ny{_O;2b`% zU~nIKgyiQwXQFUT4nl`ron0BUhQ>Q?Cvw)=1AeyWv&WHrkoEO6KlUg!H{LifbL4WkPdr8Pm}6+) zaXdXg_#y67Pa0upgG?9z1FOM7HrU992%<5HXpABoqsRset3e{`Ekw-JKL$W{@CtTA?%4h#%w%veXg-~WEOA5pUR zkpm7yjvpVE$%{h4rw)^(*#{<9`XKpO%x-&`JN1X&64=NX#E4LxGm^Fbch{FYo}N$d zFMd%>1`f5B%xf-P_&kq9JDN|_QtbxvBk0$&4bB4ES1hPRQ z8l)+uaPs98VaO|A@RlWR%a2SsW0bYU+KBx?M zX0Y#weoB314*BuObGuhRftakwI;9YQAnhY9ksPL}LUZ z;4fG}QVF>)ko+Vo0-XlbUUH%;`!6A7}Q`?70ZwxSg{0tuu_wMYp;XK(ux{+u~s z>Pm$}MgS**h(PZB_Xz&`-%9>_<{7-Vr-rc*tI8nDHEY6#9)S4CU#vJK{qtWK8$F_j zL3Gt}q6|6A!EeyPj(#Cw!I>ZqR5lB=%l9R#%V$IFi{YpyQ zDN~FCXy>6lgP{{K!bT^vXbtt3{bWGq@b3919p{{d$Yc<40a3do1huw=kuLfymO#WM zmaEY7=d*0*ooRXe39NngF8f674HNM{`Gnj$NM0E8KRkSkKjR>R^_;cqH%$*ww zHca`x9Hfvk56K#l2%!*ty+$-fg=t5~m)8%&T0c!JAx!vH`H;$@QyFxxk4^^YbU=_% zxM_t_j*&Qy1MxV@aZKIO7F!^i%Hd?Px87uE*&6De2@Sa{DuDR8=aTsC6_r7%KmD2Z zubhd@W{@?Ofh1j*LoM@Kz;X;aO2R^Sb+YVJ`w+Y{wc_-~|NI+g>}HSya$X4-_i9|% zwjpL2Q!geE2@4Uk2E@g!*k{{9)Wo6QHYQafvU2cAYp~WY4I)CPRDtk(bYO6BA*^N{ zGm6N`ClmY3XR&tL5z#uL1UpxtU60_s_Yot@ai{dMWw^6HF_Ox%hpygA2ne)ENN%wO z^|#$taZ2Xe>*&7tBGY(R?-;^bUl0=WrfEEiuyfEG(6-kejCk<{?1K*}p656;e>j`= z%{D{z_8=l^^`&UVzSMli9UxqWkSZ{IZ`D zJ>*ar2xP33UK3y+bU<-4L%+p)^G)+N%Nja$ENxH$Iz(V>dgINCQ`{RS(sS`e=CXAT zYt)M|oXdBO;HU??C!phyLuq|*GS-PF6wisrX?$o39fuwQJszS?7X6vkSsO?qdi^l5 zqz#^nPWq^fMmZLBzxfTL7B8al)i;QK{_`tjj^#P^!PMzPJhDa@^RL%K0j*Cxg&a}d z{}BB56*|82U31-9rzDuLo{qND24zGv7?Nl|eF7@<5em}ukb|kY@S7%3mQ`#D4XNw) z3Bv@GPUi?xMr$O#`3**OC#m`APoZ_hkl5S)D=&mkD~4{@w7^#oKk-DYe&rLoCrQ_l zA%uTJXeaCSTw;dc5n4LPS{u@76ZPwtovyj^e~qB=Ld_#KZYEi`CYJ3$XCGRbBvQ+? zsaU)2w*1fZrf}bSn_${Byx0GW@O<-feIGG$B-XauV(+mJ&iYvca;l zS#t?41Ox(|bP+)PU3XPDipej32|uf_>hl248xTdP02~_;_tBX&J*S*X!=(F*k6&9$ zGBmWC7YTujqC86_72h2;0J6y3}+d#fHHD$OAHKi2~|>`3ppSec37LU;c{BLl2o* z;7)YIBpwwYVll{N$vrTM;PqFr_T9g5IC9D##&3Y<3KylemfAOJ~3K~#QbQ=kq0tyeyi zMKpx1v}-zqM%s|eLKd_gp>^>RWOK1wPA^%)vduRKtq=`){MZe2oVK(P*(^Z@?ABIV z=FKyGGx@E4ZwAYD+12DZo8#-*?2^@FhIL!bn;&$k(Y=N_n(w}IK<3cx?ev|0J{>!b zr*HCP6lUU*Y>FV7qlVyX90Ox%IVL(~S*AogZfcKYqho5D8th^T$C}crv$FTK=2aVCn-y1_2xqibqGg4f() zNa%A3e5gC|1fmyyx8jt{^*7LQ)KLWU7a(F38(`KJKGlkxbEVN9ME2PSYs)Rm4)^`+ zrzUq(LpTp(Be2PJ0FfA43jD=OaQ}8^+2P3Pry-*e(|nSjrC4Q<)wxOpo%K+jCU($4 z)J%Gy;*`EiE}`dp-!VAOjkeJk>x+q!4@c+B+>3^O8FRgG5!nYP8|@K^uyLr5ylPa4 zsHv^(z2)X|>?zA4c8)4P2%oey)r{ccw zVwqNrT^J@qeIQff0@pStMK z_zn4Cl0t%?1J{^Fr3Hc-4E}CpW#(`Tv}Ynx@tt>pczFYq`_O~t`x4QOGu)|6*^Y%K zclDJ9w<}LTJB>%Qw&Jz7V=e70&OMQ((ILPRX1I_QVsYtUgD^vfm!*Y;@UjF7oUOMe zcHVjA$2+^|JnATOYC;ZKq$xkCR`=%6X>EE4lzGuwh25zNbT+JNU12AhFyUh$a{On@ zjs&x3qn33T#=Dz%&^!R-KP;i?Jc)dlr(qkZ<0^4CX_6zD}A*Nv)KZ&F4{L5Lxm3*J@nJW zzV%J)eLsb0YC%YW|LSWbC!9i%Od)Dlgl=MLs5D@G=J;|A_}HW9zEn7YDcC6Oa8v*h z0XdD|)eYHfSsQWu;vZs7eh|6i&N$m_1vPc3WD?!J4Ar)j;O#f@Kll*ulX(y*qsM)~ z$%4>`SV`aedRELijETY!Aunkh+mZc<&;9rPbe-}=)8y7%V@#nn(i{@fZUL|%y62wM z{Qer8!w(y@*C2DvHS}I`3B)jV_CPJ0rZWqj43JxHN$afHrl&n*%$_~>A~*G2NPvh$ zH;(AlAikXL%c5Lpnes5sV5sZMTRlDauf9s={zC40CE#N5z;eeAK+ z-Fy=*3m4Mz*kd?5?@SOtkW!HLP5-(W+S=>&)5KDNNe2MY(@!fmOJ02iKb6K7KqS7J z^-7}PK&n)LmKF_HUq$@lO9npO_YIiy;ziJx!F~B9`hIb#kzO%bIS8gS%o(~ya)%wt zkF~d>byx!D`neDL*kfs$F#|Pi8a)#x;LV(g=u=Q@nc0o& z0h0_5g9tNULxdNQqehk;&fRf`!4!{xP-^v$@Dv}^)x%s)A@{5iZ?AB8nu8>w&J-_NroI04@5kMUl4 z1t;_&(Hh!22E@@Hg=vUQ(7}Rf`spx#w@;5X#ksY6;Le50y3vtd=E9ko^!jbWb;Z zS6o5%57(pIT>lwMriiiDUKz1zT7WS~9A($|p;h@h4H40BMVG2<0l8SJFawJ}PYpy)~Ic)YX-{ zIFqN)d*2Gx^??X-$6jgZDEmw@X-Z-8FfjS5V+ zqt5hID9Zk!;EjGM1yUlLqKJA6QD-5WV&P95>f(s{I3oNln-k_(qhl%!JP*~=L+aY! z)3*Kgq<{09%4;|g8XlNL;wxV@sj;NL&K&pQ(I6q=TMhMy`ns}+NASr!Bd9I0T2evx znVO%bSN@Brtt}qNX6QL>0+}gO3Y;H==5c(#{Yac~2G&tWAxCe9nm&!>m%og=Xc1O( zi1QRE$m9wZU)~h6#*M>H)F2`e#8z7k94N@oH`4)|#L8Dn3t@s2Y9QfIhCgpsJYuHy zY7?;v7A+$A^Pl5Qo=p9{_m=Ok<52sTJJ9JqGXMTJWPFIP{T`d)@j;Yl1afOrd4;D^ z1YKPQs$Z@OLSJYgWj(ZlnoECxy;ljqSvE`Zlv7DhnNq}=QxMyFD`G#mh}e1OnGU(U z+C1V2;ul;n(P+J1Y8MiI(KZa%h1AVNT%K~>(7 z+!Va^0hndr1A|x>p*2tw#i|w1lO^-oYq$sOPs8nhCGy$h%lwkM`|d*@dmNc39!E;w z0Pbz@PI{<8L^M$zxd;@hqdlCsx(e{0GMrTFYOK~4YA?UC>~P<2eoJb~6r3pF~eTwd`Z{k3WVtYBWLHQe&DsYcH8-56dougl})YSwGrR zs8q^GTH%{G>q`y1nchowOAefOo|+2iyYP2LIxEXW+_Aa{+DFLL$ zbLlBS0-=0Ex<-A5fo+YZ~&cG1PiSd^w~uBGYKH-@4J8(fHI8$eni?{4siy1T)^pd*TVaci$nH`!OWqSYtK=%fh|q zUbNPT1SVX)7Nprm&LwCWMb^2fUZ0NRj%Q?Bn@LWFD|W#*>HE|F5xh48-1NXm@Ee2= z62_2J&!RF2P+?if(PL0uUB)Y35s;g}zW8WLam6852o z7SBm%=-F=%GBaj{K7t^z^_JAV_6D-GWk5-myXRigzxWCM{Ka^#n;&CSSZ>L!i3G;n z(^bteB<7a#Kxl(P+u1?Sk%!Un+zZ8XA`$8?xrDB>&qnuwY_N+?dd?D`SKY?NalT5pysk4hv|8}@@>=W z6@%!|pizooYWcj0=<%P+&u3hz@6ll$lr^GU>U-0sl|6w<_LLpZ+;<NKOlGa-*G?qAnd1&L9K(dA$9q$>DXor-4iC@FErh1vAy;nacOyv zi0(0-cBsO{qv}MQZO;d>@zs7i&%P%}$dzEYDw1Mb{8s3l8Es8$mD@|h)x-r>{c!<0$)A(}v^(zvr{ zp%yMejvHI#oge&w^xb!Z2V!|GmRcd4DAZ(8AI+j|%;tqxAskGbX5Lk=OCVBdf}Acy zwJa&AyW_7FO+Cpkok{M+7qAi-M_Ua+p`ozA%b75js8E8%oz7oMl+aexGHNiJTR!~? zz>&p4K(1Tx(TEK;08<)`nDq-=MN|}-aj-CH31f>e^Q}E)uBXBt7%PCNjkZK68-|!r zl|qKq5xM_NB7VU)ivg{D_AP*QZkSHGQU(7hGjU=$SMIZqxv&PZ>E$PVln-_U9WN2K z7LW*uN`=i%%7wZZvb7$oE^2xZ4m}vTd%t0x_uWT!$`s@8M`Itz8iw8e9SKZDLH zbokvmyq@-hl zYFlsJk2i)#iwqxVL)cZQlV(KOs30hdLix`>Pv>EW89$*VRxzk$Knaa5mwE$AKY>n~ z&~W3Uj}STT__8ozn=~egr~#bV&^URPgX+u>*=}3vZoUP%#TMvv#+V`qgy*6%S!67N zcA{bOOF(@+>izfWnQ$63)>D7o^*B3?N2N0mjhYJMyt=7PAfj2{?P~iQH^7LI`t@y*&gUe?s5Seu6*qJ%|8~J#@4xqyf=RDr8eLt(_fZ z@3K=$d(>MnojQ7$@(3dsQqvbJW z-apVQutB6W$^3=}BF7$Au00-jz|0e|1Vo}C0S|$Uv1~&Vi3Iki4-4}nE2pZh%|@B1 zStN#Y>@kSOMwTasBYW;i=I?hC0CL~`uy))DYs;;W@fwus2!%+#B)ka17r*e^h$e$Z zpSbuZbe}!}?SYK<-#-hH&EjW`qHcWlS)79pDS}n_#t*T=4o++LJ#e3V9BO^NUh>{Tua`#;j(`K07o#^l&$_#()aE*mX2K4^mdqmIqIwBe^9BO*x z5th~0qq87lo*DYFMx_I03aSPoia*&RVh(=MpT?D^0ZY_xHQ8YidIP zdxeff3@*g7`2~j4pUeZLP^mO3n<<#Kc~nWAHm%0dz4t;iHK9`}L@b7V zTr(5IacF68Hv@t^kIZ!w$v!xVV8J5L3RzQwHD+@nr=EiQ)Wc!?br?oIXl*#vH`Nmb z1`z^ls~zyB&ItXs;W4p>mqD}w8AHfE0@ovZ;|;_wy100}u8!t+-(}ezdmy?MvO$G& zHC9s+SPt}NkU-?Dv&&tXSsxnI3?Oj<<)XkD>drcyGU5cvX2g=fs@Zu;-ox zix<=P`Wpo|N|#vAPOKIY)*ZR8zDnO)ZxQKdU6&$y3P4A!Vzf&aL*UqUp@vNWHP`&! z_<~nlN$l*ik=t)a^pJzez4%fQa>px8%zQ@toH1VjIcgLUz;3O@YK~#IL~&YTW`NL$`oes184`>DblyBw z#q4sv2*y6(Aar*(>513lzVeDOxz0b&9PbM$Kb+dDf!hE5UqpR9x~r4!U3WDJ*NDJs za*$1NL}L`$7)3Tm&9ER_44y44Ur! zmm%P8*EsC?FyyLHsd3e663ERqD^t_n(@&YsSZkQ#f;!B$s{o-jA{w_E7a0U*e&^1+5Iti8C`IyzKf(v>h(IJPb8g^;$l~U-GTZDUA6-E(& z?I0VP$`Wv@t!-Gtf&FZ~GU=u>nPPybG!Z6b!N`?T78|jawHcwlw9EXob)%LgQSE6c z1&&a(1QNH4QN;dHRXNOw2q8@m2oy}v!s9PoI7lpZLt~Ia2*$#SK<3G(={@(Hio?#K zhtRrUA=c4Q8$ao%GOMX)|ZU^UPbx55yTL zsncKG`vEGID;bfyHfp1c)2g5(>?_OZDeUsnfUvF59CfJu=e>;X=%l5mht{?>TDyA~ zkxtVxXAZ(?ELv8j)zGDpfly;PC!S!;r>XCfeX-bOnfd;=AP9(l{_{xNHj2nM3?do~ z5vq>1um-Nwn_2ry=S;u9bHIN60wV#16z@i(L9{YRdkMoNeK+4i@2RI$613wG`_=`t zwk@Uh(jOK3&6S3fM)w8iWERq1DA_^~09oQJmVT$!2vOqbt*uJjuo78VPPsWEDm4gp zNrKI`5zz=D9z)dC8OWhn3{hJLZmDA$6f}si?LrVqXEhcO4~L}Y?!1%0^$Mk3xtHHS zEo+BF0%x~f3q)XMe1ta%sVKPNJu!yoKO0` zf8+1JKaEd3QPvOzAV!QNarITifAMqtN2ZYe+g?@3NDDvs{Y+efgxnc5?-@Kn!3R3P8KAF_nUV)VD4mJ^4ZGh6eC`qwwnL zO%-#ltK>UG*~LT&L5X;r*hwduLwoN-!w)Y-Zo3V^`~}FsMie} z?VZHkD#rM;LSJbz3@VU#fw3^=tff?t9r#H0<;Y4mh$GMD2+PFa_cAv@ro=9ayk6AHbh&S!4M125gJ5O1mU{jSL#A2 zR9NNaTkLCJEo8r=XPg0NoH5{S#?Cy0^d%SLc6Av|-PL8ja_eo)Ugki?t#!}?BMP}H zVOdx^?_72?cmMrG3f^c;tbPtFS|bt;RvdILOZS8cbndnr!Sw0NG3{-L$Fa8DlE@do zNb?(S;B3En2=N<+OuIT!AAejPA2|3BBWM(BXPBgAk?+_Nh47@Hc$ekAlhA&lE=)Ak zV_}kSvcX0)TJDMLm5RD=l9TUWvKAra6cB4~TxKkcR=axTtN{ktU++nv+ ztmI5IQfd5IAC-rZzxV}1bV{%JG^>?=&7o-(l>J4Z3oX2blawmX7b$w-7scm!tk8Z!(@3G?UC2^(euyiXI{O9+ujK_=wU{E zUq9yZDj&2!G{j8V0^n;!*9o7aBNn6Y=f6O`^)@=4uIK{~-v0pasb>utX&^38K=$6d z%db&eOXRS_&86HBq?>$;?V{3Amg zTa2UW-hUyYQB!uG^w8Zdx;uyN_E5?2C*==eWKe+ZpnEcCAaUWhkqz}_XJr2T7Zd)D z47E|CR)RtFI)c&ED(pp$A)4ceT4BK4f%I=Kr+vSDS=P`%*Pgr3d;a-kF29`2Z?B+x zzdcadEV53ZZ8PUi0Ny*(AYG2e9{=SpOf~OXGP6WpBShl`%}_B$B){2KiTSd;kr2A5 zLUb5DR$frR7M4KtR0G}VJ@YJ{QiwVS>f+`;;t52ZV@#^s{?C-R#1ljg`)uL!xyh4B z|Il<{I;WmY>)g52Uhr+4hT5{+O!VM`sJ;BRINNUx8E@z!gi4vh1k0lCy7KXTs15uR53 zNFh5dtpMHEhx@=}B4?al^h1s~0%!Cn)Y7GhbRWbLrW0wn9wo%kv$iy|;l;=irCs*@ zG+aH@)`Vu`=z*M!VrVS1#q6=;KnP@GBUWuK8KB{dpT|DT%rW;~c_j?h+M$!J!1W4z z=(=vi{Eo=giaJ^=)*!-(t_P#x!h%9S zluC6`qg5Ishk#y@(C#v!5eQ9Or3`J!b_nvmX#7YEVdGW_r_}k@4bij)Klo*q%kw? z2x{>n-1{HIz3b!ID zUw8rSx>#d2LyjGXc0GbwvvBYH8}5VuG3KOPgIV`lnEmR`p@90|UXHbEdF0A}?KRT3 z-w}3{+Cv{zlY{VW>FV5bj|+nZb0%sp!+N>$gH-Y%(f(!YVWdSTbEp7XraXl6+0T`o z()ZJ!lDy&yEC)ng+!WvqOQ=_Yrx1}^NYo%wDHMIC0-%sI)M!s3rGtnyf>x;RcGEZR z3`7K`5%drA%T$I%nLRh6ZFLipq4O zm1idQDi6{D$}7^2)zS>DBao2@!JQ!4hd zbC+H4Kb(n(35dsr{JqI&jMlc4STTbvoHJ3o>nVe*BohgxP{{ymL<`Mx=M^J9p@Z6e zzz|-hH59LAp_~U4p{7|K7_0yk`yyCZ5aS2gp$h!vx8WBy< z+Sa>*Iq5;L;Uj5k9rk{MzpR74pZ~lDVrn6<`|;MHd-SVSv}1mOtebmTvT_+9A}+P!y}JYFh}s*v-Dnh zg=yuFimC~TB*wK||RLe1Q=7n9Xw$)+y*j~vt0XtH_ zQm&B7x&-4(hhw{f5NT3{DaloVOv+<>NgLt2=#Df&28hRLyzwR)?zp{D#(XlL_9Krp zxubf!1mA0@DMlj(nE75A#Tq>lwd7;S^=-&1r1;?V7P2Rxg9rkKFa*Fol6|MUPlc%ZIRHGsa( ze_pv|S@8j(OgtzIT#y4?i;{Z^FzwBv3@JPy`Cz>E$E z;a7s;}|59YnnWBxrAKrschvh>;`9n8ey`cbeayiU0g_q%Qvr?$b}3kY@m7 z!ob-8^r@C-f$QZ2;!68B1~^@;gnnG^+i_P;$BF@z-=Oy~5cE`b;2SBNs*8Lk<8h*A zokjfIbIcIdL9*}J8z<8Jo$r~}C{;n6H7#*2q$7fhZ_Uvaz4E2#E>-^ zf{rfQx89nD$&<^+xrOF{efSYH9{Oo?R~P==j zwX}`@-`=?fS5;kc{J-`-=j1+;dx=2E142lGd7`EGz@jK%kX9HKTYTel5XZK5#u@!m zXZk^>9oy-&Q<#CN{or(p9qkP2^f6V69b3mo?N}ATD4>E62*!jYeJ0dQi37-VrhsH+q4 z?hX_b@t9k{r#KGPKY;EvYv5bE7U7p(b~|x~do4k8=D=)ggW1*wUvhSDxUrju@v-s< zf>gUC;xMBfuX0Xq(a35bAnGtf*>HCxFF2!`@-v63h6 z3bC*;1BL++cED#GL|=IYF~1KbJ9fZ#_dP>}k|i3=7!!#ivgayd4BhXJf?X$cNQWlgfe4^oxmhO#TJB5fC=c?x)rA?=b`@x--q+X5nUW-JYT_? z0oZT8iN4!zN9Wwx=zYKy2U+A+_OeWGjmDYK`yyt@iuog35TmXR_R%AdAH0Ql#;LbL zu_&CH%Jdl^(}oxTxaTy^Y}<~3ZQEh3UJdiI%U~?O99C;9P!a}$!HkNldE+>#bp$D9 zh6>1AGl|E6lP3}X{By+j?}z=)JFx%qXE;5l-H9#(fCZ3AZZTBQq*V(hPCwXo7J;ze z5AykEz)7DT|Pr z-6g;2ezwqb;wX0zfdC0|x6Rm5aPJ@zdyg}+5|KA`UL@SMoCJ%J%f-r(lqp9HG8hF9 zMrTglR#t8RZ<#=mcbLeI0=Aoc4eTB4^L%7J*_}C&B~q86?C{o8SYq~`BX;H#YCPa#AZJwE&R7IbOBt4Nxs3ay)O}F8^PRqiLTSH?tiPT4YUne_RIMEnuC;(5 zcgJ|5(WXd!c_yTag`Q0yvatcqrw3=A8?GEA&%8>*P5S1SnbyYJ;75st3=*!m2%t2x zK*=7NwL(YaeU6hEOp?cNrIEG@?$wY_BxcBKfsEWOLY%msw}V%CDUnE~#Gq6v3rb=E zF7drY2F2uVfwY{alvp|S+AEot%UwetP8)P`?Ly}Gq`FZf4KSjjYGi?k(%GO;$wX$y znVP{oFtik}n|>s>ea@%F(!Zbm@$6HC=kfy5SAw%UVU7)wXLUVuekbes)Bm1#r=OZ5 zF9SevaUQc+p%5q>hMvdK%(O9)W`#!LEtJ$%&X8XrfFT#w!>FyxEudio`@Y^*QCII(;3D0cngX>T3PxQ$ zRAgYos01PxRQJi&R;VF`GId;{nZ6byz3(!}O)%cv0;8_3dsG4u73D{aOD_Q%CX6gW zXp5qmj%4>+2?iTQFfP9gqO9zVQ3(V9WJBXYYxR1Fvp<7l{a5x0W_3I&PYL=gqKmb54y%@Bh9tLNp6x3*@Z!BW40#($) zTDtV?LHvkUtFC#VXyYbGah~-bG@2>oW(gu#8*TzsS8qNqff%K;{$O3V_83>y!C*(X zu4bBB55QmtT(Jm6H{JkQR`&bzvmgMB<;&+=cisaMmbM|9X>L6LK@#S7Z-cpF#faTG zFM&88?IUB&>Ro7E2H_>P)@Y_<>>-r{)o?Mab?g3~uf@rm!RKG#=p$QT5A=F@gtR@; zOdljOEPnvT)7#;{dvji$cT{^3&6O*6V&!#^%E>7XZCNx^#ZnCI=nQ5D&K1|fw{Gn} z^S#!n1R~1kZS_C&;FGxMO3*L?yB3LNO2!_nARE4kz#~8UBh4#cHJYG)l>dk?i2e0% zU6DtB2D0MhYYgbS_dZs;pGBM*jy|NTnPdbQCIM)> z8Q~Y6r}Mkk7!Z8wsSm{sn;nBhGA7aPm1Z)KtXy$iyOBe``E}R%UT;kHv5U%zi{hVr z`dXx<yw823F4|3h2fkhQf}j?MMQ816V;65X@6H~Nd8K^@u$ zNC`&^L^DQW$aQR%90y$8h~T4-L0ob9Jgd2-bL`@oF(!8KP`~faJ3__VcEDKoJqQSx zBNkWD@rq`6>yYXtnKPu8ii4OSR&C&t?K@C(*If(f>z-3%dk^CPA3si1S;_X>Z$D%2 z`N#eC%e!G8co!0cc-B<#a3h08ldE5l7l<=6jD~N(SbrnTwze0o72mo^b##!ZsNg9t zkZcBbzx1EMUAr!E-g*t_IRz%lC^4;Z}-wDDw z{Mk->&z>#zi@V|Me;-cwNe~niC>hLa3U}l`S7gG?Vg(s4gJ`-4a>I?vcm29OvbOHJ z@qd;H#yNEOe*5*;pNZ~y74+dgIA46^HYYO_Q8FSKu7R~XR=9|)n1kSzCa7)(T9=?` z^=epa*8E)7)jl?HVxI)K<3u3#-*@A(s&X*;{GZ@_@ILV65vZTB00Aqz^S75p4FkOpIT58>sF<= zcKUlrbhLykEx-^;0m6g~%>kPdj!^_rSp}nY3CxBjh$XGy&J)$f(xpYBe(@n9;>mfg zDS&hEAj$fA=4hlzb)1~<96J^O^NZ?>&p~z^_IvLk-u^LE=Lrxi@R@!HCLlHdip4-A zz;*<2dk{nttm1%jporjlZ8YSCf%ImW(V6|sK`AvjF~9&R@23D*7!Z~PX$GLcfRJE+ z5KI6Cf?y#*bLPTW+yHCYGO%SqE?fwwuXlyn*ccS$6{jc|_}|nJ{&aXZ1CcvaPfscO z`)^@F6L)mXMm&yq`zPSuUQm$_@uNqs1b`Eb zxV3*Z`E?X2fg+#VVTe2v%@E-W0Mi78!yumz6bOKPejpTvtf>J8BcNb0WMd;>8W2@g zHZcxUz`u>cvur93?o1Ap?VpfrxKNK<8jVJy(P%Upjb_I3e}Wk}*P9PQcK`qY07*qo IM6N<$g7nCdM*si- literal 0 HcmV?d00001 From 79111d5757104e8b488e739ff2dd75c5d7dca820 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Mon, 25 Mar 2019 11:10:00 -0500 Subject: [PATCH 23/61] Update default tap_action (#8884) From 860f4723bde9f49ab92814598d373720926023bc Mon Sep 17 00:00:00 2001 From: dilruacs Date: Mon, 25 Mar 2019 17:13:35 +0100 Subject: [PATCH 24/61] Update media_player.panasonic_viera.markdown (#9007) --- source/_components/media_player.panasonic_viera.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index 6aea293a770..2a089d6e019 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -59,6 +59,11 @@ mac: description: The MAC address of your Panasonic Viera TV, e.g., `AA:BB:CC:DD:99:1A`. required: false type: string +app_power: + description: Set to `true` if your Panasonic Viera TV supports "Turn on via App". + required: false + default: false + type: boolean name: description: The name you would like to give to the Panasonic Viera TV. required: false From 52133335345ce342b66994ab3d2cb91d96683884 Mon Sep 17 00:00:00 2001 From: lapy Date: Mon, 25 Mar 2019 17:55:05 +0000 Subject: [PATCH 25/61] Add traccar events documentation (#9035) * Add traccar events documentation * :pencil2: Tweak * Add traccar documentation ref * Fix error Co-Authored-By: lapy --- .../device_tracker.traccar.markdown | 84 +++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/source/_components/device_tracker.traccar.markdown b/source/_components/device_tracker.traccar.markdown index d76b6eb7d26..c3339cc32e7 100644 --- a/source/_components/device_tracker.traccar.markdown +++ b/source/_components/device_tracker.traccar.markdown @@ -64,6 +64,79 @@ monitored_conditions: description: Additional traccar computed attributes or device-related attributes to include in the scan. required: false type: list +event: + description: "Traccar events to include in the scan and fire within Home Assistant. *NOTE* For more info regarding Traccar events please refer to Traccar's documentation: https://www.traccar.org/documentation/events/." + required: false + type: list + keys: + device_moving: + description: "**deviceMoving** event." + required: false + type: string + command_result: + description: "**commandResult** event." + required: false + type: string + device_fuel_drop: + description: "**deviceFuelDrop** event." + required: false + type: string + geofence_enter: + description: "**geofenceEnter** event." + required: false + type: string + device_offline: + description: "**deviceOffline** event." + required: false + type: string + driver_changed: + description: "**driverChanged** event." + required: false + type: string + geofence_exit: + description: "**geofenceExit** event." + required: false + type: string + device_overspeed: + description: "**deviceOverspeed** event." + required: false + type: string + device_online: + description: "**deviceOnline** event." + required: false + type: string + device_stopped: + description: "**deviceStopped** event" + required: false + type: string + maintenance: + description: "**maintenance** event." + required: false + type: string + alarm: + description: "**alarm** event." + required: false + type: string + text_message: + description: "**textMessage** event." + required: false + type: string + device_unknown: + description: "**deviceUnknown** event." + required: false + type: string + ignition_off: + description: "**ignitionOff** event." + required: false + type: string + ignition_on: + description: "**ignitionOff** event." + required: false + type: string + all_events: + description: "**allEvents** catchall for all event types." + required: false + type: string {% endconfiguration %} The parameter `monitored_conditions` allows you to track non standard attributes from the traccar platform and use them in your Home Assistant. For example if you need to monitor the state of the non standard attribute `alarm` and a custom computed attribute `mycomputedattribute` just fill the configuration with: @@ -74,3 +147,14 @@ device_tracker: ... monitored_conditions: ['alarm', 'mycomputedattribute'] ``` + +The parameter `event` allows you to import events from the traccar platform (https://www.traccar.org/documentation/events/) and fire them in your Home Assistant. It accepts a list of events to be monitored and imported and each event must be listed in lowercase snakecase. The events will be fired with the same event name defined in the abovementioned list preceded by the prefix `traccar_`. For example if you need to import the Traccar events `deviceOverspeed` and `deviceFuelDrop` in Home Assistant, you need to fill the `event` parameter with: + +```yaml +device_tracker: + - platform: traccar + ... + event: ['device_overspeed', 'device_fuel_drop'] +``` +and as soon as Home Assistant receives those events from the platform, they will be fired as `traccar_device_overspeed` and `traccar_device_fuel_drop`. +*NOTE* Specify `all_events` if you want to import all events. From 480cf55ffec10b588de70e7af1e8836df114057e Mon Sep 17 00:00:00 2001 From: Fredrik Erlandsson Date: Mon, 25 Mar 2019 19:37:49 +0100 Subject: [PATCH 26/61] Added support for Daikin AirBase units (#9033) --- source/_components/daikin.markdown | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/source/_components/daikin.markdown b/source/_components/daikin.markdown index addd13452d7..8498cae18b0 100644 --- a/source/_components/daikin.markdown +++ b/source/_components/daikin.markdown @@ -27,10 +27,8 @@ There is currently support for the following device types within Home Assistant: ## {% linkable_title Supported hardware %} -**Only** the European versions of Daikin AC (models BRP069A41, 42, 43, 45). - -Some models do not support setting of fan speed or fan swing mode. - +This component supports the European versions of Daikin AC (BRP069A[41,42,43,45]) and AU AirBase units (BRP15B61). +Some models do not support setting of fan speed or fan swing mode althogh it might show up in Home Assistant. Please note that some AC devices may report outside temperature only when they are turned on. ## {% linkable_title Configuration %} From 763412586fd2501af1de4f6bbbb3a97292fb061d Mon Sep 17 00:00:00 2001 From: Quentin Stafford-Fraser Date: Mon, 25 Mar 2019 19:40:17 +0000 Subject: [PATCH 27/61] Mention proposed ordering for !include_dir_list (#8899) --- source/_docs/configuration/splitting_configuration.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 2fe7bb652a2..1cf7c1f523b 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -166,7 +166,7 @@ You can get help from the command line using: `hass --script check_config --help ### {% linkable_title Advanced Usage %} We offer four advanced options to include whole directories at once. Please note that your files must have the `.yaml` file extension; `.yml` is not supported. -- `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list. +- `!include_dir_list` will return the content of a directory as a list with each file content being an entry in the list. The list entries are ordered based on the alphanumeric ordering of the names of the files. - `!include_dir_named` will return the content of a directory as a dictionary which maps filename => content of file. - `!include_dir_merge_list` will return the content of a directory as a list by merging all files (which should contain a list) into 1 big list. - `!include_dir_merge_named` will return the content of a directory as a dictionary by loading each file and merging it into 1 big dictionary. From ea5ef411f41b46bb481d4bcacb7e9ad4e3e99dbc Mon Sep 17 00:00:00 2001 From: zewelor Date: Mon, 25 Mar 2019 20:41:29 +0100 Subject: [PATCH 28/61] Add info about new yeelight sensor (#9011) --- source/_components/yeelight.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_components/yeelight.markdown b/source/_components/yeelight.markdown index b98b53545cd..0065fc8c069 100644 --- a/source/_components/yeelight.markdown +++ b/source/_components/yeelight.markdown @@ -20,6 +20,7 @@ The `yeelight` component allows you to control your Yeelight Wifi bulbs with Hom There is currently support for the following device types within Home Assistant: - **Light** - The yeelight platform for supporting lights. +- **Sensor** - The yeelight platform for supporting sensors. Currenctly only nightlight mode sensor, for ceiling lights. ### {% linkable_title Example configuration (Automatic) %} After the lights are connected to the WiFi network and have been detected in Home Assistant, the discovered names will be shown in the `Light` section of the `Overview` view. Add the following lines to your `customize.yaml` file: From 7bcaead449c09e6d24a33b3ec7ddbc1af1218bcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niccol=C3=B2=20Maggioni?= Date: Mon, 25 Mar 2019 20:45:28 +0100 Subject: [PATCH 29/61] Update Plex sensor docs for SSL verification (#8727) --- source/_components/sensor.plex.markdown | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/source/_components/sensor.plex.markdown b/source/_components/sensor.plex.markdown index 1854dfedfb3..6d508279065 100644 --- a/source/_components/sensor.plex.markdown +++ b/source/_components/sensor.plex.markdown @@ -60,8 +60,13 @@ token: required: false type: string ssl: - description: Use HTTPS to connect to Plex server, *NOTE* host *must not* be an IP when this option is enabled. + description: Use HTTPS to connect to Plex server, **NOTE:** host **must not** be an IP when this option is enabled. required: false default: false type: boolean +verify_ssl: + description: Verify the SSL certificate of your Plex server. You may need to disable this check if your local server enforces secure connections with the default certificate. + required: false + default: true + type: boolean {% endconfiguration %} From 93316ce2202dc1557f786fe7dbdfa9f297bdbd63 Mon Sep 17 00:00:00 2001 From: Andre Lengwenus Date: Mon, 25 Mar 2019 20:45:40 +0100 Subject: [PATCH 30/61] Add documentation for LCN sensor platform (#8734) * Add docs for LCN sensor platform * Restricted temperature units for Celsius and Fahrenheit to the standardized units * Fixed headers for constants --- source/_components/lcn.markdown | 78 +++++++++++++++++++++++++++++++-- 1 file changed, 74 insertions(+), 4 deletions(-) diff --git a/source/_components/lcn.markdown b/source/_components/lcn.markdown index e77ff08dbd8..7cccc34de99 100644 --- a/source/_components/lcn.markdown +++ b/source/_components/lcn.markdown @@ -12,6 +12,7 @@ ha_category: - Hub - Cover - Light + - Sensor - Switch ha_release: 0.85 ha_iot_class: Local Push @@ -30,6 +31,7 @@ There is currently support for the following device types within Home Assistant: - [Cover](#cover) - [Light](#light) +- [Sensor](#sensor) - [Switch](#switch) ## {% linkable_title Configuration %} @@ -59,6 +61,12 @@ lcn: dimmable: true transition: 5 + sensors: + - name: Temperature + address: myhome.s0.m7 + source: var3 + unit_of_measuremnt: °C + switches: - name: Sprinkler switch address: myhome.s0.m7 @@ -67,7 +75,7 @@ lcn: {% configuration %} connections: - description: List of your connections + description: List of your connections. required: true type: map keys: @@ -149,6 +157,29 @@ lights: type: int default: 0 +sensors: + description: List of your sensors. + required: false + type: map + keys: + name: + description: "Name of the sensor." + required: true + type: string + address: + description: "[Address](/components/lcn#lcn-addresses) of the module/group." + required: true + type: string + source: + description: "Sensor source ([VARIABLE](/components/lcn#variables-and-units), [SETPOINT](/components/lcn#variables-and-units), [THRESHOLD](/components/lcn#variables-and-units), [S0_INPUT](/components/lcn#variables-and-units), [LED_PORT](/components/lcn#ports), [LOGICOP_PORT](/components/lcn#ports))." + required: true + type: string + unit_of_measurement: + description: "Measurement unit ([VAR_UNIT](/components/lcn#variables-and-units))." + required: false + type: string + default: 'native' + switches: description: List of your switches. required: false @@ -211,6 +242,8 @@ The platforms and service calls use several predefined constants as parameters. | OUTPUT_PORT | `output1`, `output2`, `output3`, `output4` | | RELAY_PORT | `relay1`, `relay2`, `relay3`, `relay4`, `relay5`, `relay6`, `relay7`, `relay8` | | MOTOR_PORT | `motor1`, `motor2`, `motor3`, `motor4` | +| LED_PORT | `led1`, `led2`, `led3`, `led4`, `led5`, `led6`, `led7`, `led8`, `led9`, `led10`, `led11`, `led12` | +| LOGICOP_PORT | `logicop1`, `logicop2`, `logicop3`, `logicop4` | The [MOTOR_PORT](/components/lcn#ports) values specify which hardware relay configuration will be used: @@ -221,18 +254,55 @@ The [MOTOR_PORT](/components/lcn#ports) values specify which hardware relay conf | `motor3` | `relay5` | `relay6` | | `motor4` | `relay7` | `relay8` | -## {% linkable_title Cover %} +### {% linkable_title Variables and Units %} + +| Constant | Values | +| -------- | ------ | +| VARIABLE | `var1`, `var2`, `var3`, `var4`, `var5`, `var6`, `var7`, `var8`, `var9`, `var10`, `var11`, `var12`, `tvar`, `r1var`, `r2var` | +| SETPOINT | `r1varsetpoint`, `r2varsetpoint` | +| THRESHOLD | `thrs1`, `thrs2`, `thrs3`, `thrs4`, `thrs5`, `thrs2_1`, `thrs2_2`, `thrs2_3`, `thrs2_4`, `thrs3_1`, `thrs3_2`, `thrs3_3`, `thrs3_4`, `thrs4_1`, `thrs4_2`, `thrs4_3`, `thrs4_4` | +| S0_INPUT | `s0input1`, `s0input2`, `s0input3`, `s0input4` | +| VAR_UNIT | `native`, `°C`, `°K`, `°F`, `lux_t`, `lux_i`, `m/s`, `%`, `ppm`, `volt`, `ampere`, `degree` | + +### {% linkable_title States %}: + +| Constant | Values | +| -------- | ------ | +| LED_STATE | `on`. `off`, `blink`, `flicker` | +| LOGICOP_STATE | `not`. `or`, `and` | + +## {% linkable_title Platforms %} + +### {% linkable_title Cover %} The `lcn` cover platform allows the control of [LCN](http://www.lcn.eu) relays which have been configured as motor controllers. -## {% linkable_title Light %} +### {% linkable_title Light %} The `lcn` light platform allows the control of the following [LCN](http://www.lcn.eu) ports: - (Dimmable) output ports - Relays -## {% linkable_title Switch %} +### {% linkable_title Sensor %} + +The `lcn` sensor platform allows the monitoring of the following [LCN](http://www.lcn.eu) data sources: + +- Variables +- Regulator setpoints +- Thresholds +- S0 inputs +- LED states +- Logic operation states + +The sensor can be used in automation scripts or in conjunction with `template` platforms. + +

+ Ensure that the LCN module is configured properly to provide the requested value. + Otherwise the module might show unexpected behavior or return error messages. +

+ +### {% linkable_title Switch %} The `lcn` switch platform allows the control of the following [LCN](http://www.lcn.eu) ports: From 6a39e86c1dbdf4579a3197cb82e68419052bfd6a Mon Sep 17 00:00:00 2001 From: fabtesta Date: Mon, 25 Mar 2019 20:47:11 +0100 Subject: [PATCH 31/61] Add ClickSend "caller" option (#8831) * Add ClickSend "caller" option Added optional "caller" parameter to let ClickSend API call be more compliant with some cellular networks that do not allow incoming calls from the same recipient number. If "caller" is not defined, then the recipient parameter value is used. * * Removed optional variable in example * :pencil2: Tweak --- source/_components/notify.clicksend_tts.markdown | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/_components/notify.clicksend_tts.markdown b/source/_components/notify.clicksend_tts.markdown index 562a6c56ebd..1bde49e1fc9 100644 --- a/source/_components/notify.clicksend_tts.markdown +++ b/source/_components/notify.clicksend_tts.markdown @@ -8,9 +8,11 @@ comments: false sharing: true footer: true logo: clicksend.png -ha_category: Notifications +ha_category: + - Notifications ha_release: 0.55 -redirect_from: /components/notify.clicksendaudio/ +redirect_from: + - /components/notify.clicksendaudio/ --- The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. @@ -22,7 +24,6 @@ To add ClickSend to your installation, add the following to your Home Assistant ```yaml notify: - platform: clicksend_tts - name: ClickSend username: CLICKSEND_USERNAME api_key: CLICKSEND_API_KEY recipient: PHONE_NO @@ -43,9 +44,13 @@ api_key: required: true type: string recipient: - description: Your phone number. This is where you want to send your notification SMS messages (e.g., `09171234567`). + description: Recipient phone number. This is the phone number that you want to call and notify via TTS (e.g., `09171234567`). required: true type: string +caller: + description: Caller phone number. This is the phone number that you want to be the TTS call originator (e.g., `09181234567`). If not defined the recipient number is used. + required: false + type: string language: description: The language you want to use to convert the message to audio. Accepted values are found in the [ClickSend Documentation](http://docs.clicksend.apiary.io/#reference/voice/voice-languages). required: false From 0009c9ab8eee94b91fa0821417fd2fcbb21086cd Mon Sep 17 00:00:00 2001 From: Nick Horvath Date: Mon, 25 Mar 2019 15:47:45 -0400 Subject: [PATCH 32/61] Ecobee: document new attribute (#8414) * document new skybell camera options * add documentation for equipment running * reword sentance * merge screwed up changes * :pencil2: Typo --- source/_components/ecobee.markdown | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown index 83390c4adc2..e15c713c70f 100644 --- a/source/_components/ecobee.markdown +++ b/source/_components/ecobee.markdown @@ -149,7 +149,7 @@ auto, and off. The following attributes are provided by the Ecobee Thermostat: `name`, `temperature_unit`, `current_temperature`, `target_temperature`, `target_temperature_low`, `target_temperature_high`, `desired_fan_mode`, -`fan`, `current_hold_mode`, `current_operation`, `operation_list`, +`fan`, `current_hold_mode`, `operation`, `operation_list`, `equipment_running`, `operation_mode`, `mode`, `fan_min_on_time`, `device_state_attributes`, `is_away_mode_on`, `vacation`, `climate_list`, `aux_heat`. The attributes `min_temp` and `max_temp` are meaningless constant values. @@ -229,7 +229,7 @@ Returns the current temperature hold, if any. | ---------------| ----------- | | String | 'temp', 'vacation', 'home', 'away', etc., None -### {% linkable_title Attribute `current_operation` %} +### {% linkable_title Attribute `operation` %} Returns the current operation of the thermostat. @@ -253,6 +253,14 @@ Returns the current operation mode of the thermostat. | ---------------| ----------- | | String | Currently active operation mode +### {% linkable_title Attribute `equipment_running` %} + +Returns the list of equipment that is currently operating from the thermostat. + +| Attribute type | Description | +| ---------------| ----------- | +| String | If no equipment is currently running empty string is returned. Possible values are a comma separated list of any of the following: heatPump, heatPump2, heatPump3, compCool1, compCool2, auxHeat1, auxHeat2, auxHeat3, fan, humidifier, dehumidifier, ventilator, economizer, compHotWater, auxHotWater. + ### {% linkable_title Attribute `mode` %} Returns the climate currently active on the thermostat. The mode From 74604e78d4fdf6189d0be992a701e2a0f6b29f36 Mon Sep 17 00:00:00 2001 From: Sebastian Muszynski Date: Mon, 25 Mar 2019 20:50:31 +0100 Subject: [PATCH 33/61] Add suport for the power socket of the Xiaomi AC Partner V3 (#8983) --- source/_components/switch.xiaomi_miio.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_components/switch.xiaomi_miio.markdown b/source/_components/switch.xiaomi_miio.markdown index 9e163ef2a5f..f8c56c887ec 100644 --- a/source/_components/switch.xiaomi_miio.markdown +++ b/source/_components/switch.xiaomi_miio.markdown @@ -51,6 +51,14 @@ Supported models: `qmi.powerstrip.v1`, `zimi.powerstrip.v2` - Wifi LED - Mode (Power Strip V1 only) +### {% linkable_title Xiaomi Air Conditioning Companion V3 %} + +Supported models: `lumi.acpartner.v3` (the socket of the `acpartner.v1` and `v2` isn't switchable!) + +* Power (on, off) +* Attributes + - Load power + ## {% linkable_title Configuration %} To add a plug to your installation, add the following to your `configuration.yaml` file: From 3a9dd0fcb5ef33ec2bee0cc285401ab2383dfae1 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Mon, 25 Mar 2019 14:03:57 -0700 Subject: [PATCH 34/61] AWS component (#9002) * AWS component * Move notify under aws component config * tweak * :pencil2: Tweaks --- source/_components/aws.markdown | 185 +++++++++++++++++++++++++ source/images/supported_brands/aws.png | Bin 0 -> 23000 bytes 2 files changed, 185 insertions(+) create mode 100644 source/_components/aws.markdown create mode 100644 source/images/supported_brands/aws.png diff --git a/source/_components/aws.markdown b/source/_components/aws.markdown new file mode 100644 index 00000000000..c13be5b492c --- /dev/null +++ b/source/_components/aws.markdown @@ -0,0 +1,185 @@ +--- +layout: page +title: "Amazon Web Services" +description: "Instructions on how to integrate Amazon Web Services with Home Assistant." +date: 2019-03-21 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: aws.png +ha_category: + - Notifications +ha_release: "0.91" +--- + +The `aws` integration provides a single place to interact [Amazon Web Services](https://aws.amazon.com/). Current it provide a notification platform can send a message to [AWS SQS](https://aws.amazon.com/sqs/), [AWS SNS](https://aws.amazon.com/sns/), or invoke [AWS Lambda](https://aws.amazon.com/lambda/) functions. + +## {% linkable_title Setup %} + +You have to have an AWS account to use Amazon Web Services, create one [here](https://aws.amazon.com/free/) with a 12 months free tier benefit. Please note, even in the first 12-months, you may still be billed if you use more resources than offered in the free tier. We advise you to monitor your costs in the [AWS Billing Console](https://console.aws.amazon.com/billing/) closely. You can read the [Control your AWS costs](https://aws.amazon.com/getting-started/tutorials/control-your-costs-free-tier-budgets/) guide for more information. + +The `lambda`, `sns` and `sqs` services, used in the `aws` component, all provide an **Always Free** tier for all users even after the 12-month period. The general usage in Home Automation will most likely not reach the free tier limit. Please read [Lambda Pricing](https://aws.amazon.com/lambda/pricing/), [SNS Pricing](https://aws.amazon.com/sns/pricing/) and [SQS Pricing](https://aws.amazon.com/sqs/pricing/) for more details. + +The `aws` component is using [botocore](https://botocore.amazonaws.com/v1/documentation/api/latest/index.html) to communicate with Amazon Web Services, which is also used by the [AWS Command Client Interface](https://aws.amazon.com/cli/) tool. Therefore, `aws` shares the same credential and profiles with `awscli` tool. Please read [Configuring the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) to learn how to get access keys and how to manage them on your local system securely. + +## {% linkable_title Configuration %} + +To use the `aws` component and the `notify` platform in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +aws: + credentials: + - name: My AWS Account + aws_access_key_id: AWS_ID + aws_secret_access_key: AWS_SECRET + notify: + # use the first credential defined in aws component by default + - service: lambda + region_name: us-east-1 +``` + +### {% linkable_title Configuration for credentials %} + +{% configuration %} +name: + description: Give your AWS credential a name, so that you can refer it in other AWS platforms. + required: true + type: string +aws_access_key_id: + description: Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key` and must **not** provide a `profile_name`. + required: Required if aws_secret_access_key is provided + type: string +aws_secret_access_key: + description: Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id` and must **not** provide a `profile_name`. + required: Required if aws_access_key_id is provided + type: string +profile_name: + description: A credentials profile name. + required: false + type: string +region_name: + description: The region identifier to connect to. + required: true + default: "`us-east-1`" + type: string +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 +context: + description: An optional dictionary you can provide to pass custom context through to the Lambda function. + required: false + type: string +{% endconfiguration %} + +### {% linkable_title Configuration for notify %} + +{% configuration %} +service: + description: Amazon Web Services will be used for notification. You can choose from `lambda`, `sns`, or `sqs`. + required: true + type: string +region_name: + description: The region identifier to connect to, for example, `us-east-1`. + required: true + type: string +credential_name: + description: A reference to a `aws` credential. Notify platform will use the `default profile` defined in `~/.aws` if none of `credential_name`, `aws_access_key_id`, or `profile_name` was given. + required: false + type: string +aws_access_key_id: + description: Your AWS Access Key ID. If provided, you must also provide an `aws_secret_access_key`. + required: false + type: string +aws_secret_access_key: + description: Your AWS Secret Access Key. If provided, you must also provide an `aws_access_key_id`. + required: Required if aws_access_key_id is provided + type: string +profile_name: + description: A credentials profile name. + required: false + type: string +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 +context: + description: An optional dictionary you can provide to pass custom context through to the notification handler. + required: false + type: string +{% endconfiguration %} + +## {% linkable_title Lambda Notify Usage %} + +AWS Lambda is a notification platform and thus can be controlled by calling the `notify` service [as described here](/components/notify/). It will invoke a Lambda for all targets given in the notification payload. A target can be formatted as a function name, an entire ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)) or a partial ARN. For more information, please see the [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke). + +The Lambda event payload will contain everything passed in the service call payload. Here is an example payload that would be sent to Lambda: + +```json +{ + "title": "Test message!", + "target": "arn:aws:lambda:us-east-1:123456789012:function:ProcessKinesisRecords", + "data": { + "test": "okay" + }, + "message": "Hello world!" +} +``` + +The context will look like this: + +```json +{ + "custom": { + "two": "three", + "test": "one" + } +} +``` + +## {% linkable_title SNS Notify Usage %} + +AWS SNS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/components/notify/). It will publish a message to all targets given in the notification payload. A target must be a SNS topic or endpoint ARN ([Amazon Resource Name](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)). For more information, please see the [botocore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sns.html#SNS.Client.publish). + +If one exists, the SNS Subject will be set to the title. All attributes from the payload, except the message, will be sent as stringified message attributes. + +### {% linkable_title Setting up SNS within AWS %} + +- Log into your AWS console and under "Security and Identity", select "Identity & Access Management". +- On the left-hand side, select "Users" then click "Create New Users". Enter a name here and then click "Create". +- You can either download the credentials or click the arrow to display them one time. + +

+ If you do not download them, you will lose them and will have to recreate a new user. +

+ +- Copy/Paste the two keys that are shown here in your `configuration.yaml` file. +- On the left-hand side of the screen go back to "Users" and select the user you just created. On the "Permissions" tab click the "Attach Policy" icon. Search for "SNS" and attach the policy "AmazonSNSFUullAccess". +- Back to the AWS Console you now need to find "SNS" and click in to that service. It is under the Mobile Services group. +- On the left-hand side, select "Topics" then "Create new topic". +- Choose a Topic Name and Display Name. +- Now check the box next to the Topic you just created and under Actions, select "Subscribe to topic". +- In the box that pops up, select the Protocol = SMS and enter in the phone number next to "Endpoint" you wish to SMS. Now click "Create". +- Repeat for additional numbers. +- Back in the "Users" section you will see a long alphanumeric line that starts with "arn:" and ends with the Topic Name you choose previously. This is what your "target" in Home Assistant will be. + +## {% linkable_title SQS Notify Usage %} + +AWS SQS is a notification platform and thus can be controlled by calling the `notify` service [as described here](/components/notify/). It will publish a message to the queue for all targets given in the notification payload. A target must be a SQS topic URL. For more information, please see the [SQS docs](http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/ImportantIdentifiers.html) and [bototcore docs](https://botocore.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html#SQS.Client.send_message) + +The SQS event payload will contain everything passed in the service call payload. SQS payloads will be published as stringified JSON. All attributes from the payload, except message, will also be sent as stringified message attributes. Here is an example message that would be published to the SQS queue: + +```json +{ + "title": "Test message!", + "target": "http://sqs.us-east-1.amazonaws.com/123456789012/queue2", + "data": { + "test": "okay" + }, + "message": "Hello world!" +} +``` diff --git a/source/images/supported_brands/aws.png b/source/images/supported_brands/aws.png new file mode 100644 index 0000000000000000000000000000000000000000..5417dcde712b3bf65d4cf150809db260d3050c71 GIT binary patch literal 23000 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 Date: Mon, 25 Mar 2019 22:15:58 +0100 Subject: [PATCH 35/61] Update documentation to reflect Axis config flow support (#9016) * Update documentation to reflect Axis config flow support * :pencil2: Removed Hub reference --- source/_components/axis.markdown | 122 ++----------------------------- 1 file changed, 7 insertions(+), 115 deletions(-) diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index de48006f52e..824fc2ada6a 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Axis" -description: "Instructions on how to setup devices from Axis Communications within Home Assistant." +description: "Integration between network devices from Axis Communications with Home Assistant." date: 2017-04-30 23:04 sidebar: true comments: false @@ -11,143 +11,35 @@ logo: axis.png ha_category: - Camera - Binary Sensor +ha_config_flow: true ha_release: 0.45 -ha_iot_class: Local Polling +ha_iot_class: Local Push redirect_from: - /components/binary_sensor.axis/ - /components/camera.axis/ --- -[Axis Communications](https://www.axis.com/) devices are surveillance cameras and other security-related network connected hardware. Sensor API works with firmware 5.50 and newer. +[Axis Communications](https://www.axis.com/) devices are surveillance cameras, speakers, access control and other security-related network connected hardware. Event API works with firmware 5.50 and newer. Home Assistant will automatically discover their presence on your network. ## {% linkable_title Configuration %} -You can also manually configure your devices by adding the following lines to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -axis: - m1065lw: - host: IP ADDRESS - include: - - camera -``` - -{% configuration %} -device: - description: A unique name - required: true - type: string -host: - description: The IP address to your Axis device. - required: true - type: string -username: - description: The username to your Axis device. - required: false - type: string - default: root -password: - description: The password to your Axis device. - required: false - type: string - default: pass -trigger_time: - description: Minimum time (in seconds) a sensor should keep its positive value. - required: false - type: integer - default: 0 -port: - description: Configure port web server of device is accessible from. - required: false - type: integer - default: 80 -location: - description: Physical location of your Axis device. - required: false - type: string -include: - description: This cannot be empty else there would be no use adding the device at all. - required: true - type: map - keys: - camera: - description: Stream MJPEG video to Home Assistant. - motion: - description: The built-in motion detection in Axis cameras. - vmd3: - description: ACAP Motion Detection app which has better algorithms for motion detection. - pir: - description: PIR sensor that can trigger on a motion. - sound: - description: Sound detector. - daynight: - description: Certain cameras have day/night mode if they have built-in IR lights. - tampering: - description: Signals when camera believes that it has been tampered with. - input: - description: Trigger on whatever you have connected to device input port. -{% endconfiguration %} - -A full configuration example could look like this: - -```yaml -# Example configuration.yaml entry -axis: - m1065lw: - host: IP ADDRESS - username: USERNAME - password: PASSWORD - include: - - camera - - motion - - pir - - sound - - daynight - trigger_time: 0 - location: köket -``` - -

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

+For configuration go to the `Integrations pane` on your Home Assistant instance.

It is recommended that you create a user on your Axis device specifically for Home Assistant. For all current functionality, it is enough to create a user belonging to user group viewer.

-## {% linkable_title Device services %} - -Available services: `vapix_call`. - -### {% linkable_title Service `axis/vapix_call` %} - -Send a command using [Vapix](https://www.axis.com/support/developer-support/vapix). For details please read the API specifications. - -| Service data attribute | Optional | Description | -|---------------------------|----------|--------------------------------------------------| -| `name` | no | Name of device to communicate with. | -| `param` | no | What parameter to operate on. | -| `cgi` | yes | Which cgi to call on the device. Default is `param.cgi`. | -| `action` | yes | What type of call. Default is `update`. | - -Response to call can be subscribed to on event `vapix_call_response` - ## {% linkable_title Troubleshooting discovery %} -If a `169.x.x.x` address is discovered. On your camera, go to **System Options** -> **Advanced** -> **Plain Config**. Change the drop-down box to `network` and click `Select Group`. If `Network Interface I0 ZeroConf` contains the `169.x.x.x` IP address, unchecked the box next to `Enabled` for this section and click `Save`. +If your device is not discovered. On your camera, go to **System Options** -> **Advanced** -> **Plain Config**. Change the drop-down box to `network` and click `Select Group`. If `Network Interface I0 ZeroConf` contains the `169.x.x.x` IP address, unchecked the box next to `Enabled` for this section and click `Save`. ## {% linkable_title Binary Sensor %} -The `Axis` platform allows you to get data from your [Axis](https://www.axis.com/) devices from within Home Assistant. - The following sensor types are supported: -- Motion detection +- Motion detection (VMD3/VMD4) - Passive IR motion detection - Sound detection - Day/night mode -- Tampering detection -- Input port From 2da857cca1157df87547530d5a7779fd5dc03370 Mon Sep 17 00:00:00 2001 From: Nick Whyte Date: Tue, 26 Mar 2019 21:01:28 +1100 Subject: [PATCH 36/61] Add doc for infer_arming_state option in ness_alarm (#9031) * Add doc for infer_arming_state option in ness_alarm * :pencil2: Tweak --- source/_components/ness_alarm.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_components/ness_alarm.markdown b/source/_components/ness_alarm.markdown index 0d525674856..cc60c07a848 100644 --- a/source/_components/ness_alarm.markdown +++ b/source/_components/ness_alarm.markdown @@ -64,6 +64,11 @@ scan_interval: required: false default: '00:01:00' type: time +infer_arming_state: + description: Infer the disarmed arming state only via system status events. This works around a bug with some panels (` Date: Tue, 26 Mar 2019 21:50:49 +0000 Subject: [PATCH 37/61] Update enigma2.markdown (#9037) --- source/_components/enigma2.markdown | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/_components/enigma2.markdown b/source/_components/enigma2.markdown index 11aaf3b7050..867d219d12e 100644 --- a/source/_components/enigma2.markdown +++ b/source/_components/enigma2.markdown @@ -41,6 +41,21 @@ media_player: required: false type: boolean default: false + deep_standby: + description: If set to true, when the user selects Turn Off, the box will go into "deep standby" mode, meaning it can be only awoken by the remote control or via Wake On Lan (if box supports that). + required: false + type: boolean + default: false + mac_address: + description: If specified, a Wake On Lan packet is sent to this MAC address, when Turn On is selected. + required: false + type: string + default: empty + source_bouquet: + description: Provide a specific bouquet reference for the bouquet you would like to see loaded into the media player "Sources" interface. + required: false + type: string + default: empty port: description: Port which OpenWebif is listening on. required: false From 9d1addd657c462b8f7ebd8102df334d97a0027a3 Mon Sep 17 00:00:00 2001 From: Gido Date: Wed, 27 Mar 2019 22:08:56 +0100 Subject: [PATCH 38/61] Update SolarEdge documentation (#8213) * Add information about newly added monitored_conditions Update basic sensor configuration to keep this as short as possible * Update sensor.solaredge.markdown Update names of monitored_conditions * Update sensor.solaredge.markdown * Update sensor.solaredge.markdown --- source/_components/sensor.solaredge.markdown | 34 ++++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/source/_components/sensor.solaredge.markdown b/source/_components/sensor.solaredge.markdown index bee090d13b5..d9aebd50c89 100644 --- a/source/_components/sensor.solaredge.markdown +++ b/source/_components/sensor.solaredge.markdown @@ -30,9 +30,6 @@ sensor: - platform: solaredge api_key: API_KEY site_id: SITE_ID - monitored_conditions: - - current_power - - energy_today ``` {% endraw %} @@ -66,6 +63,27 @@ monitored_conditions: description: Energy generated today at your SolarEdge Site in Wh current_power: description: Current generated power in W + site_details: + description: Site details such as name, location, status, etc. + meters: + description: Site equipment details of connected meters. The sensor value shows the number of meters. Each meter is available as an attribute + sensors: + description: Site equipment details of connected sensors. The sensor value shows the number of sensors. Each sensor is available as an attribute + gateways: + description: Site equipment details of connected gateways. The sensor value shows the number of gateways. Each gateway is available as an attribute + batteries: + description: Site equipment details of connected batteries. The sensor value shows the number of batteries. Each battery is available as an attribute + inverters: + description: Site equiment details of connected inverters. The sensor values shows the number of inverters. Each inverter is available as an attribute + power_consumption: + description: Show the current power consumption of your SolarEdge Site (additional hardware required) + solar_power: + description: Show the current power production of your SolarEdge Site (additional hardware required) + grid_power: + description: Show the current power flow from/to the power grid. State will be either positive of negative indicating importing or exporting electricity (additional hardware required) + storage_power: + description: Show the current power flow from/to your site storage. State will be either positive of negative indicating discharging or charging (additional hardware required) + {% endconfiguration %} If no **monitored_conditions** are specified, only **current_power** will be enabled. @@ -88,6 +106,16 @@ sensor: - energy_this_month - energy_this_year - lifetime_energy + - site_details + - meters + - sensors + - gateways + - batteries + - inverters + - power_consumption + - solar_power + - grid_power + - storage_power ``` {% endraw %} From 3988e7f47b1e792cca458e7a45e99e4079e1afe5 Mon Sep 17 00:00:00 2001 From: Nate Clark Date: Wed, 27 Mar 2019 19:54:56 -0400 Subject: [PATCH 39/61] Adds documentation on Unique ID generation for Konnected entities (#9053) --- source/_components/konnected.markdown | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown index e49c2096d20..de134519eb4 100644 --- a/source/_components/konnected.markdown +++ b/source/_components/konnected.markdown @@ -231,6 +231,22 @@ konnected: ``` +### {% linkable_title Unique IDs and the Entity Registry %} + +Beginning in Home Assistant release 0.90, unique IDs are generated for each sensor or switch entity. This enables end users to modify the entity names and entity IDs through the Home Assistant UI on the _Entity Registry_ page (under _Configuration_). + +Unique IDs are internally generated as follows: + +**Binary Sensors**: `{mac-address}-{zone-number}` + +**Switches**: `{mac-address}-{unique-hash}`* + +**DHT Sensors**: `{mac-address}-{pin-number}-{temperature|humidity}` + +**DS18B20 Sensors**: `{sensor-serial-number}` + +\* Switches are identified by a unique hash including the pin number, `momentary`, `pause`, and `repeat` values. If these values are modified, a new entity will be created and the old entity must be removed manually from the _Entity Registry_. + ### {% linkable_title Pin Mapping %} Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly used with the NodeMCU dev kit WiFi module and optionally Konnected's Alarm Panel hardware. The following table shows the pin mapping between the Konnected hardware labeled zones, the NodeMCU labeled pins and the ESP8266 GPIO pins. @@ -247,9 +263,14 @@ Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly use ### {% linkable_title Revision History %} -#### 0.89 +#### 0.91 + +- Improved Unique ID generation for Konnected switches + +#### 0.90 - Added support for `dht` and `ds18b20` temperature sensors +- Added Unique IDs #### 0.80 From 9bbadf877ddd7cc7bc8b3dd023322f68faec00ad Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 28 Mar 2019 03:55:59 +0100 Subject: [PATCH 40/61] Add image and smallicon field for data (#9055) * Add image and smallicon field for data * Update joaoapps_join.markdown --- source/_components/joaoapps_join.markdown | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown index 487e31baca6..9355216b639 100644 --- a/source/_components/joaoapps_join.markdown +++ b/source/_components/joaoapps_join.markdown @@ -62,7 +62,7 @@ device_names: type: string {% endconfiguration %} -The notify service has two optional parameters: `icon` and `vibration`. +The notify service has two optional parameters: `icon`, `smallicon`, `image`, `sound`, `url`, `notification_id`, `tts`, `tts_language` and `vibration`. You can use them like so: ```json @@ -71,7 +71,14 @@ You can use them like so: "title": "Home Assistant", "data": { "icon": "https://goo.gl/xeetdy", - "vibration": "0,65,706,86,657,95,668,100" + "smallicon": "https://goo.gl/xeetdy", + "vibration": "0,65,706,86,657,95,668,100", + "image": "https://www.home-assistant.io/images/favicon-192x192-full.png", + "sound": "https://goo.gl/asasde.mp3", + "url": "https://home-assistant.io", + "notification_id": "hass-notification", + "tts": "Notification from Home Assistant", + "tts_language": "english" } } ``` From 544b6193014fa96bb745e188f8acb1e0ff4be0c0 Mon Sep 17 00:00:00 2001 From: Jason Hu Date: Wed, 27 Mar 2019 21:56:33 -0700 Subject: [PATCH 41/61] Add trusted_users in trusted networks auth prov (#9059) --- .../_docs/authentication/providers.markdown | 65 ++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index c3a332bc9e3..c1f901b16cb 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -77,7 +77,70 @@ homeassistant: - fd00::/8 ``` -If you don't specify any `auth_providers` section in the `configuration.yaml` file then this provider will be set up automatically if `trusted_networks` was configured under `http` section. +{% configuration %} +trusted_networks: + description: A list of IP address or IP network you want to whitelisted. It accepts both IPv4 and IPv6 IP address or network + required: true + type: list of string +trusted_users: + description: You can also assign which users are available to select when user access login page from certain IP address or network. + required: false + type: dictionary, string as key, list of string as value +allow_bypass_login: + description: You can bypass login page if you have only one user available for selection. + required: false + default: False + type: boolean +{% endconfiguration %} + +

+If you don't specify any `auth_providers` section in the configuration.yaml file then this provider will be set up automatically. +

+ +#### {% linkable_title Trusted Users Examples %} + +```yaml +homeassistant: + auth_providers: + - type: trusted_networks + trusted_networks: + - 192.168.0.0/24 + - 192.168.10.0/24 + - fd00::/8 + trusted_users: + 192.168.0.1: user1_id + 192.168.0.0/24: + - user1_id + - user2_id + fd00::/8: + - user1_id + - group: system-users +``` + +First note, `trusted_users` configuration need you use `user id`, you can find it through Configuration -> Users -> View User Detail. The `trusted_users` configuration will not validate the existing of the user, so please make sure you have put in correct user id by yourself. + +In above example, if user try to access Home Assistant from 192.168.0.1, they will have only one user available to choose. They will have two users available if access from 192.168.0.38 (from 192.168.0.0/24 network). If they access from 192.168.10.0/24 network, they can choose from all available users (non-system and active users). + +Specially, you can use `group: GROUP_ID` to assign all users in certain `user group` to be available to choose. Group and users can be mix and match. + +#### {% linkable_title Skip Login Page Examples %} + +This is a feature to allow you bring back some of the experience before the user system be implemented. You can directly jump to main page if you are accessing from trusted networks, the `allow_bypass_login` is on, and you have ONLY ONE available user to choose in the login form. + +```yaml +# assuming you have only one non-system user +homeassistant: + auth_providers: + - type: trusted_networks + trusted_networks: + - 192.168.0.0/24 + - 127.0.0.1 + - ::1 + allow_bypass_login: true + - type: homeassistant +``` + +Assuming you have only the owner created though onboarding process, no other users ever created. The above example configuration will allow you directly access Home Assistant main page if you access from your internal network (192.168.0.0/24) or from localhost (127.0.0.1). You will get a login abort error, then you can change to use HomeAsssitant Authentication Provider to login, if you access your Home Assistant instance from outside network. ### {% linkable_title Command Line %} From 7cc6134fbf995ce690ce858d2c74139f648bdc36 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Mar 2019 22:16:54 -0700 Subject: [PATCH 42/61] Add draft post --- _config.yml | 6 +- source/_posts/2019-04-03-release-91.markdown | 501 +++++++++++++++++++ 2 files changed, 504 insertions(+), 3 deletions(-) create mode 100644 source/_posts/2019-04-03-release-91.markdown diff --git a/_config.yml b/_config.yml index 83b1a9e460e..97a70724214 100644 --- a/_config.yml +++ b/_config.yml @@ -138,9 +138,9 @@ social: # Home Assistant release details current_major_version: 0 -current_minor_version: 90 -current_patch_version: 2 -date_released: 2019-03-26 +current_minor_version: 91 +current_patch_version: 0 +date_released: 2019-04-03 # 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/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown new file mode 100644 index 00000000000..9f163dfd706 --- /dev/null +++ b/source/_posts/2019-04-03-release-91.markdown @@ -0,0 +1,501 @@ +--- +layout: post +title: "0.91: Streaming, streaming, streaming" +description: "TBD - UPDATE DATE" +date: 2019-03-27 00:11:03 +date_formatted: "April 3, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Release-Notes +og_image: /images/blog/2019-03-release-90/remote.png +--- + +Streaming: + - Recording + - Google Assistant support, "Hey Google, show the baby room" + - More supported platforms + +Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `light/hue.py`, update it. It will start breaking soon. + +ESPHome Camera support + +Trusted users added to trusted networks auth provider. Including auto log in if only one user matching. + + +If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck + + + + +## {% linkable_title New Platforms %} + +- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) (new-platform) +- Add LCN sensor platform ([@alengwenus] - [#21440]) (new-platform) +- Add ESPHome Camera ([@OttoWinter] - [#22107]) (new-platform) +- Move platforms patch ([@Swamp-Ig] - [#22168]) (new-platform) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) +- Add Freebox switch platform ([@SNoof85] - [#21710]) (new-platform) +- Consolidate more platforms ([@balloob] - [#22308]) (new-platform) +- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) +- Add support for Tfiac Climate component ([@fredrike] - [#21823]) (new-platform) +- Add aws component and consolidate aws notify platform ([@awarecan] - [#22240]) (new-platform) +- Move core stuff into Home Assistant integration ([@balloob] - [#22407]) (new-platform) +- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) (new-platform) +- Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) (new-platform) +- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) + +## {% linkable_title If you need help... %} + +...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. + +## {% linkable_title Reporting Issues %} + +Experiencing issues introduced by this release? Please report them in our [issue tracker](https://github.com/home-assistant/home-assistant/issues). Make sure to fill in all fields of the issue template. + + + +## {% linkable_title Breaking Changes %} + +- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) (breaking change) +- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) (breaking change) +- removed iliad ([@eliseomartelli] - [#22175]) (breaking change) +- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) (breaking change) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) +- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) (breaking change) +- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) +- Axis config flow ([@Kane610] - [#18543]) (breaking change) +- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) (breaking change) +- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) (breaking change) +- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) (breaking change) +- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) (breaking change) +- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) + +## {% linkable_title All changes %} + +- Add sense guard clause ([@kbickar] - [#22014]) +- Upgrade prefetched tox env to py37 ([@awarecan] - [#22029]) +- change logging to debug for nmap ([@Danielhiversen] - [#22036]) +- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) (new-platform) +- Ps4 remove throttling ([@ktnrg45] - [#21961]) +- Upgrade youtube_dl to 2019.03.09 ([@fabaff] - [#22041]) +- Async support for Daikin ([@fredrike] - [#21638]) +- Bump amcrest to 1.2.6 & use new exceptions ([@pnbruckner] - [#22040]) +- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) (breaking change) +- Minor ZHA consts fixes ([@Adminiuga] - [#22049]) +- Cleanup remaining constants stuff in ZHA ([@dmulcahey] - [#22050]) +- Add HTTP auth and SSL verification to REST notify ([@escoand] - [#22016]) +- Upgrade ruamel.yaml to 0.15.89 ([@fabaff] - [#22064]) +- Update rest.py ([@isabellaalstrom] - [#22077]) +- Telegram_bot: Allow fetching data from unverified SSL endpoints (#22067) ([@nbarrientos] - [#22069]) +- Add LCN sensor platform ([@alengwenus] - [#21440]) (new-platform) +- Upgrade pytest to 4.3.1 ([@scop] - [#22088]) +- Bump amcrest to 1.2.7 for correct RTSP port ([@pnbruckner] - [#22099]) +- Add available property to Ambient PWS ([@bachya] - [#22092]) +- Restricted temperature units for Celsius and Fahrenheit to the standardized units ([@alengwenus] - [#22108]) +- Consolidate all platforms that have no tests ([@balloob] - [#22096]) +- Add ESPHome Camera ([@OttoWinter] - [#22107]) (new-platform) +- Tibber, Add price level ([@Danielhiversen] - [#22085]) +- Fix AttributeError traceback with darksky ([@iamtpage] - [#22101]) +- Add service description for services. ([@cgtobi] - [#21897]) +- Handle occassional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) +- Loosen field retrieval from Pollen.com ([@bachya] - [#22132]) +- Handle possible exception during Ambient PWS reconnect ([@bachya] - [#22134]) +- Additional sensors and fixed icons, attributes and device classes. ([@endor-force] - [#22139]) +- Fix hlk-sw16 inverted switch state ([@jameshilliard] - [#22059]) +- replace einder lib with horimote ([@benleb] - [#22135]) +- Fixx yeelight flow action param for declared effects ([@zewelor] - [#22159]) +- Add dynamic subscription for ZHA add device page ([@dmulcahey] - [#22164]) +- Consolidate all platforms that have tests ([@Swamp-Ig] - [#22109]) +- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) (breaking change) +- Add some tests for Koogeek LS1 ([@Jc2k] - [#22141]) +- Move platforms patch ([@Swamp-Ig] - [#22168]) (new-platform) +- restore entity for switchbot ([@Danielhiversen] - [#22087]) +- removed iliad ([@eliseomartelli] - [#22175]) (breaking change) +- Upgrade youtube_dl to 2019.03.18 ([@fabaff] - [#22181]) +- Upgrade Sphinx to 1.8.5 ([@fabaff] - [#22180]) +- Better handling of HomeKit accessory-information service ([@Jc2k] - [#22171]) +- Fix breaking on HTML email without images ([@dagobert] - [#22143]) +- Update codeowners ([@oblogic7] - [#22198]) +- Upgrade psutil to 5.6.1 ([@fabaff] - [#22183]) +- Upgrade holidays to 0.9.10 ([@fabaff] - [#22182]) +- Removed overly broad exception handling for nanoleaf light ([@Oro] - [#22189]) +- Use relative imports inside integrations ([@balloob] - [#22235]) +- Make !include_dir_list use alphanumeric order ([@quentinsf] - [#21902]) +- add date_time_iso to time_date sensor ([@uchagani] - [#22199]) +- Bump python-miio version ([@syssi] - [#22202]) +- Upgrade to async_upnp_client==0.14.6 ([@StevenLooman] - [#22223]) +- Fix build issue ([@awarecan] - [#22251]) +- add ZHA channel name property ([@Adminiuga] - [#22218]) +- Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) +- Change .now() to .utcnow() ([@rdbahm] - [#22233]) +- Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) +- Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) +- Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) +- Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) +- Improved exception handling and logging ([@JeffLIrion] - [#22268]) +- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) (breaking change) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) +- Fix progress for Plex media_players ([@jjlawren] - [#22224]) +- Add sort by config and tests for Reddit integration ([@ljmerza] - [#22081]) +- Fix Prometheus casting issues ([@robbiet480] - [#22282]) +- Update trait to support auto without ranges. ([@Swamp-Ig] - [#21847]) +- Sort code owners alphabetically ([@cgtobi] - [#22304]) +- Update srpenergy library ([@robbiet480] - [#22307]) +- Switch from using Google Maps API for elevation to Open Elevation API ([@robbiet480] - [#22306]) +- Fix for embedded MQTT server configuration ([@robbiet480] - [#22305]) +- Upgrade pylast to 3.1.0 ([@fabaff] - [#22302]) +- Upgrade py-cpuinfo to 5.0.0 ([@fabaff] - [#22287]) +- Update abbreviation ([@fabaff] - [#22317]) +- Add homematicip cloud connection quality related attributes ([@SukramJ] - [#21990]) +- Add Freebox switch platform ([@SNoof85] - [#21710]) (new-platform) +- Google Assistant: Add camera stream trait ([@balloob] - [#22278]) +- Remove occupancy as it is not available in API ([@thibmaek] - [#22320]) +- Update file header ([@fabaff] - [#22318]) +- Consolidate more platforms ([@balloob] - [#22308]) (new-platform) +- fix where PLATFORM_SCHEMA gets pulled from ([@hunterjm] - [#22334]) +- show which component is causing translation errors ([@uchagani] - [#22340]) +- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) (breaking change) +- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) +- Axis config flow ([@Kane610] - [#18543]) (breaking change) +- Fix pressure in dark sky and openweathermap and add pressure utility ([@MatthewFlamm] - [#21210]) +- Fix xiaomi aqara cube with lumi.acpartner.v3 gateway ([@GuryYu] - [#22130]) +- Support deCONZ library with exception handling ([@Kane610] - [#21952]) +- Do not warn when creating an empty database ([@amelchio] - [#22343]) +- Add color support to Philips Moonlight ([@syssi] - [#22204]) +- Add support for the power socket of the Xiaomi AC Partner V3 ([@syssi] - [#22205]) +- Set Onkyo reset log to debug instead of info ([@robbiet480] - [#22369]) +- Upgrade netatmo smart_home module ([@cgtobi] - [#22365]) +- Fix the crash due to absence of the "default_home" in HomeData from pyatmo (netatmo/climate) ([@shanbs] - [#22363]) +- Add support for 'image' media type ([@StevenLooman] - [#22353]) +- Warn user about HTML5 GCM deprecation ([@hmmbob] - [#22351]) +- Turn Panasonic Viera TV on without WOL ([@dilruacs] - [#22084]) +- Properly connect sensors to hub ([@StevenLooman] - [#21414]) +- Add support for Tfiac Climate component ([@fredrike] - [#21823]) (new-platform) +- Add aws component and consolidate aws notify platform ([@awarecan] - [#22240]) (new-platform) +- Check if mac is set when more than 2 gateways ([@karlkar] - [#21834]) +- Add 'method' parameter to forgiving_round method ([@Mofeywalker] - [#21708]) +- Expose detailed Ecobee equipment status ([@nhorvath] - [#20767]) +- Add ClickSend "caller" option ([@fabtesta] - [#20780]) +- Give HomeKit locks better names by default ([@Jc2k] - [#22333]) +- Improve yeelight component ([@zewelor] - [#22347]) +- Improve PS4 media art fetching and config flow ([@ktnrg45] - [#22167]) +- Allow for custom turn on/off commands ([@JeffLIrion] - [#22354]) +- Remove unused const ([@Jc2k] - [#22383]) +- Frontend indicate require admin ([@balloob] - [#22272]) +- Fix TpLink Device Tracker initialize error ([@a005] - [#22349]) +- Add traccar events ([@lapy] - [#22348]) +- Update python yeelight and add nightlight mode sensor ([@zewelor] - [#22345]) +- updated pydaikin ([@fredrike] - [#22382]) +- Support for Plex sensor with enforced SSL ([@nmaggioni] - [#21432]) +- Search GTFS departures across midnight ([@renemarc] - [#20992]) +- remove config sections from hass.config.components ([@uchagani] - [#22370]) +- Update ring_doorbell to 0.2.3 ([@dshokouhi] - [#22395]) +- Fix unavailable state for homekit locks and covers ([@Jc2k] - [#22390]) +- Add infer_arming_state option to ness alarm ([@nickw444] - [#22379]) +- deCONZ support Xiaomi vibration sensor ([@Kane610] - [#22366]) +- Fix data_key of the xiaomi_aqara cover for LAN protocol v2 ([@syssi] - [#22358]) +- Remove get_serial helper that is no longer needed. ([@Jc2k] - [#22368]) +- Set default parallel_update value should base on async_update ([@awarecan] - [#22149]) +- Camera Preferences + Preload Stream ([@hunterjm] - [#22339]) +- Move core stuff into Home Assistant integration ([@balloob] - [#22407]) (new-platform) +- Tibber add support for Watty ([@Danielhiversen] - [#22397]) +- zha fixes ([@dmulcahey] - [#22381]) +- Fix yeelight state update ([@zewelor] - [#22373]) +- Changed busy error to warning ([@fronzbot] - [#22398]) +- Migrate tts ([@cgtobi] - [#22403]) +- Add missing append ([@Jc2k] - [#22414]) +- Update translate, fix dev build error ([@awarecan] - [#22419]) +- Use dispatcher for netgear_lte state updates ([@amelchio] - [#22328]) +- ciscomobilityexpress pypi version update ([@fbradyirl] - [#22431]) +- Update homeassistant-pyozw to 0.1.3 ([@pvizeli] - [#22433]) +- Adding conf for deep standby, wake and specific source bouquet of Enigma2 ([@fbradyirl] - [#22393]) +- Fix test name ([@balloob] - [#22421]) +- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) (breaking change) +- Update ha-ffmpeg 2.0 ([@pvizeli] - [#22427]) +- Add myself as codeowner for yeelight component ([@zewelor] - [#22438]) +- Update ZHA component CODEOWNERS ([@Adminiuga] - [#22452]) +- Add support for yeelight ceiling ambilight ([@zewelor] - [#22346]) +- Bootstrap to start registry loading early ([@Swamp-Ig] - [#22321]) +- Axis devices support device registry ([@Kane610] - [#22367]) +- Use voluptuous error string for websocket validation error ([@ljmerza] - [#21883]) +- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) (breaking change) +- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) (new-platform) +- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) (breaking change) +- Solaredge new sensors ([@GidoHakvoort] - [#21047]) +- Fix aws.notify platform schema ([@awarecan] - [#22374]) +- Do data extraction in sensors ([@amelchio] - [#22444]) +- Remove homekit_controller duplicate legacy pairing loader code ([@Jc2k] - [#22442]) +- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) (breaking change) +- Modify check for ADB public key ([@dilruacs] - [#22378]) +- Centralize all usages of `host` as a configuration param to the constant CONF_HOST ([@rohankapoorcom] - [#22458]) +- Don't return cover position when not supported ([@andrewsayre] - [#22484]) +- Targeted ZHA permit joins. ([@Adminiuga] - [#22482]) +- Fix auto discovery of yeelights ([@syssi] - [#22481]) +- fix inverse state changes for binary sensors ([@heythisisnate] - [#22479]) +- Fix events so they work with multiple devices ([@Kane610] - [#22477]) +- Improve Sensibo error handling ([@Danielhiversen] - [#22475]) +- Add new data fields and bump python-join-api ([@bieniu] - [#22472]) +- Bump pypi again for Cisco Mobility Express ([@fbradyirl] - [#22467]) +- Return percentage information in Alexa Smart Home response ([@jackwilsdon] - [#22440]) +- Move HKDevice into connection ([@Jc2k] - [#22430]) +- Incoming SMS handling for netgear_lte ([@amelchio] - [#22402]) +- Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) (new-platform) +- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) +- Fix too-abrubt SimpliSafe data refresh termination on error ([@bachya] - [#22466]) +- Great migration notify ([@robbiet480] - [#22406]) +- Print error instead of warning for custom platforms in legacy format ([@balloob] - [#22486]) +- Add game and app media types ([@cliffordwhansen] - [#22459]) +- Stream Record Service ([@hunterjm] - [#22456]) +- Add trusted_users in trusted networks auth provider ([@awarecan] - [#22478]) + +[#18543]: https://github.com/home-assistant/home-assistant/pull/18543 +[#20767]: https://github.com/home-assistant/home-assistant/pull/20767 +[#20780]: https://github.com/home-assistant/home-assistant/pull/20780 +[#20966]: https://github.com/home-assistant/home-assistant/pull/20966 +[#20992]: https://github.com/home-assistant/home-assistant/pull/20992 +[#21047]: https://github.com/home-assistant/home-assistant/pull/21047 +[#21053]: https://github.com/home-assistant/home-assistant/pull/21053 +[#21091]: https://github.com/home-assistant/home-assistant/pull/21091 +[#21210]: https://github.com/home-assistant/home-assistant/pull/21210 +[#21414]: https://github.com/home-assistant/home-assistant/pull/21414 +[#21432]: https://github.com/home-assistant/home-assistant/pull/21432 +[#21440]: https://github.com/home-assistant/home-assistant/pull/21440 +[#21526]: https://github.com/home-assistant/home-assistant/pull/21526 +[#21593]: https://github.com/home-assistant/home-assistant/pull/21593 +[#21638]: https://github.com/home-assistant/home-assistant/pull/21638 +[#21708]: https://github.com/home-assistant/home-assistant/pull/21708 +[#21710]: https://github.com/home-assistant/home-assistant/pull/21710 +[#21820]: https://github.com/home-assistant/home-assistant/pull/21820 +[#21823]: https://github.com/home-assistant/home-assistant/pull/21823 +[#21834]: https://github.com/home-assistant/home-assistant/pull/21834 +[#21842]: https://github.com/home-assistant/home-assistant/pull/21842 +[#21847]: https://github.com/home-assistant/home-assistant/pull/21847 +[#21883]: https://github.com/home-assistant/home-assistant/pull/21883 +[#21897]: https://github.com/home-assistant/home-assistant/pull/21897 +[#21902]: https://github.com/home-assistant/home-assistant/pull/21902 +[#21952]: https://github.com/home-assistant/home-assistant/pull/21952 +[#21961]: https://github.com/home-assistant/home-assistant/pull/21961 +[#21990]: https://github.com/home-assistant/home-assistant/pull/21990 +[#22001]: https://github.com/home-assistant/home-assistant/pull/22001 +[#22014]: https://github.com/home-assistant/home-assistant/pull/22014 +[#22016]: https://github.com/home-assistant/home-assistant/pull/22016 +[#22023]: https://github.com/home-assistant/home-assistant/pull/22023 +[#22029]: https://github.com/home-assistant/home-assistant/pull/22029 +[#22036]: https://github.com/home-assistant/home-assistant/pull/22036 +[#22038]: https://github.com/home-assistant/home-assistant/pull/22038 +[#22040]: https://github.com/home-assistant/home-assistant/pull/22040 +[#22041]: https://github.com/home-assistant/home-assistant/pull/22041 +[#22049]: https://github.com/home-assistant/home-assistant/pull/22049 +[#22050]: https://github.com/home-assistant/home-assistant/pull/22050 +[#22059]: https://github.com/home-assistant/home-assistant/pull/22059 +[#22064]: https://github.com/home-assistant/home-assistant/pull/22064 +[#22069]: https://github.com/home-assistant/home-assistant/pull/22069 +[#22077]: https://github.com/home-assistant/home-assistant/pull/22077 +[#22081]: https://github.com/home-assistant/home-assistant/pull/22081 +[#22084]: https://github.com/home-assistant/home-assistant/pull/22084 +[#22085]: https://github.com/home-assistant/home-assistant/pull/22085 +[#22087]: https://github.com/home-assistant/home-assistant/pull/22087 +[#22088]: https://github.com/home-assistant/home-assistant/pull/22088 +[#22092]: https://github.com/home-assistant/home-assistant/pull/22092 +[#22096]: https://github.com/home-assistant/home-assistant/pull/22096 +[#22099]: https://github.com/home-assistant/home-assistant/pull/22099 +[#22101]: https://github.com/home-assistant/home-assistant/pull/22101 +[#22105]: https://github.com/home-assistant/home-assistant/pull/22105 +[#22107]: https://github.com/home-assistant/home-assistant/pull/22107 +[#22108]: https://github.com/home-assistant/home-assistant/pull/22108 +[#22109]: https://github.com/home-assistant/home-assistant/pull/22109 +[#22130]: https://github.com/home-assistant/home-assistant/pull/22130 +[#22131]: https://github.com/home-assistant/home-assistant/pull/22131 +[#22132]: https://github.com/home-assistant/home-assistant/pull/22132 +[#22134]: https://github.com/home-assistant/home-assistant/pull/22134 +[#22135]: https://github.com/home-assistant/home-assistant/pull/22135 +[#22139]: https://github.com/home-assistant/home-assistant/pull/22139 +[#22141]: https://github.com/home-assistant/home-assistant/pull/22141 +[#22143]: https://github.com/home-assistant/home-assistant/pull/22143 +[#22149]: https://github.com/home-assistant/home-assistant/pull/22149 +[#22152]: https://github.com/home-assistant/home-assistant/pull/22152 +[#22159]: https://github.com/home-assistant/home-assistant/pull/22159 +[#22164]: https://github.com/home-assistant/home-assistant/pull/22164 +[#22167]: https://github.com/home-assistant/home-assistant/pull/22167 +[#22168]: https://github.com/home-assistant/home-assistant/pull/22168 +[#22171]: https://github.com/home-assistant/home-assistant/pull/22171 +[#22175]: https://github.com/home-assistant/home-assistant/pull/22175 +[#22180]: https://github.com/home-assistant/home-assistant/pull/22180 +[#22181]: https://github.com/home-assistant/home-assistant/pull/22181 +[#22182]: https://github.com/home-assistant/home-assistant/pull/22182 +[#22183]: https://github.com/home-assistant/home-assistant/pull/22183 +[#22189]: https://github.com/home-assistant/home-assistant/pull/22189 +[#22198]: https://github.com/home-assistant/home-assistant/pull/22198 +[#22199]: https://github.com/home-assistant/home-assistant/pull/22199 +[#22200]: https://github.com/home-assistant/home-assistant/pull/22200 +[#22202]: https://github.com/home-assistant/home-assistant/pull/22202 +[#22204]: https://github.com/home-assistant/home-assistant/pull/22204 +[#22205]: https://github.com/home-assistant/home-assistant/pull/22205 +[#22218]: https://github.com/home-assistant/home-assistant/pull/22218 +[#22223]: https://github.com/home-assistant/home-assistant/pull/22223 +[#22224]: https://github.com/home-assistant/home-assistant/pull/22224 +[#22233]: https://github.com/home-assistant/home-assistant/pull/22233 +[#22235]: https://github.com/home-assistant/home-assistant/pull/22235 +[#22240]: https://github.com/home-assistant/home-assistant/pull/22240 +[#22251]: https://github.com/home-assistant/home-assistant/pull/22251 +[#22261]: https://github.com/home-assistant/home-assistant/pull/22261 +[#22266]: https://github.com/home-assistant/home-assistant/pull/22266 +[#22268]: https://github.com/home-assistant/home-assistant/pull/22268 +[#22269]: https://github.com/home-assistant/home-assistant/pull/22269 +[#22272]: https://github.com/home-assistant/home-assistant/pull/22272 +[#22278]: https://github.com/home-assistant/home-assistant/pull/22278 +[#22279]: https://github.com/home-assistant/home-assistant/pull/22279 +[#22282]: https://github.com/home-assistant/home-assistant/pull/22282 +[#22287]: https://github.com/home-assistant/home-assistant/pull/22287 +[#22302]: https://github.com/home-assistant/home-assistant/pull/22302 +[#22304]: https://github.com/home-assistant/home-assistant/pull/22304 +[#22305]: https://github.com/home-assistant/home-assistant/pull/22305 +[#22306]: https://github.com/home-assistant/home-assistant/pull/22306 +[#22307]: https://github.com/home-assistant/home-assistant/pull/22307 +[#22308]: https://github.com/home-assistant/home-assistant/pull/22308 +[#22317]: https://github.com/home-assistant/home-assistant/pull/22317 +[#22318]: https://github.com/home-assistant/home-assistant/pull/22318 +[#22320]: https://github.com/home-assistant/home-assistant/pull/22320 +[#22321]: https://github.com/home-assistant/home-assistant/pull/22321 +[#22328]: https://github.com/home-assistant/home-assistant/pull/22328 +[#22333]: https://github.com/home-assistant/home-assistant/pull/22333 +[#22334]: https://github.com/home-assistant/home-assistant/pull/22334 +[#22339]: https://github.com/home-assistant/home-assistant/pull/22339 +[#22340]: https://github.com/home-assistant/home-assistant/pull/22340 +[#22343]: https://github.com/home-assistant/home-assistant/pull/22343 +[#22345]: https://github.com/home-assistant/home-assistant/pull/22345 +[#22346]: https://github.com/home-assistant/home-assistant/pull/22346 +[#22347]: https://github.com/home-assistant/home-assistant/pull/22347 +[#22348]: https://github.com/home-assistant/home-assistant/pull/22348 +[#22349]: https://github.com/home-assistant/home-assistant/pull/22349 +[#22351]: https://github.com/home-assistant/home-assistant/pull/22351 +[#22353]: https://github.com/home-assistant/home-assistant/pull/22353 +[#22354]: https://github.com/home-assistant/home-assistant/pull/22354 +[#22358]: https://github.com/home-assistant/home-assistant/pull/22358 +[#22363]: https://github.com/home-assistant/home-assistant/pull/22363 +[#22365]: https://github.com/home-assistant/home-assistant/pull/22365 +[#22366]: https://github.com/home-assistant/home-assistant/pull/22366 +[#22367]: https://github.com/home-assistant/home-assistant/pull/22367 +[#22368]: https://github.com/home-assistant/home-assistant/pull/22368 +[#22369]: https://github.com/home-assistant/home-assistant/pull/22369 +[#22370]: https://github.com/home-assistant/home-assistant/pull/22370 +[#22373]: https://github.com/home-assistant/home-assistant/pull/22373 +[#22374]: https://github.com/home-assistant/home-assistant/pull/22374 +[#22378]: https://github.com/home-assistant/home-assistant/pull/22378 +[#22379]: https://github.com/home-assistant/home-assistant/pull/22379 +[#22381]: https://github.com/home-assistant/home-assistant/pull/22381 +[#22382]: https://github.com/home-assistant/home-assistant/pull/22382 +[#22383]: https://github.com/home-assistant/home-assistant/pull/22383 +[#22389]: https://github.com/home-assistant/home-assistant/pull/22389 +[#22390]: https://github.com/home-assistant/home-assistant/pull/22390 +[#22393]: https://github.com/home-assistant/home-assistant/pull/22393 +[#22395]: https://github.com/home-assistant/home-assistant/pull/22395 +[#22397]: https://github.com/home-assistant/home-assistant/pull/22397 +[#22398]: https://github.com/home-assistant/home-assistant/pull/22398 +[#22402]: https://github.com/home-assistant/home-assistant/pull/22402 +[#22403]: https://github.com/home-assistant/home-assistant/pull/22403 +[#22406]: https://github.com/home-assistant/home-assistant/pull/22406 +[#22407]: https://github.com/home-assistant/home-assistant/pull/22407 +[#22414]: https://github.com/home-assistant/home-assistant/pull/22414 +[#22417]: https://github.com/home-assistant/home-assistant/pull/22417 +[#22419]: https://github.com/home-assistant/home-assistant/pull/22419 +[#22421]: https://github.com/home-assistant/home-assistant/pull/22421 +[#22427]: https://github.com/home-assistant/home-assistant/pull/22427 +[#22430]: https://github.com/home-assistant/home-assistant/pull/22430 +[#22431]: https://github.com/home-assistant/home-assistant/pull/22431 +[#22433]: https://github.com/home-assistant/home-assistant/pull/22433 +[#22438]: https://github.com/home-assistant/home-assistant/pull/22438 +[#22440]: https://github.com/home-assistant/home-assistant/pull/22440 +[#22442]: https://github.com/home-assistant/home-assistant/pull/22442 +[#22444]: https://github.com/home-assistant/home-assistant/pull/22444 +[#22452]: https://github.com/home-assistant/home-assistant/pull/22452 +[#22456]: https://github.com/home-assistant/home-assistant/pull/22456 +[#22458]: https://github.com/home-assistant/home-assistant/pull/22458 +[#22459]: https://github.com/home-assistant/home-assistant/pull/22459 +[#22466]: https://github.com/home-assistant/home-assistant/pull/22466 +[#22467]: https://github.com/home-assistant/home-assistant/pull/22467 +[#22472]: https://github.com/home-assistant/home-assistant/pull/22472 +[#22475]: https://github.com/home-assistant/home-assistant/pull/22475 +[#22477]: https://github.com/home-assistant/home-assistant/pull/22477 +[#22478]: https://github.com/home-assistant/home-assistant/pull/22478 +[#22479]: https://github.com/home-assistant/home-assistant/pull/22479 +[#22481]: https://github.com/home-assistant/home-assistant/pull/22481 +[#22482]: https://github.com/home-assistant/home-assistant/pull/22482 +[#22484]: https://github.com/home-assistant/home-assistant/pull/22484 +[#22486]: https://github.com/home-assistant/home-assistant/pull/22486 +[@Adminiuga]: https://github.com/Adminiuga +[@Danielhiversen]: https://github.com/Danielhiversen +[@FattusMannus]: https://github.com/FattusMannus +[@GidoHakvoort]: https://github.com/GidoHakvoort +[@GuryYu]: https://github.com/GuryYu +[@Jc2k]: https://github.com/Jc2k +[@JeffLIrion]: https://github.com/JeffLIrion +[@Kane610]: https://github.com/Kane610 +[@MatthewFlamm]: https://github.com/MatthewFlamm +[@Mofeywalker]: https://github.com/Mofeywalker +[@Oro]: https://github.com/Oro +[@OttoWinter]: https://github.com/OttoWinter +[@SNoof85]: https://github.com/SNoof85 +[@StevenLooman]: https://github.com/StevenLooman +[@SukramJ]: https://github.com/SukramJ +[@Swamp-Ig]: https://github.com/Swamp-Ig +[@a005]: https://github.com/a005 +[@alengwenus]: https://github.com/alengwenus +[@amelchio]: https://github.com/amelchio +[@andrewsayre]: https://github.com/andrewsayre +[@awarecan]: https://github.com/awarecan +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@cgarwood]: https://github.com/cgarwood +[@cgtobi]: https://github.com/cgtobi +[@cliffordwhansen]: https://github.com/cliffordwhansen +[@dagobert]: https://github.com/dagobert +[@dilruacs]: https://github.com/dilruacs +[@dmulcahey]: https://github.com/dmulcahey +[@dshokouhi]: https://github.com/dshokouhi +[@eliseomartelli]: https://github.com/eliseomartelli +[@endor-force]: https://github.com/endor-force +[@escoand]: https://github.com/escoand +[@fabaff]: https://github.com/fabaff +[@fabtesta]: https://github.com/fabtesta +[@fbradyirl]: https://github.com/fbradyirl +[@fredrike]: https://github.com/fredrike +[@fronzbot]: https://github.com/fronzbot +[@heythisisnate]: https://github.com/heythisisnate +[@hfurubotten]: https://github.com/hfurubotten +[@hmmbob]: https://github.com/hmmbob +[@hunterjm]: https://github.com/hunterjm +[@iamtpage]: https://github.com/iamtpage +[@isabellaalstrom]: https://github.com/isabellaalstrom +[@jackwilsdon]: https://github.com/jackwilsdon +[@jameshilliard]: https://github.com/jameshilliard +[@jjlawren]: https://github.com/jjlawren +[@karlkar]: https://github.com/karlkar +[@kbickar]: https://github.com/kbickar +[@ktnrg45]: https://github.com/ktnrg45 +[@lapy]: https://github.com/lapy +[@ljmerza]: https://github.com/ljmerza +[@nbarrientos]: https://github.com/nbarrientos +[@nhorvath]: https://github.com/nhorvath +[@nickw444]: https://github.com/nickw444 +[@nmaggioni]: https://github.com/nmaggioni +[@oblogic7]: https://github.com/oblogic7 +[@pnbruckner]: https://github.com/pnbruckner +[@pvizeli]: https://github.com/pvizeli +[@quentinsf]: https://github.com/quentinsf +[@rdbahm]: https://github.com/rdbahm +[@renemarc]: https://github.com/renemarc +[@robbiet480]: https://github.com/robbiet480 +[@rohankapoorcom]: https://github.com/rohankapoorcom +[@rtclauss]: https://github.com/rtclauss +[@scop]: https://github.com/scop +[@shanbs]: https://github.com/shanbs +[@syssi]: https://github.com/syssi +[@thibmaek]: https://github.com/thibmaek +[@thomasloven]: https://github.com/thomasloven +[@uchagani]: https://github.com/uchagani +[@zewelor]: https://github.com/zewelor From 8dea4b4a7ebcbd764810095adbcbdd7d10c9b057 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Mar 2019 22:24:38 -0700 Subject: [PATCH 43/61] Fix og image to stub --- source/_posts/2019-04-03-release-91.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 9f163dfd706..0b2a1210e8e 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -8,9 +8,11 @@ author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes -og_image: /images/blog/2019-03-release-90/remote.png +og_image: /images/blog/2019-04-release-91/components.png --- + + Streaming: - Recording - Google Assistant support, "Hey Google, show the baby room" From 0197887e106daa8bf09b8c62ec3babdbbf352483 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Mar 2019 22:25:20 -0700 Subject: [PATCH 44/61] Clarify --- source/_posts/2019-04-03-release-91.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 0b2a1210e8e..d1d0758ba09 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -18,7 +18,7 @@ Streaming: - Google Assistant support, "Hey Google, show the baby room" - More supported platforms -Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `light/hue.py`, update it. It will start breaking soon. +Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `light/hue.py`, rename it to `hue/light.py`. It will not be supported in a future release. ESPHome Camera support From 5a3b0b76f46cff23e583fc975ccd055a38b533b9 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Mar 2019 22:25:57 -0700 Subject: [PATCH 45/61] Clarify migration comment --- source/_posts/2019-04-03-release-91.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index d1d0758ba09..b63f75164e3 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -18,7 +18,7 @@ Streaming: - Google Assistant support, "Hey Google, show the baby room" - More supported platforms -Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `light/hue.py`, rename it to `hue/light.py`. It will not be supported in a future release. +Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It will not be supported in a future release. ESPHome Camera support From 4588dbf911da6c20e6291e6cc3349397e30dcc77 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 27 Mar 2019 22:36:51 -0700 Subject: [PATCH 46/61] Update docs --- source/_posts/2019-04-03-release-91.markdown | 433 +++++++++++-------- 1 file changed, 263 insertions(+), 170 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index b63f75164e3..c2e2a4c7062 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -33,20 +33,12 @@ If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Cod ## {% linkable_title New Platforms %} -- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) (new-platform) -- Add LCN sensor platform ([@alengwenus] - [#21440]) (new-platform) -- Add ESPHome Camera ([@OttoWinter] - [#22107]) (new-platform) -- Move platforms patch ([@Swamp-Ig] - [#22168]) (new-platform) -- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) -- Add Freebox switch platform ([@SNoof85] - [#21710]) (new-platform) -- Consolidate more platforms ([@balloob] - [#22308]) (new-platform) -- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) -- Add support for Tfiac Climate component ([@fredrike] - [#21823]) (new-platform) -- Add aws component and consolidate aws notify platform ([@awarecan] - [#22240]) (new-platform) -- Move core stuff into Home Assistant integration ([@balloob] - [#22407]) (new-platform) -- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) (new-platform) -- Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) (new-platform) -- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) +- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) ([zha docs]) (new-platform) +- Add LCN sensor platform ([@alengwenus] - [#21440]) ([lcn docs]) (new-platform) +- Add ESPHome Camera ([@OttoWinter] - [#22107]) ([esphome docs]) (new-platform) +- Add Freebox switch platform ([@SNoof85] - [#21710]) ([freebox docs]) (new-platform) +- Add support for Tfiac Climate component ([@fredrike] - [#21823]) ([tfiac docs]) (new-platform) +- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) ([daikin docs]) (new-platform) ## {% linkable_title If you need help... %} @@ -60,197 +52,197 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) (breaking change) -- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) (breaking change) -- removed iliad ([@eliseomartelli] - [#22175]) (breaking change) -- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) (breaking change) -- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) -- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) (breaking change) -- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) -- Axis config flow ([@Kane610] - [#18543]) (breaking change) -- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) (breaking change) -- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) (breaking change) -- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) (breaking change) -- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) (breaking change) -- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) +- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) ([zwave docs]) (breaking change) +- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) ([ios docs]) (breaking change) +- removed iliad ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) (breaking change) +- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) ([netgear_lte docs]) (breaking change) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) (breaking change) +- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) ([gtfs docs]) (breaking change) +- Move yeelight into component ([@zewelor] - [#21593]) ([yeelight docs]) (breaking change) +- Axis config flow ([@Kane610] - [#18543]) ([axis docs]) (breaking change) +- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) (breaking change) +- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) ([darksky docs]) (breaking change) +- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) ([konnected docs]) (breaking change) +- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) ([gtfs docs]) (breaking change) +- Mopar split ([@rohankapoorcom] - [#21526]) ([mopar docs]) (breaking change) ## {% linkable_title All changes %} -- Add sense guard clause ([@kbickar] - [#22014]) +- Add sense guard clause ([@kbickar] - [#22014]) ([sense docs]) - Upgrade prefetched tox env to py37 ([@awarecan] - [#22029]) - change logging to debug for nmap ([@Danielhiversen] - [#22036]) -- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) (new-platform) -- Ps4 remove throttling ([@ktnrg45] - [#21961]) -- Upgrade youtube_dl to 2019.03.09 ([@fabaff] - [#22041]) -- Async support for Daikin ([@fredrike] - [#21638]) -- Bump amcrest to 1.2.6 & use new exceptions ([@pnbruckner] - [#22040]) -- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) (breaking change) -- Minor ZHA consts fixes ([@Adminiuga] - [#22049]) -- Cleanup remaining constants stuff in ZHA ([@dmulcahey] - [#22050]) -- Add HTTP auth and SSL verification to REST notify ([@escoand] - [#22016]) +- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) ([zha docs]) (new-platform) +- Ps4 remove throttling ([@ktnrg45] - [#21961]) ([ps4 docs]) +- Upgrade youtube_dl to 2019.03.09 ([@fabaff] - [#22041]) ([media_extractor docs]) +- Async support for Daikin ([@fredrike] - [#21638]) ([daikin docs]) +- Bump amcrest to 1.2.6 & use new exceptions ([@pnbruckner] - [#22040]) ([amcrest docs]) +- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) ([zwave docs]) (breaking change) +- Minor ZHA consts fixes ([@Adminiuga] - [#22049]) ([zha docs]) +- Cleanup remaining constants stuff in ZHA ([@dmulcahey] - [#22050]) ([zha docs]) +- Add HTTP auth and SSL verification to REST notify ([@escoand] - [#22016]) ([rest docs]) - Upgrade ruamel.yaml to 0.15.89 ([@fabaff] - [#22064]) -- Update rest.py ([@isabellaalstrom] - [#22077]) -- Telegram_bot: Allow fetching data from unverified SSL endpoints (#22067) ([@nbarrientos] - [#22069]) -- Add LCN sensor platform ([@alengwenus] - [#21440]) (new-platform) +- Update rest.py ([@isabellaalstrom] - [#22077]) ([notify docs]) +- Telegram_bot: Allow fetching data from unverified SSL endpoints (#22067) ([@nbarrientos] - [#22069]) ([telegram_bot docs]) +- Add LCN sensor platform ([@alengwenus] - [#21440]) ([lcn docs]) (new-platform) - Upgrade pytest to 4.3.1 ([@scop] - [#22088]) -- Bump amcrest to 1.2.7 for correct RTSP port ([@pnbruckner] - [#22099]) -- Add available property to Ambient PWS ([@bachya] - [#22092]) -- Restricted temperature units for Celsius and Fahrenheit to the standardized units ([@alengwenus] - [#22108]) +- Bump amcrest to 1.2.7 for correct RTSP port ([@pnbruckner] - [#22099]) ([amcrest docs]) +- Add available property to Ambient PWS ([@bachya] - [#22092]) ([ambient_station docs]) +- Restricted temperature units for Celsius and Fahrenheit to the standardized units ([@alengwenus] - [#22108]) ([lcn docs]) - Consolidate all platforms that have no tests ([@balloob] - [#22096]) -- Add ESPHome Camera ([@OttoWinter] - [#22107]) (new-platform) -- Tibber, Add price level ([@Danielhiversen] - [#22085]) -- Fix AttributeError traceback with darksky ([@iamtpage] - [#22101]) +- Add ESPHome Camera ([@OttoWinter] - [#22107]) ([esphome docs]) (new-platform) +- Tibber, Add price level ([@Danielhiversen] - [#22085]) ([tibber docs]) +- Fix AttributeError traceback with darksky ([@iamtpage] - [#22101]) ([darksky docs]) - Add service description for services. ([@cgtobi] - [#21897]) -- Handle occassional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) -- Loosen field retrieval from Pollen.com ([@bachya] - [#22132]) -- Handle possible exception during Ambient PWS reconnect ([@bachya] - [#22134]) -- Additional sensors and fixed icons, attributes and device classes. ([@endor-force] - [#22139]) -- Fix hlk-sw16 inverted switch state ([@jameshilliard] - [#22059]) -- replace einder lib with horimote ([@benleb] - [#22135]) -- Fixx yeelight flow action param for declared effects ([@zewelor] - [#22159]) -- Add dynamic subscription for ZHA add device page ([@dmulcahey] - [#22164]) +- Handle occassional 502 Bad Gateway from SimpliSafe ([@bachya] - [#22131]) ([simplisafe docs]) +- Loosen field retrieval from Pollen.com ([@bachya] - [#22132]) ([pollen docs]) +- Handle possible exception during Ambient PWS reconnect ([@bachya] - [#22134]) ([ambient_station docs]) +- Additional sensors and fixed icons, attributes and device classes. ([@endor-force] - [#22139]) ([trafikverket_weatherstation docs]) +- Fix hlk-sw16 inverted switch state ([@jameshilliard] - [#22059]) ([hlk_sw16 docs]) +- replace einder lib with horimote ([@benleb] - [#22135]) ([horizon docs]) +- Fixx yeelight flow action param for declared effects ([@zewelor] - [#22159]) ([yeelight docs]) +- Add dynamic subscription for ZHA add device page ([@dmulcahey] - [#22164]) ([zha docs]) - Consolidate all platforms that have tests ([@Swamp-Ig] - [#22109]) -- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) (breaking change) -- Add some tests for Koogeek LS1 ([@Jc2k] - [#22141]) -- Move platforms patch ([@Swamp-Ig] - [#22168]) (new-platform) -- restore entity for switchbot ([@Danielhiversen] - [#22087]) -- removed iliad ([@eliseomartelli] - [#22175]) (breaking change) -- Upgrade youtube_dl to 2019.03.18 ([@fabaff] - [#22181]) +- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) ([ios docs]) (breaking change) +- Add some tests for Koogeek LS1 ([@Jc2k] - [#22141]) ([homekit_controller docs]) +- Move platforms patch ([@Swamp-Ig] - [#22168]) ([mold_indicator docs]) ([moon docs]) +- restore entity for switchbot ([@Danielhiversen] - [#22087]) ([switchbot docs]) +- removed iliad ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) (breaking change) +- Upgrade youtube_dl to 2019.03.18 ([@fabaff] - [#22181]) ([media_extractor docs]) - Upgrade Sphinx to 1.8.5 ([@fabaff] - [#22180]) -- Better handling of HomeKit accessory-information service ([@Jc2k] - [#22171]) -- Fix breaking on HTML email without images ([@dagobert] - [#22143]) +- Better handling of HomeKit accessory-information service ([@Jc2k] - [#22171]) ([homekit_controller docs]) +- Fix breaking on HTML email without images ([@dagobert] - [#22143]) ([notify docs]) - Update codeowners ([@oblogic7] - [#22198]) -- Upgrade psutil to 5.6.1 ([@fabaff] - [#22183]) +- Upgrade psutil to 5.6.1 ([@fabaff] - [#22183]) ([systemmonitor docs]) - Upgrade holidays to 0.9.10 ([@fabaff] - [#22182]) -- Removed overly broad exception handling for nanoleaf light ([@Oro] - [#22189]) +- Removed overly broad exception handling for nanoleaf light ([@Oro] - [#22189]) ([nanoleaf docs]) - Use relative imports inside integrations ([@balloob] - [#22235]) - Make !include_dir_list use alphanumeric order ([@quentinsf] - [#21902]) -- add date_time_iso to time_date sensor ([@uchagani] - [#22199]) -- Bump python-miio version ([@syssi] - [#22202]) -- Upgrade to async_upnp_client==0.14.6 ([@StevenLooman] - [#22223]) -- Fix build issue ([@awarecan] - [#22251]) -- add ZHA channel name property ([@Adminiuga] - [#22218]) -- Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) -- Change .now() to .utcnow() ([@rdbahm] - [#22233]) -- Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) -- Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) -- Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) -- Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) -- Improved exception handling and logging ([@JeffLIrion] - [#22268]) -- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) (breaking change) -- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) (breaking change) (new-platform) -- Fix progress for Plex media_players ([@jjlawren] - [#22224]) -- Add sort by config and tests for Reddit integration ([@ljmerza] - [#22081]) -- Fix Prometheus casting issues ([@robbiet480] - [#22282]) -- Update trait to support auto without ranges. ([@Swamp-Ig] - [#21847]) +- add date_time_iso to time_date sensor ([@uchagani] - [#22199]) ([time_date docs]) +- Bump python-miio version ([@syssi] - [#22202]) ([xiaomi_miio docs]) +- Upgrade to async_upnp_client==0.14.6 ([@StevenLooman] - [#22223]) ([dlna_dmr docs]) ([upnp docs]) +- Fix build issue ([@awarecan] - [#22251]) ([buienradar docs]) +- add ZHA channel name property ([@Adminiuga] - [#22218]) ([zha docs]) +- Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) ([google_assistant docs]) +- Change .now() to .utcnow() ([@rdbahm] - [#22233]) ([season docs]) +- Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) +- Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) ([sql docs]) +- Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) ([plex docs]) +- Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) ([androidtv docs]) +- Improved exception handling and logging ([@JeffLIrion] - [#22268]) ([androidtv docs]) +- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) ([netgear_lte docs]) (breaking change) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) (breaking change) +- Fix progress for Plex media_players ([@jjlawren] - [#22224]) ([plex docs]) +- Add sort by config and tests for Reddit integration ([@ljmerza] - [#22081]) ([reddit docs]) +- Fix Prometheus casting issues ([@robbiet480] - [#22282]) ([prometheus docs]) +- Update trait to support auto without ranges. ([@Swamp-Ig] - [#21847]) ([google_assistant docs]) - Sort code owners alphabetically ([@cgtobi] - [#22304]) -- Update srpenergy library ([@robbiet480] - [#22307]) +- Update srpenergy library ([@robbiet480] - [#22307]) ([srp_energy docs]) - Switch from using Google Maps API for elevation to Open Elevation API ([@robbiet480] - [#22306]) -- Fix for embedded MQTT server configuration ([@robbiet480] - [#22305]) -- Upgrade pylast to 3.1.0 ([@fabaff] - [#22302]) +- Fix for embedded MQTT server configuration ([@robbiet480] - [#22305]) ([mqtt docs]) +- Upgrade pylast to 3.1.0 ([@fabaff] - [#22302]) ([lastfm docs]) - Upgrade py-cpuinfo to 5.0.0 ([@fabaff] - [#22287]) -- Update abbreviation ([@fabaff] - [#22317]) -- Add homematicip cloud connection quality related attributes ([@SukramJ] - [#21990]) -- Add Freebox switch platform ([@SNoof85] - [#21710]) (new-platform) -- Google Assistant: Add camera stream trait ([@balloob] - [#22278]) -- Remove occupancy as it is not available in API ([@thibmaek] - [#22320]) -- Update file header ([@fabaff] - [#22318]) -- Consolidate more platforms ([@balloob] - [#22308]) (new-platform) -- fix where PLATFORM_SCHEMA gets pulled from ([@hunterjm] - [#22334]) +- Update abbreviation ([@fabaff] - [#22317]) ([hp_ilo docs]) +- Add homematicip cloud connection quality related attributes ([@SukramJ] - [#21990]) ([homematicip_cloud docs]) +- Add Freebox switch platform ([@SNoof85] - [#21710]) ([freebox docs]) (new-platform) +- Google Assistant: Add camera stream trait ([@balloob] - [#22278]) ([camera docs]) ([generic docs]) ([google_assistant docs]) +- Remove occupancy as it is not available in API ([@thibmaek] - [#22320]) ([nmbs docs]) +- Update file header ([@fabaff] - [#22318]) ([hyperion docs]) +- Consolidate more platforms ([@balloob] - [#22308]) ([demo docs]) ([generic_thermostat docs]) ([group docs]) ([manual docs]) ([manual_mqtt docs]) ([switch docs]) +- fix where PLATFORM_SCHEMA gets pulled from ([@hunterjm] - [#22334]) ([familyhub docs]) - show which component is causing translation errors ([@uchagani] - [#22340]) -- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) (breaking change) -- Move yeelight into component ([@zewelor] - [#21593]) (breaking change) (new-platform) -- Axis config flow ([@Kane610] - [#18543]) (breaking change) -- Fix pressure in dark sky and openweathermap and add pressure utility ([@MatthewFlamm] - [#21210]) -- Fix xiaomi aqara cube with lumi.acpartner.v3 gateway ([@GuryYu] - [#22130]) -- Support deCONZ library with exception handling ([@Kane610] - [#21952]) +- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) ([gtfs docs]) (breaking change) +- Move yeelight into component ([@zewelor] - [#21593]) ([yeelight docs]) (breaking change) +- Axis config flow ([@Kane610] - [#18543]) ([axis docs]) (breaking change) +- Fix pressure in dark sky and openweathermap and add pressure utility ([@MatthewFlamm] - [#21210]) ([darksky docs]) ([openweathermap docs]) +- Fix xiaomi aqara cube with lumi.acpartner.v3 gateway ([@GuryYu] - [#22130]) ([xiaomi_aqara docs]) +- Support deCONZ library with exception handling ([@Kane610] - [#21952]) ([deconz docs]) - Do not warn when creating an empty database ([@amelchio] - [#22343]) -- Add color support to Philips Moonlight ([@syssi] - [#22204]) +- Add color support to Philips Moonlight ([@syssi] - [#22204]) ([xiaomi_miio docs]) - Add support for the power socket of the Xiaomi AC Partner V3 ([@syssi] - [#22205]) -- Set Onkyo reset log to debug instead of info ([@robbiet480] - [#22369]) -- Upgrade netatmo smart_home module ([@cgtobi] - [#22365]) -- Fix the crash due to absence of the "default_home" in HomeData from pyatmo (netatmo/climate) ([@shanbs] - [#22363]) -- Add support for 'image' media type ([@StevenLooman] - [#22353]) -- Warn user about HTML5 GCM deprecation ([@hmmbob] - [#22351]) -- Turn Panasonic Viera TV on without WOL ([@dilruacs] - [#22084]) -- Properly connect sensors to hub ([@StevenLooman] - [#21414]) -- Add support for Tfiac Climate component ([@fredrike] - [#21823]) (new-platform) -- Add aws component and consolidate aws notify platform ([@awarecan] - [#22240]) (new-platform) +- Set Onkyo reset log to debug instead of info ([@robbiet480] - [#22369]) ([onkyo docs]) +- Upgrade netatmo smart_home module ([@cgtobi] - [#22365]) ([netatmo docs]) +- Fix the crash due to absence of the "default_home" in HomeData from pyatmo (netatmo/climate) ([@shanbs] - [#22363]) ([netatmo docs]) +- Add support for 'image' media type ([@StevenLooman] - [#22353]) ([dlna_dmr docs]) ([media_player docs]) +- Warn user about HTML5 GCM deprecation ([@hmmbob] - [#22351]) ([notify docs]) +- Turn Panasonic Viera TV on without WOL ([@dilruacs] - [#22084]) ([panasonic_viera docs]) +- Properly connect sensors to hub ([@StevenLooman] - [#21414]) ([upnp docs]) +- Add support for Tfiac Climate component ([@fredrike] - [#21823]) ([tfiac docs]) (new-platform) +- Add aws component and consolidate aws notify platform ([@awarecan] - [#22240]) ([aws docs]) - Check if mac is set when more than 2 gateways ([@karlkar] - [#21834]) - Add 'method' parameter to forgiving_round method ([@Mofeywalker] - [#21708]) -- Expose detailed Ecobee equipment status ([@nhorvath] - [#20767]) -- Add ClickSend "caller" option ([@fabtesta] - [#20780]) -- Give HomeKit locks better names by default ([@Jc2k] - [#22333]) -- Improve yeelight component ([@zewelor] - [#22347]) -- Improve PS4 media art fetching and config flow ([@ktnrg45] - [#22167]) -- Allow for custom turn on/off commands ([@JeffLIrion] - [#22354]) -- Remove unused const ([@Jc2k] - [#22383]) -- Frontend indicate require admin ([@balloob] - [#22272]) -- Fix TpLink Device Tracker initialize error ([@a005] - [#22349]) -- Add traccar events ([@lapy] - [#22348]) -- Update python yeelight and add nightlight mode sensor ([@zewelor] - [#22345]) -- updated pydaikin ([@fredrike] - [#22382]) -- Support for Plex sensor with enforced SSL ([@nmaggioni] - [#21432]) -- Search GTFS departures across midnight ([@renemarc] - [#20992]) -- remove config sections from hass.config.components ([@uchagani] - [#22370]) -- Update ring_doorbell to 0.2.3 ([@dshokouhi] - [#22395]) -- Fix unavailable state for homekit locks and covers ([@Jc2k] - [#22390]) -- Add infer_arming_state option to ness alarm ([@nickw444] - [#22379]) -- deCONZ support Xiaomi vibration sensor ([@Kane610] - [#22366]) -- Fix data_key of the xiaomi_aqara cover for LAN protocol v2 ([@syssi] - [#22358]) -- Remove get_serial helper that is no longer needed. ([@Jc2k] - [#22368]) +- Expose detailed Ecobee equipment status ([@nhorvath] - [#20767]) ([ecobee docs]) +- Add ClickSend "caller" option ([@fabtesta] - [#20780]) ([notify docs]) +- Give HomeKit locks better names by default ([@Jc2k] - [#22333]) ([homekit_controller docs]) +- Improve yeelight component ([@zewelor] - [#22347]) ([yeelight docs]) +- Improve PS4 media art fetching and config flow ([@ktnrg45] - [#22167]) ([ps4 docs]) +- Allow for custom turn on/off commands ([@JeffLIrion] - [#22354]) ([androidtv docs]) +- Remove unused const ([@Jc2k] - [#22383]) ([homekit_controller docs]) +- Frontend indicate require admin ([@balloob] - [#22272]) ([config docs]) ([frontend docs]) ([hassio docs]) ([panel_custom docs]) ([panel_iframe docs]) +- Fix TpLink Device Tracker initialize error ([@a005] - [#22349]) ([tplink docs]) +- Add traccar events ([@lapy] - [#22348]) ([traccar docs]) +- Update python yeelight and add nightlight mode sensor ([@zewelor] - [#22345]) ([yeelight docs]) +- updated pydaikin ([@fredrike] - [#22382]) ([daikin docs]) +- Support for Plex sensor with enforced SSL ([@nmaggioni] - [#21432]) ([plex docs]) +- Search GTFS departures across midnight ([@renemarc] - [#20992]) ([gtfs docs]) +- remove config sections from hass.config.components ([@uchagani] - [#22370]) ([config docs]) +- Update ring_doorbell to 0.2.3 ([@dshokouhi] - [#22395]) ([ring docs]) +- Fix unavailable state for homekit locks and covers ([@Jc2k] - [#22390]) ([homekit_controller docs]) +- Add infer_arming_state option to ness alarm ([@nickw444] - [#22379]) ([ness_alarm docs]) +- deCONZ support Xiaomi vibration sensor ([@Kane610] - [#22366]) ([deconz docs]) +- Fix data_key of the xiaomi_aqara cover for LAN protocol v2 ([@syssi] - [#22358]) ([xiaomi_aqara docs]) +- Remove get_serial helper that is no longer needed. ([@Jc2k] - [#22368]) ([homekit_controller docs]) - Set default parallel_update value should base on async_update ([@awarecan] - [#22149]) -- Camera Preferences + Preload Stream ([@hunterjm] - [#22339]) -- Move core stuff into Home Assistant integration ([@balloob] - [#22407]) (new-platform) -- Tibber add support for Watty ([@Danielhiversen] - [#22397]) -- zha fixes ([@dmulcahey] - [#22381]) -- Fix yeelight state update ([@zewelor] - [#22373]) +- Camera Preferences + Preload Stream ([@hunterjm] - [#22339]) ([camera docs]) ([local_file docs]) ([logi_circle docs]) ([onvif docs]) ([push docs]) +- Move core stuff into Home Assistant integration ([@balloob] - [#22407]) ([config docs]) ([hassio docs]) ([homeassistant docs]) +- Tibber add support for Watty ([@Danielhiversen] - [#22397]) ([tibber docs]) +- zha fixes ([@dmulcahey] - [#22381]) ([zha docs]) +- Fix yeelight state update ([@zewelor] - [#22373]) ([yeelight docs]) - Changed busy error to warning ([@fronzbot] - [#22398]) - Migrate tts ([@cgtobi] - [#22403]) -- Add missing append ([@Jc2k] - [#22414]) -- Update translate, fix dev build error ([@awarecan] - [#22419]) -- Use dispatcher for netgear_lte state updates ([@amelchio] - [#22328]) -- ciscomobilityexpress pypi version update ([@fbradyirl] - [#22431]) -- Update homeassistant-pyozw to 0.1.3 ([@pvizeli] - [#22433]) -- Adding conf for deep standby, wake and specific source bouquet of Enigma2 ([@fbradyirl] - [#22393]) +- Add missing append ([@Jc2k] - [#22414]) ([homekit_controller docs]) +- Update translate, fix dev build error ([@awarecan] - [#22419]) ([axis docs]) ([ps4 docs]) ([tellduslive docs]) ([upnp docs]) ([zha docs]) +- Use dispatcher for netgear_lte state updates ([@amelchio] - [#22328]) ([netgear_lte docs]) +- ciscomobilityexpress pypi version update ([@fbradyirl] - [#22431]) ([cisco_mobility_express docs]) +- Update homeassistant-pyozw to 0.1.3 ([@pvizeli] - [#22433]) ([zwave docs]) +- Adding conf for deep standby, wake and specific source bouquet of Enigma2 ([@fbradyirl] - [#22393]) ([enigma2 docs]) - Fix test name ([@balloob] - [#22421]) -- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) (breaking change) +- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) (breaking change) - Update ha-ffmpeg 2.0 ([@pvizeli] - [#22427]) - Add myself as codeowner for yeelight component ([@zewelor] - [#22438]) - Update ZHA component CODEOWNERS ([@Adminiuga] - [#22452]) -- Add support for yeelight ceiling ambilight ([@zewelor] - [#22346]) +- Add support for yeelight ceiling ambilight ([@zewelor] - [#22346]) ([yeelight docs]) - Bootstrap to start registry loading early ([@Swamp-Ig] - [#22321]) -- Axis devices support device registry ([@Kane610] - [#22367]) -- Use voluptuous error string for websocket validation error ([@ljmerza] - [#21883]) -- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) (breaking change) -- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) (new-platform) -- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) (breaking change) -- Solaredge new sensors ([@GidoHakvoort] - [#21047]) -- Fix aws.notify platform schema ([@awarecan] - [#22374]) -- Do data extraction in sensors ([@amelchio] - [#22444]) -- Remove homekit_controller duplicate legacy pairing loader code ([@Jc2k] - [#22442]) -- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) (breaking change) -- Modify check for ADB public key ([@dilruacs] - [#22378]) +- Axis devices support device registry ([@Kane610] - [#22367]) ([axis docs]) +- Use voluptuous error string for websocket validation error ([@ljmerza] - [#21883]) ([websocket_api docs]) +- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) ([darksky docs]) (breaking change) +- Add switches to control Daikin Airbase zones ([@fredrike] - [#22417]) ([daikin docs]) (new-platform) +- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) ([konnected docs]) (breaking change) +- Solaredge new sensors ([@GidoHakvoort] - [#21047]) ([solaredge docs]) +- Fix aws.notify platform schema ([@awarecan] - [#22374]) ([aws docs]) +- Do data extraction in sensors ([@amelchio] - [#22444]) ([netgear_lte docs]) +- Remove homekit_controller duplicate legacy pairing loader code ([@Jc2k] - [#22442]) ([homekit_controller docs]) +- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) ([gtfs docs]) (breaking change) +- Modify check for ADB public key ([@dilruacs] - [#22378]) ([androidtv docs]) - Centralize all usages of `host` as a configuration param to the constant CONF_HOST ([@rohankapoorcom] - [#22458]) -- Don't return cover position when not supported ([@andrewsayre] - [#22484]) +- Don't return cover position when not supported ([@andrewsayre] - [#22484]) ([smartthings docs]) - Targeted ZHA permit joins. ([@Adminiuga] - [#22482]) -- Fix auto discovery of yeelights ([@syssi] - [#22481]) -- fix inverse state changes for binary sensors ([@heythisisnate] - [#22479]) -- Fix events so they work with multiple devices ([@Kane610] - [#22477]) -- Improve Sensibo error handling ([@Danielhiversen] - [#22475]) -- Add new data fields and bump python-join-api ([@bieniu] - [#22472]) -- Bump pypi again for Cisco Mobility Express ([@fbradyirl] - [#22467]) -- Return percentage information in Alexa Smart Home response ([@jackwilsdon] - [#22440]) -- Move HKDevice into connection ([@Jc2k] - [#22430]) -- Incoming SMS handling for netgear_lte ([@amelchio] - [#22402]) -- Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) (new-platform) -- Mopar split ([@rohankapoorcom] - [#21526]) (breaking change) (new-platform) -- Fix too-abrubt SimpliSafe data refresh termination on error ([@bachya] - [#22466]) +- Fix auto discovery of yeelights ([@syssi] - [#22481]) ([yeelight docs]) +- fix inverse state changes for binary sensors ([@heythisisnate] - [#22479]) ([konnected docs]) +- Fix events so they work with multiple devices ([@Kane610] - [#22477]) ([axis docs]) +- Improve Sensibo error handling ([@Danielhiversen] - [#22475]) ([sensibo docs]) +- Add new data fields and bump python-join-api ([@bieniu] - [#22472]) ([joaoapps_join docs]) +- Bump pypi again for Cisco Mobility Express ([@fbradyirl] - [#22467]) ([cisco_mobility_express docs]) +- Return percentage information in Alexa Smart Home response ([@jackwilsdon] - [#22440]) ([alexa docs]) +- Move HKDevice into connection ([@Jc2k] - [#22430]) ([homekit_controller docs]) +- Incoming SMS handling for netgear_lte ([@amelchio] - [#22402]) ([netgear_lte docs]) +- Entur upgrade to v0.2.0: async polling, number of departures, omit non boarding departures ([@hfurubotten] - [#22001]) ([entur_public_transport docs]) +- Mopar split ([@rohankapoorcom] - [#21526]) ([mopar docs]) (breaking change) +- Fix too-abrubt SimpliSafe data refresh termination on error ([@bachya] - [#22466]) ([simplisafe docs]) - Great migration notify ([@robbiet480] - [#22406]) - Print error instead of warning for custom platforms in legacy format ([@balloob] - [#22486]) -- Add game and app media types ([@cliffordwhansen] - [#22459]) -- Stream Record Service ([@hunterjm] - [#22456]) -- Add trusted_users in trusted networks auth provider ([@awarecan] - [#22478]) +- Add game and app media types ([@cliffordwhansen] - [#22459]) ([media_player docs]) ([ps4 docs]) +- Stream Record Service ([@hunterjm] - [#22456]) ([camera docs]) ([stream docs]) +- Add trusted_users in trusted networks auth provider ([@awarecan] - [#22478]) ([auth docs]) [#18543]: https://github.com/home-assistant/home-assistant/pull/18543 [#20767]: https://github.com/home-assistant/home-assistant/pull/20767 @@ -501,3 +493,104 @@ Experiencing issues introduced by this release? Please report them in our [issue [@thomasloven]: https://github.com/thomasloven [@uchagani]: https://github.com/uchagani [@zewelor]: https://github.com/zewelor +[alexa docs]: /components/alexa/ +[ambient_station docs]: /components/ambient_station/ +[amcrest docs]: /components/amcrest/ +[androidtv docs]: /components/androidtv/ +[api_streams docs]: /components/api_streams/ +[auth docs]: /components/auth/ +[aws docs]: /components/aws/ +[axis docs]: /components/axis/ +[buienradar docs]: /components/buienradar/ +[camera docs]: /components/camera/ +[cisco_mobility_express docs]: /components/cisco_mobility_express/ +[config docs]: /components/config/ +[daikin docs]: /components/daikin/ +[darksky docs]: /components/darksky/ +[deconz docs]: /components/deconz/ +[demo docs]: /components/demo/ +[dlna_dmr docs]: /components/dlna_dmr/ +[ecobee docs]: /components/ecobee/ +[enigma2 docs]: /components/enigma2/ +[entur_public_transport docs]: /components/entur_public_transport/ +[esphome docs]: /components/esphome/ +[familyhub docs]: /components/familyhub/ +[freebox docs]: /components/freebox/ +[frontend docs]: /components/frontend/ +[generic docs]: /components/generic/ +[generic_thermostat docs]: /components/generic_thermostat/ +[google_assistant docs]: /components/google_assistant/ +[group docs]: /components/group/ +[gtfs docs]: /components/gtfs/ +[hassio docs]: /components/hassio/ +[hlk_sw16 docs]: /components/hlk_sw16/ +[homeassistant docs]: /components/homeassistant/ +[homekit_controller docs]: /components/homekit_controller/ +[homematicip_cloud docs]: /components/homematicip_cloud/ +[horizon docs]: /components/horizon/ +[hp_ilo docs]: /components/hp_ilo/ +[http docs]: /components/http/ +[hyperion docs]: /components/hyperion/ +[iliad_italy docs]: /components/iliad_italy/ +[ios docs]: /components/ios/ +[joaoapps_join docs]: /components/joaoapps_join/ +[konnected docs]: /components/konnected/ +[lastfm docs]: /components/lastfm/ +[lcn docs]: /components/lcn/ +[local_file docs]: /components/local_file/ +[logi_circle docs]: /components/logi_circle/ +[manual docs]: /components/manual/ +[manual_mqtt docs]: /components/manual_mqtt/ +[media_extractor docs]: /components/media_extractor/ +[media_player docs]: /components/media_player/ +[mold_indicator docs]: /components/mold_indicator/ +[moon docs]: /components/moon/ +[mopar docs]: /components/mopar/ +[mqtt docs]: /components/mqtt/ +[nanoleaf docs]: /components/nanoleaf/ +[ness_alarm docs]: /components/ness_alarm/ +[netatmo docs]: /components/netatmo/ +[netgear_lte docs]: /components/netgear_lte/ +[nmbs docs]: /components/nmbs/ +[notify docs]: /components/notify/ +[onkyo docs]: /components/onkyo/ +[onvif docs]: /components/onvif/ +[openweathermap docs]: /components/openweathermap/ +[panasonic_viera docs]: /components/panasonic_viera/ +[panel_custom docs]: /components/panel_custom/ +[panel_iframe docs]: /components/panel_iframe/ +[plex docs]: /components/plex/ +[pollen docs]: /components/pollen/ +[prometheus docs]: /components/prometheus/ +[ps4 docs]: /components/ps4/ +[push docs]: /components/push/ +[reddit docs]: /components/reddit/ +[rest docs]: /components/rest/ +[ring docs]: /components/ring/ +[season docs]: /components/season/ +[sense docs]: /components/sense/ +[sensibo docs]: /components/sensibo/ +[simplisafe docs]: /components/simplisafe/ +[smartthings docs]: /components/smartthings/ +[solaredge docs]: /components/solaredge/ +[sql docs]: /components/sql/ +[srp_energy docs]: /components/srp_energy/ +[stream docs]: /components/stream/ +[switch docs]: /components/switch/ +[switchbot docs]: /components/switchbot/ +[systemmonitor docs]: /components/systemmonitor/ +[telegram_bot docs]: /components/telegram_bot/ +[tellduslive docs]: /components/tellduslive/ +[tfiac docs]: /components/tfiac/ +[tibber docs]: /components/tibber/ +[time_date docs]: /components/time_date/ +[tplink docs]: /components/tplink/ +[traccar docs]: /components/traccar/ +[trafikverket_weatherstation docs]: /components/trafikverket_weatherstation/ +[upnp docs]: /components/upnp/ +[websocket_api docs]: /components/websocket_api/ +[xiaomi_aqara docs]: /components/xiaomi_aqara/ +[xiaomi_miio docs]: /components/xiaomi_miio/ +[yeelight docs]: /components/yeelight/ +[zha docs]: /components/zha/ +[zwave docs]: /components/zwave/ From ea7edc5e20bf9b32f5e2f9e4f162c821d1d597d2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 31 Mar 2019 23:02:01 -0700 Subject: [PATCH 47/61] Add require_admin options --- source/_components/panel_custom.markdown | 4 ++++ source/_components/panel_iframe.markdown | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 0199458e5ba..49ec76dc699 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -63,6 +63,10 @@ config: description: Configuration to be passed into your web component when being instantiated. required: false type: list +require_admin: + description: If admin access is required to see this panel. + required: false + type: boolean embed_iframe: description: Set to `true` to embed panel in iframe. This is necessary if the panel is using the React framework or if it contains conflicting web components. required: false diff --git a/source/_components/panel_iframe.markdown b/source/_components/panel_iframe.markdown index 9f79b38edb3..6b3e58faee8 100644 --- a/source/_components/panel_iframe.markdown +++ b/source/_components/panel_iframe.markdown @@ -58,6 +58,10 @@ panel_iframe: description: Icon for entry. required: false type: icon + require_admin: + description: If admin access is required to see this iframe. + required: false + type: boolean {% endconfiguration %}

Do **not** create one that are named `lovelace` it will overwrite lovelace causing it to never load.

From 1d3096e3ae1bac818725ea4cdbdad0ed467c0c2c Mon Sep 17 00:00:00 2001 From: cogneato Date: Mon, 1 Apr 2019 00:34:21 -0600 Subject: [PATCH 48/61] edit breaking changes Provide friendly descriptions for breaking changes --- source/_posts/2019-04-03-release-91.markdown | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index c2e2a4c7062..2ad7e7cf28e 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -52,13 +52,14 @@ Experiencing issues introduced by this release? Please report them in our [issue ## {% linkable_title Breaking Changes %} -- Z-Wave usb_path in configuration.yaml overrides config entry usb_path ([@cgarwood] - [#22038]) ([zwave docs]) (breaking change) -- Change ATTR_BATTERY_STATE_UNPLUGGED for ios component ([@FattusMannus] - [#22152]) ([ios docs]) (breaking change) -- removed iliad ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) (breaking change) -- Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) ([netgear_lte docs]) (breaking change) -- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) (breaking change) -- Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) ([gtfs docs]) (breaking change) -- Move yeelight into component ([@zewelor] - [#21593]) ([yeelight docs]) (breaking change) +- __Z-Wave__ - The usb_path in configuration.yaml now overrides config entry usb_path. This is potentially a breaking change if people have a stale usb_path setting in configuration.yaml that's no longer accurate. This should help reduce the number of people that need to manually edit the storage/core.config_entries file if their usb_path changes. ([@cgarwood] - [#22038]) ([zwave docs]) + +- __iOS__ - Improves the text description of ATTR_BATTERY_STATE_UNPLUGGED from Unplugged to Not Charging as many new iOS devices now use Wireless charging and there is no concept of "Plugging In". This is potentially a breaking change if you have automations making use of "unplugged". ([@FattusMannus] - [#22152]) ([ios docs]) +- __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) +- __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](https://www.home-assistant.io/components/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) +- __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/sensor.websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) +- __Public Transit (GTFS)__ - The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) +- __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make it possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) - Axis config flow ([@Kane610] - [#18543]) ([axis docs]) (breaking change) - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) (breaking change) - Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) ([darksky docs]) (breaking change) From 2876ce710d0f7343dcd1b4ecd8aba9cf64b56e83 Mon Sep 17 00:00:00 2001 From: cogneato Date: Mon, 1 Apr 2019 07:57:41 -0600 Subject: [PATCH 49/61] more breaking change descriptions --- source/_posts/2019-04-03-release-91.markdown | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 2ad7e7cf28e..fecd99bd0ff 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -58,14 +58,16 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) - __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](https://www.home-assistant.io/components/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) - __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/sensor.websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) -- __Public Transit (GTFS)__ - The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) -- __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make it possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) -- Axis config flow ([@Kane610] - [#18543]) ([axis docs]) (breaking change) -- Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) (breaking change) -- Add hourly forecasts to Dark Sky ([@rtclauss] - [#21820]) ([darksky docs]) (breaking change) -- better algorithm for computing unique_id ([@heythisisnate] - [#22389]) ([konnected docs]) (breaking change) -- Cache GTFS metadata and expose utility attributes (breaking change) ([@renemarc] - [#20966]) ([gtfs docs]) (breaking change) -- Mopar split ([@rohankapoorcom] - [#21526]) ([mopar docs]) (breaking change) +- __Public Transit (GTFS)__ + * The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) + * Sensor updates were runingn many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) +- __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make if possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) +- __Axis__ - Events supplied from component might differ. Events will not be configurable in the beginning but will instead provide a subset set of events supported per device. This will be configurable in a later stage when config entry options are available. Configuration.yaml support for Axis component will be removed in the future so make sure to remove references to Axis component after upgrade. ([@Kane610] - [#18543]) ([axis docs]) +- __HTTP__ - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) +- __Dark Sky__ - Dark Sky provides hourly forecasts for various monitored conditions. This change creates new sensors for each hourly forecasted condition with suffix `_h` while adding the suffix `_d` to the daily forecasted conditions. For example, now a `sensor.dark_sky_summary_d` and `sensor.dark_sky_summary_h` will be created if the forecast and hourly_forecast parameters are populated. ([@rtclauss] - [#21820]) ([darksky docs]) +- __Konnected__ - This will change the internal unique_id for Konnected switches (i.e. siren, buzzer, generic switch). Users will need to manually remove the orphaned switch entities from the entity registry after updating and re-configure any changes stored in the entity registry (i.e. name and entity_id), as their unique IDs will change. ([@heythisisnate] - [#22389]) ([konnected docs]) + +- __Mopar__ - The mopar sensor platform has been broken up into a base component with sensor, switch, and lock platforms. The sensor.mopar_remote_command service has been removed since the functionality has been folded into the new platforms and the new mopar.sound_horn service. Please view the documentation to see the new setup instructions. ([@rohankapoorcom] - [#21526]) ([mopar docs]) ## {% linkable_title All changes %} From 635ebda6451c857c64fdf26ca5d9ed3bf50e5f91 Mon Sep 17 00:00:00 2001 From: cogneato Date: Mon, 1 Apr 2019 07:58:47 -0600 Subject: [PATCH 50/61] typo --- source/_posts/2019-04-03-release-91.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index fecd99bd0ff..b10a2ed4b5f 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -60,7 +60,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/sensor.websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) - __Public Transit (GTFS)__ * The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) - * Sensor updates were runingn many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) + * Sensor updates were running many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) - __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make if possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) - __Axis__ - Events supplied from component might differ. Events will not be configurable in the beginning but will instead provide a subset set of events supported per device. This will be configurable in a later stage when config entry options are available. Configuration.yaml support for Axis component will be removed in the future so make sure to remove references to Axis component after upgrade. ([@Kane610] - [#18543]) ([axis docs]) - __HTTP__ - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) From 84ad821a8f6253cc7c64802aeb81311926794ae4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 1 Apr 2019 09:19:59 -0700 Subject: [PATCH 51/61] Autoheal default to false. Remove line that no longer relevant. --- source/_docs/z-wave/installation.markdown | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 803fd3f050e..136329e448a 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -37,11 +37,6 @@ config_path: required: false type: string default: the 'config' that is installed by python-openzwave -autoheal: - description: Allows disabling auto Z-Wave heal at midnight. - required: false - type: boolean - default: true polling_interval: description: The time period in milliseconds between polls of a nodes value. Be careful about using polling values below 30000 (30 seconds) as polling can flood the zwave network and cause problems. required: false @@ -52,6 +47,11 @@ debug: required: false type: boolean default: false +autoheal: + description: Allows enabling auto Z-Wave heal at midnight. Warning, this is in efficient and [should not be used](https://github.com/home-assistant/architecture/issues/81#issuecomment-478444085). + required: false + type: boolean + default: false device_config / device_config_domain / device_config_glob: description: "This attribute contains node-specific override values. NOTE: This needs to be specified if you are going to use any of the following options. See [Customizing devices and services](/docs/configuration/customizing-devices/) for the format." required: false @@ -84,12 +84,6 @@ device_config / device_config_domain / device_config_glob: default: false {% endconfiguration %} -

-As of Home Assistant 0.81, the Z-Wave `usb_path` and `network_key` options are configured through the Integrations page in Home Assistant. Specifying a `zwave:` section in `configuration.yaml` is no longer required unless you need to customize other settings, such as `device_config`, `polling_interval`, etc. - -If you change the `usb_path` or `network_key` in your `configuration.yaml` then this will not be updated in the integration. You'll need to remove and re-add the Integration for these changes to take effect. -

- ### {% linkable_title Network Key %} Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. From e6d313df669c084928d41102ac067de48d416228 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 2 Apr 2019 15:22:49 -0700 Subject: [PATCH 52/61] Add ESPHome Cam demo --- source/_posts/2019-04-03-release-91.markdown | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index b10a2ed4b5f..0386a04ce24 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -31,6 +31,15 @@ If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Cod + +
+ +
+ + + + + ## {% linkable_title New Platforms %} - Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) ([zha docs]) (new-platform) @@ -58,13 +67,13 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) - __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](https://www.home-assistant.io/components/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) - __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/sensor.websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) -- __Public Transit (GTFS)__ +- __Public Transit (GTFS)__ * The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) * Sensor updates were running many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) - __Yeelight__ - This is now its own component and has been broken out from the light platform. More Yeelights are being released with more features and this will make if possible to support them. Examples would be adding sensors for a ceiling light, getting the current power mode (daylight/nightlight), or supporting switches to turn moonlight on or off without having to use a service call. Make sure to visit the updated documentation. ([@zewelor] - [#21593]) ([yeelight docs]) - __Axis__ - Events supplied from component might differ. Events will not be configurable in the beginning but will instead provide a subset set of events supported per device. This will be configurable in a later stage when config entry options are available. Configuration.yaml support for Axis component will be removed in the future so make sure to remove references to Axis component after upgrade. ([@Kane610] - [#18543]) ([axis docs]) - __HTTP__ - Lower severity level of log messages from http.view ([@thomasloven] - [#21091]) ([http docs]) -- __Dark Sky__ - Dark Sky provides hourly forecasts for various monitored conditions. This change creates new sensors for each hourly forecasted condition with suffix `_h` while adding the suffix `_d` to the daily forecasted conditions. For example, now a `sensor.dark_sky_summary_d` and `sensor.dark_sky_summary_h` will be created if the forecast and hourly_forecast parameters are populated. ([@rtclauss] - [#21820]) ([darksky docs]) +- __Dark Sky__ - Dark Sky provides hourly forecasts for various monitored conditions. This change creates new sensors for each hourly forecasted condition with suffix `_h` while adding the suffix `_d` to the daily forecasted conditions. For example, now a `sensor.dark_sky_summary_d` and `sensor.dark_sky_summary_h` will be created if the forecast and hourly_forecast parameters are populated. ([@rtclauss] - [#21820]) ([darksky docs]) - __Konnected__ - This will change the internal unique_id for Konnected switches (i.e. siren, buzzer, generic switch). Users will need to manually remove the orphaned switch entities from the entity registry after updating and re-configure any changes stored in the entity registry (i.e. name and entity_id), as their unique IDs will change. ([@heythisisnate] - [#22389]) ([konnected docs]) - __Mopar__ - The mopar sensor platform has been broken up into a base component with sensor, switch, and lock platforms. The sensor.mopar_remote_command service has been removed since the functionality has been folded into the new platforms and the new mopar.sound_horn service. Please view the documentation to see the new setup instructions. ([@rohankapoorcom] - [#21526]) ([mopar docs]) From 24eb5e843148c845ab8c1f28e1169a8b844028bf Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Tue, 2 Apr 2019 21:30:09 -0700 Subject: [PATCH 53/61] Update post --- source/_posts/2019-04-03-release-91.markdown | 130 +++++++++++++++++-- 1 file changed, 120 insertions(+), 10 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 0386a04ce24..750fe9a0bad 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -18,28 +18,31 @@ Streaming: - Google Assistant support, "Hey Google, show the baby room" - More supported platforms +## {% linkable_title Notable breaking change %} + Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It will not be supported in a future release. -ESPHome Camera support + +## {% linkable_title Trusted networks update %} Trusted users added to trusted networks auth provider. Including auto log in if only one user matching. +## {% linkable_title VSCode hass.io add-on %} If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck +## {% linkable_title ESPHome %} +ESPHome Camera support
- - - ## {% linkable_title New Platforms %} - Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) ([zha docs]) (new-platform) @@ -78,6 +81,37 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Mopar__ - The mopar sensor platform has been broken up into a base component with sensor, switch, and lock platforms. The sensor.mopar_remote_command service has been removed since the functionality has been folded into the new platforms and the new mopar.sound_horn service. Please view the documentation to see the new setup instructions. ([@rohankapoorcom] - [#21526]) ([mopar docs]) +## {% linkable_title Beta Fixes %} + +- Fix regression of the xiaomi_aqara config validation ([@syssi] - [#22435]) ([xiaomi_aqara docs]) (breaking change) (beta fix) +- Fix dev branch ([@awarecan] - [#22493]) ([homekit_controller docs]) (beta fix) +- Update pyotgw to 0.4b3 ([@mvn23] - [#22496]) ([opentherm_gw docs]) (beta fix) +- Fixes for yeelight availbility state ([@zewelor] - [#22502]) ([yeelight docs]) (beta fix) +- Remove botocore dependency from credstash script ([@awarecan] - [#22511]) (beta fix) +- Fix lint on dev ([@awarecan] - [#22512]) (beta fix) +- Do not use zha default light polling ([@dmulcahey] - [#22513]) ([zha docs]) (beta fix) +- PS4 bump to 0.5.2 ([@ktnrg45] - [#22523]) ([ps4 docs]) (beta fix) +- clean up channel configuration ([@dmulcahey] - [#22534]) ([zha docs]) (beta fix) +- Fix tts Great Migration issue ([@awarecan] - [#22539]) ([amazon_polly docs]) ([baidu docs]) ([marytts docs]) ([microsoft docs]) ([picotts docs]) ([voicerss docs]) ([yandextts docs]) (beta fix) +- Upgrade to async_upnp_client==0.14.7 ([@StevenLooman] - [#22543]) ([dlna_dmr docs]) ([upnp docs]) (beta fix) +- Bump zigpy ([@damarco] - [#22545]) ([zha docs]) (beta fix) +- Add support for streaming to ffmpeg ([@balloob] - [#22549]) ([ffmpeg docs]) (beta fix) +- Fix platform warnings ([@balloob] - [#22551]) (beta fix) +- Google assistant: add blinds trait for covers ([@giefca] - [#22336]) ([google_assistant docs]) (breaking change) (beta fix) +- Update Amcrest component to SUPPORT_STREAM ([@drjared88] - [#22553]) ([amcrest docs]) (beta fix) +- Fix name conflict in tests ([@awarecan] - [#22556]) (beta fix) +- Update ONVIF component to SUPPORT_STREAM ([@drjared88] - [#22569]) ([onvif docs]) (beta fix) +- Add stream to the default config ([@balloob] - [#22602]) ([default_config docs]) (beta fix) +- Add trusted networks deprecating warning ([@awarecan] - [#22487]) ([http docs]) (beta fix) +- Hass.io ingress ([@pvizeli] - [#22505]) ([hassio docs]) (beta fix) +- Update Foscam component to support stream source ([@cwhits] - [#22568]) ([foscam docs]) (beta fix) +- Update face_recognition to 1.2.3 ([@pvizeli] - [#22622]) ([dlib_face_detect docs]) ([dlib_face_identify docs]) (beta fix) +- Disable Z-Wave autoheal ([@balloob] - [#22628]) ([zwave docs]) (beta fix) +- Handle disonnect bug in Tibber library ([@Danielhiversen] - [#22629]) ([tibber docs]) (beta fix) +- Support GET params for websocket ingress path ([@pvizeli] - [#22638]) ([hassio docs]) (beta fix) +- Return 0 for failed Foscam streams ([@cwhits] - [#22651]) ([foscam docs]) (beta fix) +- Fix racy homekit_controller platform setup caused by #22368 ([@Jc2k] - [#22655]) ([homekit_controller docs]) (beta fix) + ## {% linkable_title All changes %} - Add sense guard clause ([@kbickar] - [#22014]) ([sense docs]) @@ -137,7 +171,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Handle on/off through TemperatrureSetting trait. ([@Swamp-Ig] - [#21842]) ([google_assistant docs]) - Change .now() to .utcnow() ([@rdbahm] - [#22233]) ([season docs]) - Upgrade tibber libary, support solar production ([@Danielhiversen] - [#22261]) ([tibber docs]) -- Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) ([sql docs]) +- Upgrade sqlalchemy to 1.3.0 ([@fabaff] - [#22269]) ([recorder docs]) ([sql docs]) - Plex: Avoid refreshing by both device and session methods ([@jjlawren] - [#22266]) ([plex docs]) - Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) ([androidtv docs]) - Improved exception handling and logging ([@JeffLIrion] - [#22268]) ([androidtv docs]) @@ -163,12 +197,12 @@ Experiencing issues introduced by this release? Please report them in our [issue - fix where PLATFORM_SCHEMA gets pulled from ([@hunterjm] - [#22334]) ([familyhub docs]) - show which component is causing translation errors ([@uchagani] - [#22340]) - Define GTFS sensor as a timestamp device class ([@renemarc] - [#21053]) ([gtfs docs]) (breaking change) -- Move yeelight into component ([@zewelor] - [#21593]) ([yeelight docs]) (breaking change) -- Axis config flow ([@Kane610] - [#18543]) ([axis docs]) (breaking change) +- Move yeelight into component ([@zewelor] - [#21593]) ([discovery docs]) ([yeelight docs]) (breaking change) +- Axis config flow ([@Kane610] - [#18543]) ([axis docs]) ([discovery docs]) (breaking change) - Fix pressure in dark sky and openweathermap and add pressure utility ([@MatthewFlamm] - [#21210]) ([darksky docs]) ([openweathermap docs]) - Fix xiaomi aqara cube with lumi.acpartner.v3 gateway ([@GuryYu] - [#22130]) ([xiaomi_aqara docs]) - Support deCONZ library with exception handling ([@Kane610] - [#21952]) ([deconz docs]) -- Do not warn when creating an empty database ([@amelchio] - [#22343]) +- Do not warn when creating an empty database ([@amelchio] - [#22343]) ([recorder docs]) - Add color support to Philips Moonlight ([@syssi] - [#22204]) ([xiaomi_miio docs]) - Add support for the power socket of the Xiaomi AC Partner V3 ([@syssi] - [#22205]) - Set Onkyo reset log to debug instead of info ([@robbiet480] - [#22369]) ([onkyo docs]) @@ -192,7 +226,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Frontend indicate require admin ([@balloob] - [#22272]) ([config docs]) ([frontend docs]) ([hassio docs]) ([panel_custom docs]) ([panel_iframe docs]) - Fix TpLink Device Tracker initialize error ([@a005] - [#22349]) ([tplink docs]) - Add traccar events ([@lapy] - [#22348]) ([traccar docs]) -- Update python yeelight and add nightlight mode sensor ([@zewelor] - [#22345]) ([yeelight docs]) +- Update python yeelight and add nightlight mode sensor ([@zewelor] - [#22345]) ([discovery docs]) ([yeelight docs]) - updated pydaikin ([@fredrike] - [#22382]) ([daikin docs]) - Support for Plex sensor with enforced SSL ([@nmaggioni] - [#21432]) ([plex docs]) - Search GTFS departures across midnight ([@renemarc] - [#20992]) ([gtfs docs]) @@ -222,7 +256,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update ha-ffmpeg 2.0 ([@pvizeli] - [#22427]) - Add myself as codeowner for yeelight component ([@zewelor] - [#22438]) - Update ZHA component CODEOWNERS ([@Adminiuga] - [#22452]) -- Add support for yeelight ceiling ambilight ([@zewelor] - [#22346]) ([yeelight docs]) +- Add support for yeelight ceiling ambilight ([@zewelor] - [#22346]) ([discovery docs]) ([yeelight docs]) - Bootstrap to start registry loading early ([@Swamp-Ig] - [#22321]) - Axis devices support device registry ([@Kane610] - [#22367]) ([axis docs]) - Use voluptuous error string for websocket validation error ([@ljmerza] - [#21883]) ([websocket_api docs]) @@ -255,6 +289,34 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add game and app media types ([@cliffordwhansen] - [#22459]) ([media_player docs]) ([ps4 docs]) - Stream Record Service ([@hunterjm] - [#22456]) ([camera docs]) ([stream docs]) - Add trusted_users in trusted networks auth provider ([@awarecan] - [#22478]) ([auth docs]) +- Fix regression of the xiaomi_aqara config validation ([@syssi] - [#22435]) ([xiaomi_aqara docs]) (breaking change) (beta fix) +- Fix dev branch ([@awarecan] - [#22493]) ([homekit_controller docs]) (beta fix) +- Update pyotgw to 0.4b3 ([@mvn23] - [#22496]) ([opentherm_gw docs]) (beta fix) +- Fixes for yeelight availbility state ([@zewelor] - [#22502]) ([yeelight docs]) (beta fix) +- Remove botocore dependency from credstash script ([@awarecan] - [#22511]) (beta fix) +- Fix lint on dev ([@awarecan] - [#22512]) (beta fix) +- Do not use zha default light polling ([@dmulcahey] - [#22513]) ([zha docs]) (beta fix) +- PS4 bump to 0.5.2 ([@ktnrg45] - [#22523]) ([ps4 docs]) (beta fix) +- clean up channel configuration ([@dmulcahey] - [#22534]) ([zha docs]) (beta fix) +- Fix tts Great Migration issue ([@awarecan] - [#22539]) ([amazon_polly docs]) ([baidu docs]) ([marytts docs]) ([microsoft docs]) ([picotts docs]) ([voicerss docs]) ([yandextts docs]) (beta fix) +- Upgrade to async_upnp_client==0.14.7 ([@StevenLooman] - [#22543]) ([dlna_dmr docs]) ([upnp docs]) (beta fix) +- Bump zigpy ([@damarco] - [#22545]) ([zha docs]) (beta fix) +- Add support for streaming to ffmpeg ([@balloob] - [#22549]) ([ffmpeg docs]) (beta fix) +- Fix platform warnings ([@balloob] - [#22551]) (beta fix) +- Google assistant: add blinds trait for covers ([@giefca] - [#22336]) ([google_assistant docs]) (breaking change) (beta fix) +- Update Amcrest component to SUPPORT_STREAM ([@drjared88] - [#22553]) ([amcrest docs]) (beta fix) +- Fix name conflict in tests ([@awarecan] - [#22556]) (beta fix) +- Update ONVIF component to SUPPORT_STREAM ([@drjared88] - [#22569]) ([onvif docs]) (beta fix) +- Add stream to the default config ([@balloob] - [#22602]) ([default_config docs]) (beta fix) +- Add trusted networks deprecating warning ([@awarecan] - [#22487]) ([http docs]) (beta fix) +- Hass.io ingress ([@pvizeli] - [#22505]) ([hassio docs]) (beta fix) +- Update Foscam component to support stream source ([@cwhits] - [#22568]) ([foscam docs]) (beta fix) +- Update face_recognition to 1.2.3 ([@pvizeli] - [#22622]) ([dlib_face_detect docs]) ([dlib_face_identify docs]) (beta fix) +- Disable Z-Wave autoheal ([@balloob] - [#22628]) ([zwave docs]) (beta fix) +- Handle disonnect bug in Tibber library ([@Danielhiversen] - [#22629]) ([tibber docs]) (beta fix) +- Support GET params for websocket ingress path ([@pvizeli] - [#22638]) ([hassio docs]) (beta fix) +- Return 0 for failed Foscam streams ([@cwhits] - [#22651]) ([foscam docs]) (beta fix) +- Fix racy homekit_controller platform setup caused by #22368 ([@Jc2k] - [#22655]) ([homekit_controller docs]) (beta fix) [#18543]: https://github.com/home-assistant/home-assistant/pull/18543 [#20767]: https://github.com/home-assistant/home-assistant/pull/20767 @@ -368,6 +430,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#22328]: https://github.com/home-assistant/home-assistant/pull/22328 [#22333]: https://github.com/home-assistant/home-assistant/pull/22333 [#22334]: https://github.com/home-assistant/home-assistant/pull/22334 +[#22336]: https://github.com/home-assistant/home-assistant/pull/22336 [#22339]: https://github.com/home-assistant/home-assistant/pull/22339 [#22340]: https://github.com/home-assistant/home-assistant/pull/22340 [#22343]: https://github.com/home-assistant/home-assistant/pull/22343 @@ -412,6 +475,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#22430]: https://github.com/home-assistant/home-assistant/pull/22430 [#22431]: https://github.com/home-assistant/home-assistant/pull/22431 [#22433]: https://github.com/home-assistant/home-assistant/pull/22433 +[#22435]: https://github.com/home-assistant/home-assistant/pull/22435 [#22438]: https://github.com/home-assistant/home-assistant/pull/22438 [#22440]: https://github.com/home-assistant/home-assistant/pull/22440 [#22442]: https://github.com/home-assistant/home-assistant/pull/22442 @@ -431,6 +495,32 @@ Experiencing issues introduced by this release? Please report them in our [issue [#22482]: https://github.com/home-assistant/home-assistant/pull/22482 [#22484]: https://github.com/home-assistant/home-assistant/pull/22484 [#22486]: https://github.com/home-assistant/home-assistant/pull/22486 +[#22487]: https://github.com/home-assistant/home-assistant/pull/22487 +[#22493]: https://github.com/home-assistant/home-assistant/pull/22493 +[#22496]: https://github.com/home-assistant/home-assistant/pull/22496 +[#22502]: https://github.com/home-assistant/home-assistant/pull/22502 +[#22505]: https://github.com/home-assistant/home-assistant/pull/22505 +[#22511]: https://github.com/home-assistant/home-assistant/pull/22511 +[#22512]: https://github.com/home-assistant/home-assistant/pull/22512 +[#22513]: https://github.com/home-assistant/home-assistant/pull/22513 +[#22523]: https://github.com/home-assistant/home-assistant/pull/22523 +[#22534]: https://github.com/home-assistant/home-assistant/pull/22534 +[#22539]: https://github.com/home-assistant/home-assistant/pull/22539 +[#22543]: https://github.com/home-assistant/home-assistant/pull/22543 +[#22545]: https://github.com/home-assistant/home-assistant/pull/22545 +[#22549]: https://github.com/home-assistant/home-assistant/pull/22549 +[#22551]: https://github.com/home-assistant/home-assistant/pull/22551 +[#22553]: https://github.com/home-assistant/home-assistant/pull/22553 +[#22556]: https://github.com/home-assistant/home-assistant/pull/22556 +[#22568]: https://github.com/home-assistant/home-assistant/pull/22568 +[#22569]: https://github.com/home-assistant/home-assistant/pull/22569 +[#22602]: https://github.com/home-assistant/home-assistant/pull/22602 +[#22622]: https://github.com/home-assistant/home-assistant/pull/22622 +[#22628]: https://github.com/home-assistant/home-assistant/pull/22628 +[#22629]: https://github.com/home-assistant/home-assistant/pull/22629 +[#22638]: https://github.com/home-assistant/home-assistant/pull/22638 +[#22651]: https://github.com/home-assistant/home-assistant/pull/22651 +[#22655]: https://github.com/home-assistant/home-assistant/pull/22655 [@Adminiuga]: https://github.com/Adminiuga [@Danielhiversen]: https://github.com/Danielhiversen [@FattusMannus]: https://github.com/FattusMannus @@ -459,9 +549,12 @@ Experiencing issues introduced by this release? Please report them in our [issue [@cgarwood]: https://github.com/cgarwood [@cgtobi]: https://github.com/cgtobi [@cliffordwhansen]: https://github.com/cliffordwhansen +[@cwhits]: https://github.com/cwhits [@dagobert]: https://github.com/dagobert +[@damarco]: https://github.com/damarco [@dilruacs]: https://github.com/dilruacs [@dmulcahey]: https://github.com/dmulcahey +[@drjared88]: https://github.com/drjared88 [@dshokouhi]: https://github.com/dshokouhi [@eliseomartelli]: https://github.com/eliseomartelli [@endor-force]: https://github.com/endor-force @@ -471,6 +564,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@fbradyirl]: https://github.com/fbradyirl [@fredrike]: https://github.com/fredrike [@fronzbot]: https://github.com/fronzbot +[@giefca]: https://github.com/giefca [@heythisisnate]: https://github.com/heythisisnate [@hfurubotten]: https://github.com/hfurubotten [@hmmbob]: https://github.com/hmmbob @@ -485,6 +579,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@ktnrg45]: https://github.com/ktnrg45 [@lapy]: https://github.com/lapy [@ljmerza]: https://github.com/ljmerza +[@mvn23]: https://github.com/mvn23 [@nbarrientos]: https://github.com/nbarrientos [@nhorvath]: https://github.com/nhorvath [@nickw444]: https://github.com/nickw444 @@ -506,6 +601,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@uchagani]: https://github.com/uchagani [@zewelor]: https://github.com/zewelor [alexa docs]: /components/alexa/ +[amazon_polly docs]: /components/amazon_polly/ [ambient_station docs]: /components/ambient_station/ [amcrest docs]: /components/amcrest/ [androidtv docs]: /components/androidtv/ @@ -513,6 +609,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [auth docs]: /components/auth/ [aws docs]: /components/aws/ [axis docs]: /components/axis/ +[baidu docs]: /components/baidu/ [buienradar docs]: /components/buienradar/ [camera docs]: /components/camera/ [cisco_mobility_express docs]: /components/cisco_mobility_express/ @@ -520,13 +617,19 @@ Experiencing issues introduced by this release? Please report them in our [issue [daikin docs]: /components/daikin/ [darksky docs]: /components/darksky/ [deconz docs]: /components/deconz/ +[default_config docs]: /components/default_config/ [demo docs]: /components/demo/ +[discovery docs]: /components/discovery/ +[dlib_face_detect docs]: /components/dlib_face_detect/ +[dlib_face_identify docs]: /components/dlib_face_identify/ [dlna_dmr docs]: /components/dlna_dmr/ [ecobee docs]: /components/ecobee/ [enigma2 docs]: /components/enigma2/ [entur_public_transport docs]: /components/entur_public_transport/ [esphome docs]: /components/esphome/ [familyhub docs]: /components/familyhub/ +[ffmpeg docs]: /components/ffmpeg/ +[foscam docs]: /components/foscam/ [freebox docs]: /components/freebox/ [frontend docs]: /components/frontend/ [generic docs]: /components/generic/ @@ -553,8 +656,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [logi_circle docs]: /components/logi_circle/ [manual docs]: /components/manual/ [manual_mqtt docs]: /components/manual_mqtt/ +[marytts docs]: /components/marytts/ [media_extractor docs]: /components/media_extractor/ [media_player docs]: /components/media_player/ +[microsoft docs]: /components/microsoft/ [mold_indicator docs]: /components/mold_indicator/ [moon docs]: /components/moon/ [mopar docs]: /components/mopar/ @@ -567,15 +672,18 @@ Experiencing issues introduced by this release? Please report them in our [issue [notify docs]: /components/notify/ [onkyo docs]: /components/onkyo/ [onvif docs]: /components/onvif/ +[opentherm_gw docs]: /components/opentherm_gw/ [openweathermap docs]: /components/openweathermap/ [panasonic_viera docs]: /components/panasonic_viera/ [panel_custom docs]: /components/panel_custom/ [panel_iframe docs]: /components/panel_iframe/ +[picotts docs]: /components/picotts/ [plex docs]: /components/plex/ [pollen docs]: /components/pollen/ [prometheus docs]: /components/prometheus/ [ps4 docs]: /components/ps4/ [push docs]: /components/push/ +[recorder docs]: /components/recorder/ [reddit docs]: /components/reddit/ [rest docs]: /components/rest/ [ring docs]: /components/ring/ @@ -600,9 +708,11 @@ Experiencing issues introduced by this release? Please report them in our [issue [traccar docs]: /components/traccar/ [trafikverket_weatherstation docs]: /components/trafikverket_weatherstation/ [upnp docs]: /components/upnp/ +[voicerss docs]: /components/voicerss/ [websocket_api docs]: /components/websocket_api/ [xiaomi_aqara docs]: /components/xiaomi_aqara/ [xiaomi_miio docs]: /components/xiaomi_miio/ +[yandextts docs]: /components/yandextts/ [yeelight docs]: /components/yeelight/ [zha docs]: /components/zha/ [zwave docs]: /components/zwave/ From 55f19ef61714a7e9ec3b5fe07f54b8af61834431 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 10:16:01 -0700 Subject: [PATCH 54/61] Rename platforms to integrations --- .../{switch.acer_projector.markdown => acer_projector.markdown} | 0 .../{device_tracker.actiontec.markdown => actiontec.markdown} | 0 .../_components/{sensor.aftership.markdown => aftership.markdown} | 0 .../_components/{sensor.airvisual.markdown => airvisual.markdown} | 0 .../{cover.aladdin_connect.markdown => aladdin_connect.markdown} | 0 ...rm_control_panel.alarmdotcom.markdown => alarmdotcom.markdown} | 0 .../{sensor.alpha_vantage.markdown => alpha_vantage.markdown} | 0 .../{tts.amazon_polly.markdown => amazon_polly.markdown} | 0 .../{switch.anel_pwrctrl.markdown => anel_pwrctrl.markdown} | 0 .../{media_player.anthemav.markdown => anthemav.markdown} | 0 source/_components/{notify.apns.markdown => apns.markdown} | 0 .../{media_player.aquostv.markdown => aquostv.markdown} | 0 .../_components/{binary_sensor.arest.markdown => arest.markdown} | 0 .../_components/{device_tracker.aruba.markdown => aruba.markdown} | 0 source/_components/{sensor.arwn.markdown => arwn.markdown} | 0 .../{mailbox.asterisk_cdr.markdown => asterisk_cdr.markdown} | 0 .../{binary_sensor.aurora.markdown => aurora.markdown} | 0 .../{device_tracker.automatic.markdown => automatic.markdown} | 0 source/_components/{light.avion.markdown => avion.markdown} | 0 source/_components/{sensor.awair.markdown => awair.markdown} | 0 .../{notify.aws_lambda.markdown => aws_lambda.markdown} | 0 source/_components/{notify.aws_sns.markdown => aws_sns.markdown} | 0 source/_components/{notify.aws_sqs.markdown => aws_sqs.markdown} | 0 source/_components/{tts.baidu.markdown => baidu.markdown} | 0 .../{binary_sensor.bayesian.markdown => bayesian.markdown} | 0 source/_components/{sensor.bbox.markdown => bbox.markdown} | 0 source/_components/{sensor.bh1750.markdown => bh1750.markdown} | 0 source/_components/{sensor.bitcoin.markdown => bitcoin.markdown} | 0 .../{media_player.blackbird.markdown => blackbird.markdown} | 0 .../{light.blinksticklight.markdown => blinksticklight.markdown} | 0 source/_components/{light.blinkt.markdown => blinkt.markdown} | 0 .../{sensor.blockchain.markdown => blockchain.markdown} | 0 .../{media_player.bluesound.markdown => bluesound.markdown} | 0 ...luetooth_le_tracker.markdown => bluetooth_le_tracker.markdown} | 0 ...cker.bluetooth_tracker.markdown => bluetooth_tracker.markdown} | 0 source/_components/{sensor.bme280.markdown => bme280.markdown} | 0 source/_components/{sensor.bme680.markdown => bme680.markdown} | 0 source/_components/{weather.bom.markdown => bom.markdown} | 0 .../{media_player.braviatv.markdown => braviatv.markdown} | 0 .../{telegram_bot.broadcast.markdown => broadcast.markdown} | 0 .../_components/{switch.broadlink.markdown => broadlink.markdown} | 0 ...nsor.brottsplatskartan.markdown => brottsplatskartan.markdown} | 0 source/_components/{cover.brunt.markdown => brunt.markdown} | 0 ...vice_tracker.bt_home_hub_5.markdown => bt_home_hub_5.markdown} | 0 .../{device_tracker.bt_smarthub.markdown => bt_smarthub.markdown} | 0 .../{weather.buienradar.markdown => buienradar.markdown} | 0 source/_components/{calendar.caldav.markdown => caldav.markdown} | 0 .../{sensor.cert_expiry.markdown => cert_expiry.markdown} | 0 .../{media_player.channels.markdown => channels.markdown} | 0 .../{device_tracker.cisco_ios.markdown => cisco_ios.markdown} | 0 .../{notify.ciscospark.markdown => ciscospark.markdown} | 0 .../_components/{sensor.citybikes.markdown => citybikes.markdown} | 0 .../{media_player.clementine.markdown => clementine.markdown} | 0 .../{notify.clickatell.markdown => clickatell.markdown} | 0 .../_components/{notify.clicksend.markdown => clicksend.markdown} | 0 .../{notify.clicksend_tts.markdown => clicksend_tts.markdown} | 0 source/_components/{media_player.cmus.markdown => cmus.markdown} | 0 .../_components/{sensor.co2signal.markdown => co2signal.markdown} | 0 .../{sensor.coinmarketcap.markdown => coinmarketcap.markdown} | 0 ...omed_hourly_pricing.markdown => comed_hourly_pricing.markdown} | 0 ...{binary_sensor.command_line.markdown => command_line.markdown} | 0 .../{binary_sensor.concord232.markdown => concord232.markdown} | 0 .../{climate.coolmaster.markdown => coolmaster.markdown} | 0 .../_components/{sensor.cpuspeed.markdown => cpuspeed.markdown} | 0 .../{sensor.crimereports.markdown => crimereports.markdown} | 0 source/_components/{sensor.cups.markdown => cups.markdown} | 0 .../{sensor.currencylayer.markdown => currencylayer.markdown} | 0 source/_components/{sensor.darksky.markdown => darksky.markdown} | 0 .../_components/{device_tracker.ddwrt.markdown => ddwrt.markdown} | 0 source/_components/{light.decora.markdown => decora.markdown} | 0 .../{light.decora_wifi.markdown => decora_wifi.markdown} | 0 source/_components/{switch.deluge.markdown => deluge.markdown} | 0 .../_components/{media_player.denon.markdown => denon.markdown} | 0 .../{media_player.denonavr.markdown => denonavr.markdown} | 0 .../{sensor.deutsche_bahn.markdown => deutsche_bahn.markdown} | 0 source/_components/{sensor.dht.markdown => dht.markdown} | 0 .../{switch.digitalloggers.markdown => digitalloggers.markdown} | 0 .../{media_player.directv.markdown => directv.markdown} | 0 source/_components/{sensor.discogs.markdown => discogs.markdown} | 0 source/_components/{notify.discord.markdown => discord.markdown} | 0 .../{camera.dispatcher.markdown => dispatcher.markdown} | 0 ...essing.dlib_face_detect.markdown => dlib_face_detect.markdown} | 0 ...ng.dlib_face_identify.markdown => dlib_face_identify.markdown} | 0 source/_components/{switch.dlink.markdown => dlink.markdown} | 0 .../{media_player.dlna_dmr.markdown => dlna_dmr.markdown} | 0 source/_components/{sensor.dnsip.markdown => dnsip.markdown} | 0 source/_components/{sensor.dsmr.markdown => dsmr.markdown} | 0 ...nsor.dte_energy_bridge.markdown => dte_energy_bridge.markdown} | 0 ...ublin_bus_transport.markdown => dublin_bus_transport.markdown} | 0 .../{sensor.duke_energy.markdown => duke_energy.markdown} | 0 .../_components/{media_player.dunehd.markdown => dunehd.markdown} | 0 ...wd_weather_warnings.markdown => dwd_weather_warnings.markdown} | 0 source/_components/{sensor.ebox.markdown => ebox.markdown} | 0 .../_components/{water_heater.econet.markdown => econet.markdown} | 0 ...ystone_temperature.markdown => eddystone_temperature.markdown} | 0 source/_components/{switch.edimax.markdown => edimax.markdown} | 0 ...device_tracker.ee_brightbox.markdown => ee_brightbox.markdown} | 0 source/_components/{sensor.efergy.markdown => efergy.markdown} | 0 .../{sensor.eliqonline.markdown => eliqonline.markdown} | 0 source/_components/{media_player.emby.markdown => emby.markdown} | 0 source/_components/{sensor.emoncms.markdown => emoncms.markdown} | 0 .../{sensor.enphase_envoy.markdown => enphase_envoy.markdown} | 0 ..._public_transport.markdown => entur_public_transport.markdown} | 0 .../{sensor.envirophat.markdown => envirophat.markdown} | 0 .../_components/{climate.ephember.markdown => ephember.markdown} | 0 .../_components/{media_player.epson.markdown => epson.markdown} | 0 .../{climate.eq3btsmart.markdown => eq3btsmart.markdown} | 0 .../_components/{sensor.etherscan.markdown => etherscan.markdown} | 0 .../{light.everlights.markdown => everlights.markdown} | 0 .../_components/{notify.facebook.markdown => facebook.markdown} | 0 .../{image_processing.facebox.markdown => facebox.markdown} | 0 .../_components/{sensor.fail2ban.markdown => fail2ban.markdown} | 0 .../_components/{camera.familyhub.markdown => familyhub.markdown} | 0 source/_components/{sensor.fedex.markdown => fedex.markdown} | 0 ...inary_sensor.ffmpeg_motion.markdown => ffmpeg_motion.markdown} | 0 ...{binary_sensor.ffmpeg_noise.markdown => ffmpeg_noise.markdown} | 0 source/_components/{sensor.fido.markdown => fido.markdown} | 0 source/_components/{notify.file.markdown => file.markdown} | 0 .../_components/{sensor.filesize.markdown => filesize.markdown} | 0 source/_components/{sensor.filter.markdown => filter.markdown} | 0 source/_components/{sensor.fints.markdown => fints.markdown} | 0 source/_components/{sensor.fitbit.markdown => fitbit.markdown} | 0 source/_components/{sensor.fixer.markdown => fixer.markdown} | 0 source/_components/{climate.flexit.markdown => flexit.markdown} | 0 source/_components/{binary_sensor.flic.markdown => flic.markdown} | 0 source/_components/{notify.flock.markdown => flock.markdown} | 0 .../{sensor.flunearyou.markdown => flunearyou.markdown} | 0 source/_components/{switch.flux.markdown => flux.markdown} | 0 source/_components/{light.flux_led.markdown => flux_led.markdown} | 0 source/_components/{sensor.folder.markdown => folder.markdown} | 0 source/_components/{sensor.foobot.markdown => foobot.markdown} | 0 source/_components/{camera.foscam.markdown => foscam.markdown} | 0 .../{notify.free_mobile.markdown => free_mobile.markdown} | 0 .../_components/{device_tracker.fritz.markdown => fritz.markdown} | 0 ...ritzbox_callmonitor.markdown => fritzbox_callmonitor.markdown} | 0 ....fritzbox_netmonitor.markdown => fritzbox_netmonitor.markdown} | 0 .../_components/{switch.fritzdect.markdown => fritzdect.markdown} | 0 ...player.frontier_silicon.markdown => frontier_silicon.markdown} | 0 .../_components/{light.futurenow.markdown => futurenow.markdown} | 0 source/_components/{cover.garadget.markdown => garadget.markdown} | 0 .../_components/{sensor.gearbest.markdown => gearbest.markdown} | 0 .../_components/{sensor.geizhals.markdown => geizhals.markdown} | 0 source/_components/{camera.generic.markdown => generic.markdown} | 0 ...te.generic_thermostat.markdown => generic_thermostat.markdown} | 0 ...location.geo_json_events.markdown => geo_json_events.markdown} | 0 .../{sensor.geo_rss_events.markdown => geo_rss_events.markdown} | 0 .../{device_tracker.geofency.markdown => geofency.markdown} | 0 source/_components/{sensor.github.markdown => github.markdown} | 0 .../_components/{sensor.gitlab_ci.markdown => gitlab_ci.markdown} | 0 source/_components/{sensor.gitter.markdown => gitter.markdown} | 0 source/_components/{sensor.glances.markdown => glances.markdown} | 0 source/_components/{notify.gntp.markdown => gntp.markdown} | 0 .../_components/{cover.gogogate2.markdown => gogogate2.markdown} | 0 source/_components/{tts.google.markdown => google.markdown} | 0 .../{device_tracker.google_maps.markdown => google_maps.markdown} | 0 ...or.google_travel_time.markdown => google_travel_time.markdown} | 0 .../{sensor.google_wifi.markdown => google_wifi.markdown} | 0 .../_components/{media_player.gpmdp.markdown => gpmdp.markdown} | 0 source/_components/{sensor.gpsd.markdown => gpsd.markdown} | 0 .../{device_tracker.gpslogger.markdown => gpslogger.markdown} | 0 .../_components/{light.greenwave.markdown => greenwave.markdown} | 0 .../{media_player.gstreamer.markdown => gstreamer.markdown} | 0 source/_components/{sensor.gtfs.markdown => gtfs.markdown} | 0 source/_components/{sensor.gtt.markdown => gtt.markdown} | 0 ...ayer.harman_kardon_avr.markdown => harman_kardon_avr.markdown} | 0 .../{sensor.haveibeenpwned.markdown => haveibeenpwned.markdown} | 0 source/_components/{sensor.hddtemp.markdown => hddtemp.markdown} | 0 .../{climate.heatmiser.markdown => heatmiser.markdown} | 0 .../{binary_sensor.hikvision.markdown => hikvision.markdown} | 0 .../{switch.hikvisioncam.markdown => hikvisioncam.markdown} | 0 source/_components/{notify.hipchat.markdown => hipchat.markdown} | 0 .../{sensor.history_stats.markdown => history_stats.markdown} | 0 .../{device_tracker.hitron_coda.markdown => hitron_coda.markdown} | 0 .../{climate.honeywell.markdown => honeywell.markdown} | 0 source/_components/{switch.hook.markdown => hook.markdown} | 0 .../{media_player.horizon.markdown => horizon.markdown} | 0 source/_components/{sensor.hp_ilo.markdown => hp_ilo.markdown} | 0 source/_components/{notify.html5.markdown => html5.markdown} | 0 source/_components/{sensor.htu21d.markdown => htu21d.markdown} | 0 ...vice_tracker.huawei_router.markdown => huawei_router.markdown} | 0 ...ouglas_powerview.markdown => hunterdouglas_powerview.markdown} | 0 .../{sensor.hydroquebec.markdown => hydroquebec.markdown} | 0 source/_components/{light.hyperion.markdown => hyperion.markdown} | 0 .../{alarm_control_panel.ialarm.markdown => ialarm.markdown} | 0 .../{device_tracker.icloud.markdown => icloud.markdown} | 0 source/_components/{light.iglo.markdown => iglo.markdown} | 0 source/_components/{sensor.imap.markdown => imap.markdown} | 0 ...or.imap_email_content.markdown => imap_email_content.markdown} | 0 .../{sensor.integration.markdown => integration.markdown} | 0 ...rish_rail_transport.markdown => irish_rail_transport.markdown} | 0 ...slamic_prayer_times.markdown => islamic_prayer_times.markdown} | 0 source/_components/{binary_sensor.iss.markdown => iss.markdown} | 0 source/_components/{remote.itach.markdown => itach.markdown} | 0 .../_components/{media_player.itunes.markdown => itunes.markdown} | 0 .../{sensor.jewish_calendar.markdown => jewish_calendar.markdown} | 0 source/_components/{switch.kankun.markdown => kankun.markdown} | 0 ...ce_tracker.keenetic_ndms2.markdown => keenetic_ndms2.markdown} | 0 source/_components/{lock.kiwi.markdown => kiwi.markdown} | 0 source/_components/{notify.kodi.markdown => kodi.markdown} | 0 source/_components/{sensor.kwb.markdown => kwb.markdown} | 0 .../_components/{sensor.lacrosse.markdown => lacrosse.markdown} | 0 .../{notify.lannouncer.markdown => lannouncer.markdown} | 0 source/_components/{sensor.lastfm.markdown => lastfm.markdown} | 0 .../{sensor.launch_library.markdown => launch_library.markdown} | 0 .../{media_player.lg_netcast.markdown => lg_netcast.markdown} | 0 .../{media_player.lg_soundbar.markdown => lg_soundbar.markdown} | 0 .../{scene.lifx_cloud.markdown => lifx_cloud.markdown} | 0 .../{light.limitlessled.markdown => limitlessled.markdown} | 0 .../{device_tracker.linksys_ap.markdown => linksys_ap.markdown} | 0 ...vice_tracker.linksys_smart.markdown => linksys_smart.markdown} | 0 source/_components/{sensor.linky.markdown => linky.markdown} | 0 .../{sensor.linux_battery.markdown => linux_battery.markdown} | 0 ...media_player.liveboxplaytv.markdown => liveboxplaytv.markdown} | 0 ...tify.llamalab_automate.markdown => llamalab_automate.markdown} | 0 .../{camera.local_file.markdown => local_file.markdown} | 0 .../_components/{lock.lockitron.markdown => lockitron.markdown} | 0 .../{sensor.london_air.markdown => london_air.markdown} | 0 ...or.london_underground.markdown => london_underground.markdown} | 0 .../{sensor.loopenergy.markdown => loopenergy.markdown} | 0 .../_components/{device_tracker.luci.markdown => luci.markdown} | 0 source/_components/{light.lw12wifi.markdown => lw12wifi.markdown} | 0 source/_components/{sensor.lyft.markdown => lyft.markdown} | 0 .../{sensor.magicseaweed.markdown => magicseaweed.markdown} | 0 .../{alarm_control_panel.manual.markdown => manual.markdown} | 0 ...rm_control_panel.manual_mqtt.markdown => manual_mqtt.markdown} | 0 source/_components/{tts.marytts.markdown => marytts.markdown} | 0 .../_components/{notify.mastodon.markdown => mastodon.markdown} | 0 .../{media_player.mediaroom.markdown => mediaroom.markdown} | 0 .../{device_tracker.meraki.markdown => meraki.markdown} | 0 .../{notify.message_bird.markdown => message_bird.markdown} | 0 source/_components/{weather.met.markdown => met.markdown} | 0 .../{weather.metoffice.markdown => metoffice.markdown} | 0 source/_components/{switch.mfi.markdown => mfi.markdown} | 0 source/_components/{sensor.mhz19.markdown => mhz19.markdown} | 0 source/_components/{tts.microsoft.markdown => microsoft.markdown} | 0 ...rosoft_face_detect.markdown => microsoft_face_detect.markdown} | 0 ...ft_face_identify.markdown => microsoft_face_identify.markdown} | 0 source/_components/{sensor.miflora.markdown => miflora.markdown} | 0 .../{device_tracker.mikrotik.markdown => mikrotik.markdown} | 0 source/_components/{climate.mill.markdown => mill.markdown} | 0 source/_components/{sensor.min_max.markdown => min_max.markdown} | 0 .../_components/{sensor.mitemp_bt.markdown => mitemp_bt.markdown} | 0 source/_components/{camera.mjpeg.markdown => mjpeg.markdown} | 0 .../{sensor.modem_callerid.markdown => modem_callerid.markdown} | 0 .../{sensor.mold_indicator.markdown => mold_indicator.markdown} | 0 .../{media_player.monoprice.markdown => monoprice.markdown} | 0 source/_components/{sensor.moon.markdown => moon.markdown} | 0 source/_components/{sensor.mopar.markdown => mopar.markdown} | 0 .../_components/{media_player.mpchc.markdown => mpchc.markdown} | 0 source/_components/{media_player.mpd.markdown => mpd.markdown} | 0 .../{device_tracker.mqtt_json.markdown => mqtt_json.markdown} | 0 .../_components/{sensor.mqtt_room.markdown => mqtt_room.markdown} | 0 source/_components/{sensor.mvglive.markdown => mvglive.markdown} | 0 source/_components/{cover.myq.markdown => myq.markdown} | 0 source/_components/{light.mystrom.markdown => mystrom.markdown} | 0 source/_components/{media_player.nad.markdown => nad.markdown} | 0 source/_components/{light.nanoleaf.markdown => nanoleaf.markdown} | 0 ...landse_spoorwegen.markdown => nederlandse_spoorwegen.markdown} | 0 source/_components/{lock.nello.markdown => nello.markdown} | 0 .../{sensor.netatmo_public.markdown => netatmo_public.markdown} | 0 source/_components/{sensor.netdata.markdown => netdata.markdown} | 0 .../{device_tracker.netgear.markdown => netgear.markdown} | 0 source/_components/{switch.netio.markdown => netio.markdown} | 0 .../{sensor.neurio_energy.markdown => neurio_energy.markdown} | 0 .../{notify.nfandroidtv.markdown => nfandroidtv.markdown} | 0 ...ight.niko_home_control.markdown => niko_home_control.markdown} | 0 source/_components/{air_quality.nilu.markdown => nilu.markdown} | 0 ...device_tracker.nmap_tracker.markdown => nmap_tracker.markdown} | 0 source/_components/{sensor.nmbs.markdown => nmbs.markdown} | 0 .../{sensor.noaa_tides.markdown => noaa_tides.markdown} | 0 ...sensor.nsw_fuel_station.markdown => nsw_fuel_station.markdown} | 0 ...service_feed.markdown => nsw_rural_fire_service_feed.markdown} | 0 source/_components/{lock.nuki.markdown => nuki.markdown} | 0 source/_components/{sensor.nut.markdown => nut.markdown} | 0 .../{alarm_control_panel.nx584.markdown => nx584.markdown} | 0 source/_components/{sensor.nzbget.markdown => nzbget.markdown} | 0 source/_components/{climate.oem.markdown => oem.markdown} | 0 .../{sensor.ohmconnect.markdown => ohmconnect.markdown} | 0 source/_components/{sensor.onewire.markdown => onewire.markdown} | 0 .../_components/{media_player.onkyo.markdown => onkyo.markdown} | 0 source/_components/{camera.onvif.markdown => onvif.markdown} | 0 ...processing.openalpr_cloud.markdown => openalpr_cloud.markdown} | 0 ...processing.openalpr_local.markdown => openalpr_local.markdown} | 0 .../{image_processing.opencv.markdown => opencv.markdown} | 0 .../_components/{sensor.openevse.markdown => openevse.markdown} | 0 ...nsor.openexchangerates.markdown => openexchangerates.markdown} | 0 .../{cover.opengarage.markdown => opengarage.markdown} | 0 ....openhardwaremonitor.markdown => openhardwaremonitor.markdown} | 0 .../{media_player.openhome.markdown => openhome.markdown} | 0 .../{air_quality.opensensemap.markdown => opensensemap.markdown} | 0 source/_components/{sensor.opensky.markdown => opensky.markdown} | 0 .../{weather.openweathermap.markdown => openweathermap.markdown} | 0 .../{device_tracker.openwrt.markdown => openwrt.markdown} | 0 source/_components/{light.opple.markdown => opple.markdown} | 0 source/_components/{switch.orvibo.markdown => orvibo.markdown} | 0 .../{light.osramlightify.markdown => osramlightify.markdown} | 0 source/_components/{sensor.otp.markdown => otp.markdown} | 0 ...player.panasonic_bluray.markdown => panasonic_bluray.markdown} | 0 ...a_player.panasonic_viera.markdown => panasonic_viera.markdown} | 0 .../{media_player.pandora.markdown => pandora.markdown} | 0 source/_components/{switch.pencom.markdown => pencom.markdown} | 0 .../{media_player.philips_js.markdown => philips_js.markdown} | 0 source/_components/{sensor.pi_hole.markdown => pi_hole.markdown} | 0 source/_components/{tts.picotts.markdown => picotts.markdown} | 0 source/_components/{light.piglow.markdown => piglow.markdown} | 0 source/_components/{binary_sensor.ping.markdown => ping.markdown} | 0 .../{media_player.pioneer.markdown => pioneer.markdown} | 0 .../_components/{media_player.pjlink.markdown => pjlink.markdown} | 0 source/_components/{media_player.plex.markdown => plex.markdown} | 0 .../{sensor.pocketcasts.markdown => pocketcasts.markdown} | 0 source/_components/{sensor.pollen.markdown => pollen.markdown} | 0 .../{telegram_bot.polling.markdown => polling.markdown} | 0 source/_components/{sensor.postnl.markdown => postnl.markdown} | 0 .../{sensor.prezzibenzina.markdown => prezzibenzina.markdown} | 0 .../{climate.proliphix.markdown => proliphix.markdown} | 0 source/_components/{notify.prowl.markdown => prowl.markdown} | 0 source/_components/{camera.proxy.markdown => proxy.markdown} | 0 ....pulseaudio_loopback.markdown => pulseaudio_loopback.markdown} | 0 source/_components/{camera.push.markdown => push.markdown} | 0 .../{sensor.pushbullet.markdown => pushbullet.markdown} | 0 .../_components/{notify.pushetta.markdown => pushetta.markdown} | 0 .../_components/{notify.pushover.markdown => pushover.markdown} | 0 .../_components/{notify.pushsafer.markdown => pushsafer.markdown} | 0 .../_components/{sensor.pvoutput.markdown => pvoutput.markdown} | 0 source/_components/{sensor.pyload.markdown => pyload.markdown} | 0 .../{sensor.qbittorrent.markdown => qbittorrent.markdown} | 0 source/_components/{sensor.qnap.markdown => qnap.markdown} | 0 .../{image_processing.qrcode.markdown => qrcode.markdown} | 0 ..._tracker.quantum_gateway.markdown => quantum_gateway.markdown} | 0 source/_components/{sensor.radarr.markdown => radarr.markdown} | 0 .../{climate.radiotherm.markdown => radiotherm.markdown} | 0 source/_components/{sensor.random.markdown => random.markdown} | 0 .../_components/{switch.raspyrfm.markdown => raspyrfm.markdown} | 0 .../{sensor.recollect_waste.markdown => recollect_waste.markdown} | 0 .../_components/{switch.recswitch.markdown => recswitch.markdown} | 0 source/_components/{sensor.reddit.markdown => reddit.markdown} | 0 .../{sensor.rejseplanen.markdown => rejseplanen.markdown} | 0 source/_components/{sensor.rest.markdown => rest.markdown} | 0 source/_components/{sensor.ripple.markdown => ripple.markdown} | 0 .../{device_tracker.ritassist.markdown => ritassist.markdown} | 0 .../{sensor.rmvtransport.markdown => rmvtransport.markdown} | 0 .../{notify.rocketchat.markdown => rocketchat.markdown} | 0 source/_components/{vacuum.roomba.markdown => roomba.markdown} | 0 source/_components/{sensor.rova.markdown => rova.markdown} | 0 .../{camera.rpi_camera.markdown => rpi_camera.markdown} | 0 .../{light.rpi_gpio_pwm.markdown => rpi_gpio_pwm.markdown} | 0 source/_components/{switch.rpi_rf.markdown => rpi_rf.markdown} | 0 .../_components/{sensor.rtorrent.markdown => rtorrent.markdown} | 0 .../{media_player.russound_rio.markdown => russound_rio.markdown} | 0 ...media_player.russound_rnet.markdown => russound_rnet.markdown} | 0 source/_components/{sensor.ruter.markdown => ruter.markdown} | 0 .../{media_player.samsungtv.markdown => samsungtv.markdown} | 0 source/_components/{sensor.scrape.markdown => scrape.markdown} | 0 source/_components/{sensor.season.markdown => season.markdown} | 0 .../_components/{notify.sendgrid.markdown => sendgrid.markdown} | 0 source/_components/{light.sensehat.markdown => sensehat.markdown} | 0 source/_components/{climate.sensibo.markdown => sensibo.markdown} | 0 source/_components/{sensor.serial.markdown => serial.markdown} | 0 .../_components/{sensor.serial_pm.markdown => serial_pm.markdown} | 0 source/_components/{lock.sesame.markdown => sesame.markdown} | 0 ...processing.seven_segments.markdown => seven_segments.markdown} | 0 .../{sensor.seventeentrack.markdown => seventeentrack.markdown} | 0 source/_components/{sensor.shodan.markdown => shodan.markdown} | 0 source/_components/{sensor.sht31.markdown => sht31.markdown} | 0 source/_components/{sensor.sigfox.markdown => sigfox.markdown} | 0 .../{notify.simplepush.markdown => simplepush.markdown} | 0 .../_components/{sensor.simulated.markdown => simulated.markdown} | 0 .../{device_tracker.sky_hub.markdown => sky_hub.markdown} | 0 .../_components/{sensor.skybeacon.markdown => skybeacon.markdown} | 0 source/_components/{notify.slack.markdown => slack.markdown} | 0 source/_components/{sensor.sma.markdown => sma.markdown} | 0 source/_components/{notify.smtp.markdown => smtp.markdown} | 0 .../{media_player.snapcast.markdown => snapcast.markdown} | 0 source/_components/{switch.snmp.markdown => snmp.markdown} | 0 source/_components/{sensor.sochain.markdown => sochain.markdown} | 0 .../{sensor.socialblade.markdown => socialblade.markdown} | 0 .../_components/{sensor.solaredge.markdown => solaredge.markdown} | 0 source/_components/{sensor.sonarr.markdown => sonarr.markdown} | 0 .../{media_player.songpal.markdown => songpal.markdown} | 0 .../{switch.sony_projector.markdown => sony_projector.markdown} | 0 .../{media_player.soundtouch.markdown => soundtouch.markdown} | 0 .../_components/{sensor.spotcrime.markdown => spotcrime.markdown} | 0 .../{media_player.spotify.markdown => spotify.markdown} | 0 source/_components/{sensor.sql.markdown => sql.markdown} | 0 .../{media_player.squeezebox.markdown => squeezebox.markdown} | 0 .../{sensor.srp_energy.markdown => srp_energy.markdown} | 0 .../{sensor.starlingbank.markdown => starlingbank.markdown} | 0 source/_components/{sensor.startca.markdown => startca.markdown} | 0 .../{sensor.statistics.markdown => statistics.markdown} | 0 .../{sensor.steam_online.markdown => steam_online.markdown} | 0 source/_components/{notify.stride.markdown => stride.markdown} | 0 .../{sensor.supervisord.markdown => supervisord.markdown} | 0 ...ydrological_data.markdown => swiss_hydrological_data.markdown} | 0 ..._public_transport.markdown => swiss_public_transport.markdown} | 0 .../{device_tracker.swisscom.markdown => swisscom.markdown} | 0 .../_components/{switch.switchbot.markdown => switchbot.markdown} | 0 .../{switch.switchmate.markdown => switchmate.markdown} | 0 .../_components/{sensor.syncthru.markdown => syncthru.markdown} | 0 .../_components/{camera.synology.markdown => synology.markdown} | 0 .../{notify.synology_chat.markdown => synology_chat.markdown} | 0 ...device_tracker.synology_srm.markdown => synology_srm.markdown} | 0 .../{sensor.synologydsm.markdown => synologydsm.markdown} | 0 source/_components/{notify.syslog.markdown => syslog.markdown} | 0 .../{sensor.systemmonitor.markdown => systemmonitor.markdown} | 0 source/_components/{sensor.sytadin.markdown => sytadin.markdown} | 0 .../{sensor.tank_utility.markdown => tank_utility.markdown} | 0 .../{binary_sensor.tapsaff.markdown => tapsaff.markdown} | 0 .../_components/{sensor.tautulli.markdown => tautulli.markdown} | 0 source/_components/{binary_sensor.tcp.markdown => tcp.markdown} | 0 source/_components/{sensor.ted5000.markdown => ted5000.markdown} | 0 .../_components/{sensor.teksavvy.markdown => teksavvy.markdown} | 0 .../_components/{notify.telegram.markdown => telegram.markdown} | 0 source/_components/{switch.telnet.markdown => telnet.markdown} | 0 source/_components/{sensor.temper.markdown => temper.markdown} | 0 .../_components/{sensor.template.markdown => template.markdown} | 0 .../{image_processing.tensorflow.markdown => tensorflow.markdown} | 0 source/_components/{climate.tfiac.markdown => tfiac.markdown} | 0 ...nsor.thermoworks_smoke.markdown => thermoworks_smoke.markdown} | 0 .../{sensor.thinkingcleaner.markdown => thinkingcleaner.markdown} | 0 .../{device_tracker.thomson.markdown => thomson.markdown} | 0 .../{binary_sensor.threshold.markdown => threshold.markdown} | 0 source/_components/{light.tikteck.markdown => tikteck.markdown} | 0 .../_components/{device_tracker.tile.markdown => tile.markdown} | 0 .../_components/{sensor.time_date.markdown => time_date.markdown} | 0 source/_components/{binary_sensor.tod.markdown => tod.markdown} | 0 .../_components/{calendar.todoist.markdown => todoist.markdown} | 0 .../{device_tracker.tomato.markdown => tomato.markdown} | 0 source/_components/{sensor.torque.markdown => torque.markdown} | 0 ..._control_panel.totalconnect.markdown => totalconnect.markdown} | 0 .../{climate.touchline.markdown => touchline.markdown} | 0 .../{device_tracker.traccar.markdown => traccar.markdown} | 0 .../{device_tracker.trackr.markdown => trackr.markdown} | 0 ...atherstation.markdown => trafikverket_weatherstation.markdown} | 0 .../{sensor.transport_nsw.markdown => transport_nsw.markdown} | 0 .../_components/{sensor.travisci.markdown => travisci.markdown} | 0 .../_components/{binary_sensor.trend.markdown => trend.markdown} | 0 .../{notify.twilio_call.markdown => twilio_call.markdown} | 0 .../{notify.twilio_sms.markdown => twilio_sms.markdown} | 0 source/_components/{sensor.twitch.markdown => twitch.markdown} | 0 source/_components/{notify.twitter.markdown => twitter.markdown} | 0 .../_components/{device_tracker.ubee.markdown => ubee.markdown} | 0 source/_components/{sensor.uber.markdown => uber.markdown} | 0 .../_components/{device_tracker.ubus.markdown => ubus.markdown} | 0 ...dia_player.ue_smart_radio.markdown => ue_smart_radio.markdown} | 0 .../{sensor.uk_transport.markdown => uk_transport.markdown} | 0 ...device_tracker.unifi_direct.markdown => unifi_direct.markdown} | 0 .../{media_player.universal.markdown => universal.markdown} | 0 .../{device_tracker.upc_connect.markdown => upc_connect.markdown} | 0 source/_components/{sensor.ups.markdown => ups.markdown} | 0 source/_components/{sensor.uptime.markdown => uptime.markdown} | 0 .../{binary_sensor.uptimerobot.markdown => uptimerobot.markdown} | 0 source/_components/{sensor.uscis.markdown => uscis.markdown} | 0 ...s_earthquakes_feed.markdown => usgs_earthquakes_feed.markdown} | 0 source/_components/{camera.uvc.markdown => uvc.markdown} | 0 .../{sensor.vasttrafik.markdown => vasttrafik.markdown} | 0 source/_components/{climate.venstar.markdown => venstar.markdown} | 0 source/_components/{sensor.version.markdown => version.markdown} | 0 source/_components/{switch.vesync.markdown => vesync.markdown} | 0 .../{sensor.viaggiatreno.markdown => viaggiatreno.markdown} | 0 .../_components/{media_player.vizio.markdown => vizio.markdown} | 0 source/_components/{media_player.vlc.markdown => vlc.markdown} | 0 source/_components/{tts.voicerss.markdown => voicerss.markdown} | 0 .../{sensor.volkszaehler.markdown => volkszaehler.markdown} | 0 .../{media_player.volumio.markdown => volumio.markdown} | 0 source/_components/{sensor.waqi.markdown => waqi.markdown} | 0 ...sensor.waze_travel_time.markdown => waze_travel_time.markdown} | 0 .../{telegram_bot.webhooks.markdown => webhooks.markdown} | 0 .../{media_player.webostv.markdown => webostv.markdown} | 0 source/_components/{sensor.whois.markdown => whois.markdown} | 0 .../{binary_sensor.workday.markdown => workday.markdown} | 0 .../{sensor.worldclock.markdown => worldclock.markdown} | 0 .../{sensor.worldtidesinfo.markdown => worldtidesinfo.markdown} | 0 .../{sensor.worxlandroid.markdown => worxlandroid.markdown} | 0 source/_components/{sensor.wsdot.markdown => wsdot.markdown} | 0 .../{sensor.wunderground.markdown => wunderground.markdown} | 0 source/_components/{light.x10.markdown => x10.markdown} | 0 .../_components/{sensor.xbox_live.markdown => xbox_live.markdown} | 0 source/_components/{camera.xeoma.markdown => xeoma.markdown} | 0 .../{device_tracker.xfinity.markdown => xfinity.markdown} | 0 source/_components/{camera.xiaomi.markdown => xiaomi.markdown} | 0 .../{device_tracker.xiaomi_miio.markdown => xiaomi_miio.markdown} | 0 .../{media_player.xiaomi_tv.markdown => xiaomi_tv.markdown} | 0 source/_components/{notify.xmpp.markdown => xmpp.markdown} | 0 ..._panel.yale_smart_alarm.markdown => yale_smart_alarm.markdown} | 0 .../_components/{media_player.yamaha.markdown => yamaha.markdown} | 0 ...player.yamaha_musiccast.markdown => yamaha_musiccast.markdown} | 0 source/_components/{tts.yandextts.markdown => yandextts.markdown} | 0 ...ight.yeelightsunflower.markdown => yeelightsunflower.markdown} | 0 .../_components/{notify.yessssms.markdown => yessssms.markdown} | 0 source/_components/{camera.yi.markdown => yi.markdown} | 0 source/_components/{sensor.yr.markdown => yr.markdown} | 0 .../_components/{sensor.yweather.markdown => yweather.markdown} | 0 source/_components/{sensor.zamg.markdown => zamg.markdown} | 0 source/_components/{light.zengge.markdown => zengge.markdown} | 0 .../_components/{sensor.zestimate.markdown => zestimate.markdown} | 0 .../{climate.zhong_hong.markdown => zhong_hong.markdown} | 0 ...ayer.ziggo_mediabox_xl.markdown => ziggo_mediabox_xl.markdown} | 0 497 files changed, 0 insertions(+), 0 deletions(-) rename source/_components/{switch.acer_projector.markdown => acer_projector.markdown} (100%) rename source/_components/{device_tracker.actiontec.markdown => actiontec.markdown} (100%) rename source/_components/{sensor.aftership.markdown => aftership.markdown} (100%) rename source/_components/{sensor.airvisual.markdown => airvisual.markdown} (100%) rename source/_components/{cover.aladdin_connect.markdown => aladdin_connect.markdown} (100%) rename source/_components/{alarm_control_panel.alarmdotcom.markdown => alarmdotcom.markdown} (100%) rename source/_components/{sensor.alpha_vantage.markdown => alpha_vantage.markdown} (100%) rename source/_components/{tts.amazon_polly.markdown => amazon_polly.markdown} (100%) rename source/_components/{switch.anel_pwrctrl.markdown => anel_pwrctrl.markdown} (100%) rename source/_components/{media_player.anthemav.markdown => anthemav.markdown} (100%) rename source/_components/{notify.apns.markdown => apns.markdown} (100%) rename source/_components/{media_player.aquostv.markdown => aquostv.markdown} (100%) rename source/_components/{binary_sensor.arest.markdown => arest.markdown} (100%) rename source/_components/{device_tracker.aruba.markdown => aruba.markdown} (100%) rename source/_components/{sensor.arwn.markdown => arwn.markdown} (100%) rename source/_components/{mailbox.asterisk_cdr.markdown => asterisk_cdr.markdown} (100%) rename source/_components/{binary_sensor.aurora.markdown => aurora.markdown} (100%) rename source/_components/{device_tracker.automatic.markdown => automatic.markdown} (100%) rename source/_components/{light.avion.markdown => avion.markdown} (100%) rename source/_components/{sensor.awair.markdown => awair.markdown} (100%) rename source/_components/{notify.aws_lambda.markdown => aws_lambda.markdown} (100%) rename source/_components/{notify.aws_sns.markdown => aws_sns.markdown} (100%) rename source/_components/{notify.aws_sqs.markdown => aws_sqs.markdown} (100%) rename source/_components/{tts.baidu.markdown => baidu.markdown} (100%) rename source/_components/{binary_sensor.bayesian.markdown => bayesian.markdown} (100%) rename source/_components/{sensor.bbox.markdown => bbox.markdown} (100%) rename source/_components/{sensor.bh1750.markdown => bh1750.markdown} (100%) rename source/_components/{sensor.bitcoin.markdown => bitcoin.markdown} (100%) rename source/_components/{media_player.blackbird.markdown => blackbird.markdown} (100%) rename source/_components/{light.blinksticklight.markdown => blinksticklight.markdown} (100%) rename source/_components/{light.blinkt.markdown => blinkt.markdown} (100%) rename source/_components/{sensor.blockchain.markdown => blockchain.markdown} (100%) rename source/_components/{media_player.bluesound.markdown => bluesound.markdown} (100%) rename source/_components/{device_tracker.bluetooth_le_tracker.markdown => bluetooth_le_tracker.markdown} (100%) rename source/_components/{device_tracker.bluetooth_tracker.markdown => bluetooth_tracker.markdown} (100%) rename source/_components/{sensor.bme280.markdown => bme280.markdown} (100%) rename source/_components/{sensor.bme680.markdown => bme680.markdown} (100%) rename source/_components/{weather.bom.markdown => bom.markdown} (100%) rename source/_components/{media_player.braviatv.markdown => braviatv.markdown} (100%) rename source/_components/{telegram_bot.broadcast.markdown => broadcast.markdown} (100%) rename source/_components/{switch.broadlink.markdown => broadlink.markdown} (100%) rename source/_components/{sensor.brottsplatskartan.markdown => brottsplatskartan.markdown} (100%) rename source/_components/{cover.brunt.markdown => brunt.markdown} (100%) rename source/_components/{device_tracker.bt_home_hub_5.markdown => bt_home_hub_5.markdown} (100%) rename source/_components/{device_tracker.bt_smarthub.markdown => bt_smarthub.markdown} (100%) rename source/_components/{weather.buienradar.markdown => buienradar.markdown} (100%) rename source/_components/{calendar.caldav.markdown => caldav.markdown} (100%) rename source/_components/{sensor.cert_expiry.markdown => cert_expiry.markdown} (100%) rename source/_components/{media_player.channels.markdown => channels.markdown} (100%) rename source/_components/{device_tracker.cisco_ios.markdown => cisco_ios.markdown} (100%) rename source/_components/{notify.ciscospark.markdown => ciscospark.markdown} (100%) rename source/_components/{sensor.citybikes.markdown => citybikes.markdown} (100%) rename source/_components/{media_player.clementine.markdown => clementine.markdown} (100%) rename source/_components/{notify.clickatell.markdown => clickatell.markdown} (100%) rename source/_components/{notify.clicksend.markdown => clicksend.markdown} (100%) rename source/_components/{notify.clicksend_tts.markdown => clicksend_tts.markdown} (100%) rename source/_components/{media_player.cmus.markdown => cmus.markdown} (100%) rename source/_components/{sensor.co2signal.markdown => co2signal.markdown} (100%) rename source/_components/{sensor.coinmarketcap.markdown => coinmarketcap.markdown} (100%) rename source/_components/{sensor.comed_hourly_pricing.markdown => comed_hourly_pricing.markdown} (100%) rename source/_components/{binary_sensor.command_line.markdown => command_line.markdown} (100%) rename source/_components/{binary_sensor.concord232.markdown => concord232.markdown} (100%) rename source/_components/{climate.coolmaster.markdown => coolmaster.markdown} (100%) rename source/_components/{sensor.cpuspeed.markdown => cpuspeed.markdown} (100%) rename source/_components/{sensor.crimereports.markdown => crimereports.markdown} (100%) rename source/_components/{sensor.cups.markdown => cups.markdown} (100%) rename source/_components/{sensor.currencylayer.markdown => currencylayer.markdown} (100%) rename source/_components/{sensor.darksky.markdown => darksky.markdown} (100%) rename source/_components/{device_tracker.ddwrt.markdown => ddwrt.markdown} (100%) rename source/_components/{light.decora.markdown => decora.markdown} (100%) rename source/_components/{light.decora_wifi.markdown => decora_wifi.markdown} (100%) rename source/_components/{switch.deluge.markdown => deluge.markdown} (100%) rename source/_components/{media_player.denon.markdown => denon.markdown} (100%) rename source/_components/{media_player.denonavr.markdown => denonavr.markdown} (100%) rename source/_components/{sensor.deutsche_bahn.markdown => deutsche_bahn.markdown} (100%) rename source/_components/{sensor.dht.markdown => dht.markdown} (100%) rename source/_components/{switch.digitalloggers.markdown => digitalloggers.markdown} (100%) rename source/_components/{media_player.directv.markdown => directv.markdown} (100%) rename source/_components/{sensor.discogs.markdown => discogs.markdown} (100%) rename source/_components/{notify.discord.markdown => discord.markdown} (100%) rename source/_components/{camera.dispatcher.markdown => dispatcher.markdown} (100%) rename source/_components/{image_processing.dlib_face_detect.markdown => dlib_face_detect.markdown} (100%) rename source/_components/{image_processing.dlib_face_identify.markdown => dlib_face_identify.markdown} (100%) rename source/_components/{switch.dlink.markdown => dlink.markdown} (100%) rename source/_components/{media_player.dlna_dmr.markdown => dlna_dmr.markdown} (100%) rename source/_components/{sensor.dnsip.markdown => dnsip.markdown} (100%) rename source/_components/{sensor.dsmr.markdown => dsmr.markdown} (100%) rename source/_components/{sensor.dte_energy_bridge.markdown => dte_energy_bridge.markdown} (100%) rename source/_components/{sensor.dublin_bus_transport.markdown => dublin_bus_transport.markdown} (100%) rename source/_components/{sensor.duke_energy.markdown => duke_energy.markdown} (100%) rename source/_components/{media_player.dunehd.markdown => dunehd.markdown} (100%) rename source/_components/{sensor.dwd_weather_warnings.markdown => dwd_weather_warnings.markdown} (100%) rename source/_components/{sensor.ebox.markdown => ebox.markdown} (100%) rename source/_components/{water_heater.econet.markdown => econet.markdown} (100%) rename source/_components/{sensor.eddystone_temperature.markdown => eddystone_temperature.markdown} (100%) rename source/_components/{switch.edimax.markdown => edimax.markdown} (100%) rename source/_components/{device_tracker.ee_brightbox.markdown => ee_brightbox.markdown} (100%) rename source/_components/{sensor.efergy.markdown => efergy.markdown} (100%) rename source/_components/{sensor.eliqonline.markdown => eliqonline.markdown} (100%) rename source/_components/{media_player.emby.markdown => emby.markdown} (100%) rename source/_components/{sensor.emoncms.markdown => emoncms.markdown} (100%) rename source/_components/{sensor.enphase_envoy.markdown => enphase_envoy.markdown} (100%) rename source/_components/{sensor.entur_public_transport.markdown => entur_public_transport.markdown} (100%) rename source/_components/{sensor.envirophat.markdown => envirophat.markdown} (100%) rename source/_components/{climate.ephember.markdown => ephember.markdown} (100%) rename source/_components/{media_player.epson.markdown => epson.markdown} (100%) rename source/_components/{climate.eq3btsmart.markdown => eq3btsmart.markdown} (100%) rename source/_components/{sensor.etherscan.markdown => etherscan.markdown} (100%) rename source/_components/{light.everlights.markdown => everlights.markdown} (100%) rename source/_components/{notify.facebook.markdown => facebook.markdown} (100%) rename source/_components/{image_processing.facebox.markdown => facebox.markdown} (100%) rename source/_components/{sensor.fail2ban.markdown => fail2ban.markdown} (100%) rename source/_components/{camera.familyhub.markdown => familyhub.markdown} (100%) rename source/_components/{sensor.fedex.markdown => fedex.markdown} (100%) rename source/_components/{binary_sensor.ffmpeg_motion.markdown => ffmpeg_motion.markdown} (100%) rename source/_components/{binary_sensor.ffmpeg_noise.markdown => ffmpeg_noise.markdown} (100%) rename source/_components/{sensor.fido.markdown => fido.markdown} (100%) rename source/_components/{notify.file.markdown => file.markdown} (100%) rename source/_components/{sensor.filesize.markdown => filesize.markdown} (100%) rename source/_components/{sensor.filter.markdown => filter.markdown} (100%) rename source/_components/{sensor.fints.markdown => fints.markdown} (100%) rename source/_components/{sensor.fitbit.markdown => fitbit.markdown} (100%) rename source/_components/{sensor.fixer.markdown => fixer.markdown} (100%) rename source/_components/{climate.flexit.markdown => flexit.markdown} (100%) rename source/_components/{binary_sensor.flic.markdown => flic.markdown} (100%) rename source/_components/{notify.flock.markdown => flock.markdown} (100%) rename source/_components/{sensor.flunearyou.markdown => flunearyou.markdown} (100%) rename source/_components/{switch.flux.markdown => flux.markdown} (100%) rename source/_components/{light.flux_led.markdown => flux_led.markdown} (100%) rename source/_components/{sensor.folder.markdown => folder.markdown} (100%) rename source/_components/{sensor.foobot.markdown => foobot.markdown} (100%) rename source/_components/{camera.foscam.markdown => foscam.markdown} (100%) rename source/_components/{notify.free_mobile.markdown => free_mobile.markdown} (100%) rename source/_components/{device_tracker.fritz.markdown => fritz.markdown} (100%) rename source/_components/{sensor.fritzbox_callmonitor.markdown => fritzbox_callmonitor.markdown} (100%) rename source/_components/{sensor.fritzbox_netmonitor.markdown => fritzbox_netmonitor.markdown} (100%) rename source/_components/{switch.fritzdect.markdown => fritzdect.markdown} (100%) rename source/_components/{media_player.frontier_silicon.markdown => frontier_silicon.markdown} (100%) rename source/_components/{light.futurenow.markdown => futurenow.markdown} (100%) rename source/_components/{cover.garadget.markdown => garadget.markdown} (100%) rename source/_components/{sensor.gearbest.markdown => gearbest.markdown} (100%) rename source/_components/{sensor.geizhals.markdown => geizhals.markdown} (100%) rename source/_components/{camera.generic.markdown => generic.markdown} (100%) rename source/_components/{climate.generic_thermostat.markdown => generic_thermostat.markdown} (100%) rename source/_components/{geo_location.geo_json_events.markdown => geo_json_events.markdown} (100%) rename source/_components/{sensor.geo_rss_events.markdown => geo_rss_events.markdown} (100%) rename source/_components/{device_tracker.geofency.markdown => geofency.markdown} (100%) rename source/_components/{sensor.github.markdown => github.markdown} (100%) rename source/_components/{sensor.gitlab_ci.markdown => gitlab_ci.markdown} (100%) rename source/_components/{sensor.gitter.markdown => gitter.markdown} (100%) rename source/_components/{sensor.glances.markdown => glances.markdown} (100%) rename source/_components/{notify.gntp.markdown => gntp.markdown} (100%) rename source/_components/{cover.gogogate2.markdown => gogogate2.markdown} (100%) rename source/_components/{tts.google.markdown => google.markdown} (100%) rename source/_components/{device_tracker.google_maps.markdown => google_maps.markdown} (100%) rename source/_components/{sensor.google_travel_time.markdown => google_travel_time.markdown} (100%) rename source/_components/{sensor.google_wifi.markdown => google_wifi.markdown} (100%) rename source/_components/{media_player.gpmdp.markdown => gpmdp.markdown} (100%) rename source/_components/{sensor.gpsd.markdown => gpsd.markdown} (100%) rename source/_components/{device_tracker.gpslogger.markdown => gpslogger.markdown} (100%) rename source/_components/{light.greenwave.markdown => greenwave.markdown} (100%) rename source/_components/{media_player.gstreamer.markdown => gstreamer.markdown} (100%) rename source/_components/{sensor.gtfs.markdown => gtfs.markdown} (100%) rename source/_components/{sensor.gtt.markdown => gtt.markdown} (100%) rename source/_components/{media_player.harman_kardon_avr.markdown => harman_kardon_avr.markdown} (100%) rename source/_components/{sensor.haveibeenpwned.markdown => haveibeenpwned.markdown} (100%) rename source/_components/{sensor.hddtemp.markdown => hddtemp.markdown} (100%) rename source/_components/{climate.heatmiser.markdown => heatmiser.markdown} (100%) rename source/_components/{binary_sensor.hikvision.markdown => hikvision.markdown} (100%) rename source/_components/{switch.hikvisioncam.markdown => hikvisioncam.markdown} (100%) rename source/_components/{notify.hipchat.markdown => hipchat.markdown} (100%) rename source/_components/{sensor.history_stats.markdown => history_stats.markdown} (100%) rename source/_components/{device_tracker.hitron_coda.markdown => hitron_coda.markdown} (100%) rename source/_components/{climate.honeywell.markdown => honeywell.markdown} (100%) rename source/_components/{switch.hook.markdown => hook.markdown} (100%) rename source/_components/{media_player.horizon.markdown => horizon.markdown} (100%) rename source/_components/{sensor.hp_ilo.markdown => hp_ilo.markdown} (100%) rename source/_components/{notify.html5.markdown => html5.markdown} (100%) rename source/_components/{sensor.htu21d.markdown => htu21d.markdown} (100%) rename source/_components/{device_tracker.huawei_router.markdown => huawei_router.markdown} (100%) rename source/_components/{scene.hunterdouglas_powerview.markdown => hunterdouglas_powerview.markdown} (100%) rename source/_components/{sensor.hydroquebec.markdown => hydroquebec.markdown} (100%) rename source/_components/{light.hyperion.markdown => hyperion.markdown} (100%) rename source/_components/{alarm_control_panel.ialarm.markdown => ialarm.markdown} (100%) rename source/_components/{device_tracker.icloud.markdown => icloud.markdown} (100%) rename source/_components/{light.iglo.markdown => iglo.markdown} (100%) rename source/_components/{sensor.imap.markdown => imap.markdown} (100%) rename source/_components/{sensor.imap_email_content.markdown => imap_email_content.markdown} (100%) rename source/_components/{sensor.integration.markdown => integration.markdown} (100%) rename source/_components/{sensor.irish_rail_transport.markdown => irish_rail_transport.markdown} (100%) rename source/_components/{sensor.islamic_prayer_times.markdown => islamic_prayer_times.markdown} (100%) rename source/_components/{binary_sensor.iss.markdown => iss.markdown} (100%) rename source/_components/{remote.itach.markdown => itach.markdown} (100%) rename source/_components/{media_player.itunes.markdown => itunes.markdown} (100%) rename source/_components/{sensor.jewish_calendar.markdown => jewish_calendar.markdown} (100%) rename source/_components/{switch.kankun.markdown => kankun.markdown} (100%) rename source/_components/{device_tracker.keenetic_ndms2.markdown => keenetic_ndms2.markdown} (100%) rename source/_components/{lock.kiwi.markdown => kiwi.markdown} (100%) rename source/_components/{notify.kodi.markdown => kodi.markdown} (100%) rename source/_components/{sensor.kwb.markdown => kwb.markdown} (100%) rename source/_components/{sensor.lacrosse.markdown => lacrosse.markdown} (100%) rename source/_components/{notify.lannouncer.markdown => lannouncer.markdown} (100%) rename source/_components/{sensor.lastfm.markdown => lastfm.markdown} (100%) rename source/_components/{sensor.launch_library.markdown => launch_library.markdown} (100%) rename source/_components/{media_player.lg_netcast.markdown => lg_netcast.markdown} (100%) rename source/_components/{media_player.lg_soundbar.markdown => lg_soundbar.markdown} (100%) rename source/_components/{scene.lifx_cloud.markdown => lifx_cloud.markdown} (100%) rename source/_components/{light.limitlessled.markdown => limitlessled.markdown} (100%) rename source/_components/{device_tracker.linksys_ap.markdown => linksys_ap.markdown} (100%) rename source/_components/{device_tracker.linksys_smart.markdown => linksys_smart.markdown} (100%) rename source/_components/{sensor.linky.markdown => linky.markdown} (100%) rename source/_components/{sensor.linux_battery.markdown => linux_battery.markdown} (100%) rename source/_components/{media_player.liveboxplaytv.markdown => liveboxplaytv.markdown} (100%) rename source/_components/{notify.llamalab_automate.markdown => llamalab_automate.markdown} (100%) rename source/_components/{camera.local_file.markdown => local_file.markdown} (100%) rename source/_components/{lock.lockitron.markdown => lockitron.markdown} (100%) rename source/_components/{sensor.london_air.markdown => london_air.markdown} (100%) rename source/_components/{sensor.london_underground.markdown => london_underground.markdown} (100%) rename source/_components/{sensor.loopenergy.markdown => loopenergy.markdown} (100%) rename source/_components/{device_tracker.luci.markdown => luci.markdown} (100%) rename source/_components/{light.lw12wifi.markdown => lw12wifi.markdown} (100%) rename source/_components/{sensor.lyft.markdown => lyft.markdown} (100%) rename source/_components/{sensor.magicseaweed.markdown => magicseaweed.markdown} (100%) rename source/_components/{alarm_control_panel.manual.markdown => manual.markdown} (100%) rename source/_components/{alarm_control_panel.manual_mqtt.markdown => manual_mqtt.markdown} (100%) rename source/_components/{tts.marytts.markdown => marytts.markdown} (100%) rename source/_components/{notify.mastodon.markdown => mastodon.markdown} (100%) rename source/_components/{media_player.mediaroom.markdown => mediaroom.markdown} (100%) rename source/_components/{device_tracker.meraki.markdown => meraki.markdown} (100%) rename source/_components/{notify.message_bird.markdown => message_bird.markdown} (100%) rename source/_components/{weather.met.markdown => met.markdown} (100%) rename source/_components/{weather.metoffice.markdown => metoffice.markdown} (100%) rename source/_components/{switch.mfi.markdown => mfi.markdown} (100%) rename source/_components/{sensor.mhz19.markdown => mhz19.markdown} (100%) rename source/_components/{tts.microsoft.markdown => microsoft.markdown} (100%) rename source/_components/{image_processing.microsoft_face_detect.markdown => microsoft_face_detect.markdown} (100%) rename source/_components/{image_processing.microsoft_face_identify.markdown => microsoft_face_identify.markdown} (100%) rename source/_components/{sensor.miflora.markdown => miflora.markdown} (100%) rename source/_components/{device_tracker.mikrotik.markdown => mikrotik.markdown} (100%) rename source/_components/{climate.mill.markdown => mill.markdown} (100%) rename source/_components/{sensor.min_max.markdown => min_max.markdown} (100%) rename source/_components/{sensor.mitemp_bt.markdown => mitemp_bt.markdown} (100%) rename source/_components/{camera.mjpeg.markdown => mjpeg.markdown} (100%) rename source/_components/{sensor.modem_callerid.markdown => modem_callerid.markdown} (100%) rename source/_components/{sensor.mold_indicator.markdown => mold_indicator.markdown} (100%) rename source/_components/{media_player.monoprice.markdown => monoprice.markdown} (100%) rename source/_components/{sensor.moon.markdown => moon.markdown} (100%) rename source/_components/{sensor.mopar.markdown => mopar.markdown} (100%) rename source/_components/{media_player.mpchc.markdown => mpchc.markdown} (100%) rename source/_components/{media_player.mpd.markdown => mpd.markdown} (100%) rename source/_components/{device_tracker.mqtt_json.markdown => mqtt_json.markdown} (100%) rename source/_components/{sensor.mqtt_room.markdown => mqtt_room.markdown} (100%) rename source/_components/{sensor.mvglive.markdown => mvglive.markdown} (100%) rename source/_components/{cover.myq.markdown => myq.markdown} (100%) rename source/_components/{light.mystrom.markdown => mystrom.markdown} (100%) rename source/_components/{media_player.nad.markdown => nad.markdown} (100%) rename source/_components/{light.nanoleaf.markdown => nanoleaf.markdown} (100%) rename source/_components/{sensor.nederlandse_spoorwegen.markdown => nederlandse_spoorwegen.markdown} (100%) rename source/_components/{lock.nello.markdown => nello.markdown} (100%) rename source/_components/{sensor.netatmo_public.markdown => netatmo_public.markdown} (100%) rename source/_components/{sensor.netdata.markdown => netdata.markdown} (100%) rename source/_components/{device_tracker.netgear.markdown => netgear.markdown} (100%) rename source/_components/{switch.netio.markdown => netio.markdown} (100%) rename source/_components/{sensor.neurio_energy.markdown => neurio_energy.markdown} (100%) rename source/_components/{notify.nfandroidtv.markdown => nfandroidtv.markdown} (100%) rename source/_components/{light.niko_home_control.markdown => niko_home_control.markdown} (100%) rename source/_components/{air_quality.nilu.markdown => nilu.markdown} (100%) rename source/_components/{device_tracker.nmap_tracker.markdown => nmap_tracker.markdown} (100%) rename source/_components/{sensor.nmbs.markdown => nmbs.markdown} (100%) rename source/_components/{sensor.noaa_tides.markdown => noaa_tides.markdown} (100%) rename source/_components/{sensor.nsw_fuel_station.markdown => nsw_fuel_station.markdown} (100%) rename source/_components/{geo_location.nsw_rural_fire_service_feed.markdown => nsw_rural_fire_service_feed.markdown} (100%) rename source/_components/{lock.nuki.markdown => nuki.markdown} (100%) rename source/_components/{sensor.nut.markdown => nut.markdown} (100%) rename source/_components/{alarm_control_panel.nx584.markdown => nx584.markdown} (100%) rename source/_components/{sensor.nzbget.markdown => nzbget.markdown} (100%) rename source/_components/{climate.oem.markdown => oem.markdown} (100%) rename source/_components/{sensor.ohmconnect.markdown => ohmconnect.markdown} (100%) rename source/_components/{sensor.onewire.markdown => onewire.markdown} (100%) rename source/_components/{media_player.onkyo.markdown => onkyo.markdown} (100%) rename source/_components/{camera.onvif.markdown => onvif.markdown} (100%) rename source/_components/{image_processing.openalpr_cloud.markdown => openalpr_cloud.markdown} (100%) rename source/_components/{image_processing.openalpr_local.markdown => openalpr_local.markdown} (100%) rename source/_components/{image_processing.opencv.markdown => opencv.markdown} (100%) rename source/_components/{sensor.openevse.markdown => openevse.markdown} (100%) rename source/_components/{sensor.openexchangerates.markdown => openexchangerates.markdown} (100%) rename source/_components/{cover.opengarage.markdown => opengarage.markdown} (100%) rename source/_components/{sensor.openhardwaremonitor.markdown => openhardwaremonitor.markdown} (100%) rename source/_components/{media_player.openhome.markdown => openhome.markdown} (100%) rename source/_components/{air_quality.opensensemap.markdown => opensensemap.markdown} (100%) rename source/_components/{sensor.opensky.markdown => opensky.markdown} (100%) rename source/_components/{weather.openweathermap.markdown => openweathermap.markdown} (100%) rename source/_components/{device_tracker.openwrt.markdown => openwrt.markdown} (100%) rename source/_components/{light.opple.markdown => opple.markdown} (100%) rename source/_components/{switch.orvibo.markdown => orvibo.markdown} (100%) rename source/_components/{light.osramlightify.markdown => osramlightify.markdown} (100%) rename source/_components/{sensor.otp.markdown => otp.markdown} (100%) rename source/_components/{media_player.panasonic_bluray.markdown => panasonic_bluray.markdown} (100%) rename source/_components/{media_player.panasonic_viera.markdown => panasonic_viera.markdown} (100%) rename source/_components/{media_player.pandora.markdown => pandora.markdown} (100%) rename source/_components/{switch.pencom.markdown => pencom.markdown} (100%) rename source/_components/{media_player.philips_js.markdown => philips_js.markdown} (100%) rename source/_components/{sensor.pi_hole.markdown => pi_hole.markdown} (100%) rename source/_components/{tts.picotts.markdown => picotts.markdown} (100%) rename source/_components/{light.piglow.markdown => piglow.markdown} (100%) rename source/_components/{binary_sensor.ping.markdown => ping.markdown} (100%) rename source/_components/{media_player.pioneer.markdown => pioneer.markdown} (100%) rename source/_components/{media_player.pjlink.markdown => pjlink.markdown} (100%) rename source/_components/{media_player.plex.markdown => plex.markdown} (100%) rename source/_components/{sensor.pocketcasts.markdown => pocketcasts.markdown} (100%) rename source/_components/{sensor.pollen.markdown => pollen.markdown} (100%) rename source/_components/{telegram_bot.polling.markdown => polling.markdown} (100%) rename source/_components/{sensor.postnl.markdown => postnl.markdown} (100%) rename source/_components/{sensor.prezzibenzina.markdown => prezzibenzina.markdown} (100%) rename source/_components/{climate.proliphix.markdown => proliphix.markdown} (100%) rename source/_components/{notify.prowl.markdown => prowl.markdown} (100%) rename source/_components/{camera.proxy.markdown => proxy.markdown} (100%) rename source/_components/{switch.pulseaudio_loopback.markdown => pulseaudio_loopback.markdown} (100%) rename source/_components/{camera.push.markdown => push.markdown} (100%) rename source/_components/{sensor.pushbullet.markdown => pushbullet.markdown} (100%) rename source/_components/{notify.pushetta.markdown => pushetta.markdown} (100%) rename source/_components/{notify.pushover.markdown => pushover.markdown} (100%) rename source/_components/{notify.pushsafer.markdown => pushsafer.markdown} (100%) rename source/_components/{sensor.pvoutput.markdown => pvoutput.markdown} (100%) rename source/_components/{sensor.pyload.markdown => pyload.markdown} (100%) rename source/_components/{sensor.qbittorrent.markdown => qbittorrent.markdown} (100%) rename source/_components/{sensor.qnap.markdown => qnap.markdown} (100%) rename source/_components/{image_processing.qrcode.markdown => qrcode.markdown} (100%) rename source/_components/{device_tracker.quantum_gateway.markdown => quantum_gateway.markdown} (100%) rename source/_components/{sensor.radarr.markdown => radarr.markdown} (100%) rename source/_components/{climate.radiotherm.markdown => radiotherm.markdown} (100%) rename source/_components/{sensor.random.markdown => random.markdown} (100%) rename source/_components/{switch.raspyrfm.markdown => raspyrfm.markdown} (100%) rename source/_components/{sensor.recollect_waste.markdown => recollect_waste.markdown} (100%) rename source/_components/{switch.recswitch.markdown => recswitch.markdown} (100%) rename source/_components/{sensor.reddit.markdown => reddit.markdown} (100%) rename source/_components/{sensor.rejseplanen.markdown => rejseplanen.markdown} (100%) rename source/_components/{sensor.rest.markdown => rest.markdown} (100%) rename source/_components/{sensor.ripple.markdown => ripple.markdown} (100%) rename source/_components/{device_tracker.ritassist.markdown => ritassist.markdown} (100%) rename source/_components/{sensor.rmvtransport.markdown => rmvtransport.markdown} (100%) rename source/_components/{notify.rocketchat.markdown => rocketchat.markdown} (100%) rename source/_components/{vacuum.roomba.markdown => roomba.markdown} (100%) rename source/_components/{sensor.rova.markdown => rova.markdown} (100%) rename source/_components/{camera.rpi_camera.markdown => rpi_camera.markdown} (100%) rename source/_components/{light.rpi_gpio_pwm.markdown => rpi_gpio_pwm.markdown} (100%) rename source/_components/{switch.rpi_rf.markdown => rpi_rf.markdown} (100%) rename source/_components/{sensor.rtorrent.markdown => rtorrent.markdown} (100%) rename source/_components/{media_player.russound_rio.markdown => russound_rio.markdown} (100%) rename source/_components/{media_player.russound_rnet.markdown => russound_rnet.markdown} (100%) rename source/_components/{sensor.ruter.markdown => ruter.markdown} (100%) rename source/_components/{media_player.samsungtv.markdown => samsungtv.markdown} (100%) rename source/_components/{sensor.scrape.markdown => scrape.markdown} (100%) rename source/_components/{sensor.season.markdown => season.markdown} (100%) rename source/_components/{notify.sendgrid.markdown => sendgrid.markdown} (100%) rename source/_components/{light.sensehat.markdown => sensehat.markdown} (100%) rename source/_components/{climate.sensibo.markdown => sensibo.markdown} (100%) rename source/_components/{sensor.serial.markdown => serial.markdown} (100%) rename source/_components/{sensor.serial_pm.markdown => serial_pm.markdown} (100%) rename source/_components/{lock.sesame.markdown => sesame.markdown} (100%) rename source/_components/{image_processing.seven_segments.markdown => seven_segments.markdown} (100%) rename source/_components/{sensor.seventeentrack.markdown => seventeentrack.markdown} (100%) rename source/_components/{sensor.shodan.markdown => shodan.markdown} (100%) rename source/_components/{sensor.sht31.markdown => sht31.markdown} (100%) rename source/_components/{sensor.sigfox.markdown => sigfox.markdown} (100%) rename source/_components/{notify.simplepush.markdown => simplepush.markdown} (100%) rename source/_components/{sensor.simulated.markdown => simulated.markdown} (100%) rename source/_components/{device_tracker.sky_hub.markdown => sky_hub.markdown} (100%) rename source/_components/{sensor.skybeacon.markdown => skybeacon.markdown} (100%) rename source/_components/{notify.slack.markdown => slack.markdown} (100%) rename source/_components/{sensor.sma.markdown => sma.markdown} (100%) rename source/_components/{notify.smtp.markdown => smtp.markdown} (100%) rename source/_components/{media_player.snapcast.markdown => snapcast.markdown} (100%) rename source/_components/{switch.snmp.markdown => snmp.markdown} (100%) rename source/_components/{sensor.sochain.markdown => sochain.markdown} (100%) rename source/_components/{sensor.socialblade.markdown => socialblade.markdown} (100%) rename source/_components/{sensor.solaredge.markdown => solaredge.markdown} (100%) rename source/_components/{sensor.sonarr.markdown => sonarr.markdown} (100%) rename source/_components/{media_player.songpal.markdown => songpal.markdown} (100%) rename source/_components/{switch.sony_projector.markdown => sony_projector.markdown} (100%) rename source/_components/{media_player.soundtouch.markdown => soundtouch.markdown} (100%) rename source/_components/{sensor.spotcrime.markdown => spotcrime.markdown} (100%) rename source/_components/{media_player.spotify.markdown => spotify.markdown} (100%) rename source/_components/{sensor.sql.markdown => sql.markdown} (100%) rename source/_components/{media_player.squeezebox.markdown => squeezebox.markdown} (100%) rename source/_components/{sensor.srp_energy.markdown => srp_energy.markdown} (100%) rename source/_components/{sensor.starlingbank.markdown => starlingbank.markdown} (100%) rename source/_components/{sensor.startca.markdown => startca.markdown} (100%) rename source/_components/{sensor.statistics.markdown => statistics.markdown} (100%) rename source/_components/{sensor.steam_online.markdown => steam_online.markdown} (100%) rename source/_components/{notify.stride.markdown => stride.markdown} (100%) rename source/_components/{sensor.supervisord.markdown => supervisord.markdown} (100%) rename source/_components/{sensor.swiss_hydrological_data.markdown => swiss_hydrological_data.markdown} (100%) rename source/_components/{sensor.swiss_public_transport.markdown => swiss_public_transport.markdown} (100%) rename source/_components/{device_tracker.swisscom.markdown => swisscom.markdown} (100%) rename source/_components/{switch.switchbot.markdown => switchbot.markdown} (100%) rename source/_components/{switch.switchmate.markdown => switchmate.markdown} (100%) rename source/_components/{sensor.syncthru.markdown => syncthru.markdown} (100%) rename source/_components/{camera.synology.markdown => synology.markdown} (100%) rename source/_components/{notify.synology_chat.markdown => synology_chat.markdown} (100%) rename source/_components/{device_tracker.synology_srm.markdown => synology_srm.markdown} (100%) rename source/_components/{sensor.synologydsm.markdown => synologydsm.markdown} (100%) rename source/_components/{notify.syslog.markdown => syslog.markdown} (100%) rename source/_components/{sensor.systemmonitor.markdown => systemmonitor.markdown} (100%) rename source/_components/{sensor.sytadin.markdown => sytadin.markdown} (100%) rename source/_components/{sensor.tank_utility.markdown => tank_utility.markdown} (100%) rename source/_components/{binary_sensor.tapsaff.markdown => tapsaff.markdown} (100%) rename source/_components/{sensor.tautulli.markdown => tautulli.markdown} (100%) rename source/_components/{binary_sensor.tcp.markdown => tcp.markdown} (100%) rename source/_components/{sensor.ted5000.markdown => ted5000.markdown} (100%) rename source/_components/{sensor.teksavvy.markdown => teksavvy.markdown} (100%) rename source/_components/{notify.telegram.markdown => telegram.markdown} (100%) rename source/_components/{switch.telnet.markdown => telnet.markdown} (100%) rename source/_components/{sensor.temper.markdown => temper.markdown} (100%) rename source/_components/{sensor.template.markdown => template.markdown} (100%) rename source/_components/{image_processing.tensorflow.markdown => tensorflow.markdown} (100%) rename source/_components/{climate.tfiac.markdown => tfiac.markdown} (100%) rename source/_components/{sensor.thermoworks_smoke.markdown => thermoworks_smoke.markdown} (100%) rename source/_components/{sensor.thinkingcleaner.markdown => thinkingcleaner.markdown} (100%) rename source/_components/{device_tracker.thomson.markdown => thomson.markdown} (100%) rename source/_components/{binary_sensor.threshold.markdown => threshold.markdown} (100%) rename source/_components/{light.tikteck.markdown => tikteck.markdown} (100%) rename source/_components/{device_tracker.tile.markdown => tile.markdown} (100%) rename source/_components/{sensor.time_date.markdown => time_date.markdown} (100%) rename source/_components/{binary_sensor.tod.markdown => tod.markdown} (100%) rename source/_components/{calendar.todoist.markdown => todoist.markdown} (100%) rename source/_components/{device_tracker.tomato.markdown => tomato.markdown} (100%) rename source/_components/{sensor.torque.markdown => torque.markdown} (100%) rename source/_components/{alarm_control_panel.totalconnect.markdown => totalconnect.markdown} (100%) rename source/_components/{climate.touchline.markdown => touchline.markdown} (100%) rename source/_components/{device_tracker.traccar.markdown => traccar.markdown} (100%) rename source/_components/{device_tracker.trackr.markdown => trackr.markdown} (100%) rename source/_components/{sensor.trafikverket_weatherstation.markdown => trafikverket_weatherstation.markdown} (100%) rename source/_components/{sensor.transport_nsw.markdown => transport_nsw.markdown} (100%) rename source/_components/{sensor.travisci.markdown => travisci.markdown} (100%) rename source/_components/{binary_sensor.trend.markdown => trend.markdown} (100%) rename source/_components/{notify.twilio_call.markdown => twilio_call.markdown} (100%) rename source/_components/{notify.twilio_sms.markdown => twilio_sms.markdown} (100%) rename source/_components/{sensor.twitch.markdown => twitch.markdown} (100%) rename source/_components/{notify.twitter.markdown => twitter.markdown} (100%) rename source/_components/{device_tracker.ubee.markdown => ubee.markdown} (100%) rename source/_components/{sensor.uber.markdown => uber.markdown} (100%) rename source/_components/{device_tracker.ubus.markdown => ubus.markdown} (100%) rename source/_components/{media_player.ue_smart_radio.markdown => ue_smart_radio.markdown} (100%) rename source/_components/{sensor.uk_transport.markdown => uk_transport.markdown} (100%) rename source/_components/{device_tracker.unifi_direct.markdown => unifi_direct.markdown} (100%) rename source/_components/{media_player.universal.markdown => universal.markdown} (100%) rename source/_components/{device_tracker.upc_connect.markdown => upc_connect.markdown} (100%) rename source/_components/{sensor.ups.markdown => ups.markdown} (100%) rename source/_components/{sensor.uptime.markdown => uptime.markdown} (100%) rename source/_components/{binary_sensor.uptimerobot.markdown => uptimerobot.markdown} (100%) rename source/_components/{sensor.uscis.markdown => uscis.markdown} (100%) rename source/_components/{geo_location.usgs_earthquakes_feed.markdown => usgs_earthquakes_feed.markdown} (100%) rename source/_components/{camera.uvc.markdown => uvc.markdown} (100%) rename source/_components/{sensor.vasttrafik.markdown => vasttrafik.markdown} (100%) rename source/_components/{climate.venstar.markdown => venstar.markdown} (100%) rename source/_components/{sensor.version.markdown => version.markdown} (100%) rename source/_components/{switch.vesync.markdown => vesync.markdown} (100%) rename source/_components/{sensor.viaggiatreno.markdown => viaggiatreno.markdown} (100%) rename source/_components/{media_player.vizio.markdown => vizio.markdown} (100%) rename source/_components/{media_player.vlc.markdown => vlc.markdown} (100%) rename source/_components/{tts.voicerss.markdown => voicerss.markdown} (100%) rename source/_components/{sensor.volkszaehler.markdown => volkszaehler.markdown} (100%) rename source/_components/{media_player.volumio.markdown => volumio.markdown} (100%) rename source/_components/{sensor.waqi.markdown => waqi.markdown} (100%) rename source/_components/{sensor.waze_travel_time.markdown => waze_travel_time.markdown} (100%) rename source/_components/{telegram_bot.webhooks.markdown => webhooks.markdown} (100%) rename source/_components/{media_player.webostv.markdown => webostv.markdown} (100%) rename source/_components/{sensor.whois.markdown => whois.markdown} (100%) rename source/_components/{binary_sensor.workday.markdown => workday.markdown} (100%) rename source/_components/{sensor.worldclock.markdown => worldclock.markdown} (100%) rename source/_components/{sensor.worldtidesinfo.markdown => worldtidesinfo.markdown} (100%) rename source/_components/{sensor.worxlandroid.markdown => worxlandroid.markdown} (100%) rename source/_components/{sensor.wsdot.markdown => wsdot.markdown} (100%) rename source/_components/{sensor.wunderground.markdown => wunderground.markdown} (100%) rename source/_components/{light.x10.markdown => x10.markdown} (100%) rename source/_components/{sensor.xbox_live.markdown => xbox_live.markdown} (100%) rename source/_components/{camera.xeoma.markdown => xeoma.markdown} (100%) rename source/_components/{device_tracker.xfinity.markdown => xfinity.markdown} (100%) rename source/_components/{camera.xiaomi.markdown => xiaomi.markdown} (100%) rename source/_components/{device_tracker.xiaomi_miio.markdown => xiaomi_miio.markdown} (100%) rename source/_components/{media_player.xiaomi_tv.markdown => xiaomi_tv.markdown} (100%) rename source/_components/{notify.xmpp.markdown => xmpp.markdown} (100%) rename source/_components/{alarm_control_panel.yale_smart_alarm.markdown => yale_smart_alarm.markdown} (100%) rename source/_components/{media_player.yamaha.markdown => yamaha.markdown} (100%) rename source/_components/{media_player.yamaha_musiccast.markdown => yamaha_musiccast.markdown} (100%) rename source/_components/{tts.yandextts.markdown => yandextts.markdown} (100%) rename source/_components/{light.yeelightsunflower.markdown => yeelightsunflower.markdown} (100%) rename source/_components/{notify.yessssms.markdown => yessssms.markdown} (100%) rename source/_components/{camera.yi.markdown => yi.markdown} (100%) rename source/_components/{sensor.yr.markdown => yr.markdown} (100%) rename source/_components/{sensor.yweather.markdown => yweather.markdown} (100%) rename source/_components/{sensor.zamg.markdown => zamg.markdown} (100%) rename source/_components/{light.zengge.markdown => zengge.markdown} (100%) rename source/_components/{sensor.zestimate.markdown => zestimate.markdown} (100%) rename source/_components/{climate.zhong_hong.markdown => zhong_hong.markdown} (100%) rename source/_components/{media_player.ziggo_mediabox_xl.markdown => ziggo_mediabox_xl.markdown} (100%) diff --git a/source/_components/switch.acer_projector.markdown b/source/_components/acer_projector.markdown similarity index 100% rename from source/_components/switch.acer_projector.markdown rename to source/_components/acer_projector.markdown diff --git a/source/_components/device_tracker.actiontec.markdown b/source/_components/actiontec.markdown similarity index 100% rename from source/_components/device_tracker.actiontec.markdown rename to source/_components/actiontec.markdown diff --git a/source/_components/sensor.aftership.markdown b/source/_components/aftership.markdown similarity index 100% rename from source/_components/sensor.aftership.markdown rename to source/_components/aftership.markdown diff --git a/source/_components/sensor.airvisual.markdown b/source/_components/airvisual.markdown similarity index 100% rename from source/_components/sensor.airvisual.markdown rename to source/_components/airvisual.markdown diff --git a/source/_components/cover.aladdin_connect.markdown b/source/_components/aladdin_connect.markdown similarity index 100% rename from source/_components/cover.aladdin_connect.markdown rename to source/_components/aladdin_connect.markdown diff --git a/source/_components/alarm_control_panel.alarmdotcom.markdown b/source/_components/alarmdotcom.markdown similarity index 100% rename from source/_components/alarm_control_panel.alarmdotcom.markdown rename to source/_components/alarmdotcom.markdown diff --git a/source/_components/sensor.alpha_vantage.markdown b/source/_components/alpha_vantage.markdown similarity index 100% rename from source/_components/sensor.alpha_vantage.markdown rename to source/_components/alpha_vantage.markdown diff --git a/source/_components/tts.amazon_polly.markdown b/source/_components/amazon_polly.markdown similarity index 100% rename from source/_components/tts.amazon_polly.markdown rename to source/_components/amazon_polly.markdown diff --git a/source/_components/switch.anel_pwrctrl.markdown b/source/_components/anel_pwrctrl.markdown similarity index 100% rename from source/_components/switch.anel_pwrctrl.markdown rename to source/_components/anel_pwrctrl.markdown diff --git a/source/_components/media_player.anthemav.markdown b/source/_components/anthemav.markdown similarity index 100% rename from source/_components/media_player.anthemav.markdown rename to source/_components/anthemav.markdown diff --git a/source/_components/notify.apns.markdown b/source/_components/apns.markdown similarity index 100% rename from source/_components/notify.apns.markdown rename to source/_components/apns.markdown diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/aquostv.markdown similarity index 100% rename from source/_components/media_player.aquostv.markdown rename to source/_components/aquostv.markdown diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/arest.markdown similarity index 100% rename from source/_components/binary_sensor.arest.markdown rename to source/_components/arest.markdown diff --git a/source/_components/device_tracker.aruba.markdown b/source/_components/aruba.markdown similarity index 100% rename from source/_components/device_tracker.aruba.markdown rename to source/_components/aruba.markdown diff --git a/source/_components/sensor.arwn.markdown b/source/_components/arwn.markdown similarity index 100% rename from source/_components/sensor.arwn.markdown rename to source/_components/arwn.markdown diff --git a/source/_components/mailbox.asterisk_cdr.markdown b/source/_components/asterisk_cdr.markdown similarity index 100% rename from source/_components/mailbox.asterisk_cdr.markdown rename to source/_components/asterisk_cdr.markdown diff --git a/source/_components/binary_sensor.aurora.markdown b/source/_components/aurora.markdown similarity index 100% rename from source/_components/binary_sensor.aurora.markdown rename to source/_components/aurora.markdown diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/automatic.markdown similarity index 100% rename from source/_components/device_tracker.automatic.markdown rename to source/_components/automatic.markdown diff --git a/source/_components/light.avion.markdown b/source/_components/avion.markdown similarity index 100% rename from source/_components/light.avion.markdown rename to source/_components/avion.markdown diff --git a/source/_components/sensor.awair.markdown b/source/_components/awair.markdown similarity index 100% rename from source/_components/sensor.awair.markdown rename to source/_components/awair.markdown diff --git a/source/_components/notify.aws_lambda.markdown b/source/_components/aws_lambda.markdown similarity index 100% rename from source/_components/notify.aws_lambda.markdown rename to source/_components/aws_lambda.markdown diff --git a/source/_components/notify.aws_sns.markdown b/source/_components/aws_sns.markdown similarity index 100% rename from source/_components/notify.aws_sns.markdown rename to source/_components/aws_sns.markdown diff --git a/source/_components/notify.aws_sqs.markdown b/source/_components/aws_sqs.markdown similarity index 100% rename from source/_components/notify.aws_sqs.markdown rename to source/_components/aws_sqs.markdown diff --git a/source/_components/tts.baidu.markdown b/source/_components/baidu.markdown similarity index 100% rename from source/_components/tts.baidu.markdown rename to source/_components/baidu.markdown diff --git a/source/_components/binary_sensor.bayesian.markdown b/source/_components/bayesian.markdown similarity index 100% rename from source/_components/binary_sensor.bayesian.markdown rename to source/_components/bayesian.markdown diff --git a/source/_components/sensor.bbox.markdown b/source/_components/bbox.markdown similarity index 100% rename from source/_components/sensor.bbox.markdown rename to source/_components/bbox.markdown diff --git a/source/_components/sensor.bh1750.markdown b/source/_components/bh1750.markdown similarity index 100% rename from source/_components/sensor.bh1750.markdown rename to source/_components/bh1750.markdown diff --git a/source/_components/sensor.bitcoin.markdown b/source/_components/bitcoin.markdown similarity index 100% rename from source/_components/sensor.bitcoin.markdown rename to source/_components/bitcoin.markdown diff --git a/source/_components/media_player.blackbird.markdown b/source/_components/blackbird.markdown similarity index 100% rename from source/_components/media_player.blackbird.markdown rename to source/_components/blackbird.markdown diff --git a/source/_components/light.blinksticklight.markdown b/source/_components/blinksticklight.markdown similarity index 100% rename from source/_components/light.blinksticklight.markdown rename to source/_components/blinksticklight.markdown diff --git a/source/_components/light.blinkt.markdown b/source/_components/blinkt.markdown similarity index 100% rename from source/_components/light.blinkt.markdown rename to source/_components/blinkt.markdown diff --git a/source/_components/sensor.blockchain.markdown b/source/_components/blockchain.markdown similarity index 100% rename from source/_components/sensor.blockchain.markdown rename to source/_components/blockchain.markdown diff --git a/source/_components/media_player.bluesound.markdown b/source/_components/bluesound.markdown similarity index 100% rename from source/_components/media_player.bluesound.markdown rename to source/_components/bluesound.markdown diff --git a/source/_components/device_tracker.bluetooth_le_tracker.markdown b/source/_components/bluetooth_le_tracker.markdown similarity index 100% rename from source/_components/device_tracker.bluetooth_le_tracker.markdown rename to source/_components/bluetooth_le_tracker.markdown diff --git a/source/_components/device_tracker.bluetooth_tracker.markdown b/source/_components/bluetooth_tracker.markdown similarity index 100% rename from source/_components/device_tracker.bluetooth_tracker.markdown rename to source/_components/bluetooth_tracker.markdown diff --git a/source/_components/sensor.bme280.markdown b/source/_components/bme280.markdown similarity index 100% rename from source/_components/sensor.bme280.markdown rename to source/_components/bme280.markdown diff --git a/source/_components/sensor.bme680.markdown b/source/_components/bme680.markdown similarity index 100% rename from source/_components/sensor.bme680.markdown rename to source/_components/bme680.markdown diff --git a/source/_components/weather.bom.markdown b/source/_components/bom.markdown similarity index 100% rename from source/_components/weather.bom.markdown rename to source/_components/bom.markdown diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/braviatv.markdown similarity index 100% rename from source/_components/media_player.braviatv.markdown rename to source/_components/braviatv.markdown diff --git a/source/_components/telegram_bot.broadcast.markdown b/source/_components/broadcast.markdown similarity index 100% rename from source/_components/telegram_bot.broadcast.markdown rename to source/_components/broadcast.markdown diff --git a/source/_components/switch.broadlink.markdown b/source/_components/broadlink.markdown similarity index 100% rename from source/_components/switch.broadlink.markdown rename to source/_components/broadlink.markdown diff --git a/source/_components/sensor.brottsplatskartan.markdown b/source/_components/brottsplatskartan.markdown similarity index 100% rename from source/_components/sensor.brottsplatskartan.markdown rename to source/_components/brottsplatskartan.markdown diff --git a/source/_components/cover.brunt.markdown b/source/_components/brunt.markdown similarity index 100% rename from source/_components/cover.brunt.markdown rename to source/_components/brunt.markdown diff --git a/source/_components/device_tracker.bt_home_hub_5.markdown b/source/_components/bt_home_hub_5.markdown similarity index 100% rename from source/_components/device_tracker.bt_home_hub_5.markdown rename to source/_components/bt_home_hub_5.markdown diff --git a/source/_components/device_tracker.bt_smarthub.markdown b/source/_components/bt_smarthub.markdown similarity index 100% rename from source/_components/device_tracker.bt_smarthub.markdown rename to source/_components/bt_smarthub.markdown diff --git a/source/_components/weather.buienradar.markdown b/source/_components/buienradar.markdown similarity index 100% rename from source/_components/weather.buienradar.markdown rename to source/_components/buienradar.markdown diff --git a/source/_components/calendar.caldav.markdown b/source/_components/caldav.markdown similarity index 100% rename from source/_components/calendar.caldav.markdown rename to source/_components/caldav.markdown diff --git a/source/_components/sensor.cert_expiry.markdown b/source/_components/cert_expiry.markdown similarity index 100% rename from source/_components/sensor.cert_expiry.markdown rename to source/_components/cert_expiry.markdown diff --git a/source/_components/media_player.channels.markdown b/source/_components/channels.markdown similarity index 100% rename from source/_components/media_player.channels.markdown rename to source/_components/channels.markdown diff --git a/source/_components/device_tracker.cisco_ios.markdown b/source/_components/cisco_ios.markdown similarity index 100% rename from source/_components/device_tracker.cisco_ios.markdown rename to source/_components/cisco_ios.markdown diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/ciscospark.markdown similarity index 100% rename from source/_components/notify.ciscospark.markdown rename to source/_components/ciscospark.markdown diff --git a/source/_components/sensor.citybikes.markdown b/source/_components/citybikes.markdown similarity index 100% rename from source/_components/sensor.citybikes.markdown rename to source/_components/citybikes.markdown diff --git a/source/_components/media_player.clementine.markdown b/source/_components/clementine.markdown similarity index 100% rename from source/_components/media_player.clementine.markdown rename to source/_components/clementine.markdown diff --git a/source/_components/notify.clickatell.markdown b/source/_components/clickatell.markdown similarity index 100% rename from source/_components/notify.clickatell.markdown rename to source/_components/clickatell.markdown diff --git a/source/_components/notify.clicksend.markdown b/source/_components/clicksend.markdown similarity index 100% rename from source/_components/notify.clicksend.markdown rename to source/_components/clicksend.markdown diff --git a/source/_components/notify.clicksend_tts.markdown b/source/_components/clicksend_tts.markdown similarity index 100% rename from source/_components/notify.clicksend_tts.markdown rename to source/_components/clicksend_tts.markdown diff --git a/source/_components/media_player.cmus.markdown b/source/_components/cmus.markdown similarity index 100% rename from source/_components/media_player.cmus.markdown rename to source/_components/cmus.markdown diff --git a/source/_components/sensor.co2signal.markdown b/source/_components/co2signal.markdown similarity index 100% rename from source/_components/sensor.co2signal.markdown rename to source/_components/co2signal.markdown diff --git a/source/_components/sensor.coinmarketcap.markdown b/source/_components/coinmarketcap.markdown similarity index 100% rename from source/_components/sensor.coinmarketcap.markdown rename to source/_components/coinmarketcap.markdown diff --git a/source/_components/sensor.comed_hourly_pricing.markdown b/source/_components/comed_hourly_pricing.markdown similarity index 100% rename from source/_components/sensor.comed_hourly_pricing.markdown rename to source/_components/comed_hourly_pricing.markdown diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/command_line.markdown similarity index 100% rename from source/_components/binary_sensor.command_line.markdown rename to source/_components/command_line.markdown diff --git a/source/_components/binary_sensor.concord232.markdown b/source/_components/concord232.markdown similarity index 100% rename from source/_components/binary_sensor.concord232.markdown rename to source/_components/concord232.markdown diff --git a/source/_components/climate.coolmaster.markdown b/source/_components/coolmaster.markdown similarity index 100% rename from source/_components/climate.coolmaster.markdown rename to source/_components/coolmaster.markdown diff --git a/source/_components/sensor.cpuspeed.markdown b/source/_components/cpuspeed.markdown similarity index 100% rename from source/_components/sensor.cpuspeed.markdown rename to source/_components/cpuspeed.markdown diff --git a/source/_components/sensor.crimereports.markdown b/source/_components/crimereports.markdown similarity index 100% rename from source/_components/sensor.crimereports.markdown rename to source/_components/crimereports.markdown diff --git a/source/_components/sensor.cups.markdown b/source/_components/cups.markdown similarity index 100% rename from source/_components/sensor.cups.markdown rename to source/_components/cups.markdown diff --git a/source/_components/sensor.currencylayer.markdown b/source/_components/currencylayer.markdown similarity index 100% rename from source/_components/sensor.currencylayer.markdown rename to source/_components/currencylayer.markdown diff --git a/source/_components/sensor.darksky.markdown b/source/_components/darksky.markdown similarity index 100% rename from source/_components/sensor.darksky.markdown rename to source/_components/darksky.markdown diff --git a/source/_components/device_tracker.ddwrt.markdown b/source/_components/ddwrt.markdown similarity index 100% rename from source/_components/device_tracker.ddwrt.markdown rename to source/_components/ddwrt.markdown diff --git a/source/_components/light.decora.markdown b/source/_components/decora.markdown similarity index 100% rename from source/_components/light.decora.markdown rename to source/_components/decora.markdown diff --git a/source/_components/light.decora_wifi.markdown b/source/_components/decora_wifi.markdown similarity index 100% rename from source/_components/light.decora_wifi.markdown rename to source/_components/decora_wifi.markdown diff --git a/source/_components/switch.deluge.markdown b/source/_components/deluge.markdown similarity index 100% rename from source/_components/switch.deluge.markdown rename to source/_components/deluge.markdown diff --git a/source/_components/media_player.denon.markdown b/source/_components/denon.markdown similarity index 100% rename from source/_components/media_player.denon.markdown rename to source/_components/denon.markdown diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/denonavr.markdown similarity index 100% rename from source/_components/media_player.denonavr.markdown rename to source/_components/denonavr.markdown diff --git a/source/_components/sensor.deutsche_bahn.markdown b/source/_components/deutsche_bahn.markdown similarity index 100% rename from source/_components/sensor.deutsche_bahn.markdown rename to source/_components/deutsche_bahn.markdown diff --git a/source/_components/sensor.dht.markdown b/source/_components/dht.markdown similarity index 100% rename from source/_components/sensor.dht.markdown rename to source/_components/dht.markdown diff --git a/source/_components/switch.digitalloggers.markdown b/source/_components/digitalloggers.markdown similarity index 100% rename from source/_components/switch.digitalloggers.markdown rename to source/_components/digitalloggers.markdown diff --git a/source/_components/media_player.directv.markdown b/source/_components/directv.markdown similarity index 100% rename from source/_components/media_player.directv.markdown rename to source/_components/directv.markdown diff --git a/source/_components/sensor.discogs.markdown b/source/_components/discogs.markdown similarity index 100% rename from source/_components/sensor.discogs.markdown rename to source/_components/discogs.markdown diff --git a/source/_components/notify.discord.markdown b/source/_components/discord.markdown similarity index 100% rename from source/_components/notify.discord.markdown rename to source/_components/discord.markdown diff --git a/source/_components/camera.dispatcher.markdown b/source/_components/dispatcher.markdown similarity index 100% rename from source/_components/camera.dispatcher.markdown rename to source/_components/dispatcher.markdown diff --git a/source/_components/image_processing.dlib_face_detect.markdown b/source/_components/dlib_face_detect.markdown similarity index 100% rename from source/_components/image_processing.dlib_face_detect.markdown rename to source/_components/dlib_face_detect.markdown diff --git a/source/_components/image_processing.dlib_face_identify.markdown b/source/_components/dlib_face_identify.markdown similarity index 100% rename from source/_components/image_processing.dlib_face_identify.markdown rename to source/_components/dlib_face_identify.markdown diff --git a/source/_components/switch.dlink.markdown b/source/_components/dlink.markdown similarity index 100% rename from source/_components/switch.dlink.markdown rename to source/_components/dlink.markdown diff --git a/source/_components/media_player.dlna_dmr.markdown b/source/_components/dlna_dmr.markdown similarity index 100% rename from source/_components/media_player.dlna_dmr.markdown rename to source/_components/dlna_dmr.markdown diff --git a/source/_components/sensor.dnsip.markdown b/source/_components/dnsip.markdown similarity index 100% rename from source/_components/sensor.dnsip.markdown rename to source/_components/dnsip.markdown diff --git a/source/_components/sensor.dsmr.markdown b/source/_components/dsmr.markdown similarity index 100% rename from source/_components/sensor.dsmr.markdown rename to source/_components/dsmr.markdown diff --git a/source/_components/sensor.dte_energy_bridge.markdown b/source/_components/dte_energy_bridge.markdown similarity index 100% rename from source/_components/sensor.dte_energy_bridge.markdown rename to source/_components/dte_energy_bridge.markdown diff --git a/source/_components/sensor.dublin_bus_transport.markdown b/source/_components/dublin_bus_transport.markdown similarity index 100% rename from source/_components/sensor.dublin_bus_transport.markdown rename to source/_components/dublin_bus_transport.markdown diff --git a/source/_components/sensor.duke_energy.markdown b/source/_components/duke_energy.markdown similarity index 100% rename from source/_components/sensor.duke_energy.markdown rename to source/_components/duke_energy.markdown diff --git a/source/_components/media_player.dunehd.markdown b/source/_components/dunehd.markdown similarity index 100% rename from source/_components/media_player.dunehd.markdown rename to source/_components/dunehd.markdown diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/dwd_weather_warnings.markdown similarity index 100% rename from source/_components/sensor.dwd_weather_warnings.markdown rename to source/_components/dwd_weather_warnings.markdown diff --git a/source/_components/sensor.ebox.markdown b/source/_components/ebox.markdown similarity index 100% rename from source/_components/sensor.ebox.markdown rename to source/_components/ebox.markdown diff --git a/source/_components/water_heater.econet.markdown b/source/_components/econet.markdown similarity index 100% rename from source/_components/water_heater.econet.markdown rename to source/_components/econet.markdown diff --git a/source/_components/sensor.eddystone_temperature.markdown b/source/_components/eddystone_temperature.markdown similarity index 100% rename from source/_components/sensor.eddystone_temperature.markdown rename to source/_components/eddystone_temperature.markdown diff --git a/source/_components/switch.edimax.markdown b/source/_components/edimax.markdown similarity index 100% rename from source/_components/switch.edimax.markdown rename to source/_components/edimax.markdown diff --git a/source/_components/device_tracker.ee_brightbox.markdown b/source/_components/ee_brightbox.markdown similarity index 100% rename from source/_components/device_tracker.ee_brightbox.markdown rename to source/_components/ee_brightbox.markdown diff --git a/source/_components/sensor.efergy.markdown b/source/_components/efergy.markdown similarity index 100% rename from source/_components/sensor.efergy.markdown rename to source/_components/efergy.markdown diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/eliqonline.markdown similarity index 100% rename from source/_components/sensor.eliqonline.markdown rename to source/_components/eliqonline.markdown diff --git a/source/_components/media_player.emby.markdown b/source/_components/emby.markdown similarity index 100% rename from source/_components/media_player.emby.markdown rename to source/_components/emby.markdown diff --git a/source/_components/sensor.emoncms.markdown b/source/_components/emoncms.markdown similarity index 100% rename from source/_components/sensor.emoncms.markdown rename to source/_components/emoncms.markdown diff --git a/source/_components/sensor.enphase_envoy.markdown b/source/_components/enphase_envoy.markdown similarity index 100% rename from source/_components/sensor.enphase_envoy.markdown rename to source/_components/enphase_envoy.markdown diff --git a/source/_components/sensor.entur_public_transport.markdown b/source/_components/entur_public_transport.markdown similarity index 100% rename from source/_components/sensor.entur_public_transport.markdown rename to source/_components/entur_public_transport.markdown diff --git a/source/_components/sensor.envirophat.markdown b/source/_components/envirophat.markdown similarity index 100% rename from source/_components/sensor.envirophat.markdown rename to source/_components/envirophat.markdown diff --git a/source/_components/climate.ephember.markdown b/source/_components/ephember.markdown similarity index 100% rename from source/_components/climate.ephember.markdown rename to source/_components/ephember.markdown diff --git a/source/_components/media_player.epson.markdown b/source/_components/epson.markdown similarity index 100% rename from source/_components/media_player.epson.markdown rename to source/_components/epson.markdown diff --git a/source/_components/climate.eq3btsmart.markdown b/source/_components/eq3btsmart.markdown similarity index 100% rename from source/_components/climate.eq3btsmart.markdown rename to source/_components/eq3btsmart.markdown diff --git a/source/_components/sensor.etherscan.markdown b/source/_components/etherscan.markdown similarity index 100% rename from source/_components/sensor.etherscan.markdown rename to source/_components/etherscan.markdown diff --git a/source/_components/light.everlights.markdown b/source/_components/everlights.markdown similarity index 100% rename from source/_components/light.everlights.markdown rename to source/_components/everlights.markdown diff --git a/source/_components/notify.facebook.markdown b/source/_components/facebook.markdown similarity index 100% rename from source/_components/notify.facebook.markdown rename to source/_components/facebook.markdown diff --git a/source/_components/image_processing.facebox.markdown b/source/_components/facebox.markdown similarity index 100% rename from source/_components/image_processing.facebox.markdown rename to source/_components/facebox.markdown diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/fail2ban.markdown similarity index 100% rename from source/_components/sensor.fail2ban.markdown rename to source/_components/fail2ban.markdown diff --git a/source/_components/camera.familyhub.markdown b/source/_components/familyhub.markdown similarity index 100% rename from source/_components/camera.familyhub.markdown rename to source/_components/familyhub.markdown diff --git a/source/_components/sensor.fedex.markdown b/source/_components/fedex.markdown similarity index 100% rename from source/_components/sensor.fedex.markdown rename to source/_components/fedex.markdown diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/ffmpeg_motion.markdown similarity index 100% rename from source/_components/binary_sensor.ffmpeg_motion.markdown rename to source/_components/ffmpeg_motion.markdown diff --git a/source/_components/binary_sensor.ffmpeg_noise.markdown b/source/_components/ffmpeg_noise.markdown similarity index 100% rename from source/_components/binary_sensor.ffmpeg_noise.markdown rename to source/_components/ffmpeg_noise.markdown diff --git a/source/_components/sensor.fido.markdown b/source/_components/fido.markdown similarity index 100% rename from source/_components/sensor.fido.markdown rename to source/_components/fido.markdown diff --git a/source/_components/notify.file.markdown b/source/_components/file.markdown similarity index 100% rename from source/_components/notify.file.markdown rename to source/_components/file.markdown diff --git a/source/_components/sensor.filesize.markdown b/source/_components/filesize.markdown similarity index 100% rename from source/_components/sensor.filesize.markdown rename to source/_components/filesize.markdown diff --git a/source/_components/sensor.filter.markdown b/source/_components/filter.markdown similarity index 100% rename from source/_components/sensor.filter.markdown rename to source/_components/filter.markdown diff --git a/source/_components/sensor.fints.markdown b/source/_components/fints.markdown similarity index 100% rename from source/_components/sensor.fints.markdown rename to source/_components/fints.markdown diff --git a/source/_components/sensor.fitbit.markdown b/source/_components/fitbit.markdown similarity index 100% rename from source/_components/sensor.fitbit.markdown rename to source/_components/fitbit.markdown diff --git a/source/_components/sensor.fixer.markdown b/source/_components/fixer.markdown similarity index 100% rename from source/_components/sensor.fixer.markdown rename to source/_components/fixer.markdown diff --git a/source/_components/climate.flexit.markdown b/source/_components/flexit.markdown similarity index 100% rename from source/_components/climate.flexit.markdown rename to source/_components/flexit.markdown diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/flic.markdown similarity index 100% rename from source/_components/binary_sensor.flic.markdown rename to source/_components/flic.markdown diff --git a/source/_components/notify.flock.markdown b/source/_components/flock.markdown similarity index 100% rename from source/_components/notify.flock.markdown rename to source/_components/flock.markdown diff --git a/source/_components/sensor.flunearyou.markdown b/source/_components/flunearyou.markdown similarity index 100% rename from source/_components/sensor.flunearyou.markdown rename to source/_components/flunearyou.markdown diff --git a/source/_components/switch.flux.markdown b/source/_components/flux.markdown similarity index 100% rename from source/_components/switch.flux.markdown rename to source/_components/flux.markdown diff --git a/source/_components/light.flux_led.markdown b/source/_components/flux_led.markdown similarity index 100% rename from source/_components/light.flux_led.markdown rename to source/_components/flux_led.markdown diff --git a/source/_components/sensor.folder.markdown b/source/_components/folder.markdown similarity index 100% rename from source/_components/sensor.folder.markdown rename to source/_components/folder.markdown diff --git a/source/_components/sensor.foobot.markdown b/source/_components/foobot.markdown similarity index 100% rename from source/_components/sensor.foobot.markdown rename to source/_components/foobot.markdown diff --git a/source/_components/camera.foscam.markdown b/source/_components/foscam.markdown similarity index 100% rename from source/_components/camera.foscam.markdown rename to source/_components/foscam.markdown diff --git a/source/_components/notify.free_mobile.markdown b/source/_components/free_mobile.markdown similarity index 100% rename from source/_components/notify.free_mobile.markdown rename to source/_components/free_mobile.markdown diff --git a/source/_components/device_tracker.fritz.markdown b/source/_components/fritz.markdown similarity index 100% rename from source/_components/device_tracker.fritz.markdown rename to source/_components/fritz.markdown diff --git a/source/_components/sensor.fritzbox_callmonitor.markdown b/source/_components/fritzbox_callmonitor.markdown similarity index 100% rename from source/_components/sensor.fritzbox_callmonitor.markdown rename to source/_components/fritzbox_callmonitor.markdown diff --git a/source/_components/sensor.fritzbox_netmonitor.markdown b/source/_components/fritzbox_netmonitor.markdown similarity index 100% rename from source/_components/sensor.fritzbox_netmonitor.markdown rename to source/_components/fritzbox_netmonitor.markdown diff --git a/source/_components/switch.fritzdect.markdown b/source/_components/fritzdect.markdown similarity index 100% rename from source/_components/switch.fritzdect.markdown rename to source/_components/fritzdect.markdown diff --git a/source/_components/media_player.frontier_silicon.markdown b/source/_components/frontier_silicon.markdown similarity index 100% rename from source/_components/media_player.frontier_silicon.markdown rename to source/_components/frontier_silicon.markdown diff --git a/source/_components/light.futurenow.markdown b/source/_components/futurenow.markdown similarity index 100% rename from source/_components/light.futurenow.markdown rename to source/_components/futurenow.markdown diff --git a/source/_components/cover.garadget.markdown b/source/_components/garadget.markdown similarity index 100% rename from source/_components/cover.garadget.markdown rename to source/_components/garadget.markdown diff --git a/source/_components/sensor.gearbest.markdown b/source/_components/gearbest.markdown similarity index 100% rename from source/_components/sensor.gearbest.markdown rename to source/_components/gearbest.markdown diff --git a/source/_components/sensor.geizhals.markdown b/source/_components/geizhals.markdown similarity index 100% rename from source/_components/sensor.geizhals.markdown rename to source/_components/geizhals.markdown diff --git a/source/_components/camera.generic.markdown b/source/_components/generic.markdown similarity index 100% rename from source/_components/camera.generic.markdown rename to source/_components/generic.markdown diff --git a/source/_components/climate.generic_thermostat.markdown b/source/_components/generic_thermostat.markdown similarity index 100% rename from source/_components/climate.generic_thermostat.markdown rename to source/_components/generic_thermostat.markdown diff --git a/source/_components/geo_location.geo_json_events.markdown b/source/_components/geo_json_events.markdown similarity index 100% rename from source/_components/geo_location.geo_json_events.markdown rename to source/_components/geo_json_events.markdown diff --git a/source/_components/sensor.geo_rss_events.markdown b/source/_components/geo_rss_events.markdown similarity index 100% rename from source/_components/sensor.geo_rss_events.markdown rename to source/_components/geo_rss_events.markdown diff --git a/source/_components/device_tracker.geofency.markdown b/source/_components/geofency.markdown similarity index 100% rename from source/_components/device_tracker.geofency.markdown rename to source/_components/geofency.markdown diff --git a/source/_components/sensor.github.markdown b/source/_components/github.markdown similarity index 100% rename from source/_components/sensor.github.markdown rename to source/_components/github.markdown diff --git a/source/_components/sensor.gitlab_ci.markdown b/source/_components/gitlab_ci.markdown similarity index 100% rename from source/_components/sensor.gitlab_ci.markdown rename to source/_components/gitlab_ci.markdown diff --git a/source/_components/sensor.gitter.markdown b/source/_components/gitter.markdown similarity index 100% rename from source/_components/sensor.gitter.markdown rename to source/_components/gitter.markdown diff --git a/source/_components/sensor.glances.markdown b/source/_components/glances.markdown similarity index 100% rename from source/_components/sensor.glances.markdown rename to source/_components/glances.markdown diff --git a/source/_components/notify.gntp.markdown b/source/_components/gntp.markdown similarity index 100% rename from source/_components/notify.gntp.markdown rename to source/_components/gntp.markdown diff --git a/source/_components/cover.gogogate2.markdown b/source/_components/gogogate2.markdown similarity index 100% rename from source/_components/cover.gogogate2.markdown rename to source/_components/gogogate2.markdown diff --git a/source/_components/tts.google.markdown b/source/_components/google.markdown similarity index 100% rename from source/_components/tts.google.markdown rename to source/_components/google.markdown diff --git a/source/_components/device_tracker.google_maps.markdown b/source/_components/google_maps.markdown similarity index 100% rename from source/_components/device_tracker.google_maps.markdown rename to source/_components/google_maps.markdown diff --git a/source/_components/sensor.google_travel_time.markdown b/source/_components/google_travel_time.markdown similarity index 100% rename from source/_components/sensor.google_travel_time.markdown rename to source/_components/google_travel_time.markdown diff --git a/source/_components/sensor.google_wifi.markdown b/source/_components/google_wifi.markdown similarity index 100% rename from source/_components/sensor.google_wifi.markdown rename to source/_components/google_wifi.markdown diff --git a/source/_components/media_player.gpmdp.markdown b/source/_components/gpmdp.markdown similarity index 100% rename from source/_components/media_player.gpmdp.markdown rename to source/_components/gpmdp.markdown diff --git a/source/_components/sensor.gpsd.markdown b/source/_components/gpsd.markdown similarity index 100% rename from source/_components/sensor.gpsd.markdown rename to source/_components/gpsd.markdown diff --git a/source/_components/device_tracker.gpslogger.markdown b/source/_components/gpslogger.markdown similarity index 100% rename from source/_components/device_tracker.gpslogger.markdown rename to source/_components/gpslogger.markdown diff --git a/source/_components/light.greenwave.markdown b/source/_components/greenwave.markdown similarity index 100% rename from source/_components/light.greenwave.markdown rename to source/_components/greenwave.markdown diff --git a/source/_components/media_player.gstreamer.markdown b/source/_components/gstreamer.markdown similarity index 100% rename from source/_components/media_player.gstreamer.markdown rename to source/_components/gstreamer.markdown diff --git a/source/_components/sensor.gtfs.markdown b/source/_components/gtfs.markdown similarity index 100% rename from source/_components/sensor.gtfs.markdown rename to source/_components/gtfs.markdown diff --git a/source/_components/sensor.gtt.markdown b/source/_components/gtt.markdown similarity index 100% rename from source/_components/sensor.gtt.markdown rename to source/_components/gtt.markdown diff --git a/source/_components/media_player.harman_kardon_avr.markdown b/source/_components/harman_kardon_avr.markdown similarity index 100% rename from source/_components/media_player.harman_kardon_avr.markdown rename to source/_components/harman_kardon_avr.markdown diff --git a/source/_components/sensor.haveibeenpwned.markdown b/source/_components/haveibeenpwned.markdown similarity index 100% rename from source/_components/sensor.haveibeenpwned.markdown rename to source/_components/haveibeenpwned.markdown diff --git a/source/_components/sensor.hddtemp.markdown b/source/_components/hddtemp.markdown similarity index 100% rename from source/_components/sensor.hddtemp.markdown rename to source/_components/hddtemp.markdown diff --git a/source/_components/climate.heatmiser.markdown b/source/_components/heatmiser.markdown similarity index 100% rename from source/_components/climate.heatmiser.markdown rename to source/_components/heatmiser.markdown diff --git a/source/_components/binary_sensor.hikvision.markdown b/source/_components/hikvision.markdown similarity index 100% rename from source/_components/binary_sensor.hikvision.markdown rename to source/_components/hikvision.markdown diff --git a/source/_components/switch.hikvisioncam.markdown b/source/_components/hikvisioncam.markdown similarity index 100% rename from source/_components/switch.hikvisioncam.markdown rename to source/_components/hikvisioncam.markdown diff --git a/source/_components/notify.hipchat.markdown b/source/_components/hipchat.markdown similarity index 100% rename from source/_components/notify.hipchat.markdown rename to source/_components/hipchat.markdown diff --git a/source/_components/sensor.history_stats.markdown b/source/_components/history_stats.markdown similarity index 100% rename from source/_components/sensor.history_stats.markdown rename to source/_components/history_stats.markdown diff --git a/source/_components/device_tracker.hitron_coda.markdown b/source/_components/hitron_coda.markdown similarity index 100% rename from source/_components/device_tracker.hitron_coda.markdown rename to source/_components/hitron_coda.markdown diff --git a/source/_components/climate.honeywell.markdown b/source/_components/honeywell.markdown similarity index 100% rename from source/_components/climate.honeywell.markdown rename to source/_components/honeywell.markdown diff --git a/source/_components/switch.hook.markdown b/source/_components/hook.markdown similarity index 100% rename from source/_components/switch.hook.markdown rename to source/_components/hook.markdown diff --git a/source/_components/media_player.horizon.markdown b/source/_components/horizon.markdown similarity index 100% rename from source/_components/media_player.horizon.markdown rename to source/_components/horizon.markdown diff --git a/source/_components/sensor.hp_ilo.markdown b/source/_components/hp_ilo.markdown similarity index 100% rename from source/_components/sensor.hp_ilo.markdown rename to source/_components/hp_ilo.markdown diff --git a/source/_components/notify.html5.markdown b/source/_components/html5.markdown similarity index 100% rename from source/_components/notify.html5.markdown rename to source/_components/html5.markdown diff --git a/source/_components/sensor.htu21d.markdown b/source/_components/htu21d.markdown similarity index 100% rename from source/_components/sensor.htu21d.markdown rename to source/_components/htu21d.markdown diff --git a/source/_components/device_tracker.huawei_router.markdown b/source/_components/huawei_router.markdown similarity index 100% rename from source/_components/device_tracker.huawei_router.markdown rename to source/_components/huawei_router.markdown diff --git a/source/_components/scene.hunterdouglas_powerview.markdown b/source/_components/hunterdouglas_powerview.markdown similarity index 100% rename from source/_components/scene.hunterdouglas_powerview.markdown rename to source/_components/hunterdouglas_powerview.markdown diff --git a/source/_components/sensor.hydroquebec.markdown b/source/_components/hydroquebec.markdown similarity index 100% rename from source/_components/sensor.hydroquebec.markdown rename to source/_components/hydroquebec.markdown diff --git a/source/_components/light.hyperion.markdown b/source/_components/hyperion.markdown similarity index 100% rename from source/_components/light.hyperion.markdown rename to source/_components/hyperion.markdown diff --git a/source/_components/alarm_control_panel.ialarm.markdown b/source/_components/ialarm.markdown similarity index 100% rename from source/_components/alarm_control_panel.ialarm.markdown rename to source/_components/ialarm.markdown diff --git a/source/_components/device_tracker.icloud.markdown b/source/_components/icloud.markdown similarity index 100% rename from source/_components/device_tracker.icloud.markdown rename to source/_components/icloud.markdown diff --git a/source/_components/light.iglo.markdown b/source/_components/iglo.markdown similarity index 100% rename from source/_components/light.iglo.markdown rename to source/_components/iglo.markdown diff --git a/source/_components/sensor.imap.markdown b/source/_components/imap.markdown similarity index 100% rename from source/_components/sensor.imap.markdown rename to source/_components/imap.markdown diff --git a/source/_components/sensor.imap_email_content.markdown b/source/_components/imap_email_content.markdown similarity index 100% rename from source/_components/sensor.imap_email_content.markdown rename to source/_components/imap_email_content.markdown diff --git a/source/_components/sensor.integration.markdown b/source/_components/integration.markdown similarity index 100% rename from source/_components/sensor.integration.markdown rename to source/_components/integration.markdown diff --git a/source/_components/sensor.irish_rail_transport.markdown b/source/_components/irish_rail_transport.markdown similarity index 100% rename from source/_components/sensor.irish_rail_transport.markdown rename to source/_components/irish_rail_transport.markdown diff --git a/source/_components/sensor.islamic_prayer_times.markdown b/source/_components/islamic_prayer_times.markdown similarity index 100% rename from source/_components/sensor.islamic_prayer_times.markdown rename to source/_components/islamic_prayer_times.markdown diff --git a/source/_components/binary_sensor.iss.markdown b/source/_components/iss.markdown similarity index 100% rename from source/_components/binary_sensor.iss.markdown rename to source/_components/iss.markdown diff --git a/source/_components/remote.itach.markdown b/source/_components/itach.markdown similarity index 100% rename from source/_components/remote.itach.markdown rename to source/_components/itach.markdown diff --git a/source/_components/media_player.itunes.markdown b/source/_components/itunes.markdown similarity index 100% rename from source/_components/media_player.itunes.markdown rename to source/_components/itunes.markdown diff --git a/source/_components/sensor.jewish_calendar.markdown b/source/_components/jewish_calendar.markdown similarity index 100% rename from source/_components/sensor.jewish_calendar.markdown rename to source/_components/jewish_calendar.markdown diff --git a/source/_components/switch.kankun.markdown b/source/_components/kankun.markdown similarity index 100% rename from source/_components/switch.kankun.markdown rename to source/_components/kankun.markdown diff --git a/source/_components/device_tracker.keenetic_ndms2.markdown b/source/_components/keenetic_ndms2.markdown similarity index 100% rename from source/_components/device_tracker.keenetic_ndms2.markdown rename to source/_components/keenetic_ndms2.markdown diff --git a/source/_components/lock.kiwi.markdown b/source/_components/kiwi.markdown similarity index 100% rename from source/_components/lock.kiwi.markdown rename to source/_components/kiwi.markdown diff --git a/source/_components/notify.kodi.markdown b/source/_components/kodi.markdown similarity index 100% rename from source/_components/notify.kodi.markdown rename to source/_components/kodi.markdown diff --git a/source/_components/sensor.kwb.markdown b/source/_components/kwb.markdown similarity index 100% rename from source/_components/sensor.kwb.markdown rename to source/_components/kwb.markdown diff --git a/source/_components/sensor.lacrosse.markdown b/source/_components/lacrosse.markdown similarity index 100% rename from source/_components/sensor.lacrosse.markdown rename to source/_components/lacrosse.markdown diff --git a/source/_components/notify.lannouncer.markdown b/source/_components/lannouncer.markdown similarity index 100% rename from source/_components/notify.lannouncer.markdown rename to source/_components/lannouncer.markdown diff --git a/source/_components/sensor.lastfm.markdown b/source/_components/lastfm.markdown similarity index 100% rename from source/_components/sensor.lastfm.markdown rename to source/_components/lastfm.markdown diff --git a/source/_components/sensor.launch_library.markdown b/source/_components/launch_library.markdown similarity index 100% rename from source/_components/sensor.launch_library.markdown rename to source/_components/launch_library.markdown diff --git a/source/_components/media_player.lg_netcast.markdown b/source/_components/lg_netcast.markdown similarity index 100% rename from source/_components/media_player.lg_netcast.markdown rename to source/_components/lg_netcast.markdown diff --git a/source/_components/media_player.lg_soundbar.markdown b/source/_components/lg_soundbar.markdown similarity index 100% rename from source/_components/media_player.lg_soundbar.markdown rename to source/_components/lg_soundbar.markdown diff --git a/source/_components/scene.lifx_cloud.markdown b/source/_components/lifx_cloud.markdown similarity index 100% rename from source/_components/scene.lifx_cloud.markdown rename to source/_components/lifx_cloud.markdown diff --git a/source/_components/light.limitlessled.markdown b/source/_components/limitlessled.markdown similarity index 100% rename from source/_components/light.limitlessled.markdown rename to source/_components/limitlessled.markdown diff --git a/source/_components/device_tracker.linksys_ap.markdown b/source/_components/linksys_ap.markdown similarity index 100% rename from source/_components/device_tracker.linksys_ap.markdown rename to source/_components/linksys_ap.markdown diff --git a/source/_components/device_tracker.linksys_smart.markdown b/source/_components/linksys_smart.markdown similarity index 100% rename from source/_components/device_tracker.linksys_smart.markdown rename to source/_components/linksys_smart.markdown diff --git a/source/_components/sensor.linky.markdown b/source/_components/linky.markdown similarity index 100% rename from source/_components/sensor.linky.markdown rename to source/_components/linky.markdown diff --git a/source/_components/sensor.linux_battery.markdown b/source/_components/linux_battery.markdown similarity index 100% rename from source/_components/sensor.linux_battery.markdown rename to source/_components/linux_battery.markdown diff --git a/source/_components/media_player.liveboxplaytv.markdown b/source/_components/liveboxplaytv.markdown similarity index 100% rename from source/_components/media_player.liveboxplaytv.markdown rename to source/_components/liveboxplaytv.markdown diff --git a/source/_components/notify.llamalab_automate.markdown b/source/_components/llamalab_automate.markdown similarity index 100% rename from source/_components/notify.llamalab_automate.markdown rename to source/_components/llamalab_automate.markdown diff --git a/source/_components/camera.local_file.markdown b/source/_components/local_file.markdown similarity index 100% rename from source/_components/camera.local_file.markdown rename to source/_components/local_file.markdown diff --git a/source/_components/lock.lockitron.markdown b/source/_components/lockitron.markdown similarity index 100% rename from source/_components/lock.lockitron.markdown rename to source/_components/lockitron.markdown diff --git a/source/_components/sensor.london_air.markdown b/source/_components/london_air.markdown similarity index 100% rename from source/_components/sensor.london_air.markdown rename to source/_components/london_air.markdown diff --git a/source/_components/sensor.london_underground.markdown b/source/_components/london_underground.markdown similarity index 100% rename from source/_components/sensor.london_underground.markdown rename to source/_components/london_underground.markdown diff --git a/source/_components/sensor.loopenergy.markdown b/source/_components/loopenergy.markdown similarity index 100% rename from source/_components/sensor.loopenergy.markdown rename to source/_components/loopenergy.markdown diff --git a/source/_components/device_tracker.luci.markdown b/source/_components/luci.markdown similarity index 100% rename from source/_components/device_tracker.luci.markdown rename to source/_components/luci.markdown diff --git a/source/_components/light.lw12wifi.markdown b/source/_components/lw12wifi.markdown similarity index 100% rename from source/_components/light.lw12wifi.markdown rename to source/_components/lw12wifi.markdown diff --git a/source/_components/sensor.lyft.markdown b/source/_components/lyft.markdown similarity index 100% rename from source/_components/sensor.lyft.markdown rename to source/_components/lyft.markdown diff --git a/source/_components/sensor.magicseaweed.markdown b/source/_components/magicseaweed.markdown similarity index 100% rename from source/_components/sensor.magicseaweed.markdown rename to source/_components/magicseaweed.markdown diff --git a/source/_components/alarm_control_panel.manual.markdown b/source/_components/manual.markdown similarity index 100% rename from source/_components/alarm_control_panel.manual.markdown rename to source/_components/manual.markdown diff --git a/source/_components/alarm_control_panel.manual_mqtt.markdown b/source/_components/manual_mqtt.markdown similarity index 100% rename from source/_components/alarm_control_panel.manual_mqtt.markdown rename to source/_components/manual_mqtt.markdown diff --git a/source/_components/tts.marytts.markdown b/source/_components/marytts.markdown similarity index 100% rename from source/_components/tts.marytts.markdown rename to source/_components/marytts.markdown diff --git a/source/_components/notify.mastodon.markdown b/source/_components/mastodon.markdown similarity index 100% rename from source/_components/notify.mastodon.markdown rename to source/_components/mastodon.markdown diff --git a/source/_components/media_player.mediaroom.markdown b/source/_components/mediaroom.markdown similarity index 100% rename from source/_components/media_player.mediaroom.markdown rename to source/_components/mediaroom.markdown diff --git a/source/_components/device_tracker.meraki.markdown b/source/_components/meraki.markdown similarity index 100% rename from source/_components/device_tracker.meraki.markdown rename to source/_components/meraki.markdown diff --git a/source/_components/notify.message_bird.markdown b/source/_components/message_bird.markdown similarity index 100% rename from source/_components/notify.message_bird.markdown rename to source/_components/message_bird.markdown diff --git a/source/_components/weather.met.markdown b/source/_components/met.markdown similarity index 100% rename from source/_components/weather.met.markdown rename to source/_components/met.markdown diff --git a/source/_components/weather.metoffice.markdown b/source/_components/metoffice.markdown similarity index 100% rename from source/_components/weather.metoffice.markdown rename to source/_components/metoffice.markdown diff --git a/source/_components/switch.mfi.markdown b/source/_components/mfi.markdown similarity index 100% rename from source/_components/switch.mfi.markdown rename to source/_components/mfi.markdown diff --git a/source/_components/sensor.mhz19.markdown b/source/_components/mhz19.markdown similarity index 100% rename from source/_components/sensor.mhz19.markdown rename to source/_components/mhz19.markdown diff --git a/source/_components/tts.microsoft.markdown b/source/_components/microsoft.markdown similarity index 100% rename from source/_components/tts.microsoft.markdown rename to source/_components/microsoft.markdown diff --git a/source/_components/image_processing.microsoft_face_detect.markdown b/source/_components/microsoft_face_detect.markdown similarity index 100% rename from source/_components/image_processing.microsoft_face_detect.markdown rename to source/_components/microsoft_face_detect.markdown diff --git a/source/_components/image_processing.microsoft_face_identify.markdown b/source/_components/microsoft_face_identify.markdown similarity index 100% rename from source/_components/image_processing.microsoft_face_identify.markdown rename to source/_components/microsoft_face_identify.markdown diff --git a/source/_components/sensor.miflora.markdown b/source/_components/miflora.markdown similarity index 100% rename from source/_components/sensor.miflora.markdown rename to source/_components/miflora.markdown diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/mikrotik.markdown similarity index 100% rename from source/_components/device_tracker.mikrotik.markdown rename to source/_components/mikrotik.markdown diff --git a/source/_components/climate.mill.markdown b/source/_components/mill.markdown similarity index 100% rename from source/_components/climate.mill.markdown rename to source/_components/mill.markdown diff --git a/source/_components/sensor.min_max.markdown b/source/_components/min_max.markdown similarity index 100% rename from source/_components/sensor.min_max.markdown rename to source/_components/min_max.markdown diff --git a/source/_components/sensor.mitemp_bt.markdown b/source/_components/mitemp_bt.markdown similarity index 100% rename from source/_components/sensor.mitemp_bt.markdown rename to source/_components/mitemp_bt.markdown diff --git a/source/_components/camera.mjpeg.markdown b/source/_components/mjpeg.markdown similarity index 100% rename from source/_components/camera.mjpeg.markdown rename to source/_components/mjpeg.markdown diff --git a/source/_components/sensor.modem_callerid.markdown b/source/_components/modem_callerid.markdown similarity index 100% rename from source/_components/sensor.modem_callerid.markdown rename to source/_components/modem_callerid.markdown diff --git a/source/_components/sensor.mold_indicator.markdown b/source/_components/mold_indicator.markdown similarity index 100% rename from source/_components/sensor.mold_indicator.markdown rename to source/_components/mold_indicator.markdown diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/monoprice.markdown similarity index 100% rename from source/_components/media_player.monoprice.markdown rename to source/_components/monoprice.markdown diff --git a/source/_components/sensor.moon.markdown b/source/_components/moon.markdown similarity index 100% rename from source/_components/sensor.moon.markdown rename to source/_components/moon.markdown diff --git a/source/_components/sensor.mopar.markdown b/source/_components/mopar.markdown similarity index 100% rename from source/_components/sensor.mopar.markdown rename to source/_components/mopar.markdown diff --git a/source/_components/media_player.mpchc.markdown b/source/_components/mpchc.markdown similarity index 100% rename from source/_components/media_player.mpchc.markdown rename to source/_components/mpchc.markdown diff --git a/source/_components/media_player.mpd.markdown b/source/_components/mpd.markdown similarity index 100% rename from source/_components/media_player.mpd.markdown rename to source/_components/mpd.markdown diff --git a/source/_components/device_tracker.mqtt_json.markdown b/source/_components/mqtt_json.markdown similarity index 100% rename from source/_components/device_tracker.mqtt_json.markdown rename to source/_components/mqtt_json.markdown diff --git a/source/_components/sensor.mqtt_room.markdown b/source/_components/mqtt_room.markdown similarity index 100% rename from source/_components/sensor.mqtt_room.markdown rename to source/_components/mqtt_room.markdown diff --git a/source/_components/sensor.mvglive.markdown b/source/_components/mvglive.markdown similarity index 100% rename from source/_components/sensor.mvglive.markdown rename to source/_components/mvglive.markdown diff --git a/source/_components/cover.myq.markdown b/source/_components/myq.markdown similarity index 100% rename from source/_components/cover.myq.markdown rename to source/_components/myq.markdown diff --git a/source/_components/light.mystrom.markdown b/source/_components/mystrom.markdown similarity index 100% rename from source/_components/light.mystrom.markdown rename to source/_components/mystrom.markdown diff --git a/source/_components/media_player.nad.markdown b/source/_components/nad.markdown similarity index 100% rename from source/_components/media_player.nad.markdown rename to source/_components/nad.markdown diff --git a/source/_components/light.nanoleaf.markdown b/source/_components/nanoleaf.markdown similarity index 100% rename from source/_components/light.nanoleaf.markdown rename to source/_components/nanoleaf.markdown diff --git a/source/_components/sensor.nederlandse_spoorwegen.markdown b/source/_components/nederlandse_spoorwegen.markdown similarity index 100% rename from source/_components/sensor.nederlandse_spoorwegen.markdown rename to source/_components/nederlandse_spoorwegen.markdown diff --git a/source/_components/lock.nello.markdown b/source/_components/nello.markdown similarity index 100% rename from source/_components/lock.nello.markdown rename to source/_components/nello.markdown diff --git a/source/_components/sensor.netatmo_public.markdown b/source/_components/netatmo_public.markdown similarity index 100% rename from source/_components/sensor.netatmo_public.markdown rename to source/_components/netatmo_public.markdown diff --git a/source/_components/sensor.netdata.markdown b/source/_components/netdata.markdown similarity index 100% rename from source/_components/sensor.netdata.markdown rename to source/_components/netdata.markdown diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/netgear.markdown similarity index 100% rename from source/_components/device_tracker.netgear.markdown rename to source/_components/netgear.markdown diff --git a/source/_components/switch.netio.markdown b/source/_components/netio.markdown similarity index 100% rename from source/_components/switch.netio.markdown rename to source/_components/netio.markdown diff --git a/source/_components/sensor.neurio_energy.markdown b/source/_components/neurio_energy.markdown similarity index 100% rename from source/_components/sensor.neurio_energy.markdown rename to source/_components/neurio_energy.markdown diff --git a/source/_components/notify.nfandroidtv.markdown b/source/_components/nfandroidtv.markdown similarity index 100% rename from source/_components/notify.nfandroidtv.markdown rename to source/_components/nfandroidtv.markdown diff --git a/source/_components/light.niko_home_control.markdown b/source/_components/niko_home_control.markdown similarity index 100% rename from source/_components/light.niko_home_control.markdown rename to source/_components/niko_home_control.markdown diff --git a/source/_components/air_quality.nilu.markdown b/source/_components/nilu.markdown similarity index 100% rename from source/_components/air_quality.nilu.markdown rename to source/_components/nilu.markdown diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/nmap_tracker.markdown similarity index 100% rename from source/_components/device_tracker.nmap_tracker.markdown rename to source/_components/nmap_tracker.markdown diff --git a/source/_components/sensor.nmbs.markdown b/source/_components/nmbs.markdown similarity index 100% rename from source/_components/sensor.nmbs.markdown rename to source/_components/nmbs.markdown diff --git a/source/_components/sensor.noaa_tides.markdown b/source/_components/noaa_tides.markdown similarity index 100% rename from source/_components/sensor.noaa_tides.markdown rename to source/_components/noaa_tides.markdown diff --git a/source/_components/sensor.nsw_fuel_station.markdown b/source/_components/nsw_fuel_station.markdown similarity index 100% rename from source/_components/sensor.nsw_fuel_station.markdown rename to source/_components/nsw_fuel_station.markdown diff --git a/source/_components/geo_location.nsw_rural_fire_service_feed.markdown b/source/_components/nsw_rural_fire_service_feed.markdown similarity index 100% rename from source/_components/geo_location.nsw_rural_fire_service_feed.markdown rename to source/_components/nsw_rural_fire_service_feed.markdown diff --git a/source/_components/lock.nuki.markdown b/source/_components/nuki.markdown similarity index 100% rename from source/_components/lock.nuki.markdown rename to source/_components/nuki.markdown diff --git a/source/_components/sensor.nut.markdown b/source/_components/nut.markdown similarity index 100% rename from source/_components/sensor.nut.markdown rename to source/_components/nut.markdown diff --git a/source/_components/alarm_control_panel.nx584.markdown b/source/_components/nx584.markdown similarity index 100% rename from source/_components/alarm_control_panel.nx584.markdown rename to source/_components/nx584.markdown diff --git a/source/_components/sensor.nzbget.markdown b/source/_components/nzbget.markdown similarity index 100% rename from source/_components/sensor.nzbget.markdown rename to source/_components/nzbget.markdown diff --git a/source/_components/climate.oem.markdown b/source/_components/oem.markdown similarity index 100% rename from source/_components/climate.oem.markdown rename to source/_components/oem.markdown diff --git a/source/_components/sensor.ohmconnect.markdown b/source/_components/ohmconnect.markdown similarity index 100% rename from source/_components/sensor.ohmconnect.markdown rename to source/_components/ohmconnect.markdown diff --git a/source/_components/sensor.onewire.markdown b/source/_components/onewire.markdown similarity index 100% rename from source/_components/sensor.onewire.markdown rename to source/_components/onewire.markdown diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/onkyo.markdown similarity index 100% rename from source/_components/media_player.onkyo.markdown rename to source/_components/onkyo.markdown diff --git a/source/_components/camera.onvif.markdown b/source/_components/onvif.markdown similarity index 100% rename from source/_components/camera.onvif.markdown rename to source/_components/onvif.markdown diff --git a/source/_components/image_processing.openalpr_cloud.markdown b/source/_components/openalpr_cloud.markdown similarity index 100% rename from source/_components/image_processing.openalpr_cloud.markdown rename to source/_components/openalpr_cloud.markdown diff --git a/source/_components/image_processing.openalpr_local.markdown b/source/_components/openalpr_local.markdown similarity index 100% rename from source/_components/image_processing.openalpr_local.markdown rename to source/_components/openalpr_local.markdown diff --git a/source/_components/image_processing.opencv.markdown b/source/_components/opencv.markdown similarity index 100% rename from source/_components/image_processing.opencv.markdown rename to source/_components/opencv.markdown diff --git a/source/_components/sensor.openevse.markdown b/source/_components/openevse.markdown similarity index 100% rename from source/_components/sensor.openevse.markdown rename to source/_components/openevse.markdown diff --git a/source/_components/sensor.openexchangerates.markdown b/source/_components/openexchangerates.markdown similarity index 100% rename from source/_components/sensor.openexchangerates.markdown rename to source/_components/openexchangerates.markdown diff --git a/source/_components/cover.opengarage.markdown b/source/_components/opengarage.markdown similarity index 100% rename from source/_components/cover.opengarage.markdown rename to source/_components/opengarage.markdown diff --git a/source/_components/sensor.openhardwaremonitor.markdown b/source/_components/openhardwaremonitor.markdown similarity index 100% rename from source/_components/sensor.openhardwaremonitor.markdown rename to source/_components/openhardwaremonitor.markdown diff --git a/source/_components/media_player.openhome.markdown b/source/_components/openhome.markdown similarity index 100% rename from source/_components/media_player.openhome.markdown rename to source/_components/openhome.markdown diff --git a/source/_components/air_quality.opensensemap.markdown b/source/_components/opensensemap.markdown similarity index 100% rename from source/_components/air_quality.opensensemap.markdown rename to source/_components/opensensemap.markdown diff --git a/source/_components/sensor.opensky.markdown b/source/_components/opensky.markdown similarity index 100% rename from source/_components/sensor.opensky.markdown rename to source/_components/opensky.markdown diff --git a/source/_components/weather.openweathermap.markdown b/source/_components/openweathermap.markdown similarity index 100% rename from source/_components/weather.openweathermap.markdown rename to source/_components/openweathermap.markdown diff --git a/source/_components/device_tracker.openwrt.markdown b/source/_components/openwrt.markdown similarity index 100% rename from source/_components/device_tracker.openwrt.markdown rename to source/_components/openwrt.markdown diff --git a/source/_components/light.opple.markdown b/source/_components/opple.markdown similarity index 100% rename from source/_components/light.opple.markdown rename to source/_components/opple.markdown diff --git a/source/_components/switch.orvibo.markdown b/source/_components/orvibo.markdown similarity index 100% rename from source/_components/switch.orvibo.markdown rename to source/_components/orvibo.markdown diff --git a/source/_components/light.osramlightify.markdown b/source/_components/osramlightify.markdown similarity index 100% rename from source/_components/light.osramlightify.markdown rename to source/_components/osramlightify.markdown diff --git a/source/_components/sensor.otp.markdown b/source/_components/otp.markdown similarity index 100% rename from source/_components/sensor.otp.markdown rename to source/_components/otp.markdown diff --git a/source/_components/media_player.panasonic_bluray.markdown b/source/_components/panasonic_bluray.markdown similarity index 100% rename from source/_components/media_player.panasonic_bluray.markdown rename to source/_components/panasonic_bluray.markdown diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/panasonic_viera.markdown similarity index 100% rename from source/_components/media_player.panasonic_viera.markdown rename to source/_components/panasonic_viera.markdown diff --git a/source/_components/media_player.pandora.markdown b/source/_components/pandora.markdown similarity index 100% rename from source/_components/media_player.pandora.markdown rename to source/_components/pandora.markdown diff --git a/source/_components/switch.pencom.markdown b/source/_components/pencom.markdown similarity index 100% rename from source/_components/switch.pencom.markdown rename to source/_components/pencom.markdown diff --git a/source/_components/media_player.philips_js.markdown b/source/_components/philips_js.markdown similarity index 100% rename from source/_components/media_player.philips_js.markdown rename to source/_components/philips_js.markdown diff --git a/source/_components/sensor.pi_hole.markdown b/source/_components/pi_hole.markdown similarity index 100% rename from source/_components/sensor.pi_hole.markdown rename to source/_components/pi_hole.markdown diff --git a/source/_components/tts.picotts.markdown b/source/_components/picotts.markdown similarity index 100% rename from source/_components/tts.picotts.markdown rename to source/_components/picotts.markdown diff --git a/source/_components/light.piglow.markdown b/source/_components/piglow.markdown similarity index 100% rename from source/_components/light.piglow.markdown rename to source/_components/piglow.markdown diff --git a/source/_components/binary_sensor.ping.markdown b/source/_components/ping.markdown similarity index 100% rename from source/_components/binary_sensor.ping.markdown rename to source/_components/ping.markdown diff --git a/source/_components/media_player.pioneer.markdown b/source/_components/pioneer.markdown similarity index 100% rename from source/_components/media_player.pioneer.markdown rename to source/_components/pioneer.markdown diff --git a/source/_components/media_player.pjlink.markdown b/source/_components/pjlink.markdown similarity index 100% rename from source/_components/media_player.pjlink.markdown rename to source/_components/pjlink.markdown diff --git a/source/_components/media_player.plex.markdown b/source/_components/plex.markdown similarity index 100% rename from source/_components/media_player.plex.markdown rename to source/_components/plex.markdown diff --git a/source/_components/sensor.pocketcasts.markdown b/source/_components/pocketcasts.markdown similarity index 100% rename from source/_components/sensor.pocketcasts.markdown rename to source/_components/pocketcasts.markdown diff --git a/source/_components/sensor.pollen.markdown b/source/_components/pollen.markdown similarity index 100% rename from source/_components/sensor.pollen.markdown rename to source/_components/pollen.markdown diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/polling.markdown similarity index 100% rename from source/_components/telegram_bot.polling.markdown rename to source/_components/polling.markdown diff --git a/source/_components/sensor.postnl.markdown b/source/_components/postnl.markdown similarity index 100% rename from source/_components/sensor.postnl.markdown rename to source/_components/postnl.markdown diff --git a/source/_components/sensor.prezzibenzina.markdown b/source/_components/prezzibenzina.markdown similarity index 100% rename from source/_components/sensor.prezzibenzina.markdown rename to source/_components/prezzibenzina.markdown diff --git a/source/_components/climate.proliphix.markdown b/source/_components/proliphix.markdown similarity index 100% rename from source/_components/climate.proliphix.markdown rename to source/_components/proliphix.markdown diff --git a/source/_components/notify.prowl.markdown b/source/_components/prowl.markdown similarity index 100% rename from source/_components/notify.prowl.markdown rename to source/_components/prowl.markdown diff --git a/source/_components/camera.proxy.markdown b/source/_components/proxy.markdown similarity index 100% rename from source/_components/camera.proxy.markdown rename to source/_components/proxy.markdown diff --git a/source/_components/switch.pulseaudio_loopback.markdown b/source/_components/pulseaudio_loopback.markdown similarity index 100% rename from source/_components/switch.pulseaudio_loopback.markdown rename to source/_components/pulseaudio_loopback.markdown diff --git a/source/_components/camera.push.markdown b/source/_components/push.markdown similarity index 100% rename from source/_components/camera.push.markdown rename to source/_components/push.markdown diff --git a/source/_components/sensor.pushbullet.markdown b/source/_components/pushbullet.markdown similarity index 100% rename from source/_components/sensor.pushbullet.markdown rename to source/_components/pushbullet.markdown diff --git a/source/_components/notify.pushetta.markdown b/source/_components/pushetta.markdown similarity index 100% rename from source/_components/notify.pushetta.markdown rename to source/_components/pushetta.markdown diff --git a/source/_components/notify.pushover.markdown b/source/_components/pushover.markdown similarity index 100% rename from source/_components/notify.pushover.markdown rename to source/_components/pushover.markdown diff --git a/source/_components/notify.pushsafer.markdown b/source/_components/pushsafer.markdown similarity index 100% rename from source/_components/notify.pushsafer.markdown rename to source/_components/pushsafer.markdown diff --git a/source/_components/sensor.pvoutput.markdown b/source/_components/pvoutput.markdown similarity index 100% rename from source/_components/sensor.pvoutput.markdown rename to source/_components/pvoutput.markdown diff --git a/source/_components/sensor.pyload.markdown b/source/_components/pyload.markdown similarity index 100% rename from source/_components/sensor.pyload.markdown rename to source/_components/pyload.markdown diff --git a/source/_components/sensor.qbittorrent.markdown b/source/_components/qbittorrent.markdown similarity index 100% rename from source/_components/sensor.qbittorrent.markdown rename to source/_components/qbittorrent.markdown diff --git a/source/_components/sensor.qnap.markdown b/source/_components/qnap.markdown similarity index 100% rename from source/_components/sensor.qnap.markdown rename to source/_components/qnap.markdown diff --git a/source/_components/image_processing.qrcode.markdown b/source/_components/qrcode.markdown similarity index 100% rename from source/_components/image_processing.qrcode.markdown rename to source/_components/qrcode.markdown diff --git a/source/_components/device_tracker.quantum_gateway.markdown b/source/_components/quantum_gateway.markdown similarity index 100% rename from source/_components/device_tracker.quantum_gateway.markdown rename to source/_components/quantum_gateway.markdown diff --git a/source/_components/sensor.radarr.markdown b/source/_components/radarr.markdown similarity index 100% rename from source/_components/sensor.radarr.markdown rename to source/_components/radarr.markdown diff --git a/source/_components/climate.radiotherm.markdown b/source/_components/radiotherm.markdown similarity index 100% rename from source/_components/climate.radiotherm.markdown rename to source/_components/radiotherm.markdown diff --git a/source/_components/sensor.random.markdown b/source/_components/random.markdown similarity index 100% rename from source/_components/sensor.random.markdown rename to source/_components/random.markdown diff --git a/source/_components/switch.raspyrfm.markdown b/source/_components/raspyrfm.markdown similarity index 100% rename from source/_components/switch.raspyrfm.markdown rename to source/_components/raspyrfm.markdown diff --git a/source/_components/sensor.recollect_waste.markdown b/source/_components/recollect_waste.markdown similarity index 100% rename from source/_components/sensor.recollect_waste.markdown rename to source/_components/recollect_waste.markdown diff --git a/source/_components/switch.recswitch.markdown b/source/_components/recswitch.markdown similarity index 100% rename from source/_components/switch.recswitch.markdown rename to source/_components/recswitch.markdown diff --git a/source/_components/sensor.reddit.markdown b/source/_components/reddit.markdown similarity index 100% rename from source/_components/sensor.reddit.markdown rename to source/_components/reddit.markdown diff --git a/source/_components/sensor.rejseplanen.markdown b/source/_components/rejseplanen.markdown similarity index 100% rename from source/_components/sensor.rejseplanen.markdown rename to source/_components/rejseplanen.markdown diff --git a/source/_components/sensor.rest.markdown b/source/_components/rest.markdown similarity index 100% rename from source/_components/sensor.rest.markdown rename to source/_components/rest.markdown diff --git a/source/_components/sensor.ripple.markdown b/source/_components/ripple.markdown similarity index 100% rename from source/_components/sensor.ripple.markdown rename to source/_components/ripple.markdown diff --git a/source/_components/device_tracker.ritassist.markdown b/source/_components/ritassist.markdown similarity index 100% rename from source/_components/device_tracker.ritassist.markdown rename to source/_components/ritassist.markdown diff --git a/source/_components/sensor.rmvtransport.markdown b/source/_components/rmvtransport.markdown similarity index 100% rename from source/_components/sensor.rmvtransport.markdown rename to source/_components/rmvtransport.markdown diff --git a/source/_components/notify.rocketchat.markdown b/source/_components/rocketchat.markdown similarity index 100% rename from source/_components/notify.rocketchat.markdown rename to source/_components/rocketchat.markdown diff --git a/source/_components/vacuum.roomba.markdown b/source/_components/roomba.markdown similarity index 100% rename from source/_components/vacuum.roomba.markdown rename to source/_components/roomba.markdown diff --git a/source/_components/sensor.rova.markdown b/source/_components/rova.markdown similarity index 100% rename from source/_components/sensor.rova.markdown rename to source/_components/rova.markdown diff --git a/source/_components/camera.rpi_camera.markdown b/source/_components/rpi_camera.markdown similarity index 100% rename from source/_components/camera.rpi_camera.markdown rename to source/_components/rpi_camera.markdown diff --git a/source/_components/light.rpi_gpio_pwm.markdown b/source/_components/rpi_gpio_pwm.markdown similarity index 100% rename from source/_components/light.rpi_gpio_pwm.markdown rename to source/_components/rpi_gpio_pwm.markdown diff --git a/source/_components/switch.rpi_rf.markdown b/source/_components/rpi_rf.markdown similarity index 100% rename from source/_components/switch.rpi_rf.markdown rename to source/_components/rpi_rf.markdown diff --git a/source/_components/sensor.rtorrent.markdown b/source/_components/rtorrent.markdown similarity index 100% rename from source/_components/sensor.rtorrent.markdown rename to source/_components/rtorrent.markdown diff --git a/source/_components/media_player.russound_rio.markdown b/source/_components/russound_rio.markdown similarity index 100% rename from source/_components/media_player.russound_rio.markdown rename to source/_components/russound_rio.markdown diff --git a/source/_components/media_player.russound_rnet.markdown b/source/_components/russound_rnet.markdown similarity index 100% rename from source/_components/media_player.russound_rnet.markdown rename to source/_components/russound_rnet.markdown diff --git a/source/_components/sensor.ruter.markdown b/source/_components/ruter.markdown similarity index 100% rename from source/_components/sensor.ruter.markdown rename to source/_components/ruter.markdown diff --git a/source/_components/media_player.samsungtv.markdown b/source/_components/samsungtv.markdown similarity index 100% rename from source/_components/media_player.samsungtv.markdown rename to source/_components/samsungtv.markdown diff --git a/source/_components/sensor.scrape.markdown b/source/_components/scrape.markdown similarity index 100% rename from source/_components/sensor.scrape.markdown rename to source/_components/scrape.markdown diff --git a/source/_components/sensor.season.markdown b/source/_components/season.markdown similarity index 100% rename from source/_components/sensor.season.markdown rename to source/_components/season.markdown diff --git a/source/_components/notify.sendgrid.markdown b/source/_components/sendgrid.markdown similarity index 100% rename from source/_components/notify.sendgrid.markdown rename to source/_components/sendgrid.markdown diff --git a/source/_components/light.sensehat.markdown b/source/_components/sensehat.markdown similarity index 100% rename from source/_components/light.sensehat.markdown rename to source/_components/sensehat.markdown diff --git a/source/_components/climate.sensibo.markdown b/source/_components/sensibo.markdown similarity index 100% rename from source/_components/climate.sensibo.markdown rename to source/_components/sensibo.markdown diff --git a/source/_components/sensor.serial.markdown b/source/_components/serial.markdown similarity index 100% rename from source/_components/sensor.serial.markdown rename to source/_components/serial.markdown diff --git a/source/_components/sensor.serial_pm.markdown b/source/_components/serial_pm.markdown similarity index 100% rename from source/_components/sensor.serial_pm.markdown rename to source/_components/serial_pm.markdown diff --git a/source/_components/lock.sesame.markdown b/source/_components/sesame.markdown similarity index 100% rename from source/_components/lock.sesame.markdown rename to source/_components/sesame.markdown diff --git a/source/_components/image_processing.seven_segments.markdown b/source/_components/seven_segments.markdown similarity index 100% rename from source/_components/image_processing.seven_segments.markdown rename to source/_components/seven_segments.markdown diff --git a/source/_components/sensor.seventeentrack.markdown b/source/_components/seventeentrack.markdown similarity index 100% rename from source/_components/sensor.seventeentrack.markdown rename to source/_components/seventeentrack.markdown diff --git a/source/_components/sensor.shodan.markdown b/source/_components/shodan.markdown similarity index 100% rename from source/_components/sensor.shodan.markdown rename to source/_components/shodan.markdown diff --git a/source/_components/sensor.sht31.markdown b/source/_components/sht31.markdown similarity index 100% rename from source/_components/sensor.sht31.markdown rename to source/_components/sht31.markdown diff --git a/source/_components/sensor.sigfox.markdown b/source/_components/sigfox.markdown similarity index 100% rename from source/_components/sensor.sigfox.markdown rename to source/_components/sigfox.markdown diff --git a/source/_components/notify.simplepush.markdown b/source/_components/simplepush.markdown similarity index 100% rename from source/_components/notify.simplepush.markdown rename to source/_components/simplepush.markdown diff --git a/source/_components/sensor.simulated.markdown b/source/_components/simulated.markdown similarity index 100% rename from source/_components/sensor.simulated.markdown rename to source/_components/simulated.markdown diff --git a/source/_components/device_tracker.sky_hub.markdown b/source/_components/sky_hub.markdown similarity index 100% rename from source/_components/device_tracker.sky_hub.markdown rename to source/_components/sky_hub.markdown diff --git a/source/_components/sensor.skybeacon.markdown b/source/_components/skybeacon.markdown similarity index 100% rename from source/_components/sensor.skybeacon.markdown rename to source/_components/skybeacon.markdown diff --git a/source/_components/notify.slack.markdown b/source/_components/slack.markdown similarity index 100% rename from source/_components/notify.slack.markdown rename to source/_components/slack.markdown diff --git a/source/_components/sensor.sma.markdown b/source/_components/sma.markdown similarity index 100% rename from source/_components/sensor.sma.markdown rename to source/_components/sma.markdown diff --git a/source/_components/notify.smtp.markdown b/source/_components/smtp.markdown similarity index 100% rename from source/_components/notify.smtp.markdown rename to source/_components/smtp.markdown diff --git a/source/_components/media_player.snapcast.markdown b/source/_components/snapcast.markdown similarity index 100% rename from source/_components/media_player.snapcast.markdown rename to source/_components/snapcast.markdown diff --git a/source/_components/switch.snmp.markdown b/source/_components/snmp.markdown similarity index 100% rename from source/_components/switch.snmp.markdown rename to source/_components/snmp.markdown diff --git a/source/_components/sensor.sochain.markdown b/source/_components/sochain.markdown similarity index 100% rename from source/_components/sensor.sochain.markdown rename to source/_components/sochain.markdown diff --git a/source/_components/sensor.socialblade.markdown b/source/_components/socialblade.markdown similarity index 100% rename from source/_components/sensor.socialblade.markdown rename to source/_components/socialblade.markdown diff --git a/source/_components/sensor.solaredge.markdown b/source/_components/solaredge.markdown similarity index 100% rename from source/_components/sensor.solaredge.markdown rename to source/_components/solaredge.markdown diff --git a/source/_components/sensor.sonarr.markdown b/source/_components/sonarr.markdown similarity index 100% rename from source/_components/sensor.sonarr.markdown rename to source/_components/sonarr.markdown diff --git a/source/_components/media_player.songpal.markdown b/source/_components/songpal.markdown similarity index 100% rename from source/_components/media_player.songpal.markdown rename to source/_components/songpal.markdown diff --git a/source/_components/switch.sony_projector.markdown b/source/_components/sony_projector.markdown similarity index 100% rename from source/_components/switch.sony_projector.markdown rename to source/_components/sony_projector.markdown diff --git a/source/_components/media_player.soundtouch.markdown b/source/_components/soundtouch.markdown similarity index 100% rename from source/_components/media_player.soundtouch.markdown rename to source/_components/soundtouch.markdown diff --git a/source/_components/sensor.spotcrime.markdown b/source/_components/spotcrime.markdown similarity index 100% rename from source/_components/sensor.spotcrime.markdown rename to source/_components/spotcrime.markdown diff --git a/source/_components/media_player.spotify.markdown b/source/_components/spotify.markdown similarity index 100% rename from source/_components/media_player.spotify.markdown rename to source/_components/spotify.markdown diff --git a/source/_components/sensor.sql.markdown b/source/_components/sql.markdown similarity index 100% rename from source/_components/sensor.sql.markdown rename to source/_components/sql.markdown diff --git a/source/_components/media_player.squeezebox.markdown b/source/_components/squeezebox.markdown similarity index 100% rename from source/_components/media_player.squeezebox.markdown rename to source/_components/squeezebox.markdown diff --git a/source/_components/sensor.srp_energy.markdown b/source/_components/srp_energy.markdown similarity index 100% rename from source/_components/sensor.srp_energy.markdown rename to source/_components/srp_energy.markdown diff --git a/source/_components/sensor.starlingbank.markdown b/source/_components/starlingbank.markdown similarity index 100% rename from source/_components/sensor.starlingbank.markdown rename to source/_components/starlingbank.markdown diff --git a/source/_components/sensor.startca.markdown b/source/_components/startca.markdown similarity index 100% rename from source/_components/sensor.startca.markdown rename to source/_components/startca.markdown diff --git a/source/_components/sensor.statistics.markdown b/source/_components/statistics.markdown similarity index 100% rename from source/_components/sensor.statistics.markdown rename to source/_components/statistics.markdown diff --git a/source/_components/sensor.steam_online.markdown b/source/_components/steam_online.markdown similarity index 100% rename from source/_components/sensor.steam_online.markdown rename to source/_components/steam_online.markdown diff --git a/source/_components/notify.stride.markdown b/source/_components/stride.markdown similarity index 100% rename from source/_components/notify.stride.markdown rename to source/_components/stride.markdown diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/supervisord.markdown similarity index 100% rename from source/_components/sensor.supervisord.markdown rename to source/_components/supervisord.markdown diff --git a/source/_components/sensor.swiss_hydrological_data.markdown b/source/_components/swiss_hydrological_data.markdown similarity index 100% rename from source/_components/sensor.swiss_hydrological_data.markdown rename to source/_components/swiss_hydrological_data.markdown diff --git a/source/_components/sensor.swiss_public_transport.markdown b/source/_components/swiss_public_transport.markdown similarity index 100% rename from source/_components/sensor.swiss_public_transport.markdown rename to source/_components/swiss_public_transport.markdown diff --git a/source/_components/device_tracker.swisscom.markdown b/source/_components/swisscom.markdown similarity index 100% rename from source/_components/device_tracker.swisscom.markdown rename to source/_components/swisscom.markdown diff --git a/source/_components/switch.switchbot.markdown b/source/_components/switchbot.markdown similarity index 100% rename from source/_components/switch.switchbot.markdown rename to source/_components/switchbot.markdown diff --git a/source/_components/switch.switchmate.markdown b/source/_components/switchmate.markdown similarity index 100% rename from source/_components/switch.switchmate.markdown rename to source/_components/switchmate.markdown diff --git a/source/_components/sensor.syncthru.markdown b/source/_components/syncthru.markdown similarity index 100% rename from source/_components/sensor.syncthru.markdown rename to source/_components/syncthru.markdown diff --git a/source/_components/camera.synology.markdown b/source/_components/synology.markdown similarity index 100% rename from source/_components/camera.synology.markdown rename to source/_components/synology.markdown diff --git a/source/_components/notify.synology_chat.markdown b/source/_components/synology_chat.markdown similarity index 100% rename from source/_components/notify.synology_chat.markdown rename to source/_components/synology_chat.markdown diff --git a/source/_components/device_tracker.synology_srm.markdown b/source/_components/synology_srm.markdown similarity index 100% rename from source/_components/device_tracker.synology_srm.markdown rename to source/_components/synology_srm.markdown diff --git a/source/_components/sensor.synologydsm.markdown b/source/_components/synologydsm.markdown similarity index 100% rename from source/_components/sensor.synologydsm.markdown rename to source/_components/synologydsm.markdown diff --git a/source/_components/notify.syslog.markdown b/source/_components/syslog.markdown similarity index 100% rename from source/_components/notify.syslog.markdown rename to source/_components/syslog.markdown diff --git a/source/_components/sensor.systemmonitor.markdown b/source/_components/systemmonitor.markdown similarity index 100% rename from source/_components/sensor.systemmonitor.markdown rename to source/_components/systemmonitor.markdown diff --git a/source/_components/sensor.sytadin.markdown b/source/_components/sytadin.markdown similarity index 100% rename from source/_components/sensor.sytadin.markdown rename to source/_components/sytadin.markdown diff --git a/source/_components/sensor.tank_utility.markdown b/source/_components/tank_utility.markdown similarity index 100% rename from source/_components/sensor.tank_utility.markdown rename to source/_components/tank_utility.markdown diff --git a/source/_components/binary_sensor.tapsaff.markdown b/source/_components/tapsaff.markdown similarity index 100% rename from source/_components/binary_sensor.tapsaff.markdown rename to source/_components/tapsaff.markdown diff --git a/source/_components/sensor.tautulli.markdown b/source/_components/tautulli.markdown similarity index 100% rename from source/_components/sensor.tautulli.markdown rename to source/_components/tautulli.markdown diff --git a/source/_components/binary_sensor.tcp.markdown b/source/_components/tcp.markdown similarity index 100% rename from source/_components/binary_sensor.tcp.markdown rename to source/_components/tcp.markdown diff --git a/source/_components/sensor.ted5000.markdown b/source/_components/ted5000.markdown similarity index 100% rename from source/_components/sensor.ted5000.markdown rename to source/_components/ted5000.markdown diff --git a/source/_components/sensor.teksavvy.markdown b/source/_components/teksavvy.markdown similarity index 100% rename from source/_components/sensor.teksavvy.markdown rename to source/_components/teksavvy.markdown diff --git a/source/_components/notify.telegram.markdown b/source/_components/telegram.markdown similarity index 100% rename from source/_components/notify.telegram.markdown rename to source/_components/telegram.markdown diff --git a/source/_components/switch.telnet.markdown b/source/_components/telnet.markdown similarity index 100% rename from source/_components/switch.telnet.markdown rename to source/_components/telnet.markdown diff --git a/source/_components/sensor.temper.markdown b/source/_components/temper.markdown similarity index 100% rename from source/_components/sensor.temper.markdown rename to source/_components/temper.markdown diff --git a/source/_components/sensor.template.markdown b/source/_components/template.markdown similarity index 100% rename from source/_components/sensor.template.markdown rename to source/_components/template.markdown diff --git a/source/_components/image_processing.tensorflow.markdown b/source/_components/tensorflow.markdown similarity index 100% rename from source/_components/image_processing.tensorflow.markdown rename to source/_components/tensorflow.markdown diff --git a/source/_components/climate.tfiac.markdown b/source/_components/tfiac.markdown similarity index 100% rename from source/_components/climate.tfiac.markdown rename to source/_components/tfiac.markdown diff --git a/source/_components/sensor.thermoworks_smoke.markdown b/source/_components/thermoworks_smoke.markdown similarity index 100% rename from source/_components/sensor.thermoworks_smoke.markdown rename to source/_components/thermoworks_smoke.markdown diff --git a/source/_components/sensor.thinkingcleaner.markdown b/source/_components/thinkingcleaner.markdown similarity index 100% rename from source/_components/sensor.thinkingcleaner.markdown rename to source/_components/thinkingcleaner.markdown diff --git a/source/_components/device_tracker.thomson.markdown b/source/_components/thomson.markdown similarity index 100% rename from source/_components/device_tracker.thomson.markdown rename to source/_components/thomson.markdown diff --git a/source/_components/binary_sensor.threshold.markdown b/source/_components/threshold.markdown similarity index 100% rename from source/_components/binary_sensor.threshold.markdown rename to source/_components/threshold.markdown diff --git a/source/_components/light.tikteck.markdown b/source/_components/tikteck.markdown similarity index 100% rename from source/_components/light.tikteck.markdown rename to source/_components/tikteck.markdown diff --git a/source/_components/device_tracker.tile.markdown b/source/_components/tile.markdown similarity index 100% rename from source/_components/device_tracker.tile.markdown rename to source/_components/tile.markdown diff --git a/source/_components/sensor.time_date.markdown b/source/_components/time_date.markdown similarity index 100% rename from source/_components/sensor.time_date.markdown rename to source/_components/time_date.markdown diff --git a/source/_components/binary_sensor.tod.markdown b/source/_components/tod.markdown similarity index 100% rename from source/_components/binary_sensor.tod.markdown rename to source/_components/tod.markdown diff --git a/source/_components/calendar.todoist.markdown b/source/_components/todoist.markdown similarity index 100% rename from source/_components/calendar.todoist.markdown rename to source/_components/todoist.markdown diff --git a/source/_components/device_tracker.tomato.markdown b/source/_components/tomato.markdown similarity index 100% rename from source/_components/device_tracker.tomato.markdown rename to source/_components/tomato.markdown diff --git a/source/_components/sensor.torque.markdown b/source/_components/torque.markdown similarity index 100% rename from source/_components/sensor.torque.markdown rename to source/_components/torque.markdown diff --git a/source/_components/alarm_control_panel.totalconnect.markdown b/source/_components/totalconnect.markdown similarity index 100% rename from source/_components/alarm_control_panel.totalconnect.markdown rename to source/_components/totalconnect.markdown diff --git a/source/_components/climate.touchline.markdown b/source/_components/touchline.markdown similarity index 100% rename from source/_components/climate.touchline.markdown rename to source/_components/touchline.markdown diff --git a/source/_components/device_tracker.traccar.markdown b/source/_components/traccar.markdown similarity index 100% rename from source/_components/device_tracker.traccar.markdown rename to source/_components/traccar.markdown diff --git a/source/_components/device_tracker.trackr.markdown b/source/_components/trackr.markdown similarity index 100% rename from source/_components/device_tracker.trackr.markdown rename to source/_components/trackr.markdown diff --git a/source/_components/sensor.trafikverket_weatherstation.markdown b/source/_components/trafikverket_weatherstation.markdown similarity index 100% rename from source/_components/sensor.trafikverket_weatherstation.markdown rename to source/_components/trafikverket_weatherstation.markdown diff --git a/source/_components/sensor.transport_nsw.markdown b/source/_components/transport_nsw.markdown similarity index 100% rename from source/_components/sensor.transport_nsw.markdown rename to source/_components/transport_nsw.markdown diff --git a/source/_components/sensor.travisci.markdown b/source/_components/travisci.markdown similarity index 100% rename from source/_components/sensor.travisci.markdown rename to source/_components/travisci.markdown diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/trend.markdown similarity index 100% rename from source/_components/binary_sensor.trend.markdown rename to source/_components/trend.markdown diff --git a/source/_components/notify.twilio_call.markdown b/source/_components/twilio_call.markdown similarity index 100% rename from source/_components/notify.twilio_call.markdown rename to source/_components/twilio_call.markdown diff --git a/source/_components/notify.twilio_sms.markdown b/source/_components/twilio_sms.markdown similarity index 100% rename from source/_components/notify.twilio_sms.markdown rename to source/_components/twilio_sms.markdown diff --git a/source/_components/sensor.twitch.markdown b/source/_components/twitch.markdown similarity index 100% rename from source/_components/sensor.twitch.markdown rename to source/_components/twitch.markdown diff --git a/source/_components/notify.twitter.markdown b/source/_components/twitter.markdown similarity index 100% rename from source/_components/notify.twitter.markdown rename to source/_components/twitter.markdown diff --git a/source/_components/device_tracker.ubee.markdown b/source/_components/ubee.markdown similarity index 100% rename from source/_components/device_tracker.ubee.markdown rename to source/_components/ubee.markdown diff --git a/source/_components/sensor.uber.markdown b/source/_components/uber.markdown similarity index 100% rename from source/_components/sensor.uber.markdown rename to source/_components/uber.markdown diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/ubus.markdown similarity index 100% rename from source/_components/device_tracker.ubus.markdown rename to source/_components/ubus.markdown diff --git a/source/_components/media_player.ue_smart_radio.markdown b/source/_components/ue_smart_radio.markdown similarity index 100% rename from source/_components/media_player.ue_smart_radio.markdown rename to source/_components/ue_smart_radio.markdown diff --git a/source/_components/sensor.uk_transport.markdown b/source/_components/uk_transport.markdown similarity index 100% rename from source/_components/sensor.uk_transport.markdown rename to source/_components/uk_transport.markdown diff --git a/source/_components/device_tracker.unifi_direct.markdown b/source/_components/unifi_direct.markdown similarity index 100% rename from source/_components/device_tracker.unifi_direct.markdown rename to source/_components/unifi_direct.markdown diff --git a/source/_components/media_player.universal.markdown b/source/_components/universal.markdown similarity index 100% rename from source/_components/media_player.universal.markdown rename to source/_components/universal.markdown diff --git a/source/_components/device_tracker.upc_connect.markdown b/source/_components/upc_connect.markdown similarity index 100% rename from source/_components/device_tracker.upc_connect.markdown rename to source/_components/upc_connect.markdown diff --git a/source/_components/sensor.ups.markdown b/source/_components/ups.markdown similarity index 100% rename from source/_components/sensor.ups.markdown rename to source/_components/ups.markdown diff --git a/source/_components/sensor.uptime.markdown b/source/_components/uptime.markdown similarity index 100% rename from source/_components/sensor.uptime.markdown rename to source/_components/uptime.markdown diff --git a/source/_components/binary_sensor.uptimerobot.markdown b/source/_components/uptimerobot.markdown similarity index 100% rename from source/_components/binary_sensor.uptimerobot.markdown rename to source/_components/uptimerobot.markdown diff --git a/source/_components/sensor.uscis.markdown b/source/_components/uscis.markdown similarity index 100% rename from source/_components/sensor.uscis.markdown rename to source/_components/uscis.markdown diff --git a/source/_components/geo_location.usgs_earthquakes_feed.markdown b/source/_components/usgs_earthquakes_feed.markdown similarity index 100% rename from source/_components/geo_location.usgs_earthquakes_feed.markdown rename to source/_components/usgs_earthquakes_feed.markdown diff --git a/source/_components/camera.uvc.markdown b/source/_components/uvc.markdown similarity index 100% rename from source/_components/camera.uvc.markdown rename to source/_components/uvc.markdown diff --git a/source/_components/sensor.vasttrafik.markdown b/source/_components/vasttrafik.markdown similarity index 100% rename from source/_components/sensor.vasttrafik.markdown rename to source/_components/vasttrafik.markdown diff --git a/source/_components/climate.venstar.markdown b/source/_components/venstar.markdown similarity index 100% rename from source/_components/climate.venstar.markdown rename to source/_components/venstar.markdown diff --git a/source/_components/sensor.version.markdown b/source/_components/version.markdown similarity index 100% rename from source/_components/sensor.version.markdown rename to source/_components/version.markdown diff --git a/source/_components/switch.vesync.markdown b/source/_components/vesync.markdown similarity index 100% rename from source/_components/switch.vesync.markdown rename to source/_components/vesync.markdown diff --git a/source/_components/sensor.viaggiatreno.markdown b/source/_components/viaggiatreno.markdown similarity index 100% rename from source/_components/sensor.viaggiatreno.markdown rename to source/_components/viaggiatreno.markdown diff --git a/source/_components/media_player.vizio.markdown b/source/_components/vizio.markdown similarity index 100% rename from source/_components/media_player.vizio.markdown rename to source/_components/vizio.markdown diff --git a/source/_components/media_player.vlc.markdown b/source/_components/vlc.markdown similarity index 100% rename from source/_components/media_player.vlc.markdown rename to source/_components/vlc.markdown diff --git a/source/_components/tts.voicerss.markdown b/source/_components/voicerss.markdown similarity index 100% rename from source/_components/tts.voicerss.markdown rename to source/_components/voicerss.markdown diff --git a/source/_components/sensor.volkszaehler.markdown b/source/_components/volkszaehler.markdown similarity index 100% rename from source/_components/sensor.volkszaehler.markdown rename to source/_components/volkszaehler.markdown diff --git a/source/_components/media_player.volumio.markdown b/source/_components/volumio.markdown similarity index 100% rename from source/_components/media_player.volumio.markdown rename to source/_components/volumio.markdown diff --git a/source/_components/sensor.waqi.markdown b/source/_components/waqi.markdown similarity index 100% rename from source/_components/sensor.waqi.markdown rename to source/_components/waqi.markdown diff --git a/source/_components/sensor.waze_travel_time.markdown b/source/_components/waze_travel_time.markdown similarity index 100% rename from source/_components/sensor.waze_travel_time.markdown rename to source/_components/waze_travel_time.markdown diff --git a/source/_components/telegram_bot.webhooks.markdown b/source/_components/webhooks.markdown similarity index 100% rename from source/_components/telegram_bot.webhooks.markdown rename to source/_components/webhooks.markdown diff --git a/source/_components/media_player.webostv.markdown b/source/_components/webostv.markdown similarity index 100% rename from source/_components/media_player.webostv.markdown rename to source/_components/webostv.markdown diff --git a/source/_components/sensor.whois.markdown b/source/_components/whois.markdown similarity index 100% rename from source/_components/sensor.whois.markdown rename to source/_components/whois.markdown diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/workday.markdown similarity index 100% rename from source/_components/binary_sensor.workday.markdown rename to source/_components/workday.markdown diff --git a/source/_components/sensor.worldclock.markdown b/source/_components/worldclock.markdown similarity index 100% rename from source/_components/sensor.worldclock.markdown rename to source/_components/worldclock.markdown diff --git a/source/_components/sensor.worldtidesinfo.markdown b/source/_components/worldtidesinfo.markdown similarity index 100% rename from source/_components/sensor.worldtidesinfo.markdown rename to source/_components/worldtidesinfo.markdown diff --git a/source/_components/sensor.worxlandroid.markdown b/source/_components/worxlandroid.markdown similarity index 100% rename from source/_components/sensor.worxlandroid.markdown rename to source/_components/worxlandroid.markdown diff --git a/source/_components/sensor.wsdot.markdown b/source/_components/wsdot.markdown similarity index 100% rename from source/_components/sensor.wsdot.markdown rename to source/_components/wsdot.markdown diff --git a/source/_components/sensor.wunderground.markdown b/source/_components/wunderground.markdown similarity index 100% rename from source/_components/sensor.wunderground.markdown rename to source/_components/wunderground.markdown diff --git a/source/_components/light.x10.markdown b/source/_components/x10.markdown similarity index 100% rename from source/_components/light.x10.markdown rename to source/_components/x10.markdown diff --git a/source/_components/sensor.xbox_live.markdown b/source/_components/xbox_live.markdown similarity index 100% rename from source/_components/sensor.xbox_live.markdown rename to source/_components/xbox_live.markdown diff --git a/source/_components/camera.xeoma.markdown b/source/_components/xeoma.markdown similarity index 100% rename from source/_components/camera.xeoma.markdown rename to source/_components/xeoma.markdown diff --git a/source/_components/device_tracker.xfinity.markdown b/source/_components/xfinity.markdown similarity index 100% rename from source/_components/device_tracker.xfinity.markdown rename to source/_components/xfinity.markdown diff --git a/source/_components/camera.xiaomi.markdown b/source/_components/xiaomi.markdown similarity index 100% rename from source/_components/camera.xiaomi.markdown rename to source/_components/xiaomi.markdown diff --git a/source/_components/device_tracker.xiaomi_miio.markdown b/source/_components/xiaomi_miio.markdown similarity index 100% rename from source/_components/device_tracker.xiaomi_miio.markdown rename to source/_components/xiaomi_miio.markdown diff --git a/source/_components/media_player.xiaomi_tv.markdown b/source/_components/xiaomi_tv.markdown similarity index 100% rename from source/_components/media_player.xiaomi_tv.markdown rename to source/_components/xiaomi_tv.markdown diff --git a/source/_components/notify.xmpp.markdown b/source/_components/xmpp.markdown similarity index 100% rename from source/_components/notify.xmpp.markdown rename to source/_components/xmpp.markdown diff --git a/source/_components/alarm_control_panel.yale_smart_alarm.markdown b/source/_components/yale_smart_alarm.markdown similarity index 100% rename from source/_components/alarm_control_panel.yale_smart_alarm.markdown rename to source/_components/yale_smart_alarm.markdown diff --git a/source/_components/media_player.yamaha.markdown b/source/_components/yamaha.markdown similarity index 100% rename from source/_components/media_player.yamaha.markdown rename to source/_components/yamaha.markdown diff --git a/source/_components/media_player.yamaha_musiccast.markdown b/source/_components/yamaha_musiccast.markdown similarity index 100% rename from source/_components/media_player.yamaha_musiccast.markdown rename to source/_components/yamaha_musiccast.markdown diff --git a/source/_components/tts.yandextts.markdown b/source/_components/yandextts.markdown similarity index 100% rename from source/_components/tts.yandextts.markdown rename to source/_components/yandextts.markdown diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/yeelightsunflower.markdown similarity index 100% rename from source/_components/light.yeelightsunflower.markdown rename to source/_components/yeelightsunflower.markdown diff --git a/source/_components/notify.yessssms.markdown b/source/_components/yessssms.markdown similarity index 100% rename from source/_components/notify.yessssms.markdown rename to source/_components/yessssms.markdown diff --git a/source/_components/camera.yi.markdown b/source/_components/yi.markdown similarity index 100% rename from source/_components/camera.yi.markdown rename to source/_components/yi.markdown diff --git a/source/_components/sensor.yr.markdown b/source/_components/yr.markdown similarity index 100% rename from source/_components/sensor.yr.markdown rename to source/_components/yr.markdown diff --git a/source/_components/sensor.yweather.markdown b/source/_components/yweather.markdown similarity index 100% rename from source/_components/sensor.yweather.markdown rename to source/_components/yweather.markdown diff --git a/source/_components/sensor.zamg.markdown b/source/_components/zamg.markdown similarity index 100% rename from source/_components/sensor.zamg.markdown rename to source/_components/zamg.markdown diff --git a/source/_components/light.zengge.markdown b/source/_components/zengge.markdown similarity index 100% rename from source/_components/light.zengge.markdown rename to source/_components/zengge.markdown diff --git a/source/_components/sensor.zestimate.markdown b/source/_components/zestimate.markdown similarity index 100% rename from source/_components/sensor.zestimate.markdown rename to source/_components/zestimate.markdown diff --git a/source/_components/climate.zhong_hong.markdown b/source/_components/zhong_hong.markdown similarity index 100% rename from source/_components/climate.zhong_hong.markdown rename to source/_components/zhong_hong.markdown diff --git a/source/_components/media_player.ziggo_mediabox_xl.markdown b/source/_components/ziggo_mediabox_xl.markdown similarity index 100% rename from source/_components/media_player.ziggo_mediabox_xl.markdown rename to source/_components/ziggo_mediabox_xl.markdown From 344ab8ce2cdb637b75d282ea206cd5e5aff1eebe Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 10:16:08 -0700 Subject: [PATCH 55/61] Add redirect_from --- source/_components/acer_projector.markdown | 2 ++ source/_components/actiontec.markdown | 2 ++ source/_components/aftership.markdown | 2 ++ source/_components/airvisual.markdown | 6 ++++++ source/_components/aladdin_connect.markdown | 2 ++ source/_components/alarmdotcom.markdown | 2 ++ source/_components/alpha_vantage.markdown | 2 ++ source/_components/amazon_polly.markdown | 2 ++ source/_components/anel_pwrctrl.markdown | 2 ++ source/_components/anthemav.markdown | 2 ++ source/_components/apns.markdown | 2 ++ source/_components/aquostv.markdown | 2 ++ source/_components/arest.markdown | 2 ++ source/_components/aruba.markdown | 2 ++ source/_components/arwn.markdown | 2 ++ source/_components/asterisk_cdr.markdown | 2 ++ source/_components/aurora.markdown | 2 ++ source/_components/automatic.markdown | 2 ++ source/_components/avion.markdown | 2 ++ source/_components/awair.markdown | 2 ++ source/_components/aws_lambda.markdown | 2 ++ source/_components/aws_sns.markdown | 2 ++ source/_components/aws_sqs.markdown | 2 ++ source/_components/baidu.markdown | 2 ++ source/_components/bayesian.markdown | 2 ++ source/_components/bbox.markdown | 2 ++ source/_components/bh1750.markdown | 2 ++ source/_components/bitcoin.markdown | 2 ++ source/_components/blackbird.markdown | 2 ++ source/_components/blinksticklight.markdown | 2 ++ source/_components/blinkt.markdown | 2 ++ source/_components/blockchain.markdown | 2 ++ source/_components/bluesound.markdown | 2 ++ source/_components/bluetooth_le_tracker.markdown | 2 ++ source/_components/bluetooth_tracker.markdown | 2 ++ source/_components/bme280.markdown | 2 ++ source/_components/bme680.markdown | 2 ++ source/_components/bom.markdown | 2 ++ source/_components/braviatv.markdown | 2 ++ source/_components/broadcast.markdown | 2 ++ source/_components/broadlink.markdown | 2 ++ source/_components/brottsplatskartan.markdown | 2 ++ source/_components/brunt.markdown | 2 ++ source/_components/bt_home_hub_5.markdown | 2 ++ source/_components/bt_smarthub.markdown | 2 ++ source/_components/buienradar.markdown | 2 ++ source/_components/caldav.markdown | 2 ++ source/_components/cert_expiry.markdown | 2 ++ source/_components/channels.markdown | 2 ++ source/_components/cisco_ios.markdown | 2 ++ source/_components/ciscospark.markdown | 2 ++ source/_components/citybikes.markdown | 2 ++ source/_components/clementine.markdown | 2 ++ source/_components/clickatell.markdown | 2 ++ source/_components/clicksend.markdown | 2 ++ source/_components/clicksend_tts.markdown | 2 ++ source/_components/cmus.markdown | 2 ++ source/_components/co2signal.markdown | 2 ++ source/_components/coinmarketcap.markdown | 2 ++ source/_components/comed_hourly_pricing.markdown | 2 ++ source/_components/command_line.markdown | 2 ++ source/_components/concord232.markdown | 2 ++ source/_components/coolmaster.markdown | 2 ++ source/_components/cpuspeed.markdown | 2 ++ source/_components/crimereports.markdown | 2 ++ source/_components/cups.markdown | 2 ++ source/_components/currencylayer.markdown | 2 ++ source/_components/darksky.markdown | 2 ++ source/_components/ddwrt.markdown | 2 ++ source/_components/decora.markdown | 2 ++ source/_components/decora_wifi.markdown | 2 ++ source/_components/deluge.markdown | 2 ++ source/_components/denon.markdown | 2 ++ source/_components/denonavr.markdown | 2 ++ source/_components/deutsche_bahn.markdown | 2 ++ source/_components/dht.markdown | 2 ++ source/_components/digitalloggers.markdown | 2 ++ source/_components/directv.markdown | 2 ++ source/_components/discogs.markdown | 2 ++ source/_components/discord.markdown | 2 ++ source/_components/dispatcher.markdown | 2 ++ source/_components/dlib_face_detect.markdown | 2 ++ source/_components/dlib_face_identify.markdown | 2 ++ source/_components/dlink.markdown | 2 ++ source/_components/dlna_dmr.markdown | 2 ++ source/_components/dnsip.markdown | 2 ++ source/_components/dsmr.markdown | 2 ++ source/_components/dte_energy_bridge.markdown | 2 ++ source/_components/dublin_bus_transport.markdown | 2 ++ source/_components/duke_energy.markdown | 2 ++ source/_components/dunehd.markdown | 2 ++ source/_components/dwd_weather_warnings.markdown | 2 ++ source/_components/ebox.markdown | 2 ++ source/_components/econet.markdown | 2 ++ source/_components/eddystone_temperature.markdown | 2 ++ source/_components/edimax.markdown | 2 ++ source/_components/ee_brightbox.markdown | 2 ++ source/_components/efergy.markdown | 2 ++ source/_components/eliqonline.markdown | 2 ++ source/_components/emby.markdown | 2 ++ source/_components/emoncms.markdown | 2 ++ source/_components/enphase_envoy.markdown | 2 ++ source/_components/entur_public_transport.markdown | 6 ++++++ source/_components/envirophat.markdown | 2 ++ source/_components/ephember.markdown | 2 ++ source/_components/epson.markdown | 2 ++ source/_components/eq3btsmart.markdown | 2 ++ source/_components/etherscan.markdown | 2 ++ source/_components/everlights.markdown | 2 ++ source/_components/facebook.markdown | 2 ++ source/_components/facebox.markdown | 2 ++ source/_components/fail2ban.markdown | 2 ++ source/_components/familyhub.markdown | 2 ++ source/_components/fedex.markdown | 2 ++ source/_components/ffmpeg_motion.markdown | 2 ++ source/_components/ffmpeg_noise.markdown | 2 ++ source/_components/fido.markdown | 2 ++ source/_components/file.markdown | 2 ++ source/_components/filesize.markdown | 2 ++ source/_components/filter.markdown | 2 ++ source/_components/fints.markdown | 2 ++ source/_components/fitbit.markdown | 2 ++ source/_components/fixer.markdown | 2 ++ source/_components/flexit.markdown | 2 ++ source/_components/flic.markdown | 2 ++ source/_components/flock.markdown | 2 ++ source/_components/flunearyou.markdown | 2 ++ source/_components/flux.markdown | 2 ++ source/_components/flux_led.markdown | 2 ++ source/_components/folder.markdown | 2 ++ source/_components/foobot.markdown | 2 ++ source/_components/foscam.markdown | 2 ++ source/_components/free_mobile.markdown | 2 ++ source/_components/fritz.markdown | 2 ++ source/_components/fritzbox_callmonitor.markdown | 2 ++ source/_components/fritzbox_netmonitor.markdown | 2 ++ source/_components/fritzdect.markdown | 2 ++ source/_components/frontier_silicon.markdown | 2 ++ source/_components/futurenow.markdown | 2 ++ source/_components/garadget.markdown | 2 ++ source/_components/gearbest.markdown | 2 ++ source/_components/geizhals.markdown | 2 ++ source/_components/generic.markdown | 2 ++ source/_components/generic_thermostat.markdown | 2 ++ source/_components/geo_json_events.markdown | 2 ++ source/_components/geo_rss_events.markdown | 2 ++ source/_components/geofency.markdown | 2 ++ source/_components/github.markdown | 2 ++ source/_components/gitlab_ci.markdown | 2 ++ source/_components/gitter.markdown | 2 ++ source/_components/glances.markdown | 2 ++ source/_components/gntp.markdown | 2 ++ source/_components/gogogate2.markdown | 2 ++ source/_components/google.markdown | 2 ++ source/_components/google_maps.markdown | 2 ++ source/_components/google_travel_time.markdown | 2 ++ source/_components/google_wifi.markdown | 2 ++ source/_components/gpmdp.markdown | 2 ++ source/_components/gpsd.markdown | 2 ++ source/_components/gpslogger.markdown | 2 ++ source/_components/greenwave.markdown | 2 ++ source/_components/gstreamer.markdown | 2 ++ source/_components/gtfs.markdown | 2 ++ source/_components/gtt.markdown | 2 ++ source/_components/harman_kardon_avr.markdown | 2 ++ source/_components/haveibeenpwned.markdown | 2 ++ source/_components/hddtemp.markdown | 2 ++ source/_components/heatmiser.markdown | 2 ++ source/_components/hikvision.markdown | 2 ++ source/_components/hikvisioncam.markdown | 2 ++ source/_components/hipchat.markdown | 2 ++ source/_components/history_stats.markdown | 2 ++ source/_components/hitron_coda.markdown | 2 ++ source/_components/honeywell.markdown | 2 ++ source/_components/hook.markdown | 2 ++ source/_components/horizon.markdown | 2 ++ source/_components/hp_ilo.markdown | 2 ++ source/_components/html5.markdown | 2 ++ source/_components/htu21d.markdown | 2 ++ source/_components/huawei_router.markdown | 2 ++ source/_components/hunterdouglas_powerview.markdown | 2 ++ source/_components/hydroquebec.markdown | 2 ++ source/_components/hyperion.markdown | 2 ++ source/_components/ialarm.markdown | 2 ++ source/_components/icloud.markdown | 2 ++ source/_components/iglo.markdown | 2 ++ source/_components/imap.markdown | 2 ++ source/_components/imap_email_content.markdown | 2 ++ source/_components/integration.markdown | 2 ++ source/_components/irish_rail_transport.markdown | 2 ++ source/_components/islamic_prayer_times.markdown | 2 ++ source/_components/iss.markdown | 2 ++ source/_components/itach.markdown | 2 ++ source/_components/itunes.markdown | 2 ++ source/_components/jewish_calendar.markdown | 2 ++ source/_components/kankun.markdown | 2 ++ source/_components/keenetic_ndms2.markdown | 2 ++ source/_components/kiwi.markdown | 2 ++ source/_components/kodi.markdown | 2 ++ source/_components/kwb.markdown | 2 ++ source/_components/lacrosse.markdown | 2 ++ source/_components/lannouncer.markdown | 2 ++ source/_components/lastfm.markdown | 2 ++ source/_components/launch_library.markdown | 2 ++ source/_components/lg_netcast.markdown | 2 ++ source/_components/lg_soundbar.markdown | 2 ++ source/_components/lifx_cloud.markdown | 2 ++ source/_components/limitlessled.markdown | 2 ++ source/_components/linksys_ap.markdown | 2 ++ source/_components/linksys_smart.markdown | 2 ++ source/_components/linky.markdown | 2 ++ source/_components/linux_battery.markdown | 2 ++ source/_components/liveboxplaytv.markdown | 2 ++ source/_components/llamalab_automate.markdown | 2 ++ source/_components/local_file.markdown | 2 ++ source/_components/lockitron.markdown | 2 ++ source/_components/london_air.markdown | 2 ++ source/_components/london_underground.markdown | 2 ++ source/_components/loopenergy.markdown | 2 ++ source/_components/luci.markdown | 2 ++ source/_components/lw12wifi.markdown | 2 ++ source/_components/lyft.markdown | 2 ++ source/_components/magicseaweed.markdown | 2 ++ source/_components/manual.markdown | 2 ++ source/_components/manual_mqtt.markdown | 2 ++ source/_components/marytts.markdown | 2 ++ source/_components/mastodon.markdown | 2 ++ source/_components/mediaroom.markdown | 2 ++ source/_components/meraki.markdown | 2 ++ source/_components/message_bird.markdown | 2 ++ source/_components/met.markdown | 2 ++ source/_components/metoffice.markdown | 2 ++ source/_components/mfi.markdown | 2 ++ source/_components/mhz19.markdown | 2 ++ source/_components/microsoft.markdown | 2 ++ source/_components/microsoft_face_detect.markdown | 2 ++ source/_components/microsoft_face_identify.markdown | 2 ++ source/_components/miflora.markdown | 2 ++ source/_components/mikrotik.markdown | 2 ++ source/_components/mill.markdown | 2 ++ source/_components/min_max.markdown | 2 ++ source/_components/mitemp_bt.markdown | 2 ++ source/_components/mjpeg.markdown | 2 ++ source/_components/modem_callerid.markdown | 2 ++ source/_components/mold_indicator.markdown | 2 ++ source/_components/monoprice.markdown | 2 ++ source/_components/moon.markdown | 2 ++ source/_components/mopar.markdown | 2 ++ source/_components/mpchc.markdown | 2 ++ source/_components/mpd.markdown | 2 ++ source/_components/mqtt_json.markdown | 2 ++ source/_components/mqtt_room.markdown | 2 ++ source/_components/mvglive.markdown | 2 ++ source/_components/myq.markdown | 2 ++ source/_components/mystrom.markdown | 2 ++ source/_components/nad.markdown | 2 ++ source/_components/nanoleaf.markdown | 2 ++ source/_components/nederlandse_spoorwegen.markdown | 2 ++ source/_components/nello.markdown | 4 ++++ source/_components/netatmo_public.markdown | 2 ++ source/_components/netdata.markdown | 2 ++ source/_components/netgear.markdown | 2 ++ source/_components/netio.markdown | 2 ++ source/_components/neurio_energy.markdown | 2 ++ source/_components/nfandroidtv.markdown | 2 ++ source/_components/niko_home_control.markdown | 2 ++ source/_components/nilu.markdown | 2 ++ source/_components/nmap_tracker.markdown | 2 ++ source/_components/nmbs.markdown | 2 ++ source/_components/noaa_tides.markdown | 2 ++ source/_components/nsw_fuel_station.markdown | 2 ++ source/_components/nsw_rural_fire_service_feed.markdown | 2 ++ source/_components/nuki.markdown | 2 ++ source/_components/nut.markdown | 2 ++ source/_components/nx584.markdown | 2 ++ source/_components/nzbget.markdown | 2 ++ source/_components/oem.markdown | 2 ++ source/_components/ohmconnect.markdown | 2 ++ source/_components/onewire.markdown | 2 ++ source/_components/onkyo.markdown | 2 ++ source/_components/onvif.markdown | 2 ++ source/_components/openalpr_cloud.markdown | 2 ++ source/_components/openalpr_local.markdown | 2 ++ source/_components/opencv.markdown | 2 ++ source/_components/openevse.markdown | 2 ++ source/_components/openexchangerates.markdown | 2 ++ source/_components/opengarage.markdown | 2 ++ source/_components/openhardwaremonitor.markdown | 2 ++ source/_components/openhome.markdown | 2 ++ source/_components/opensensemap.markdown | 2 ++ source/_components/opensky.markdown | 2 ++ source/_components/openweathermap.markdown | 2 ++ source/_components/openwrt.markdown | 2 ++ source/_components/opple.markdown | 2 ++ source/_components/orvibo.markdown | 2 ++ source/_components/osramlightify.markdown | 2 ++ source/_components/otp.markdown | 2 ++ source/_components/panasonic_bluray.markdown | 2 ++ source/_components/panasonic_viera.markdown | 2 ++ source/_components/pandora.markdown | 2 ++ source/_components/pencom.markdown | 2 ++ source/_components/philips_js.markdown | 2 ++ source/_components/pi_hole.markdown | 2 ++ source/_components/picotts.markdown | 2 ++ source/_components/piglow.markdown | 2 ++ source/_components/ping.markdown | 2 ++ source/_components/pioneer.markdown | 2 ++ source/_components/pjlink.markdown | 2 ++ source/_components/plex.markdown | 2 ++ source/_components/pocketcasts.markdown | 2 ++ source/_components/pollen.markdown | 6 ++++++ source/_components/polling.markdown | 2 ++ source/_components/postnl.markdown | 2 ++ source/_components/prezzibenzina.markdown | 2 ++ source/_components/proliphix.markdown | 2 ++ source/_components/prowl.markdown | 2 ++ source/_components/proxy.markdown | 2 ++ source/_components/pulseaudio_loopback.markdown | 2 ++ source/_components/push.markdown | 2 ++ source/_components/pushbullet.markdown | 2 ++ source/_components/pushetta.markdown | 2 ++ source/_components/pushover.markdown | 2 ++ source/_components/pushsafer.markdown | 2 ++ source/_components/pvoutput.markdown | 2 ++ source/_components/pyload.markdown | 2 ++ source/_components/qbittorrent.markdown | 2 ++ source/_components/qnap.markdown | 2 ++ source/_components/qrcode.markdown | 2 ++ source/_components/quantum_gateway.markdown | 2 ++ source/_components/radarr.markdown | 2 ++ source/_components/radiotherm.markdown | 2 ++ source/_components/random.markdown | 2 ++ source/_components/raspyrfm.markdown | 2 ++ source/_components/recollect_waste.markdown | 2 ++ source/_components/recswitch.markdown | 2 ++ source/_components/reddit.markdown | 2 ++ source/_components/rejseplanen.markdown | 2 ++ source/_components/rest.markdown | 2 ++ source/_components/ripple.markdown | 2 ++ source/_components/ritassist.markdown | 2 ++ source/_components/rmvtransport.markdown | 2 ++ source/_components/rocketchat.markdown | 2 ++ source/_components/roomba.markdown | 2 ++ source/_components/rova.markdown | 2 ++ source/_components/rpi_camera.markdown | 2 ++ source/_components/rpi_gpio_pwm.markdown | 2 ++ source/_components/rpi_rf.markdown | 2 ++ source/_components/rtorrent.markdown | 2 ++ source/_components/russound_rio.markdown | 2 ++ source/_components/russound_rnet.markdown | 2 ++ source/_components/ruter.markdown | 2 ++ source/_components/samsungtv.markdown | 2 ++ source/_components/scrape.markdown | 2 ++ source/_components/season.markdown | 2 ++ source/_components/sendgrid.markdown | 2 ++ source/_components/sensehat.markdown | 2 ++ source/_components/sensibo.markdown | 2 ++ source/_components/serial.markdown | 2 ++ source/_components/serial_pm.markdown | 2 ++ source/_components/sesame.markdown | 2 ++ source/_components/seven_segments.markdown | 2 ++ source/_components/seventeentrack.markdown | 2 ++ source/_components/shodan.markdown | 2 ++ source/_components/sht31.markdown | 2 ++ source/_components/sigfox.markdown | 2 ++ source/_components/simplepush.markdown | 2 ++ source/_components/simulated.markdown | 2 ++ source/_components/sky_hub.markdown | 2 ++ source/_components/skybeacon.markdown | 2 ++ source/_components/slack.markdown | 2 ++ source/_components/sma.markdown | 2 ++ source/_components/smtp.markdown | 2 ++ source/_components/snapcast.markdown | 2 ++ source/_components/snmp.markdown | 2 ++ source/_components/sochain.markdown | 2 ++ source/_components/socialblade.markdown | 2 ++ source/_components/solaredge.markdown | 2 ++ source/_components/sonarr.markdown | 2 ++ source/_components/songpal.markdown | 2 ++ source/_components/sony_projector.markdown | 2 ++ source/_components/soundtouch.markdown | 2 ++ source/_components/spotcrime.markdown | 2 ++ source/_components/spotify.markdown | 2 ++ source/_components/sql.markdown | 2 ++ source/_components/squeezebox.markdown | 2 ++ source/_components/srp_energy.markdown | 2 ++ source/_components/starlingbank.markdown | 2 ++ source/_components/startca.markdown | 2 ++ source/_components/statistics.markdown | 2 ++ source/_components/steam_online.markdown | 2 ++ source/_components/stride.markdown | 2 ++ source/_components/supervisord.markdown | 2 ++ source/_components/swiss_hydrological_data.markdown | 2 ++ source/_components/swiss_public_transport.markdown | 2 ++ source/_components/swisscom.markdown | 2 ++ source/_components/switchbot.markdown | 2 ++ source/_components/switchmate.markdown | 2 ++ source/_components/syncthru.markdown | 2 ++ source/_components/synology.markdown | 2 ++ source/_components/synology_chat.markdown | 2 ++ source/_components/synology_srm.markdown | 2 ++ source/_components/synologydsm.markdown | 2 ++ source/_components/syslog.markdown | 2 ++ source/_components/systemmonitor.markdown | 2 ++ source/_components/sytadin.markdown | 2 ++ source/_components/tank_utility.markdown | 2 ++ source/_components/tapsaff.markdown | 2 ++ source/_components/tautulli.markdown | 2 ++ source/_components/tcp.markdown | 2 ++ source/_components/ted5000.markdown | 2 ++ source/_components/teksavvy.markdown | 2 ++ source/_components/telegram.markdown | 2 ++ source/_components/telnet.markdown | 2 ++ source/_components/temper.markdown | 2 ++ source/_components/template.markdown | 2 ++ source/_components/tensorflow.markdown | 2 ++ source/_components/tfiac.markdown | 2 ++ source/_components/thermoworks_smoke.markdown | 2 ++ source/_components/thinkingcleaner.markdown | 2 ++ source/_components/thomson.markdown | 2 ++ source/_components/threshold.markdown | 2 ++ source/_components/tikteck.markdown | 2 ++ source/_components/tile.markdown | 2 ++ source/_components/time_date.markdown | 2 ++ source/_components/tod.markdown | 2 ++ source/_components/todoist.markdown | 2 ++ source/_components/tomato.markdown | 2 ++ source/_components/torque.markdown | 2 ++ source/_components/totalconnect.markdown | 2 ++ source/_components/touchline.markdown | 2 ++ source/_components/traccar.markdown | 2 ++ source/_components/trackr.markdown | 2 ++ source/_components/trafikverket_weatherstation.markdown | 2 ++ source/_components/transport_nsw.markdown | 2 ++ source/_components/travisci.markdown | 2 ++ source/_components/trend.markdown | 2 ++ source/_components/twilio_call.markdown | 2 ++ source/_components/twilio_sms.markdown | 2 ++ source/_components/twitch.markdown | 2 ++ source/_components/twitter.markdown | 2 ++ source/_components/ubee.markdown | 2 ++ source/_components/uber.markdown | 2 ++ source/_components/ubus.markdown | 2 ++ source/_components/ue_smart_radio.markdown | 2 ++ source/_components/uk_transport.markdown | 2 ++ source/_components/unifi_direct.markdown | 2 ++ source/_components/universal.markdown | 2 ++ source/_components/upc_connect.markdown | 2 ++ source/_components/ups.markdown | 2 ++ source/_components/uptime.markdown | 2 ++ source/_components/uptimerobot.markdown | 2 ++ source/_components/uscis.markdown | 2 ++ source/_components/usgs_earthquakes_feed.markdown | 2 ++ source/_components/uvc.markdown | 2 ++ source/_components/vasttrafik.markdown | 2 ++ source/_components/venstar.markdown | 2 ++ source/_components/version.markdown | 2 ++ source/_components/vesync.markdown | 2 ++ source/_components/viaggiatreno.markdown | 2 ++ source/_components/vizio.markdown | 2 ++ source/_components/vlc.markdown | 2 ++ source/_components/voicerss.markdown | 2 ++ source/_components/volkszaehler.markdown | 2 ++ source/_components/volumio.markdown | 2 ++ source/_components/waqi.markdown | 4 ++++ source/_components/waze_travel_time.markdown | 2 ++ source/_components/webhooks.markdown | 2 ++ source/_components/webostv.markdown | 2 ++ source/_components/whois.markdown | 2 ++ source/_components/workday.markdown | 2 ++ source/_components/worldclock.markdown | 2 ++ source/_components/worldtidesinfo.markdown | 2 ++ source/_components/worxlandroid.markdown | 2 ++ source/_components/wsdot.markdown | 2 ++ source/_components/wunderground.markdown | 2 ++ source/_components/x10.markdown | 2 ++ source/_components/xbox_live.markdown | 2 ++ source/_components/xeoma.markdown | 2 ++ source/_components/xfinity.markdown | 2 ++ source/_components/xiaomi.markdown | 2 ++ source/_components/xiaomi_miio.markdown | 2 ++ source/_components/xiaomi_tv.markdown | 2 ++ source/_components/xmpp.markdown | 2 ++ source/_components/yale_smart_alarm.markdown | 2 ++ source/_components/yamaha.markdown | 2 ++ source/_components/yamaha_musiccast.markdown | 2 ++ source/_components/yandextts.markdown | 2 ++ source/_components/yeelightsunflower.markdown | 2 ++ source/_components/yessssms.markdown | 2 ++ source/_components/yi.markdown | 2 ++ source/_components/yr.markdown | 2 ++ source/_components/yweather.markdown | 2 ++ source/_components/zamg.markdown | 2 ++ source/_components/zengge.markdown | 2 ++ source/_components/zestimate.markdown | 2 ++ source/_components/zhong_hong.markdown | 2 ++ source/_components/ziggo_mediabox_xl.markdown | 2 ++ 497 files changed, 1010 insertions(+) diff --git a/source/_components/acer_projector.markdown b/source/_components/acer_projector.markdown index a5914b46a18..5c24f607eb9 100644 --- a/source/_components/acer_projector.markdown +++ b/source/_components/acer_projector.markdown @@ -11,6 +11,8 @@ logo: acer.png ha_category: Multimedia ha_iot_class: Local Polling ha_release: 0.19 +redirect_from: + - /components/switch.acer_projector/ --- The `acer_projector` switch platform allows you to control the state of RS232 connected projectors from [Acer](http://www.acer.com). diff --git a/source/_components/actiontec.markdown b/source/_components/actiontec.markdown index fc7eddad7b9..d97a403a17d 100644 --- a/source/_components/actiontec.markdown +++ b/source/_components/actiontec.markdown @@ -10,6 +10,8 @@ footer: true logo: actiontec.png ha_category: Presence Detection ha_release: 0.7 +redirect_from: + - /components/device_tracker.actiontec/ --- diff --git a/source/_components/aftership.markdown b/source/_components/aftership.markdown index 54d95c76fe5..6a636bfd764 100644 --- a/source/_components/aftership.markdown +++ b/source/_components/aftership.markdown @@ -11,6 +11,8 @@ logo: aftership.png ha_category: Postal Service ha_release: 0.85 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.aftership/ --- The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. It is free to use up to 100 tracked packages per month, after that there is a fee. diff --git a/source/_components/airvisual.markdown b/source/_components/airvisual.markdown index b9b5f3ea33c..9b66d39cb23 100644 --- a/source/_components/airvisual.markdown +++ b/source/_components/airvisual.markdown @@ -11,6 +11,8 @@ logo: airvisual.jpg ha_category: Health ha_release: 0.53 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.airvisual/ --- The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) API for air quality data. Data can be collected via latitude/longitude or by city/state/country. The resulting information creates sensors for the Air Quality Index (AQI), the human-friendly air quality level, and the main pollutant of that area. Sensors that conform to either/both the [U.S. and Chinese air quality standards](http://www.clm.com/publication.cfm?ID=366) can be created. @@ -138,6 +140,8 @@ When configured, the platform will create three sensors for each configured air - **Explanation:** AQI | Status | Description +redirect_from: + - /components/sensor.airvisual/ ------- | :----------------: | ---------- 0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk 51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution @@ -160,6 +164,8 @@ AQI | Status | Description - **Explanation:** Pollutant | Symbol | More Info +redirect_from: + - /components/sensor.airvisual/ ------- | :----------------: | ---------- Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) diff --git a/source/_components/aladdin_connect.markdown b/source/_components/aladdin_connect.markdown index 765e9b0f698..64e9dac165a 100644 --- a/source/_components/aladdin_connect.markdown +++ b/source/_components/aladdin_connect.markdown @@ -11,6 +11,8 @@ logo: aladdin_connect.png ha_category: Cover ha_release: 0.75 ha_iot_class: Cloud Polling +redirect_from: + - /components/cover.aladdin_connect/ --- The `aladdin_connect` cover platform lets you control Genie Aladdin Connect garage doors through Home Assistant. diff --git a/source/_components/alarmdotcom.markdown b/source/_components/alarmdotcom.markdown index c403a727dd8..01a85e9f327 100644 --- a/source/_components/alarmdotcom.markdown +++ b/source/_components/alarmdotcom.markdown @@ -10,6 +10,8 @@ footer: true logo: alarmdotcom.png ha_category: Alarm ha_release: 0.11 +redirect_from: + - /components/alarm_control_panel.alarmdotcom/ --- The `alarmdotcom` platform is consuming the information provided by [Alarm.com](https://www.alarm.com/). diff --git a/source/_components/alpha_vantage.markdown b/source/_components/alpha_vantage.markdown index 72fbf0746ec..87be6a77649 100644 --- a/source/_components/alpha_vantage.markdown +++ b/source/_components/alpha_vantage.markdown @@ -11,6 +11,8 @@ logo: alpha_vantage.png ha_category: Finance ha_iot_class: Cloud Polling ha_release: "0.60" +redirect_from: + - /components/sensor.alpha_vantage/ --- The `alpha_vantage` sensor platform uses [Alpha Vantage](https://www.alphavantage.co) to monitor the stock market. This platform also provides detail about exchange rates. diff --git a/source/_components/amazon_polly.markdown b/source/_components/amazon_polly.markdown index 0ac187e7f4b..015f971da98 100644 --- a/source/_components/amazon_polly.markdown +++ b/source/_components/amazon_polly.markdown @@ -10,6 +10,8 @@ footer: true logo: polly.png ha_category: Text-to-speech ha_release: 0.37 +redirect_from: + - /components/tts.amazon_polly/ --- The `amazon_polly` text-to-speech platform that works with [Amazon Polly](https://aws.amazon.com/polly/) to create the spoken output. diff --git a/source/_components/anel_pwrctrl.markdown b/source/_components/anel_pwrctrl.markdown index 395ee4bf8e8..d8c46a539df 100644 --- a/source/_components/anel_pwrctrl.markdown +++ b/source/_components/anel_pwrctrl.markdown @@ -11,6 +11,8 @@ logo: anel.png ha_category: Switch ha_iot_class: Local Polling ha_release: "0.30" +redirect_from: + - /components/switch.anel_pwrctrl/ --- The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](http://anel-elektronik.de/SITE/produkte/produkte.htm) devices. diff --git a/source/_components/anthemav.markdown b/source/_components/anthemav.markdown index 31242bdd56d..8ae32865ad5 100644 --- a/source/_components/anthemav.markdown +++ b/source/_components/anthemav.markdown @@ -11,6 +11,8 @@ logo: anthemav.png ha_category: Media Player ha_iot_class: Local Push ha_release: 0.37 +redirect_from: + - /components/media_player.anthemav/ --- Both [Anthem]'s current and last generation of A/V Receivers and Processors support IP-based, network control. This Home Assistant platform adds proper "local push" support for any of these receivers on your network. diff --git a/source/_components/apns.markdown b/source/_components/apns.markdown index 74a2f1b231a..ffd16348efa 100644 --- a/source/_components/apns.markdown +++ b/source/_components/apns.markdown @@ -10,6 +10,8 @@ footer: true logo: apple.png ha_category: Notifications ha_release: 0.31 +redirect_from: + - /components/notify.apns/ --- The `apns` platform uses the Apple Push Notification service (APNS) to deliver notifications from Home Assistant. diff --git a/source/_components/aquostv.markdown b/source/_components/aquostv.markdown index 104c540c9cf..f1f19428c73 100644 --- a/source/_components/aquostv.markdown +++ b/source/_components/aquostv.markdown @@ -11,6 +11,8 @@ logo: sharp_aquos.png ha_category: Media Player ha_release: 0.35 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.aquostv/ --- The `aquostv` platform allows you to control a [Sharp Aquos TV](http://www.sharp.ca/en-CA/ForHome/HomeEntertainment/LEDTV/QuattronPlus.aspx). diff --git a/source/_components/arest.markdown b/source/_components/arest.markdown index e5c00a212ec..fd39f8d0a8a 100644 --- a/source/_components/arest.markdown +++ b/source/_components/arest.markdown @@ -11,6 +11,8 @@ logo: arest.png ha_category: DIY ha_iot_class: Local Polling ha_release: 0.9 +redirect_from: + - /components/binary_sensor.arest/ --- The `arest` binary sensor platform allows you to get all data from your devices (like Arduinos with an ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. diff --git a/source/_components/aruba.markdown b/source/_components/aruba.markdown index 5ccea64ab67..d23e4bc1f69 100644 --- a/source/_components/aruba.markdown +++ b/source/_components/aruba.markdown @@ -10,6 +10,8 @@ footer: true logo: aruba.png ha_category: Presence Detection ha_release: 0.7 +redirect_from: + - /components/device_tracker.aruba/ --- diff --git a/source/_components/arwn.markdown b/source/_components/arwn.markdown index 30a8a3264ea..945e5fd2a3c 100644 --- a/source/_components/arwn.markdown +++ b/source/_components/arwn.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Sensor ha_release: 0.31 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.arwn/ --- The `arwn` sensor platform is a client for the [Ambient Radio Weather Network](http://github.com/sdague/arwn) project. This collects weather station data and makes it available in an MQTT subtree. diff --git a/source/_components/asterisk_cdr.markdown b/source/_components/asterisk_cdr.markdown index 61597bdfeff..c9896fba083 100644 --- a/source/_components/asterisk_cdr.markdown +++ b/source/_components/asterisk_cdr.markdown @@ -10,6 +10,8 @@ footer: true logo: asterisk.png ha_category: Mailbox ha_release: 0.79 +redirect_from: + - /components/mailbox.asterisk_cdr/ --- The Asterisk Call Data Recorder provides access to Asterisk call logs on the Asterisk PBX server. This mailbox is enabled automatically through the [Asterisk Voicemail component](/components/asterisk_mbox/) configuration if the `asterisk_mbox_server` is configured to provide CDR data. More information on configuring the server can be found in the [Asterisk PBX configuration guide](/docs/asterisk_mbox/). diff --git a/source/_components/aurora.markdown b/source/_components/aurora.markdown index f0429886ac2..b501dad4175 100644 --- a/source/_components/aurora.markdown +++ b/source/_components/aurora.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Environment ha_release: 0.39 logo: noaa.png +redirect_from: + - /components/binary_sensor.aurora/ --- The `aurora` platform uses the [NOAA aurora forecast](http://www.swpc.noaa.gov/products/aurora-30-minute-forecast) service to let you know if an aurora might be visible at your home location in the next 30 minutes, based off of current solar flare activity. diff --git a/source/_components/automatic.markdown b/source/_components/automatic.markdown index 129f158cb88..f5971dfabff 100644 --- a/source/_components/automatic.markdown +++ b/source/_components/automatic.markdown @@ -11,6 +11,8 @@ logo: automatic.png ha_category: Car ha_release: 0.28 ha_iot_class: Cloud Push +redirect_from: + - /components/device_tracker.automatic/ --- diff --git a/source/_components/avion.markdown b/source/_components/avion.markdown index 113cce0cdbf..231143f122e 100644 --- a/source/_components/avion.markdown +++ b/source/_components/avion.markdown @@ -11,6 +11,8 @@ ha_category: Light ha_iot_class: Assumed State logo: avi-on.png ha_release: 0.37 +redirect_from: + - /components/light.avion/ --- Support for the Avi-on Bluetooth dimmer switch [Avi-On](http://avi-on.com/). diff --git a/source/_components/awair.markdown b/source/_components/awair.markdown index f3b92634aea..b501d25a1c3 100644 --- a/source/_components/awair.markdown +++ b/source/_components/awair.markdown @@ -11,6 +11,8 @@ logo: awair.jpg ha_category: Health ha_release: 0.84 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.awair/ --- The `awair` sensor platform will fetch data from your [Awair device(s)](https://getawair.com). diff --git a/source/_components/aws_lambda.markdown b/source/_components/aws_lambda.markdown index 43baab3f033..7e0dbd05300 100644 --- a/source/_components/aws_lambda.markdown +++ b/source/_components/aws_lambda.markdown @@ -10,6 +10,8 @@ footer: true logo: aws_lambda.png ha_category: Notifications ha_release: "0.20" +redirect_from: + - /components/notify.aws_lambda/ --- The `aws_lambda` notification platform enables invoking [AWS Lambda](https://aws.amazon.com/lambda/) functions. diff --git a/source/_components/aws_sns.markdown b/source/_components/aws_sns.markdown index d53d9dd5147..d84e791b2f9 100644 --- a/source/_components/aws_sns.markdown +++ b/source/_components/aws_sns.markdown @@ -10,6 +10,8 @@ footer: true logo: aws_sns.png ha_category: Notifications ha_release: "0.20" +redirect_from: + - /components/notify.aws_sns/ --- The `aws_sns` notification platform enables publishing to an [AWS SNS](https://aws.amazon.com/sns/) topic or application. diff --git a/source/_components/aws_sqs.markdown b/source/_components/aws_sqs.markdown index f2b3a340f5c..824c1c26cab 100644 --- a/source/_components/aws_sqs.markdown +++ b/source/_components/aws_sqs.markdown @@ -10,6 +10,8 @@ footer: true logo: aws_sqs.png ha_category: Notifications ha_release: "0.20" +redirect_from: + - /components/notify.aws_sqs/ --- The `aws_sqs` notification platform enables publishing to an [AWS SQS](https://aws.amazon.com/sqs/) message queue. diff --git a/source/_components/baidu.markdown b/source/_components/baidu.markdown index ad9d97456e5..93db86cc285 100644 --- a/source/_components/baidu.markdown +++ b/source/_components/baidu.markdown @@ -10,6 +10,8 @@ footer: true logo: baiducloud.png ha_category: Text-to-speech ha_release: 0.59 +redirect_from: + - /components/tts.baidu/ --- The `baidu` text-to-speech platform uses [Baidu TTS engine](https://cloud.baidu.com/product/speech/tts) to read a text with natural sounding voices. diff --git a/source/_components/bayesian.markdown b/source/_components/bayesian.markdown index e10e50e69b4..700287f582b 100644 --- a/source/_components/bayesian.markdown +++ b/source/_components/bayesian.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.53 ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.bayesian/ --- The `bayesian` binary sensor platform observes the state from multiple sensors and uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on` otherwise it is `off`. diff --git a/source/_components/bbox.markdown b/source/_components/bbox.markdown index fee382f6457..6e24792e748 100644 --- a/source/_components/bbox.markdown +++ b/source/_components/bbox.markdown @@ -11,6 +11,8 @@ logo: bbox.png ha_category: Network ha_release: 0.31 ha_iot_class: Local Push +redirect_from: + - /components/sensor.bbox/ --- The `bbox` platform uses the [Bbox Modem Router](https://fr.wikipedia.org/wiki/Bbox/) from the French Internet provider Bouygues Telecom. Sensors are mainly bandwidth measures. diff --git a/source/_components/bh1750.markdown b/source/_components/bh1750.markdown index 305e253e76c..90486f74cb3 100644 --- a/source/_components/bh1750.markdown +++ b/source/_components/bh1750.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.48 ha_iot_class: Local Push +redirect_from: + - /components/sensor.bh1750/ --- The `bh1750` sensor platform allows you to read the ambient light level in Lux from a [BH1750FVI sensor](http://cpre.kmutnb.ac.th/esl/learning/bh1750-light-sensor/bh1750fvi-e_datasheet.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet. diff --git a/source/_components/bitcoin.markdown b/source/_components/bitcoin.markdown index 34f2400ce42..634540f8cd9 100644 --- a/source/_components/bitcoin.markdown +++ b/source/_components/bitcoin.markdown @@ -11,6 +11,8 @@ logo: bitcoin.png ha_category: Finance ha_release: pre 0.7 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.bitcoin/ --- diff --git a/source/_components/blackbird.markdown b/source/_components/blackbird.markdown index b52a86ee407..2e01dec6cc3 100644 --- a/source/_components/blackbird.markdown +++ b/source/_components/blackbird.markdown @@ -11,6 +11,8 @@ logo: monoprice.svg ha_category: Media Player ha_release: 0.68 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.blackbird/ --- The `blackbird` platform allows you to control [Monoprice Blackbird Matrix Switch](https://www.monoprice.com/product?p_id=21819) using a serial connection. diff --git a/source/_components/blinksticklight.markdown b/source/_components/blinksticklight.markdown index d9bbc6dcc52..36e57210ecc 100644 --- a/source/_components/blinksticklight.markdown +++ b/source/_components/blinksticklight.markdown @@ -11,6 +11,8 @@ logo: blinkstick.png ha_category: DIY ha_release: 0.7.5 ha_iot_class: Local Polling +redirect_from: + - /components/light.blinksticklight/ --- diff --git a/source/_components/blinkt.markdown b/source/_components/blinkt.markdown index 2e9fe6c2170..33eb2d842a8 100644 --- a/source/_components/blinkt.markdown +++ b/source/_components/blinkt.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_iot_class: Local Push ha_release: 0.44 +redirect_from: + - /components/light.blinkt/ --- The `blinkt` light platform lets you control the [Blinkt!](https://shop.pimoroni.com/products/blinkt) board, featuring eight super-bright RGB LEDs. diff --git a/source/_components/blockchain.markdown b/source/_components/blockchain.markdown index 421aa88e939..5f749b427f8 100644 --- a/source/_components/blockchain.markdown +++ b/source/_components/blockchain.markdown @@ -11,6 +11,8 @@ logo: blockchain.png ha_category: Finance ha_release: 0.47 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.blockchain/ --- diff --git a/source/_components/bluesound.markdown b/source/_components/bluesound.markdown index 7e28406813b..85cf62cd9e7 100644 --- a/source/_components/bluesound.markdown +++ b/source/_components/bluesound.markdown @@ -11,6 +11,8 @@ logo: bluesound.png ha_category: Media Player ha_release: 0.51 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.bluesound/ --- The `bluesound` platform allows you to control your [Bluesound](http://www.bluesound.com/) HiFi wireless speakers and audio components from Home Assistant. diff --git a/source/_components/bluetooth_le_tracker.markdown b/source/_components/bluetooth_le_tracker.markdown index ca14cce35d5..d5c27e1e6f8 100644 --- a/source/_components/bluetooth_le_tracker.markdown +++ b/source/_components/bluetooth_le_tracker.markdown @@ -11,6 +11,8 @@ logo: bluetooth.png ha_category: Presence Detection ha_iot_class: Local Polling ha_release: 0.27 +redirect_from: + - /components/device_tracker.bluetooth_le_tracker/ --- This tracker discovers new devices on boot and in regular intervals and tracks Bluetooth low-energy devices periodically based on interval_seconds value. It is not required to pair the devices with each other. diff --git a/source/_components/bluetooth_tracker.markdown b/source/_components/bluetooth_tracker.markdown index 3da5cc19802..97596b9c23b 100644 --- a/source/_components/bluetooth_tracker.markdown +++ b/source/_components/bluetooth_tracker.markdown @@ -11,6 +11,8 @@ logo: bluetooth.png ha_category: Presence Detection ha_iot_class: Local Polling ha_release: 0.18 +redirect_from: + - /components/device_tracker.bluetooth_tracker/ --- This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`. diff --git a/source/_components/bme280.markdown b/source/_components/bme280.markdown index ea1de3c6cc1..4f2949eca6c 100644 --- a/source/_components/bme280.markdown +++ b/source/_components/bme280.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.48 ha_iot_class: Local Push +redirect_from: + - /components/sensor.bme280/ --- The `bme280` sensor platform allows you to read temperature, humidity and pressure values of a [Bosch BME280 Environmental sensor](https://cdn-shop.adafruit.com/datasheets/BST-BME280_DS001-10.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. diff --git a/source/_components/bme680.markdown b/source/_components/bme680.markdown index 083311f9990..fb06b1ae37d 100644 --- a/source/_components/bme680.markdown +++ b/source/_components/bme680.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.62 ha_iot_class: Local Push +redirect_from: + - /components/sensor.bme680/ --- The `bme680` sensor platform allows you to read temperature, humidity, pressure and gas resistance values of a [Bosch BME680 Environmental sensor](https://cdn-shop.adafruit.com/product-files/3660/BME680.pdf) connected via an [I2C](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the operation modes of the sensor described in its datasheet. In addition, it includes a basic air quality calculation that uses gas resistance and humidity measurements to calculate a percentage based air quality measurement. diff --git a/source/_components/bom.markdown b/source/_components/bom.markdown index 5e237d81f53..d3e285b0f74 100644 --- a/source/_components/bom.markdown +++ b/source/_components/bom.markdown @@ -11,6 +11,8 @@ logo: bom.png ha_category: Weather ha_release: 0.36 ha_iot_class: Cloud Polling +redirect_from: + - /components/weather.bom/ --- The `bom` weather platform uses the [Australian Bureau of Meteorology (BOM)](http://www.bom.gov.au) as a source for current (half-hourly) meteorological data. diff --git a/source/_components/braviatv.markdown b/source/_components/braviatv.markdown index 38f5ea77dfa..c2d09b6b11a 100644 --- a/source/_components/braviatv.markdown +++ b/source/_components/braviatv.markdown @@ -11,6 +11,8 @@ logo: bravia.png ha_category: Media Player ha_release: 0.23 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.braviatv/ --- The `braviatv` platform allows you to control a [Sony Bravia TV](http://www.sony.com). diff --git a/source/_components/broadcast.markdown b/source/_components/broadcast.markdown index 4b820fac4a4..633556693ba 100644 --- a/source/_components/broadcast.markdown +++ b/source/_components/broadcast.markdown @@ -10,6 +10,8 @@ footer: true logo: telegram.png ha_category: Notifications ha_release: 0.48 +redirect_from: + - /components/telegram_bot.broadcast/ --- Telegram implementation to support **sending messages only**. Your Home Assistant instance does not have to be exposed to the Internet and there is no polling to receive messages sent to the bot. diff --git a/source/_components/broadlink.markdown b/source/_components/broadlink.markdown index 7e0c4d82a42..7171fb61f2b 100644 --- a/source/_components/broadlink.markdown +++ b/source/_components/broadlink.markdown @@ -11,6 +11,8 @@ logo: broadlink.png ha_category: Switch ha_release: 0.35 ha_iot_class: Local Polling +redirect_from: + - /components/switch.broadlink/ --- This `Broadlink` switch platform allow to you control Broadlink [devices](http://www.ibroadlink.com/). diff --git a/source/_components/brottsplatskartan.markdown b/source/_components/brottsplatskartan.markdown index 14cd7290490..7333aabc47a 100644 --- a/source/_components/brottsplatskartan.markdown +++ b/source/_components/brottsplatskartan.markdown @@ -11,6 +11,8 @@ ha_category: Social logo: brottsplatskartan.png ha_release: 0.85 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.brottsplatskartan/ --- The `brottsplatskartan` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Brottsplatskartan](https://brottsplatskartan.se). The sensor only counts incidents from the current day. diff --git a/source/_components/brunt.markdown b/source/_components/brunt.markdown index b3c53c0b1f9..e8fd9d8f421 100644 --- a/source/_components/brunt.markdown +++ b/source/_components/brunt.markdown @@ -11,6 +11,8 @@ logo: brunt.png ha_category: Cover ha_release: 0.75 ha_iot_class: Cloud Polling +redirect_from: + - /components/cover.brunt/ --- The `brunt` platform allows one to control Blind Engines by [Brunt](https://www.brunt.co). To use this sensor, you need a Brunt App Account. All Brunt Blind devices registered to your account are automatically added to your Home Assistant with the names given them through the Brunt app. diff --git a/source/_components/bt_home_hub_5.markdown b/source/_components/bt_home_hub_5.markdown index 86707d106e8..c2482d7decd 100644 --- a/source/_components/bt_home_hub_5.markdown +++ b/source/_components/bt_home_hub_5.markdown @@ -10,6 +10,8 @@ footer: true logo: bt.png ha_category: Presence Detection ha_release: 0.22 +redirect_from: + - /components/device_tracker.bt_home_hub_5/ --- This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. diff --git a/source/_components/bt_smarthub.markdown b/source/_components/bt_smarthub.markdown index c1961395428..8b58068c49b 100644 --- a/source/_components/bt_smarthub.markdown +++ b/source/_components/bt_smarthub.markdown @@ -11,6 +11,8 @@ logo: bt.png ha_category: Presence Detection ha_release: 0.82 ha_iot_class: Local Polling +redirect_from: + - /components/device_tracker.bt_smarthub/ --- This platform offers presence detection by looking at connected devices to a [BT Smart Hub](https://en.wikipedia.org/wiki/BT_Smart_Hub) based router. diff --git a/source/_components/buienradar.markdown b/source/_components/buienradar.markdown index bd767e30a36..396ca454e29 100644 --- a/source/_components/buienradar.markdown +++ b/source/_components/buienradar.markdown @@ -11,6 +11,8 @@ logo: buienradar.png ha_category: Weather ha_release: 0.47 ha_iot_class: Cloud Polling +redirect_from: + - /components/weather.buienradar/ --- The `buienradar` platform uses [buienradar.nl](http://buienradar.nl/) as a source for current meteorological data for your location. The weather forecast is delivered by Buienradar, who provides a web service that provides detailed weather information for users in The Netherlands. diff --git a/source/_components/caldav.markdown b/source/_components/caldav.markdown index e9d98b92580..cda8f15c19a 100644 --- a/source/_components/caldav.markdown +++ b/source/_components/caldav.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Calendar ha_iot_class: Cloud Polling ha_release: "0.60" +redirect_from: + - /components/calendar.caldav/ --- The `caldav` platform allows you to connect to your WebDav calendar and generate diff --git a/source/_components/cert_expiry.markdown b/source/_components/cert_expiry.markdown index 8519b3bcb72..bb61a611841 100644 --- a/source/_components/cert_expiry.markdown +++ b/source/_components/cert_expiry.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Network ha_release: 0.44 ha_iot_class: Configurable +redirect_from: + - /components/sensor.cert_expiry/ --- The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. diff --git a/source/_components/channels.markdown b/source/_components/channels.markdown index 4bb6150822e..1840bf0f11b 100644 --- a/source/_components/channels.markdown +++ b/source/_components/channels.markdown @@ -11,6 +11,8 @@ logo: channels.png ha_category: Media Player ha_release: 0.65 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.channels/ --- diff --git a/source/_components/cisco_ios.markdown b/source/_components/cisco_ios.markdown index ef48b6abac6..9514aa7417c 100644 --- a/source/_components/cisco_ios.markdown +++ b/source/_components/cisco_ios.markdown @@ -10,6 +10,8 @@ footer: true logo: cisco.png ha_category: Presence Detection ha_release: 0.33 +redirect_from: + - /components/device_tracker.cisco_ios/ --- This is a presence detection scanner for [Cisco](http://www.cisco.com) IOS devices. diff --git a/source/_components/ciscospark.markdown b/source/_components/ciscospark.markdown index d9bcbc5e42a..52d429b7633 100644 --- a/source/_components/ciscospark.markdown +++ b/source/_components/ciscospark.markdown @@ -10,6 +10,8 @@ footer: true logo: ciscospark.png ha_category: Notifications ha_release: "0.40" +redirect_from: + - /components/notify.ciscospark/ --- The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). diff --git a/source/_components/citybikes.markdown b/source/_components/citybikes.markdown index 265b448755c..316d61b9fd8 100644 --- a/source/_components/citybikes.markdown +++ b/source/_components/citybikes.markdown @@ -10,6 +10,8 @@ footer: true logo: citybikes.png ha_category: Transport ha_release: 0.49 +redirect_from: + - /components/sensor.citybikes/ --- diff --git a/source/_components/clementine.markdown b/source/_components/clementine.markdown index f37e4233d36..612929aa0f3 100644 --- a/source/_components/clementine.markdown +++ b/source/_components/clementine.markdown @@ -11,6 +11,8 @@ logo: clementine.png ha_category: Media Player ha_release: 0.39 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.clementine/ --- The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org). diff --git a/source/_components/clickatell.markdown b/source/_components/clickatell.markdown index e7ed3b902db..559319a4f5e 100644 --- a/source/_components/clickatell.markdown +++ b/source/_components/clickatell.markdown @@ -10,6 +10,8 @@ footer: true logo: clickatell.png ha_category: Notifications ha_release: 0.56 +redirect_from: + - /components/notify.clickatell/ --- The `clickatell` platform uses [Clickatell](https://clickatell.com) to deliver SMS notifications from Home Assistant. diff --git a/source/_components/clicksend.markdown b/source/_components/clicksend.markdown index ee70de003d1..edcc4a361eb 100644 --- a/source/_components/clicksend.markdown +++ b/source/_components/clicksend.markdown @@ -10,6 +10,8 @@ footer: true logo: clicksend.png ha_category: Notifications ha_release: 0.48 +redirect_from: + - /components/notify.clicksend/ --- diff --git a/source/_components/clicksend_tts.markdown b/source/_components/clicksend_tts.markdown index 1bde49e1fc9..70b2738cbd3 100644 --- a/source/_components/clicksend_tts.markdown +++ b/source/_components/clicksend_tts.markdown @@ -13,6 +13,8 @@ ha_category: ha_release: 0.55 redirect_from: - /components/notify.clicksendaudio/ +redirect_from: + - /components/notify.clicksend_tts/ --- The `clicksend_tts` platform uses [ClickSend](https://clicksend.com) to deliver text-to-speech (TTS) notifications from Home Assistant. diff --git a/source/_components/cmus.markdown b/source/_components/cmus.markdown index c512687a796..96edada65c8 100644 --- a/source/_components/cmus.markdown +++ b/source/_components/cmus.markdown @@ -11,6 +11,8 @@ footer: true ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.23 +redirect_from: + - /components/media_player.cmus/ --- diff --git a/source/_components/co2signal.markdown b/source/_components/co2signal.markdown index 2e74d5d083d..26b855070c7 100644 --- a/source/_components/co2signal.markdown +++ b/source/_components/co2signal.markdown @@ -11,6 +11,8 @@ logo: co2signal.png ha_category: Environment ha_release: 0.87 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.co2signal/ --- The `co2signal` sensor platform queries the [CO2Signal](https://www.co2signal.com/) API for the CO2 intensity of a specific region. Data can be collected via latitude/longitude or by country code. This API uses the same data as https://www.electricitymap.org/. Not all countries/regions in the world are supported so please consult this website to check local availability. diff --git a/source/_components/coinmarketcap.markdown b/source/_components/coinmarketcap.markdown index 131e9b5686e..31b35511540 100644 --- a/source/_components/coinmarketcap.markdown +++ b/source/_components/coinmarketcap.markdown @@ -11,6 +11,8 @@ logo: coinmarketcap.png ha_category: Finance ha_release: 0.28 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.coinmarketcap/ --- diff --git a/source/_components/comed_hourly_pricing.markdown b/source/_components/comed_hourly_pricing.markdown index 34fb7dbf43d..dac7229a7b0 100644 --- a/source/_components/comed_hourly_pricing.markdown +++ b/source/_components/comed_hourly_pricing.markdown @@ -11,6 +11,8 @@ logo: comed.png ha_category: Energy ha_release: "0.40" ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.comed_hourly_pricing/ --- The ComEd Hourly Pricing program is an optional program available to ComEd electric subscribers which charges customers a variable rate for electricity supply based on current demand rather than a traditional fixed rate. Live prices are published [here](https://hourlypricing.comed.com/live-prices/) and also via an [API](https://hourlypricing.comed.com/hp-api/) which we can integrate as a sensor in Home Assistant. diff --git a/source/_components/command_line.markdown b/source/_components/command_line.markdown index d6115cf79aa..7dee888b9a6 100644 --- a/source/_components/command_line.markdown +++ b/source/_components/command_line.markdown @@ -11,6 +11,8 @@ logo: command_line.png ha_category: Utility ha_release: 0.12 ha_iot_class: Local Polling +redirect_from: + - /components/binary_sensor.command_line/ --- The `command_line` binary sensor platform issues specific commands to get data. diff --git a/source/_components/concord232.markdown b/source/_components/concord232.markdown index 79d12a803aa..b5337bdacb9 100644 --- a/source/_components/concord232.markdown +++ b/source/_components/concord232.markdown @@ -10,6 +10,8 @@ footer: true logo: interlogix.png ha_category: Binary Sensor ha_release: 0.31 +redirect_from: + - /components/binary_sensor.concord232/ --- The `concord232` platform provides integration with GE, Interlogix (and other brands) alarm panels that support the RS-232 Automation Control Panel interface module (or have it built in). Supported panels include Concord 4. diff --git a/source/_components/coolmaster.markdown b/source/_components/coolmaster.markdown index db9fa502df6..77d58d15a93 100644 --- a/source/_components/coolmaster.markdown +++ b/source/_components/coolmaster.markdown @@ -11,6 +11,8 @@ logo: coolautomation.png ha_category: Climate ha_release: 0.88 ha_iot_class: Local Polling +redirect_from: + - /components/climate.coolmaster/ --- diff --git a/source/_components/cpuspeed.markdown b/source/_components/cpuspeed.markdown index fbff6484559..5fd749415e2 100644 --- a/source/_components/cpuspeed.markdown +++ b/source/_components/cpuspeed.markdown @@ -11,6 +11,8 @@ logo: cpu.png ha_category: System Monitor ha_release: pre 0.7 ha_iot_class: Local Push +redirect_from: + - /components/sensor.cpuspeed/ --- diff --git a/source/_components/crimereports.markdown b/source/_components/crimereports.markdown index 3bac531f056..eb99649977f 100644 --- a/source/_components/crimereports.markdown +++ b/source/_components/crimereports.markdown @@ -11,6 +11,8 @@ ha_category: Social logo: crimereports.png ha_release: 0.42 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.crimereports/ --- The `crimereports` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Crime Reports](https://www.crimereports.com). Your regional emergency services may or may not report data. The sensor only counts incidents from the current day. diff --git a/source/_components/cups.markdown b/source/_components/cups.markdown index 7d69c395cbf..ff4602f55a6 100644 --- a/source/_components/cups.markdown +++ b/source/_components/cups.markdown @@ -11,6 +11,8 @@ logo: cups.png ha_category: System Monitor ha_iot_class: Local Polling ha_release: 0.32 +redirect_from: + - /components/sensor.cups/ --- diff --git a/source/_components/currencylayer.markdown b/source/_components/currencylayer.markdown index 0b5d49d047f..a789f462ff8 100644 --- a/source/_components/currencylayer.markdown +++ b/source/_components/currencylayer.markdown @@ -11,6 +11,8 @@ ha_category: Finance logo: currencylayer.png ha_iot_class: Cloud Polling ha_release: 0.32 +redirect_from: + - /components/sensor.currencylayer/ --- diff --git a/source/_components/darksky.markdown b/source/_components/darksky.markdown index 16d4b160ff5..646a49f0fab 100644 --- a/source/_components/darksky.markdown +++ b/source/_components/darksky.markdown @@ -12,6 +12,8 @@ ha_category: Weather ha_release: "0.30" redirect_from: /components/sensor.forecast/ ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.darksky/ --- The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](http://www.openstreetmap.org/). diff --git a/source/_components/ddwrt.markdown b/source/_components/ddwrt.markdown index d4bb1a028b6..83a717068fb 100644 --- a/source/_components/ddwrt.markdown +++ b/source/_components/ddwrt.markdown @@ -10,6 +10,8 @@ footer: true logo: ddwrt.png ha_category: Presence Detection ha_release: pre 0.7 +redirect_from: + - /components/device_tracker.ddwrt/ --- This platform offers presence detection by looking at connected devices to a [DD-WRT](http://www.dd-wrt.com/site/index) based router. diff --git a/source/_components/decora.markdown b/source/_components/decora.markdown index 5702e78d07d..4207d98f333 100644 --- a/source/_components/decora.markdown +++ b/source/_components/decora.markdown @@ -11,6 +11,8 @@ ha_category: Light ha_iot_class: Local Polling logo: leviton.png ha_release: 0.37 +redirect_from: + - /components/light.decora/ --- Support for the Decora Bluetooth dimmer switch [Leviton](https://www.leviton.com/en/products/residential/dimmers/automation-smart-home/decora-digital-with-bluetooth-dimmers#t=Products&sort=%40wcs_site_tree_rank%20ascending&layout=card). diff --git a/source/_components/decora_wifi.markdown b/source/_components/decora_wifi.markdown index 079461afbf8..8f39f571fa0 100644 --- a/source/_components/decora_wifi.markdown +++ b/source/_components/decora_wifi.markdown @@ -11,6 +11,8 @@ ha_category: Light ha_iot_class: Cloud Polling logo: leviton.png ha_release: 0.51 +redirect_from: + - /components/light.decora_wifi/ --- Support for [Leviton Decora Wi-Fi](http://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches via the MyLeviton API. diff --git a/source/_components/deluge.markdown b/source/_components/deluge.markdown index b07d7abb23b..dd2da569174 100644 --- a/source/_components/deluge.markdown +++ b/source/_components/deluge.markdown @@ -11,6 +11,8 @@ logo: deluge.png ha_category: Downloading ha_release: 0.57 ha_iot_class: Local Polling +redirect_from: + - /components/switch.deluge/ --- The `deluge` switch platform allows you to control your [Deluge](http://deluge-torrent.org/) client from within Home Assistant. The platform enables you switch all your torrents in pause, and then unpause them all. diff --git a/source/_components/denon.markdown b/source/_components/denon.markdown index 577f66a895f..5c4d5ed7c8f 100644 --- a/source/_components/denon.markdown +++ b/source/_components/denon.markdown @@ -11,6 +11,8 @@ logo: denon.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.7.2 +redirect_from: + - /components/media_player.denon/ --- The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. diff --git a/source/_components/denonavr.markdown b/source/_components/denonavr.markdown index d39cfa723a1..95bd30fcc7a 100644 --- a/source/_components/denonavr.markdown +++ b/source/_components/denonavr.markdown @@ -11,6 +11,8 @@ logo: denon.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.7.2 +redirect_from: + - /components/media_player.denonavr/ --- The `denonavr` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon] platform. diff --git a/source/_components/deutsche_bahn.markdown b/source/_components/deutsche_bahn.markdown index b7ec3b06bbe..126f60bf1fb 100644 --- a/source/_components/deutsche_bahn.markdown +++ b/source/_components/deutsche_bahn.markdown @@ -11,6 +11,8 @@ ha_category: Transport logo: db.png ha_iot_class: Cloud Polling ha_release: 0.14 +redirect_from: + - /components/sensor.deutsche_bahn/ --- diff --git a/source/_components/dht.markdown b/source/_components/dht.markdown index 5a0ab8d460c..752a988f636 100644 --- a/source/_components/dht.markdown +++ b/source/_components/dht.markdown @@ -11,6 +11,8 @@ ha_category: DIY ha_release: 0.7 logo: dht.png ha_iot_class: Local Polling +redirect_from: + - /components/sensor.dht/ --- diff --git a/source/_components/digitalloggers.markdown b/source/_components/digitalloggers.markdown index 00c8522ae68..aac007f2c68 100644 --- a/source/_components/digitalloggers.markdown +++ b/source/_components/digitalloggers.markdown @@ -11,6 +11,8 @@ logo: digitalloggers.png ha_category: Switch ha_release: 0.35 ha_iot_class: Local Polling +redirect_from: + - /components/switch.digitalloggers/ --- The `digitalloggers` switch platform allows you to control the state of your [Digital Loggers](http://www.digital-loggers.com/dinfaqs.html) switches. diff --git a/source/_components/directv.markdown b/source/_components/directv.markdown index c2c39ac9d55..0864d461a99 100644 --- a/source/_components/directv.markdown +++ b/source/_components/directv.markdown @@ -11,6 +11,8 @@ logo: directv.png ha_category: Media Player ha_release: 0.25 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.directv/ --- Master [DirecTV](http://www.directv.com/) receivers (ie: those that have tuners) will be automatically discovered if you enable the [discovery component](/components/discovery/) and the receiver is powered-on. Slave/RVU client/Genie boxes will also be discovered, but only if they are also online at the time of discovery. diff --git a/source/_components/discogs.markdown b/source/_components/discogs.markdown index ebb30e243e5..a9aec0b8172 100644 --- a/source/_components/discogs.markdown +++ b/source/_components/discogs.markdown @@ -11,6 +11,8 @@ ha_category: Multimedia ha_release: 0.61 logo: discogs.png ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.discogs/ --- The `discogs` platform allows you to see the current amount of records in your [Discogs](https://discogs.com) collection. diff --git a/source/_components/discord.markdown b/source/_components/discord.markdown index f9214277748..d633db119e2 100644 --- a/source/_components/discord.markdown +++ b/source/_components/discord.markdown @@ -10,6 +10,8 @@ footer: true logo: discord.png ha_category: Notifications ha_release: 0.37 +redirect_from: + - /components/notify.discord/ --- The [Discord service](https://discordapp.com/) is a platform for the notify component. This allows components to send messages to the user using Discord. diff --git a/source/_components/dispatcher.markdown b/source/_components/dispatcher.markdown index 251f2f619a4..34cc5eb72e2 100644 --- a/source/_components/dispatcher.markdown +++ b/source/_components/dispatcher.markdown @@ -11,6 +11,8 @@ ha_category: Camera logo: camcorder.png ha_release: "0.40" ha_iot_class: Configurable +redirect_from: + - /components/camera.dispatcher/ ---

diff --git a/source/_components/dlib_face_detect.markdown b/source/_components/dlib_face_detect.markdown index ad987d418e2..5c39e38e8d8 100644 --- a/source/_components/dlib_face_detect.markdown +++ b/source/_components/dlib_face_detect.markdown @@ -10,6 +10,8 @@ footer: true logo: dlib.png ha_category: Image Processing ha_release: 0.44 +redirect_from: + - /components/image_processing.dlib_face_detect/ --- The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. diff --git a/source/_components/dlib_face_identify.markdown b/source/_components/dlib_face_identify.markdown index 4d8a2e63633..19b4eea5494 100644 --- a/source/_components/dlib_face_identify.markdown +++ b/source/_components/dlib_face_identify.markdown @@ -10,6 +10,8 @@ footer: true logo: dlib.png ha_category: Image Processing ha_release: 0.44 +redirect_from: + - /components/image_processing.dlib_face_identify/ --- The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire an event with identify persons. diff --git a/source/_components/dlink.markdown b/source/_components/dlink.markdown index 39014950382..a8b80131d7f 100644 --- a/source/_components/dlink.markdown +++ b/source/_components/dlink.markdown @@ -11,6 +11,8 @@ logo: dlink.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.14 +redirect_from: + - /components/switch.dlink/ --- The `dlink` switch platform allows you to control the state of your [D-Link Wi-Fi Smart Plugs](http://us.dlink.com/product-category/home-solutions/connected-home/smart-plugs/). diff --git a/source/_components/dlna_dmr.markdown b/source/_components/dlna_dmr.markdown index 2b7227dc6ba..f985145c58d 100644 --- a/source/_components/dlna_dmr.markdown +++ b/source/_components/dlna_dmr.markdown @@ -11,6 +11,8 @@ logo: dlna.png ha_category: Media Player ha_release: 0.76 ha_iot_class: Local Push +redirect_from: + - /components/media_player.dlna_dmr/ --- The `dlna_dmr` platform allows you to control a [DLNA Digital Media Renderer](https://www.dlna.org/), such as DLNA enabled TVs or radios. diff --git a/source/_components/dnsip.markdown b/source/_components/dnsip.markdown index a19aa29852c..e2950706cf1 100644 --- a/source/_components/dnsip.markdown +++ b/source/_components/dnsip.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Network ha_iot_class: Cloud Polling ha_release: "0.40" +redirect_from: + - /components/sensor.dnsip/ --- The `dnsip` sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes: diff --git a/source/_components/dsmr.markdown b/source/_components/dsmr.markdown index 7a6f9eedd6c..464e30e8c5d 100644 --- a/source/_components/dsmr.markdown +++ b/source/_components/dsmr.markdown @@ -11,6 +11,8 @@ logo: netbeheernederland.jpg ha_category: Energy ha_release: 0.34 ha_iot_class: Local Push +redirect_from: + - /components/sensor.dsmr/ --- A sensor platform for Dutch Smart Meters which comply to DSMR (Dutch Smart Meter Requirements), also known as 'Slimme meter' or 'P1 poort'. diff --git a/source/_components/dte_energy_bridge.markdown b/source/_components/dte_energy_bridge.markdown index d04953746b5..06fc202d4df 100644 --- a/source/_components/dte_energy_bridge.markdown +++ b/source/_components/dte_energy_bridge.markdown @@ -11,6 +11,8 @@ logo: dte_energy.png ha_category: Energy ha_release: 0.21 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.dte_energy_bridge/ --- A sensor platform for the [DTE](https://www.dteenergy.com/) Energy Bridge. To find out which version of the DTE Energy Bridge sensor you have, find the status LED on your box. diff --git a/source/_components/dublin_bus_transport.markdown b/source/_components/dublin_bus_transport.markdown index aec61aebcae..467aab58e71 100644 --- a/source/_components/dublin_bus_transport.markdown +++ b/source/_components/dublin_bus_transport.markdown @@ -11,6 +11,8 @@ logo: dublin_bus.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.36 +redirect_from: + - /components/sensor.dublin_bus_transport/ --- The `dublin_bus_transport` sensor will give you the time until the next two departures from a Dublin bus stop using the RTPI information. diff --git a/source/_components/duke_energy.markdown b/source/_components/duke_energy.markdown index 4abf903c146..fb5baf87888 100644 --- a/source/_components/duke_energy.markdown +++ b/source/_components/duke_energy.markdown @@ -11,6 +11,8 @@ logo: duke_energy.png ha_category: Energy ha_release: 0.74 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.duke_energy/ --- The `duke_energy` sensor platform allows you get the previous days usage for all of your Duke Energy smart meters. diff --git a/source/_components/dunehd.markdown b/source/_components/dunehd.markdown index b53c942f05e..4577a68abcd 100644 --- a/source/_components/dunehd.markdown +++ b/source/_components/dunehd.markdown @@ -11,6 +11,8 @@ logo: dunehd.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.34 +redirect_from: + - /components/media_player.dunehd/ --- diff --git a/source/_components/dwd_weather_warnings.markdown b/source/_components/dwd_weather_warnings.markdown index 57712cbb66d..c60e8895b29 100644 --- a/source/_components/dwd_weather_warnings.markdown +++ b/source/_components/dwd_weather_warnings.markdown @@ -11,6 +11,8 @@ footer: true ha_category: Weather ha_release: 0.51 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.dwd_weather_warnings/ --- The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD)](https://www.dwd.de) as a source for current and advance warnings. diff --git a/source/_components/ebox.markdown b/source/_components/ebox.markdown index 7442ec73623..3180ddb4803 100644 --- a/source/_components/ebox.markdown +++ b/source/_components/ebox.markdown @@ -11,6 +11,8 @@ logo: ebox.png ha_category: Network ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.ebox/ --- Integrate your [EBox](https://client.ebox.ca/) account information into Home Assistant. diff --git a/source/_components/econet.markdown b/source/_components/econet.markdown index e5ad20e8a17..52c5ec15596 100644 --- a/source/_components/econet.markdown +++ b/source/_components/econet.markdown @@ -12,6 +12,8 @@ ha_category: Water heater ha_release: 0.61 ha_iot_class: Cloud Polling redirect_from: /components/climate.econet/ +redirect_from: + - /components/water_heater.econet/ --- The `econet` water heater platform is consuming the information provided by a [EcoNet enabled Rheem water heater](http://www.rheem.com/EcoNet/Home). This platform allows you to set the temperature, the operation mode, and enable vacation mode. diff --git a/source/_components/eddystone_temperature.markdown b/source/_components/eddystone_temperature.markdown index ca8076bacc2..7df67a5eb5d 100644 --- a/source/_components/eddystone_temperature.markdown +++ b/source/_components/eddystone_temperature.markdown @@ -11,6 +11,8 @@ logo: eddystone.png ha_category: DIY ha_release: 0.42 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.eddystone_temperature/ --- The `eddystone_temperature` sensor platform reads temperature information from Bluetooth LE advertisements transmitted by [Eddystone](https://en.wikipedia.org/wiki/Eddystone_(Google)) beacons. Your beacons must be configured to transmit UID frames (for identification) and TLM frames (for temperature). diff --git a/source/_components/edimax.markdown b/source/_components/edimax.markdown index a7882b473fd..be6f43f2df6 100644 --- a/source/_components/edimax.markdown +++ b/source/_components/edimax.markdown @@ -10,6 +10,8 @@ footer: true logo: edimax.png ha_category: Switch ha_release: pre 0.7 +redirect_from: + - /components/switch.edimax/ --- This `edimax` switch platform allows you to control the state of your [Edimax](https://www.edimax.com/edimax/merchandise/merchandise_list/data/edimax/global/home_automation_smart_plug/) switches. diff --git a/source/_components/ee_brightbox.markdown b/source/_components/ee_brightbox.markdown index 8fc30c29636..b53cfa99fa3 100644 --- a/source/_components/ee_brightbox.markdown +++ b/source/_components/ee_brightbox.markdown @@ -11,6 +11,8 @@ logo: ee.png ha_category: Presence Detection ha_release: 0.87 ha_iot_class: Local Polling +redirect_from: + - /components/device_tracker.ee_brightbox/ --- This platform offers presence detection by looking at connected devices to a [EE Bright Box 2](https://ee.co.uk/help/phones-and-device/home-broadband/bright-box-2-wireless-router/bright-box-2-wireless-router) router. diff --git a/source/_components/efergy.markdown b/source/_components/efergy.markdown index 1baa39015da..97bf5ea2515 100644 --- a/source/_components/efergy.markdown +++ b/source/_components/efergy.markdown @@ -11,6 +11,8 @@ logo: efergy.png ha_category: Energy ha_release: pre 0.7 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.efergy/ --- Integrate your [Efergy](https://efergy.com) meter information into Home Assistant. diff --git a/source/_components/eliqonline.markdown b/source/_components/eliqonline.markdown index f568d61ea28..7ca31176657 100644 --- a/source/_components/eliqonline.markdown +++ b/source/_components/eliqonline.markdown @@ -11,6 +11,8 @@ logo: eliq.png ha_category: Energy ha_release: "0.10" ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.eliqonline/ --- Integrate your [ELIQ Online](http://eliq.io) smart meter information into Home Assistant. To get an [access token](https://my.eliq.io/user/settings/api) and the [Channel ID](https://my.eliq.io/user/settings/locations), log in to your account. diff --git a/source/_components/emby.markdown b/source/_components/emby.markdown index f7d1185dc80..c8768a47513 100644 --- a/source/_components/emby.markdown +++ b/source/_components/emby.markdown @@ -11,6 +11,8 @@ logo: emby.png ha_category: Media Player ha_release: 0.32 ha_iot_class: Local Push +redirect_from: + - /components/media_player.emby/ --- diff --git a/source/_components/emoncms.markdown b/source/_components/emoncms.markdown index a73892e9d90..82fb5fa8a44 100644 --- a/source/_components/emoncms.markdown +++ b/source/_components/emoncms.markdown @@ -11,6 +11,8 @@ footer: true ha_category: Sensor ha_release: 0.29 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.emoncms/ --- diff --git a/source/_components/enphase_envoy.markdown b/source/_components/enphase_envoy.markdown index 51c5d7801c1..baca2f6a613 100644 --- a/source/_components/enphase_envoy.markdown +++ b/source/_components/enphase_envoy.markdown @@ -11,6 +11,8 @@ logo: enphase-logo.svg ha_category: Energy ha_release: 0.76 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.enphase_envoy/ --- A sensor platform for the [Enphase Envoy](https://enphase.com/en-us/products-and-services/envoy) solar energy gateway. Works with older models that only have production metrics (ie. Envoy-C) and newer models that offer both production and consumption metrics (ie. Envoy-S). diff --git a/source/_components/entur_public_transport.markdown b/source/_components/entur_public_transport.markdown index e7995882bc2..d34a4b3f558 100644 --- a/source/_components/entur_public_transport.markdown +++ b/source/_components/entur_public_transport.markdown @@ -11,6 +11,8 @@ logo: entur.svg ha_category: Transport ha_release: 0.84 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.entur_public_transport/ --- The `entur_public_transport` sensor gives real-time departure information for the next two departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway. @@ -111,12 +113,16 @@ The stop id is the content after `id=` parameter in the url. Copy paste this int **A:** A whitelisting of lines takes affect on all of the stops. So you have to whitelist all lines you are interested in on all stop places. +redirect_from: + - /components/sensor.entur_public_transport/ --- **Q:** I have added whitelisting of lines, and everything has worked as fine before, but now it has stopped updating all of a sudden. **A:** Some transport companies, such as Kolumbus in Rogaland, have running numbers on the end of their line ids. These gets periodically updated and will make the whitelisting invalid. The new line ids needs to be added again. Most of the time it iterates by one. +redirect_from: + - /components/sensor.entur_public_transport/ --- **Q:** Where do I find a line id to add to the whitelisting? diff --git a/source/_components/envirophat.markdown b/source/_components/envirophat.markdown index aa86d11b73c..900417a6fa0 100644 --- a/source/_components/envirophat.markdown +++ b/source/_components/envirophat.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_iot_class: Local Polling ha_release: 0.44 +redirect_from: + - /components/sensor.envirophat/ --- The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board features a wide range of sensors, such as: diff --git a/source/_components/ephember.markdown b/source/_components/ephember.markdown index d65a4bd33bd..e98d2d9ff1c 100644 --- a/source/_components/ephember.markdown +++ b/source/_components/ephember.markdown @@ -11,6 +11,8 @@ logo: ephcontrolsember.png ha_category: Climate ha_release: 0.57 ha_iot_class: Local Polling +redirect_from: + - /components/climate.ephember/ --- diff --git a/source/_components/epson.markdown b/source/_components/epson.markdown index f962050d350..70acba4d7f7 100644 --- a/source/_components/epson.markdown +++ b/source/_components/epson.markdown @@ -11,6 +11,8 @@ logo: epson.png ha_category: Media Player ha_release: 0.72 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.epson/ --- The `epson` platform allows you to control a Epson projector from Home diff --git a/source/_components/eq3btsmart.markdown b/source/_components/eq3btsmart.markdown index f61ee33481d..4cfd77aad33 100644 --- a/source/_components/eq3btsmart.markdown +++ b/source/_components/eq3btsmart.markdown @@ -11,6 +11,8 @@ logo: eq3.gif ha_category: Climate ha_iot_class: Local Polling ha_release: 0.18 +redirect_from: + - /components/climate.eq3btsmart/ --- The `eq3btsmart` climate platform allows you to integrate EQ3 Bluetooth Smart Thermostats. diff --git a/source/_components/etherscan.markdown b/source/_components/etherscan.markdown index 3273b18ddb0..5dd8601022a 100644 --- a/source/_components/etherscan.markdown +++ b/source/_components/etherscan.markdown @@ -11,6 +11,8 @@ logo: etherscan.png ha_category: Finance ha_release: 0.47 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.etherscan/ --- The `Etherscan` sensor platform displays Ether and ERC-20 token balances from [Etherscan.io](https://etherscan.io). diff --git a/source/_components/everlights.markdown b/source/_components/everlights.markdown index 47ca2b9cdbe..4c21ffe879d 100644 --- a/source/_components/everlights.markdown +++ b/source/_components/everlights.markdown @@ -11,6 +11,8 @@ logo: everlights.png ha_category: Light ha_iot_class: Local Polling ha_release: 0.87 +redirect_from: + - /components/light.everlights/ --- [EverLights](https://myeverlights.com/) are permanent Christmas lights installed on a home's gutters or flashing. This integration can change all LEDs in a zone to a single color or activate a pattern that was previously saved to the control box. diff --git a/source/_components/facebook.markdown b/source/_components/facebook.markdown index 1625d2692bf..68a6490a41b 100644 --- a/source/_components/facebook.markdown +++ b/source/_components/facebook.markdown @@ -10,6 +10,8 @@ footer: true logo: facebook.png ha_category: Notifications ha_release: 0.36 +redirect_from: + - /components/notify.facebook/ --- The `facebook` notification platform enables sending notifications via Facebook Messenger, powered by [Facebook](https://facebook.com). diff --git a/source/_components/facebox.markdown b/source/_components/facebox.markdown index ad5c8c6aba1..ba9e77ed373 100644 --- a/source/_components/facebox.markdown +++ b/source/_components/facebox.markdown @@ -10,6 +10,8 @@ footer: true logo: machine-box.png ha_category: Image Processing ha_release: 0.70 +redirect_from: + - /components/image_processing.facebox/ --- The `facebox` image processing platform allows you to detect and recognize faces in a camera image using [Facebox](https://machinebox.io/docs/facebox). The state of the entity is the number of faces detected, and recognized faces are listed in the `matched_faces` attribute. An `image_processing.detect_face` event is fired for each recognized face, and the event `data` provides the `confidence` of recognition, the `name` of the person, the `image_id` of the image associated with the match, the `bounding_box` that contains the face in the image, and the `entity_id` that processing was performed on. diff --git a/source/_components/fail2ban.markdown b/source/_components/fail2ban.markdown index ccef1ea8c14..13d7fb946b8 100644 --- a/source/_components/fail2ban.markdown +++ b/source/_components/fail2ban.markdown @@ -11,6 +11,8 @@ ha_category: Network ha_iot_class: Local Polling logo: fail2ban.png ha_release: 0.57 +redirect_from: + - /components/sensor.fail2ban/ --- diff --git a/source/_components/familyhub.markdown b/source/_components/familyhub.markdown index 970e4355b11..63b523f8212 100644 --- a/source/_components/familyhub.markdown +++ b/source/_components/familyhub.markdown @@ -11,6 +11,8 @@ logo: familyhub.png ha_category: Camera ha_release: "0.70" ha_iot_class: Local Polling +redirect_from: + - /components/camera.familyhub/ --- The `familyhub` platform allows you to get images of the inside of your [Samsung Family Hub refrigerator](https://www.samsung.com/us/explore/family-hub-refrigerator/connected-hub/) in Home Assistant. diff --git a/source/_components/fedex.markdown b/source/_components/fedex.markdown index 81ba91479cc..bb22d2db344 100644 --- a/source/_components/fedex.markdown +++ b/source/_components/fedex.markdown @@ -11,6 +11,8 @@ logo: fedex.png ha_category: Postal Service ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.fedex/ --- The `fedex` platform allows one to track deliveries by [FedEx](http://www.fedex.com/). To use this sensor, you need a [FedEx Delivery Manager](https://www.fedex.com/us/delivery/) account. diff --git a/source/_components/ffmpeg_motion.markdown b/source/_components/ffmpeg_motion.markdown index a342d640643..febba3a2d55 100644 --- a/source/_components/ffmpeg_motion.markdown +++ b/source/_components/ffmpeg_motion.markdown @@ -11,6 +11,8 @@ logo: ffmpeg.png ha_category: Image Processing ha_release: 0.27 redirect_from: /components/binary_sensor.ffmpeg/ +redirect_from: + - /components/binary_sensor.ffmpeg_motion/ --- The `ffmpeg` platform allows you to use any video feed with [FFmpeg](http://www.ffmpeg.org/) for motion sensors in Home Assistant. diff --git a/source/_components/ffmpeg_noise.markdown b/source/_components/ffmpeg_noise.markdown index 53f45188b8d..0b210357710 100644 --- a/source/_components/ffmpeg_noise.markdown +++ b/source/_components/ffmpeg_noise.markdown @@ -10,6 +10,8 @@ footer: true logo: ffmpeg.png ha_category: Image Processing ha_release: 0.27 +redirect_from: + - /components/binary_sensor.ffmpeg_noise/ --- The `ffmpeg` platform allows you to use any video or audio feed with [FFmpeg](http://www.ffmpeg.org/) for various sensors in Home Assistant. diff --git a/source/_components/fido.markdown b/source/_components/fido.markdown index dd45d2aa1ed..2cf8b9d0f41 100644 --- a/source/_components/fido.markdown +++ b/source/_components/fido.markdown @@ -11,6 +11,8 @@ logo: fido.png ha_category: Network ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.fido/ --- Integrate your [Fido](https://www.fido.ca/) account information into Home Assistant. diff --git a/source/_components/file.markdown b/source/_components/file.markdown index 1fed47e1714..aa9ccaaf3cc 100644 --- a/source/_components/file.markdown +++ b/source/_components/file.markdown @@ -10,6 +10,8 @@ footer: true logo: file.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.file/ --- The `file` platform allows you to store notifications from Home Assistant as a file. diff --git a/source/_components/filesize.markdown b/source/_components/filesize.markdown index 25aad48d110..a34a371c8b3 100644 --- a/source/_components/filesize.markdown +++ b/source/_components/filesize.markdown @@ -11,6 +11,8 @@ logo: file.png ha_category: Utility ha_iot_class: Local Polling ha_release: 0.64 +redirect_from: + - /components/sensor.filesize/ --- The `filesize` sensor for displaying the size in MB of a file. Note that paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). diff --git a/source/_components/filter.markdown b/source/_components/filter.markdown index 600cbf7fcb7..eb2a7a3096e 100644 --- a/source/_components/filter.markdown +++ b/source/_components/filter.markdown @@ -12,6 +12,8 @@ ha_release: 0.65 ha_iot_class: Local Push logo: home-assistant.png ha_qa_scale: internal +redirect_from: + - /components/sensor.filter/ --- The `filter` platform enables sensors that process the states of other entities. diff --git a/source/_components/fints.markdown b/source/_components/fints.markdown index 52a6cbe6b41..be75b289e6d 100644 --- a/source/_components/fints.markdown +++ b/source/_components/fints.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Finance ha_release: "0.70" ha_iot_class: Local Push +redirect_from: + - /components/sensor.fints/ --- With the FinTS sensor, you can fetch your account information from your bank. This only works with banks that support the FinTS (aka. HBCI) standard. The FinTS standard used by many German banks. So if you do not have a German bank account, this will most likely not work for you. To find out if your bank supports FinTS, check the bank's website or call their hotline. diff --git a/source/_components/fitbit.markdown b/source/_components/fitbit.markdown index 83fcf9dd273..94076e4181c 100644 --- a/source/_components/fitbit.markdown +++ b/source/_components/fitbit.markdown @@ -11,6 +11,8 @@ logo: fitbit.png ha_category: Health ha_iot_class: Cloud Polling ha_release: 0.19 +redirect_from: + - /components/sensor.fitbit/ --- The Fitbit sensor allows you to expose data from [Fitbit](http://fitbit.com) to Home Assistant. diff --git a/source/_components/fixer.markdown b/source/_components/fixer.markdown index b7039cfc331..bb878df0e08 100644 --- a/source/_components/fixer.markdown +++ b/source/_components/fixer.markdown @@ -11,6 +11,8 @@ ha_category: Finance logo: fixer-io.png ha_iot_class: Cloud Polling ha_release: 0.23 +redirect_from: + - /components/sensor.fixer/ --- diff --git a/source/_components/flexit.markdown b/source/_components/flexit.markdown index 10360eeb2ed..7be1b7f111a 100644 --- a/source/_components/flexit.markdown +++ b/source/_components/flexit.markdown @@ -11,6 +11,8 @@ logo: flexit.png ha_category: Climate ha_release: 0.47 ha_iot_class: Local Polling +redirect_from: + - /components/climate.flexit/ --- Integrates [Flexit](https://www.flexit.no/en/) Air Conditioning unit into Home Assistant. diff --git a/source/_components/flic.markdown b/source/_components/flic.markdown index ab4139d98b8..bfc10d5abf5 100644 --- a/source/_components/flic.markdown +++ b/source/_components/flic.markdown @@ -11,6 +11,8 @@ logo: flic.png ha_category: Binary Sensor ha_iot_class: Local Push ha_release: 0.35 +redirect_from: + - /components/binary_sensor.flic/ --- The `flic` platform allows you to receive click events from [flic](https://flic.io) smart buttons. diff --git a/source/_components/flock.markdown b/source/_components/flock.markdown index f0612e929ca..819abf0bc57 100644 --- a/source/_components/flock.markdown +++ b/source/_components/flock.markdown @@ -10,6 +10,8 @@ footer: true logo: flock.png ha_category: Notifications ha_release: 0.71 +redirect_from: + - /components/notify.flock/ --- diff --git a/source/_components/flunearyou.markdown b/source/_components/flunearyou.markdown index 7fa4aa1eab4..382a9e7b2f1 100644 --- a/source/_components/flunearyou.markdown +++ b/source/_components/flunearyou.markdown @@ -11,6 +11,8 @@ logo: flunearyou.png ha_category: Health ha_release: 0.83 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.flunearyou/ --- The `flunearyou` sensor platform allows users in the United States and its diff --git a/source/_components/flux.markdown b/source/_components/flux.markdown index 68e87e72f19..886f2ca76a2 100644 --- a/source/_components/flux.markdown +++ b/source/_components/flux.markdown @@ -11,6 +11,8 @@ ha_category: Automation ha_release: 0.21 logo: home-assistant.png ha_qa_scale: internal +redirect_from: + - /components/switch.flux/ --- 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. diff --git a/source/_components/flux_led.markdown b/source/_components/flux_led.markdown index 6f93555623c..dbb445013fd 100644 --- a/source/_components/flux_led.markdown +++ b/source/_components/flux_led.markdown @@ -11,6 +11,8 @@ logo: magic_light.png ha_category: Light ha_iot_class: Local Polling ha_release: 0.25 +redirect_from: + - /components/light.flux_led/ --- The `flux_led` support is integrated into Home Assistant as a light platform. Several brands of both bulbs and controllers use the same protocol and they have the HF-LPB100 chipset in common. The chances are high that your bulb or controller (eg. WiFi LED CONTROLLER) will work if you can control the device with the MagicHome app. diff --git a/source/_components/folder.markdown b/source/_components/folder.markdown index e71e5527785..994b81934e6 100644 --- a/source/_components/folder.markdown +++ b/source/_components/folder.markdown @@ -11,6 +11,8 @@ logo: file.png ha_category: Utility ha_iot_class: Local Polling ha_release: 0.64 +redirect_from: + - /components/sensor.folder/ --- Sensor for monitoring the contents of a folder. Note that folder paths must be added to [whitelist_external_dirs](/docs/configuration/basic/). Optionally a [wildcard filter](https://docs.python.org/3.6/library/fnmatch.html) can be applied to the files considered within the folder. The state of the sensor is the size in MB of files within the folder that meet the filter criteria. The number of filtered files in the folder and total size in bytes of those files are exposed as attributes. diff --git a/source/_components/foobot.markdown b/source/_components/foobot.markdown index fc0d0133879..6ffd85fa51a 100644 --- a/source/_components/foobot.markdown +++ b/source/_components/foobot.markdown @@ -11,6 +11,8 @@ logo: foobot.png ha_category: Health ha_release: 0.66 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.foobot/ --- The `foobot` sensor platform will fetch air quality data from your or yours [Foobot device(s)](https://foobot.io/features/). diff --git a/source/_components/foscam.markdown b/source/_components/foscam.markdown index cef0b3031e6..ff866b6cf6b 100644 --- a/source/_components/foscam.markdown +++ b/source/_components/foscam.markdown @@ -11,6 +11,8 @@ logo: foscam.png ha_category: Camera ha_iot_class: Local Polling ha_release: 0.7.3 +redirect_from: + - /components/camera.foscam/ --- The `foscam` platform allows you to watch the live stream of your [Foscam](http://www.foscam.com/) IP camera in Home Assistant. diff --git a/source/_components/free_mobile.markdown b/source/_components/free_mobile.markdown index 8851f8a060f..06b0664206b 100644 --- a/source/_components/free_mobile.markdown +++ b/source/_components/free_mobile.markdown @@ -10,6 +10,8 @@ footer: true logo: free_mobile.png ha_category: Notifications ha_release: 0.11 +redirect_from: + - /components/notify.free_mobile/ --- The `free_mobile` platform is using the French mobile operator [Free Mobile](http://mobile.free.fr/) to send SMS to your own cell phone. diff --git a/source/_components/fritz.markdown b/source/_components/fritz.markdown index 4bb281c39fb..aa5507b46d2 100644 --- a/source/_components/fritz.markdown +++ b/source/_components/fritz.markdown @@ -10,6 +10,8 @@ footer: true logo: avm.png ha_category: Presence Detection ha_release: "0.10" +redirect_from: + - /components/device_tracker.fritz/ --- diff --git a/source/_components/fritzbox_callmonitor.markdown b/source/_components/fritzbox_callmonitor.markdown index 95eaadf9424..442d8352d0a 100644 --- a/source/_components/fritzbox_callmonitor.markdown +++ b/source/_components/fritzbox_callmonitor.markdown @@ -11,6 +11,8 @@ logo: avm.png ha_category: System Monitor ha_release: 0.27 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.fritzbox_callmonitor/ --- The `fritzbox_callmonitor` sensor monitors the call monitor exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers on TCP port 1012. It will assume the values `idle`, `ringing`, `dialing` or `talking` with the phone numbers involved contained in the state attributes. diff --git a/source/_components/fritzbox_netmonitor.markdown b/source/_components/fritzbox_netmonitor.markdown index b7053a4e929..3e5bb1423e3 100644 --- a/source/_components/fritzbox_netmonitor.markdown +++ b/source/_components/fritzbox_netmonitor.markdown @@ -11,6 +11,8 @@ logo: avm.png ha_category: System Monitor ha_release: 0.36 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.fritzbox_netmonitor/ --- The `fritzbox_netmonitor` sensor monitors the network statistics exposed by [AVM Fritz!Box](http://avm.de/produkte/fritzbox/) routers. diff --git a/source/_components/fritzdect.markdown b/source/_components/fritzdect.markdown index 32a74970601..6ffd6cbf191 100644 --- a/source/_components/fritzdect.markdown +++ b/source/_components/fritzdect.markdown @@ -11,6 +11,8 @@ logo: avm.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.38 +redirect_from: + - /components/switch.fritzdect/ --- The `fritzdect` switch platform allows you to control the state of your [AVM FRITZ!DECT DECT-based wireless switches](https://en.avm.de/products/fritzdect/). The AVM FRITZ!DECT switches need to be paired to your Fritz!Box and then can be monitored and controlled via Home Assistant. diff --git a/source/_components/frontier_silicon.markdown b/source/_components/frontier_silicon.markdown index 35d6badd47a..c8c5af2489c 100644 --- a/source/_components/frontier_silicon.markdown +++ b/source/_components/frontier_silicon.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Media Player ha_iot_class: Local Push ha_release: "0.40" +redirect_from: + - /components/media_player.frontier_silicon/ --- This component provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the [UNDOK] app. diff --git a/source/_components/futurenow.markdown b/source/_components/futurenow.markdown index fac13214fca..164cc6b7b88 100644 --- a/source/_components/futurenow.markdown +++ b/source/_components/futurenow.markdown @@ -10,6 +10,8 @@ footer: true logo: p5.png ha_category: Light ha_release: 0.75 +redirect_from: + - /components/light.futurenow/ --- The `futurenow` light platform allows you to use [P5](http://www.p5.hu) FutureNow relay/dimmer units as lights. Currently supported units: diff --git a/source/_components/garadget.markdown b/source/_components/garadget.markdown index 0ff17fb3d3d..89f7c5a8933 100644 --- a/source/_components/garadget.markdown +++ b/source/_components/garadget.markdown @@ -11,6 +11,8 @@ logo: garadget.png ha_category: Cover ha_release: 0.32 ha_iot_class: Cloud Polling +redirect_from: + - /components/cover.garadget/ --- diff --git a/source/_components/gearbest.markdown b/source/_components/gearbest.markdown index 89460af2838..f200db1fe53 100644 --- a/source/_components/gearbest.markdown +++ b/source/_components/gearbest.markdown @@ -11,6 +11,8 @@ logo: gearbest.png ha_category: Sensor ha_iot_class: Cloud Polling ha_release: "0.60" +redirect_from: + - /components/sensor.gearbest/ --- diff --git a/source/_components/geizhals.markdown b/source/_components/geizhals.markdown index f394f4c157d..723586795d8 100644 --- a/source/_components/geizhals.markdown +++ b/source/_components/geizhals.markdown @@ -11,6 +11,8 @@ logo: geizhals.png ha_category: Sensor ha_iot_class: Cloud Polling ha_release: 0.51 +redirect_from: + - /components/sensor.geizhals/ --- The `geizhals` sensor will give you the best price of a product from [Geizhals](https://geizhals.de) or related site. With this information can be used in e.g., automations to notify you when a price drops. diff --git a/source/_components/generic.markdown b/source/_components/generic.markdown index 7020e873a75..1da0c675a57 100644 --- a/source/_components/generic.markdown +++ b/source/_components/generic.markdown @@ -11,6 +11,8 @@ ha_category: Camera logo: home-assistant.png ha_release: pre 0.7 ha_iot_class: Configurable +redirect_from: + - /components/camera.generic/ --- The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. diff --git a/source/_components/generic_thermostat.markdown b/source/_components/generic_thermostat.markdown index 530547801af..df63fdc9130 100644 --- a/source/_components/generic_thermostat.markdown +++ b/source/_components/generic_thermostat.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Climate ha_release: pre 0.7 ha_iot_class: Local Polling +redirect_from: + - /components/climate.generic_thermostat/ --- The `generic_thermostat` climate platform is a thermostat implemented in Home Assistant. It uses a sensor and a switch connected to a heater or air conditioning under the hood. When in heater mode, if the measured temperature is cooler than the target temperature, the heater will be turned on and turned off when the required temperature is reached. When in air conditioning mode, if the measured temperature is hotter than the target temperature, the air conditioning will be turned on and turned off when required temperature is reached. One Generic Thermostat entity can only control one switch. If you need to activate two switches, one for a heater and one for an air conditioner, you will need two Generic Thermostat entities. diff --git a/source/_components/geo_json_events.markdown b/source/_components/geo_json_events.markdown index bfe7d652b36..c601ed29273 100644 --- a/source/_components/geo_json_events.markdown +++ b/source/_components/geo_json_events.markdown @@ -11,6 +11,8 @@ logo: geo_location.png ha_category: Geolocation ha_iot_class: Cloud Polling ha_release: 0.79 +redirect_from: + - /components/geo_location.geo_json_events/ --- The `geo_json_events` platform lets you integrate GeoJSON feeds. It retrieves events from a feed and shows information of those events filtered by distance to Home Assistant's location. diff --git a/source/_components/geo_rss_events.markdown b/source/_components/geo_rss_events.markdown index 03fc1733011..e889927ccdf 100644 --- a/source/_components/geo_rss_events.markdown +++ b/source/_components/geo_rss_events.markdown @@ -11,6 +11,8 @@ logo: rss.png ha_category: Sensor ha_iot_class: Cloud Polling ha_release: 0.55 +redirect_from: + - /components/sensor.geo_rss_events/ --- The `geo_rss_events` sensor retrieves events from a GeoRSS feed and shows information of those events filtered by distance to Home Assistant's location and grouped by category. diff --git a/source/_components/geofency.markdown b/source/_components/geofency.markdown index 28ffae6161a..52a979377bf 100644 --- a/source/_components/geofency.markdown +++ b/source/_components/geofency.markdown @@ -11,6 +11,8 @@ logo: geofency.png ha_category: Presence Detection ha_release: 0.53 ha_iot_class: Cloud Push +redirect_from: + - /components/device_tracker.geofency/ --- This platform allows you to detect presence using [Geofency](http://www.geofency.com/). diff --git a/source/_components/github.markdown b/source/_components/github.markdown index 465539d17cd..a80bc6d3205 100644 --- a/source/_components/github.markdown +++ b/source/_components/github.markdown @@ -11,6 +11,8 @@ logo: github.png ha_category: Sensor ha_release: 0.88 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.github/ --- The GitHub sensor integrates data from [GitHub](https://github.com/) to monitor your favorite repositories. diff --git a/source/_components/gitlab_ci.markdown b/source/_components/gitlab_ci.markdown index 56b6e9f64ba..1c3d0ce0c30 100644 --- a/source/_components/gitlab_ci.markdown +++ b/source/_components/gitlab_ci.markdown @@ -11,6 +11,8 @@ logo: gitlab.png ha_category: Sensor ha_release: 0.80 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.gitlab_ci/ --- The `gitlab_ci` sensor platform integrates results reported by CI/CD Pipeline Jobs in [GitLab](https://gitlab.com/). diff --git a/source/_components/gitter.markdown b/source/_components/gitter.markdown index 72f3c4b7dcc..9977a294700 100644 --- a/source/_components/gitter.markdown +++ b/source/_components/gitter.markdown @@ -10,6 +10,8 @@ footer: true logo: gitter.png ha_category: Sensor ha_release: 0.47 +redirect_from: + - /components/sensor.gitter/ --- diff --git a/source/_components/glances.markdown b/source/_components/glances.markdown index f109c2ddf5c..d693106f1fe 100644 --- a/source/_components/glances.markdown +++ b/source/_components/glances.markdown @@ -11,6 +11,8 @@ logo: glances.png ha_category: System Monitor ha_iot_class: Local Polling ha_release: 0.7.3 +redirect_from: + - /components/sensor.glances/ --- diff --git a/source/_components/gntp.markdown b/source/_components/gntp.markdown index f2a3ee782b3..e82eb4d6fb9 100644 --- a/source/_components/gntp.markdown +++ b/source/_components/gntp.markdown @@ -10,6 +10,8 @@ footer: true logo: gntp.png ha_category: Notifications ha_release: 0.16 +redirect_from: + - /components/notify.gntp/ --- [GNTP](http://www.growlforwindows.com/gfw/help/gntp.aspx) is a specification for sending and receiving notifications between computers. The most well known server implementations are [Growl](http://growl.info) for Mac and [Growl for Windows](http://www.growlforwindows.com/gfw/). diff --git a/source/_components/gogogate2.markdown b/source/_components/gogogate2.markdown index a24ef1fd029..a6be2d23220 100644 --- a/source/_components/gogogate2.markdown +++ b/source/_components/gogogate2.markdown @@ -11,6 +11,8 @@ logo: gogogate2.png ha_category: Cover ha_release: 0.67 ha_iot_class: Local Polling +redirect_from: + - /components/cover.gogogate2/ --- The `gogogate2` cover platform lets you control Gogogate2-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your Gogogate2 mobile app. diff --git a/source/_components/google.markdown b/source/_components/google.markdown index 927d672a7c4..acd9353c230 100644 --- a/source/_components/google.markdown +++ b/source/_components/google.markdown @@ -10,6 +10,8 @@ footer: true logo: google.png ha_category: Text-to-speech ha_release: 0.35 +redirect_from: + - /components/tts.google/ --- The `google` text-to-speech platform uses [Google Text-to-Speech engine](https://console.developers.google.com/apis/library/texttospeech.googleapis.com) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_components/google_maps.markdown b/source/_components/google_maps.markdown index e04d4130806..28af816d622 100644 --- a/source/_components/google_maps.markdown +++ b/source/_components/google_maps.markdown @@ -11,6 +11,8 @@ logo: google_maps.png ha_release: 0.67 ha_category: Presence Detection ha_iot_class: Cloud Polling +redirect_from: + - /components/device_tracker.google_maps/ --- The `google_maps` platform allows you to detect presence using the unofficial API of [Google Maps Location Sharing](https://myaccount.google.com/locationsharing). diff --git a/source/_components/google_travel_time.markdown b/source/_components/google_travel_time.markdown index f661bee9c32..0defe09f654 100644 --- a/source/_components/google_travel_time.markdown +++ b/source/_components/google_travel_time.markdown @@ -11,6 +11,8 @@ logo: google_maps.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.19 +redirect_from: + - /components/sensor.google_travel_time/ --- The `google_travel_time` sensor provides travel time from the [Google Distance Matrix API](https://developers.google.com/maps/documentation/distance-matrix/). diff --git a/source/_components/google_wifi.markdown b/source/_components/google_wifi.markdown index 358265a266a..dc9a38210dd 100644 --- a/source/_components/google_wifi.markdown +++ b/source/_components/google_wifi.markdown @@ -11,6 +11,8 @@ ha_category: System Monitor logo: google_wifi.png ha_iot_class: Local Polling ha_release: "0.50" +redirect_from: + - /components/sensor.google_wifi/ --- diff --git a/source/_components/gpmdp.markdown b/source/_components/gpmdp.markdown index 4c04d61ede6..fc1387533eb 100644 --- a/source/_components/gpmdp.markdown +++ b/source/_components/gpmdp.markdown @@ -11,6 +11,8 @@ logo: gpmdp.png ha_category: Media Player ha_iot_class: Local Polling ha_release: "0.20" +redirect_from: + - /components/media_player.gpmdp/ --- diff --git a/source/_components/gpsd.markdown b/source/_components/gpsd.markdown index 16544356eb5..fe1261145f8 100644 --- a/source/_components/gpsd.markdown +++ b/source/_components/gpsd.markdown @@ -11,6 +11,8 @@ logo: gpsd.png ha_category: Utility ha_release: 0.26 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.gpsd/ --- The `gpsd` component is using the GPS information collected by [gpsd](http://catb.org/gpsd/) and a GPS receiver. diff --git a/source/_components/gpslogger.markdown b/source/_components/gpslogger.markdown index 01dc20046d5..594b404763c 100644 --- a/source/_components/gpslogger.markdown +++ b/source/_components/gpslogger.markdown @@ -10,6 +10,8 @@ footer: true logo: gpslogger.png ha_category: Presence Detection ha_release: 0.34 +redirect_from: + - /components/device_tracker.gpslogger/ --- The `gpslogger` device tracker platform allows you to detect presence using [GPSLogger](http://code.mendhak.com/gpslogger/). diff --git a/source/_components/greenwave.markdown b/source/_components/greenwave.markdown index 26fa57fd8db..c0c4752e9c0 100644 --- a/source/_components/greenwave.markdown +++ b/source/_components/greenwave.markdown @@ -11,6 +11,8 @@ logo: greenwavereality.png ha_category: Light ha_release: 0.61 ha_iot_class: Local Polling +redirect_from: + - /components/light.greenwave/ --- This component communicates with the Greenwave Reality (TCP Connected) Gateway to allow control of all lights and fixtures registered to the gateway. Bulbs and Fixtures can be created and modified inside the TCP Lighting App for Android and iOS. diff --git a/source/_components/gstreamer.markdown b/source/_components/gstreamer.markdown index ad79dfa2126..8cf3206ddfa 100644 --- a/source/_components/gstreamer.markdown +++ b/source/_components/gstreamer.markdown @@ -11,6 +11,8 @@ ha_category: Media Player logo: gstreamer.png ha_release: 0.39 ha_iot_class: Local Push +redirect_from: + - /components/media_player.gstreamer/ --- The `gstreamer` platform allows you to play audio via a [gstreamer](https://gstreamer.freedesktop.org/) pipeline. Practically, this means you can play audio directly on the computer running Home Assistant. It is particularly suited for playing TTS. Advanced users can specify a pipeline to transform the audio stream and/or redirect it elsewhere. diff --git a/source/_components/gtfs.markdown b/source/_components/gtfs.markdown index bc114c0e480..63c6222f5b0 100644 --- a/source/_components/gtfs.markdown +++ b/source/_components/gtfs.markdown @@ -11,6 +11,8 @@ logo: train.png ha_category: Transport ha_iot_class: Local Polling ha_release: 0.17 +redirect_from: + - /components/sensor.gtfs/ --- The `gtfs` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from your chosen public transit authority and is formatted as [General Transit Feed Specification](https://developers.google.com/transit/gtfs/) data, commonly known as GTFS. diff --git a/source/_components/gtt.markdown b/source/_components/gtt.markdown index 465b60899f6..1cc91043c42 100644 --- a/source/_components/gtt.markdown +++ b/source/_components/gtt.markdown @@ -11,6 +11,8 @@ ha_category: Transport logo: gtt.png ha_iot_class: Cloud Polling ha_release: 0.85 +redirect_from: + - /components/sensor.gtt/ --- diff --git a/source/_components/harman_kardon_avr.markdown b/source/_components/harman_kardon_avr.markdown index d29d6baf9a0..0a35de92486 100644 --- a/source/_components/harman_kardon_avr.markdown +++ b/source/_components/harman_kardon_avr.markdown @@ -11,6 +11,8 @@ logo: harman_kardon.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.85 +redirect_from: + - /components/media_player.harman_kardon_avr/ --- The `harman_kardon_avr` platform allows you to control Harman Kardon Network Receivers from Home Assistant. diff --git a/source/_components/haveibeenpwned.markdown b/source/_components/haveibeenpwned.markdown index d195017418b..aaddab15622 100644 --- a/source/_components/haveibeenpwned.markdown +++ b/source/_components/haveibeenpwned.markdown @@ -11,6 +11,8 @@ logo: haveibeenpwned.png ha_category: Sensor ha_release: 0.31 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.haveibeenpwned/ --- The `haveibeenpwned` sensor platform creates sensors that check for breached email accounts on [haveibeenpwned](https://haveibeenpwned.com). diff --git a/source/_components/hddtemp.markdown b/source/_components/hddtemp.markdown index 14e9701053c..449e4c7ac8e 100644 --- a/source/_components/hddtemp.markdown +++ b/source/_components/hddtemp.markdown @@ -10,6 +10,8 @@ footer: true ha_category: System Monitor ha_release: 0.32 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.hddtemp/ --- The `hddtemp` sensor platform is using the data provided by [HDDTemp](http://savannah.nongnu.org/projects/hddtemp). diff --git a/source/_components/heatmiser.markdown b/source/_components/heatmiser.markdown index 2a3858c5e8a..06a6b78b939 100644 --- a/source/_components/heatmiser.markdown +++ b/source/_components/heatmiser.markdown @@ -11,6 +11,8 @@ logo: heatmiser.png ha_category: Climate ha_release: "0.10" ha_iot_class: Local Polling +redirect_from: + - /components/climate.heatmiser/ --- The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/thermostats) thermostats from Heatmiser. The module itself is currently setup to work over a RS232 -> RS485 converter, therefore it connects over IP. diff --git a/source/_components/hikvision.markdown b/source/_components/hikvision.markdown index 3ea13824a6f..60a80a7c340 100644 --- a/source/_components/hikvision.markdown +++ b/source/_components/hikvision.markdown @@ -11,6 +11,8 @@ logo: hikvision.png ha_category: Binary Sensor ha_release: 0.35 ha_iot_class: Local Push +redirect_from: + - /components/binary_sensor.hikvision/ --- The Hikvision Binary Sensor is a platform that parses the event stream of a diff --git a/source/_components/hikvisioncam.markdown b/source/_components/hikvisioncam.markdown index ad1cc040fba..be37e776ee0 100644 --- a/source/_components/hikvisioncam.markdown +++ b/source/_components/hikvisioncam.markdown @@ -10,6 +10,8 @@ footer: true logo: hikvision.png ha_category: Switch ha_release: pre 0.7 +redirect_from: + - /components/switch.hikvisioncam/ --- This `hikvisioncam` switch platform allows you to control your motion detection setting on your [Hikvision](http://www.hikvision.com/) camera. diff --git a/source/_components/hipchat.markdown b/source/_components/hipchat.markdown index 628f0690fb7..966b7555284 100644 --- a/source/_components/hipchat.markdown +++ b/source/_components/hipchat.markdown @@ -10,6 +10,8 @@ footer: true logo: hipchat.png ha_category: Notifications ha_release: 0.52 +redirect_from: + - /components/notify.hipchat/ ---

diff --git a/source/_components/history_stats.markdown b/source/_components/history_stats.markdown index 65a8516aec4..330acfc8704 100644 --- a/source/_components/history_stats.markdown +++ b/source/_components/history_stats.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.39 ha_qa_scale: internal +redirect_from: + - /components/sensor.history_stats/ --- The `history_stats` sensor platform provides quick statistics about another component or platforms, using data from the [history](/components/history/). diff --git a/source/_components/hitron_coda.markdown b/source/_components/hitron_coda.markdown index 70910428cfc..ccd355b059f 100644 --- a/source/_components/hitron_coda.markdown +++ b/source/_components/hitron_coda.markdown @@ -10,6 +10,8 @@ footer: true logo: hitron.png ha_category: Presence Detection ha_release: 0.58 +redirect_from: + - /components/device_tracker.hitron_coda/ --- This component offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) diff --git a/source/_components/honeywell.markdown b/source/_components/honeywell.markdown index 41195faddcc..6ba8a1bdec8 100644 --- a/source/_components/honeywell.markdown +++ b/source/_components/honeywell.markdown @@ -11,6 +11,8 @@ logo: honeywell.png ha_category: Climate ha_release: pre 0.7 ha_iot_class: Cloud Polling +redirect_from: + - /components/climate.honeywell/ --- diff --git a/source/_components/hook.markdown b/source/_components/hook.markdown index d9ababf9ff9..0ef60023221 100644 --- a/source/_components/hook.markdown +++ b/source/_components/hook.markdown @@ -10,6 +10,8 @@ logo: hook.png ha_category: Switch ha_iot_class: Assumed State ha_release: 0.34 +redirect_from: + - /components/switch.hook/ --- The `hook` component allows you to control the [Hook Smart Home Hub](http://www.hooksmarthome.com/) from within Home Assistant. diff --git a/source/_components/horizon.markdown b/source/_components/horizon.markdown index d27fc231f28..6c65aa6d619 100644 --- a/source/_components/horizon.markdown +++ b/source/_components/horizon.markdown @@ -11,6 +11,8 @@ logo: unitymedia.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.72 +redirect_from: + - /components/media_player.horizon/ --- The `horizon` component allows you to control a [Unitymedia](https://www.unitymedia.de) Horizon HD Recorder from Home Assistant. diff --git a/source/_components/hp_ilo.markdown b/source/_components/hp_ilo.markdown index e3a70e36d60..171d37805ac 100644 --- a/source/_components/hp_ilo.markdown +++ b/source/_components/hp_ilo.markdown @@ -11,6 +11,8 @@ logo: hewlett_packard_enterprise.png ha_category: System Monitor ha_release: 0.27 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.hp_ilo/ --- The `hp_ilo` platform allows you to do an API call to the HP ILO (Integrated Lights-Out) sensor of your server, and use this data in Home Assistant sensors. diff --git a/source/_components/html5.markdown b/source/_components/html5.markdown index d741c065209..7d7adef0fba 100644 --- a/source/_components/html5.markdown +++ b/source/_components/html5.markdown @@ -10,6 +10,8 @@ footer: true logo: html5.png ha_category: Notifications ha_release: 0.27 +redirect_from: + - /components/notify.html5/ --- The `html5` notification platform enables you to receive push notifications to Chrome or Firefox, no matter where you are in the world. `html5` also supports Chrome and Firefox on Android, which enables native-app-like integrations without actually needing a native app. diff --git a/source/_components/htu21d.markdown b/source/_components/htu21d.markdown index ccae7d89875..48b1f91ff78 100644 --- a/source/_components/htu21d.markdown +++ b/source/_components/htu21d.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.48 ha_iot_class: Local Push +redirect_from: + - /components/sensor.htu21d/ --- The `htu21d` sensor platform allows you to read the temperature and humidity from a [HTU21D sensor](http://www.datasheetspdf.com/PDF/HTU21D/779951/1) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). diff --git a/source/_components/huawei_router.markdown b/source/_components/huawei_router.markdown index 5fa66cdd696..fad31c43f05 100644 --- a/source/_components/huawei_router.markdown +++ b/source/_components/huawei_router.markdown @@ -10,6 +10,8 @@ footer: true logo: huawei.svg ha_category: Presence Detection ha_release: 0.51 +redirect_from: + - /components/device_tracker.huawei_router/ --- The `huawei` device tracker platform offers presence detection by looking at connected devices to a [Huawei router](http://m.huawei.com/enmobile/enterprise/products/network/access/pon-one/hw-371813.htm). diff --git a/source/_components/hunterdouglas_powerview.markdown b/source/_components/hunterdouglas_powerview.markdown index 84674b2a10c..f047bf62c2d 100644 --- a/source/_components/hunterdouglas_powerview.markdown +++ b/source/_components/hunterdouglas_powerview.markdown @@ -10,6 +10,8 @@ footer: true logo: hunter-douglas-powerview.png ha_category: Scene ha_release: 0.15 +redirect_from: + - /components/scene.hunterdouglas_powerview/ --- Implements the [Hunter Douglas PowerView](http://www.hunterdouglas.com/operating-systems/powerview-motorization/support) platform scene control. It queries the PowerView Hub and Home Assistant displays them as scenes. diff --git a/source/_components/hydroquebec.markdown b/source/_components/hydroquebec.markdown index 7ca1a9cc169..62a69560686 100644 --- a/source/_components/hydroquebec.markdown +++ b/source/_components/hydroquebec.markdown @@ -11,6 +11,8 @@ logo: hydroquebec.svg ha_category: Energy ha_release: 0.35 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.hydroquebec/ --- Integrate your [Hydro-Québec](https://www.hydroquebec.com/portail/) consumption profile information into Home Assistant. diff --git a/source/_components/hyperion.markdown b/source/_components/hyperion.markdown index 9f3579cdc2e..6f780836b44 100644 --- a/source/_components/hyperion.markdown +++ b/source/_components/hyperion.markdown @@ -11,6 +11,8 @@ logo: hyperion.png ha_category: Light ha_release: 0.7.6 ha_iot_class: Local Polling +redirect_from: + - /components/light.hyperion/ --- The `hyperion` platform allows you to integrate your [Hyperion](https://hyperion-project.org/wiki) into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms. diff --git a/source/_components/ialarm.markdown b/source/_components/ialarm.markdown index ae3841f08a4..6be1758afcb 100644 --- a/source/_components/ialarm.markdown +++ b/source/_components/ialarm.markdown @@ -10,6 +10,8 @@ footer: true logo: antifurto365-ialarm.png ha_category: Alarm ha_release: "0.60" +redirect_from: + - /components/alarm_control_panel.ialarm/ --- The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems. diff --git a/source/_components/icloud.markdown b/source/_components/icloud.markdown index f59a0bfbe76..f90fa283bd0 100644 --- a/source/_components/icloud.markdown +++ b/source/_components/icloud.markdown @@ -10,6 +10,8 @@ footer: true logo: icloud.png ha_category: Presence Detection ha_release: "0.10" +redirect_from: + - /components/device_tracker.icloud/ --- diff --git a/source/_components/iglo.markdown b/source/_components/iglo.markdown index ae4d9a37b7f..9c5b5bf9ccb 100644 --- a/source/_components/iglo.markdown +++ b/source/_components/iglo.markdown @@ -11,6 +11,8 @@ logo: iglo.png ha_category: Light ha_iot_class: Local Polling ha_release: 0.61 +redirect_from: + - /components/light.iglo/ --- The `iglo` platform allows you to integrate your [iGlo Lights](https://www.youtube.com/watch?v=oHTS9ji_v-s) into Home Assistant. diff --git a/source/_components/imap.markdown b/source/_components/imap.markdown index 3f59b41bc83..bcc364e3fd8 100644 --- a/source/_components/imap.markdown +++ b/source/_components/imap.markdown @@ -11,6 +11,8 @@ logo: smtp.png ha_category: Mailbox ha_release: 0.25 ha_iot_class: Cloud Push +redirect_from: + - /components/sensor.imap/ --- The `imap` sensor platform is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the amount of unread emails. diff --git a/source/_components/imap_email_content.markdown b/source/_components/imap_email_content.markdown index 7b9027b55ee..39a1ee111c1 100644 --- a/source/_components/imap_email_content.markdown +++ b/source/_components/imap_email_content.markdown @@ -11,6 +11,8 @@ logo: smtp.png ha_category: Mailbox ha_iot_class: Cloud Push ha_release: 0.25 +redirect_from: + - /components/sensor.imap_email_content/ --- The `imap_email_content` sensor platform will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email. diff --git a/source/_components/integration.markdown b/source/_components/integration.markdown index 805d36ba86f..990e7b1467e 100644 --- a/source/_components/integration.markdown +++ b/source/_components/integration.markdown @@ -14,6 +14,8 @@ ha_release: 0.87 ha_iot_class: Local Push logo: integral.png ha_qa_scale: internal +redirect_from: + - /components/sensor.integration/ --- The `integration` platform provides the [Riemann sum](https://en.wikipedia.org/wiki/Riemann_sum) of the values provided by a source sensor. The Riemann sum is an approximation of an **integral** by a finite sum. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. diff --git a/source/_components/irish_rail_transport.markdown b/source/_components/irish_rail_transport.markdown index 4893fee9792..1a95369e73d 100644 --- a/source/_components/irish_rail_transport.markdown +++ b/source/_components/irish_rail_transport.markdown @@ -11,6 +11,8 @@ logo: irishrail.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.57 +redirect_from: + - /components/sensor.irish_rail_transport/ --- The `irish_rail_transport` sensor will give you the time until the next two departures (within 90 minutes) from an Irish Rail station using the RTPI information. diff --git a/source/_components/islamic_prayer_times.markdown b/source/_components/islamic_prayer_times.markdown index de3b69a1fba..3d9dc474c85 100644 --- a/source/_components/islamic_prayer_times.markdown +++ b/source/_components/islamic_prayer_times.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Sensor ha_iot_class: Cloud Polling ha_release: 0.85 +redirect_from: + - /components/sensor.islamic_prayer_times/ --- The Islamic Prayer Times (`islamic_prayer_times`) sensor platform displays the various prayer times for Muslims as sensors. diff --git a/source/_components/iss.markdown b/source/_components/iss.markdown index e87fbccf8ba..c47ab913ebb 100644 --- a/source/_components/iss.markdown +++ b/source/_components/iss.markdown @@ -11,6 +11,8 @@ logo: nasa.png ha_category: Binary Sensor ha_release: 0.36 redirect_from: /components/sensor.iss/ +redirect_from: + - /components/binary_sensor.iss/ --- The `iss` platform uses the diff --git a/source/_components/itach.markdown b/source/_components/itach.markdown index f9fbba040eb..2b3dc247ba2 100644 --- a/source/_components/itach.markdown +++ b/source/_components/itach.markdown @@ -11,6 +11,8 @@ logo: globalcache.png ha_category: Remote ha_iot_class: Assumed State ha_release: 0.39 +redirect_from: + - /components/remote.itach/ --- The `itach` remote platform allows you to control IR devices with a [Global Caché iTach Device](https://www.globalcache.com/products/itach/ip2irspecs) and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page. diff --git a/source/_components/itunes.markdown b/source/_components/itunes.markdown index 4fe90b56263..bdcff155e51 100644 --- a/source/_components/itunes.markdown +++ b/source/_components/itunes.markdown @@ -11,6 +11,8 @@ logo: itunes.png ha_category: Media Player ha_release: 0.7.3 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.itunes/ --- diff --git a/source/_components/jewish_calendar.markdown b/source/_components/jewish_calendar.markdown index 6b9c9560e40..a141896c500 100644 --- a/source/_components/jewish_calendar.markdown +++ b/source/_components/jewish_calendar.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Calendar ha_iot_class: Local Polling ha_release: 0.79 +redirect_from: + - /components/sensor.jewish_calendar/ --- The Jewish Calendar (`jewish_calendar`) sensor platform displays a variety of information related to the Jewish Calendar as a variety of sensors. diff --git a/source/_components/kankun.markdown b/source/_components/kankun.markdown index d9192cd6b12..7063413bb36 100644 --- a/source/_components/kankun.markdown +++ b/source/_components/kankun.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Switch ha_release: 0.36 ha_iot_class: Local Polling +redirect_from: + - /components/switch.kankun/ --- The `kankun` switch platform allows you to toggle customized Kankun SP3 Wifi switches. Switches are diff --git a/source/_components/keenetic_ndms2.markdown b/source/_components/keenetic_ndms2.markdown index 01e8b8b96bb..c419e278695 100644 --- a/source/_components/keenetic_ndms2.markdown +++ b/source/_components/keenetic_ndms2.markdown @@ -10,6 +10,8 @@ footer: true logo: keenetic.png ha_category: Presence Detection ha_release: 0.54 +redirect_from: + - /components/device_tracker.keenetic_ndms2/ --- This component offers presence detection by examining devices connected to a [Keenetic](https://keenetic.net/) diff --git a/source/_components/kiwi.markdown b/source/_components/kiwi.markdown index c033fada8fc..4f3288db1d3 100644 --- a/source/_components/kiwi.markdown +++ b/source/_components/kiwi.markdown @@ -11,6 +11,8 @@ logo: kiwi.png ha_category: Lock ha_release: 0.72 ha_iot_class: Cloud Polling +redirect_from: + - /components/lock.kiwi/ --- The `KIWI` platform allows you to open your KIWI Smart Locks and Smart Entry Devices. diff --git a/source/_components/kodi.markdown b/source/_components/kodi.markdown index fb7dfc879dd..211f66305b6 100644 --- a/source/_components/kodi.markdown +++ b/source/_components/kodi.markdown @@ -10,6 +10,8 @@ footer: true logo: kodi.png ha_category: Notifications ha_release: 0.29 +redirect_from: + - /components/notify.kodi/ --- diff --git a/source/_components/kwb.markdown b/source/_components/kwb.markdown index 42b28ebe094..ddc1bec6874 100644 --- a/source/_components/kwb.markdown +++ b/source/_components/kwb.markdown @@ -11,6 +11,8 @@ logo: kwb.png ha_category: Sensor ha_iot_class: Local Polling ha_release: "0.40" +redirect_from: + - /components/sensor.kwb/ --- The `kwb` component integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller () into Home Assistant. diff --git a/source/_components/lacrosse.markdown b/source/_components/lacrosse.markdown index 1f78b902c34..9a276d8a6da 100644 --- a/source/_components/lacrosse.markdown +++ b/source/_components/lacrosse.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: DIY ha_release: 0.58 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.lacrosse/ --- The `lacrosse` sensor platform is using the data provided by a [Jeelink](https://www.digitalsmarties.net/products/jeelink) USB dongle or this [Arduino sketch](https://svn.fhem.de/trac/browser/trunk/fhem/contrib/arduino/36_LaCrosse-LaCrosseITPlusReader.zip). diff --git a/source/_components/lannouncer.markdown b/source/_components/lannouncer.markdown index f21c152455b..fb7742e226f 100644 --- a/source/_components/lannouncer.markdown +++ b/source/_components/lannouncer.markdown @@ -10,6 +10,8 @@ footer: true logo: lannouncer.png ha_category: Notifications ha_release: 0.36 +redirect_from: + - /components/notify.lannouncer/ --- The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](http://www.keybounce.com/lannouncer/). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. diff --git a/source/_components/lastfm.markdown b/source/_components/lastfm.markdown index 2580f632d67..6873ac9a271 100644 --- a/source/_components/lastfm.markdown +++ b/source/_components/lastfm.markdown @@ -11,6 +11,8 @@ logo: lastfm.png ha_category: Social ha_iot_class: Cloud Polling ha_release: "0.20" +redirect_from: + - /components/sensor.lastfm/ --- The `lastfm` sensor platform will allow you to see whenever a user starts scrobbling, their play count, last song played, and top song played on [Last.fm](http://www.last.fm). diff --git a/source/_components/launch_library.markdown b/source/_components/launch_library.markdown index 12b57a796e9..d98c75c2bdd 100644 --- a/source/_components/launch_library.markdown +++ b/source/_components/launch_library.markdown @@ -11,6 +11,8 @@ logo: rocket.png ha_category: Sensor ha_iot_class: Cloud Polling ha_release: 0.83 +redirect_from: + - /components/sensor.launch_library/ --- The `launch_library` sensor will provide you with information about the next planned space launch. diff --git a/source/_components/lg_netcast.markdown b/source/_components/lg_netcast.markdown index 0cdd098bf11..18ec9531ea0 100644 --- a/source/_components/lg_netcast.markdown +++ b/source/_components/lg_netcast.markdown @@ -11,6 +11,8 @@ logo: lg.png ha_category: Media Player ha_iot_class: Local Polling ha_release: "0.20" +redirect_from: + - /components/media_player.lg_netcast/ --- The `lg_netcast` platform allows you to control a LG Smart TV running NetCast 3.0 (LG Smart TV models released in 2012) and NetCast 4.0 (LG Smart TV models released in 2013). For the new LG WebOS TV's use the [webostv](/components/media_player.webostv) platform. diff --git a/source/_components/lg_soundbar.markdown b/source/_components/lg_soundbar.markdown index 9f529c3d0c4..3e33d4cd41e 100644 --- a/source/_components/lg_soundbar.markdown +++ b/source/_components/lg_soundbar.markdown @@ -11,6 +11,8 @@ logo: lg.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.81 +redirect_from: + - /components/media_player.lg_soundbar/ --- The `lg_soundbar` platform allows you to control [LG Soundbars](https://www.lg.com/us/sound-bars) from Home Assistant. diff --git a/source/_components/lifx_cloud.markdown b/source/_components/lifx_cloud.markdown index 219dcb48bee..322d908c645 100644 --- a/source/_components/lifx_cloud.markdown +++ b/source/_components/lifx_cloud.markdown @@ -10,6 +10,8 @@ footer: true logo: lifx.png ha_category: Scene ha_release: 0.43 +redirect_from: + - /components/scene.lifx_cloud/ --- The `lifx_cloud` scene platform allows you to activate the scenes that LIFX smartphone apps store in the LIFX cloud. diff --git a/source/_components/limitlessled.markdown b/source/_components/limitlessled.markdown index a5dab233e85..e5a72bf4402 100644 --- a/source/_components/limitlessled.markdown +++ b/source/_components/limitlessled.markdown @@ -11,6 +11,8 @@ logo: limitlessled_logo.png ha_category: Light ha_iot_class: Assumed State ha_release: pre 0.7 +redirect_from: + - /components/light.limitlessled/ --- `limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, [MiLight](http://www.milight.com/), LEDme, dekolight, or iLight. diff --git a/source/_components/linksys_ap.markdown b/source/_components/linksys_ap.markdown index 1204e61f77a..8ce19827f60 100644 --- a/source/_components/linksys_ap.markdown +++ b/source/_components/linksys_ap.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Presence Detection logo: linksys.png ha_release: 0.37 +redirect_from: + - /components/device_tracker.linksys_ap/ --- The `linksys_ap` platform offers presence detection by looking at connected devices to a Linksys based access point. diff --git a/source/_components/linksys_smart.markdown b/source/_components/linksys_smart.markdown index 601771a86bd..88dd0a10523 100644 --- a/source/_components/linksys_smart.markdown +++ b/source/_components/linksys_smart.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Presence Detection logo: linksys.png ha_release: 0.48 +redirect_from: + - /components/device_tracker.linksys_smart/ --- The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wifi based router. diff --git a/source/_components/linky.markdown b/source/_components/linky.markdown index efcefd1def4..493a8d36621 100644 --- a/source/_components/linky.markdown +++ b/source/_components/linky.markdown @@ -11,6 +11,8 @@ logo: enedis.png ha_release: 0.79 ha_category: Energy ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.linky/ --- The `linky` sensor platform is showing the last day consumption of your home from the [Linky electric meter](https://www.enedis.fr/english). diff --git a/source/_components/linux_battery.markdown b/source/_components/linux_battery.markdown index dcaa5e4409e..1f436800dab 100644 --- a/source/_components/linux_battery.markdown +++ b/source/_components/linux_battery.markdown @@ -11,6 +11,8 @@ logo: linux_battery.png ha_category: System Monitor ha_release: 0.28 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.linux_battery/ --- The `linux_battery` sensor platform is using the information stored in `/sys/class/power_supply/` on your local Linux system to display details about the current state of your battery. diff --git a/source/_components/liveboxplaytv.markdown b/source/_components/liveboxplaytv.markdown index 1f1fd432b9f..2fab9a68b8e 100644 --- a/source/_components/liveboxplaytv.markdown +++ b/source/_components/liveboxplaytv.markdown @@ -11,6 +11,8 @@ logo: orange.png ha_category: Media Player ha_release: 0.38 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.liveboxplaytv/ --- The `liveboxplaytv` platform allows you to control [Orange Livebox Play TV appliances](https://boutique.orange.fr/internet/decodeur-tv-livebox). diff --git a/source/_components/llamalab_automate.markdown b/source/_components/llamalab_automate.markdown index f57aaaae5b3..290eb5a599f 100644 --- a/source/_components/llamalab_automate.markdown +++ b/source/_components/llamalab_automate.markdown @@ -10,6 +10,8 @@ footer: true logo: llamalab_automate.png ha_category: Notifications ha_release: 0.27 +redirect_from: + - /components/notify.llamalab_automate/ --- The `llamalab_automate` platform uses Googles Cloud Messaging Services to push messages from Home Assistant to your Android device running the LlamaLab [Automate](https://llamalab.com/automate/) app. This can serve as an alternative to Tasker + AutoRemote. diff --git a/source/_components/local_file.markdown b/source/_components/local_file.markdown index 992394403ad..7a59c9acdd2 100644 --- a/source/_components/local_file.markdown +++ b/source/_components/local_file.markdown @@ -11,6 +11,8 @@ logo: file.png ha_category: Camera ha_iot_class: Local Polling ha_release: 0.22 +redirect_from: + - /components/camera.local_file/ --- The `local_file` camera platform allows you to integrate an image file from disk into Home Assistant as a camera. If the image is updated on the file system the image displayed in Home Assistant will also be updated. The service `local_file_update_file_path` can be used to update the image using an automation. diff --git a/source/_components/lockitron.markdown b/source/_components/lockitron.markdown index f3bf0061f8c..92f30537e5c 100644 --- a/source/_components/lockitron.markdown +++ b/source/_components/lockitron.markdown @@ -11,6 +11,8 @@ logo: lockitron.png ha_category: Lock ha_iot_class: Cloud Polling ha_release: 0.42 +redirect_from: + - /components/lock.lockitron/ --- The `lockitron` platform allows you to control your [Lockitron](https://lockitron.com/) lock from within Home Assistant. diff --git a/source/_components/london_air.markdown b/source/_components/london_air.markdown index 7b8e23f83da..800caa80ef3 100644 --- a/source/_components/london_air.markdown +++ b/source/_components/london_air.markdown @@ -11,6 +11,8 @@ logo: waqi.png ha_category: Health ha_iot_class: Cloud Polling ha_release: 0.52 +redirect_from: + - /components/sensor.london_air/ --- The `london_air` component [queries](http://api.erg.kcl.ac.uk/AirQuality/Hourly/MonitoringIndex/GroupName=London/Json) the London air quality [data feed](https://www.londonair.org.uk/LondonAir/API/) provided by Kings College London. A single sensor will be added for each `location` ([local authority district or borough](https://en.wikipedia.org/wiki/List_of_London_boroughs)) specified in the configuration file. The state of each sensor is the overall air quality in that borough. Note that only 28 of the 32 boroughs have data available. diff --git a/source/_components/london_underground.markdown b/source/_components/london_underground.markdown index 53f1faee979..ca0c732ff6c 100644 --- a/source/_components/london_underground.markdown +++ b/source/_components/london_underground.markdown @@ -11,6 +11,8 @@ logo: london_underground.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.49 +redirect_from: + - /components/sensor.london_underground/ --- The `london_underground` sensor will display the status of London underground lines, as well as the Overground, DLR and Tfl rail. diff --git a/source/_components/loopenergy.markdown b/source/_components/loopenergy.markdown index ff3ee1b0560..eb5162e03fa 100644 --- a/source/_components/loopenergy.markdown +++ b/source/_components/loopenergy.markdown @@ -12,6 +12,8 @@ ha_category: Energy ha_release: 0.17 ha_iot_class: Cloud Push redirect_from: /components/sensor.loop_energy/ +redirect_from: + - /components/sensor.loopenergy/ --- Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. To use this sensor you need the client serial number and secret keys for your devices. diff --git a/source/_components/luci.markdown b/source/_components/luci.markdown index c159afeb875..b9d44f81502 100644 --- a/source/_components/luci.markdown +++ b/source/_components/luci.markdown @@ -10,6 +10,8 @@ footer: true logo: openwrt.png ha_category: Presence Detection ha_release: pre 0.7 +redirect_from: + - /components/device_tracker.luci/ --- _This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/components/device_tracker.openwrt/)._ diff --git a/source/_components/lw12wifi.markdown b/source/_components/lw12wifi.markdown index cb9f588c0eb..9bd61883ba2 100644 --- a/source/_components/lw12wifi.markdown +++ b/source/_components/lw12wifi.markdown @@ -11,6 +11,8 @@ ha_category: Light ha_iot_class: Local Polling logo: lagute.png ha_release: 0.71 +redirect_from: + - /components/light.lw12wifi/ --- The `lw12wifi` light platform supports Lagute LW-12 Wifi LED controller. diff --git a/source/_components/lyft.markdown b/source/_components/lyft.markdown index 1236dcbd560..c7e5ab2d6bb 100644 --- a/source/_components/lyft.markdown +++ b/source/_components/lyft.markdown @@ -11,6 +11,8 @@ logo: lyft.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.41 +redirect_from: + - /components/sensor.lyft/ --- The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/). diff --git a/source/_components/magicseaweed.markdown b/source/_components/magicseaweed.markdown index 7b34f8687de..9f8aea8d0f9 100644 --- a/source/_components/magicseaweed.markdown +++ b/source/_components/magicseaweed.markdown @@ -11,6 +11,8 @@ logo: magicseaweed.png ha_category: Sensor ha_release: 0.75 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.magicseaweed/ --- The `magicseaweed` platform uses the [Magicseaweed Forecast API](https://magicseaweed.com/developer/forecast-api) as a source for surf forecasting data for the surf spots of your choice. diff --git a/source/_components/manual.markdown b/source/_components/manual.markdown index d6dba870785..e15bb465de5 100644 --- a/source/_components/manual.markdown +++ b/source/_components/manual.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Alarm ha_release: 0.7.6 ha_qa_scale: internal +redirect_from: + - /components/alarm_control_panel.manual/ --- The `manual` alarm control panel platform enables you to set manual alarms in Home Assistant. diff --git a/source/_components/manual_mqtt.markdown b/source/_components/manual_mqtt.markdown index ca6b592aa67..a3de0f646a8 100644 --- a/source/_components/manual_mqtt.markdown +++ b/source/_components/manual_mqtt.markdown @@ -10,6 +10,8 @@ footer: true logo: home-assistant.png ha_category: Alarm ha_release: "0.50" +redirect_from: + - /components/alarm_control_panel.manual_mqtt/ --- The `mqtt` platform extends the [manual alarm](/components/alarm_control_panel.manual/) by adding support for MQTT control of the alarm by a remote device. It can be used to create external keypads which simply change the state of the manual alarm in Home Assistant. diff --git a/source/_components/marytts.markdown b/source/_components/marytts.markdown index 7edeba02469..190951d2a4d 100644 --- a/source/_components/marytts.markdown +++ b/source/_components/marytts.markdown @@ -10,6 +10,8 @@ footer: true logo: marytts.png ha_category: Text-to-speech ha_release: 0.43 +redirect_from: + - /components/tts.marytts/ --- The `marytts` text-to-speech platform uses [MaryTTS](http://mary.dfki.de/) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_components/mastodon.markdown b/source/_components/mastodon.markdown index f8ec261d25b..286afcbd07e 100644 --- a/source/_components/mastodon.markdown +++ b/source/_components/mastodon.markdown @@ -10,6 +10,8 @@ footer: true logo: mastodon.png ha_category: Notifications ha_release: 0.67 +redirect_from: + - /components/notify.mastodon/ --- The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to delivery notifications from Home Assistant. diff --git a/source/_components/mediaroom.markdown b/source/_components/mediaroom.markdown index 6586ca70d71..84c22310e60 100644 --- a/source/_components/mediaroom.markdown +++ b/source/_components/mediaroom.markdown @@ -11,6 +11,8 @@ logo: mediaroom.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.63 +redirect_from: + - /components/media_player.mediaroom/ --- The `mediaroom` component allows you to control a [Mediaroom](https://en.wikipedia.org/wiki/Ericsson_Mediaroom) Set-Top Box (STB) from Home Assistant. diff --git a/source/_components/meraki.markdown b/source/_components/meraki.markdown index cbe481d39ee..0d5f0da505a 100644 --- a/source/_components/meraki.markdown +++ b/source/_components/meraki.markdown @@ -10,6 +10,8 @@ footer: true logo: meraki.png ha_category: Presence Detection ha_release: "0.60" +redirect_from: + - /components/device_tracker.meraki/ --- Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. diff --git a/source/_components/message_bird.markdown b/source/_components/message_bird.markdown index 255e8b2d272..c208c8ee3cb 100644 --- a/source/_components/message_bird.markdown +++ b/source/_components/message_bird.markdown @@ -10,6 +10,8 @@ footer: true logo: message_bird.png ha_category: Notifications ha_release: 0.16 +redirect_from: + - /components/notify.message_bird/ --- The `MessageBird` notification platform sends notifications as SMS messages using [MessageBird](https://www.messagebird.com/) to your mobile phone. diff --git a/source/_components/met.markdown b/source/_components/met.markdown index 5b789525569..a3f90eb9e8a 100644 --- a/source/_components/met.markdown +++ b/source/_components/met.markdown @@ -11,6 +11,8 @@ logo: metno.png ha_category: Weather ha_release: 0.79 ha_iot_class: Cloud Polling +redirect_from: + - /components/weather.met/ --- The `met` platform uses the [Met.no](https://met.no/) web service as a source for meteorological data for your location. The weather forecast is delivered by the Norwegian Meteorological Institute and the NRK. diff --git a/source/_components/metoffice.markdown b/source/_components/metoffice.markdown index c255af78418..95fb7c50049 100644 --- a/source/_components/metoffice.markdown +++ b/source/_components/metoffice.markdown @@ -11,6 +11,8 @@ logo: metoffice.jpg ha_category: Weather ha_release: 0.42 ha_iot_class: Cloud Polling +redirect_from: + - /components/weather.metoffice/ --- The `metoffice` weather platform uses the Met Office's [DataPoint API](http://www.metoffice.gov.uk/datapoint) for weather data. diff --git a/source/_components/mfi.markdown b/source/_components/mfi.markdown index 83614f77826..d0ab347786e 100644 --- a/source/_components/mfi.markdown +++ b/source/_components/mfi.markdown @@ -11,6 +11,8 @@ logo: ubiquiti.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.13 +redirect_from: + - /components/switch.mfi/ --- The `mfi` switch platform to allow you to control [mFi Controllable Power Outlets](https://www.ubnt.com/mfi/mpower/). diff --git a/source/_components/mhz19.markdown b/source/_components/mhz19.markdown index ec41066177a..68d18bea3f3 100644 --- a/source/_components/mhz19.markdown +++ b/source/_components/mhz19.markdown @@ -11,6 +11,8 @@ logo: mhz19_logo.png ha_category: DIY ha_release: 0.27 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.mhz19/ --- The MH-Z19 is a small non-dispersive infrared sensor that can measure CO2 level. High CO2 levels can lead to drowsiness, poor concentration, loss of attention or increased heart rate. The CO2 level outside is around 400ppm, but inside levels can reach between 1000 and 5000 ppm. High CO2 levels indicate that you should increase ventilation. diff --git a/source/_components/microsoft.markdown b/source/_components/microsoft.markdown index 1c910d62ccf..85ff5e4b220 100644 --- a/source/_components/microsoft.markdown +++ b/source/_components/microsoft.markdown @@ -10,6 +10,8 @@ footer: true logo: microsoft.png ha_category: Text-to-speech ha_release: 0.57 +redirect_from: + - /components/tts.microsoft/ --- The `microsoft` text-to-speech platform uses [Microsoft Text-to-Speech engine](https://docs.microsoft.com/en-us/azure/cognitive-services/speech/home) to read a text with natural sounding voices. This component uses an API that is part of the Cognitive Services offering and is known as the Bing Speech API. diff --git a/source/_components/microsoft_face_detect.markdown b/source/_components/microsoft_face_detect.markdown index 4de1df0e77d..7aa5fa5e79f 100644 --- a/source/_components/microsoft_face_detect.markdown +++ b/source/_components/microsoft_face_detect.markdown @@ -10,6 +10,8 @@ footer: true logo: microsoft.png ha_category: Image Processing ha_release: 0.38 +redirect_from: + - /components/image_processing.microsoft_face_detect/ --- The `microsoft_face_detect` image processing platform allows you to use the diff --git a/source/_components/microsoft_face_identify.markdown b/source/_components/microsoft_face_identify.markdown index 557476d64c8..cf148a10447 100644 --- a/source/_components/microsoft_face_identify.markdown +++ b/source/_components/microsoft_face_identify.markdown @@ -10,6 +10,8 @@ footer: true logo: microsoft.png ha_category: Image Processing ha_release: 0.37 +redirect_from: + - /components/image_processing.microsoft_face_identify/ --- The `microsoft_face_identify` image processing platform lets you use diff --git a/source/_components/miflora.markdown b/source/_components/miflora.markdown index 07bb5191c78..1f546b09233 100644 --- a/source/_components/miflora.markdown +++ b/source/_components/miflora.markdown @@ -11,6 +11,8 @@ logo: miflora.png ha_category: Environment ha_release: 0.29 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.miflora/ --- The `miflora` sensor platform allows one to monitor plant soil and air conditions. The [Mi Flora plant sensor](https://www.huahuacaocao.com/product) is a small Bluetooth Low Energy device that monitors the moisture and conductivity of the soil as well as ambient light and temperature. Since only one BLE device can be polled at a time, the library implements locking to prevent polling more than one device at a time. diff --git a/source/_components/mikrotik.markdown b/source/_components/mikrotik.markdown index d39f653472b..3f847c5eced 100644 --- a/source/_components/mikrotik.markdown +++ b/source/_components/mikrotik.markdown @@ -10,6 +10,8 @@ footer: true logo: mikrotik.png ha_category: Presence Detection ha_release: 0.44 +redirect_from: + - /components/device_tracker.mikrotik/ --- The `mikrotik` platform offers presence detection by looking at connected devices to a [MikroTik RouterOS](http://mikrotik.com) based router. diff --git a/source/_components/mill.markdown b/source/_components/mill.markdown index 77a3ea41a93..3a1f8c76431 100644 --- a/source/_components/mill.markdown +++ b/source/_components/mill.markdown @@ -11,6 +11,8 @@ logo: mill.png ha_category: Climate ha_release: 0.81 ha_iot_class: Cloud Polling +redirect_from: + - /components/climate.mill/ --- Integrates Mill heater into Home Assistant. diff --git a/source/_components/min_max.markdown b/source/_components/min_max.markdown index 7498749fca0..5ea75b7473c 100644 --- a/source/_components/min_max.markdown +++ b/source/_components/min_max.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.31 ha_qa_scale: internal +redirect_from: + - /components/sensor.min_max/ --- The `min_max` sensor platform consumes the state from other sensors to determine the minimum, maximum, latest (last) and the mean of the collected states. The sensor will always show you the lowest/highest/latest value which was received from all monitored sensors. If you have spikes in your values, it's recommended to filter/equalize your values with a [statistics sensor](/components/sensor.statistics/) first. diff --git a/source/_components/mitemp_bt.markdown b/source/_components/mitemp_bt.markdown index 897b76ac625..a70b76c3da6 100644 --- a/source/_components/mitemp_bt.markdown +++ b/source/_components/mitemp_bt.markdown @@ -11,6 +11,8 @@ logo: xiaomi.png ha_category: DIY ha_release: 0.69 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.mitemp_bt/ --- The `mitemp_bt` sensor platform allows one to monitor room temperature and humidity. The [Xiaomi Mijia BLE Temperature and Humidity sensor with LCD](https://www.amazon.com/Temperature-Humidity-Xiaomi-Bluetooth-Screen-Remote/dp/B079L6N6PC) is a small Bluetooth Low Energy device that monitors the room temperature and humidity. As only a single BLE device can be polled at the same time, the library employs locking to make sure this is the case. diff --git a/source/_components/mjpeg.markdown b/source/_components/mjpeg.markdown index 90800d75823..f8fdad9f88b 100644 --- a/source/_components/mjpeg.markdown +++ b/source/_components/mjpeg.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Camera ha_release: pre 0.7 ha_iot_class: Configurable +redirect_from: + - /components/camera.mjpeg/ --- The `mjpeg` camera platform allows you to integrate IP cameras which are capable diff --git a/source/_components/modem_callerid.markdown b/source/_components/modem_callerid.markdown index 9e90a07343d..91ce1fbb8e7 100644 --- a/source/_components/modem_callerid.markdown +++ b/source/_components/modem_callerid.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Sensor ha_release: "0.40" ha_iot_class: Local Polling +redirect_from: + - /components/sensor.modem_callerid/ --- The `modem_callerid` sensor platform uses an available modem for collecting caller ID information. It requires a Hayes AT compatible modem that supports caller ID detection (via AT+VCID=1). diff --git a/source/_components/mold_indicator.markdown b/source/_components/mold_indicator.markdown index a60ce1cf238..d11ed34710b 100644 --- a/source/_components/mold_indicator.markdown +++ b/source/_components/mold_indicator.markdown @@ -12,6 +12,8 @@ ha_category: Environment ha_release: "0.20" ha_iot_class: Local Polling ha_qa_scale: internal +redirect_from: + - /components/sensor.mold_indicator/ --- The Mold Indicator sensor component consumes information of two temperature sensors and a humidity sensor to give an indication for possible mold growth in your home. In case of bad ventilation and insulation, the indoor humidity may lead to condensation on cold surfaces as the windows or even walls. Condensation or a high relative humidity near those cold surfaces leads to a higher risk for mold growth. This sensor component estimates the temperature at a pre-calibrated critical point in the room (the coldest surface) and calculates the relative humidity of the air at that point. If the sensor value rises above approximately 70 percent, mold growth might occur and the room should be ventilated. At 100%, the air humidity condensates at the critical point. diff --git a/source/_components/monoprice.markdown b/source/_components/monoprice.markdown index 48a6a58d846..408eb69a48e 100644 --- a/source/_components/monoprice.markdown +++ b/source/_components/monoprice.markdown @@ -11,6 +11,8 @@ logo: monoprice.svg ha_category: Media Player ha_release: 0.56 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.monoprice/ --- The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection. diff --git a/source/_components/moon.markdown b/source/_components/moon.markdown index 91bdc8af7af..1c143d9e5f2 100644 --- a/source/_components/moon.markdown +++ b/source/_components/moon.markdown @@ -12,6 +12,8 @@ ha_category: Environment ha_iot_class: Local Polling ha_release: 0.38 ha_qa_scale: internal +redirect_from: + - /components/sensor.moon/ --- The `moon` sensor platform is tracking the moon phases. diff --git a/source/_components/mopar.markdown b/source/_components/mopar.markdown index e3ef5772f8c..fc7306b5c70 100644 --- a/source/_components/mopar.markdown +++ b/source/_components/mopar.markdown @@ -11,6 +11,8 @@ logo: mopar.png ha_category: Car ha_release: 0.53 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.mopar/ --- The `mopar` sensor provides the following for owners of FCA vehicles with a uConnect subscription: diff --git a/source/_components/mpchc.markdown b/source/_components/mpchc.markdown index e43017e2e10..32849e0f8c9 100644 --- a/source/_components/mpchc.markdown +++ b/source/_components/mpchc.markdown @@ -11,6 +11,8 @@ logo: mpchc.png ha_category: Media Player ha_release: 0.25 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.mpchc/ --- diff --git a/source/_components/mpd.markdown b/source/_components/mpd.markdown index 819ffaa38c0..6c95687b98a 100644 --- a/source/_components/mpd.markdown +++ b/source/_components/mpd.markdown @@ -11,6 +11,8 @@ logo: mpd.png ha_category: Media Player ha_release: pre 0.7 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.mpd/ --- diff --git a/source/_components/mqtt_json.markdown b/source/_components/mqtt_json.markdown index c896651e2f3..0a0413c3dfc 100644 --- a/source/_components/mqtt_json.markdown +++ b/source/_components/mqtt_json.markdown @@ -11,6 +11,8 @@ logo: mqtt.png ha_category: Presence Detection ha_iot_class: Configurable ha_release: 0.44 +redirect_from: + - /components/device_tracker.mqtt_json/ --- The `mqtt_json` device tracker platform allows you to detect presence by monitoring an MQTT topic for new locations. To use this platform, you specify a unique topic for each device. diff --git a/source/_components/mqtt_room.markdown b/source/_components/mqtt_room.markdown index 5ec6170fb2a..fe18eb216b4 100644 --- a/source/_components/mqtt_room.markdown +++ b/source/_components/mqtt_room.markdown @@ -11,6 +11,8 @@ logo: mqtt.png ha_category: Presence Detection ha_release: 0.27 ha_iot_class: Configurable +redirect_from: + - /components/sensor.mqtt_room/ --- The `mqtt_room` sensor platform allows you to detect the indoor location of devices using MQTT clients. diff --git a/source/_components/mvglive.markdown b/source/_components/mvglive.markdown index 3ff7bf6d292..433b45ddaac 100644 --- a/source/_components/mvglive.markdown +++ b/source/_components/mvglive.markdown @@ -11,6 +11,8 @@ logo: mvg.png ha_category: Transport ha_release: 0.42 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.mvglive/ --- The `mvglive` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Munich public transport network. Additional details such as the line number and destination are present in the attributes. diff --git a/source/_components/myq.markdown b/source/_components/myq.markdown index 1a759752101..e8aed2020cf 100644 --- a/source/_components/myq.markdown +++ b/source/_components/myq.markdown @@ -11,6 +11,8 @@ logo: myq.png ha_category: Cover ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/cover.myq/ --- The `myq` cover platform lets you control MyQ-Enabled garage doors through Home Assistant. Device names in Home Assistant are generated based on the names defined in your MyQ Device mobile app. diff --git a/source/_components/mystrom.markdown b/source/_components/mystrom.markdown index a3ad9e8c333..154b83c55a1 100644 --- a/source/_components/mystrom.markdown +++ b/source/_components/mystrom.markdown @@ -11,6 +11,8 @@ logo: mystrom.png ha_category: Light ha_release: 0.43 ha_iot_class: Local Polling +redirect_from: + - /components/light.mystrom/ --- diff --git a/source/_components/nad.markdown b/source/_components/nad.markdown index 04cd8ef3696..8e838d591c9 100644 --- a/source/_components/nad.markdown +++ b/source/_components/nad.markdown @@ -11,6 +11,8 @@ logo: nad.png ha_category: Media Player ha_release: 0.36 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.nad/ --- The `nad` platform allows you to control a [NAD receiver](http://nadelectronics.com) through RS232, TCP and Telnet from Home Assistant. diff --git a/source/_components/nanoleaf.markdown b/source/_components/nanoleaf.markdown index 88902b8e48d..a3c614a99fc 100644 --- a/source/_components/nanoleaf.markdown +++ b/source/_components/nanoleaf.markdown @@ -11,6 +11,8 @@ logo: nanoleaf_light.png ha_category: Light ha_iot_class: Local Polling ha_release: 0.67 +redirect_from: + - /components/light.nanoleaf/ --- ### {% linkable_title Configuration Sample %} diff --git a/source/_components/nederlandse_spoorwegen.markdown b/source/_components/nederlandse_spoorwegen.markdown index 2bd9a5f343c..b0030317a09 100644 --- a/source/_components/nederlandse_spoorwegen.markdown +++ b/source/_components/nederlandse_spoorwegen.markdown @@ -11,6 +11,8 @@ logo: nederlandse_spoorwegen.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.57 +redirect_from: + - /components/sensor.nederlandse_spoorwegen/ --- This sensor will provide you with time table information of the [Nederlandse Spoorwegen](https://www.ns.nl/) train service in the Netherlands. diff --git a/source/_components/nello.markdown b/source/_components/nello.markdown index 2236418066e..d8dedd33761 100644 --- a/source/_components/nello.markdown +++ b/source/_components/nello.markdown @@ -12,6 +12,8 @@ ha_category: Lock ha_release: 0.52 ha_iot_class: Cloud Polling +redirect_from: + - /components/lock.nello/ --- The `nello` platform allows you to control [Nello](https://www.nello.io) intercoms. @@ -52,6 +54,8 @@ password: Every time someone rings the bell, a `nello_bell_ring` event will be fired. Field | Description +redirect_from: + - /components/lock.nello/ ----- | ----------- `address` | Postal address of the lock. `date` | Date when the event occurred. diff --git a/source/_components/netatmo_public.markdown b/source/_components/netatmo_public.markdown index 26d5d64a636..e269286e530 100644 --- a/source/_components/netatmo_public.markdown +++ b/source/_components/netatmo_public.markdown @@ -11,6 +11,8 @@ logo: netatmo.png ha_category: Environment ha_iot_class: Cloud Polling ha_release: 0.77 +redirect_from: + - /components/sensor.netatmo_public/ --- The `netatmo_public` sensor allows you to expose data from [Netatmo](https://weathermap.netatmo.com/) to Home Assistant, even if you don't have a Netatmo device yourself. Currently the following conditions are supported: diff --git a/source/_components/netdata.markdown b/source/_components/netdata.markdown index 192a6fa9d6d..7e5b7d31bf6 100644 --- a/source/_components/netdata.markdown +++ b/source/_components/netdata.markdown @@ -11,6 +11,8 @@ logo: netdata.png ha_category: System Monitor ha_release: 0.35 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.netdata/ --- The `netdata` sensor platform allows you to display information collected by [Netdata](http://my-netdata.io/). diff --git a/source/_components/netgear.markdown b/source/_components/netgear.markdown index ae502478569..b2ea11bc4c9 100644 --- a/source/_components/netgear.markdown +++ b/source/_components/netgear.markdown @@ -11,6 +11,8 @@ logo: netgear.png ha_category: Presence Detection ha_iot_class: Local Polling ha_release: pre 0.7 +redirect_from: + - /components/device_tracker.netgear/ --- This platform allows you to detect presence by looking at connected devices to a [Netgear](http://www.netgear.com/) device. diff --git a/source/_components/netio.markdown b/source/_components/netio.markdown index a66131c5f65..af1a9fe9305 100644 --- a/source/_components/netio.markdown +++ b/source/_components/netio.markdown @@ -11,6 +11,8 @@ logo: netio.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.24 +redirect_from: + - /components/switch.netio/ --- The `netio` switch platform allows you to control your [Netio](http://www.netio-products.com/en/overview/) Netio4, Netio4 All, and Netio 230B. These are smart outlets controllable through Ethernet and/or WiFi that reports consumptions (Netio4all). diff --git a/source/_components/neurio_energy.markdown b/source/_components/neurio_energy.markdown index f6e8d4c9294..00eeb4aed3b 100644 --- a/source/_components/neurio_energy.markdown +++ b/source/_components/neurio_energy.markdown @@ -11,6 +11,8 @@ logo: neurio.png ha_category: Energy ha_iot_class: Cloud Polling ha_release: 0.14 +redirect_from: + - /components/sensor.neurio_energy/ --- Integrate your [Neurio](http://neur.io/) meter information into Home Assistant. To get an API key and secret, login to your [Neurio account](https://my.neur.io/#settings/applications/register) and register an application. Note the Homepage URL and Callback URL are optional. diff --git a/source/_components/nfandroidtv.markdown b/source/_components/nfandroidtv.markdown index 3db2f5fca1c..3bd95cb9af1 100644 --- a/source/_components/nfandroidtv.markdown +++ b/source/_components/nfandroidtv.markdown @@ -10,6 +10,8 @@ footer: true logo: nfandroidtv.png ha_category: Notifications ha_release: 0.32 +redirect_from: + - /components/notify.nfandroidtv/ --- Notification platform for [Notifications for Android TV](https://play.google.com/store/apps/details?id=de.cyberdream.androidtv.notifications.google) and [Notifications for FireTV](https://play.google.com/store/apps/details?id=de.cyberdream.firenotifications.google). You can use this plarform to send notifications to your Android TV device. An overlay with the message content will appear for a configurable amount of seconds and then disapper again. Sending images (e.g., security cam) is supported too. diff --git a/source/_components/niko_home_control.markdown b/source/_components/niko_home_control.markdown index b626cc7b601..93a083d1260 100644 --- a/source/_components/niko_home_control.markdown +++ b/source/_components/niko_home_control.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Light ha_iot_class: Local Polling ha_release: 0.82 +redirect_from: + - /components/light.niko_home_control/ --- The `niko_home_control` platform allows you to integrate your [Niko Home Control](https://www.niko.eu/enus/products/niko-home-control) into Home Assistant. diff --git a/source/_components/nilu.markdown b/source/_components/nilu.markdown index ee81c2fcd0e..d8bf9736804 100644 --- a/source/_components/nilu.markdown +++ b/source/_components/nilu.markdown @@ -11,6 +11,8 @@ logo: nilu_logo.png ha_category: Health ha_iot_class: Cloud Polling ha_release: 0.87 +redirect_from: + - /components/air_quality.nilu/ --- The `nilu` air quality platform shows measurements of current air quality from NILU (Norsk Institutt for luftforskning/Norwegian Institute for Air Research) sensor stations within Norway. Makes data from the open API at [luftkvalitet.info](http://luftkvalitet.info/) and [nilu.no](https://nilu.no/) available in Home Assistant. diff --git a/source/_components/nmap_tracker.markdown b/source/_components/nmap_tracker.markdown index b0b6b8894c8..eac47f5ca07 100644 --- a/source/_components/nmap_tracker.markdown +++ b/source/_components/nmap_tracker.markdown @@ -10,6 +10,8 @@ footer: true logo: nmap.png ha_category: Presence Detection ha_release: 0.7 +redirect_from: + - /components/device_tracker.nmap_tracker/ --- diff --git a/source/_components/nmbs.markdown b/source/_components/nmbs.markdown index 98826d0cc71..b6989a34944 100644 --- a/source/_components/nmbs.markdown +++ b/source/_components/nmbs.markdown @@ -11,6 +11,8 @@ logo: sncb_nmbs.gif ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.85 +redirect_from: + - /components/sensor.nmbs/ --- The `nmbs` platform will create sensors for monitoring travel time and information between 2 stations. diff --git a/source/_components/noaa_tides.markdown b/source/_components/noaa_tides.markdown index aa6e7a6dbf5..0a1cd487b9c 100644 --- a/source/_components/noaa_tides.markdown +++ b/source/_components/noaa_tides.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Environment ha_release: 0.75 logo: noaa.png +redirect_from: + - /components/sensor.noaa_tides/ --- The `noaa_tides` sensor platform uses details from [NOAA Tides and Currents](https://tidesandcurrents.noaa.gov/api/) to provide information about the prediction for the tides for any location in the United States. diff --git a/source/_components/nsw_fuel_station.markdown b/source/_components/nsw_fuel_station.markdown index a62ce317ab7..fe2db48da49 100644 --- a/source/_components/nsw_fuel_station.markdown +++ b/source/_components/nsw_fuel_station.markdown @@ -11,6 +11,8 @@ logo: fuelcheck.png ha_category: Car ha_release: 0.72 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.nsw_fuel_station/ --- The `nsw_fuel_station` sensor platform uses the [NSW Fuel Check App](https://www.fuelcheck.nsw.gov.au/app) data as a source for current fuel price data. diff --git a/source/_components/nsw_rural_fire_service_feed.markdown b/source/_components/nsw_rural_fire_service_feed.markdown index 87b0850e96e..eced9e62ee3 100644 --- a/source/_components/nsw_rural_fire_service_feed.markdown +++ b/source/_components/nsw_rural_fire_service_feed.markdown @@ -11,6 +11,8 @@ logo: nsw-rural-fire-service.png ha_category: Geolocation ha_iot_class: Cloud Polling ha_release: 0.81 +redirect_from: + - /components/geo_location.nsw_rural_fire_service_feed/ --- The `nsw_rural_fire_service_feed` platform lets you integrate a GeoJSON feed provided by the [NSW Rural Fire Service](https://www.rfs.nsw.gov.au/fire-information/fires-near-me) with information about bush fires, grass fires, hazard reductions and more. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_components/nuki.markdown b/source/_components/nuki.markdown index f8b759e33e7..7b127486342 100644 --- a/source/_components/nuki.markdown +++ b/source/_components/nuki.markdown @@ -11,6 +11,8 @@ logo: nuki.png ha_category: Lock ha_release: 0.38 ha_iot_class: Local Polling +redirect_from: + - /components/lock.nuki/ --- The `nuki` platform allows you to control [Nuki Smart Locks](https://nuki.io/en/smart-lock/) via either a [software bridge](https://play.google.com/store/apps/details?id=io.nuki.bridge) or a [physical bridge](https://nuki.io/en/bridge/). diff --git a/source/_components/nut.markdown b/source/_components/nut.markdown index e7723263f6e..160ef32b825 100644 --- a/source/_components/nut.markdown +++ b/source/_components/nut.markdown @@ -11,6 +11,8 @@ logo: nut.png ha_category: System Monitor ha_iot_class: Local Polling ha_release: 0.34 +redirect_from: + - /components/sensor.nut/ --- The `nut` sensor platform allows you to monitor a UPS (battery backup) by using data from a [NUT](http://networkupstools.org/) (Network UPS Tools) server. diff --git a/source/_components/nx584.markdown b/source/_components/nx584.markdown index 5be5413a5bf..7843e16e0a7 100644 --- a/source/_components/nx584.markdown +++ b/source/_components/nx584.markdown @@ -10,6 +10,8 @@ footer: true logo: networx.png ha_category: Alarm ha_release: 0.13 +redirect_from: + - /components/alarm_control_panel.nx584/ --- The `nx584` platform provides integration with GE, Caddx, Interlogix (and other brands) alarm panels that support the NX584 interface module (or have it built in). Supported panels include NX4/6/8/8E. Actual integration is done through [pynx584](http://github.com/kk7ds/pynx584) which is required for this to work. diff --git a/source/_components/nzbget.markdown b/source/_components/nzbget.markdown index 020c6b95a93..23b8fc09ae7 100644 --- a/source/_components/nzbget.markdown +++ b/source/_components/nzbget.markdown @@ -11,6 +11,8 @@ ha_category: Downloading logo: nzbget.png ha_iot_class: Local Polling ha_release: 0.17 +redirect_from: + - /components/sensor.nzbget/ --- The `nzbget` platform will allow you to monitor your downloads with [NZBGet](http://NZBGet.net) from within Home Assistant and setup automation based on the information. diff --git a/source/_components/oem.markdown b/source/_components/oem.markdown index 86f7d93fd21..0d13d535938 100644 --- a/source/_components/oem.markdown +++ b/source/_components/oem.markdown @@ -11,6 +11,8 @@ logo: oem.png ha_category: Climate ha_release: 0.39 ha_iot_class: Local Polling +redirect_from: + - /components/climate.oem/ --- This platform supports the ESP8266 based "WiFi MQTT Relay / Thermostat" sold by [OpenEnergyMonitor](https://shop.openenergymonitor.com/wifi-mqtt-relay-thermostat/). The underlying [library](http://oemthermostat.readthedocs.io/) only supports this single relay variant of the [original device](https://harizanov.com/2014/12/wifi-iot-3-channel-relay-board-with-mqtt-and-http-api-using-esp8266/). diff --git a/source/_components/ohmconnect.markdown b/source/_components/ohmconnect.markdown index 9faf90363bd..94c9a313b00 100644 --- a/source/_components/ohmconnect.markdown +++ b/source/_components/ohmconnect.markdown @@ -11,6 +11,8 @@ logo: "ohmconnect.png" ha_category: Energy ha_iot_class: Cloud Polling ha_release: 0.26 +redirect_from: + - /components/sensor.ohmconnect/ --- The `ohmconnect` sensor will show you the current [OhmConnect](https://www.ohmconnect.com/) status for the given OhmConnect ID. diff --git a/source/_components/onewire.markdown b/source/_components/onewire.markdown index 4c3ed4dad87..04d726bb308 100644 --- a/source/_components/onewire.markdown +++ b/source/_components/onewire.markdown @@ -11,6 +11,8 @@ logo: onewire.png ha_category: DIY ha_release: 0.12 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.onewire/ --- The `onewire` platform supports sensors which are using the One wire (1-wire) bus for communication. diff --git a/source/_components/onkyo.markdown b/source/_components/onkyo.markdown index 3ae12a7ef57..5f6d4bbaae3 100644 --- a/source/_components/onkyo.markdown +++ b/source/_components/onkyo.markdown @@ -11,6 +11,8 @@ logo: onkyo.png ha_category: Media Player ha_release: 0.17 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.onkyo/ --- diff --git a/source/_components/onvif.markdown b/source/_components/onvif.markdown index 5211427ce2a..68ab64006d4 100644 --- a/source/_components/onvif.markdown +++ b/source/_components/onvif.markdown @@ -10,6 +10,8 @@ footer: true logo: onvif.png ha_category: Camera ha_release: 0.47 +redirect_from: + - /components/camera.onvif/ --- The `onvif` camera platform allows you to use an [ONVIF](https://www.onvif.org/) camera in Home Assistant. This requires the [`ffmpeg` component](/components/ffmpeg/) to be already configured. diff --git a/source/_components/openalpr_cloud.markdown b/source/_components/openalpr_cloud.markdown index 8f2c16bceb2..ad26894a9cf 100644 --- a/source/_components/openalpr_cloud.markdown +++ b/source/_components/openalpr_cloud.markdown @@ -10,6 +10,8 @@ footer: true logo: openalpr.png ha_category: Image Processing ha_release: 0.36 +redirect_from: + - /components/image_processing.openalpr_cloud/ --- [OpenALPR](http://www.openalpr.com/) integration for Home Assistant allows you diff --git a/source/_components/openalpr_local.markdown b/source/_components/openalpr_local.markdown index a9c70364757..d9800cae854 100644 --- a/source/_components/openalpr_local.markdown +++ b/source/_components/openalpr_local.markdown @@ -11,6 +11,8 @@ logo: openalpr.png ha_category: Image Processing ha_release: 0.36 redirect_from: /components/openalpr/ +redirect_from: + - /components/image_processing.openalpr_local/ --- [OpenALPR](http://www.openalpr.com/) integration for Home Assistant allows you diff --git a/source/_components/opencv.markdown b/source/_components/opencv.markdown index feda5b513fc..6f3c804a7fb 100644 --- a/source/_components/opencv.markdown +++ b/source/_components/opencv.markdown @@ -10,6 +10,8 @@ footer: true logo: opencv.png ha_category: Image Processing ha_release: 0.47 +redirect_from: + - /components/image_processing.opencv/ --- [OpenCV](http://www.opencv.org) is an open source computer vision image and video processing library. diff --git a/source/_components/openevse.markdown b/source/_components/openevse.markdown index 5f9c5097f4f..1fd5850c1aa 100644 --- a/source/_components/openevse.markdown +++ b/source/_components/openevse.markdown @@ -11,6 +11,8 @@ logo: openevse.png ha_category: Car ha_release: 0.38 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.openevse/ --- This `openevse` sensor platform pulls data from an [OpenEVSE](https://www.openevse.com/) Charging station equipped with an ESP8266-based wifi connection. diff --git a/source/_components/openexchangerates.markdown b/source/_components/openexchangerates.markdown index 74c8c0ff330..fd594a1e729 100644 --- a/source/_components/openexchangerates.markdown +++ b/source/_components/openexchangerates.markdown @@ -11,6 +11,8 @@ ha_category: Finance logo: openexchangerates.png ha_iot_class: Cloud Polling ha_release: 0.23 +redirect_from: + - /components/sensor.openexchangerates/ --- The `openexchangerates` sensor will show you the current exchange rate from [Open Exchange Rates](https://openexchangerates.org) that provides realtime exchange rates for [170 currencies](https://openexchangerates.org/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. diff --git a/source/_components/opengarage.markdown b/source/_components/opengarage.markdown index 2675766c3fa..41a05057040 100644 --- a/source/_components/opengarage.markdown +++ b/source/_components/opengarage.markdown @@ -10,6 +10,8 @@ footer: true logo: opengarage.png ha_category: DIY ha_release: 0.44 +redirect_from: + - /components/cover.opengarage/ --- The `opengarage` cover platform lets you control the open-source [OpenGarage.io](https://opengarage.io/) device through Home Assistant. diff --git a/source/_components/openhardwaremonitor.markdown b/source/_components/openhardwaremonitor.markdown index 277d08c27a9..1774c46adcc 100644 --- a/source/_components/openhardwaremonitor.markdown +++ b/source/_components/openhardwaremonitor.markdown @@ -11,6 +11,8 @@ logo: openhardwaremonitor.png ha_category: System Monitor ha_release: 0.48 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.openhardwaremonitor/ --- The `openhardwaremonitor` platform uses your [Open Hardware Monitor](http://openhardwaremonitor.org/) installation as a source for sensors that will display system information. diff --git a/source/_components/openhome.markdown b/source/_components/openhome.markdown index d0ac49a654c..ce96a4284c6 100644 --- a/source/_components/openhome.markdown +++ b/source/_components/openhome.markdown @@ -11,6 +11,8 @@ logo: linn.png ha_category: Media Player ha_release: 0.39 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.openhome/ --- diff --git a/source/_components/opensensemap.markdown b/source/_components/opensensemap.markdown index 25a942b3c6b..75fb2240d89 100644 --- a/source/_components/opensensemap.markdown +++ b/source/_components/opensensemap.markdown @@ -12,6 +12,8 @@ ha_category: Health ha_release: 0.85 ha_iot_class: Cloud Polling redirect_from: /components/air_pollutants.opensensemap/ +redirect_from: + - /components/air_quality.opensensemap/ --- The `opensensemap` air quality platform will query the open data API of [openSenseMap.org](https://opensensemap.org/) to monitor air quality sensor station. diff --git a/source/_components/opensky.markdown b/source/_components/opensky.markdown index 2d657e30694..0349c880d1c 100644 --- a/source/_components/opensky.markdown +++ b/source/_components/opensky.markdown @@ -11,6 +11,8 @@ logo: opensky.png ha_category: Transport ha_release: 0.43 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.opensky/ --- The `opensky` sensor allows one to track overhead flights in a given region. It uses crowd-sourced data from the [OpenSky Network](https://opensky-network.org/) public API. It will also fire Home Assistant events when flights enter and exit the defined region. diff --git a/source/_components/openweathermap.markdown b/source/_components/openweathermap.markdown index 6ff677b8d32..c8c1904c929 100644 --- a/source/_components/openweathermap.markdown +++ b/source/_components/openweathermap.markdown @@ -11,6 +11,8 @@ logo: openweathermap.png ha_category: Weather ha_release: 0.32 ha_iot_class: Cloud Polling +redirect_from: + - /components/weather.openweathermap/ --- The `openweathermap` weather platform uses [OpenWeatherMap](http://openweathermap.org/) as a source for current meteorological data for your location. diff --git a/source/_components/openwrt.markdown b/source/_components/openwrt.markdown index f9f720ac730..54369d810d7 100644 --- a/source/_components/openwrt.markdown +++ b/source/_components/openwrt.markdown @@ -10,6 +10,8 @@ footer: true logo: openwrt.png ha_category: Presence Detection ha_release: pre 0.7 +redirect_from: + - /components/device_tracker.openwrt/ --- There are _multiple_ ways of integrating an OpenWRT router for presence detection. A broad distinction can be made between presence detection methods which actively scan for devices (by default every 12 seconds) and those that are notified by some external service on changes. It is essentially a problem of synchronizing states between two remote machines. diff --git a/source/_components/opple.markdown b/source/_components/opple.markdown index 952f28ff36f..6cc0af86629 100644 --- a/source/_components/opple.markdown +++ b/source/_components/opple.markdown @@ -11,6 +11,8 @@ logo: opple.png ha_category: Light ha_release: "0.80" ha_iot_class: Local Polling +redirect_from: + - /components/light.opple/ --- diff --git a/source/_components/orvibo.markdown b/source/_components/orvibo.markdown index 0430047849a..0448625aac2 100644 --- a/source/_components/orvibo.markdown +++ b/source/_components/orvibo.markdown @@ -10,6 +10,8 @@ footer: true logo: orvibo.png ha_category: Switch ha_release: 0.8 +redirect_from: + - /components/switch.orvibo/ --- The `orvibo` switch platform allows you to toggle your Orvibo S20 Wifi Smart Sockets. diff --git a/source/_components/osramlightify.markdown b/source/_components/osramlightify.markdown index ac80e46d08a..43b42368b21 100644 --- a/source/_components/osramlightify.markdown +++ b/source/_components/osramlightify.markdown @@ -10,6 +10,8 @@ footer: true logo: osramlightify.png ha_category: Light ha_release: 0.21 +redirect_from: + - /components/light.osramlightify/ --- The `osramlightify` platform allows you to integrate your [Osram Lightify](http://www.osram.com/osram_com/products/led-technology/lightify/index.jsp) into Home Assistant. diff --git a/source/_components/otp.markdown b/source/_components/otp.markdown index 315e5aa7bfb..e1d32861079 100644 --- a/source/_components/otp.markdown +++ b/source/_components/otp.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.49 ha_qa_scale: internal +redirect_from: + - /components/sensor.otp/ --- The `otp` sensor generates One-Time Passwords according to [RFC6238](https://tools.ietf.org/html/rfc6238) that is compatible with most OTP generators available, including Google Authenticator. You can use this when building custom security solutions and want to use "rolling codes", that change every 30 seconds. diff --git a/source/_components/panasonic_bluray.markdown b/source/_components/panasonic_bluray.markdown index 73a52dd012a..9769793d517 100644 --- a/source/_components/panasonic_bluray.markdown +++ b/source/_components/panasonic_bluray.markdown @@ -11,6 +11,8 @@ logo: panasonic.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.83 +redirect_from: + - /components/media_player.panasonic_bluray/ --- The `panasonic_bluray` platform allows you to control a Panasonic Blu-Ray player. Note that the device must be on the same subnet as Home Assistant; connections from a different subnet will return an error. diff --git a/source/_components/panasonic_viera.markdown b/source/_components/panasonic_viera.markdown index 2a089d6e019..31bb21ca04b 100644 --- a/source/_components/panasonic_viera.markdown +++ b/source/_components/panasonic_viera.markdown @@ -11,6 +11,8 @@ logo: panasonic.png ha_category: Media Player ha_release: 0.17 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.panasonic_viera/ --- The `panasonic_viera` platform allows you to control a Panasonic Viera TV. diff --git a/source/_components/pandora.markdown b/source/_components/pandora.markdown index e0ae0199036..b4e77af9f20 100644 --- a/source/_components/pandora.markdown +++ b/source/_components/pandora.markdown @@ -11,6 +11,8 @@ logo: pandora.png ha_category: Media Player ha_release: 0.22 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.pandora/ --- If you have a Pandora account, you can control it from Home Assistant with this media player. diff --git a/source/_components/pencom.markdown b/source/_components/pencom.markdown index e0ef7f91de5..a7fb39c3150 100644 --- a/source/_components/pencom.markdown +++ b/source/_components/pencom.markdown @@ -11,6 +11,8 @@ logo: pencom.png ha_category: Switch ha_release: 0.85 ha_iot_class: Local Polling +redirect_from: + - /components/switch.pencom/ --- [Pencom Design](http://www.pencomdesign.com/) is a manufacturer of computer-controlled relay, I/O and custom boards for commercial and industrial applications. This interface to [Pencom's Relay Control Boards](https://www.pencomdesign.com/relay-boards/) is designed to work over an ethernet to serial adapter (NPort). Each switch (relay) can be turned on/off, and the state of the relay can be read. diff --git a/source/_components/philips_js.markdown b/source/_components/philips_js.markdown index c821060cb2a..26ff515dfb8 100644 --- a/source/_components/philips_js.markdown +++ b/source/_components/philips_js.markdown @@ -11,6 +11,8 @@ logo: philips.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.34 +redirect_from: + - /components/media_player.philips_js/ --- The `philips_js` platform allows you to control Philips TVs which expose the [jointSPACE](http://jointspace.sourceforge.net/) API. Instructions on how to activate the API and if your model is supported can be found [here](http://jointspace.sourceforge.net/download.html). diff --git a/source/_components/pi_hole.markdown b/source/_components/pi_hole.markdown index 92a6b42823f..e9aad4a5c80 100644 --- a/source/_components/pi_hole.markdown +++ b/source/_components/pi_hole.markdown @@ -11,6 +11,8 @@ ha_category: System Monitor ha_iot_class: Local Polling logo: pi_hole.png ha_release: 0.28 +redirect_from: + - /components/sensor.pi_hole/ --- The `pi_hole` sensor platform displays the statistical summary of a [Pi-hole](https://pi-hole.net/) system. diff --git a/source/_components/picotts.markdown b/source/_components/picotts.markdown index 677ae77b919..f5f8bf11c0a 100644 --- a/source/_components/picotts.markdown +++ b/source/_components/picotts.markdown @@ -10,6 +10,8 @@ footer: true logo: home-assistant.png ha_category: Text-to-speech ha_release: 0.36 +redirect_from: + - /components/tts.picotts/ --- The `picotts` text-to-speech platform uses offline pico Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_components/piglow.markdown b/source/_components/piglow.markdown index eb8af9b40e6..4d82807c1cf 100644 --- a/source/_components/piglow.markdown +++ b/source/_components/piglow.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.37 ha_iot_class: Local Polling +redirect_from: + - /components/light.piglow/ --- diff --git a/source/_components/ping.markdown b/source/_components/ping.markdown index 3121bf86333..3c3af364e24 100644 --- a/source/_components/ping.markdown +++ b/source/_components/ping.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Network ha_release: 0.43 ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.ping/ --- The `ping` binary sensor platform allows you to use `ping` to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system. diff --git a/source/_components/pioneer.markdown b/source/_components/pioneer.markdown index a3e05f2ae6c..f5dd14757da 100644 --- a/source/_components/pioneer.markdown +++ b/source/_components/pioneer.markdown @@ -11,6 +11,8 @@ logo: pioneer.png ha_category: Media Player ha_release: 0.19 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.pioneer/ --- The `pioneer` platform allows you to control Pioneer Network Receivers. Please note, however, that the more recent Pioneer models work with [Onkyo](/components/media_player.onkyo/) platform instead. diff --git a/source/_components/pjlink.markdown b/source/_components/pjlink.markdown index 57a5166cef8..04665c52661 100644 --- a/source/_components/pjlink.markdown +++ b/source/_components/pjlink.markdown @@ -11,6 +11,8 @@ logo: pjlink.png ha_category: Media Player ha_release: 0.76 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.pjlink/ --- The `pjlink` platform allows you to control from Home Assistant, projectors with support for the [PJLink protocol](http://pjlink.jbmia.or.jp/english/index.html). diff --git a/source/_components/plex.markdown b/source/_components/plex.markdown index 9be5c8105fa..39f0aea2af6 100644 --- a/source/_components/plex.markdown +++ b/source/_components/plex.markdown @@ -12,6 +12,8 @@ ha_category: Media Player featured: true ha_release: 0.7.4 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.plex/ --- diff --git a/source/_components/pocketcasts.markdown b/source/_components/pocketcasts.markdown index cd1a1f7b266..b0c16009109 100644 --- a/source/_components/pocketcasts.markdown +++ b/source/_components/pocketcasts.markdown @@ -11,6 +11,8 @@ logo: pocketcasts.png ha_category: Multimedia ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.pocketcasts/ --- The `pocketcasts` sensor platform lets one monitor the podcasts at [Pocket Casts](https://play.pocketcasts.com/). diff --git a/source/_components/pollen.markdown b/source/_components/pollen.markdown index d04bae844a7..85a84cfe030 100644 --- a/source/_components/pollen.markdown +++ b/source/_components/pollen.markdown @@ -11,6 +11,8 @@ logo: pollen.jpg ha_category: Health ha_release: 0.63 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.pollen/ --- The `pollen` sensor platform collects and displays allergy, asthma, and disease @@ -84,6 +86,8 @@ Any index-related sensor will have a value between 0.0 and 12.0. The values map to the following human-friendly ratings: Range | Rating +redirect_from: + - /components/sensor.pollen/ --------- | ----------- 0.0 - 2.4 | Low 2.5 - 4.8 | Low/Medium @@ -98,6 +102,8 @@ Several asthma-related sensors carry information regarding the top three Example values include: Pollutant | Symbol | More Info +redirect_from: + - /components/sensor.pollen/ --------- | ------ | --------- Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution](https://www.epa.gov/pm-pollution) diff --git a/source/_components/polling.markdown b/source/_components/polling.markdown index 4b9df18396a..be5e970d5fa 100644 --- a/source/_components/polling.markdown +++ b/source/_components/polling.markdown @@ -10,6 +10,8 @@ footer: true logo: telegram.png ha_category: Notifications ha_release: 0.42 +redirect_from: + - /components/telegram_bot.polling/ --- Telegram chatbot polling implementation. diff --git a/source/_components/postnl.markdown b/source/_components/postnl.markdown index b2bda7ce479..26d0aac22f8 100644 --- a/source/_components/postnl.markdown +++ b/source/_components/postnl.markdown @@ -11,6 +11,8 @@ logo: postnl.png ha_category: Postal Service ha_release: 0.69 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.postnl/ --- The `postnl` platform allows one to track deliveries by [PostNL](https://www.postnl.nl) (Dutch Postal Services). To use this sensor, you need a [PostNL Account](https://jouw.postnl.nl). It is possible to add multiple accounts to your Home Assistant configuration. diff --git a/source/_components/prezzibenzina.markdown b/source/_components/prezzibenzina.markdown index d116b854802..ff386498a1a 100644 --- a/source/_components/prezzibenzina.markdown +++ b/source/_components/prezzibenzina.markdown @@ -11,6 +11,8 @@ logo: prezzibenzina.png ha_category: Energy ha_release: 0.85 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.prezzibenzina/ --- The `prezzibenzina` platform allows you to monitor the fuel prices with [PrezziBenzina.it](https://www.prezzibenzina.it/) from within Home Assistant and setup automations based on the information. diff --git a/source/_components/proliphix.markdown b/source/_components/proliphix.markdown index 71cecf0e8e8..c72e56f3773 100644 --- a/source/_components/proliphix.markdown +++ b/source/_components/proliphix.markdown @@ -11,6 +11,8 @@ logo: proliphix.png ha_category: Climate ha_release: 0.11 ha_iot_class: Local Polling +redirect_from: + - /components/climate.proliphix/ --- diff --git a/source/_components/prowl.markdown b/source/_components/prowl.markdown index 496efa4ffd1..bee530edee5 100644 --- a/source/_components/prowl.markdown +++ b/source/_components/prowl.markdown @@ -10,6 +10,8 @@ footer: true logo: prowl.png ha_category: Notifications ha_release: 0.52 +redirect_from: + - /components/notify.prowl/ --- The `prowl` platform uses [Prowl](https://www.prowlapp.com/) to deliver push notifications from Home Assistant to your iOS device. diff --git a/source/_components/proxy.markdown b/source/_components/proxy.markdown index 7f5f8773360..766681c613c 100644 --- a/source/_components/proxy.markdown +++ b/source/_components/proxy.markdown @@ -9,6 +9,8 @@ sharing: true footer: true ha_category: Camera ha_release: 0.65 +redirect_from: + - /components/camera.proxy/ --- The `proxy` camera platform allows you to pass another camera's output through post-processing routines and generate a new camera with the post-processed output. diff --git a/source/_components/pulseaudio_loopback.markdown b/source/_components/pulseaudio_loopback.markdown index fd860ac073b..e9c70439655 100644 --- a/source/_components/pulseaudio_loopback.markdown +++ b/source/_components/pulseaudio_loopback.markdown @@ -11,6 +11,8 @@ logo: pulseaudio.png ha_category: Switch ha_release: 0.16 ha_iot_class: Local Polling +redirect_from: + - /components/switch.pulseaudio_loopback/ --- The goal behind this switch is to allow a very flexible whole home audio system based upon [PulseAudio](https://www.freedesktop.org/wiki/Software/PulseAudio/). diff --git a/source/_components/push.markdown b/source/_components/push.markdown index a25d7a683cc..7e3e61d3d1d 100644 --- a/source/_components/push.markdown +++ b/source/_components/push.markdown @@ -11,6 +11,8 @@ logo: camcorder.png ha_category: Camera ha_iot_class: Local Push ha_release: 0.74 +redirect_from: + - /components/camera.push/ --- The `push` camera platform allows you to integrate images sent over HTTP POST to Home Assistant as a camera. External applications/daemons/scripts are therefore able to "stream" images through Home Assistant. diff --git a/source/_components/pushbullet.markdown b/source/_components/pushbullet.markdown index 5ff51bcac9e..fc49383c753 100644 --- a/source/_components/pushbullet.markdown +++ b/source/_components/pushbullet.markdown @@ -11,6 +11,8 @@ logo: pushbullet.png ha_category: Sensor ha_release: 0.44 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.pushbullet/ --- The `pushbullet` sensor platform reads messages from [Pushbullet](https://www.pushbullet.com/), a free service to send information between your phones, browsers, and friends. This sensor platform provides sensors that show the properties of the latest received Pushbullet notification mirror. diff --git a/source/_components/pushetta.markdown b/source/_components/pushetta.markdown index 7275e0a3e0d..2229b595531 100644 --- a/source/_components/pushetta.markdown +++ b/source/_components/pushetta.markdown @@ -10,6 +10,8 @@ footer: true logo: pushetta.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.pushetta/ --- The `pushetta` notify platform uses [Pushetta](http://www.pushetta.com) to delivery notifications from Home Assistant to your devices. diff --git a/source/_components/pushover.markdown b/source/_components/pushover.markdown index e266291146c..2d5b6371fd2 100644 --- a/source/_components/pushover.markdown +++ b/source/_components/pushover.markdown @@ -10,6 +10,8 @@ footer: true logo: pushover.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.pushover/ --- The [Pushover service](https://pushover.net/) is a platform for the notify component. This allows components to send messages to the user using Pushover. diff --git a/source/_components/pushsafer.markdown b/source/_components/pushsafer.markdown index f3a213fa2f0..793ad2ae473 100644 --- a/source/_components/pushsafer.markdown +++ b/source/_components/pushsafer.markdown @@ -10,6 +10,8 @@ footer: true logo: pushsafer.png ha_category: Notifications ha_release: 0.39 +redirect_from: + - /components/notify.pushsafer/ --- The [Pushsafer service](https://www.pushsafer.com/) is a platform for the notify component. This allows you to send messages to the user using Pushsafer. diff --git a/source/_components/pvoutput.markdown b/source/_components/pvoutput.markdown index 6cfcd6d9bf9..13213ce5610 100644 --- a/source/_components/pvoutput.markdown +++ b/source/_components/pvoutput.markdown @@ -11,6 +11,8 @@ logo: pvoutput.png ha_category: Energy ha_release: 0.33 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.pvoutput/ --- The `pvoutput` sensor platform consumes information from [PVOutput](http://pvoutput.org/) which were uploaded by your solar photovoltaic (PV) system. diff --git a/source/_components/pyload.markdown b/source/_components/pyload.markdown index fe03104ef7c..e79ea449a1b 100644 --- a/source/_components/pyload.markdown +++ b/source/_components/pyload.markdown @@ -11,6 +11,8 @@ logo: pyload.png ha_category: Downloading ha_release: 0.58 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.pyload/ --- The `pyload` platform allows you to monitor your downloads with [pyLoad](https://pyload.net/) from within Home Assistant and setup automation based on the information. diff --git a/source/_components/qbittorrent.markdown b/source/_components/qbittorrent.markdown index 642ecd006af..09003f1f861 100644 --- a/source/_components/qbittorrent.markdown +++ b/source/_components/qbittorrent.markdown @@ -11,6 +11,8 @@ logo: qbittorrent.png ha_category: Downloading ha_release: 0.84 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.qbittorrent/ --- The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information. diff --git a/source/_components/qnap.markdown b/source/_components/qnap.markdown index 668f6840a5d..a65727a0038 100644 --- a/source/_components/qnap.markdown +++ b/source/_components/qnap.markdown @@ -11,6 +11,8 @@ logo: qnap.png ha_category: System Monitor ha_release: 0.38 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.qnap/ --- This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). diff --git a/source/_components/qrcode.markdown b/source/_components/qrcode.markdown index 1a70c26f425..e0d9aa500b6 100644 --- a/source/_components/qrcode.markdown +++ b/source/_components/qrcode.markdown @@ -10,6 +10,8 @@ footer: true logo: home-assistant.png ha_category: Image Processing ha_release: 0.87 +redirect_from: + - /components/image_processing.qrcode/ --- The `qrcode` image processing platform enables QR code recognition from cameras. diff --git a/source/_components/quantum_gateway.markdown b/source/_components/quantum_gateway.markdown index 3949b2e663c..8d43cfb24fd 100644 --- a/source/_components/quantum_gateway.markdown +++ b/source/_components/quantum_gateway.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Presence Detection logo: fios.svg ha_release: 0.81 +redirect_from: + - /components/device_tracker.quantum_gateway/ --- The `quantum_gateway` device tracker platform offers presence detection by looking at connected devices to a Verizon Fios gateway. diff --git a/source/_components/radarr.markdown b/source/_components/radarr.markdown index 12d954ea4b9..1b78fdfbec3 100644 --- a/source/_components/radarr.markdown +++ b/source/_components/radarr.markdown @@ -10,6 +10,8 @@ footer: true logo: radarr.png ha_category: Downloading ha_release: 0.47 +redirect_from: + - /components/sensor.radarr/ --- This `radarr` sensor platform pulls data from a given [Radarr](https://radarr.video/) instance. diff --git a/source/_components/radiotherm.markdown b/source/_components/radiotherm.markdown index 5a80198aaa7..1d9d12d4134 100644 --- a/source/_components/radiotherm.markdown +++ b/source/_components/radiotherm.markdown @@ -11,6 +11,8 @@ logo: radiotherm.png ha_category: Climate ha_iot_class: Local Polling ha_release: 0.7.6 +redirect_from: + - /components/climate.radiotherm/ --- diff --git a/source/_components/random.markdown b/source/_components/random.markdown index 526276c40a5..9a89c098bc0 100644 --- a/source/_components/random.markdown +++ b/source/_components/random.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.32 ha_qa_scale: internal +redirect_from: + - /components/sensor.random/ --- The `random` sensor platform is creating random sensor values (integers) out of a given range. Returned values form a [discrete uniform distribution](https://en.wikipedia.org/wiki/Discrete_uniform_distribution), meaning that each integer value in the range configured is equally likely to be drawn. This can be useful if you want to test automation rules. It generates a new value every time it is polled. diff --git a/source/_components/raspyrfm.markdown b/source/_components/raspyrfm.markdown index fbb5df87fca..771620b5016 100644 --- a/source/_components/raspyrfm.markdown +++ b/source/_components/raspyrfm.markdown @@ -11,6 +11,8 @@ logo: seegelsysteme.png ha_category: Switch ha_release: 0.85 ha_iot_class: Assumed State +redirect_from: + - /components/switch.raspyrfm/ --- The `raspyrfm` component adds support for cheap RC 433 MHz outlets via one of the supported gateways. diff --git a/source/_components/recollect_waste.markdown b/source/_components/recollect_waste.markdown index 1e162c6d5f3..2650dcbedf9 100644 --- a/source/_components/recollect_waste.markdown +++ b/source/_components/recollect_waste.markdown @@ -11,6 +11,8 @@ logo: recollect-waste.png ha_category: Sensor ha_release: 0.87 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.recollect_waste/ --- The `Recollect Waste` platform allows you to track the next scheduled waste pickup and what type of waste from [Recollect](https://recollect.net/solutions/waste/). To use this sensor your city's waste company must be Recollect and you will need to find your place_id and service_id. diff --git a/source/_components/recswitch.markdown b/source/_components/recswitch.markdown index bb100b3b7a1..4b15b1672af 100644 --- a/source/_components/recswitch.markdown +++ b/source/_components/recswitch.markdown @@ -11,6 +11,8 @@ logo: "ankuoo_recswitch.png" ha_release: 0.81 ha_category: Switch ha_iot_class: Local Polling +redirect_from: + - /components/switch.recswitch/ --- The `recswitch` switch platform allows you to control the Ankuoo Rec Switch devices. diff --git a/source/_components/reddit.markdown b/source/_components/reddit.markdown index c4c73bd45e8..d9946b33037 100644 --- a/source/_components/reddit.markdown +++ b/source/_components/reddit.markdown @@ -11,6 +11,8 @@ logo: reddit.png ha_category: Sensor ha_release: 0.89 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.reddit/ --- The Reddit sensor integrates data from [Reddit](https://reddit.com/) to monitor your favorite subreddits. diff --git a/source/_components/rejseplanen.markdown b/source/_components/rejseplanen.markdown index e75ffa22adc..4ac80104899 100644 --- a/source/_components/rejseplanen.markdown +++ b/source/_components/rejseplanen.markdown @@ -11,6 +11,8 @@ logo: rejseplanen.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.88 +redirect_from: + - /components/sensor.rejseplanen/ --- The `rejseplanen` sensor will provide you with travel details for Danish public transport, using timetable data from [Rejseplanen](https://www.rejseplanen.dk/). diff --git a/source/_components/rest.markdown b/source/_components/rest.markdown index 1ecb146eae8..3ff473c8b47 100644 --- a/source/_components/rest.markdown +++ b/source/_components/rest.markdown @@ -11,6 +11,8 @@ logo: restful.png ha_category: Sensor ha_release: 0.7.4 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.rest/ --- The `rest` sensor platform is consuming a given endpoint which is exposed by a [RESTful API](https://en.wikipedia.org/wiki/Representational_state_transfer) of a device, an application, or a web service. The sensor has support for GET and POST requests. diff --git a/source/_components/ripple.markdown b/source/_components/ripple.markdown index 48bf42a060a..935913f93ad 100644 --- a/source/_components/ripple.markdown +++ b/source/_components/ripple.markdown @@ -11,6 +11,8 @@ logo: ripple.png ha_category: Finance ha_release: 0.47 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.ripple/ --- The `ripple` sensor platform displays Ripple wallet balances from [Ripple.com](https://ripple.com). diff --git a/source/_components/ritassist.markdown b/source/_components/ritassist.markdown index a0b8f1ab548..edaf92965ef 100644 --- a/source/_components/ritassist.markdown +++ b/source/_components/ritassist.markdown @@ -11,6 +11,8 @@ logo: ritassist.png ha_category: Car ha_iot_class: Cloud Polling ha_release: 0.76 +redirect_from: + - /components/device_tracker.ritassist/ --- The `ritassist` device tracker platform allows you to integrate your vehicles equipped with [RitAssist](https://ritassist.nl/) or [FleetGO](https://fleetgo.com) hardware into Home Assistant. It allows you to see certain details about your vehicle, but also shows your vehicle on the map. diff --git a/source/_components/rmvtransport.markdown b/source/_components/rmvtransport.markdown index 5bcde6f84dc..767943b6b84 100644 --- a/source/_components/rmvtransport.markdown +++ b/source/_components/rmvtransport.markdown @@ -11,6 +11,8 @@ logo: RMV.png ha_category: Transport ha_release: 0.76 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.rmvtransport/ --- The `rvmtransport` sensor will give you the departure time of the next bus, tram, subway, or train at the next station or stop in the Rhein-Main area public transport network. Additional details such as the line number and destination are present in the attributes. diff --git a/source/_components/rocketchat.markdown b/source/_components/rocketchat.markdown index 19d9c876d90..b63421203b2 100644 --- a/source/_components/rocketchat.markdown +++ b/source/_components/rocketchat.markdown @@ -10,6 +10,8 @@ footer: true logo: rocketchat.png ha_category: Notifications ha_release: 0.56 +redirect_from: + - /components/notify.rocketchat/ --- diff --git a/source/_components/roomba.markdown b/source/_components/roomba.markdown index d7a242c9ce7..7ad11fab00b 100644 --- a/source/_components/roomba.markdown +++ b/source/_components/roomba.markdown @@ -10,6 +10,8 @@ footer: true logo: irobot_roomba.png ha_category: Vacuum ha_release: 0.51 +redirect_from: + - /components/vacuum.roomba/ --- The `roomba` component allows you to control your [iRobot Roomba](http://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx) vacuum. diff --git a/source/_components/rova.markdown b/source/_components/rova.markdown index a87293ea107..5dcaa1e3be2 100644 --- a/source/_components/rova.markdown +++ b/source/_components/rova.markdown @@ -11,6 +11,8 @@ logo: rova.jpg ha_category: Sensor ha_release: 0.87 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.rova/ --- [ROVA](https://rova.nl) is a waste collection company that operates in the center and east of the Netherlands. The `rova` platform uses an unofficial [ROVA](https://rova.nl) API to allow you to get your waste collection schedule and integrate this in your Home Assistant installation. diff --git a/source/_components/rpi_camera.markdown b/source/_components/rpi_camera.markdown index 0d08f1a66e3..d15eb9f5baa 100644 --- a/source/_components/rpi_camera.markdown +++ b/source/_components/rpi_camera.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_iot_class: Local Polling ha_release: 0.17 +redirect_from: + - /components/camera.rpi_camera/ --- The `rpi_camera` platform allows you to integrate the Raspberry Pi camera into Home Assistant. This component uses the application [`raspistill`](https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md) to store the image from camera. diff --git a/source/_components/rpi_gpio_pwm.markdown b/source/_components/rpi_gpio_pwm.markdown index ef1bb0f5e8c..7f9b0183c03 100644 --- a/source/_components/rpi_gpio_pwm.markdown +++ b/source/_components/rpi_gpio_pwm.markdown @@ -11,6 +11,8 @@ ha_category: DIY ha_iot_class: Local Push ha_release: 0.43 logo: raspberry-pi.png +redirect_from: + - /components/light.rpi_gpio_pwm/ --- The `rpi_gpio_pwm` platform allows to control multiple lights using pulse-width modulation, for example led strips. It supports one-color, RGB and RGBW LEDs driven by GPIOs of a Raspberry Pi or a PCA9685 controller. diff --git a/source/_components/rpi_rf.markdown b/source/_components/rpi_rf.markdown index 9d8b758ed58..f833eb3edf0 100644 --- a/source/_components/rpi_rf.markdown +++ b/source/_components/rpi_rf.markdown @@ -11,6 +11,8 @@ logo: raspberry-pi.png ha_category: DIY ha_release: 0.19 ha_iot_class: Assumed State +redirect_from: + - /components/switch.rpi_rf/ --- The `rpi_rf` switch platform allows you to control devices over 433/315MHz LPD/SRD signals with generic low-cost GPIO RF modules on a [Raspberry Pi](https://www.raspberrypi.org/). diff --git a/source/_components/rtorrent.markdown b/source/_components/rtorrent.markdown index ab74a8f5ad1..a1065d75418 100644 --- a/source/_components/rtorrent.markdown +++ b/source/_components/rtorrent.markdown @@ -11,6 +11,8 @@ logo: rtorrent.png ha_category: Downloading ha_release: 0.81 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.rtorrent/ --- The `rtorrent` platform allows you to monitor your downloads with [rtorrent](https://rakshasa.github.io/rtorrent/) from within Home Assistant and setup automations based on the information. diff --git a/source/_components/russound_rio.markdown b/source/_components/russound_rio.markdown index 9fb29c8fff9..744e767e898 100644 --- a/source/_components/russound_rio.markdown +++ b/source/_components/russound_rio.markdown @@ -11,6 +11,8 @@ logo: russound.png ha_category: Media Player ha_release: 0.49 ha_iot_class: Local Push +redirect_from: + - /components/media_player.russound_rio/ --- The `russound_rio` platform allows you to control Russound devices that make use of the RIO protocol. diff --git a/source/_components/russound_rnet.markdown b/source/_components/russound_rnet.markdown index 42c1ad2775d..17b0ac98865 100644 --- a/source/_components/russound_rnet.markdown +++ b/source/_components/russound_rnet.markdown @@ -11,6 +11,8 @@ logo: russound.png ha_category: Media Player ha_release: 0.25 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.russound_rnet/ --- The `russound_rnet` platform allows you to control Russound devices that make use of the RNET protocol. diff --git a/source/_components/ruter.markdown b/source/_components/ruter.markdown index 04020649b01..facb56a8537 100644 --- a/source/_components/ruter.markdown +++ b/source/_components/ruter.markdown @@ -11,6 +11,8 @@ logo: ruter.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.83 +redirect_from: + - /components/sensor.ruter/ ---

diff --git a/source/_components/samsungtv.markdown b/source/_components/samsungtv.markdown index 799f21f7c5b..ac346f14df4 100644 --- a/source/_components/samsungtv.markdown +++ b/source/_components/samsungtv.markdown @@ -11,6 +11,8 @@ logo: samsung.png ha_category: Media Player ha_release: 0.13 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.samsungtv/ --- The `samsungtv` platform allows you to control a diff --git a/source/_components/scrape.markdown b/source/_components/scrape.markdown index e354f4ba66b..f427b7de3ef 100644 --- a/source/_components/scrape.markdown +++ b/source/_components/scrape.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Sensor ha_release: 0.31 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.scrape/ --- The `scrape` sensor platform is scraping information from websites. The sensor loads a HTML page and gives you the option to search and split out a value. As this is not a full-blown web scraper like [scrapy](https://scrapy.org/), it will most likely only work with simple web pages and it can be time-consuming to get the right section. diff --git a/source/_components/season.markdown b/source/_components/season.markdown index b8822a56f85..162301e095d 100644 --- a/source/_components/season.markdown +++ b/source/_components/season.markdown @@ -12,6 +12,8 @@ logo: home-assistant.png ha_iot_class: Local Polling ha_release: 0.53 ha_qa_scale: internal +redirect_from: + - /components/sensor.season/ --- The `season` sensor will display the current astronomical or meteorological season (Spring, Summer, Autumn, Winter) based on the user's setting in the configuration file. diff --git a/source/_components/sendgrid.markdown b/source/_components/sendgrid.markdown index 5f92fc2d551..08ceedf5b25 100644 --- a/source/_components/sendgrid.markdown +++ b/source/_components/sendgrid.markdown @@ -10,6 +10,8 @@ footer: true logo: sendgrid.png ha_category: Notifications ha_release: 0.14 +redirect_from: + - /components/notify.sendgrid/ --- The `sendgrid` notification platform sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. diff --git a/source/_components/sensehat.markdown b/source/_components/sensehat.markdown index ddbf1b2cbe8..9385b724c1a 100644 --- a/source/_components/sensehat.markdown +++ b/source/_components/sensehat.markdown @@ -11,6 +11,8 @@ logo: sense-hat.png ha_category: DIY ha_iot_class: Assumed State ha_release: 0.44 +redirect_from: + - /components/light.sensehat/ --- The `sensehat` light platform lets you control the [Sense HAT](https://www.raspberrypi.org/products/sense-hat/) board's 8x8 RGB LED matrix on your Raspberry Pi from within Home Assistant. diff --git a/source/_components/sensibo.markdown b/source/_components/sensibo.markdown index 4b55314d9f1..9c9afc789ea 100644 --- a/source/_components/sensibo.markdown +++ b/source/_components/sensibo.markdown @@ -11,6 +11,8 @@ logo: sensibo.png ha_category: Climate ha_release: 0.44 ha_iot_class: Cloud Polling +redirect_from: + - /components/climate.sensibo/ --- Integrates [Sensibo](https://sensibo.com) Air Conditioning controller into Home Assistant. diff --git a/source/_components/serial.markdown b/source/_components/serial.markdown index c73d27cca9e..7c7773270a6 100644 --- a/source/_components/serial.markdown +++ b/source/_components/serial.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Sensor ha_release: 0.56 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.serial/ --- The `serial` sensor platform is using the data provided by a device connected to the serial port of the system where Home Assistant is running. With [`ser2net`](http://ser2net.sourceforge.net/) and [`socat`](http://www.dest-unreach.org/socat/) would it also work for sensors connected to a remote system. diff --git a/source/_components/serial_pm.markdown b/source/_components/serial_pm.markdown index 992da28e91d..1fcc250bd5e 100644 --- a/source/_components/serial_pm.markdown +++ b/source/_components/serial_pm.markdown @@ -11,6 +11,8 @@ logo: serial_pm.png ha_category: DIY ha_release: 0.26 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.serial_pm/ --- Particulate matter sensors measure the amount of very small particles in the air. A short introduction how these sensors work can be found on [Open Home Automation](https://www.open-homeautomation.com/2016/07/19/measuring-air-quality/). diff --git a/source/_components/sesame.markdown b/source/_components/sesame.markdown index bda185a9f7d..d040299e97d 100644 --- a/source/_components/sesame.markdown +++ b/source/_components/sesame.markdown @@ -11,6 +11,8 @@ logo: sesame.png ha_category: Lock ha_iot_class: Cloud Polling ha_release: 0.47 +redirect_from: + - /components/lock.sesame/ --- The `sesame` platform allows you to control your [Sesame](https://candyhouse.co/) smart locks made by CANDY HOUSE, Inc. diff --git a/source/_components/seven_segments.markdown b/source/_components/seven_segments.markdown index eda7169810d..9331628b502 100644 --- a/source/_components/seven_segments.markdown +++ b/source/_components/seven_segments.markdown @@ -12,6 +12,8 @@ ha_category: Image Processing ha_release: 0.45 og_image: /images/screenshots/ssocr.png ha_iot_class: Local Polling +redirect_from: + - /components/image_processing.seven_segments/ --- The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/components/camera/). diff --git a/source/_components/seventeentrack.markdown b/source/_components/seventeentrack.markdown index 78f039b5d4f..afaff930bf7 100644 --- a/source/_components/seventeentrack.markdown +++ b/source/_components/seventeentrack.markdown @@ -11,6 +11,8 @@ logo: 17track.png ha_category: Postal Service ha_release: 0.83 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.seventeentrack/ --- The `seventeentrack` sensor platform allows users to get package data tied to their [17track.net](https://www.17track.net/en) account. The platform creates both summary sensors, which show the number of packages in a current state (e.g., "In Transit"), as well as individual sensors for each package within the account. diff --git a/source/_components/shodan.markdown b/source/_components/shodan.markdown index 9df0e9c05ba..88851c6af65 100644 --- a/source/_components/shodan.markdown +++ b/source/_components/shodan.markdown @@ -11,6 +11,8 @@ ha_category: Sensor ha_iot_class: Cloud Polling logo: shodan.png ha_release: 0.51 +redirect_from: + - /components/sensor.shodan/ --- The `shodan` sensor platform is displaying the total of result of a diff --git a/source/_components/sht31.markdown b/source/_components/sht31.markdown index 58c6f9f8e22..e3f4966dda0 100644 --- a/source/_components/sht31.markdown +++ b/source/_components/sht31.markdown @@ -11,6 +11,8 @@ ha_category: DIY ha_release: 0.68 logo: sensirion.png ha_iot_class: Local Polling +redirect_from: + - /components/sensor.sht31/ --- The `sht31` sensor platform allows you to get the current temperature and humidity from a Sensirion SHT31 device. diff --git a/source/_components/sigfox.markdown b/source/_components/sigfox.markdown index 6abb8e3ba7c..e3e98f78e0a 100644 --- a/source/_components/sigfox.markdown +++ b/source/_components/sigfox.markdown @@ -11,6 +11,8 @@ logo: sigfox.png ha_category: Sensor ha_iot_class: Cloud Polling ha_release: 0.68 +redirect_from: + - /components/sensor.sigfox/ --- [SigFox](https://www.sigfox.com/en) component adding a sensor for each Sigfox device registered with your account. The default name of sensors is `sigfox_{DEVICE_ID}` where `DEVICE_ID` is the devices Sigfox ID. The state of an added Sigfox sensor is the payload of the last message published by that device. Additionally, there are attributes for the latitude and longitude coordinates of the device, as well as the signal-to-noise ratio ([snr](https://en.wikipedia.org/wiki/Signal-to-noise_ratio)). diff --git a/source/_components/simplepush.markdown b/source/_components/simplepush.markdown index 2556c820373..c5fbc705969 100644 --- a/source/_components/simplepush.markdown +++ b/source/_components/simplepush.markdown @@ -10,6 +10,8 @@ footer: true logo: simplepush.png ha_category: Notifications ha_release: 0.29 +redirect_from: + - /components/notify.simplepush/ --- diff --git a/source/_components/simulated.markdown b/source/_components/simulated.markdown index 6df63b03eb7..8bc20c6e160 100644 --- a/source/_components/simulated.markdown +++ b/source/_components/simulated.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.65 ha_qa_scale: internal +redirect_from: + - /components/sensor.simulated/ --- The `simulated` sensor platform provides a simulated sensor that generates a time-varying signal `V(t)` given by the [function](https://en.wikipedia.org/wiki/Sine_wave): diff --git a/source/_components/sky_hub.markdown b/source/_components/sky_hub.markdown index 0b9c175bf93..46481f04909 100644 --- a/source/_components/sky_hub.markdown +++ b/source/_components/sky_hub.markdown @@ -10,6 +10,8 @@ footer: true logo: sky.png ha_category: Presence Detection ha_release: 0.37 +redirect_from: + - /components/device_tracker.sky_hub/ --- diff --git a/source/_components/skybeacon.markdown b/source/_components/skybeacon.markdown index 8c6bfcaf756..d9face54c75 100644 --- a/source/_components/skybeacon.markdown +++ b/source/_components/skybeacon.markdown @@ -10,6 +10,8 @@ footer: true ha_category: DIY ha_release: 0.37 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.skybeacon/ --- The `skybeacon` sensor platform supports [CR2477](http://cnsky9.en.alibaba.com)-powered [iBeacon](https://en.wikipedia.org/wiki/IBeacon)/eddystone sensors that come with temperature/sensor module. diff --git a/source/_components/slack.markdown b/source/_components/slack.markdown index 3b978bda146..c4f2375da92 100644 --- a/source/_components/slack.markdown +++ b/source/_components/slack.markdown @@ -10,6 +10,8 @@ footer: true logo: slack.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.slack/ --- diff --git a/source/_components/sma.markdown b/source/_components/sma.markdown index 28f587161c0..f5253bc8bec 100644 --- a/source/_components/sma.markdown +++ b/source/_components/sma.markdown @@ -11,6 +11,8 @@ ha_category: Energy logo: sma.png ha_iot_class: Local Polling ha_release: 0.36 +redirect_from: + - /components/sensor.sma/ --- The `sma` sensor will poll a [SMA](http://www.sma-solar.com/) [(US)](http://www.sma-america.com/) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant. diff --git a/source/_components/smtp.markdown b/source/_components/smtp.markdown index c41695aabda..4670b4533b4 100644 --- a/source/_components/smtp.markdown +++ b/source/_components/smtp.markdown @@ -10,6 +10,8 @@ footer: true logo: smtp.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.smtp/ --- diff --git a/source/_components/snapcast.markdown b/source/_components/snapcast.markdown index c0636f5b08f..25d7a69faf7 100644 --- a/source/_components/snapcast.markdown +++ b/source/_components/snapcast.markdown @@ -11,6 +11,8 @@ logo: snapcast.png ha_category: Media Player ha_release: 0.13 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.snapcast/ --- The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant. diff --git a/source/_components/snmp.markdown b/source/_components/snmp.markdown index d75cada1767..ba068545add 100644 --- a/source/_components/snmp.markdown +++ b/source/_components/snmp.markdown @@ -11,6 +11,8 @@ logo: network-snmp.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.57 +redirect_from: + - /components/switch.snmp/ --- The `snmp` switch platform allows you to control SNMP-enabled equipment. diff --git a/source/_components/sochain.markdown b/source/_components/sochain.markdown index 53d4395826d..4b61bc38303 100644 --- a/source/_components/sochain.markdown +++ b/source/_components/sochain.markdown @@ -11,6 +11,8 @@ logo: sochain.png ha_category: Finance ha_release: 0.61 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.sochain/ --- The `SoChain` sensor platform displays supported cryptocurrency wallet balances from [SoChain](https://chain.so). diff --git a/source/_components/socialblade.markdown b/source/_components/socialblade.markdown index f81f2d53aae..fd9597f96d0 100644 --- a/source/_components/socialblade.markdown +++ b/source/_components/socialblade.markdown @@ -11,6 +11,8 @@ logo: socialblade.png ha_category: Multimedia ha_release: 0.69 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.socialblade/ --- The `socialblade` sensor platform allows you get updates on a Youtube channel using your social blade channel ID. The sensor gets the subscribers and total views count from [Social Blade Website](https://socialblade.com). diff --git a/source/_components/solaredge.markdown b/source/_components/solaredge.markdown index d9aebd50c89..414381f6a06 100644 --- a/source/_components/solaredge.markdown +++ b/source/_components/solaredge.markdown @@ -11,6 +11,8 @@ logo: solaredge.png ha_category: Sensor ha_release: 0.85 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.solaredge/ --- The `solaredge` platform uses the [SolarEdge Monitoring API](https://www.solaredge.com/sites/default/files/se_monitoring_api.pdf) to allow you to get details from your SolarEdge solar power setup and integrate these in your Home Assistant installation. diff --git a/source/_components/sonarr.markdown b/source/_components/sonarr.markdown index a0ec0f5039e..88e3c9193e2 100644 --- a/source/_components/sonarr.markdown +++ b/source/_components/sonarr.markdown @@ -11,6 +11,8 @@ logo: sonarr.png ha_category: Downloading ha_release: 0.34 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.sonarr/ --- This `sonarr` sensor platform pulls data from a given [Sonarr](https://sonarr.tv/) instance. diff --git a/source/_components/songpal.markdown b/source/_components/songpal.markdown index be99a05bb15..2c5dd537f40 100644 --- a/source/_components/songpal.markdown +++ b/source/_components/songpal.markdown @@ -11,6 +11,8 @@ logo: sony.png ha_category: Media Player ha_iot_class: Local Push ha_release: 0.65 +redirect_from: + - /components/media_player.songpal/ --- The `songpal` platform allows you to control Sony's Songpal ("[Audio Control API](https://developer.sony.com/develop/audio-control-api/)") compatible devices such as soundbars, AV receivers and wireless speakers from Home Assistant. diff --git a/source/_components/sony_projector.markdown b/source/_components/sony_projector.markdown index 2c18da47df3..be90ed9660a 100644 --- a/source/_components/sony_projector.markdown +++ b/source/_components/sony_projector.markdown @@ -11,6 +11,8 @@ logo: sony.png ha_category: Multimedia ha_iot_class: Local Polling ha_release: 0.89 +redirect_from: + - /components/switch.sony_projector/ --- The `sony_projector` switch platform allows you to control the state of SDCP compatible network-connected projectors from [Sony](http://www.sony.com). diff --git a/source/_components/soundtouch.markdown b/source/_components/soundtouch.markdown index da20b48c644..233ba358756 100644 --- a/source/_components/soundtouch.markdown +++ b/source/_components/soundtouch.markdown @@ -11,6 +11,8 @@ logo: soundtouch.png ha_category: Media Player ha_release: 0.34 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.soundtouch/ --- The `soundtouch` platform allows you to control your [Bose Soundtouch](https://www.soundtouch.com/) speakers from Home Assistant. diff --git a/source/_components/spotcrime.markdown b/source/_components/spotcrime.markdown index 0afbb45fae5..b2f56835973 100644 --- a/source/_components/spotcrime.markdown +++ b/source/_components/spotcrime.markdown @@ -9,6 +9,8 @@ sharing: true footer: true ha_release: 0.65 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.spotcrime/ ---

SpotCrime is no longer handing out API keys to integrate their services.

diff --git a/source/_components/spotify.markdown b/source/_components/spotify.markdown index 982730bd33b..f4a33c5c56d 100644 --- a/source/_components/spotify.markdown +++ b/source/_components/spotify.markdown @@ -11,6 +11,8 @@ logo: spotify.png ha_category: Media Player ha_release: 0.43 ha_iot_class: Cloud Polling +redirect_from: + - /components/media_player.spotify/ --- The `spotify` media player platform allows you to control diff --git a/source/_components/sql.markdown b/source/_components/sql.markdown index 684dcf77251..1f634e8fc22 100644 --- a/source/_components/sql.markdown +++ b/source/_components/sql.markdown @@ -10,6 +10,8 @@ footer: true logo: sql.png ha_category: Utility ha_release: 0.63 +redirect_from: + - /components/sensor.sql/ --- The `sql` sensor platform enables you to use values from an [SQL](https://en.wikipedia.org/wiki/SQL) database supported by the [sqlalchemy](https://www.sqlalchemy.org) library, to populate a sensor state (and attributes). diff --git a/source/_components/squeezebox.markdown b/source/_components/squeezebox.markdown index e215186b541..2c43677c73c 100644 --- a/source/_components/squeezebox.markdown +++ b/source/_components/squeezebox.markdown @@ -11,6 +11,8 @@ logo: squeezebox.png ha_category: Media Player ha_release: pre 0.7 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.squeezebox/ --- diff --git a/source/_components/srp_energy.markdown b/source/_components/srp_energy.markdown index 4be55a14ed4..7d29f97cd86 100644 --- a/source/_components/srp_energy.markdown +++ b/source/_components/srp_energy.markdown @@ -8,6 +8,8 @@ comments: false ha_category: Energy ha_release: 0.83 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.srp_energy/ --- The `srp_energy` component shows information from Srp hourly energy usage report for their customers. The srpenergy module fetches the data found on the website. diff --git a/source/_components/starlingbank.markdown b/source/_components/starlingbank.markdown index f0333b7c034..01a3bb99406 100644 --- a/source/_components/starlingbank.markdown +++ b/source/_components/starlingbank.markdown @@ -11,6 +11,8 @@ logo: starlingbank.png ha_category: Finance ha_release: 0.79 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.starlingbank/ --- The Starling Bank sensor platform allows you to monitor your account balance data as sensors in Home Assistant. diff --git a/source/_components/startca.markdown b/source/_components/startca.markdown index 7d3907b83b0..29170335231 100644 --- a/source/_components/startca.markdown +++ b/source/_components/startca.markdown @@ -11,6 +11,8 @@ logo: startca.png ha_category: Network ha_release: 0.64 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.startca/ --- Integrate your [Start.ca](https://www.start.ca/) account information into Home Assistant. diff --git a/source/_components/statistics.markdown b/source/_components/statistics.markdown index 5ee656d2bef..16673f8328f 100644 --- a/source/_components/statistics.markdown +++ b/source/_components/statistics.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: "0.30" ha_qa_scale: internal +redirect_from: + - /components/sensor.statistics/ --- The `statistics` sensor platform consumes the state from other sensors. It exports the `mean` value as state and the following values as attributes: `count`, `mean`, `median`, `stdev`, `variance`, `total`, `min`, `max`, `min_age`, `max_age`, `change`, `average_change` and `change_rate`. If it's a binary sensor then only state changes are counted. diff --git a/source/_components/steam_online.markdown b/source/_components/steam_online.markdown index 27b0000e246..227635bb72c 100644 --- a/source/_components/steam_online.markdown +++ b/source/_components/steam_online.markdown @@ -11,6 +11,8 @@ logo: steam.png ha_category: Social ha_iot_class: Cloud Polling ha_release: 0.14 +redirect_from: + - /components/sensor.steam_online/ --- The `steam` sensor platform will allow you to track the online status of public [Steam](https://steamcommunity.com) accounts. diff --git a/source/_components/stride.markdown b/source/_components/stride.markdown index 0c79c446673..944d4e099a4 100644 --- a/source/_components/stride.markdown +++ b/source/_components/stride.markdown @@ -10,6 +10,8 @@ footer: true logo: stride.png ha_category: Notifications ha_release: 0.66 +redirect_from: + - /components/notify.stride/ --- The `stride` platform allows you to send notifications from Home Assistant to [Stride](https://stride.com/). diff --git a/source/_components/supervisord.markdown b/source/_components/supervisord.markdown index 715e7a814a4..cb164022eec 100644 --- a/source/_components/supervisord.markdown +++ b/source/_components/supervisord.markdown @@ -11,6 +11,8 @@ logo: supervisord.png ha_category: System Monitor ha_release: "0.20" ha_iot_class: Local Polling +redirect_from: + - /components/sensor.supervisord/ --- The `supervisord` platform allows you to track the states of [Supervisord](http://supervisord.org/). diff --git a/source/_components/swiss_hydrological_data.markdown b/source/_components/swiss_hydrological_data.markdown index 6e549beda02..267624174ad 100644 --- a/source/_components/swiss_hydrological_data.markdown +++ b/source/_components/swiss_hydrological_data.markdown @@ -11,6 +11,8 @@ logo: swiss-hydrological-data.png ha_category: Environment ha_iot_class: Cloud Polling ha_release: 0.22 +redirect_from: + - /components/sensor.swiss_hydrological_data/ --- The `swiss_hydrological_data` sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. diff --git a/source/_components/swiss_public_transport.markdown b/source/_components/swiss_public_transport.markdown index 5ae2364c5e4..29b31cd1284 100644 --- a/source/_components/swiss_public_transport.markdown +++ b/source/_components/swiss_public_transport.markdown @@ -11,6 +11,8 @@ logo: train.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: pre 0.7 +redirect_from: + - /components/sensor.swiss_public_transport/ --- The `swiss_public_transport` sensor will give you the next three departure times from a given location to another one in Switzerland. diff --git a/source/_components/swisscom.markdown b/source/_components/swisscom.markdown index 890b537a4b5..1c8e608943b 100644 --- a/source/_components/swisscom.markdown +++ b/source/_components/swisscom.markdown @@ -10,6 +10,8 @@ footer: true logo: swisscom.png ha_category: Presence Detection ha_release: 0.32 +redirect_from: + - /components/device_tracker.swisscom/ --- diff --git a/source/_components/switchbot.markdown b/source/_components/switchbot.markdown index 0278516239e..f752e7cca9e 100644 --- a/source/_components/switchbot.markdown +++ b/source/_components/switchbot.markdown @@ -11,6 +11,8 @@ logo: switchbot.png ha_category: Switch ha_release: 0.78 ha_iot_class: Local Polling +redirect_from: + - /components/switch.switchbot/ --- The `switchbot` switch platform allows you to control Switchbot [devices](https://www.switch-bot.com/). diff --git a/source/_components/switchmate.markdown b/source/_components/switchmate.markdown index 23ff7f966f3..2307af0fa4f 100644 --- a/source/_components/switchmate.markdown +++ b/source/_components/switchmate.markdown @@ -11,6 +11,8 @@ logo: switchmate-logo-rgb.png ha_category: Switch ha_release: 0.78 ha_iot_class: Local Polling +redirect_from: + - /components/switch.switchmate/ --- This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/). diff --git a/source/_components/syncthru.markdown b/source/_components/syncthru.markdown index f3cf870e3fd..0a6f214eda5 100644 --- a/source/_components/syncthru.markdown +++ b/source/_components/syncthru.markdown @@ -11,6 +11,8 @@ logo: samsung.png ha_category: System Monitor ha_iot_class: Local Polling ha_release: 0.66 +redirect_from: + - /components/sensor.syncthru/ --- The Samsung SyncThru Printer platform allows you to read current data from your local Samsung printer. diff --git a/source/_components/synology.markdown b/source/_components/synology.markdown index 28ed19a1d68..5cdf48722cb 100644 --- a/source/_components/synology.markdown +++ b/source/_components/synology.markdown @@ -11,6 +11,8 @@ logo: synology.png ha_category: Camera ha_release: 0.31 ha_iot_class: Local Polling +redirect_from: + - /components/camera.synology/ --- The `synology` camera platform allows you to watch the live streams of your [Synology](https://www.synology.com/) Surveillance Station based IP cameras in Home Assistant. diff --git a/source/_components/synology_chat.markdown b/source/_components/synology_chat.markdown index 6c1b8b3139d..cf20a62bf91 100644 --- a/source/_components/synology_chat.markdown +++ b/source/_components/synology_chat.markdown @@ -10,6 +10,8 @@ footer: true ha_release: 0.65 logo: synology.png ha_category: Notifications +redirect_from: + - /components/notify.synology_chat/ --- The `synology_chat` notification platform allows you to deliver notifications to your [Synology Chat](https://www.synology.com/en-us/dsm/feature/chat) install as a Synology Chat bot. diff --git a/source/_components/synology_srm.markdown b/source/_components/synology_srm.markdown index 1f79413a183..8ccb312abf2 100644 --- a/source/_components/synology_srm.markdown +++ b/source/_components/synology_srm.markdown @@ -10,6 +10,8 @@ footer: true logo: synology.png ha_category: Presence Detection ha_release: 0.87 +redirect_from: + - /components/device_tracker.synology_srm/ --- This platform allows you to detect presence by looking at connected devices to a [Synology SRM](https://www.synology.com/en-us/srm) router. diff --git a/source/_components/synologydsm.markdown b/source/_components/synologydsm.markdown index 777d88e9070..ee5e36f859e 100644 --- a/source/_components/synologydsm.markdown +++ b/source/_components/synologydsm.markdown @@ -11,6 +11,8 @@ logo: synology.png ha_category: System Monitor ha_release: 0.32 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.synologydsm/ --- The `synologydsm` sensor platform allows getting various statistics from your [Synology NAS](https://www.synology.com). diff --git a/source/_components/syslog.markdown b/source/_components/syslog.markdown index 24251869509..d25f3a25584 100644 --- a/source/_components/syslog.markdown +++ b/source/_components/syslog.markdown @@ -10,6 +10,8 @@ footer: true logo: syslog.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.syslog/ --- The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. diff --git a/source/_components/systemmonitor.markdown b/source/_components/systemmonitor.markdown index f344b5ed5ea..97446a4d269 100644 --- a/source/_components/systemmonitor.markdown +++ b/source/_components/systemmonitor.markdown @@ -11,6 +11,8 @@ logo: system_monitor.png ha_category: System Monitor ha_release: pre 0.7 ha_iot_class: Local Push +redirect_from: + - /components/sensor.systemmonitor/ --- The `systemmonitor` sensor platform allows you to monitor disk usage, diff --git a/source/_components/sytadin.markdown b/source/_components/sytadin.markdown index 608cb7bcc61..17da8090b68 100644 --- a/source/_components/sytadin.markdown +++ b/source/_components/sytadin.markdown @@ -11,6 +11,8 @@ logo: sytadin.png ha_release: 0.57 ha_category: Transport ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.sytadin/ --- The `sytadin` sensor platform allows you to monitor traffic details from [Sytadin](http://www.sytadin.fr). diff --git a/source/_components/tank_utility.markdown b/source/_components/tank_utility.markdown index 0860b5e07be..2a2a695e8b1 100644 --- a/source/_components/tank_utility.markdown +++ b/source/_components/tank_utility.markdown @@ -10,6 +10,8 @@ footer: true logo: tank_utility.png ha_category: Energy ha_release: 0.53 +redirect_from: + - /components/sensor.tank_utility/ --- Add [Tank Utility](https://www.tankutility.com/) propane tank monitors to Home Assistant. diff --git a/source/_components/tapsaff.markdown b/source/_components/tapsaff.markdown index 31dadb0f6a8..9cc6e85072d 100644 --- a/source/_components/tapsaff.markdown +++ b/source/_components/tapsaff.markdown @@ -11,6 +11,8 @@ logo: tapsaff.png ha_category: Weather ha_release: 0.47 ha_iot_class: Local Polling +redirect_from: + - /components/binary_sensor.tapsaff/ --- The `tapsaff` binary sensor provides the 'Taps Aff' status for a given location within the UK using [Taps Aff](http://www.taps-aff.co.uk). diff --git a/source/_components/tautulli.markdown b/source/_components/tautulli.markdown index 9b091c1ec3f..33e2f13817e 100644 --- a/source/_components/tautulli.markdown +++ b/source/_components/tautulli.markdown @@ -11,6 +11,8 @@ logo: tautulli.png ha_category: Sensor ha_release: 0.82 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.tautulli/ --- The `tautulli` sensor platform will monitor activity on a given [Tautulli Server][tautulli]. It will create a sensor that shows the number of currently active streams as the state. If you click the sensor for more details it will show you more statistics, the following stats are available by default: diff --git a/source/_components/tcp.markdown b/source/_components/tcp.markdown index 21242113632..889acfcde03 100644 --- a/source/_components/tcp.markdown +++ b/source/_components/tcp.markdown @@ -10,6 +10,8 @@ footer: true logo: tcp_ip.png ha_category: Binary Sensor ha_release: 0.14 +redirect_from: + - /components/binary_sensor.tcp/ --- The TCP Binary Sensor is a type of [TCP Sensor](/components/sensor.tcp/) which is either "off" or "on". In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a `value_on` value to represent what is returned when the device is turned on. diff --git a/source/_components/ted5000.markdown b/source/_components/ted5000.markdown index de188380a3b..f0e674189ee 100644 --- a/source/_components/ted5000.markdown +++ b/source/_components/ted5000.markdown @@ -11,6 +11,8 @@ logo: ted.png ha_category: Energy ha_release: "0.30" ha_iot_class: Local Polling +redirect_from: + - /components/sensor.ted5000/ --- The `ted 5000` monitors electricity consumption/production by connecting to the [TED](http://www.theenergydetective.com/home) gateway, itself connected to one or several Measuring Transmitting Units (MTU). The platform creates up to two sensors per MTU, one for Wattage the other for Voltage. diff --git a/source/_components/teksavvy.markdown b/source/_components/teksavvy.markdown index a55d694b4e5..6eac86d26d1 100644 --- a/source/_components/teksavvy.markdown +++ b/source/_components/teksavvy.markdown @@ -11,6 +11,8 @@ logo: teksavvy.png ha_category: Network ha_release: 0.62 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.teksavvy/ --- Integrate your [TekSavvy](https://myaccount.teksavvy.com/) account information into Home Assistant. diff --git a/source/_components/telegram.markdown b/source/_components/telegram.markdown index 140fe9a1347..d7fbf2d8c1b 100644 --- a/source/_components/telegram.markdown +++ b/source/_components/telegram.markdown @@ -10,6 +10,8 @@ footer: true logo: telegram.png ha_category: Notifications ha_release: 0.7.5 +redirect_from: + - /components/notify.telegram/ --- diff --git a/source/_components/telnet.markdown b/source/_components/telnet.markdown index 6441243d761..dcaeab255d4 100644 --- a/source/_components/telnet.markdown +++ b/source/_components/telnet.markdown @@ -10,6 +10,8 @@ footer: true ha_category: Switch ha_release: 0.54 ha_iot_class: Local Polling +redirect_from: + - /components/switch.telnet/ --- The `telnet` switch platform allows you to control devices with telnet commands. diff --git a/source/_components/temper.markdown b/source/_components/temper.markdown index 6018de11c59..a6c32e3d943 100644 --- a/source/_components/temper.markdown +++ b/source/_components/temper.markdown @@ -10,6 +10,8 @@ footer: true ha_category: DIY ha_iot_class: Local Push ha_release: pre 0.7 +redirect_from: + - /components/sensor.temper/ --- This `temper` sensor platform allows you to get the current temperature from a TEMPer device. diff --git a/source/_components/template.markdown b/source/_components/template.markdown index 581ec0945e8..5d6c2ff2a8f 100644 --- a/source/_components/template.markdown +++ b/source/_components/template.markdown @@ -12,6 +12,8 @@ ha_release: 0.12 ha_iot_class: Local Push logo: home-assistant.png ha_qa_scale: internal +redirect_from: + - /components/sensor.template/ --- The `template` platform supports sensors which get their values from other entities. diff --git a/source/_components/tensorflow.markdown b/source/_components/tensorflow.markdown index 204cfe6d89c..53c8bb44582 100644 --- a/source/_components/tensorflow.markdown +++ b/source/_components/tensorflow.markdown @@ -11,6 +11,8 @@ logo: tensorflow.png ha_category: Image Processing ha_iot_class: Local Polling ha_release: 0.82 +redirect_from: + - /components/image_processing.tensorflow/ --- The `tensorflow` image processing platform allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category. diff --git a/source/_components/tfiac.markdown b/source/_components/tfiac.markdown index 186912e074f..ed7797911f6 100644 --- a/source/_components/tfiac.markdown +++ b/source/_components/tfiac.markdown @@ -11,6 +11,8 @@ logo: tfiac.png ha_category: Climate ha_release: 0.91 ha_iot_class: Local Polling +redirect_from: + - /components/climate.tfiac/ --- The `tfiac` component integrates several vendors air conditioning systems, that uses the Tfiac mobile app, into Home Assistant. App currently available at [Play Store](https://play.google.com/store/apps/details?id=com.tcl.export) and [App Store](https://itunes.apple.com/app/tfiac/id1059938398). diff --git a/source/_components/thermoworks_smoke.markdown b/source/_components/thermoworks_smoke.markdown index 2b8350b100f..fd307a471ba 100644 --- a/source/_components/thermoworks_smoke.markdown +++ b/source/_components/thermoworks_smoke.markdown @@ -11,6 +11,8 @@ logo: thermoworks.png ha_category: Sensor ha_release: 0.81 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.thermoworks_smoke/ --- The `thermoworks_smoke` sensor platform pulls data for your [ThermoWorks Smoke Thermometer](https://www.thermoworks.com/Smoke). diff --git a/source/_components/thinkingcleaner.markdown b/source/_components/thinkingcleaner.markdown index ebf654dc92c..c422a00011d 100644 --- a/source/_components/thinkingcleaner.markdown +++ b/source/_components/thinkingcleaner.markdown @@ -11,6 +11,8 @@ logo: thinkingcleaner.png ha_category: Sensor ha_iot_class: Local Polling ha_release: 0.18 +redirect_from: + - /components/sensor.thinkingcleaner/ --- The `thinkingcleaner` sensor platform simple displays information about your [Thinking Cleaner](http://www.thinkingcleaner.com) add-on. diff --git a/source/_components/thomson.markdown b/source/_components/thomson.markdown index d3602ece2f0..76253968912 100644 --- a/source/_components/thomson.markdown +++ b/source/_components/thomson.markdown @@ -10,6 +10,8 @@ footer: true logo: technicolor.png ha_category: Presence Detection ha_release: 0.7 +redirect_from: + - /components/device_tracker.thomson/ --- diff --git a/source/_components/threshold.markdown b/source/_components/threshold.markdown index fecb913a6ae..451178c2283 100644 --- a/source/_components/threshold.markdown +++ b/source/_components/threshold.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.34 ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.threshold/ --- The `threshold` binary sensor platform observes the state of another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of the threshold sensor is changed. It support also a range if `lower` and `upper` are given. diff --git a/source/_components/tikteck.markdown b/source/_components/tikteck.markdown index bf671b7bbef..c904eaf9491 100644 --- a/source/_components/tikteck.markdown +++ b/source/_components/tikteck.markdown @@ -11,6 +11,8 @@ ha_category: Light ha_iot_class: Local Polling logo: tikteck.png ha_release: 0.36 +redirect_from: + - /components/light.tikteck/ --- Support for the Bluetooth smart bulb from [Tikteck](http://www.tikteck.com). To enable these lights, add the following lines to your `configuration.yaml` file: diff --git a/source/_components/tile.markdown b/source/_components/tile.markdown index a07f6fbe264..5e4934ce18b 100644 --- a/source/_components/tile.markdown +++ b/source/_components/tile.markdown @@ -11,6 +11,8 @@ logo: tile.png ha_release: 0.58 ha_category: Presence Detection ha_iot_class: Cloud Polling +redirect_from: + - /components/device_tracker.tile/ --- The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com). diff --git a/source/_components/time_date.markdown b/source/_components/time_date.markdown index bfacabbd7c3..e621ad72dee 100644 --- a/source/_components/time_date.markdown +++ b/source/_components/time_date.markdown @@ -12,6 +12,8 @@ ha_category: Calendar ha_iot_class: Local Push ha_release: pre 0.7 ha_qa_scale: internal +redirect_from: + - /components/sensor.time_date/ --- The time and date (`time_date`) sensor platform simple displays the time in various formats, the date, or both. diff --git a/source/_components/tod.markdown b/source/_components/tod.markdown index 00e1c9afec0..93a03d59448 100644 --- a/source/_components/tod.markdown +++ b/source/_components/tod.markdown @@ -12,6 +12,8 @@ ha_release: 0.89 ha_iot_class: Local Push logo: home-assistant.png ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.tod/ --- The `tod` platform supports binary sensors which get their values by checking if the current time is within defined time ranges. diff --git a/source/_components/todoist.markdown b/source/_components/todoist.markdown index 0521ee53551..308ae263b3c 100644 --- a/source/_components/todoist.markdown +++ b/source/_components/todoist.markdown @@ -11,6 +11,8 @@ logo: todoist.png ha_category: Calendar ha_iot_class: Cloud Polling ha_release: 0.54 +redirect_from: + - /components/calendar.todoist/ --- This platform allows you to connect to your [Todoist Projects](https://todoist.com) and generate binary sensors. A different sensor will be created for each individual project, or you can specify "custom" projects which match against criteria you set (more on that below). These sensors will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. diff --git a/source/_components/tomato.markdown b/source/_components/tomato.markdown index 2fd6c26ad59..94a41d4239e 100644 --- a/source/_components/tomato.markdown +++ b/source/_components/tomato.markdown @@ -10,6 +10,8 @@ footer: true logo: tomato.png ha_category: Presence Detection ha_release: pre 0.7 +redirect_from: + - /components/device_tracker.tomato/ --- The `tomato` platform requires an extra config variable called `http_id`. The diff --git a/source/_components/torque.markdown b/source/_components/torque.markdown index fc8c3c13208..3c2ed1647f2 100644 --- a/source/_components/torque.markdown +++ b/source/_components/torque.markdown @@ -11,6 +11,8 @@ logo: torque.png ha_category: Car ha_release: "0.10" ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.torque/ --- The `torque` platform will allow you to monitor [Torque](http://torque-bhp.com/) data relayed from a Bluetooth OBD2 stick via the Torque mobile application. diff --git a/source/_components/totalconnect.markdown b/source/_components/totalconnect.markdown index 40cb73d83a9..f7aea202e2a 100644 --- a/source/_components/totalconnect.markdown +++ b/source/_components/totalconnect.markdown @@ -10,6 +10,8 @@ footer: true logo: honeywell-tc.png ha_category: Alarm ha_release: 0.42 +redirect_from: + - /components/alarm_control_panel.totalconnect/ --- The `totalconnect` platform provides connectivity with the Honeywell TotalConnect alarm systems used by many alarm companies. diff --git a/source/_components/touchline.markdown b/source/_components/touchline.markdown index 6e79192373f..df49a42fb6b 100644 --- a/source/_components/touchline.markdown +++ b/source/_components/touchline.markdown @@ -11,6 +11,8 @@ logo: roth.png ha_category: Climate ha_release: 0.61 ha_iot_class: Local Polling +redirect_from: + - /components/climate.touchline/ --- The `touchline` climate platform let you control [ROTH Touchline](http://www.roth-nordic.dk/dk/roth-touchline-tradloes-gulvvarmeregulering-1475.htm) floor heating thermostats from Roth. diff --git a/source/_components/traccar.markdown b/source/_components/traccar.markdown index c3339cc32e7..589177f32fa 100644 --- a/source/_components/traccar.markdown +++ b/source/_components/traccar.markdown @@ -11,6 +11,8 @@ logo: traccar.png ha_release: 0.83 ha_category: Presence Detection ha_iot_class: Local Polling +redirect_from: + - /components/device_tracker.traccar/ --- `Traccar` uses GPS for tracking and has support for over 1500 different types of devices. diff --git a/source/_components/trackr.markdown b/source/_components/trackr.markdown index ee5373c0516..dc80419df8a 100644 --- a/source/_components/trackr.markdown +++ b/source/_components/trackr.markdown @@ -11,6 +11,8 @@ logo: trackr.png ha_release: 0.36 ha_category: Presence Detection ha_iot_class: Cloud Polling +redirect_from: + - /components/device_tracker.trackr/ --- diff --git a/source/_components/trafikverket_weatherstation.markdown b/source/_components/trafikverket_weatherstation.markdown index f1aa584512e..68371512a23 100644 --- a/source/_components/trafikverket_weatherstation.markdown +++ b/source/_components/trafikverket_weatherstation.markdown @@ -11,6 +11,8 @@ logo: trafikverket.png ha_category: Weather ha_release: 0.66 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.trafikverket_weatherstation/ --- Showing weather information provided by [Trafikverket](https://www.trafikverket.se/) weather stations in Sweden. diff --git a/source/_components/transport_nsw.markdown b/source/_components/transport_nsw.markdown index e1145400379..966c6184d9b 100644 --- a/source/_components/transport_nsw.markdown +++ b/source/_components/transport_nsw.markdown @@ -11,6 +11,8 @@ logo: transport_nsw.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.81 +redirect_from: + - /components/sensor.transport_nsw/ --- The `transport_nsw` sensor will give you the time until the next departure from a Transport NSW stop for bus, train, light rail or ferry. diff --git a/source/_components/travisci.markdown b/source/_components/travisci.markdown index dde3c037e59..d4c0c9d5922 100644 --- a/source/_components/travisci.markdown +++ b/source/_components/travisci.markdown @@ -11,6 +11,8 @@ logo: travisci.svg ha_category: Sensor ha_release: 0.56 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.travisci/ --- With this sensor platform, you will be able to integrate the test build results reported by [Travis-CI](https://travis-ci.org/) working within Home Assistant. diff --git a/source/_components/trend.markdown b/source/_components/trend.markdown index c7c9f02deb5..9c9dbcd42fa 100644 --- a/source/_components/trend.markdown +++ b/source/_components/trend.markdown @@ -12,6 +12,8 @@ logo: home-assistant.png ha_release: 0.28 ha_iot_class: Local Push ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.trend/ --- The `trend` platform allows you to create sensors which show the trend of diff --git a/source/_components/twilio_call.markdown b/source/_components/twilio_call.markdown index 3733c6ef33f..65a5e84e79c 100644 --- a/source/_components/twilio_call.markdown +++ b/source/_components/twilio_call.markdown @@ -10,6 +10,8 @@ footer: true logo: twilio.png ha_category: Notifications ha_release: 0.37 +redirect_from: + - /components/notify.twilio_call/ --- The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). diff --git a/source/_components/twilio_sms.markdown b/source/_components/twilio_sms.markdown index 651beaf6e77..3dfcaf43568 100644 --- a/source/_components/twilio_sms.markdown +++ b/source/_components/twilio_sms.markdown @@ -10,6 +10,8 @@ footer: true logo: twilio.png ha_category: Notifications ha_release: "0.20" +redirect_from: + - /components/notify.twilio_sms/ --- The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). diff --git a/source/_components/twitch.markdown b/source/_components/twitch.markdown index f37ad619d68..0f450b358b6 100644 --- a/source/_components/twitch.markdown +++ b/source/_components/twitch.markdown @@ -11,6 +11,8 @@ logo: twitch.png ha_category: Social ha_release: "0.10" ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.twitch/ --- The `twitch` platform will allow you to monitor [Twitch](http://www.twitch.tv/) channel status from within Home Assistant and setup automation based on the information. diff --git a/source/_components/twitter.markdown b/source/_components/twitter.markdown index 533c50ff7b1..3e199f4c122 100644 --- a/source/_components/twitter.markdown +++ b/source/_components/twitter.markdown @@ -10,6 +10,8 @@ footer: true logo: twitter.png ha_category: Notifications ha_release: 0.12 +redirect_from: + - /components/notify.twitter/ --- diff --git a/source/_components/ubee.markdown b/source/_components/ubee.markdown index fd6e74526fb..9932edba379 100644 --- a/source/_components/ubee.markdown +++ b/source/_components/ubee.markdown @@ -10,6 +10,8 @@ footer: true logo: ubee.png ha_category: Presence Detection ha_release: 0.89 +redirect_from: + - /components/device_tracker.ubee/ --- This platform offers presence detection by looking at connected devices to a [Ubee Router](http://www.ubeeinteractive.com/products). diff --git a/source/_components/uber.markdown b/source/_components/uber.markdown index c3129d48c45..f607a84fdfe 100644 --- a/source/_components/uber.markdown +++ b/source/_components/uber.markdown @@ -11,6 +11,8 @@ logo: uber.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.16 +redirect_from: + - /components/sensor.uber/ --- The `uber` sensor will give you time and price estimates for all available [Uber](https://uber.com) products at the given location. The `ATTRIBUTES` are used to provide extra information about products, such as estimated trip duration, distance and vehicle capacity. By default, 2 sensors will be created for each product at the given `start` location, one for pickup time and one for current price. The sensor is powered by the official Uber [API](https://developer.uber.com/). diff --git a/source/_components/ubus.markdown b/source/_components/ubus.markdown index 23fa853e6d8..d965db0bb3d 100644 --- a/source/_components/ubus.markdown +++ b/source/_components/ubus.markdown @@ -10,6 +10,8 @@ footer: true logo: openwrt.png ha_category: Presence Detection ha_release: 0.7.6 +redirect_from: + - /components/device_tracker.ubus/ --- _This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/components/device_tracker.openwrt/)._ diff --git a/source/_components/ue_smart_radio.markdown b/source/_components/ue_smart_radio.markdown index cce3cde31ea..48d4a55f6d4 100644 --- a/source/_components/ue_smart_radio.markdown +++ b/source/_components/ue_smart_radio.markdown @@ -11,6 +11,8 @@ logo: ueradio.png ha_category: Media Player ha_release: "0.60" ha_iot_class: Cloud Polling +redirect_from: + - /components/media_player.ue_smart_radio/ --- diff --git a/source/_components/uk_transport.markdown b/source/_components/uk_transport.markdown index f1128acdd6d..afba90b9175 100644 --- a/source/_components/uk_transport.markdown +++ b/source/_components/uk_transport.markdown @@ -11,6 +11,8 @@ logo: train.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: "0.50" +redirect_from: + - /components/sensor.uk_transport/ --- The `uk_transport` sensor will display the time in minutes until the next departure in a specified direction from of a configured train station or bus stop. The sensor uses [transportAPI](http://www.transportapi.com/) to query live departure data and requires a developer application ID and key which can be obtained [here](https://developer.transportapi.com/). The [free tier](http://www.transportapi.com/plans/) allows 1000 requests daily, which is sufficient for a single sensor refreshing every 87 seconds. diff --git a/source/_components/unifi_direct.markdown b/source/_components/unifi_direct.markdown index 7595c129149..ba15621b29a 100644 --- a/source/_components/unifi_direct.markdown +++ b/source/_components/unifi_direct.markdown @@ -11,6 +11,8 @@ logo: ubiquiti.png ha_category: Presence Detection ha_iot_class: Local Polling ha_release: 0.59 +redirect_from: + - /components/device_tracker.unifi_direct/ --- diff --git a/source/_components/universal.markdown b/source/_components/universal.markdown index 4b1bdc12f58..8015c69eb16 100644 --- a/source/_components/universal.markdown +++ b/source/_components/universal.markdown @@ -11,6 +11,8 @@ logo: home-assistant.png ha_category: Media Player ha_qa_scale: internal ha_release: 0.11 +redirect_from: + - /components/media_player.universal/ --- Universal Media Players combine multiple existing entities in Home Assistant into one media player entity. This is used for creating a single entity that controls an entire media center. diff --git a/source/_components/upc_connect.markdown b/source/_components/upc_connect.markdown index 27f5b941abc..e483d5b9b27 100644 --- a/source/_components/upc_connect.markdown +++ b/source/_components/upc_connect.markdown @@ -10,6 +10,8 @@ footer: true logo: upc.png ha_category: Presence Detection ha_release: 0.36 +redirect_from: + - /components/device_tracker.upc_connect/ --- diff --git a/source/_components/ups.markdown b/source/_components/ups.markdown index 1298a7efdec..06797853006 100644 --- a/source/_components/ups.markdown +++ b/source/_components/ups.markdown @@ -11,6 +11,8 @@ logo: ups.png ha_category: Postal Service ha_release: 0.39 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.ups/ --- The `ups` platform allows one to track deliveries by the [UPS](https://www.ups.com/). To use this sensor, you need a [My UPS Account](https://www.ups.com/mychoice). diff --git a/source/_components/uptime.markdown b/source/_components/uptime.markdown index 87a00b3dfba..ffd79222b2c 100644 --- a/source/_components/uptime.markdown +++ b/source/_components/uptime.markdown @@ -12,6 +12,8 @@ ha_iot_class: Local Push logo: home-assistant.png ha_release: 0.56 ha_qa_scale: internal +redirect_from: + - /components/sensor.uptime/ --- The `uptime` sensor platform displays the time since the last Home Assistant restart. diff --git a/source/_components/uptimerobot.markdown b/source/_components/uptimerobot.markdown index 0052fcf2cee..06bb9d7f36f 100644 --- a/source/_components/uptimerobot.markdown +++ b/source/_components/uptimerobot.markdown @@ -11,6 +11,8 @@ logo: uptimerobot.png ha_category: System Monitor ha_release: 0.72 ha_iot_class: Cloud Polling +redirect_from: + - /components/binary_sensor.uptimerobot/ --- The `uptimerobot` binary sensor platform allows you get the status for all of your monitors from your account on [Uptime Robot.]( https://uptimerobot.com). diff --git a/source/_components/uscis.markdown b/source/_components/uscis.markdown index 21ce1dc30bb..f38cf3c9435 100644 --- a/source/_components/uscis.markdown +++ b/source/_components/uscis.markdown @@ -11,6 +11,8 @@ logo: uscis.png ha_category: Sensor ha_release: 0.68 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.uscis/ --- The `uscis` sensor component allows you get updates on your USCIS case using your case/receipt number. The sensor gets the case information from [USCIS Website]( https://egov.uscis.gov/casestatus/landing.do) diff --git a/source/_components/usgs_earthquakes_feed.markdown b/source/_components/usgs_earthquakes_feed.markdown index 094c5321a72..7fb2b50e4b9 100644 --- a/source/_components/usgs_earthquakes_feed.markdown +++ b/source/_components/usgs_earthquakes_feed.markdown @@ -11,6 +11,8 @@ logo: us-geological-survey.png ha_category: Geolocation ha_iot_class: Cloud Polling ha_release: 0.84 +redirect_from: + - /components/geo_location.usgs_earthquakes_feed/ --- The `usgs_earthquakes_feed` platform lets you integrate a GeoJSON feed provided by the [U.S. Geological Survey](https://earthquake.usgs.gov/) with information about seismic events like earthquakes. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location. diff --git a/source/_components/uvc.markdown b/source/_components/uvc.markdown index 1edfd04148c..e7edc160cf3 100644 --- a/source/_components/uvc.markdown +++ b/source/_components/uvc.markdown @@ -11,6 +11,8 @@ logo: ubiquiti.png ha_category: Camera ha_release: 0.13 ha_iot_class: Local Polling +redirect_from: + - /components/camera.uvc/ --- The `uvc` camera platform allows you to integrate [UniFi Video Camera (UVC)](https://www.ubnt.com/products/#unifivideo) into Home Assistant. diff --git a/source/_components/vasttrafik.markdown b/source/_components/vasttrafik.markdown index 0e1b520d571..64d5e85963d 100644 --- a/source/_components/vasttrafik.markdown +++ b/source/_components/vasttrafik.markdown @@ -11,6 +11,8 @@ logo: vasttrafik.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: "0.30" +redirect_from: + - /components/sensor.vasttrafik/ --- The `vasttrafik` sensor will provide you traveling details for the larger Göteborg area in Sweden from the [Västtrafik](https://vasttrafik.se/) public transportation service. diff --git a/source/_components/venstar.markdown b/source/_components/venstar.markdown index beb625ad060..91571846acb 100644 --- a/source/_components/venstar.markdown +++ b/source/_components/venstar.markdown @@ -11,6 +11,8 @@ logo: venstar.png ha_category: Climate ha_release: 0.62 ha_iot_class: Local Polling +redirect_from: + - /components/climate.venstar/ --- diff --git a/source/_components/version.markdown b/source/_components/version.markdown index 955dd92d1e9..b8c5ed48edf 100644 --- a/source/_components/version.markdown +++ b/source/_components/version.markdown @@ -12,6 +12,8 @@ ha_iot_class: Local Push logo: home-assistant.png ha_release: 0.52 ha_qa_scale: internal +redirect_from: + - /components/sensor.version/ --- The `version` sensor platform that can display the current Home Assistant versions. diff --git a/source/_components/vesync.markdown b/source/_components/vesync.markdown index 3a2929100ef..d26a867d88c 100644 --- a/source/_components/vesync.markdown +++ b/source/_components/vesync.markdown @@ -10,6 +10,8 @@ footer: true logo: vesync.png ha_category: Switch ha_release: 0.66 +redirect_from: + - /components/switch.vesync/ --- The `vesync` switch platform enables integration with Etekcity VeSync smart wall switches and outlets. diff --git a/source/_components/viaggiatreno.markdown b/source/_components/viaggiatreno.markdown index 713c228a9e6..7167193ac3e 100644 --- a/source/_components/viaggiatreno.markdown +++ b/source/_components/viaggiatreno.markdown @@ -11,6 +11,8 @@ logo: train.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.58 +redirect_from: + - /components/sensor.viaggiatreno/ --- The `viaggiatreno` sensor will give you information about configured train ids and stations using the public [ViaggiaTreno](http://viaggiatreno.it) API. diff --git a/source/_components/vizio.markdown b/source/_components/vizio.markdown index 234ed528955..c4e2fafdf83 100644 --- a/source/_components/vizio.markdown +++ b/source/_components/vizio.markdown @@ -11,6 +11,8 @@ logo: vizio-smartcast.png ha_category: Media Player ha_release: 0.49 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.vizio/ --- The `vizio` component will allow you to control [SmartCast](https://www.vizio.com/smartcast-app) compatible TVs (2016+ models). diff --git a/source/_components/vlc.markdown b/source/_components/vlc.markdown index 0ec61742d2f..c0929c03cc4 100644 --- a/source/_components/vlc.markdown +++ b/source/_components/vlc.markdown @@ -11,6 +11,8 @@ logo: videolan.png ha_category: Media Player ha_release: 0.35 ha_iot_class: Local Polling +redirect_from: + - /components/media_player.vlc/ --- The `vlc` platform allows you to control [VLC media player](http://www.videolan.org/vlc/index.html). diff --git a/source/_components/voicerss.markdown b/source/_components/voicerss.markdown index a2ce16ab7f2..fd7279bd299 100644 --- a/source/_components/voicerss.markdown +++ b/source/_components/voicerss.markdown @@ -10,6 +10,8 @@ footer: true logo: voicerss.png ha_category: Text-to-speech ha_release: 0.35 +redirect_from: + - /components/tts.voicerss/ --- The `voicerss` text-to-speech platform uses [VoiceRSS](http://www.voicerss.org/) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_components/volkszaehler.markdown b/source/_components/volkszaehler.markdown index 3832ef4ab4a..e0fb0e3c82d 100644 --- a/source/_components/volkszaehler.markdown +++ b/source/_components/volkszaehler.markdown @@ -11,6 +11,8 @@ logo: volkszaehler.png ha_category: System Monitor ha_iot_class: Local Polling ha_release: 0.78 +redirect_from: + - /components/sensor.volkszaehler/ --- The `volkszaehler` sensor platform is consuming the system information provided by the [Volkszaehler](https://wiki.volkszaehler.org/) API. diff --git a/source/_components/volumio.markdown b/source/_components/volumio.markdown index 71acd0a873f..2619b8ff54f 100644 --- a/source/_components/volumio.markdown +++ b/source/_components/volumio.markdown @@ -10,6 +10,8 @@ footer: true logo: volumio.png ha_category: Media Player ha_release: 0.41 +redirect_from: + - /components/media_player.volumio/ --- The `Volumio` platform allows you to control a [Volumio](http://volumio.org) media player from Home Assistant. diff --git a/source/_components/waqi.markdown b/source/_components/waqi.markdown index ad17ace10b3..f9a0ecb18c0 100644 --- a/source/_components/waqi.markdown +++ b/source/_components/waqi.markdown @@ -11,6 +11,8 @@ logo: waqi.png ha_category: Health ha_release: 0.34 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.waqi/ --- The `waqi` sensor platform will query [World Air Quality Index](http://aqicn.org) service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs. @@ -46,6 +48,8 @@ stations: The value reported is an overall AQ index for the location. The values of the index can be interpreted as following: AQI | Status | Description +redirect_from: + - /components/sensor.waqi/ ------- | :----------------: | ---------- 0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk 51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution diff --git a/source/_components/waze_travel_time.markdown b/source/_components/waze_travel_time.markdown index 9be952e3bf0..50e8cbe20c2 100644 --- a/source/_components/waze_travel_time.markdown +++ b/source/_components/waze_travel_time.markdown @@ -11,6 +11,8 @@ logo: waze.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.67 +redirect_from: + - /components/sensor.waze_travel_time/ --- The `waze_travel_time` sensor provides travel time from the [Waze](https://www.waze.com/). diff --git a/source/_components/webhooks.markdown b/source/_components/webhooks.markdown index ffe92026d6f..3ae94b9dad9 100644 --- a/source/_components/webhooks.markdown +++ b/source/_components/webhooks.markdown @@ -10,6 +10,8 @@ footer: true logo: telegram.png ha_category: Notifications ha_release: 0.42 +redirect_from: + - /components/telegram_bot.webhooks/ --- Telegram chatbot webhooks implementation as described in the Telegram [documentation](https://core.telegram.org/bots/webhooks). diff --git a/source/_components/webostv.markdown b/source/_components/webostv.markdown index e924badd9a8..c3c10bd68b2 100644 --- a/source/_components/webostv.markdown +++ b/source/_components/webostv.markdown @@ -11,6 +11,8 @@ logo: webos.png ha_category: Media Player ha_iot_class: Local Polling ha_release: 0.18 +redirect_from: + - /components/media_player.webostv/ --- The `webostv` platform allows you to control a [LG](http://www.lg.com/) webOS diff --git a/source/_components/whois.markdown b/source/_components/whois.markdown index c77a166925d..562d9149073 100644 --- a/source/_components/whois.markdown +++ b/source/_components/whois.markdown @@ -11,6 +11,8 @@ logo: icann.png ha_category: Network ha_release: 0.57 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.whois/ --- The `whois` sensor platform allows you to perform daily WHOIS lookups against your owned domains. This provides you with information such as `expiration_date`, `name_servers` and `registrar` details. diff --git a/source/_components/workday.markdown b/source/_components/workday.markdown index d1dfdcb1f25..4539171c3ea 100644 --- a/source/_components/workday.markdown +++ b/source/_components/workday.markdown @@ -12,6 +12,8 @@ ha_category: Utility ha_iot_class: Local Polling ha_release: 0.41 ha_qa_scale: internal +redirect_from: + - /components/binary_sensor.workday/ --- The `workday` binary sensor indicates, whether the current day is a workday or not. It allows specifying, which days of the week counts as workdays and also diff --git a/source/_components/worldclock.markdown b/source/_components/worldclock.markdown index 926611c62b9..3c4cfddf87e 100644 --- a/source/_components/worldclock.markdown +++ b/source/_components/worldclock.markdown @@ -12,6 +12,8 @@ ha_category: Calendar ha_iot_class: Local Push ha_release: pre 0.7 ha_qa_scale: internal +redirect_from: + - /components/sensor.worldclock/ --- The `worldclock` sensor platform simply displays the current time in a different time zone. diff --git a/source/_components/worldtidesinfo.markdown b/source/_components/worldtidesinfo.markdown index 9392c401e9f..7ab15dd3bf2 100644 --- a/source/_components/worldtidesinfo.markdown +++ b/source/_components/worldtidesinfo.markdown @@ -10,6 +10,8 @@ footer: true logo: worldtidesinfo.png ha_category: Environment ha_release: 0.52 +redirect_from: + - /components/sensor.worldtidesinfo/ --- The `worldtidesinfo` sensor platform uses details from [World Tides](https://www.worldtides.info/) to provide information about the prediction for the tides for any location in the world. diff --git a/source/_components/worxlandroid.markdown b/source/_components/worxlandroid.markdown index f769e82e8e5..172f93e1c89 100644 --- a/source/_components/worxlandroid.markdown +++ b/source/_components/worxlandroid.markdown @@ -11,6 +11,8 @@ logo: worx.png ha_category: DIY ha_release: 0.54 ha_iot_class: Local Polling +redirect_from: + - /components/sensor.worxlandroid/ --- The `worxlandroid` sensor platform allows you to get the current state, battery level and error status Worx Landroid WG796E.1 or WG797E. diff --git a/source/_components/wsdot.markdown b/source/_components/wsdot.markdown index c19ef83041e..4c1a9706437 100644 --- a/source/_components/wsdot.markdown +++ b/source/_components/wsdot.markdown @@ -11,6 +11,8 @@ logo: wsdot.png ha_category: Transport ha_iot_class: Cloud Polling ha_release: 0.37 +redirect_from: + - /components/sensor.wsdot/ --- The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](http://wsdot.com/). diff --git a/source/_components/wunderground.markdown b/source/_components/wunderground.markdown index 7a304510cb8..ee9c6b45b92 100644 --- a/source/_components/wunderground.markdown +++ b/source/_components/wunderground.markdown @@ -11,6 +11,8 @@ logo: wunderground.png ha_category: Weather ha_release: 0.27 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.wunderground/ --- The `wunderground` platform uses [Weather Underground](http://www.wunderground.com) as a source for current weather information. diff --git a/source/_components/x10.markdown b/source/_components/x10.markdown index 617e756a74d..a4252a53e3c 100644 --- a/source/_components/x10.markdown +++ b/source/_components/x10.markdown @@ -11,6 +11,8 @@ logo: x10.gif ha_category: Light ha_iot_class: Local Polling ha_release: 0.25 +redirect_from: + - /components/light.x10/ --- The `x10` light platform allows you to control your X10 based lights with Home Assistant. diff --git a/source/_components/xbox_live.markdown b/source/_components/xbox_live.markdown index 79bc51317ab..0c5b05df1a3 100644 --- a/source/_components/xbox_live.markdown +++ b/source/_components/xbox_live.markdown @@ -11,6 +11,8 @@ logo: xbox-live.png ha_category: Social ha_iot_class: Cloud Polling ha_release: 0.28 +redirect_from: + - /components/sensor.xbox_live/ --- The Xbox Live component is able to track [Xbox](http://xbox.com/) profiles. diff --git a/source/_components/xeoma.markdown b/source/_components/xeoma.markdown index 428f7b4502b..b0b2b5d55c4 100644 --- a/source/_components/xeoma.markdown +++ b/source/_components/xeoma.markdown @@ -11,6 +11,8 @@ logo: xeoma.png ha_category: Camera ha_iot_class: Local Polling ha_release: 0.62 +redirect_from: + - /components/camera.xeoma/ --- The `Xeoma` camera platform allows you to view the video feeds from a [Xeoma](http://felenasoft.com/xeoma) video surveillance server. diff --git a/source/_components/xfinity.markdown b/source/_components/xfinity.markdown index 45bf58fb5ce..4b1e59d55cc 100644 --- a/source/_components/xfinity.markdown +++ b/source/_components/xfinity.markdown @@ -12,6 +12,8 @@ logo: xfinity.svg ha_release: 0.90 ha_iot_class: "Local Polling" +redirect_from: + - /components/device_tracker.xfinity/ --- The `xfinity` device tracker platform offers presence detection by looking at connected devices to an Xfinity gateway. diff --git a/source/_components/xiaomi.markdown b/source/_components/xiaomi.markdown index f241051ddc2..22935402dae 100644 --- a/source/_components/xiaomi.markdown +++ b/source/_components/xiaomi.markdown @@ -11,6 +11,8 @@ logo: xiaomi.png ha_category: Camera ha_release: 0.72 ha_iot_class: Local Polling +redirect_from: + - /components/camera.xiaomi/ --- The `Xiaomi` camera platform allows you to utilize Xiaomi Cameras within Home Assistant. diff --git a/source/_components/xiaomi_miio.markdown b/source/_components/xiaomi_miio.markdown index 5e8e6a2f431..3589c9c3cba 100644 --- a/source/_components/xiaomi_miio.markdown +++ b/source/_components/xiaomi_miio.markdown @@ -11,6 +11,8 @@ logo: xiaomi.png ha_category: Presence Detection ha_iot_class: Local Polling ha_release: 0.67 +redirect_from: + - /components/device_tracker.xiaomi_miio/ --- The `xiaomi_miio` device tracker platform is observing your Xiaomi Mi WiFi Repeater 2 and reporting all associated WiFi clients. diff --git a/source/_components/xiaomi_tv.markdown b/source/_components/xiaomi_tv.markdown index 301ed1adeba..ac402d90d77 100644 --- a/source/_components/xiaomi_tv.markdown +++ b/source/_components/xiaomi_tv.markdown @@ -11,6 +11,8 @@ logo: xiaomi.png ha_category: Media Player ha_release: 0.64 ha_iot_class: Assumed State +redirect_from: + - /components/media_player.xiaomi_tv/ --- The `xiaomi_tv` platform allows you to control a [Xiaomi TV](http://www.mi.com/en/mitv3s/65flat/). diff --git a/source/_components/xmpp.markdown b/source/_components/xmpp.markdown index 6c79aa48fa8..ae1c44a4b9c 100644 --- a/source/_components/xmpp.markdown +++ b/source/_components/xmpp.markdown @@ -10,6 +10,8 @@ footer: true logo: xmpp.png ha_category: Notifications ha_release: pre 0.7 +redirect_from: + - /components/notify.xmpp/ --- diff --git a/source/_components/yale_smart_alarm.markdown b/source/_components/yale_smart_alarm.markdown index 760ddc30ef1..ae1b8852bdf 100644 --- a/source/_components/yale_smart_alarm.markdown +++ b/source/_components/yale_smart_alarm.markdown @@ -10,6 +10,8 @@ footer: true logo: yale.png ha_category: Alarm ha_release: 0.78 +redirect_from: + - /components/alarm_control_panel.yale_smart_alarm/ --- The `yale_smart_alarm` platform provides connectivity with the Yale Smart Alarm systems and Smart Hub through Yale's API. diff --git a/source/_components/yamaha.markdown b/source/_components/yamaha.markdown index 88a481b27d6..953f6b252db 100644 --- a/source/_components/yamaha.markdown +++ b/source/_components/yamaha.markdown @@ -10,6 +10,8 @@ footer: true logo: yamaha.png ha_category: Media Player ha_release: 0.16 +redirect_from: + - /components/media_player.yamaha/ --- The `yamaha` platform allows you to control [Yamaha Network Receivers](http://usa.yamaha.com/products/audio-visual/av-receivers-amps/rx) from Home Assistant. diff --git a/source/_components/yamaha_musiccast.markdown b/source/_components/yamaha_musiccast.markdown index b95f9ff28f9..e5fda40c6a3 100644 --- a/source/_components/yamaha_musiccast.markdown +++ b/source/_components/yamaha_musiccast.markdown @@ -10,6 +10,8 @@ footer: true logo: yamaha.png ha_category: Media Player ha_release: 0.53 +redirect_from: + - /components/media_player.yamaha_musiccast/ --- The `yamaha_musiccast` platform allows you to control [Yamaha MusicCast Receivers](https://usa.yamaha.com/products/audio_visual/hifi_components/index.html) from Home Assistant. diff --git a/source/_components/yandextts.markdown b/source/_components/yandextts.markdown index 180131ae264..fb36d45ede4 100644 --- a/source/_components/yandextts.markdown +++ b/source/_components/yandextts.markdown @@ -10,6 +10,8 @@ footer: true logo: yandex.png ha_category: Text-to-speech ha_release: 0.36 +redirect_from: + - /components/tts.yandextts/ --- The `yandextts` text-to-speech platform uses [Yandex SpeechKit](https://tech.yandex.com/speechkit/) Text-to-Speech engine to read a text with natural sounding voices. diff --git a/source/_components/yeelightsunflower.markdown b/source/_components/yeelightsunflower.markdown index c1c00caaa46..53aec0ef7f5 100644 --- a/source/_components/yeelightsunflower.markdown +++ b/source/_components/yeelightsunflower.markdown @@ -11,6 +11,8 @@ logo: yeelight.png ha_category: Light ha_release: 0.39 ha_iot_class: Local Polling +redirect_from: + - /components/light.yeelightsunflower/ --- The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. diff --git a/source/_components/yessssms.markdown b/source/_components/yessssms.markdown index f85cbc85462..b5e6e6b6b9b 100644 --- a/source/_components/yessssms.markdown +++ b/source/_components/yessssms.markdown @@ -10,6 +10,8 @@ footer: true logo: yesssat.png ha_category: Notifications ha_release: 0.57 +redirect_from: + - /components/notify.yessssms/ --- The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) to send SMS via its web-site. diff --git a/source/_components/yi.markdown b/source/_components/yi.markdown index 3a02525ffc1..f36e5fb246f 100644 --- a/source/_components/yi.markdown +++ b/source/_components/yi.markdown @@ -11,6 +11,8 @@ logo: yi.png ha_category: Camera ha_release: 0.56 ha_iot_class: Local Polling +redirect_from: + - /components/camera.yi/ --- The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: diff --git a/source/_components/yr.markdown b/source/_components/yr.markdown index fd6e0446721..a5153bc87d7 100644 --- a/source/_components/yr.markdown +++ b/source/_components/yr.markdown @@ -11,6 +11,8 @@ logo: yr.png ha_category: Weather ha_release: 0.11 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.yr/ --- The `yr` platform uses [YR.no](http://www.yr.no/) as a source for current diff --git a/source/_components/yweather.markdown b/source/_components/yweather.markdown index 7dee4d34a86..406d5c138cc 100644 --- a/source/_components/yweather.markdown +++ b/source/_components/yweather.markdown @@ -11,6 +11,8 @@ logo: yahooweather.png ha_category: Weather ha_release: 0.24 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.yweather/ ---

diff --git a/source/_components/zamg.markdown b/source/_components/zamg.markdown index 1d87b5c434f..1a953a77058 100644 --- a/source/_components/zamg.markdown +++ b/source/_components/zamg.markdown @@ -11,6 +11,8 @@ logo: zamg.png ha_category: Weather ha_release: 0.35 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.zamg/ --- The `zamg` platform uses meteorological details published by the Austrian weather service [Zentralanstalt für Meteorologie und Geodynamik (ZAMG)](https://www.zamg.ac.at). diff --git a/source/_components/zengge.markdown b/source/_components/zengge.markdown index ba7768b7d11..40fb6e98989 100644 --- a/source/_components/zengge.markdown +++ b/source/_components/zengge.markdown @@ -11,6 +11,8 @@ logo: zengge.png ha_category: Light ha_iot_class: Local Polling ha_release: 0.36 +redirect_from: + - /components/light.zengge/ --- The `zengge` platform allows you to integrate your [Zengge Bluetooth bulbs](http://www.zengge.com/) into Home Assistant. diff --git a/source/_components/zestimate.markdown b/source/_components/zestimate.markdown index c0f2bd54b69..5aa2d378de2 100644 --- a/source/_components/zestimate.markdown +++ b/source/_components/zestimate.markdown @@ -11,6 +11,8 @@ ha_category: Sensor logo: zillow.png ha_release: 0.65 ha_iot_class: Cloud Polling +redirect_from: + - /components/sensor.zestimate/ --- The `zestimate` sensor allows one to track the Zestimate® value of properties using the [Zillow API](https://www.zillow.com/howto/api/APIOverview.htm). According to Zillow's website, a Zestimate® home valuation is Zillow's estimated market value. It is not an appraisal. Use it as a starting point to determine a home's value. The Zestimate® is provided by [Zillow](https://www.zillow.com), a website primarily for listing homes to buy/sell/rent in the United States. diff --git a/source/_components/zhong_hong.markdown b/source/_components/zhong_hong.markdown index d641ac2e59b..cae13a76308 100644 --- a/source/_components/zhong_hong.markdown +++ b/source/_components/zhong_hong.markdown @@ -11,6 +11,8 @@ logo: zhong_hong.png ha_category: Climate ha_release: 0.72 ha_iot_class: Local Push +redirect_from: + - /components/climate.zhong_hong/ --- diff --git a/source/_components/ziggo_mediabox_xl.markdown b/source/_components/ziggo_mediabox_xl.markdown index f23894df14c..d721ed81a69 100644 --- a/source/_components/ziggo_mediabox_xl.markdown +++ b/source/_components/ziggo_mediabox_xl.markdown @@ -11,6 +11,8 @@ logo: ziggo.png ha_category: Media Player ha_iot_class: Local Polling ha_release: "0.60" +redirect_from: + - /components/media_player.ziggo_mediabox_xl/ --- The `ziggo_mediabox_xl` component allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. From bdb9a933cf7ad2912f4fa1ec60f68aba0e31a7d1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 10:39:06 -0700 Subject: [PATCH 56/61] Fix broken links --- source/_components/homeassistant.markdown | 14 ++++++++++++++ source/_components/websocket_api.markdown | 10 ++++++++++ source/_posts/2019-04-03-release-91.markdown | 8 ++++---- 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 source/_components/homeassistant.markdown diff --git a/source/_components/homeassistant.markdown b/source/_components/homeassistant.markdown new file mode 100644 index 00000000000..d9783a795ae --- /dev/null +++ b/source/_components/homeassistant.markdown @@ -0,0 +1,14 @@ +--- +layout: page +title: "Core integration" +description: "Description of the homeassistant integration." +date: 2019-04-03 02:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_release: 0.0 +--- + +The Home Assistant integration provides generic implementations like the generic `homeassistant.turn_on`. diff --git a/source/_components/websocket_api.markdown b/source/_components/websocket_api.markdown index 18c69dc07b9..5eb414dc6cc 100644 --- a/source/_components/websocket_api.markdown +++ b/source/_components/websocket_api.markdown @@ -27,3 +27,13 @@ websocket_api: ``` For details to use the WebSocket API, please refer to the [WebSocket API documentation](/developers/websocket_api/) . + +## {% linkable_title Track current connections %} + +The websocket API provides a sensor that will keep track of the number of current connected clients. You can add it by adding the following to your configuration: + +```yaml +# Example configuration.yaml entry +sensor: + platform: websocket_api +``` diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 750fe9a0bad..3b871541675 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -67,9 +67,9 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Z-Wave__ - The usb_path in configuration.yaml now overrides config entry usb_path. This is potentially a breaking change if people have a stale usb_path setting in configuration.yaml that's no longer accurate. This should help reduce the number of people that need to manually edit the storage/core.config_entries file if their usb_path changes. ([@cgarwood] - [#22038]) ([zwave docs]) - __iOS__ - Improves the text description of ATTR_BATTERY_STATE_UNPLUGGED from Unplugged to Not Charging as many new iOS devices now use Wireless charging and there is no concept of "Plugging In". This is potentially a breaking change if you have automations making use of "unplugged". ([@FattusMannus] - [#22152]) ([ios docs]) -- __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) +- __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) - __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](https://www.home-assistant.io/components/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) -- __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/sensor.websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) +- __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([websocket_api docs]) - __Public Transit (GTFS)__ * The state for this sensor component was a countdown in minutes. If the next departure was in a few hours, this number became quite large and a tad harder to rapidly calculate mentally (463 minutes anyone?). The sensor's state output has been changed from minutes to an ISO 8601 UTC timestamp, which allows the UI to interpret the state as needed. ([@renemarc] - [#21053]) ([gtfs docs]) * Sensor updates were running many database queries to populate attributes, on top of the bus schedule queries themselves. This is doubled with two sensors. That led to a lot of slowdowns for everything else when using an SD card! Considering that some data never changes (agency, routes...) and that others like departure times are good until invalidated, now we fetch such metadata at first and then only when relevant changes do occur. GTFS sensor attributes are now named using the standard snake_case format. ([@renemarc] - [#20966]) ([gtfs docs]) @@ -152,7 +152,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add some tests for Koogeek LS1 ([@Jc2k] - [#22141]) ([homekit_controller docs]) - Move platforms patch ([@Swamp-Ig] - [#22168]) ([mold_indicator docs]) ([moon docs]) - restore entity for switchbot ([@Danielhiversen] - [#22087]) ([switchbot docs]) -- removed iliad ([@eliseomartelli] - [#22175]) ([iliad_italy docs]) (breaking change) +- removed iliad ([@eliseomartelli] - [#22175]) (breaking change) - Upgrade youtube_dl to 2019.03.18 ([@fabaff] - [#22181]) ([media_extractor docs]) - Upgrade Sphinx to 1.8.5 ([@fabaff] - [#22180]) - Better handling of HomeKit accessory-information service ([@Jc2k] - [#22171]) ([homekit_controller docs]) @@ -176,7 +176,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bump androidtv to 0.0.13 ([@JeffLIrion] - [#22279]) ([androidtv docs]) - Improved exception handling and logging ([@JeffLIrion] - [#22268]) ([androidtv docs]) - Consolidate the netgear_lte configuration ([@amelchio] - [#22105]) ([netgear_lte docs]) (breaking change) -- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) ([api_streams docs]) ([websocket_api docs]) (breaking change) +- Fixing the api_streams sensor ([@Swamp-Ig] - [#22200]) ([websocket_api docs]) (breaking change) - Fix progress for Plex media_players ([@jjlawren] - [#22224]) ([plex docs]) - Add sort by config and tests for Reddit integration ([@ljmerza] - [#22081]) ([reddit docs]) - Fix Prometheus casting issues ([@robbiet480] - [#22282]) ([prometheus docs]) From e2677c4d78d653711c88e2c6c316b5f016a78294 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 11:06:52 -0700 Subject: [PATCH 57/61] Update text --- .../_docs/authentication/providers.markdown | 10 +++----- .../asides/component_navigation.html | 6 +---- source/_posts/2019-04-03-release-91.markdown | 24 +++++++++---------- 3 files changed, 15 insertions(+), 25 deletions(-) diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index c1f901b16cb..19a4ebef49b 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -93,10 +93,6 @@ allow_bypass_login: type: boolean {% endconfiguration %} -

-If you don't specify any `auth_providers` section in the configuration.yaml file then this provider will be set up automatically. -

- #### {% linkable_title Trusted Users Examples %} ```yaml @@ -112,12 +108,12 @@ homeassistant: 192.168.0.0/24: - user1_id - user2_id - fd00::/8: + fd00::/8: - user1_id - group: system-users ``` -First note, `trusted_users` configuration need you use `user id`, you can find it through Configuration -> Users -> View User Detail. The `trusted_users` configuration will not validate the existing of the user, so please make sure you have put in correct user id by yourself. +First note, `trusted_users` configuration need you use `user id`, you can find it through Configuration -> Users -> View User Detail. The `trusted_users` configuration will not validate the existing of the user, so please make sure you have put in correct user id by yourself. In above example, if user try to access Home Assistant from 192.168.0.1, they will have only one user available to choose. They will have two users available if access from 192.168.0.38 (from 192.168.0.0/24 network). If they access from 192.168.10.0/24 network, they can choose from all available users (non-system and active users). @@ -125,7 +121,7 @@ Specially, you can use `group: GROUP_ID` to assign all users in certain `user gr #### {% linkable_title Skip Login Page Examples %} -This is a feature to allow you bring back some of the experience before the user system be implemented. You can directly jump to main page if you are accessing from trusted networks, the `allow_bypass_login` is on, and you have ONLY ONE available user to choose in the login form. +This is a feature to allow you bring back some of the experience before the user system be implemented. You can directly jump to main page if you are accessing from trusted networks, the `allow_bypass_login` is on, and you have ONLY ONE available user to choose in the login form. ```yaml # assuming you have only one non-system user diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 21fd0aec209..d67f20b830d 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -59,11 +59,7 @@ {%- endif -%}
- {%- if is_platform -%} - Source: {{imp_name}}/{{parent_name}}.py - {%- else -%} - Source: {{imp_url}} - {%- endif -%} + Source: {{imp_url}}
{%- if is_platform and parent_name != 'sensor' -%} diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 3b871541675..7a3cf8a5001 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -11,41 +11,39 @@ categories: Release-Notes og_image: /images/blog/2019-04-release-91/components.png --- - +It's time for release 0.91 and this release is all about streaming cameras. Stream cameras in the frontend, record camera streams to disk with the new recording service in the camera integration, play camera streams on Chromecasts or ask Google Assistant to do that for you. -Streaming: - - Recording - - Google Assistant support, "Hey Google, show the baby room" - - More supported platforms +We're still in the process of updating more cameras to support the stream component. If you want to try it today, configure a [generic camera][generic docs with a `stream_source`. + +A big shout to [@awarecan], who has migrated our CI infrastructure to [CircleCI](https://www.circleci.com) and [Codecov](https://codecov.io/). CircleCI's advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested. ## {% linkable_title Notable breaking change %} -Finished the great migration. All built-in platforms are now in their own folder. If you still have platforms in your `custom_components/` directory in the old file format, like `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It will not be supported in a future release. +We finished the great migration. All built-in platforms are now in their own folder. This means that if you had a custom component or platform that had the same name as a built-in one, you have to rename it. If you still have platforms in your `custom_components/` directory in the old file format, `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It will not be supported in a future release. +Thanks to [@Swamp-Ig], [@robbiet480] and [@cgtobi] for their work on this! -## {% linkable_title Trusted networks update %} +## {% linkable_title Trusted networks now support trusted users %} -Trusted users added to trusted networks auth provider. Including auto log in if only one user matching. +Trusted networks has been updated by [@awarecan] to allow specifying specific uses that specific IP addresses are allowed to log into. If a user is logging in with trusted networks and there is only a single user, you can now configure it to skip the login form and automatically login. See [the documentation](/docs/authentication/providers/#trusted-networks) for more info. ## {% linkable_title VSCode hass.io add-on %} -If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck +If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck. ## {% linkable_title ESPHome %} -ESPHome Camera support +This release adds camera support to the ESPHome integration. If you haven't heard about [ESPHome](https://www.esphome.io) yet, it allows you to create your own sensors and smart devices and configure them using YAML. With Home Assistant 0.91, it is now possible to integrate cameras. This means that you can have a WiFi enabled camera that integrates automatically into Home Assistant for as little as $9 😲.
- ## {% linkable_title New Platforms %} -- Refactor ZHA gateway into modules and add admin protections to API ([@dmulcahey] - [#22023]) ([zha docs]) (new-platform) - Add LCN sensor platform ([@alengwenus] - [#21440]) ([lcn docs]) (new-platform) - Add ESPHome Camera ([@OttoWinter] - [#22107]) ([esphome docs]) (new-platform) - Add Freebox switch platform ([@SNoof85] - [#21710]) ([freebox docs]) (new-platform) @@ -67,7 +65,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Z-Wave__ - The usb_path in configuration.yaml now overrides config entry usb_path. This is potentially a breaking change if people have a stale usb_path setting in configuration.yaml that's no longer accurate. This should help reduce the number of people that need to manually edit the storage/core.config_entries file if their usb_path changes. ([@cgarwood] - [#22038]) ([zwave docs]) - __iOS__ - Improves the text description of ATTR_BATTERY_STATE_UNPLUGGED from Unplugged to Not Charging as many new iOS devices now use Wireless charging and there is no concept of "Plugging In". This is potentially a breaking change if you have automations making use of "unplugged". ([@FattusMannus] - [#22152]) ([ios docs]) -- __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping and Iliad is conducting a/b testing on their web pages, making it not stable for use in production. ([@eliseomartelli] - [#22175]) +- __Iliad Italy__ - __Removed__ - This was removed because it uses webscraping. ([@eliseomartelli] - [#22175]) - __Netgear lte__ - The previous three components (network, notify, and sensor) now fall under one netgear_lte component. Check the [updated documentation](https://www.home-assistant.io/components/netgear_lte/) for more information. ([@amelchio] - [#22105]) ([netgear_lte docs]) - __API streams sensor__ - __Removed__ - This sensor component was designed to count connected front-end clients. However, it depended on the implementation details of other components, and has therefore been broken since 0.80, so it has been removed. The replacement sensor is now the [websocket_api sensor](https://www.home-assistant.io/components/websocket_api/), which does basically the same thing apart from the rename. ([@Swamp-Ig] - [#22200]) ([websocket_api docs]) - __Public Transit (GTFS)__ From 5bcc6ffd19df180884ff48891fe1e7bc40696c7e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 11:18:20 -0700 Subject: [PATCH 58/61] Update text --- source/_posts/2019-04-03-release-91.markdown | 29 ++++++++++---------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 7a3cf8a5001..79229e63a7a 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -1,6 +1,6 @@ --- layout: post -title: "0.91: Streaming, streaming, streaming" +title: "0.91: Streaming, Streaming, Streaming" description: "TBD - UPDATE DATE" date: 2019-03-27 00:11:03 date_formatted: "April 3, 2019" @@ -8,18 +8,19 @@ author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes -og_image: /images/blog/2019-04-release-91/components.png --- -It's time for release 0.91 and this release is all about streaming cameras. Stream cameras in the frontend, record camera streams to disk with the new recording service in the camera integration, play camera streams on Chromecasts or ask Google Assistant to do that for you. +It's time for release 0.91 and this release is all about streaming cameras. Home Assistant 0.90 allowed users to stream cameras in the frontend and play camera streams on Chromecasts. This release added support to record camera streams to disk with the new recording service for the camera integration and the ability to ask Google Assistant to show your camera on its display or on a Chromecast. Thanks to [@hunterjm] for all this work on this! ❤️ Check the latest release of the [Home Assistant podcast](https://hasspodcast.io/) for an interview with [@hunterjm] about streams in Home Assistant. -We're still in the process of updating more cameras to support the stream component. If you want to try it today, configure a [generic camera][generic docs with a `stream_source`. +We're still in the process of updating more cameras to support the stream component. If you want to try it today, the easiest approach is to configure a [generic camera][generic docs] with a `stream_source` or buy a camera that supports the standard ONVIF protocol. -A big shout to [@awarecan], who has migrated our CI infrastructure to [CircleCI](https://www.circleci.com) and [Codecov](https://codecov.io/). CircleCI's advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested. +A BIG shout to [@awarecan], who has migrated our CI infrastructure to [CircleCI](https://www.circleci.com) and [Codecov](https://codecov.io/). CircleCI's advanced caching and code splitting controls has speed up tests significantly. Codecov tracks our code coverage and generates detailed reports for each contribution to see how well it is tested. + +And in case you missed the announcement, we will soon start working on [an official Android app](/blog/2019/04/01/android/). And in case it wasn't clear, our other announcement, that we would [occassionally show ads in the UI](https://twitter.com/home_assistant/status/1112752645763223552), was an April fools joke 😁. ## {% linkable_title Notable breaking change %} -We finished the great migration. All built-in platforms are now in their own folder. This means that if you had a custom component or platform that had the same name as a built-in one, you have to rename it. If you still have platforms in your `custom_components/` directory in the old file format, `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It will not be supported in a future release. +We finished the great migration. All built-in platforms are now in their own folder. This means that if you had a custom component or platform that had the same name as a built-in one, you have to rename it. If you still have platforms in your `custom_components/` directory in the old file format, `sensor/my_platform.py`, rename it to `my_platform/sensor.py`. It still works but it will not be supported in a future release. Thanks to [@Swamp-Ig], [@robbiet480] and [@cgtobi] for their work on this! @@ -27,14 +28,7 @@ Thanks to [@Swamp-Ig], [@robbiet480] and [@cgtobi] for their work on this! Trusted networks has been updated by [@awarecan] to allow specifying specific uses that specific IP addresses are allowed to log into. If a user is logging in with trusted networks and there is only a single user, you can now configure it to skip the login form and automatically login. See [the documentation](/docs/authentication/providers/#trusted-networks) for more info. -## {% linkable_title VSCode hass.io add-on %} - -If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck. - - - -## {% linkable_title ESPHome %} +## {% linkable_title ESPHome Cameras %} This release adds camera support to the ESPHome integration. If you haven't heard about [ESPHome](https://www.esphome.io) yet, it allows you to create your own sensors and smart devices and configure them using YAML. With Home Assistant 0.91, it is now possible to integrate cameras. This means that you can have a WiFi enabled camera that integrates automatically into Home Assistant for as little as $9 😲. @@ -42,6 +36,13 @@ This release adds camera support to the ESPHome integration. If you haven't hear +## {% linkable_title VSCode hass.io add-on %} + +If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck. + + + ## {% linkable_title New Platforms %} - Add LCN sensor platform ([@alengwenus] - [#21440]) ([lcn docs]) (new-platform) From 5fec68b5e14a2390225729c44428189566521d48 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 11:37:54 -0700 Subject: [PATCH 59/61] Update text --- source/_posts/2019-04-03-release-91.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 79229e63a7a..3792983a870 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -10,7 +10,13 @@ comments: true categories: Release-Notes --- -It's time for release 0.91 and this release is all about streaming cameras. Home Assistant 0.90 allowed users to stream cameras in the frontend and play camera streams on Chromecasts. This release added support to record camera streams to disk with the new recording service for the camera integration and the ability to ask Google Assistant to show your camera on its display or on a Chromecast. Thanks to [@hunterjm] for all this work on this! ❤️ Check the latest release of the [Home Assistant podcast](https://hasspodcast.io/) for an interview with [@hunterjm] about streams in Home Assistant. +It's time for release 0.91 and this release is all about streaming cameras. Home Assistant 0.90 allowed users to stream cameras in the frontend and play camera streams on Chromecasts. This release adds support to: + +- Record camera streams to disk with the new recording service for the camera integration +- Support to ask Google Assistant to show your camera on its display or on a Chromecast +- Preload streams so that bringing up a stream on a device is super fast. This can be configured on a per camera basis via the camera more info dialog. + +Thanks to [@hunterjm] for all this work on this! ❤️ Check the latest release of the [Home Assistant podcast](https://hasspodcast.io/) for an interview with [@hunterjm] about streams in Home Assistant. We're still in the process of updating more cameras to support the stream component. If you want to try it today, the easiest approach is to configure a [generic camera][generic docs] with a `stream_source` or buy a camera that supports the standard ONVIF protocol. From 01d9fd0e51dd403a5e247b58b2045ff3704b1993 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 11:47:28 -0700 Subject: [PATCH 60/61] Add zha pairing --- source/_posts/2019-04-03-release-91.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index 3792983a870..d834c79695c 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -42,6 +42,14 @@ This release adds camera support to the ESPHome integration. If you haven't hear +## {% linkable_title Zigbee ZHA pairing experience %} + +Every release our Zigbee integration is getting better thanks to the hard work by [@dmulcahey], [@damarco] and [@Adminiuga]. This release introduces a brand new pairing experience. While pairing mode is enabled, any device that is getting paired will instantly show up, allowing users to configure the name and the area. + +
+ +
+ ## {% linkable_title VSCode hass.io add-on %} If you run hass.io on an Intel NUC and haven't seen it yet, check out the VS Code add-on by Frenck. From a20890b34ac1cce4d12d4efabe5122528a66eb5d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 3 Apr 2019 11:49:42 -0700 Subject: [PATCH 61/61] Add social image --- source/_posts/2019-04-03-release-91.markdown | 5 +++-- .../images/blog/2019-04-release-91/social.png | Bin 0 -> 124916 bytes 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 source/images/blog/2019-04-release-91/social.png diff --git a/source/_posts/2019-04-03-release-91.markdown b/source/_posts/2019-04-03-release-91.markdown index d834c79695c..086ee1cc88b 100644 --- a/source/_posts/2019-04-03-release-91.markdown +++ b/source/_posts/2019-04-03-release-91.markdown @@ -1,13 +1,14 @@ --- layout: post -title: "0.91: Streaming, Streaming, Streaming" -description: "TBD - UPDATE DATE" +title: "0.91: More streaming, better Zigbee, cameras with ESPHome" +description: "Big update that brings goodies across the board." date: 2019-03-27 00:11:03 date_formatted: "April 3, 2019" author: Paulus Schoutsen author_twitter: balloob comments: true categories: Release-Notes +og_image: /images/blog/2019-04-release-91/social.png --- It's time for release 0.91 and this release is all about streaming cameras. Home Assistant 0.90 allowed users to stream cameras in the frontend and play camera streams on Chromecasts. This release adds support to: diff --git a/source/images/blog/2019-04-release-91/social.png b/source/images/blog/2019-04-release-91/social.png new file mode 100644 index 0000000000000000000000000000000000000000..b658867f09038cc6f1a040c156965b0275d6b2a7 GIT binary patch literal 124916 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%0Ac)z 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 z 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

Qt-{HmH8H#0eo#8)~ip7X)XZ+;SD?5+8_KT*w zt~|*PcDkejg+r>a;oJ(G3hm~!VqnD{t~vPxi|45~YKqqSe=1kLO&ExgY%yC7G}!#H zYmHVer4T4teQlccg+LbA5O%;@MZceE$;)N;AN3Ptc7#4Ip!>imCkalDjtLcX74Hs} zMI-_Jv60s-9GvV+H?Tg%O8QvB1%=!)Ac}fCs*&%NUcfK)?JZn^S%urJgv0;n>4RbR zlq)HD1`pCEm1)Qm_V$eHsv~#y9^CF2pDV|@?kN)Q8ZEka;cL}$mOAs$Zy_#gKUG*1 zr|T1_y~>=zd*B;{4-;h^xx|0_fy5DmE8sXj&9Yt!QK)e<>FRnl(Way8B=ex@t##U? zR`?)I8Hq>SBbGoCH`Oz8t%De@M-e;4xf9jdzrX9{3>rt_6P~)MyXM#bCo~LkyrDLQ zs~ovnPUP#F)v3(g3^(v{8hXAC7i}f;(mY8Difr;a)O6+zN=g@wF8GU|;$1Aq!e>MI zuohJnA4pFvt}?AEq12sW6Jy407Fja*UsdUp-V8txx=5`3`v2lbfa3Y#aNziUG4{aZ z9|hpwBA)+W{<{<=Fv%XNbHRQ8zi(F!@fq2onqhsUSMgJ3J{mVGG07R=bq6qT;6si9&q9B9}2*QjqQ(iv#ugUfVOtuGj zN&$ZjD}~=i_y_4Q@a#eM-;@R^I56(%^{jt`yMKo@^8L`#J7&%m^Wty#!DnV*+>2|2 z$p0F)_|Hk&sx0cs{l9SyKPiB5J+G}5{XJ~s7z;$SRTUvVWna&JQh6R<|KIm_&)YtI z>V=qZeYh(8{8pH%y}HJZeP7q*eKQTG)cU_bJ|Bn|5eCV0o3(@52n3?&N@)77%#>7C z$g3|A(eeK^?oZ;XulIk6eDf=LB}T?>^TO{y?e80$Z81_BS^Zt<&E zTz}1K6$$X2P5FfuJosyJq}TyhheeCVtCar-pa6Ij|MSDucNEM9ex>u)CLTHdUjBUW z*IV$p5C6@2@}+9pIZziYtEs7JZev5v$H$jmon7t4$!P@?e$xO*iHo}hmT$N90}kIG z9Xm=$NH|TS+(al=e_WDg3H>#q!2$Ijdr2rIn30hYJKq|NZT2U{0z`vLMtdQkXba-F zJ`6EB4S~3(s1eAu-^4Q#MOV7p}aq$jmp9LFH3-~FoeB0nmwX5Txk1E zpI(#mxF-dOQr~s+VVj7UL6x)iZo~_&LW;u-kDYo7Pk;(&-J{) z`oWY(|1`3->rNf*c#e=+pC29(xgQ1m9I`o4&GX*L=?C|^;6RC?yj#^D%0r6t44utu zr>C8c?$Uv}f>e$NtC2WhBtKswa&@)URf{mWNlnp0_7nJhR_%>2Vn2Px=*5(Ei7?=)b?x7vQqLQr(V5 znxc#(&sSxS8daeE9Xa@PNMol=!9gtkFz=p z^@Rim{DYBaVOz+fZ3*mZBs=!w(yvG9B4rg7goAg*3a--a<}gNnkc{L-2O!g8BL8ab ze^<0We>8shlimQo+M-Tad3VwFyU231;7_SJH?LmV!>M9y818r>JYcCiHeg>=Zi|eX z+v{q9x#k+!j42_2*>en?5=sFuM#TEN6|n*E^Fk~TdDg5f0CRGPwd8u1N-R)|lR2(w zxTt}c^=(3?(FytbfE(hm>w)>$ULVcV{T+;R{aH$p%YGDcYeIzcNt-`#w)dYsUlzmC z!ms4xg`C4klgcee&=x{pT;y@L86Tn=`%bLK>aDebbXKT-jp^^iB2=d#wH|46R#4Pi z%^!BRDX5!Q_hP!YLk+_s|JBC-^Xxj3fc;XTWx@FJ%a`S%_iHbhZ?@rt(CMma(CL+0 z-qLhr<+Nu~zvXzHrE}Fn*yCmZ4B|mNVZ7gE1%di~MS|((Z&2J!ja}-F3wV{Q>2E2z zxHZ@0n_gEp9gxNd&2Z!(9W16DdBGt=|)`Nnt|;C;_U zVUnt<3+`2ubw^Vhn4eXikbP?y^bCMiCVYMS&KB{uRu?9{^VfRy+zeR8=&o-UqxyTC z6HGC^@ukf_^W3)Ua^fG!c7fkky#4jP2yms?wJcZb)VYex?IIse*1GIBe^E_p1|*9O z8BV>9DF0{)_H>19&>|x(3@6z2G(Wctt)Zd#=xrQHXMNTQRo=B1i zeD?vRE1P2`q|DZZ0OF>Km<=u?O%2`h>BVDfzRQ+B-la7ZY~;djSN7K=HYx!N&Nu3d zr_0$V^8gEG(rmIhRl@Ct_jSsL)SN0fDLi`SiB-$dXfvyJ5Nt!&)b}Ijiv! z4u~@m;<=)k;zQ?HOXuV2*~`O9kIVk(PIVb|GK#P@e)=ub|Kh58QvrLpI@hr-O&Fa( z$DMsNWdca8X(~~f=0QUBeH1D&e)L5Jl$nr9?f^=2UBVjEj@wj85&Y##I_F_g@tL4L zCg|><*>qx^+tC}XwbAo^kE7WYCZ<|3V6&7I2z0;=QsR4Gy8-ZTg!}v0C6(mu%vl2)vtkGBx&sMeyn*C2*IFO@Qi{9mW$8a%Ed64k znx6g5c8K-MGX^-5ib5y3l)>BM%y(c&U?&VD(%g!JijJlP+slNY_<+h&tuDo`fse`$tEe}%AdP109 zp<);VrS78hmVIBIuU$Felk&L7a&XJXxSsD?;!J^F{knsLp6f|=k=N`c4%Zgy$<&M% zUOZzrwFQcHjeJwM6@~GT_2g;(y*X?MuWK#uLca_GurK zAmA6mo9FI1g$}+|tkQLnqj{D1q63r4lve9{QBoheJ3!bTP{k8u5wwV9VJ}yK` z8G)R00Kg0y?Z4`ZYnXR%3vAJ-hn{$4$jc-_jTBgh4}iGl$+PriV%oiXa5;)5kXBqy zY3>jKDD~UxQd58Bs9XK&n$B;gqVMJW>n{0E2p&NSM35m6_UB-mLx4eZjDI1LJL>n! zQX?j-k5WMH#!Oi5Xu*$oRtBM&Nc9SGGTDBcy5Ac5DncHtm|^0ZjSwh0n-wx23lgef zm~mNQJlbY?qMfSAV z_XgHO*?^3KM|*=F5j0xnms8nYnA&21GUxkaxXHBQjf9AyVATw zJ{U78>vGTTt=cc>|2s^WGu()=a@=gst1P~6^Z7ZaT?wJk*uf`mGj)%GE<6fJgSewA zE;O-4;GGsSZ+zS^%k%gK!S0b*I$O22_?kfgqrv35${KEb*hX)w#l7r{{1g-!9LIlZ zCtNFTIhyx-;|n5f8PkUQ0eNW+5R5p@V^4~plI;<_#0)J8QT}167JB#4wY>>K?Ewi? zkU5~|tAha9z^@-x^*`~c#aFDJ{S2b!(q$?B$-N|V``1KBcL zK3^1Qo*wi_<|!ttI@^|e^UcZX|2^3?j@>f||IvNZrp=vk^Q4%^rV9sT8<#&rpk5cJ zlT(j(_qqj$^m_c89GY$<$Z=R|*TbyF?99f@WjJ4NeCZ7E0~*C&Y~{2eT~?1k_mlWn+%`(2 z(ybAqdhUv=EZ;p(Y#Ts;y~POy7T`E4AIyCN}*1Hkn60YHt$xc~-`pD-lp6=-W&gR*bUV{^c zW~+8CHJCjh9Chu(hUtM=0!xDFzU^{fiV>+k|5KV?m0pQzD^kn(C2^}!_uW<~;NjB6 zeWa`lakQJ&_1EXqmjW)}RQV+i zo0893d}RCeDR8fumA0RsK|3;j!+U;nOGrUU%m5|6jxVjTOs+f!&n&M8I;yx$b`9_>UUZTg3f>Y!aT^tz)J0>{NH>hlzY>S@=7{ zLtzW1@+CV>bqep-y}!^Ej{fWS{-5*97#rl)yaHx$eO$38-mHoyJsNt@T}KyFvJ8Xq z_~|-Dz94@1d`$;mrc`y%wuIGQO^GFg@>Ykz;Vv8FtZTW#UL8&V)Ai+4CQTw}v~`fz z=2gLcCWJ@e6Igk!79l<&FWgTxG2$O$;eRIO|EumiznW^hG%iI6NJ#+cLMQ?jnh;v( z1Q0PuQKUB&q)8Pb)ldT>i1<(>6ags$F(4pCdKU=Q5b0Hr-diXW=b3lJ`41)^va-&H zbF%ij*L`36+I#;FiK03!c>T@&e$_l$M@b1JnB7(VJXPr>TSJ(4(pofqL?f^n@}%Oz(qK>Dl$ALg@&~bB@GUskOmK>+7)3SRHOO^q2PgJ$^UH z@RtdoLiyjM&V=rEY(e98!j1U*rhnxMVDe)ow%O3vCrn@SdwQ`2DOCsepa0pJfXKKj z;2wDE5%ruuiTg&H2bEXIvWtJ6{l3ktg z>2M8|PnIv zRb4xtqyImpiQgd-FZrE~%uf9H!Hz@AF)59dcTdx7haPPGOn#kYEQONn`siz5*KSqo zFUO_mE5)UN=(UVcV^GT!V&|86zBwyS!mwcNy5C_PH$VE*d4{(pUr-qwt#Ie}^70}S zNZv`6zjEhEs$Pw5lY&~c`RDh+P;X}+L7!1~E#q?MWWOOt>K-PcyP&guR0!9Z?CH5Fzqvf{!1 z=g#o%(^H~uQNfn+=)BGD=&gkLq^$W*6z!Rj zv5bBi&{RriI6kI$4@tb33c%vk$;zwB7io!yhib*f+Yh1_(d9X{XSu)o{=YrB<^)Z0 zT7$Qyo<$7({UKrMe(Uo4<4+1{1#P@0TH+XW+{+#Jr+}J(hwV;66bP^xR_t zPRE;Drl&Kt60yi*qR6*7{%!$Fna*MR^;GP@p3d?kCBL*$857jDLg=M6SS*f%7bV#$Uz84(MP>P4j+={g%9GWmI_m`DbX2B)er^7U zzWcUy)R9$2q>@G1$$mcTB7n;Q?P!pcHv)zfb}w48Wy^qC+D*JNs;fu%Z@4R|ApsP9 zuU@^Pi>3E^=5z4%w(>&%?$N=PiXla4H-XSCE{lN7!t1e0aj1rdhV_BEK$`gY_$iV< z!L9gSG-6xsZeNL_HhY#`1T%Cz`Q=#4xNUoKJda@|irI!!7it@Wtbv6CO{EM~Dw^+M z*i1~#{T-(5I);Sag!Za(0m*FWzm}IPC9#ccPMD;d3L4bi%5O4qZj}DXRCM^Hu#)P$ z4$sonZ7$2Z?Dv>ix{Z8DlTH3dr83Kt@}{P{MXNa-{1({hKoK!9qGFi7pIP;U87{(* zS!{5wc?*=VK}_pZK^!sv~%44(2oqM6|bAjL@u1iJ=b~=;mR`5Ze(Pn@SQfI_FaXlES4&cb60(o z*5sSX-3Ii^W;+r+el~~+5adPq!5%Yu6V!TKtn-^eN7kEi};;FpQ@{5b)5$&wRLQG-! zC9{;qpipWeR*XDuLN4}sVOWI?E^Wo)#?#P#qpNQZZ{rs8USO*qg`Ji~apKK`KCeOy zEuoL6X}D3vG5}eodz_rE-8qnnf*Qp&&`m-;SvA&uW6l;)w==#X$gz#tvk*3^0uRw< z35QPy^q)NjRRT!yTAcB=#jDD{4N%`Wd7~i+l$H3V@RFf`<7UiW=_Ag3)&%+jvTD50sTQoXJ0jvsl3b-W>oO~ z&Ez(}fwVNf$Z|eE_tP_Puc`%G7qpkb*y=y|Y6X zt5h^%Pf0P;v>So7Emv@P&QV+E3a5DL@3Ve6SeP9ydXqj#j0dwGE*o%jquB)o;&+~{ zT_r%Ut>fbu$$7RiBSIwhz;}Kt%V!Efq_x?9qgXQc6&oa3eajDR$)>oX|k$fCE zXBpRS?&O;vMRDRL@6E3VGrSrgc31+qDJgeEX)_sI@4Nv1qw->XljHJBfZnq1ZFc?C zf?eecIQd30d+ywWQq{M}RSTFO>IK%`>;wHHJE1;Wnkhv^oO4E6C=$zSL6@5*Y*_q> ztxCT7tLFI;D}^8siq9QRLGi%+b&cdyNB~T)s=7+CqzS_NlnwQzqr;xN!R9WX1PU~) z_waflO@bziVgF>rErb(!L``@^xVpVWWt!5?)ip zsZ((-&3dNf`=T3~c>7%{Phv&BKZV!5KS~%!;@bX1*W(n%zIyr)x{*BW?9^FVS)u~6 z;Y}$rR7vmRBO@c-y3@kcr6{Plwccr-8+^SlF2rMhSzoo(8bLt&d%iB9i<&hF@yxQ0 zdM5tQ&&h0ljBON4+?8G5^>ixkjeSxl)96(#1#4&@|ML6R@El51u7K%d+m1ySw-YT* zEd^UOW`KT3`+hp<^^oh6b=*HxGk9q;fi`1`pA*ZwU~fDGtBljPj8jnk3xqr^ITU(U zWaXkwYZc5-Q>*R9abZt&4KK5CtWz+BKEGoWkj32TvvPzWNUAI+$A+T(jZvFDMlxrP zcO2+PAy|k4y3?VQ@Rr61_CUYw_9aKzK;o_o5z~eToXD(Cw_KdpuKE7Eq!U4{M0ZwN zy(HCVDrK9RE_Ge~a(YBX@5GpomF}7oHHF;>7b#opP8s6<1s-#%bDdZc+aK~rdo#muw4o zb+Bk1tKUq?bmW0^)5lFQ*a)zLx#lb%vHhjgo{M>6#&20g` zybi;DX&I5l(ke#G+bpv_LFcKH#<#xwt1{*wjoa|*1&e@;*H#IpUKCpBJW6^|oS4fSnZmTtRx&7b#4@)@o&@_*ygv%Ib1Ug#hV&&3LK`VS zJ9xAQC18giz?msl7+ImZ-^+!3SS`rmU4(CDT=KsJ)7`tmBt1v(#`TE4kJ(c8#9T-> zz&ROi|5*Swqr-Ldf=moUv7r{)u3>RIx8dRx>>FF7VC1Ybk>d!rV=d$0#Cn;~h*A^B z%tx#g5J++erHqN2U#O2KYOc`1xhKz2?DKk;7cy}JR56Qc3sXFt%zW++#H>>z0gqq*>2oSAiEnw272C+sV2I9H!9m8nY=caER!^=g=Sh&q2OG8I)YxIVG( zzU}4_etF9a>cp&KNVU)Rl+7Qv=7T7@#HB44J#i&|$MDaV1)>xl!#mC4x{qb|0idW(Ru-185UCjXvKxbmlV8&z!^@-erZOY%V3t6!!FsMBQTn*^ znbf8HIr$A@bw|_PG=x}IiU##gd-SUM1`;4yX_ykgt|LbzXbIsA-xf zpta9_UT+b=l;p~HK|icwlfs+!={kQ21Pb-+)vbKeC$Q)Vlp6OKF}-Kl**O2`Wa^NP zIBUnjlnHyx+v3Of2+`}Hvmmw;QJnHHkb!@sIW0S$doOC{tJA;9=fB_P=oioLuPR#l zf6&C#*Y#Fg$PV0R!DalAoio;D4)Fz6W${v?LMQj%*l8Bnaxb8gcn^`1%M6vJ7bu4? zmRr(&T^g{-QU*G@?*dOz*6SH}s^auR8kLrpR?^_8*+T0e*S+|%%)ptRoCfJk=wPII ziPx8(7`sod4T6-EiB{(=>0iMw^5C#+`qWfLt z1aUA8Z!>&zuR|>&2#`J6ca3AC5#nvqX)o)E=3uGay7i`83Eg54X>F@)2~gy@u@>YS zIoepBlhBmhmo_`wl-|YL5*;wb_M>;T>dTkOiH7J_a#&4;Qkq5RD+w219AdD&X=mq5 z!N2wrxsar9%%RV#DjZjg8D7&%im7e4w?hFd=_kmO)Jnxio1GxxW(i^|sx)#fJ0h;t z`N4uS5m9pwhuP-AY{Th--4}pNvd!5azcW@gsM?8{GB8yhEPbjoH^x%IY30r2SN6-5 zt>)s&uIBvXVUXl{o+wDa54Gko_<*SGB2i_VNVI)4^VZ0-_2q>8{HshLIpy6kpP~4X znFqTQ#0Q?AZhpD6VhW;m>1L6;HevSj$}@#uDXH1(66tFb z#?|(rTq~uOcBUr$i+1yN$83C8To{6>RGBn@o`evo8e!|C5bMSSMAxULpE(hy6Rme% z(vc&Qg#09UVnRYfaP9;06Aj6wjb9`08vFz%0E|Ng7`8&|!v833{{c!jrj?yaEnI3x z>FIu@&r!mVOpFMAJW0AYn{#Rb*WI0*VJu@KheVy# zBgr6N-)}A7k`xERnMH7qkBw5O)LG%ua?g$6xc;9PnpU7+EHdIOBii4OunoPmet$r| z)OgOO(I4NDTt90?hd7}t_jHwAoo;Dn3=uZ!aOS*xd1q~s#pU)%OT%4BGS46Bt|1F4 z$!Qy&+Sg})Xk=%N)%XpyT0V_G2!e{BHqB0%_{dMBE0`*FQ9?BkGdjjK= z09@cQ38juZZ}8R4F+TIC({jdR2`}O^8SCuI7a~{FV(EjAJU4l6Xjm`_=NRyzmcrhD z7`m(JFp%DGmUh}@`1a!HYTm*|sNKCYFW?rd!`I~ImoUex}D%H2@_|}~u zDlLm>X_;=0j})&HUwd}jEy|l$JdY}Bh{a`!3zJT4csX-Y(h@liwnSlj=~E(d`cq@7 zuB_&dxH>#`XZEGRt&=$a>qb3=A&5-Ne7zf?tDR$lnB6;Wa9F`h7j_&H zKw*M@n|Ju|+1`=i7fLtnxXU1qifaO#dgyPSm{aLXQrgV|)a7Sw9u`8Pf+)^(&>&rr z=ae{WIZiGqf!9uA$9}#zP!`wHDnzngcOOtma=!|Td3n=w`XD+!)>G%u$c$J#j|2C1 zb^i1-_yClVl$5j~^tayfSlBB4QD@`+DU+f~j*!DLE3AdJZ|z9heCHGE`6)S2E;vs~wVT{P~_3E8wb` z!ZjnC2dpL=2!%RJBw5yGof`HLL=*PGL$DS#ipE|a2D<#6MUPP~^In&JKyNg5?z*l5 zZXobef-j6pvMRp2r^gQowVfaCg?t*Bs)YPXXuh;3zm&0J(fv!w$?<697HfaHTy6}L zuI!Qfs~N7Djcw>qqT>kqWU+bPap^uZ&=yHUMK~>deQn7z?IhNSEQ9`!&#N*6AcPEx zP5*%4UI#7S9xUtCcJlD(=PB%vG$R51=PwT+q+gxcw10Q2z)w6`d<3{4Vs1g zqW5e;{{9NI+YE@d&s9s#O0mhN{~6@|*FL^^R|O(twa?PWk|b(FO1Z5Fj4onl{9Z7* zl??LQKjT(=8UfGn*Actl$8NHpZOMDBNK#Zks)b7aGtBotwsZzP>H0I30p>r6!0&b& zLHyq!Ad)zv5PMoXfxTm%j}*qrAyc*})=U@^=}W z?{&cM=htbK=$(;yq&~ci3#981mHw+|6)oxa4tK_1X9nM z-6VJT|M%_PB*=+G))cEw=g1UO;a~r@dH=5~kF26zt}f9oNXY>%*J(14IwhID`~IJB dS%uc0k};I>_q%b_ik>5Vv^8{L7&YtQ{{mUia!~*P literal 0 HcmV?d00001