From 9af4bd95c0232f41f8348a2b50d3f827467f3c0b Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2019 12:48:21 +0100 Subject: [PATCH 001/236] Bump nokogiri from 1.10.6 to 1.10.7 (#11368) Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.6 to 1.10.7. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.6...v1.10.7) Signed-off-by: dependabot-preview[bot] Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 88969a48fa7..e6f7c14f627 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,7 @@ group :jekyll_plugins do end gem 'sinatra', '2.0.7' -gem 'nokogiri', '1.10.6' +gem 'nokogiri', '1.10.7' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem # and associated library diff --git a/Gemfile.lock b/Gemfile.lock index 18e2e968de2..76fb16a02e4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -71,9 +71,9 @@ GEM mini_portile2 (2.4.0) multi_json (1.14.1) mustermann (1.0.3) - nokogiri (1.10.6) + nokogiri (1.10.7) mini_portile2 (~> 2.4.0) - nokogiri (1.10.6-x64-mingw32) + nokogiri (1.10.7-x64-mingw32) mini_portile2 (~> 2.4.0) pathutil (0.16.2) forwardable-extended (~> 2.6) @@ -123,7 +123,7 @@ DEPENDENCIES jekyll-redirect-from (= 0.15.0) jekyll-sitemap (= 1.4.0) jekyll-time-to-read (= 0.1.2) - nokogiri (= 1.10.6) + nokogiri (= 1.10.7) rake (= 13.0.1) sass-globbing (= 1.1.5) sinatra (= 2.0.7) From 9354ed88098a006621428a68b6f1015971514e6d Mon Sep 17 00:00:00 2001 From: clach04 Date: Thu, 5 Dec 2019 08:43:45 -0800 Subject: [PATCH 002/236] Document mandatory emulated_hue port setting (#10289) * Document mandatory emulated_hue port setting Since 2019 August/September firmware updates for Echo and Echo Dot v1. * Amazon Alexa/Echo emulated hue port doc changes * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/emulated_hue.markdown | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index 89f77f3fbe5..c184b2b0e9f 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -55,9 +55,8 @@ emulated_hue: ```yaml # Amazon Echo example configuration.yaml entry emulated_hue: - host_ip: YOUR.HASSIO.IP.ADDRESS listen_port: 80 - # Alexa stopped working on different ports. Search for "Philipps Hue Bridge V1 (round)" in the Alexa App to discover devices. + # Amazon Echo/Alexa stopped working on different ports. Search for "Philips Hue Bridge V1 (round)" in the Alexa App to discover devices. ``` {% configuration %} @@ -71,7 +70,7 @@ host_ip: required: false type: string listen_port: - description: "The port the Hue bridge API web server will run on. This can be any free port on your system. However, all new Alexa devices require listen_port: 80." + description: "The port the Hue bridge API web server will run on. This can be any free port on your system. However, all new Alexa devices require listen_port: 80. See `setcap` note below if this is set below `1024` when Home Assistant is ran as a non-root user." required: false type: integer default: 8300 @@ -146,16 +145,19 @@ These attributes used to be found under the `customize` section of `homeassistan You can verify that the `emulated_hue` integration has been loaded and is responding by pointing a local browser to the following URL: - - `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. - - `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. +- `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. +- `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). +For Amazon Alexa/Echo, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). Since 2019-08 Amazon Echo firmware, Alexa no longer works with port 8300. + An additional step is required to run Home Assistant as a non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as a non-root user. ```bash sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3 ``` + Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. ### License From b8979b00ba23e645788308cf53ab47d6a1fba14c Mon Sep 17 00:00:00 2001 From: VivantSenior <49829548+VivantSenior@users.noreply.github.com> Date: Fri, 6 Dec 2019 12:25:10 +0100 Subject: [PATCH 003/236] Added information about ssh (#11366) * Added information about ssh Added information about ssh access below the configuration section * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/cloudflare.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index b501faed094..0c42516f43d 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -50,3 +50,5 @@ records: {% endconfiguration %} This platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address. + +For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port. From 9706b2de67c0c5800947ce227c34bcdb604e03b2 Mon Sep 17 00:00:00 2001 From: Nicholas Amadori Date: Fri, 6 Dec 2019 12:31:43 +0100 Subject: [PATCH 004/236] Evohome update Jinja templates to snake_case (#10728) --- source/_integrations/evohome.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index 4cd2d83222c..5b6b12d43d2 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -86,11 +86,11 @@ In Home Assistant, all this is done via `HVAC_MODE` and `PRESET_MODE` (but also The actual operating mode of evohome entities can be tracked via their state attributes, which includes a JSON data structure for the current state called `status`. -For the Controller, see `systemModeStatus`: +For the Controller, see `system_mode_status`: {% raw %} ```text -{% if state_attr('climate.my_home', 'status').systemModeStatus.mode == "Away" %} +{% if state_attr('climate.my_home', 'status').system_mode_status.mode == "Away" %} The system is in Away mode {% else %} The system is not in Away mode @@ -102,7 +102,7 @@ For the Zones, it is `setpointStatus`: {% raw %} ```text -{{ state_attr('climate.kitchen', 'status').setpointStatus.setpointMode }} +{{ state_attr('climate.kitchen', 'status').setpoint_status.setpoint_mode }} ``` {% endraw %} @@ -110,7 +110,7 @@ The Zones will expose the current/upcoming scheduled `setpoints`: {% raw %} ```text -{{ state_attr('climate.kitchen', 'status').setpoints.next.temperature }} +{{ state_attr('climate.kitchen', 'status').setpoints.next_sp_temp }} ``` {% endraw %} @@ -118,8 +118,8 @@ All evohome entities may have faults, and these can be turned into sensors, or: {% raw %} ```text -{% if state_attr('climate.bedroom', 'status').activeFaults %} - {% if state_attr('climate.bedroom', 'status').activeFaults[0].faultType == 'TempZoneActuatorLowBattery' %} +{% if state_attr('climate.bedroom', 'status').active_faults %} + {% if state_attr('climate.bedroom', 'status').active_faults[0].fault_type == 'TempZoneActuatorLowBattery' %} There is a low battery {% endif %} There is a Fault! From c9800157e8815c7e77a6da07704249549d78db20 Mon Sep 17 00:00:00 2001 From: elwing00 <56235263+elwing00@users.noreply.github.com> Date: Sat, 7 Dec 2019 03:26:38 -0500 Subject: [PATCH 005/236] Update venstar.markdown to current preset_modes (#11378) edited the "hold mode" statement to be preset_mode. Changed the 'off' preset_mode to 'none', and added the 'away' preset_mode. Confusing to a relatively new user since hold mode isn't in the states dev tools or general climate documentation, and 'off' isn't a valid preset_mode --- source/_integrations/venstar.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index f2c60460c41..f87295d3c99 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -25,9 +25,10 @@ Currently supported functionality: - Turning on away preset - Turning on hold mode preset -The following values are supported for the hold_mode state attribute: -- `off`: *Enables* the scheduling functionality. +The following values are supported for the preset_mode state attribute: +- `none`: *Enables* the scheduling functionality. - `temperature`: *Disables* the schedule and holds the set temperature indefinitely. +- `away`: Places the thermostat in away mode Note - Please ensure that you update your thermostat to the latest firmware. Initially tested on firmware 5.10 and currently VH6.79. From 954df6ec90f40e983c4468de104d63175e2e73e6 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 7 Dec 2019 10:18:35 +0100 Subject: [PATCH 006/236] Add notes about Homematic WebUI configuration (#11377) * Add notes about Homematic WebUI configuration * Minor changes --- source/_addons/homematic.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown index ac7187e7393..954063d3f12 100644 --- a/source/_addons/homematic.markdown +++ b/source/_addons/homematic.markdown @@ -127,3 +127,7 @@ dtoverlay=pi3-miniuart-bt ## HmIP-RFUSB HassOS > 1.11 support HmIP-RFUSB default and don't need any configuration. If you run a Linux, you need to follow the installation guide from documentation to set up the UART USB interface on your computer. + +## Web UI + +To enable the experimental WebUI for built-in CCU specify a port number for "Regahss Webinterface" on the addon configuration page under the network section. After saving the changes, click on the "Open Web UI" button and proceed with the [Homematic WebUI](https://www.eq-3.de/downloads/download/handbuecher/WebUI_Handbuch_eQ-3.pdf) configuration. From ec5c965628dc72950af4764d1e4c1eb05de6d95f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 17 Nov 2019 14:38:24 +0100 Subject: [PATCH 007/236] Replace components with integrations --- source/_docs/configuration/devices.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/devices.markdown b/source/_docs/configuration/devices.markdown index 343b7ed8432..d49409db3e8 100644 --- a/source/_docs/configuration/devices.markdown +++ b/source/_docs/configuration/devices.markdown @@ -6,7 +6,7 @@ redirect_from: /getting-started/devices/ Home Assistant will be able to automatically discover many devices and services available on your network if you have [the discovery component](/integrations/discovery/) enabled (the default setting). -See the [components overview page](/integrations/) to find installation instructions for your devices and services. If you can't find support for your favorite device or service, [consider adding support](/developers/add_new_platform/). +See the [integrations overview page](/integrations/) to find installation instructions for your devices and services. If you can't find support for your favorite device or service, [consider adding support](/developers/add_new_platform/). Classification for the available integrations: From d6b9eae003cc81fbface1b3fe12b5456cc04fbf4 Mon Sep 17 00:00:00 2001 From: Dmitry Tretyakov Date: Sat, 7 Dec 2019 10:18:35 +0100 Subject: [PATCH 008/236] Add notes about Homematic WebUI configuration (#11377) * Add notes about Homematic WebUI configuration * Minor changes --- source/_addons/homematic.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown index ac7187e7393..954063d3f12 100644 --- a/source/_addons/homematic.markdown +++ b/source/_addons/homematic.markdown @@ -127,3 +127,7 @@ dtoverlay=pi3-miniuart-bt ## HmIP-RFUSB HassOS > 1.11 support HmIP-RFUSB default and don't need any configuration. If you run a Linux, you need to follow the installation guide from documentation to set up the UART USB interface on your computer. + +## Web UI + +To enable the experimental WebUI for built-in CCU specify a port number for "Regahss Webinterface" on the addon configuration page under the network section. After saving the changes, click on the "Open Web UI" button and proceed with the [Homematic WebUI](https://www.eq-3.de/downloads/download/handbuecher/WebUI_Handbuch_eQ-3.pdf) configuration. From 8407753dcfca9b718223d1f7fb4f6c700de8c33d Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 7 Dec 2019 14:52:21 +0530 Subject: [PATCH 009/236] Remove dash --- source/_addons/homematic.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_addons/homematic.markdown b/source/_addons/homematic.markdown index 954063d3f12..4ff78f9e420 100644 --- a/source/_addons/homematic.markdown +++ b/source/_addons/homematic.markdown @@ -1,9 +1,9 @@ --- title: "HomeMatic" -description: "HomeMatic hardware support to turn you Home-Assistant into a CCU." +description: "HomeMatic hardware support to turn Home Assistant into a CCU." --- -You can't import an existing configuration, you'll need re-learn it into Home Assistant. There is an experimental WebUI alias Regahss support since 9.0 - before it was required to use a 3party tool. +You can't import an existing configuration, you'll need re-learn it into Home Assistant. There is an experimental WebUI alias Regahss support since 9.0. Before it was required to use a third-party tool. Follow devices will be supported and tested: @@ -71,11 +71,11 @@ wired: required: true type: string key: - description: Encrypted key. + description: The encrypted key. required: true type: string ip: - description: IP address of LAN gateway. + description: The IP address of LAN gateway. required: true type: string hmip_enable: @@ -126,7 +126,7 @@ dtoverlay=pi3-miniuart-bt ## HmIP-RFUSB -HassOS > 1.11 support HmIP-RFUSB default and don't need any configuration. If you run a Linux, you need to follow the installation guide from documentation to set up the UART USB interface on your computer. +HassOS > 1.11 support HmIP-RFUSB by default and don't need any configuration. If you run a Linux installation, you need to follow the installation guide from the documentation to set up the UART USB interface on your computer. ## Web UI From 650c6142bb34e930e0e588b49d29889bec9f6c1f Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sat, 7 Dec 2019 04:25:49 -0500 Subject: [PATCH 010/236] Richard uuu patch 1 (#11375) * Update input_select.markdown * Update input_select.markdown --- source/_integrations/input_select.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index dadf14dd546..beb18f39846 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -62,7 +62,7 @@ Because YAML defines [booleans](https://yaml.org/type/bool.html) as equivalent, ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for 'initial' this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Services From c2a775aeddf4a3cae2a2c110a93ce56503456dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Beye?= Date: Sat, 7 Dec 2019 10:30:49 +0100 Subject: [PATCH 011/236] Removed obsolete paragraph from mqtt climate (#11381) --- source/_integrations/climate.mqtt.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 4242674bfc2..7916ae80c62 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -10,10 +10,6 @@ ha_iot_class: Local Polling The `mqtt` climate platform lets you control your MQTT enabled HVAC devices. -The platform currently works in optimistic mode, which means it does not obtain states from MQTT topics, but it sends and remembers control commands. - -It uses a sensor under the hood to obtain the current temperature. - ## Configuration To enable this climate platform in your installation, first add the following to your `configuration.yaml` file: From 86b1902aaae618c4abd1842628e83912eb018b19 Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Sat, 7 Dec 2019 21:18:43 -0800 Subject: [PATCH 012/236] Update backup_dropbox.markdown (#11388) Basic grammar fix. --- source/_docs/ecosystem/backup/backup_dropbox.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/ecosystem/backup/backup_dropbox.markdown b/source/_docs/ecosystem/backup/backup_dropbox.markdown index 9586b3fea0c..fba59d4de13 100644 --- a/source/_docs/ecosystem/backup/backup_dropbox.markdown +++ b/source/_docs/ecosystem/backup/backup_dropbox.markdown @@ -4,7 +4,7 @@ description: "Instructions on how backup your Home Assistant configuration to Dr redirect_from: /cookbook/dropboxbackup/ --- -Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) similar to [Github Backup](/docs/ecosystem/backup/backup_github/) +Backing up and regularly syncing your Home Assistant configuration to [Dropbox](http://dropbox.com) is similar to [Github Backup](/docs/ecosystem/backup/backup_github/) ### Requirements From fb4be8edfcf8b1cace340502ccfc059be08cc3e9 Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sun, 8 Dec 2019 13:51:10 +0000 Subject: [PATCH 013/236] Add note about Snips Console not being available any longer (#11397) * Updated snips.markdown Due to acquisition by Sonos Snips Console will no longer be available * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/snips.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index 86f8cce136c..a0f1c2da504 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -7,6 +7,12 @@ ha_category: ha_release: 0.48 --- +
+ +The Snips Console no longer available due to acquisition by Sonos. For more details, read the [announcement on the Snips forum](https://forum.snips.ai/t/important-message-regarding-the-snips-console/4145). + +
+ The [Snips Voice Platform](https://www.snips.ai) allows users to add powerful voice assistants to their Raspberry Pi devices without compromising on privacy. It runs 100% on-device, and does not require an internet connection. It features Hotword Detection, Automatic Speech Recognition (ASR), Natural Language Understanding (NLU) and Dialog Management. The latest documentation can be found here: [Snips Platform Documentation](https://docs.snips.ai/). From d3504d904764a223beb25b10e23164e0eb8e1568 Mon Sep 17 00:00:00 2001 From: HFeenstra Date: Sun, 8 Dec 2019 15:37:19 +0100 Subject: [PATCH 014/236] Update vacuum.xiaomi_miio.markdown (#11399) In the IOS chapter, I missed some info, after googling I find some extra info and therefor request to change the steps 12 and 14 of the IOS chapter. --- source/_integrations/vacuum.xiaomi_miio.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index ed8dfc84711..c573b03801d 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -344,12 +344,12 @@ To fetch the token follow these instructions depending on your mobile phone plat ```sql SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" ``` -12. Copy the returned 32-digit hexadecimal string to your clipboard. +12. Copy the returned 96-digit hexadecimal string to your clipboard. 13. Open `Terminal` and execute this command: ```bash echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000 ``` -14. Use the resulting string as your token. +14. Use the resulting 32-digit string as your token. (On your mac in front of the terminal session) ### Bluestacks From ef8633d434485b331312c91006de61af6920f0e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sun, 8 Dec 2019 17:36:57 +0200 Subject: [PATCH 015/236] Document Huawei LTE services (#11389) * Document Huawei LTE services * URL is optional when there's only one router configured * Note admin access requirement on services --- source/_integrations/huawei_lte.markdown | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 515b488d12b..6c84d9cf4dc 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -109,7 +109,27 @@ notify: type: [string, list] {% endconfiguration %} -### Tested devices +## Services + +The following router action services are available. When invoked by a user, administrator access is required. + +### Service `huawei_lte.clear_traffic_statistics` + +Clear traffic statistics. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.reboot` + +Reboot router. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +## Tested devices Devices we know to be working with this integration based on the [documentation of used libraries](https://github.com/Salamek/huawei-lte-api/#huawei-lte-api) and reports by users: From ac1867b29a8bc801fda38ac77e419f1e7a372ede Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sun, 8 Dec 2019 10:59:58 -0500 Subject: [PATCH 016/236] Simplification. (#11387) --- source/_integrations/input_text.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 1cda4f554e5..e413fbc1863 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -79,7 +79,7 @@ This integration provides a single service to modify the state of the `input_tex ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Scenes From ed65a636b3fe23634781f8cf61ed0336ee87bfb3 Mon Sep 17 00:00:00 2001 From: Manuel Pietschmann Date: Sun, 8 Dec 2019 17:03:23 +0100 Subject: [PATCH 017/236] Fix broken links to dresden-elektronik.de + minor edits (#11390) * Fix broken links to dresden-elektronik.de + minor edits * Use UTF-8 arrows instead HTML encoded ones. --- source/_integrations/deconz.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2fb4a435c8d..fc5f1876ce4 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -1,6 +1,6 @@ --- title: "deCONZ" -description: "Instructions on how to setup Conbee/Raspbee devices with deCONZ from Dresden Elektronik within Home Assistant." +description: "Instructions on how to setup ConBee/RaspBee devices with deCONZ from dresden elektronik within Home Assistant." logo: deconz.jpeg ha_category: - Hub @@ -16,7 +16,7 @@ ha_qa_scale: platinum ha_config_flow: true --- -[deCONZ](https://www.dresden-elektronik.de/funktechnik/products/software/pc/deconz/) by [Dresden Elektronik](https://www.dresden-elektronik.de) is a software that communicates with Conbee/Raspbee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. +[deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. [deCONZ REST API](https://dresden-elektronik.github.io/deconz-rest-doc/). @@ -32,7 +32,7 @@ There is currently support for the following device types within Home Assistant: ## Recommended way of running deCONZ -If you are running Hass.io, an official add-on for Deconz is available in the add-on store. +If you are running Hass.io, an official add-on for deCONZ is available in the add-on store. Otherwise, use [community container](https://hub.docker.com/r/marthoc/deconz/) by Marthoc for your deCONZ needs. ### Supported devices @@ -43,7 +43,7 @@ See [deCONZ wiki](https://github.com/dresden-elektronik/deconz-rest-plugin/wiki/ Home Assistant will automatically discover deCONZ presence on your network, if `discovery:` is present in your `configuration.yaml` file. -If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Settings** -> **Gateway** -> **Advanced** -> **Authenticate app** in deCONZ and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry. +If you don't have the API key, you can generate an API key for deCONZ by using the one-click functionality similar to Philips Hue. Go to **Settings** → **Gateway** → **Advanced** → **Authenticate app** in the Phoscon App and then use the deCONZ configurator in Home Assistant frontend to create an API key. When you're done setting up deCONZ it will be stored as a config entry. You can manually add deCONZ by going to the integrations page. @@ -61,7 +61,7 @@ logger: ## Troubleshooting -If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](https://www.dresden-elektronik.de/rpi/deconz-firmware/?C=M;O=D). +If you are having issues and want to report a problem, always start with making sure that you're on the latest [deCONZ software version](https://github.com/dresden-elektronik/deconz-rest-plugin/releases) and [latest firmware for hardware](http://deconz.dresden-elektronik.de/deconz-firmware/?C=M;O=D). ## Device services @@ -69,7 +69,7 @@ Available services: `configure` and `deconz.device_refresh`. ### Service `deconz.configure` -Set attribute of device in deCONZ using [Rest API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). +Set attribute of device in deCONZ using [REST-API](https://dresden-elektronik.github.io/deconz-rest-doc/rest/). | Service data attribute | Optional | Description | |-----------|----------|-------------| @@ -372,7 +372,7 @@ The `entity_id` name will be `climate.device_name`, where `device_name` is defin Covers are devices like ventilation dampers or smart window covers. -Note that devices in the cover platform identify as lights, so there is a manually curated list that defines which "lights" are covers. You therefore add a cover device as a light device in deCONZ (phoscon app). +Note that devices in the cover platform identify as lights, so there is a manually curated list that defines which "lights" are covers. You therefore add a cover device as a light device in deCONZ (Phoscon App). The `entity_id` name will be `cover.device_name`, where `device_name` is defined in deCONZ. From 73b539463a313e7105f347486a3f936c5f5bce1e Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sun, 8 Dec 2019 11:23:46 -0500 Subject: [PATCH 018/236] Simplification. (#11386) --- source/_integrations/input_number.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 3e46a5bdcfb..4456e59f1ef 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -75,7 +75,7 @@ input_number: ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Scenes From 05b8151ade593fd3bec7474925ed4803bd3d4933 Mon Sep 17 00:00:00 2001 From: Andrew McRae <37428808+aamcrae@users.noreply.github.com> Date: Mon, 9 Dec 2019 03:27:24 +1100 Subject: [PATCH 019/236] Add quarterly cycle to utility_meter (#11371) Add quarterly cycle to utility_meter for tariffs of 3 month cycles. --- source/_integrations/utility_meter.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 0af65a471c4..9c4becc2156 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -37,7 +37,7 @@ source: required: true type: string cycle: - description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly` and `yearly`. + description: How often to reset the counter. Valid values are `hourly`, `daily`, `weekly`, `monthly`, `quarterly` and `yearly`. required: true type: string offset: From f72c1931db42a2df952eb99a3cabfcaeff2d0c40 Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sun, 8 Dec 2019 11:31:59 -0500 Subject: [PATCH 020/236] Simplification. (#11385) --- source/_integrations/input_datetime.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 4486c0c8392..a0da854525d 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -78,9 +78,7 @@ automations and templates. ### Restore State -This integration will automatically restore the state it had prior to Home -Assistant stopping as long as your entity does **not** have a set value for -`initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Services From 79e4e04c3536166e69bacb38d201c4e62c1d6fe4 Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sun, 8 Dec 2019 11:34:49 -0500 Subject: [PATCH 021/236] Update input_boolean.markdown (#11384) --- source/_integrations/input_boolean.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index fb559e5df5d..c2987ede1f4 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -44,7 +44,7 @@ input_boolean: ### Restore State -This integration will automatically restore the state it had prior to Home Assistant stopping as long as your entity does **not** have a set value for `initial`. To disable this feature, set a valid value for `initial`. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ## Automation Examples From e84a5e7e16bb4572954acf89db78fef5de661342 Mon Sep 17 00:00:00 2001 From: SNoof85 Date: Sun, 8 Dec 2019 17:36:48 +0100 Subject: [PATCH 022/236] Add service notes on Freebox integration (#11370) * Update freebox.markdown * Update freebox.markdown --- source/_integrations/freebox.markdown | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index cfbd800d837..7749f5c4ba4 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -62,7 +62,7 @@ The first time Home Assistant will connect to your Freebox, you will need to authorize it by pressing the right arrow on the facade of the Freebox when prompted to do so. -To make the WiFi switch working you will have to add "Modification des réglages de la Freebox +To make the WiFi switch and the reboot service working you will have to add "Modification des réglages de la Freebox " permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications". ### Supported routers @@ -94,6 +94,12 @@ refreshes the devices states. This platform offers you sensors to monitor a Freebox router. The monitored conditions are instant upload and download rates in KB/s. +## Service + +### Service `freebox.reboot` + +This service will reboot your Freebox router. It does not take any parameter. Be aware there is no confirmation. + ## Switch This platform offers you a switch to toggle the Wifi on or off. This will toggle all WiFi interfaces of the router (all SSID and all bands). From 2fcce6e69f2270ff40313f7532bc54f0984f5eb6 Mon Sep 17 00:00:00 2001 From: RichardUUU <14031396+RichardUUU@users.noreply.github.com> Date: Sun, 8 Dec 2019 11:36:55 -0500 Subject: [PATCH 023/236] Patch 1 (#11383) --- source/_integrations/input_select.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index beb18f39846..b87930e919e 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -62,11 +62,11 @@ Because YAML defines [booleans](https://yaml.org/type/bool.html) as equivalent, ### Restore State -If you set a valid value for 'initial' this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. +If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. ### Services -This integrations provide three services to modify the state of the `input_select`. +This integration provides three services to modify the state of the `input_select`. | Service | Data | Description | | ------- | ---- | ----------- | From 21aa73aa776f72917c9db8196bd6d33a50d0e8e6 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sun, 8 Dec 2019 17:43:00 +0100 Subject: [PATCH 024/236] Add Elgato Key Light integration (#11391) * Add Elgato Key Light integration * :pencil2: Tweak --- source/_integrations/elgato.markdown | 40 ++++++++++++++++++++++ source/images/supported_brands/elgato.jpg | Bin 0 -> 11530 bytes 2 files changed, 40 insertions(+) create mode 100644 source/_integrations/elgato.markdown create mode 100644 source/images/supported_brands/elgato.jpg diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown new file mode 100644 index 00000000000..da953d977dd --- /dev/null +++ b/source/_integrations/elgato.markdown @@ -0,0 +1,40 @@ +--- +title: "Elgato Key Light" +description: "Instructions on how to integrate an Elgato Key Light with Home Assistant." +logo: elgato.jpg +ha_category: + - Light +ha_release: 0.104 +ha_iot_class: Local Polling +ha_qa_scale: platinum +--- + +The [Elgato Key Light](https://www.elgato.com/en/gaming/key-light) sets the +bar for high-end studio lightning. With 80 LEDs, that put out a massive +2500 lumens, and can change the color temperature as well. + +The LED light panel is created specifically, and designed for streamers +and content creators, many of whom operate on platforms like YouTube and Twitch. + +## Configuration + +This integration can be configured using the integrations in the +Home Assistant frontend. + +Menu: **Configuration** -> **Integrations**. + +In most cases, Elgato Key Lights devices will be automatically discovered by +Home Assistant. Those automatically discovered devices are listed +on the integrations page. + +If for some reason (e.g., due to lack of mDNS support on your network), +the Elgato Key Light isn't discovered, it can be added manually. + +Click on the `+` sign to add an integration and click on **Elgato Key Light**. +After completing the configuration flow, the Key Light integration will be +available. + +## Lights + +This integration adds the Key Light device as a light in Home Assistant, and +allows you to control the color temperature, brightness, and its on/off state. diff --git a/source/images/supported_brands/elgato.jpg b/source/images/supported_brands/elgato.jpg new file mode 100644 index 0000000000000000000000000000000000000000..02074bc40de6acae35d833652b1f6e6bba33a0dc GIT binary patch literal 11530 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 H=g Date: Sun, 8 Dec 2019 22:47:34 +0530 Subject: [PATCH 025/236] Fix permissions (#11402) --- source/_docs/ecosystem/appdaemon.markdown | 0 source/_docs/ecosystem/appdaemon/api.markdown | 0 source/_docs/ecosystem/appdaemon/running.markdown | 0 source/_docs/ecosystem/appdaemon/tutorial.markdown | 0 source/_docs/ecosystem/appdaemon/windows.markdown | 0 source/_docs/ecosystem/hadashboard.markdown | 0 source/images/supported_brands/bizkaibus.png | Bin source/images/supported_brands/gpslogger.png | Bin source/images/supported_brands/repetier.png | Bin source/images/supported_brands/saj.png | Bin 10 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 source/_docs/ecosystem/appdaemon.markdown mode change 100755 => 100644 source/_docs/ecosystem/appdaemon/api.markdown mode change 100755 => 100644 source/_docs/ecosystem/appdaemon/running.markdown mode change 100755 => 100644 source/_docs/ecosystem/appdaemon/tutorial.markdown mode change 100755 => 100644 source/_docs/ecosystem/appdaemon/windows.markdown mode change 100755 => 100644 source/_docs/ecosystem/hadashboard.markdown mode change 100755 => 100644 source/images/supported_brands/bizkaibus.png mode change 100755 => 100644 source/images/supported_brands/gpslogger.png mode change 100755 => 100644 source/images/supported_brands/repetier.png mode change 100755 => 100644 source/images/supported_brands/saj.png diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/appdaemon/running.markdown b/source/_docs/ecosystem/appdaemon/running.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/appdaemon/windows.markdown b/source/_docs/ecosystem/appdaemon/windows.markdown old mode 100755 new mode 100644 diff --git a/source/_docs/ecosystem/hadashboard.markdown b/source/_docs/ecosystem/hadashboard.markdown old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/bizkaibus.png b/source/images/supported_brands/bizkaibus.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/gpslogger.png b/source/images/supported_brands/gpslogger.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/repetier.png b/source/images/supported_brands/repetier.png old mode 100755 new mode 100644 diff --git a/source/images/supported_brands/saj.png b/source/images/supported_brands/saj.png old mode 100755 new mode 100644 From 89175633f7ff5535e3ab881f21966a384a882456 Mon Sep 17 00:00:00 2001 From: Ionut Popovici Date: Sun, 8 Dec 2019 20:10:44 +0000 Subject: [PATCH 026/236] Update deconz.markdown (#11403) Added Lights tested for more than 30 days. OSRAM and Innr Added Xiaomi OpenClose sensors --- source/_integrations/deconz.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index fc5f1876ce4..d9a9555e262 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -393,6 +393,8 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define - IKEA Trådfri Bulb E27 WS & RGB Opal 600lm - IKEA Trådfri Bulb GU10 W 400lm - IKEA Trådfri FLOALT LED light panel +- Innr BY-265, BY-245 +- OSRAM Classic A60 W clear - LIGHTIFY - OSRAM Flex RGBW - OSRAM Gardenpole RGBW - Philips Hue White A19 @@ -436,6 +438,8 @@ The `entity_id` name will be `sensor.device_name`, where `device_name` is define - Xiaomi Smart Home Wireless Switch - Temperature Sensor - Xiaomi Temperature/Humidity Sensor +- OpenClose Sensor + - Xiaomi Window / Door Sensor with Temperature ### deCONZ Daylight Sensor From 7a6c66f6a5735589c9b7bc7c507ef8ca548bf5d0 Mon Sep 17 00:00:00 2001 From: Nikolay Vasilchuk Date: Mon, 9 Dec 2019 13:13:02 +0300 Subject: [PATCH 027/236] Small Starline documentation fix (#11408) --- source/_integrations/starline.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown index 2ff6da66b01..1846d960abf 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -31,7 +31,7 @@ This integration provides the following platforms: 2. Open the integrations page and add the StarLine integration. 3. Fill in your application ID, secret, login and password. -After adding the integration, you can configure the API update interval on the integration page. +After adding the integration, you can configure the API update interval using [`starline.set_scan_interval`](#set-scan-interval) service.
From 1adfb13afd7b37c5b635454fb75e5b59d930fe89 Mon Sep 17 00:00:00 2001 From: Dane Berryman <47973412+daneberryman@users.noreply.github.com> Date: Mon, 9 Dec 2019 21:31:25 +1100 Subject: [PATCH 028/236] Update sesame.markdown (#11404) --- source/_integrations/sesame.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/sesame.markdown b/source/_integrations/sesame.markdown index 15ceb6cdb9b..57ed4b3b0bc 100644 --- a/source/_integrations/sesame.markdown +++ b/source/_integrations/sesame.markdown @@ -12,7 +12,7 @@ The `sesame` platform allows you to control your [Sesame](https://candyhouse.co/ ## Configuration -Your Sesame needs to be paired with a mobile device running the app in *virtual station* mode, or a standalone [Wi-Fi Access Point](https://candyhouse.co/collections/frontpage/products/wi-fi-access-point). +Your Sesame needs to be paired with a standalone [Wi-Fi Access Point](https://candyhouse.co/collections/frontpage/products/wi-fi-access-point) purchased separately. You will also need to generate an API key from [my.candyhouse.co](https://my.candyhouse.co/#/credentials). From 144970a5333019587ef1882240e592ed3649ed03 Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Mon, 9 Dec 2019 17:43:31 +0000 Subject: [PATCH 029/236] Adding details for FreeNAS/BSD (#10972) * Adding details for FreeNAS/BSD Adding the required commands for when people do a venv install on FreeNAS or FreeBSD, as explained by @atxbyea in the Discord server. * Update emulated_hue.markdown * Update emulated_hue.markdown --- source/_integrations/emulated_hue.markdown | 34 ++++++++++++++++++---- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index c184b2b0e9f..9fb8462b551 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -145,14 +145,24 @@ These attributes used to be found under the `customize` section of `homeassistan You can verify that the `emulated_hue` integration has been loaded and is responding by pointing a local browser to the following URL: -- `http://:8300/description.xml` - This URL should return a descriptor file in the form of an XML file. -- `http://:8300/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. +- `http://:80/description.xml` - This URL should return a descriptor file in the form of an XML file. +- `http://:80/api/pi/lights` - This will return a list of devices, lights, scenes, groups, etc.. that `emulated_hue` is exposing to Alexa. -For Google Home, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). +Verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). Both Google Home and Amazon Alexa/Echo (as of the 2019-08 firmware) require port 80. -For Amazon Alexa/Echo, verify that the URLs above are using port 80, rather than port 8300 (i.e. `http://:80/description.xml`). Since 2019-08 Amazon Echo firmware, Alexa no longer works with port 8300. +### Platform specific instructions -An additional step is required to run Home Assistant as a non-root user and use port 80 when using the AiO script. Execute the following command to allow `emulated_hue` to use port 80 as a non-root user. +#### Hass.io and Docker + +No further actions are required + +#### Python venv + +An additional step is required to run Home Assistant as a non-root user and use port 80. + +##### Linux + +On Linux systems (Ubuntu, Debian, etc) execute the following command to allow `emulated_hue` to use port 80 as a non-root user: ```bash sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3 @@ -160,6 +170,20 @@ sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`. +##### FreeBSD and FreeNAS + +On FreeBSD based systems, including FreeNAS, execute the following to allow `emulated_hue` to use port 80 as a non-root user: + +```bash +sysctl net.inet.ip.portrange.reservedhigh=0 +``` + +You can make this persist by adding the following to `/etc/sysctl.conf`: + +```bash +net.inet.ip.portrange.reservedhigh=0 +``` + ### License Much of this code is based on work done by Bruce Locke on his [ha-local-echo](https://github.com/blocke/ha-local-echo) project, originally released under the MIT License. The license is located [here](https://github.com/blocke/ha-local-echo/blob/b9bf5dcaae6d8e305e2283179ffba64bde9ed29e/LICENSE). From d49619501d6889c946b626b6a9c26dbe42e4f790 Mon Sep 17 00:00:00 2001 From: Villhellm Date: Mon, 9 Dec 2019 12:00:29 -0800 Subject: [PATCH 030/236] Add information about starting Lovelace paths with numbers (#11416) --- source/lovelace/views.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/lovelace/views.markdown b/source/lovelace/views.markdown index 1ab6ed6ec44..aad366c3b48 100644 --- a/source/lovelace/views.markdown +++ b/source/lovelace/views.markdown @@ -85,7 +85,7 @@ View config: ## Paths -You can link to one view from another view by its path. For this use cards that support navigation (`navigation_path`). Do not use special characters in paths. +You can link to one view from another view by its path. For this use cards that support navigation (`navigation_path`). Do not use special characters in paths. Do not begin a path with a number. This will cause the parser to read your path as a view index. ### Example From 31a9b30011f1eed3466d89fc04fbb5ebdff67973 Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Mon, 9 Dec 2019 15:15:53 -0500 Subject: [PATCH 031/236] Add documentation for input_*.reload service. (#11415) * input_text.reload docs update. * Services docs update for input_boolean. * input_datetime.reload sevice documentation update. * input_number services doc update. * input_select.reload service update. --- source/_integrations/input_boolean.markdown | 12 ++++++++++++ source/_integrations/input_datetime.markdown | 4 +++- source/_integrations/input_number.markdown | 12 ++++++++++++ source/_integrations/input_select.markdown | 1 + source/_integrations/input_text.markdown | 3 ++- 5 files changed, 30 insertions(+), 2 deletions(-) diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index c2987ede1f4..e55b67bc0f1 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -42,6 +42,18 @@ input_boolean: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_boolean` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `turn_on` | `entity_id(s)`
`area_id(s)` | Set the value of specific `input_boolean` entities to `on` +| `turn_off` | `entity_id(s)`
`area_id(s)` | Set the value of specific `input_boolean` entities to `off` +| `toggle` | `entity_id(s)`
`area_id(s)` | Toggle the value of specific `input_boolean` entities +| `reload` | | Reload `input_boolean` configuration | + ### Restore State If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index a0da854525d..fc58f489c0f 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -82,7 +82,7 @@ If you set a valid value for `initial` this integration will start with state se ### Services -Available service: `input_datetime.set_datetime`. +Available service: `input_datetime.set_datetime` and `input_datetime.reload`. Service data attribute | Format String | Description -|-|- @@ -92,6 +92,8 @@ Service data attribute | Format String | Description To set both the date and time in the same call, use `date` and `time` together, or use `datetime` by itself. Using `datetime` has the advantage that both can be set using one template. +`input_dateteime.reload` service allows one to reload `input_datetime`'s configuration without restarting Home Assistant itself. + ## Automation Examples The following example shows the usage of the `input_datetime` as a trigger in an diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 4456e59f1ef..cc055a36f40 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -73,6 +73,18 @@ input_number: type: icon {% endconfiguration %} +### Services + +This integration provides the following services to modify the state of the `input_number` and a service to reload the +configuration without restarting Home Assistant itself. + +| Service | Data | Description | +| ------- | ---- | ----------- | +| `decrement` | `entity_id(s)`
`area_id(s)` | Decrement the value of specific `input_number` entities by `step` +| `increment` | `entity_id(s)`
`area_id(s)` | Increment the value of specific `input_number` entities by `step` +| `reload` | | Reload `input_number` configuration | +| `set_value` | `value`
`entity_id(s)`
`area_id(s)` | Set the value of specific `input_number` entities + ### Restore State If you set a valid value for `initial` this integration will start with state set to that value. Otherwise, it will restore the state it had prior to Home Assistant stopping. diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index b87930e919e..ab673a32dc7 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -74,6 +74,7 @@ This integration provides three services to modify the state of the `input_selec | `set_options` | `options`
`entity_id(s)` | Set the options for specific `input_select` entities. | `select_previous` | | Select the previous option. | `select_next` | | Select the next option. +| `reload` | | Reload `input_select` configuration | ### Scenes diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index e413fbc1863..5eeb0f061df 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -71,11 +71,12 @@ input_text: ### Services -This integration provides a single service to modify the state of the `input_text`. +This integration provides a service to modify the state of the `input_text` and a service to reload the `input_text` configuration without restarting Home Assistant itself. | Service | Data | Description | | ------- | ---- | ----------- | | `set_value` | `value`
`entity_id(s)` | Set the value for specific `input_text` entities. +| `reload` | | Reload `input_text` configuration | ### Restore State From 7afb06352b72607f7c08e4ed0501bf794f07d9e8 Mon Sep 17 00:00:00 2001 From: Colin Frei Date: Mon, 9 Dec 2019 22:24:38 +0100 Subject: [PATCH 032/236] fix typo in docs (#11418) --- source/_integrations/webostv.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index 9dde34ff73a..e765f706a52 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -149,7 +149,7 @@ data: ### Next/Previous buttons -The behaviour of the next and previsous buttons is different depending on the active source: +The behaviour of the next and previous buttons is different depending on the active source: - if the source is 'LiveTV' (television): next/previous buttons act as channel up/down - otherwise: next/previous buttons act as next/previous track From 727baee37ab91fbd649e093b9ea612d67e9b3400 Mon Sep 17 00:00:00 2001 From: tetienne Date: Mon, 9 Dec 2019 22:36:20 +0100 Subject: [PATCH 033/236] Remove Tahoma (#11410) * Remove Tahoma See https://github.com/home-assistant/home-assistant/issues/29744 * Remove also Tahoma redirect --- source/_integrations/tahoma.markdown | 53 ---------------------------- source/_redirects | 6 ---- 2 files changed, 59 deletions(-) delete mode 100644 source/_integrations/tahoma.markdown diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown deleted file mode 100644 index 104bf7368ba..00000000000 --- a/source/_integrations/tahoma.markdown +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Tahoma" -description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." -logo: tahoma.png -ha_category: - - Hub - - Binary Sensor - - Cover - - Scene - - Switch - - Sensor -ha_release: 0.59 -ha_iot_class: Cloud Polling ---- - -The `Tahoma` integration platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. - -There is currently support for the following device types within Home Assistant: - -- Binary Sensor -- Sensor -- Cover -- Switch -- Scene - -## Configuration - -To use your Tahoma devices in your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -tahoma: - username: YOUR_USERNAME - password: YOUR_PASSWORD - exclude: [BridgeHUEComponent, HueLampHUEComponent, PodComponent] -``` - -{% configuration %} -username: - description: Your username for tahomalink.com. - required: true - type: string -password: - description: Your password for tahomalink.com. - required: true - type: string -exclude: - description: List of devices to exclude. - required: false - type: list -{% endconfiguration %} - -This also works with the Somfy Connexoon. Check [here](https://somfyhouse.freshdesk.com/nl/support/solutions/articles/14000058145-wat-is-het-verschil-tussen-de-tahoma-en-de-connexoon-) for the differences between the bridges. diff --git a/source/_redirects b/source/_redirects index 5908e04daa6..1f2ec3c25fb 100644 --- a/source/_redirects +++ b/source/_redirects @@ -180,7 +180,6 @@ /components/binary_sensor.sleepiq /integrations/sleepiq /components/binary_sensor.smartthings /integrations/smartthings#binary-sensor /components/binary_sensor.spc /integrations/spc#binary-sensor -/components/binary_sensor.tahoma /integrations/tahoma /components/binary_sensor.tapsaff /integrations/tapsaff /components/binary_sensor.tcp /integrations/tcp#binary-sensor /components/binary_sensor.tellduslive /integrations/tellduslive @@ -307,7 +306,6 @@ /components/cover.scsgate /integrations/scsgate#cover /components/cover.smartthings /integrations/smartthings#cover /components/cover.supla /integrations/supla -/components/cover.tahoma /integrations/tahoma /components/cover.tellduslive /integrations/tellduslive /components/cover.tellstick /integrations/tellstick#cover /components/cover.tuya /integrations/tuya @@ -625,7 +623,6 @@ /components/scene.lutron /integrations/lutron#scene /components/scene.lutron_caseta /integrations/lutron_caseta#scene /components/scene.smartthings /integrations/smartthings#scene -/components/scene.tahoma /integrations/tahoma /components/scene.tuya /integrations/tuya /components/scene.velux /integrations/velux /components/scene.vera /integrations/vera @@ -883,7 +880,6 @@ /components/sensor.systemmonitor /integrations/systemmonitor /components/sensor.sytadin /integrations/sytadin /components/sensor.tado /integrations/tado -/components/sensor.tahoma /integrations/tahoma /components/sensor.tank_utility /integrations/tank_utility /components/sensor.tautulli /integrations/tautulli /components/sensor.tcp /integrations/tcp#sensor @@ -1034,7 +1030,6 @@ /components/switch.switchbot /integrations/switchbot /components/switch.switcher_kis /integrations/switcher_kis /components/switch.switchmate /integrations/switchmate -/components/switch.tahoma /integrations/tahoma /components/switch.tellduslive /integrations/tellduslive /components/switch.tellstick /integrations/tellstick#switch /components/switch.telnet /integrations/telnet @@ -1893,7 +1888,6 @@ /components/systemmonitor /integrations/systemmonitor /components/sytadin /integrations/sytadin /components/tado /integrations/tado -/components/tahoma /integrations/tahoma /components/tank_utility /integrations/tank_utility /components/tapsaff /integrations/tapsaff /components/tautulli /integrations/tautulli From 0565c2f8988c3d03ea9c302ca2fe77983b24b9fd Mon Sep 17 00:00:00 2001 From: James Nimmo Date: Tue, 10 Dec 2019 10:36:53 +1300 Subject: [PATCH 034/236] Add IntesisHome climate platform documentation (#9935) * Add IntesisHome climate platform * Update source/_components/climate.intesishome.markdown Co-Authored-By: jnimmo * Update source/_components/climate.intesishome.markdown Co-Authored-By: jnimmo * Update climate.intesishome.markdown * Added some further language to differentiate IntesisBox * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update climate.intesishome.markdown * Add IntesisHome icon * Update source/_components/climate.intesishome.markdown Co-Authored-By: Klaas Schoute * :fire: Removed some obsolete code * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Update source/_components/climate.intesishome.markdown Co-Authored-By: Franck Nijhof * Rename climate.intesishome.markdown to intesishome.markdown * Added Airconwithme * :pencil2: Tweak * :pencil2: Tweak * Move documentation to new integrations location * :pencil2: Tweak * :pencil2: Tweak Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/intesishome.markdown | 54 ++++++++++++++++++ .../images/supported_brands/intesishome.png | Bin 0 -> 9098 bytes 2 files changed, 54 insertions(+) create mode 100644 source/_integrations/intesishome.markdown create mode 100644 source/images/supported_brands/intesishome.png diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown new file mode 100644 index 00000000000..4d00039ce78 --- /dev/null +++ b/source/_integrations/intesishome.markdown @@ -0,0 +1,54 @@ +--- +title: "IntesisHome AC Controller" +description: "Instructions how to integrate IntesisHome AC devices with Home Assistant" +logo: intesishome.png +ha_category: Climate +ha_release: 0.104 +ha_iot_class: Cloud Push +--- + +The `IntesisHome` climate platform lets you control [IntesisHome](https://www.intesishome.com) and [Airconwithme](https://www.airconwithme.com) devices. IntesisHome provides integrations with air conditioners, including Panasonic, Daikin, Fujitsu, Toshiba, LG and more. + +Note: IntesisHome products are a separate product line to IntesisBox. This platform does not support IntesisBox devices (which can be controlled locally using the WMP protocol). + +## Configuration + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +climate: + - platform: intesishome + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} +username: + description: "Your username for [IntesisHome.com](https://user.intesishome.com) / [Airconwithme](https://user.airconwithme.com)" + required: true + type: string +password: + description: Your password for IntesisHome + required: true + type: string +device: + description: "`IntesisHome` or `airconwithme`." + required: false + default: IntesisHome + type: string +{% endconfiguration %} + +This component opens a TCP connection with the IntesisHome API to receive temperature and status updates, and to issue commands. +By default, the component will be named using the friendly device name from the IntesisHome website or application. +If internet connectivity is lost, the device will be marked as unavailable after 5 minutes. + +### Supported services + +Available services: + +- `climate.set_temperature` +- `climate.set_fan_mode` +- `climate.set_operation_mode` +- `climate.set_swing_mode` +- `climate.turn_on` +- `climate.turn_off` diff --git a/source/images/supported_brands/intesishome.png b/source/images/supported_brands/intesishome.png new file mode 100644 index 0000000000000000000000000000000000000000..887334753388a2747975dfc8a29a996f8699fc63 GIT binary patch literal 9098 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 C=w!bD literal 0 HcmV?d00001 From 58ff96dce49df71f0e4eb2fd1349dfb01bf4b9fb Mon Sep 17 00:00:00 2001 From: Bernhard B Date: Mon, 9 Dec 2019 22:44:40 +0100 Subject: [PATCH 035/236] Signal Messenger integration documentation (#11100) * added signalmessenger documentation * a few small improvements in the signalmessenger documentation * changed phrasing in signalmessenger documentation * small changes in signalmessenger documentation * renamed signalmessenger integration to signal_messenger * improved signal messenger documentation * reworked as suggested in review * :pencil2: Update HA version Co-authored-by: Franck Nijhof --- .../_integrations/signal_messenger.markdown | 81 ++++++++++++++++++ .../supported_brands/signal_messenger.png | Bin 0 -> 46568 bytes 2 files changed, 81 insertions(+) create mode 100644 source/_integrations/signal_messenger.markdown create mode 100644 source/images/supported_brands/signal_messenger.png diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown new file mode 100644 index 00000000000..07a0e9ecbc5 --- /dev/null +++ b/source/_integrations/signal_messenger.markdown @@ -0,0 +1,81 @@ +--- +title: "Signal Messenger" +description: "Instructions on how to integrate Signal Messenger within Home Assistant." +logo: signal_messenger.png +ha_category: + - Notifications +ha_release: 0.104 +--- + +The `signal_messenger` integration uses the [Signal Messenger REST API](https://github.com/bbernhard/signal-cli-rest-api) to deliver notifications from Home Assistant to your Android or iOs device. + +## Setup + +The requirements are: + +- You need to set up the Signal Messenger REST API. +- You need a spare phone number to register with the Signal Messenger service. + + +Please follow those [instructions](https://github.com/bbernhard/signal-cli-rest-api/blob/master/doc/HOMEASSISTANT.md), to set up the Signal Messenger REST API. + + +## Configuration + +To send Signal Messenger notifications with Home Assistant, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry for Signal Messenger +notify: + - name: signal + platform: signal_messenger + url: "http://127.0.0.1:8080" # the URL where the Signal Messenger REST API is listening + number: YOUR_PHONE_NUMBER # the sender number + recipients: # one or more recipients + - RECIPIENT1 +``` + +{% configuration %} +name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + type: string + default: notify +url: + description: The URL where the Signal Messenger REST API listens for incoming requests. + required: true + type: string +number: + description: The sender number. + required: true + type: string +recipients: + description: A list of recipients. + required: true + type: string +{% endconfiguration %} + +## Examples + +A few examples on how to use this integration. + +### Text message + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "That's an example that sends a simple text message to the recipients specified in the configuration.yaml" +``` + +### Text message with an attachment + +```yaml +... +action: + service: notify.NOTIFIER_NAME + data: + message: "Alarm in the living room!" + attachment: "/tmp/surveillance_camera.jpg" +``` diff --git a/source/images/supported_brands/signal_messenger.png b/source/images/supported_brands/signal_messenger.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cbb4ea03b4863435c6d3f520b3c2d618d09940 GIT binary patch literal 46568 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 jU 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

uA$LADWc=+opV=W89l{lEN}9$g>D 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 aH7rdnyj*@+z5*UXQ;=1asgg4J{J#L Date: Mon, 9 Dec 2019 23:11:46 +0100 Subject: [PATCH 036/236] Add config flow to iCloud (#11259) * Add config flow to iCloud * :pencil2: Tweak * :pencil2: Tweaks * :pencil2: Tweaks Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/icloud.markdown | 66 +++++++++++++++++++--------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index d70e5aa4a1d..609c633bdea 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -7,44 +7,58 @@ ha_category: ha_release: "0.10" --- - -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. +The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. It does require that your device is registered with "Find My iPhone". -To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file: +## Setup the integration + +There is two ways to integrate iCloud in Home Assistant + +### Via the frontend + +Menu: *Configuration* -> *Integrations*. Search for "iCloud", add your credentials, click submit. + +If you add the integration for the first time for an account: +1. Choose a trusted device from the list and submit. +2. It will send you a text message on your trusted device, add the received code to the next form and submit (if you missed the right code, you will be back to the previous step, and retry). +3. You are done! + +If you already added the integration before, you are done! + +### Via the configuration file + +Add the following section to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry -device_tracker: - - platform: icloud - username: USERNAME +icloud: + - username: USERNAME password: PASSWORD - account_name: accountname ``` {% configuration %} username: - description: The username for the iCloud account. + description: Your iCloud account email. required: true type: string password: - description: The password for your given username. + description: Your iCloud account password. required: true type: string account_name: - description: The friendly name for the account_name. If this isn't given, it will use the account_name of the username (so the part before the `@` in the email address). + description: A friendly name for your iCloud account. If this isn't given, it will use the part before the `@` of the username. required: false type: string max_interval: - description: Maximum interval in minutes between subsequent location upates. This tracker uses dynamic intervals for requesting location updates. When iphone is stationary, interval will eventually be set to `max_interval` to save battery. When iphone starts moving again interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. + description: Maximum interval in minutes between subsequent location updates. This tracker uses dynamic intervals for requesting location updates. When the iPhone is stationary, the interval will eventually be set to `max_interval` to save battery. When the iPhone starts moving again, the interval will be dynamically updated to 1 min. Note that updating interval to 1 min might be delayed by maximum `max_interval` minutes. Minimum value is 1 min. required: false default: 30 type: integer gps_accuracy_threshold: - description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows more precise location monitoring and fewer false positive zone changes. + description: iCloud location updates come with some gps_accuracy varying from 10 to 5000 meters. This setting defines the accuracy threshold in meters for a location update. Less accurate updates will be discarded by this tracker. This allows for more precise location monitoring and fewer false-positive zone changes. required: false - default: 1000 + default: 500 type: integer {% endconfiguration %} @@ -55,16 +69,26 @@ Low `max_interval` may cause battery drainage as it wakes up your device to get

-You may receive an email from Apple stating that someone has logged into your account. +You may receive an email and a notification from Apple saying that someone has logged into your account. + +For the notification, press "Allow", then "OK".
To disable the drainage of the battery, a dynamic interval is being used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. -If 2 Step Authentication is enabled for your iCloud account. The integration will ask which device you want to use as Trusted Device and integration will send a prompt to that device with the code which you can enter in Home Assistant. The duration of this authentication is determined by Apple, but is now at 2 months, so you will only need to verify your account each two months. -2 Factor Authentication is the improved version of 2 Step Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. +If 2 Step Authentication is enabled for your iCloud account. The integration will ask which device you want to use as a trusted device. The integration will send a prompt to that device with the code which you have to enter in Home Assistant. The duration of this authentication is determined by Apple. +2 Factor Authentication is the improved version of 2 Step Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it yet. -4 services are available for this component: -- **update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. -- **lost_iphone**: This service will play the Lost iPhone sound on a certain iDevice. The `account_name` and `device_name` are optional. -- **set_interval**: This service will change the dynamic interval of an iDevice. The `account_name` and `device_name` are optional. If `interval` is used in the service_data, the iDevice will be updated with that new interval. That interval will be fixed until the iDevice changes zone or if this service is called again. If `interval` isn't used in the service_data, the interval for that iDevice will revert back to its default dynamic interval based on its current zone, its distance towards home and its battery level. -- **reset_account**: This service can be used to reset an iCloud account. This is helpful when not all devices are found by the integration or if you have added a new iDevice to your account. The `account_name` is optional. + +## In case of troubleshooting + +Go into your Home Assistant configuration `.storage` folder and delete the "icloud" folder, then retry. + +## Services + +4 services are available: + +- **update**: This service can be used to ask an update of a certain iDevice or all devices linked to an iCloud account. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iPhone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. +- **play_sound**: This service will play the Lost iPhone sound on your iDevice. It will still ring if you are on "Mute" or "Do not disturb" mode. +- **display_message**: This service will display a message on your iDevice. It can also ring your device. +- **lost_device**: This service will put your iDevice on "lost" mode (compatible devices only). You have to provide a phone number with a suffixed [country code](https://en.wikipedia.org/wiki/List_of_country_calling_codes) and a message. From 06d2f06473c5d8315be123eadcb2738e54db7554 Mon Sep 17 00:00:00 2001 From: floatiepen Date: Tue, 10 Dec 2019 14:12:51 -0800 Subject: [PATCH 037/236] Access Token URI must use port 443 (w/ valid cert) (#11417) Amazon reps have stated this is a requirement, and stating it up front will will help many people trying to use the default port of 8123, even with a trusted certificate https://forums.developer.amazon.com/questions/74075/alexa-oauth-20-https-problem.html --- source/_integrations/alexa.smart_home.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 2b72bd1df37..e68f75e19cd 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -173,6 +173,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Input all information required. Assuming your Home Assistant can be accessed by https://[YOUR HOME ASSISTANT URL:PORT] * `Authorization URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize * `Access Token URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/token + - Note: you must use a valid/trusted SSL Certificate and port 443 for account linking to work * `Client ID`: - https://pitangui.amazon.com/ if you are in US - https://layla.amazon.com/ if you are in EU From be18953d5927d0a4db97bf33b5b4478e876a6a9d Mon Sep 17 00:00:00 2001 From: Daniel <44697375+azrarel783@users.noreply.github.com> Date: Tue, 10 Dec 2019 23:13:30 +0100 Subject: [PATCH 038/236] Updating callback URL (#11393) Had problems with integrating Spotiy in HA, but I found out the callback url with version 0.102.3 is send without the port. So I edited the callback URL in the Spotiy app and was able to add Spotify to HA --- source/_integrations/spotify.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index a96557cf511..e38bd74d85e 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -28,10 +28,10 @@ To create the required Spotify application: - Add a **Redirect URI** in one of the following forms: If you are not using SSL: - `http://:/api/spotify` + `http:///api/spotify` If you are using SSL: - `https://:/api/spotify` + `https:///api/spotify` - Click **Save** after adding the URI. From b33627051a75d061ce4d93adaea20ff842d55663 Mon Sep 17 00:00:00 2001 From: Jardi Martinez <1088732+jardiamj@users.noreply.github.com> Date: Tue, 10 Dec 2019 23:56:41 -0800 Subject: [PATCH 039/236] Provide link to How to enable i2c on HassOS instructions. (#11425) * Provide link to How to enable i2c on HassOS instructions. * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/mcp23017.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/mcp23017.markdown b/source/_integrations/mcp23017.markdown index 4991a3c7d67..35a241040bb 100644 --- a/source/_integrations/mcp23017.markdown +++ b/source/_integrations/mcp23017.markdown @@ -14,6 +14,8 @@ The `mcp23017` integration is the base for all related mcp23017 platforms in Hom For more details about the MCP23017 I2C I/O port expander you can find its datasheet here: [MCP23017](https://www.microchip.com/wwwproducts/en/MCP23017). +If you are using Hass.io on HassOS you can’t use existing methods to enable the I2C bus on a Raspberry Pi, you will have to [enable the I2C interface in the Hass.io configuration](https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/raspberrypi.md#i2c) using a USB stick. To accomplish that, follow this step by step instructions: [Enable HassOS i2c](https://www.home-assistant.io/hassio/enable_i2c). + ## Binary Sensor The `mcp23017` binary sensor platform allows you to read sensor values from the I/O pins of your [MCP23017 I2C I/O expander](https://www.adafruit.com/product/732). From 6557927be1180e4d0d95bbc4eac2506cdfb19047 Mon Sep 17 00:00:00 2001 From: Paul Sinclair <24625998+sinclairpaul@users.noreply.github.com> Date: Wed, 11 Dec 2019 08:44:50 -0500 Subject: [PATCH 040/236] =?UTF-8?q?=F0=9F=93=9A=20Minor=20typo=20correctio?= =?UTF-8?q?n=20(#11428)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_integrations/startca.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown index c4775644c62..417fa3e7fbb 100644 --- a/source/_integrations/startca.markdown +++ b/source/_integrations/startca.markdown @@ -76,5 +76,5 @@ monitored_conditions: total_download: description: Total bandwidth upload (Grace + Used) (gigabytes). used_remaining: - description: Remaining bandwidth calucated from used and supplied total bandwidth (gigabytes). + description: Remaining bandwidth calculated from used and supplied total bandwidth (gigabytes). {% endconfiguration %} From e3124ebcc0340ecc8ce8cdf3e458716824d36ec8 Mon Sep 17 00:00:00 2001 From: reggit96 Date: Wed, 11 Dec 2019 11:31:28 -0500 Subject: [PATCH 041/236] Update nest.markdown (#11429) fixed some grammar in the security section. --- source/_integrations/nest.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 94a3648114d..5b5745fc99f 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -324,7 +324,7 @@ The following conditions are available by device:
-This feature is not designed to transfer your Home Assistant to a security system, neither Home Assistant nor Nest be liable to You for damages, +This feature is not designed to transform your Home Assistant into a security system, neither Home Assistant nor Nest be liable to You for damages, or consequential damages of any character arising as a result of use this feature. This feature does not depend on the [Nest Secure alarm system](https://nest.com/alarm-system/overview/) and is not a reflection of the status of that system, From f763a9ccf95d15c29810b3ae17b8e1c593e0a820 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 12 Dec 2019 09:50:39 +0100 Subject: [PATCH 042/236] Update controllers.markdown --- source/_docs/z-wave/controllers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index c5981a106cf..552ce14d680 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -5,7 +5,7 @@ description: "Extended instructions how to setup Z-Wave." ## Supported Z-Wave USB Sticks & Hardware Modules -You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. The following devices have been confirmed to work: +You need to have a compatible Z-Wave stick or module installed. This needs to be a *static controller*, which most Z-Wave sticks and modules will be. If yours is a *bridge* device then it won't work with [OpenZWave](http://openzwave.com/), which is what provides Home Assistant's Z-Wave capabilities. USB sticks using the new 700 series Z-Wave platform are not compatible. The following devices have been confirmed to work:
From b57f6a9e676a6d227bd7d328467bbe13b2b574f7 Mon Sep 17 00:00:00 2001 From: MarcJenningsUK Date: Thu, 12 Dec 2019 08:52:35 +0000 Subject: [PATCH 043/236] Update proxmoxve.markdown (#11430) integration not found as "proxmox" in configuration. Updated YAML nodes to reflect the name "proxmoxve" --- source/_integrations/proxmoxve.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index f8f01727126..209a9099f08 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -22,7 +22,7 @@ To use the `proxmoxve` component, add the following config to your `configuratio ```yaml # Example configuration.yaml entry -proxmox: +proxmoxve: - host: IP_ADDRESS username: USERNAME password: PASSWORD @@ -84,7 +84,7 @@ nodes: Example with multiple VMs and no containers: ```yaml -proxmox: +proxmoxve: - host: IP_ADDRESS username: USERNAME password: PASSWORD From 01bfd5b4518c4094114d3fa12bf0d35bdd743939 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Thu, 12 Dec 2019 04:06:00 -0500 Subject: [PATCH 044/236] Updated button name on Configuration page (#11438) The "Reload Core" button was renamed to "Reload Location & Customizations" - updating docs to reflect. --- source/_docs/configuration/basic.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 0e16aa27714..0c80d3cb26c 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -66,4 +66,4 @@ whitelist_external_dirs: ### Reload Core Service -Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change any of the above sections and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Core" button under Configuration > Server Control. +Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change any of the above sections and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Location & Customizations" button under Configuration > Server Control. From 9855235065403e012ec2ed858342f9376439d2d5 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Thu, 12 Dec 2019 04:07:32 -0500 Subject: [PATCH 045/236] Updated button name on Customizations page (#11437) The "Reload Core" button was renamed to "Reload Location & Customizations" - updating docs to reflect. --- source/_docs/configuration/customizing-devices.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 04eea1c2158..20618b1021f 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -137,7 +137,7 @@ homeassistant: ### Reloading customize -Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Core" button under Configuration > Server Control. +Home Assistant offers a service to reload the core configuration while Home Assistant is running called `homeassistant.reload_core_config`. This allows you to change your customize section and see it being applied without having to restart Home Assistant. To call this service, go to the "Service" tab under Developer Tools, select the `homeassistant.reload_core_config` service and click the "CALL SERVICE" button. Alternatively, you can press the "Reload Location & Customizations" button under Configuration > Server Control.
New customize information will be applied the next time the state of the entity gets updated. From a783a78ca87bc33bdcb8c88351806ee178a58884 Mon Sep 17 00:00:00 2001 From: Quentame Date: Thu, 12 Dec 2019 10:09:01 +0100 Subject: [PATCH 046/236] Fix Hive table of content links (#11433) --- source/_integrations/hive.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 681a06886ef..02b700c759f 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -21,8 +21,8 @@ This integration uses the unofficial API used in the official Hive website [http There is currently support for the following services and platforms within Home Assistant: - [Services](#services) - - [Service `hive.boost_heating`](#service-hiveboostheating) - - [Service `hive.boost_hot_water`](#service-hiveboosthotwater) + - [Service `hive.boost_heating`](#service-hiveboost_heating) + - [Service `hive.boost_hot_water`](#service-hiveboost_hot_water) - [Platforms](#platforms) - [Binary Sensor](#binary-sensor) - [Climate](#climate) From 484fe5b926f57232690bc031846dca35c35b4a9b Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Thu, 12 Dec 2019 04:17:01 -0500 Subject: [PATCH 047/236] Add missed domain name change for APNS service docs (#11436) --- source/_integrations/apns.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/apns.markdown b/source/_integrations/apns.markdown index 250e035e9c6..8a2d2d9a0bb 100644 --- a/source/_integrations/apns.markdown +++ b/source/_integrations/apns.markdown @@ -48,7 +48,7 @@ sandbox: The APNS platform will register two services, `notify.NOTIFIER_NAME` and `apns.apns_NOTIFIER_NAME`. -### notify.apns_NOTIFIER_NAME +### apns.apns_NOTIFIER_NAME This service will register device IDs with Home Assistant. In order to receive a notification a device must be registered. The app on the device can use this service to send an ID to Home Assistant during startup, the ID will be stored in `[NOTIFIER_NAME]_apns.yaml`. From c399ee0e105254427a4b229153eb539dc24d1bae Mon Sep 17 00:00:00 2001 From: biver0 Date: Thu, 12 Dec 2019 03:40:51 -0800 Subject: [PATCH 048/236] Update insteon.markdown (#11440) 8 button mini-remotes have buttons "a to H" rather than "a to G" --- source/_integrations/insteon.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/insteon.markdown b/source/_integrations/insteon.markdown index 65687710a49..4096a4d259d 100644 --- a/source/_integrations/insteon.markdown +++ b/source/_integrations/insteon.markdown @@ -270,10 +270,10 @@ Mini-Remote devices do not appear as Home Assistant entities, they generate even - **insteon.button_on** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote the values are `a` to `d`. For an 8 button remote the values are `a` to `h`. For a one-button remote this field is not used. - **insteon.button_off** - **address**: (required) The Insteon device address in lower case without dots (e.g., 1a2b3c) - - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `g`. For a one-button remote this field is not used. + - **button**: (Optional) The button id in lower case. For a 4-button remote the values are a to d. For an 8 button remote the values are `a` to `h`. For a one-button remote this field is not used. This allows the mini-remotes to be configured as triggers for automations. Here is an example of how to use these events for automations: From 936529653b3a5cd611fe16d56d9a3e6549fc80cd Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 12 Dec 2019 12:56:22 +0100 Subject: [PATCH 049/236] Remove broken link from 0.103 release notes (#11442) --- source/_posts/2019-12-11-release-103.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index faa306bc133..048ad05c150 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -160,7 +160,7 @@ The following integrations are added in this release: - Add Proxmox VE integration ([@K4ds3] - [#27315]) ([proxmoxve docs]) (new-integration) - Add flume support ([@ChrisMandich] - [#27235]) ([flume docs]) (new-integration) - StarLine integration ([@Anonym-tsk] - [#27197]) ([starline docs]) (new-integration) -- Add intent integration to expose intent handle API ([@balloob] - [#29124]) ([conversation docs]) ([intent docs]) (new-integration) +- Add intent integration to expose intent handle API ([@balloob] - [#29124]) ([conversation docs]) (new-integration) - Dsmr reader ([@depl0y] - [#28701]) ([dsmr_reader docs]) ([fleetgo docs]) ([openhardwaremonitor docs]) (new-integration) - Add ATEN PE component for ATEN eco PDUs ([@mtdcr] - [#27960]) ([aten_pe docs]) (new-integration) From e02c67399fbfedb93f7d232616d40272c8e3b179 Mon Sep 17 00:00:00 2001 From: Quentame Date: Thu, 12 Dec 2019 16:23:04 +0100 Subject: [PATCH 050/236] Remove services from Hive "TOC" (#11443) Follows https://github.com/home-assistant/home-assistant.io/pull/11434#discussion_r357031121 --- source/_integrations/hive.markdown | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 02b700c759f..2ea8ba4beeb 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -18,18 +18,14 @@ The `hive` integration is the main integration to set up and integrate all suppo This integration uses the unofficial API used in the official Hive website [https://my.hivehome.com](https://my.hivehome.com), and you will need to use the same Username and Password you use on the Hive website to configure this Hive integration in Home Assistant. -There is currently support for the following services and platforms within Home Assistant: +There is currently support for the following platforms within Home Assistant: -- [Services](#services) - - [Service `hive.boost_heating`](#service-hiveboost_heating) - - [Service `hive.boost_hot_water`](#service-hiveboost_hot_water) -- [Platforms](#platforms) - - [Binary Sensor](#binary-sensor) - - [Climate](#climate) - - [Light](#light) - - [Sensor](#sensor) - - [Switch](#switch) - - [Water Heater](#water-heater) +- [Binary Sensor](#binary-sensor) +- [Climate](#climate) +- [Light](#light) +- [Sensor](#sensor) +- [Switch](#switch) +- [Water Heater](#water-heater) To add your Hive devices into your Home Assistant installation, add the following to your `configuration.yaml` file: From fa947627cd1cfd2f7000dc575e66c3f5e9d0a062 Mon Sep 17 00:00:00 2001 From: Jay <49540618+Tediore@users.noreply.github.com> Date: Thu, 12 Dec 2019 10:21:44 -0600 Subject: [PATCH 051/236] Update wording and provide new screenshots (#11180) * Create trash * Add files via upload * Delete trash * Update wording and screenshots * Update screenshots and wording Also improve clarity * Revert improper references to Lovelace. * "states screen" > "Home Assistant web interface" * Delete automation-new-action.png * Delete automation-new-blank.png * Delete automation-new-name-trigger.png * Delete integrations.png * Create trash * Add new screenshots * Delete 01 - username.png * Delete 02 - location.png * Delete 03 - location.png * Delete 04 - devices.png * Delete 05 - lovelace.png * Delete 06 - config.png * Delete 07 - integrations.png * Delete 08 - new integration.png * Delete 09 - config 2.png * Delete 10 - automation editor.png * Delete 11 - new automation.png * Delete 12 - new trigger.png * Delete 13 - action.png * Delete 14 - server control.png * Delete trash * Update screenshot paths * Update onboarding.markdown * Correct image paths * Update automation.markdown * Reword and provide additional information This information was outdated, especially with the addition of default_config. Hopefully these changes make it clearer for new users who are confused about the missing homeassistant: line in their default configuration (this is something that has been popping up in the forum lately). I linked to an external source for the time zone names. Perhaps we should add this list to Home Assistant website instead (or if it already exists, my apologies: I can point it to that instead). * Update configuration.markdown --- source/getting-started/automation.markdown | 31 ++++++++++------- source/getting-started/configuration.markdown | 32 ++++++++++++++---- source/getting-started/onboarding.markdown | 32 +++++++++++++++--- source/images/getting-started/action.png | Bin 0 -> 45045 bytes .../getting-started/automation-editor.png | Bin 0 -> 108020 bytes .../getting-started/automation-new-action.png | Bin 52356 -> 0 bytes .../getting-started/automation-new-blank.png | Bin 49479 -> 0 bytes .../automation-new-name-trigger.png | Bin 52494 -> 0 bytes source/images/getting-started/devices.png | Bin 0 -> 43147 bytes .../images/getting-started/integrations.png | Bin 46247 -> 72961 bytes source/images/getting-started/location.png | Bin 0 -> 281907 bytes source/images/getting-started/lovelace.png | Bin 0 -> 119214 bytes .../images/getting-started/new-automation.png | Bin 0 -> 138186 bytes source/images/getting-started/new-trigger.png | Bin 0 -> 86470 bytes source/images/getting-started/username.png | Bin 0 -> 40605 bytes 15 files changed, 72 insertions(+), 23 deletions(-) create mode 100644 source/images/getting-started/action.png create mode 100644 source/images/getting-started/automation-editor.png delete mode 100644 source/images/getting-started/automation-new-action.png delete mode 100644 source/images/getting-started/automation-new-blank.png delete mode 100644 source/images/getting-started/automation-new-name-trigger.png create mode 100644 source/images/getting-started/devices.png create mode 100644 source/images/getting-started/location.png create mode 100644 source/images/getting-started/lovelace.png create mode 100644 source/images/getting-started/new-automation.png create mode 100644 source/images/getting-started/new-trigger.png create mode 100644 source/images/getting-started/username.png diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 348de945934..3ccd5f801ff 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -6,36 +6,41 @@ redirect_from: - /getting-started/automation-2/ --- -When your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. +Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. -In Home Assistant, open the menu by clicking on the top-left icon and click on configuration. Now click on automation. This is the automation screen from which you can manage all the automations in Home Assistant. - -Click on the orange button at the bottom right to create a new automation. You are presented with a blank automation screen. +In the user interface, click Configuration in the sidebar, then click Automation. You will now see the automation screen from which you can manage all the automations in Home Assistant.

- + The automation editor.

-The first thing we will do is to set a name. Enter "Turn Lights On at Sunset". - -The second step is defining what should trigger our automation to run. In this case we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset. - -In the trigger section, click on the dropdown and change trigger type to "Sun". It allows us to pick between sunrise and sunset, go ahead and pick sunset. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-0:30` to the offset. This indicates that we will trigger 30 minutes before the sun actually sets, neat! +Click the orange button at the bottom right to create a new automation. You are presented with a blank automation screen.

- + +The start of a new automation. +

+ +The first thing we will do is set a name. Enter "Turn Lights On at Sunset". + +The second step is defining what should trigger our automation to run. In this case, we want to use the event of the sun setting to trigger our automation. However, if we would turn on the lights when the sun actually sets, it would be too late as it already gets quite dark while it's setting. So we're going to add an offset. + +In the trigger section, click on the dropdown menu and change the trigger type to "Sun." It allows us to choose sunrise or sunset, so go ahead and pick sunset. As we discussed, we want our automation to be triggered a little before the sun actually sets, so let's add `-00:30` as the offset. This indicates that the automation will be triggered 30 minutes before the sun actually sets. Neat! + +

+ A new automation with a sun trigger filled in.

-Once we have defined our trigger, scroll down to the action section. Make sure the action type is set to "Call Service" and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to: +Once we have defined our trigger, scroll down to the action section. Make sure the action type is set to "Call service," and change the service to `light.turn_on`. For this automation we're going to turn on all lights, so let's change the service data to: ```yaml entity_id: all ```

- + A new automation with the action set up to turn on the lights.

diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 053f9845102..4f9f83fcc52 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -3,11 +3,11 @@ title: "Advanced Configuration" description: "Instructions to get Home Assistant configured." --- -Until now we have been able to configure Home Assistant purely via the user interface. However, not all options are accessible via the user interface. The other options are accessible via the Home Assistant configuration file called `configuration.yaml`. A default one is created when Home Assistant started for the first time. +The onboarding process takes care of the initial setup for Home Assistant, such as naming your home and selecting your location. After initial onboarding, these options can be changed in the user interface by clicking on Configuration in the sidebar and clicking on General, or by manually editing them in the Home Assistant configuration file called `configuration.yaml`. This section will explain how to do the latter.
-This final step of the getting started only applies if you've installed Home Assistant via Hass.io. If you've used another installation method, [see here](/docs/configuration/). +The steps below only apply if you've installed Home Assistant via Hass.io. If you've used another installation method, [see here](/docs/configuration/).
@@ -24,20 +24,40 @@ Under the "Core" section you will find HASS Configurator. - Now start the add-on by clicking on START. - Open the user interface by clicking on OPEN WEB UI. -Now let's make a small change using the configurator: we are going to change the name and location of your Home Assistant installation. +Now let's make a change using the configurator: we are going to change the name, location, unit system, and time zone of your Home Assistant installation. - Click the folder icon in the top left of the configurator window to open the file browser sidebar. - Click the `configuration.yaml` file (in the `/config/` folder) to load it into the main Configurator edit window. - - Find the `homeassistant:` configuration block, which should be the first thing in `configuration.yaml`. In this block, update `name`, `latitude`, `longitude`, `unit_system` and `time_zone` to match yours. + - Add the following to this file (preferably at the very top, but it ultimately doesn't matter): + ```yaml + homeassistant: + name: Home + latitude: xx.xxxx + longitude: xx.xxxx + unit_system: imperial + time_zone: America/Chicago + ``` +
+ + Valid options for `unit_system` are `imperial` or `metric`. See [here](https://timezonedb.com/time-zones) for a list of valid time zones. Enter the appropriate option found under the Time Zone column at that page. + +
+ - Click the save icon in the top right to commit changes. - - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a config check. Do this by clicking on Configuration in the sidebar, click on "Server Control" and click on the "CHECK CONFIG" button. When it's valid, it will show the text "Configuration valid!". - - Now Restart Home Assistant using the "restart" in the Server management section on the same page. In order for "Check Config" to be visible, you must enable "Advanced Mode" on your user profile. + - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a config check. Do this by clicking on Configuration in the sidebar, click on "Server Control" and click on the CHECK CONFIG button. When it's valid, it will show the text "Configuration valid!" + - Now Restart Home Assistant using the RESTART button in the Server management section on the same page. In order for "Check Config" to be visible, you must enable "Advanced Mode" on your user profile.

Screenshot of the "General" page in the configuration panel.

+
+ + If you have watched any videos about setting up Home Assistant using configuration.yaml (particularly ones that are old), you might notice your default configuration file is much smaller than what the videos show. Don't be concerned, you haven't done anything wrong. Many items in the default configuration files shown in those old videos are now included in the `default_config:` line that you see in your configuration file. [See here](/integrations/default_config/) for more information on what's included in that line. + +
+ ### Editing config via Samba/Windows Networking Maybe you are not a big fan of our web editor and want to use a text editor on your computer instead. This is possible by sharing the configuration over the network using the Samba add-on, which can also be installed from the Hass.io add-on store. This will make your configuration accessible via the network tab on your computer. diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index c49f522b0b7..ef18296b8c8 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -5,11 +5,35 @@ description: "Instructions to get Home Assistant configured." Alright, you made it here. The tough part is done. -With Home Assistant installed, it's time for doing the initial configuration. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account". +With Home Assistant installed, it's time to configure it. Here you will create the owner account of Home Assistant. This account will be an administrator and will always be able to change everything. Enter a name, username, password and click on "create account". -Now you're brought to the main screen of Home Assistant: the states screen. The states screen will show all your devices. So let's get that screen filled up! +

+ +Set your username and password. +

-Open the menu on the top left and click on Configuration. On the next screen, click on Integrations. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section, these are integrations that we found on your network and can easily be added with a few clicks. If your integrations are not discovered, find them in the list and click on configure. +Next, you can enter a name for your home and set your location and unit system. Click "DETECT" to find your location and set your time zone and unit system based on that location. If you'd rather not send your location, you can set these values manually. + +

+ +Set your location, time zone, and unit system. +

+ +Once you are done, click Next. In this screen, Home Assistant will show any devices that it has discovered on your network. Don't be alarmed if you see fewer items than what is shown below; you can always manually add devices later. + +

+ +Discovery of devices on your network. +

+ +Finally, click Finish. Now you're brought to the Home Assistant web interface. This screen will show all of your devices. So let's get that screen filled up! + +

+ +The Home Assistant user interface. +

+ +Click on Configuration in the sidebar on the left. On the next screen, click on Integrations. At this screen you will be able to set up integrations with Home Assistant. You might notice a "discovered" section. This section contains integrations that were found on your network and can easily be added with a few clicks. If your integrations are not discovered, click the + button in the lower right and search for your integration in that list.

@@ -18,6 +42,6 @@ The integrations page in the configurations panel shows you all your configured When each integration is done setting up, it will ask you to put the new devices in areas. Areas allow you to organize all the devices in your home. -When you're done, navigate back to the states panel and voila, your devices are ready for you to control. +When you're done, navigate back to the web interface and voila, your devices are ready for you to control. ### [Next step: Automate Home Assistant »](/getting-started/automation/) diff --git a/source/images/getting-started/action.png b/source/images/getting-started/action.png new file mode 100644 index 0000000000000000000000000000000000000000..713984285ec535219dff0a2cdce5d4c491c9e008 GIT binary patch literal 45045 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

(ymvzMRwGhdQ|}mx%=rX-LjqS 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 literal 0 HcmV?d00001 diff --git a/source/images/getting-started/automation-editor.png b/source/images/getting-started/automation-editor.png new file mode 100644 index 0000000000000000000000000000000000000000..75c95333a6693f1559794aeec1d8c742fcb2be97 GIT binary patch literal 108020 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℧E8IK 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 z z^*)nv9KGf2ElQ4k!veXoed+z#`i%|k*@9n%oglr9?fx`$saEt$Y1*6hoVfhKTvR(`Q*Cyc9w9x!ljh=5yJ3 zyQ{RvjU6X<6wzJc5#;zj$#@neqJ7YIwbN6~kL|t3=j5AmMbfb!tL5W0NGk_baBnXT z+4|_pK6lqI{{v}|z6@Y?P3nJ6U~*U>q9UqpjtE};uMf2U;-7DOF#wP^tU2y+@6U1k z1Tx3>ds(vw!C?YWN5Lie{6Do`#jPIs2erTtOp9`;SJE%?33v}@>U|FWF#uAdfJsP! zRO^WRZf);Tl+wOGO?PX8Co%g?-!SF~;}c$#{O23gRuI@3@V$kf8Own2LEP>7^X)%D h5&mxQzuvv200IK_ye{``*&guknuZRdK<)m+{{VX^zsLXp literal 0 HcmV?d00001 diff --git a/source/images/getting-started/integrations.png b/source/images/getting-started/integrations.png index d582d25eb5d0702da2a44fd77dcf66e1b4b488fb..726ef48d14383cf9fc05d83af02268075272e685 100644 GIT binary patch literal 72961 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 go*BP$ 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�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≥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 literal 0 HcmV?d00001 diff --git a/source/images/getting-started/username.png b/source/images/getting-started/username.png new file mode 100644 index 0000000000000000000000000000000000000000..eda8ed37fc6db5853f1e5acf1eca729d1f6b77da GIT binary patch literal 40605 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 Date: Thu, 12 Dec 2019 11:05:05 -0800 Subject: [PATCH 052/236] Update docs for configuration multiple Pi-holes (#10758) * Update docs for configuration multiple Pi-holes * Code review --- source/_integrations/pi_hole.markdown | 59 ++++++++++++++++++++++----- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index bce2f73648d..650e90de4d3 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -8,7 +8,7 @@ logo: pi_hole.png ha_release: 0.28 --- -The `pi_hole` integration allows you to retrieve statistics and interact with a single [Pi-hole](https://pi-hole.net/) system. +The `pi_hole` integration allows you to retrieve statistics and interact with a [Pi-hole](https://pi-hole.net/) system. ## Configuration @@ -17,16 +17,23 @@ To enable this integration with the default configuration, add the following lin ```yaml # Example configuration.yaml entry pi_hole: + - host: IP_ADDRESS ``` {% configuration %} host: description: > - The hostname (and port), e.g., '192.168.0.3:4865' of the host where Pi-hole is running. If your Pi-Hole instance is the Hass.io add-on, you *must* specify port `4865`. + The hostname (and port), e.g. '192.168.0.3:4865' of the host where Pi-hole is running. Hass.io add-on users should be sure to specify port `4865`. + required: true + type: string +name: + description: > + The name for this Pi-hole. This name will be a part of the sensors created, e.g. `name: My Awesome Pi-hole` would result in sensor names beginning with `sensor.my_awesome_pi_hole_`. + + **Note:** If you configure multiple Pi-Holes, each one *must* have a unique name. required: false type: string - default: pi.hole - + default: Pi-hole location: description: The installation location of the Pi-hole API. required: false @@ -50,14 +57,39 @@ api_key: default: None {% endconfiguration %} -### Full example +### Full examples + +Single Pi-hole running via Hass.io add-on: ```yaml -# Example configuration.yaml entry pi_hole: - host: 'localhost:4865' - ssl: false - verify_ssl: false + - host: 'localhost:4865' +``` + +Multiple Pi-holes: + +```yaml +pi_hole: + - host: '192.168.0.2' + - host: '192.168.0.3' + name: 'Secondary Pi-Hole' +``` + +Pi-hole with a self-signed certificate: + +```yaml +pi_hole: + - host: 'pi.hole' + ssl: true + verify_ssl: false +``` + +Pi-hole with an `api_key` that allows it to be enabled or disabled: + +```yaml +pi_hole: + - host: 'pi.hole' + api_key: !secret pi_hole_api_key ``` ## Services @@ -66,17 +98,22 @@ The platform provides the following services to interact with your Pi-hole. ### Service `pi_hole.disable` -Disable your Pi-hole for the specified amount of time. +Disables configured Pi-hole(s) for the specified amount of time. | Service data attribute | Required | Type | Description | | ---------------------- | -------- | -------- | ----------- | | `duration` | `True` | timedelta | Time for which Pi-hole should be disabled | +| `name` | `False` | string | If preset, disables the named Pi-hole, otherwise, disables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ ### Service `pi_hole.enable` -Enable your Pi-hole. +Enables configured Pi-holes(s). + +| Service data attribute | Required | Type | Description | +| ---------------------- | -------- | -------- | ----------- | +| `name` | `False` | string | If preset, enables the named Pi-hole, otherwise, enables all configured Pi-holes | _Note: This service requires `api_key` to be specified in the configuration._ From 667f6814881d52684473e101b0833c35794fb5b0 Mon Sep 17 00:00:00 2001 From: Alec Rust Date: Thu, 12 Dec 2019 19:13:23 +0000 Subject: [PATCH 053/236] Improve iCloud setup instructions (#11444) Some confusions in the iCloud docs I encountered when setting it up: - That this integration creates a device tracker for every device in Find My - Still referenced Find My iPhone service instead of Find My - Wasn't clear how the 2 Step Authentication code would be provided by the user Have tidied these things up. --- source/_integrations/icloud.markdown | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index d70e5aa4a1d..8239a89f640 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -8,9 +8,9 @@ ha_release: "0.10" --- -The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. +The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track the location of their iOS devices. -It does require that your device is registered with "Find My iPhone". +It does require that your devices are registered with the [Find My](https://www.apple.com/uk/icloud/find-my/) service. To integrate iCloud in Home Assistant, add the following section to your `configuration.yaml` file: @@ -49,19 +49,18 @@ gps_accuracy_threshold: {% endconfiguration %}

You may receive an email from Apple stating that someone has logged into your account.
-To disable the drainage of the battery, a dynamic interval is being used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. +If 2 Step Authentication is enabled for your iCloud account, some time after Home Assistant startup the integration will ask which device you want to use as the Trusted Device via a notification in the Home Assistant UI. The integration will send an SMS prompt to that device with the auth code to enter in Home Assistant. The duration of this authentication is determined by Apple, but is currently 2 months, so you will only need to verify your account every two months. -If 2 Step Authentication is enabled for your iCloud account. The integration will ask which device you want to use as Trusted Device and integration will send a prompt to that device with the code which you can enter in Home Assistant. The duration of this authentication is determined by Apple, but is now at 2 months, so you will only need to verify your account each two months. -2 Factor Authentication is the improved version of 2 Step Authentication, this is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. +2 Factor Authentication is the improved version of 2 Step Authentication and is still not supported by the pyicloud library. Therefore it's not possible to use it with the device_tracker yet. + +To prevent excessive battery drainage, a dynamic interval is used for each individual device instead of a fixed interval for all devices linked to one account. The dynamic interval is based on the current zone of a device, the distance towards home and the battery level of the device. 4 services are available for this component: - **update**: This service can be used to ask for an update of a certain iDevice. The `account_name` and `device_name` are optional. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iphone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. From 40017faf19d3a1ffbcf29a7af06fbf45795b4444 Mon Sep 17 00:00:00 2001 From: Hmmbob <33529490+hmmbob@users.noreply.github.com> Date: Thu, 12 Dec 2019 22:37:58 +0100 Subject: [PATCH 054/236] Fixing small typo in 0.103 notes (#11446) --- source/_posts/2019-12-11-release-103.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index 048ad05c150..aef337c02c6 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -127,7 +127,7 @@ automation editor and allows you to copy parts of your automation quickly. Screenshot of the automation YAML editor.

-### Rearange actions +### Rearrange actions We also added the ability to rearrange your actions, so you don't have to start all over when you want to add a delay between 2 service calls. From 650fa29e14c94c7e1c549b995e96ad5ac7de308b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 12 Dec 2019 23:58:34 +0100 Subject: [PATCH 055/236] Fix pyodbc --- source/_integrations/recorder.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 2093c806f41..865253c2b06 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -138,7 +138,7 @@ Call the service `recorder.purge` to start a purge task which deletes events and | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | | PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pymssql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MS SQL Server | `mssql+pyodbc://username:password@dsnname` |
@@ -250,8 +250,8 @@ A service restart will work as well. For MS SQL Server you may have to install a few dependencies: ```bash -sudo apt-get install freetds-dev -pip3 install pymssql +sudo apt-get install unixodbc-dev +pip3 install pyodbc ``` If you are in a virtual environment, don't forget to activate it before installing the pymssql package. @@ -259,5 +259,5 @@ If you are in a virtual environment, don't forget to activate it before installi ```bash sudo -u homeassistant -H -s source /srv/homeassistant/bin/activate -pip3 install pymssql +pip3 install pyodbc ``` From 2651a71eedf0dad00a521745e5f23de2d36daaa7 Mon Sep 17 00:00:00 2001 From: Malte Franken Date: Fri, 13 Dec 2019 20:32:14 +1100 Subject: [PATCH 056/236] Fix one more occurrence of pymssql (#11447) --- source/_integrations/recorder.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 865253c2b06..049aac26927 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -254,7 +254,7 @@ sudo apt-get install unixodbc-dev pip3 install pyodbc ``` -If you are in a virtual environment, don't forget to activate it before installing the pymssql package. +If you are in a virtual environment, don't forget to activate it before installing the pyodbc package. ```bash sudo -u homeassistant -H -s From 38a2c5a3b3aad806dcafe461fa83cb4ab4289d7b Mon Sep 17 00:00:00 2001 From: Lindsay Ward Date: Fri, 13 Dec 2019 22:21:49 +1000 Subject: [PATCH 057/236] Update Lovelace YAML docs to improve readability (#11058) --- source/lovelace/yaml-mode.markdown | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/source/lovelace/yaml-mode.markdown b/source/lovelace/yaml-mode.markdown index e05d2ecb584..ef586d091e7 100644 --- a/source/lovelace/yaml-mode.markdown +++ b/source/lovelace/yaml-mode.markdown @@ -1,16 +1,28 @@ --- title: "Lovelace YAML mode" -description: "Advanced users can switch on the advanced YAML mode." +description: "Advanced users can switch on YAML mode for editing the Lovelace UI." --- -It is possible to write your Lovelace config in YAML instead of via the UI. To do so, you will need to configure the Lovelace integration to be in yaml mode by adding the following to your `configuration.yaml`: +It is possible to customize your Home Assistant interface by writing in YAML instead of via the UI. To do so, you configure the Lovelace integration to be in yaml mode by adding the following to your `configuration.yaml`: ```yaml lovelace: mode: yaml ``` -Restart Home Assistant for the mode to be changed. Create a new file `/ui-lovelace.yaml` and add the following content. Adjust the entity names to entities that exist in your Home Assistant installation. +Restart Home Assistant for the mode to be changed. Create a new file `/ui-lovelace.yaml` and add your Lovelace configuration. A good way to start this file is to copy and paste the "Raw config" from the UI so your manual configuration starts the same as your existing UI. + +- Go into the `Overview` tab. +- Click the three dots menu (top-right) and click on `Configure UI`. +- Click the three dots menu again and click on `Raw config editor`. +- There you see the config for your current Lovelace UI. Copy that into the `/ui-lovelace.yaml` file. + +Once you take control of your UI via YAML, the Home Assistant interface for modifying it won't be available anymore and new entities will not automatically be added to your UI. + +When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button in the menu at the top of the UI. + +To revert back to using the UI to edit your Lovelace interface, remove the `lovelace` section from your `configuration.yaml` and copy the contents of your `ui-lovelace.yaml` into the raw config section of Home Assistant and restart. + As a super minimal example, here's the bare minimum you will need for this to work: @@ -87,14 +99,3 @@ views: content: > Welcome to your **Lovelace UI**. ``` - -Your previously customized Lovelace UI won't be modifiable anymore and won't follow after you start writing code in the `/ui-lovelace.yaml` file, but you can easily import it if you wish. - - - Go in the `Overview` tab. - - Go in the three dots menu (top-right) and click on `Configure UI`. - - Go in the three dots menu again and click on `Raw config editor`. - - There you see the config for your actual Lovelace UI, you can copy that into the `/ui-lovelace.yaml` file. - -Navigate to `/lovelace`. When you make changes to `ui-lovelace.yaml`, you don't have to restart Home Assistant or refresh the page. Just hit the refresh button in the menu at the top of the UI. - -To revert back to using the UI to edit your Lovelace interface, remove the `lovelace` sections from your `configuration.yaml` and copy the contents of your `ui-lovelace.yaml` into the raw config section of Home Assistant and restart. From 7256aef3a9b8f9cc68b2ba87671a327f435353fa Mon Sep 17 00:00:00 2001 From: Alec Holmes Date: Fri, 13 Dec 2019 12:31:01 +0000 Subject: [PATCH 058/236] Updated ZHA configuration and device adding (#9782) * Updated ZHA configuration and device adding Added the steps for doing a GUI configuration and how to add devices using the integrations scanning ui * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update source/_components/zha.markdown Co-Authored-By: Franck Nijhof * Update zha.markdown * Update zha.markdown * :pencil2: Tweak * :pencil2: Tweak Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/zha.markdown | 53 +++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index e066856ef38..c74a8e76a96 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -56,7 +56,21 @@ The custom quirks implementations for zigpy implemented as ZHA Device Handlers f - [PiZiGate](https://zigate.fr/produit/pizigate-v1-0/) - [Wifi ZiGate](https://zigate.fr/produit/zigate-pack-wifi-v1-3/) (work in progress) -## Configuration +## Configuration - GUI + +From the Home Assistant front page go to **Configuration** and then select **Integrations** from the list. + +Use the plus button in the bottom right to add a new integration called **ZHA**. + +In the popup: + + - USB Device Path - on a linux system will be something like `/dev/ttyUSB0` + - Radio type - select device type **ezsp**, **deconz** or **xbee** + - Submit + +The success dialog will appear or an error will be displayed in the popup. An error is likely if Home Assistant can't access the USB device or your device is not up to date (see troubleshooting). + +## Configuration - Manual To configure the component, select ZHA on the Integrations page and provide the path to your Zigbee USB stick. @@ -102,7 +116,13 @@ enable_quirks: To add new devices to the network, call the `permit` service on the `zha` domain. Do this by clicking the Service icon in Developer tools and typing `zha.permit` in the **Service** dropdown box. Next, follow the device instructions for adding, scanning or factory reset. -Alternatively you can trigger a scan for devices through the Web UI via `Configuration > ZHA > Add Devices`. +## Adding devices + +Go to the **Configuration** page and select the **ZHA** integration that was added by the configuration steps above. + +Click on **ADD DEVICES** to start a scan for new devices. + +Reset your ZigBee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). ## Troubleshooting @@ -132,3 +152,32 @@ To remove modemmanager from an Debian/Ubuntu host run this command: ```bash sudo apt-get purge modemmanager ``` + +### Can't connect to USB device and using Docker + +If you are using Docker and can't connect, you most likely need to forward your device from the host machine to the Docker instance. This can be achieved by adding the device mapping to the end of the startup string or ideally using docker compose. + +#### Docker Compose + +Install Docker-Compose for your platform (linux - `sudo apt-get install docker-compose`). + +Create a `docker-compose.yml` with the following data: + +```yaml +version: '2' +services: + homeassistant: + # customisable name + container_name: home-assistant + + # must be image for your platform, this is the rpi3 variant + image: homeassistant/raspberrypi3-homeassistant + volumes: + - :/config + - /etc/localtime:/etc/localtime:ro + devices: + # your usb device forwarding to the docker image + - /dev/ttyUSB0:/dev/ttyUSB0 + restart: always + network_mode: host +``` From 60ac8dc79aedf8917a5fc6ab606e5798333ee52b Mon Sep 17 00:00:00 2001 From: Lindsay Ward Date: Fri, 13 Dec 2019 23:34:15 +1000 Subject: [PATCH 059/236] =?UTF-8?q?Update=20Google=20Calendar=20instructio?= =?UTF-8?q?ns,=20especially=20authentication=E2=80=A6=20(#11046)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_integrations/calendar.google.markdown | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown index 1dfa11481fe..04fcb7b92ef 100644 --- a/source/_integrations/calendar.google.markdown +++ b/source/_integrations/calendar.google.markdown @@ -12,7 +12,7 @@ The `google` calendar platform allows you to connect to your [Google Calendars](https://calendar.google.com) and generate binary sensors. The sensors created can trigger based on any event on the calendar or only for matching events. When you first setup this integration it will generate a new -configuration file `google_calendars.yaml` that will contain information about +configuration file `google_calendars.yaml` in your config directory that will contain information about all of the calendars you can see. It also exposes a service to add an event to one of your Google Calendars. @@ -23,15 +23,15 @@ Generate a Client ID and Client Secret on 1. Follow the wizard using the following information. 1. When it gets to the point of asking _Which API are you using?_ just click cancel. -1. Under APIs & Services (left sidebar) > Credentials, click on the tab 'OAuth consent screen'. +1. Under APIs & Services (left sidebar) > Credentials, click on the menu item, 'OAuth consent screen'. 1. Set the 'Application Name' (the name of the application asking for consent) to anything you want. We suggest "Home-Assistant". -1. Save this page. You don't have to fill out anything else there. -1. Under APIs & Services > Credentials, click 'Create credentials' > OAuth client ID. -1. Set the Application type to 'Other' and give this credential set a name then click 'Create'. -1. Copy the client ID and secret to a text editor temporarily as you will need to put these in your `configuration.yaml` file. -1. Under APIs and Services > Library, search for "Google Calendar API" and enable it if it isn't already enabled automatically through this process. +1. Save this page. You don't have to fill out anything else here. +1. Click on the menu item, Credentials, then click 'Create credentials' > OAuth client ID. +1. Set the Application type to 'Other' and give this credential set a name (like "Home Assistant Credentials") then click 'Create'. +1. Copy the client ID and client secret from the page that follows into a text editor temporarily as you will need to put these in your `configuration.yaml` file. +1. Click on the menu item, Library, then search for "Google Calendar API" and enable it (if it isn't already enabled automatically through this process). -If you will be adding more scopes than just the "Google Calendar API" to the OAuth for this application, you will need to delete your token file. You will lose your refresh token due to the re-authenticating to add more API access. It's recommended to use different authorizations for different pieces of Google. +If you will later be adding more scopes than just the "Google Calendar API" to the OAuth for this application, you will need to delete your token file under your Home Assistant Profile. You will lose your refresh token due to the re-authenticating to add more API access. It's recommended to use different authorizations for different pieces of Google. ## Configuration @@ -47,11 +47,11 @@ google: {% configuration %} client_id: - description: Use the value you generated in the Prerequisites stage. + description: Use the client ID you generated in the Prerequisites stage. required: true type: string client_secret: - description: Use the value you generated in the Prerequisites stage. + description: Use the client secret you generated in the Prerequisites stage. required: true type: string track_new_calendar: @@ -63,13 +63,8 @@ track_new_calendar: default: true {% endconfiguration %} -The next steps will require you to have Home Assistant running. - -After you have it running complete the Google authentication that pops up in notification (the little bell icon in the lower left corner). - -It will give you a URL and a code to enter. This will grant your Home Assistant -service access to all the Google Calendars that the account you -authenticate with can read. This is a Read-Only view of these calendars. +The next time you run or restart Home Assistant, you should find a new notification (the little bell icon in the lower left corner). Click on that notification it will give you a link and an authentication code. Click on that link to open a Google website where you should enter the code found in the notification. This will grant your Home Assistant service read-only access to all the Google Calendars that the account you +authenticate with can read. ## Calendar Configuration From 1e35281d5eb57de1f4179e0fc05e34537e920e48 Mon Sep 17 00:00:00 2001 From: Lindsay Ward Date: Fri, 13 Dec 2019 23:42:29 +1000 Subject: [PATCH 060/236] Update google assistant docs (#11057) * Improve Google Assistant docs, consistency, accuracy, wording, including update for Home app * :pencil2: Fixes URL Co-authored-by: Franck Nijhof --- .../_integrations/google_assistant.markdown | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 19f4c3fc610..fb1bd6c63ab 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -8,7 +8,7 @@ featured: true ha_release: 0.56 --- -The `google_assistant` integration allows you to control things via Google Assistant (on your mobile or tablet) or a Google Home device. +The `google_assistant` integration allows you to control things via Google Assistant on your mobile, tablet or Google Home device. ## Automatic setup via Home Assistant Cloud @@ -18,7 +18,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na ## Manual setup -The Google Assistant integration requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. +The Google Assistant integration (without Home Assistant Cloud) requires a bit more setup than most due to the way Google requires Assistant Apps to be set up.
@@ -26,7 +26,7 @@ To use Google Assistant, your Home Assistant configuration has to be [externally
-You need to create an API Key with the [Google Cloud API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting-the-request_sync-service)). If you don't provide one, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device that you wish to control via the Google Assistant integration. +You need to create an API Key with the [Google Cloud API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview) which allows you to update devices without unlinking and relinking an account (see [below](#troubleshooting-the-request_sync-service)). If you don't provide one, the `google_assistant.request_sync` service is not exposed. It is recommended to set up this configuration key as it also allows the usage of the following command, "Ok Google, sync my devices". Once you have set up this component, you will need to call this service (or command) each time you add a new device in Home Assistant that you wish to control via the Google Assistant integration. 1. Create a new project in the [Actions on Google console](https://console.actions.google.com/). 1. Add/Import a project and give it a name. @@ -45,15 +45,15 @@ You need to create an API Key with the [Google Cloud API Console](https://consol 9. Testing instructions: Enter anything. It doesn't matter since you won't submit this app. Click `Save` Screenshot: Account linking - + 3. Select the `Develop` tab at the top of the page, then in the upper right hand corner select the `Test` button to generate the draft version Test App. 4. Add the `google_assistant` integration configuration to your `configuration.yaml` file and restart Home Assistant following the [configuration guide](#configuration) below. -5. Open the Google Home app and goto `Account` most right icon. -6. Click `+ Set up or add`, `+ Set up device`, 'New devices', choose your home and click `Next` click `Have something...`you should have `[test] your app name` listed under 'Add new.' Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms for your devices or nicknames for your devices. +5. (Note that app versions may be slightly different.) Open the Google Home app and go to `Settings`. +6. Click `Add...`, `+ Set up or add`, `+ Set up device`, and click `Have something already setup?`. You should have `[test] your app name` listed under 'Add new'. Selecting that should lead you to a browser to login your Home Assistant instance, then redirect back to a screen where you can set rooms and nicknames for your devices if you wish.
-If you've added Home Assistant to the home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant to redirect back to the `Google Assistant` app. +If you've added Home Assistant to your phone's home screen, you have to first remove it from home screen, otherwise, this HTML5 app will show up instead of a browser. Using it would prevent Home Assistant redirecting back to the Google Home app.
@@ -73,15 +73,15 @@ If you've added Home Assistant to the home screen, you have to first remove it f 6. For the Key type, select the JSON option. 7. Click Create. A JSON file that contains your key downloads to your computer. 8. Use the information in this file or the file directly to add to the `service_account` key in the configuration. -3. If you didn't specify a service account and want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable Homegraph API for your project: +3. If you didn't specify a service account and want to use the `google_assistant.request_sync` service, to update devices without unlinking and relinking, in Home Assistant, then enable HomeGraph API for your project: 1. Go to the [Google API Console](https://console.cloud.google.com/apis/api/homegraph.googleapis.com/overview). - 2. Select your project and click Enable Homegraph API. + 2. Select your project and click Enable HomeGraph API. 3. Go to Credentials, which you can find on the left navigation bar under the key icon, and select API Key from Create Credentials. 4. Note down the generated API Key and use this in the configuration. ### Configuration -Now add the following lines to your `configuration.yaml` file: +Now add your setup to your `configuration.yaml` file, such as: ```yaml # Example configuration.yaml entry @@ -117,7 +117,7 @@ secure_devices_pin: type: string default: "" api_key: - description: Your Homegraph API key (for the `google_assistant.request_sync` service). This is not required if a service_account is specified. + description: Your HomeGraph API key (for the `google_assistant.request_sync` service). This is not required if a service_account is specified. required: false type: string service_account: @@ -194,17 +194,17 @@ Currently, the following domains are available to be used with Google Assistant, - climate (temperature setting, hvac_mode) - vacuum (dock/start/stop/pause) - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) -- Alarm Control Panel (Arm/Disarm) +- Alarm Control Panel (arm/disarm)
- The domain groups contains groups containing all items, by example group.all_automations. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations + The domain `groups` contains groups containing all items, such as `group.all_automations`. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations.
### Secure Devices Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `garage` and `door`. -By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing and locking these devices does not require a pin. +By default these cannot be opened by Google Assistant unless a `secure_devices_pin` is set up. To allow opening, set the `secure_devices_pin` to something and you will be prompted to speak the pin when opening the device. Closing or locking these devices does not require a pin. For the Alarm Control Panel if a code is set it must be the same as the `secure_devices_pin`. If `code_arm_required` is set to `false` the system will arm without prompting for the pin. @@ -213,13 +213,13 @@ For the Alarm Control Panel if a code is set it must be the same as the `secure_ Media Player sources are sent via the Modes trait in Google Assistant. There is currently a limitation with this feature that requires a hard-coded set of settings. Because of this, the only sources that will be usable by this feature [are listed here](https://developers.google.com/actions/reference/smarthome/traits/modes). -#### Example Command: +#### Example Command "Hey Google, change input source to TV on Living Room Receiver" ### Room/Area support -Entities that have not got rooms explicitly set and that have been placed in Home Assistant areas will return room hints to Google with the devices in those areas. +Entities that have not been explicitly assigned to rooms but have been placed in Home Assistant areas will return room hints to Google with the devices in those areas. ### Climate Operation Modes @@ -236,18 +236,18 @@ Here are the modes that are currently available: ### Troubleshooting the request_sync service -The request_sync service requires that the initial sync from Google includes the agent_user_id. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlenest/answer/7126338) from Home Control and relink. +Syncing may fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant" (or whatever you named your project), this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview. -The request_sync service may fail with a 404 if the project_id of the Homegraph API differs from the project_id of the Actions SDK found in the preferences of your project on [Actions on Google console](https://console.actions.google.com). Resolve this by: +The `request_sync` service requires that the initial sync from Google includes the `agent_user_id`. If not, the service will log an error that reads something like "Request contains an invalid argument". If this happens, then [unlink the account](https://support.google.com/googlenest/answer/7126338) from Home Control and relink. + +The `request_sync` service may fail with a 404 if the `project_id` of the HomeGraph API differs from the `project_id` of the Actions SDK found in the preferences of your project on [Actions on Google console](https://console.actions.google.com). Resolve this by: 1. Removing your project from the [Actions on Google console](https://console.actions.google.com). 2. Add a new project to the [Google Cloud API Console](https://console.cloud.google.com). Here you get a new `project_id`. - 3. Enable Homegraph API to the new project. + 3. Enable HomeGraph API to the new project. 4. Generate a new API key. 5. Again, create a new project in the [Actions on Google console](https://console.actions.google.com/). Described above. But at the step 'Build under the Actions SDK box' choose your newly created project. By this, they share the same `project_id`. -Syncing may also fail after a period of time, likely around 30 days, due to the fact that your Actions on Google app is technically in testing mode and has never been published. Eventually, it seems that the test expires. Control of devices will continue to work but syncing may not. If you say "Ok Google, sync my devices" and get the response "Unable to sync Home Assistant", this can usually be resolved by going back to your test app in the [Actions on Google console](https://console.actions.google.com/) and clicking `Simulator` under `TEST`. Regenerate the draft version Test App and try asking Google to sync your devices again. If regenerating the draft does not work, go back to the `Action` section and just hit the `enter` key for the URL to recreate the Preview. - ### Troubleshooting with NGINX When using NGINX, ensure that your `proxy_pass` line *does not* have a trailing `/`, as this will result in errors. Your line should look like: From 2d239645f3d97814e0721cc878cd0027c02a6644 Mon Sep 17 00:00:00 2001 From: Alex Kretzschmar Date: Fri, 13 Dec 2019 09:06:48 -0500 Subject: [PATCH 061/236] clarifies mi home app version requirement (#11401) * clarifies token retrieval * folding in commits that occured since my draft --- .../_integrations/vacuum.xiaomi_miio.markdown | 196 ++++++------------ 1 file changed, 65 insertions(+), 131 deletions(-) diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index edf2c21979f..085f92bfdad 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -206,9 +206,9 @@ The following table shows the units of measurement for each attribute:
-As per Version 5.4.49 the Android Mi Home app stores the token readable in the log files. It can easily be retrieved in the folder Smarthome on in the Android device. Just open the text file inside the Smarthome/logs folder and search for the token. +If using an Android device to retrieve the Access Token only `v5.4.49` of Mi Home is confirmed working (December 2019). Use `v5.4.49` of Mi Home locate a text file under the `Smarthome/logs` folder where the 32 character token is stored. There will likely be several text files in this directory, search all of them for the word 'token' and you should find it there. Be advised that the latest version of Mi Home does not store the token in clear text.

-The iPhone app still stores the token in the SQLite db as of v4.23.4 (Nov 17, 2019). +The iPhone app still stores the token in the SQLite db as of `v4.23.4` (Nov 17, 2019).

After resetting the WiFi settings of the Xiaomi robot vacuum, a new Access Token will be generated and therefore these instructions need to be followed again.

@@ -217,116 +217,25 @@ These instructions are written for the Mi Home app - not for the new RoboRock ap This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuum, Mi Robot 2 (Roborock) Vacuum, Xiaomi Philips Lights and Xiaomi IR Remote. The Xiaomi Gateway uses another security method and requires a `key` (16 alphanumeric chars), which can be obtained easily via a hidden menu item at the Mi-Home app or using the `miio` command line tool.
-### Miio command line tool +### Android (not rooted) -You can install the command line tool using the following command: +> If using an Android device to retrieve the Access Token only `v5.4.49` of Mi Home is confirmed working (December 2019). -```bash -npm install -g miio -``` +1. To begin, set up your Robovac with the latest version of Mi Home on your primary Android device as you normally would. +2. Using `v5.4.49` of Mi Home locate a text file under the `Smarthome/logs` folder where the 32 character token is stored. +3. There will likely be several text files in this directory, search all of them for the word 'token' and you should find it there. Be advised that the latest version of Mi Home does not store the token in clear text. -Discovering devices on the current network: -```bash -miio discover -``` +### Linux and Rooted Android -This will list devices that are connected to the same network as your computer. Let it run for a while so it has a chance to reach all devices, as it might take a minute or two for all devices to answer. - -The commands outputs each device on this format: - -```text -Device ID: 48765421 -Model info: zhimi.airpurifier.m1 -Address: 192.168.100.9 -Token: token-as-hex-here via auto-token -Support: At least basic -``` - -The information output is: - -- `Device ID` - The unique identifier of the device, does not change if the device is reset. -- `Model ID`- The model id if it could be determined, this indicates what type of device it is. -- `Address` - The IP that the device has on the network. -- `Token` - The token of the device or `???` if it could not be automatically determined. - -### Windows and Android - -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. -2. Download and extract the [MiToolKit.zip](https://github.com/ultrara1n/MiToolkit/releases). -3. Enable developer mode and USB debugging on the Android phone and plug it into the computer. -4. Change the MiToolKit language to English if you need to. -5. Click "Extract Token". -6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. -7. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. -8. If you don't get a token, close MiToolKit completely, delete the folder MiToolkit\apps\com.xiaomi.smarthome and relaunch MiToolKit to force recreate a new backup (sometimes the files would not be overwritten before deleting the old ones). - -### Linux and Android (not rooted) - -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. - -Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. - -```bash -sudo apt-get install libffi-dev libssl-dev -``` - -If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. - -```bash -sudo -u homeassistant -H -s -source /srv/homeassistant/bin/activate -``` - -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. -2. Enable developer mode, USB debugging and plug the Android phone into the computer. -3. Get ADB by running `apt-get install android-tools-adb` or `apt-get install adb`. -4. `adb devices` should list your device. Consult the ADB manual if necessary. -5. Issue a backup command via adb: `adb backup -noapk com.xiaomi.smarthome -f backup.ab` (set a password if prompted on your phone). Some devices may require single quotes in the command `adb backup '-noapk com.xiaomi.smarthome -f backup.ab'`. -6. Download the ['ADB Backup Extractor'](https://sourceforge.net/projects/adbextractor/files/latest/download). -7. Extract the data from the backup: (enter the password, if prompted) - ```bash - java -jar Android\ Backup\ Utilities/Android\ Backup\ Extractor/android-backup-extractor-20171005-bin/abe.jar unpack backup.ab unpacked.tar - ``` -8. Untar the unpacked data: `tar -xvf unpacked.tar`. -9. The following command returns the token for your Xiaomi vacuum bot: - ```bash - sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";' - ``` - -### Linux and Android (rooted!) - -Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from an SQLite file inside your phone. - -Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. - -```bash -sudo apt-get install libffi-dev libssl-dev -``` - -If your Home Assistant installation is running in a [virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. - -```bash -sudo -u homeassistant -H -s -source /srv/homeassistant/bin/activate -``` - -To fetch the token follow these instructions depending on your mobile phone platform. - -1. Configure the robot with [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/). Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. -2. Enable developer mode, USB debugging and root permission only for ADB on the Android phone and plug it into the computer. -3. Get ADB (e.g, using `apt-get install android-tools-adb`). -4. The command `adb devices` should list your device. -5. The command `adb root` (does work for development builds only: ones with `ro.debuggable=1`). -6. The command `adb shell` (for those using Magisk based root the this command won't work. After entering a shell, type `su` to enter the root shell and try again). -7. The following command returns a list of all registered devices including IP address and token: - ```bash - echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db - ``` +1. To begin, set up your Robovac with the latest version of Mi Home on your primary Android device as you normally would. +2. Ensure successful operation using the latest Mi Home app and give the Vacuum a static IP in your router or however you do that on your LAN. +3. Install version `v5.4.54` of Mi Home on your rooted Android device and login (you can't have two version of Mi Home installed at the same time). +4. Ensure you are using the same server every time +5. Ensure successful operation using 5.4.54 (locate is a nice simple test) +6. Using adb we will now extract the token from the rooted phone +7. Use adb shell to connect to your device and become root (if using Magisck root do `adb shell -> su -> whoami` to ensure root access. +8. Then run grep -R '"token"' /data/data/com.xiaomi.smarthome and grab the token ### iOS @@ -363,34 +272,42 @@ To fetch the token follow these instructions depending on your mobile phone plat 8. Select `Browse Data` tab from the DB Browser and switch to table called `devicerecord` 9. This will display all the connected devices information with the token. -### Selecting token manually (Windows and Android) +### Miio command line tool -The following instruction explained an alternative method, in case the MiToolKit didn't work. +Use of Miio should be done before the Vacuum is connected to Mi Home. If you already connected to the app you will need to delete it and then join the ad-hoc Wifi network the Vacuum creates. If the vacuum is already paired it's likely this method will only return `???` as your token. -Software Required: +You can install the command line tool using the following command: -- Android ADB is contained in [Android SDK](https://developer.android.com/studio/releases/platform-tools) -- [Mi Home version 5.0.30](https://www.apkmirror.com/apk/xiaomi-inc/mihome/mihome-5-0-30-release/) -- [Android Backup Extractor](https://sourceforge.net/projects/adbextractor/) -- [SQLite Browser](https://sqlitebrowser.org/) -1. Install an old Version of MiHome (e.g. Mi Home version 5.0.30) on your Android-Device -2. Open MiHome, log-in and add your devices. Make sure to select the correct region, as Xiaomi uses different product names for different geographical areas. -3. Enable USB-Debugging on your Android -4. Create a backup from your MiHome App, by using adb - ```bash - adb backup com.xiaomi.smarthome - ``` - Now the backup App opens on you Android-Device. You don't need to set a password, just click save. -5. Extract the backup-file with android-backup-extractor - ```bash - java -jar abe.jar unpack backup.ab backup.tar - ``` - After that, you will be able to open the file with WinRaR or what ever you like. -6. Go to \apps\com.xiaomi.smarthome\db -7. Open miio2.db with SQLite Browser -8. You can find your device tokens in "devicerecord" table +```bash +npm install -g miio +``` -## Retrieving the Zone Coordinates +Discovering devices on the current network: + +```bash +miio discover +``` + +This will list devices that are connected to the same network as your computer. Let it run for a while so it has a chance to reach all devices, as it might take a minute or two for all devices to answer. + +The commands outputs each device on this format: + +```text +Device ID: 48765421 +Model info: zhimi.airpurifier.m1 +Address: 192.168.100.9 +Token: token-as-hex-here via auto-token +Support: At least basic +``` + +The information output is: + +- `Device ID` - The unique identifier of the device, does not change if the device is reset. +- `Model ID`- The model id if it could be determined, this indicates what type of device it is. +- `Address` - The IP that the device has on the network. +- `Token` - The token of the device or `???` if it could not be automatically determined. + +## Retrieving Zoned Cleaning Coordinates ### Using FloleVac (Android) @@ -399,3 +316,20 @@ Software Required: 3. Open Map (make sure you're on the same network as your vacuum cleaner) 4. Select "Zone cleanup" and draw a box around the zone you'd like to clean 5. Long press "Cleanup" and the zone coordinates will be copied to your clipboard + +### Using RoboRock Control Center (requires Valetudo firmware) + +[RRCC](https://github.com/LazyT/rrcc) supports both rooted and non-rooted Vacuums and acts as a mostly fully featured replacement for Mi Home that works locally without the cloud. If you have installed the rooted firmware [Valetudo](https://github.com/Hypfer/Valetudo) you are able to SSH into your Vacuum and enable MQTT plus use map functions with no cloud requirement. + +Using the map editor you are able to acquire the co-ordinates required for zoned clean up. Here is an example script for zoned clean up: + +``` +vacuum_kitchen: + alias: "vacuum kitchen" + sequence: + - service: vacuum.send_command + data: + entity_id: 'vacuum.xiaomi_vacuum_cleaner' + command: app_zoned_clean + params: [[23084,26282,27628,29727,1]] +``` \ No newline at end of file From 45e63b0d273387959f847bee7699b0c985a57b1f Mon Sep 17 00:00:00 2001 From: uDude Date: Fri, 13 Dec 2019 07:09:01 -0700 Subject: [PATCH 062/236] Tell people they need opensslv.h and cffi.h in order to use (#10938) * Tell people they need opensslv.h and cffi.h in order to use pip install homeassistant (at least on armv7/armhf). * :pencil2: Tweaks Co-authored-by: null Co-authored-by: Franck Nijhof --- source/_docs/installation/virtualenv.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index c3b46fdb6c2..fe1f5613757 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -12,6 +12,8 @@ It's recommended when installing Python packages that you use a [virtual environ This is a generic guide for running Home Assistant under Python. We recommend to use [our recommended installation guides](/docs/installation/#recommended). The steps below may be shorter but some users find difficulty when applying updates and may run into issues. +Before you begin the guide below, ensure that you have a *so-called standard* build environment that includes things like `make`, `gcc`, `python3`, including Python 3 `setuptools` and `pip` modules. Less obvious is the need to install `openssl-dev` (for opensslv.h) and `libffi-dev` (for cffi.h) for things to build later on. +
{% comment %} From f2635af9485c361451d7b09d83c7ca64a91975b8 Mon Sep 17 00:00:00 2001 From: cogneato Date: Fri, 13 Dec 2019 09:00:44 -0700 Subject: [PATCH 063/236] Recommendation for ssh and samba add-ons (#11266) * Recommendation for ssh and samba add-ons Made a stronger recommendation for the ssh addon and samba addon following an install of Hassio. * Update source/hassio/installation.markdown Co-Authored-By: Franck Nijhof --- source/hassio/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index d11d99f570c..4a07e17f82f 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -45,7 +45,7 @@ The following will take you through the steps required to install Hass.io. 6. You will be able to reach your installation at `http://hassio.local:8123` (if your router supports mDNS, otherwise see below). -7. Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar). +7. It is important to provide yourself proper access, including the Hass.io CLI tools. Both the [Samba add-on][samba] and the [SSH add-on][ssh] should be the first add-ons you should install, before making changes to the configuration in the `/config/` folder. From the UI choose **Hass.io**, which is located in the sidebar and then the add-on store.
From 3be16e3b77057cb4436ae4ea37ba3c4e6ca45c65 Mon Sep 17 00:00:00 2001 From: adr29truck Date: Sat, 14 Dec 2019 03:24:24 +0100 Subject: [PATCH 064/236] Update mobile.markdown (#11450) Rephrased in order to make it more clear that the "web app" approach is an alternative to the native apps. --- source/_docs/frontend/mobile.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/frontend/mobile.markdown b/source/_docs/frontend/mobile.markdown index 801b29d93db..f399ccc7482 100644 --- a/source/_docs/frontend/mobile.markdown +++ b/source/_docs/frontend/mobile.markdown @@ -4,9 +4,9 @@ description: "Android/iOS instructions to add Home Assistant to your homescreen. redirect_from: /getting-started/mobile/ --- -Home Assistant has [a companion apps for Android and iOS](/docs/ecosystem/ios/). +Home Assistant has [a companion app for both Android and iOS](/docs/ecosystem/ios/). -On both Android and iOS, you can add the Home Assistant "web app" to your homescreen as if it was native (Home Assistant leverages the W3C [manifest.json](https://w3c.github.io/manifest/) support). +As an alternative to the iOS and Android companion apps, you can add the Home Assistant "web app" to your homescreen as if it was native (Home Assistant leverages the W3C [manifest.json](https://w3c.github.io/manifest/) support). ### Android From 16f6f55f32235c69721c892b38b37ce2444741a5 Mon Sep 17 00:00:00 2001 From: Marius <33354141+Mariusthvdb@users.noreply.github.com> Date: Sat, 14 Dec 2019 11:06:59 +0100 Subject: [PATCH 065/236] correct wrong quote (#11454) corrected `last-triggered' to `last-triggered` --- source/_lovelace/entities.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index 68d61c8e11b..86667b410f0 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -61,7 +61,7 @@ image: type: string secondary_info: required: false - description: "Show additional info. Values: `entity-id`, `last-changed`, `last-triggered' (only for automations and scripts)." + description: "Show additional info. Values: `entity-id`, `last-changed`, `last-triggered` (only for automations and scripts)." type: string format: required: false From 43df99851ef5f1a54d403126e796c7737e3949f4 Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Sat, 14 Dec 2019 10:55:17 -0500 Subject: [PATCH 066/236] Update androidtv docs to reflect improved select_source support (#11379) --- source/_integrations/androidtv.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index dd311db046d..1ba3c07da02 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -70,7 +70,7 @@ adb_server_port: default: 5037 type: integer get_sources: - description: Whether or not to retrieve the running apps as the list of sources for Fire TV devices; not used for Android TV devices. + description: Whether or not to retrieve the running apps as the list of sources. required: false default: true type: boolean @@ -189,9 +189,9 @@ If the setup for your Android TV or Fire TV device fails, then there is probably ## Services -### (Fire TV devices only) `media_player.select_source` +### `media_player.select_source` -For Fire TV devices, you can launch an app using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: +You can launch an app on your device using the `media_player.select_source` command. Simply provide the app ID as the `source`. You can also stop an app by prefixing the app ID with a `!`. For example, you could define [scripts](/docs/scripts) to start and stop Netflix as follows: ```yaml start_netflix: From 4567163c1f88b16e8f88e7f000a225b9004af16b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sat, 14 Dec 2019 19:16:50 +0200 Subject: [PATCH 067/236] Grammar and spelling fixes (#11455) --- source/_docs/configuration/templating.markdown | 2 +- source/_docs/configuration/troubleshooting.markdown | 6 +++--- source/_docs/ecosystem/backup/backup_github.markdown | 2 +- source/_docs/installation.markdown | 2 +- source/_docs/installation/freenas.markdown | 2 +- source/_faq/component.markdown | 2 +- source/_integrations/climate.mqtt.markdown | 2 +- source/_integrations/google_assistant.markdown | 2 +- source/_integrations/light.mqtt.markdown | 2 +- source/_integrations/solaredge_local.markdown | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index dde02bf7380..5b5be20efbf 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -292,7 +292,7 @@ Closest to some entity: {{ closest(states.zone.school, ['group.children', states.device_tracker]) }} ``` -It will also work as a filter over a iterable group of entities or groups: +It will also work as a filter over an iterable group of entities or groups: ```text Closest out of given entities: diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index a41b99ae906..9817a4ac116 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -4,15 +4,15 @@ description: "Common problems with tweaking your configuration and their solutio redirect_from: /getting-started/troubleshooting-configuration/ --- -It can happen that you run into trouble while configuring Home Assistant. Perhaps a integration is not showing up or is acting strangely. This page will discuss a few of the most common problems. +It can happen that you run into trouble while configuring Home Assistant. Perhaps an integration is not showing up or is acting strangely. This page will discuss a few of the most common problems. Before we dive into common issues, make sure you know where your configuration directory is. Home Assistant will print out the configuration directory it is using when starting up. -Whenever a integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. +Whenever an integration or configuration option results in a warning, it will be stored in `home-assistant.log` in the configuration directory. This file is reset on start of Home Assistant. ### My integration does not show up -When a integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. +When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. If you have incorrect entries in your configuration files you can use the [`check_config`](/docs/tools/check_config/) script to assist in identifying them: `hass --script check_config`. If you need to provide the path for your configuration you can do this using the `-c` argument like this: `hass --script check_config -c /path/to/your/config/dir`. diff --git a/source/_docs/ecosystem/backup/backup_github.markdown b/source/_docs/ecosystem/backup/backup_github.markdown index 5f3111cb540..3c2c6d7b568 100644 --- a/source/_docs/ecosystem/backup/backup_github.markdown +++ b/source/_docs/ecosystem/backup/backup_github.markdown @@ -58,7 +58,7 @@ Here is an example that will ignore everything but your YAML configuration. ```bash # Example .gitignore file for your config dir. -# A * ensures that everything will be ignored. +# An * ensures that everything will be ignored. * # You can whitelist files/folders with !, these will not be ignored. diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 0e350ef9094..3807cf4c038 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -43,7 +43,7 @@ NUC i7/i9 | Pure power, you should not have *any* performance issues ## Recommended -These install options are fully supported by Home Assistant's documentation. For example, if a integration requires that you install something to make it work on one of these methods then the integration page will document the steps required. +These install options are fully supported by Home Assistant's documentation. For example, if an integration requires that you install something to make it work on one of these methods then the integration page will document the steps required.
diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 0b6c0c362ac..b95d8ed5e66 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -224,7 +224,7 @@ sudo iocage console hass ```bash ls /dev/cu* ``` -This should ouput the following +This should output the following ```bash /dev/cuau0 /dev/cuaU0 ``` diff --git a/source/_faq/component.markdown b/source/_faq/component.markdown index 49db9c4525a..4acaa816335 100644 --- a/source/_faq/component.markdown +++ b/source/_faq/component.markdown @@ -4,6 +4,6 @@ description: "My integration does not show up" ha_category: Configuration --- -When a integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. +When an integration does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your integration you are trying to set up. If you have incorrect entries in your configuration files you can use the `check_config` script to assist in identifying them: `hass --script check_config`. diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 7916ae80c62..60c84f1e378 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -123,7 +123,7 @@ action_topic: type: string action_template: description: A template to render the value received on the `action_topic` with. - requred: false + required: false type: template temperature_command_topic: description: The MQTT topic to publish commands to change the target temperature. diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index fb1bd6c63ab..3921ca205ec 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -22,7 +22,7 @@ The Google Assistant integration (without Home Assistant Cloud) requires a bit m
-To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/). If you haven't already configured that, you should do so before continuing. If you make DNS changes to accomplish this, please ensure you have allowed up to the full 48 hours for DNS changes to propogate, otherwise Google may not be able to reach your server. +To use Google Assistant, your Home Assistant configuration has to be [externally accessible with a hostname and SSL certificate](/docs/configuration/remote/). If you haven't already configured that, you should do so before continuing. If you make DNS changes to accomplish this, please ensure you have allowed up to the full 48 hours for DNS changes to propagate, otherwise Google may not be able to reach your server.
diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 99405735d26..cdcd0c6db22 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -650,7 +650,7 @@ light: - [AiLight](https://github.com/stelgenhof/AiLight) is a custom firmware for the Ai-Thinker (and equivalent) RGBW WiFi light bulbs that has an ESP8266 onboard and controlled by the MY9291 LED driver. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours, brightness, colour temperature, flashing and transitions. Also it includes [MQTT Auto Discovery](/docs/mqtt/discovery/)) and the MQTT Last Will and Testament is enabled as well. -- [h801-mqtt-json](https://github.com/starkillerOG/h801-mqtt-json) is a custom firmware for the H801 LED dimmer, a 5 channel (RGBWWCW) WiFi LED strip controller for 12V LED strips. The firmware is meant to control the 5 channels of the H801 to simultaneously control an RGB and a Warm-white/Cold-white Led strip such as an 5050 RGB LED strip and a 5025 Dual White strip. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours (RGB strip), brightness, color temperature (CW/WW strip) and transitions. +- [h801-mqtt-json](https://github.com/starkillerOG/h801-mqtt-json) is a custom firmware for the H801 LED dimmer, a 5 channel (RGBWWCW) WiFi LED strip controller for 12V LED strips. The firmware is meant to control the 5 channels of the H801 to simultaneously control an RGB and a Warm-white/Cold-white Led strip such as a 5050 RGB LED strip and a 5025 Dual White strip. It implements the [MQTT JSON light](/integrations/light.mqtt) platform and supports ON/OFF, RGBW colours (RGB strip), brightness, color temperature (CW/WW strip) and transitions. ## Template schema diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index d536dc76e91..b41a08ad4d8 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -30,7 +30,7 @@ To use the SolarEdge sensors in your installation, add the following to your con # Example configuration.yaml entry sensor: - platform: solaredge_local - ip_address: IP_ADDRES + ip_address: IP_ADDRESS ``` {% configuration %} From 206d6006404426d85bfa3e852e4ac142f1235516 Mon Sep 17 00:00:00 2001 From: Fredrik <944065+fohlsso2@users.noreply.github.com> Date: Sun, 15 Dec 2019 08:00:03 +0100 Subject: [PATCH 068/236] Update proxmoxve.markdown (#11457) * Update proxmoxve.markdown that are the two things I stumbled on when trying out this new integration. Didn't expect it to spew loads of ssl errors in the logfile, and when that was fixed I went looking for a sensor called proxmox which wasn't there. * Minor changes --- source/_integrations/proxmoxve.markdown | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index 209a9099f08..5cec938598b 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -45,7 +45,7 @@ port: default: 8006 type: integer verify_ssl: - description: Whether to do strict validation on SSL certificates. + description: Whether to do strict validation on SSL certificates. If you use a self signed SSL certificate you need to set this to false. required: false default: true type: boolean @@ -97,4 +97,6 @@ proxmoxve: ## Binary Sensor -The integration will automatically create a binary sensor for each tracked VM or container, the binary sensor will either be on if the VM's state is running or off if the VM's state is different. +The integration will automatically create a binary sensor for each tracked virtual machone or container. The binary sensor will either be on if the VM's state is running or off if the VM's state is different. + +The created sensor will be called `binary_sensor.NODE_NAME_VMNAME_running`. From a8014ed1dc0878db9dd3c8a6c10cab63851d32ca Mon Sep 17 00:00:00 2001 From: JessePrater <58541367+JessePrater@users.noreply.github.com> Date: Sun, 15 Dec 2019 02:00:40 -0500 Subject: [PATCH 069/236] Discovery now included in default configuration (#11451) * Discovery now included in default configuration Discovery is now included in the default configuration, and adding it manually actually generates an error message (at least in Hass.IO 102.2). * Minor change --- source/_integrations/discovery.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index c2d84d37f76..933320e1a5b 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -47,7 +47,7 @@ Zeroconf discoverable integrations [Axis](/integrations/axis/)/[ESPHome](/integr
-To load this component, add the following lines to your `configuration.yaml`: +`discovery` is included in the defalult configuration. To load this component manually, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From a36c94ea51a4cba693f469cfa17422840fc205f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Rodr=C3=ADguez?= <11775429+crguez@users.noreply.github.com> Date: Sun, 15 Dec 2019 18:35:00 +0100 Subject: [PATCH 070/236] Added new supported devices (#11465) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I'm using the following models with this Deconz addon: - IKEA Trådfri bulb E14 WS Opal 600lm - IKEA Trådfri Bulb E27 WS clear 950lm Since few weeks ago with no issues. --- source/_integrations/deconz.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index d9a9555e262..c533f7e4b33 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -388,6 +388,8 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define ### Verified supported lights - IKEA Trådfri bulb E14 WS Opal 400lm +- IKEA Trådfri bulb E14 WS Opal 600lm +- IKEA Trådfri Bulb E27 WS clear 950lm - IKEA Trådfri Bulb E27 WS Opal 980lm - IKEA Trådfri Bulb E27 WS Opal 1000lm - IKEA Trådfri Bulb E27 WS & RGB Opal 600lm From 59d40c90488f86d37aadbb045b8111bc2a49b51e Mon Sep 17 00:00:00 2001 From: Kevin Eifinger Date: Mon, 16 Dec 2019 08:42:01 +0100 Subject: [PATCH 071/236] here_travel_time - Migrate to api_key (#11463) --- .../_integrations/here_travel_time.markdown | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown index cbb65aa66a6..1c2b5d489e2 100644 --- a/source/_integrations/here_travel_time.markdown +++ b/source/_integrations/here_travel_time.markdown @@ -19,6 +19,10 @@ HERE offers a Freemium Plan which includes 250,000 free Transactions per month. By default HERE will deactivate your account if you exceed the free Transaction limit for the month. You can add payment details to reenable your account as described [here](https://developer.here.com/faqs) +### Migrate from app_code to api_key + +HERE has changed its authentication mechanism. It is no longer possible to use `app_id` and `app_code`. Existing users have to follow the [migration guide](https://developer.here.com/documentation/authentication/dev_guide/topics/api-key-credentials.html) in order to retrieve the now needed `api_key`. + ## Configuration To enable the sensor, add the following lines to your `configuration.yaml` file: @@ -27,8 +31,7 @@ To enable the sensor, add the following lines to your `configuration.yaml` file: # Example entry for configuration.yaml sensor: - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" origin_latitude: "51.222975" origin_longitude: "9.267577" destination_latitude: "51.257430" @@ -36,12 +39,8 @@ sensor: ``` {% configuration %} -app_id: - description: "Your application's API id (get one by following the instructions above)." - required: true - type: string -app_code: - description: "Your application's API code (get one by following the instructions above)." +api_key: + description: "Your application's API key (get one by following the instructions above)." required: true type: string origin_latitude: @@ -109,15 +108,13 @@ Tracking can be set up to track entities of type `device_tracker`, `zone`, `sens sensor: # Tracking entity to entity - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Phone To Home origin_entity_id: device_tracker.mobile_phone destination_entity_id: zone.home # Full config - platform: here_travel_time - app_id: "YOUR_APP_ID" - app_code: "YOUR_APP_CODE" + api_key: "YOUR_API_KEY" name: Work to Home By Bike origin_entity_id: zone.work destination_latitude: 59.2842 From 3bf731534adccd109908178b61f5989a63eb5d94 Mon Sep 17 00:00:00 2001 From: Fermulator Date: Mon, 16 Dec 2019 07:11:55 -0500 Subject: [PATCH 072/236] More on CA and reference domain ownership (#10764) * DOCS: more on CA and reference domain ownership I've been using the self-signed certificate option for some time, and was hunting for alternative options to transition to a trusted cert. Going back to documentation, updating it with some context for those possibly unfamiliar (CA), and adding a reference to the domain ownership method. * add site root * revert site root * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- .../tls_self_signed_certificate.markdown | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index d2b1d2c7d29..22fde562eba 100644 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -4,16 +4,21 @@ description: "Configure a Certificate Authority and self-signed certificate to u redirect_from: /cookbook/tls_self_signed_certificate/ --- -If your Home Assistant instance is only accessible from your local network you can still protect the communication between your browsers and the frontend with SSL/TLS. -[Let's encrypt]({{site_root}}/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) will only work if you have a DNS entry and remote access is allowed. +If your Home Assistant instance is only accessible from your local network, you can still protect the communication between your browsers and the frontend with SSL/TLS. +[Let's Encrypt](/blog/2017/09/27/effortless-encryption-with-lets-encrypt-and-duckdns/) will only work if you have a DNS entry and remote access is allowed. -The solution is to use a self-signed certificate. As you most likely don't have a certification authority (CA) your browser will complain about the security. If you have a CA then this will not be an issue. +The solution is to use a self-signed certificate. Please note, however, that after you have completed these steps, your browser will complain about the security of the certificate as it was not issued by a trusted authority. + +* This is due to self-signed certificates having not been issued by a certification authority ([`CA`](https://cheapsslsecurity.com/blog/what-is-a-certificate-authority-ca/)). If you have your own CA, then this will not be an issue. +* A fantastic workaround for this, while keeping your instance isolated securely off the Internet, is to use a [`Certificate for SSL/TLS via domain ownership`](/docs/ecosystem/certificates/tls_domain_certificate/). + +If you don't mind the browser warnings and simply want SSL/TLS encryption and therefore have decided to use a self-signed certificate permanently or temporarily, read on! If you use Chrome browser version 58 or above and/or **don't want to have issues regarding a non-trusted CA or CN (Common Name)**, follow this full tutorial: [Create Root Certificate Authority and self-signed certificate for your Home Assistant. Compatible with Chrome browser > version 58](https://gist.github.com/tiagofreire-pt/4920be8d03a3dfa8201c6afedd00305e). Otherwise, follow this: To create a certificate locally, you need the [OpenSSL](https://www.openssl.org/) command-line tool. -Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. +Change to your Home Assistant [configuration directory](/getting-started/configuration/) like `~/.homeassistant`. This will make it easier to backup your certificate and the key. Run the command shown below. The certificate **must** be `.pem` extension. @@ -63,16 +68,17 @@ sudo chmod 600 fullchain.pem privkey.pem A tutorial "[Working with SSL Certificates, Private Keys and CSRs](https://www.digitalocean.com/community/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs)" could give you some insight about special cases. -### iOS and macOS Specific Requirements +## iOS and macOS Specific Requirements + +### iOS -#### iOS If you are going to use this certificate with the iOS app, you need to ensure you complete **all** fields during the certificate creation process, then: * Send **only** the `fullchain.pem` file to the iOS device, using airdrop or other transfer method. * Open the `.pem` file on the iOS device, follow the prompts to trust and install it. * If you are using iOS 10.3 or newer then [additional steps](https://support.apple.com/en-us/HT204477) are needed. -#### iOS 13 and macOS 10.15 +### iOS 13 and macOS 10.15 There are [new security requirements](https://support.apple.com/en-us/HT210176) for TLS server certificates in iOS 13 and macOS 10.15. To summarize: From 7fb3968e638b84fef6908704d9783bb60497e3df Mon Sep 17 00:00:00 2001 From: VivantSenior <49829548+VivantSenior@users.noreply.github.com> Date: Mon, 16 Dec 2019 17:05:46 +0100 Subject: [PATCH 073/236] Additional information for the Cloudflare component (#11374) * Another clarification added * Update cloudflare.markdown * Update cloudflare.markdown * Update cloudflare.markdown * Update cloudflare.markdown Added text tags in code blocks * Apply suggestions from code review Co-Authored-By: Franck Nijhof * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/cloudflare.markdown | 78 +++++++++++++++++++++--- 1 file changed, 71 insertions(+), 7 deletions(-) diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index 0c42516f43d..26de231feb4 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -7,13 +7,13 @@ ha_category: ha_release: 0.74 --- -With the `cloudflare` integration you can keep your Cloudflare records up to date. +With the `cloudflare` integration, you can keep your Cloudflare records up to date. -The integration will run every hour, but can also be started manually by using the service `cloudflare.update_records` under services. +The integration runs every hour, but can also be started manually by using the service `cloudflare.update_records` under services. ## Setup -You will find your global API key in your Cloudflare account settings. +You can find your global API key in your Cloudflare account settings. ## Configuration @@ -26,7 +26,7 @@ cloudflare: api_key: YOUR_GLOBAL_API_KEY zone: EXAMPLE.COM records: - - bin + - ha - www ``` @@ -40,15 +40,79 @@ api_key: required: true type: string zone: - description: The DNS zone you want to update. + description: The DNS zone (domain) you want to update. required: true type: string records: - description: A list of records you want to update. + description: A list of records (subdomains) you want to update. required: true type: list {% endconfiguration %} +## Additional information + +### Usage of external service + This platform uses the API from [ipify.org](https://www.ipify.org/) to set the public IP address. -For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port. +### API Key + +Please note that the `api_key` is the [global API key](https://support.cloudflare.com/hc/en-us/articles/200167836-Managing-API-Tokens-and-Keys#12345682) of your Cloudflare account (not the API Token). + +### Home Assistant Companion App + +If you would like to use [iOS App](https://companion.home-assistant.io/) via Cloudflare set **Minimum TLS version as 1.2**, in order to do that, do the following: +1. Login to your [Cloudflare](https://dash.cloudflare.com/) account. +2. Choose your domain. +3. Click on the `SSL/TLS` icon. +4. Go to tab `Edge Certificates`. +5. Find `Minimum TLS Version` and set it to **1.2**. + +Other settings should not cause any issues. + +### SSH over Cloudflare + +For SSH usage (according to [this](https://blog.cloudflare.com/cloudflare-now-supporting-more-ports/) source), you need to connect directly to your server (bypassing Cloudflare). To do that, create a `CNAME` DNS record, e.g., `ssh.example.com`, with proxy status as "DNS only" (to do that click on orange icon, it will change color to gray) and then connect to `ssh.example.com` using your server SSH port. + +### Using Cloudflare domain only for Home Assistant + +If you want to update just a main domain, place in the records list only your domain, e.g., `example.com`. It will update your `A` DNS record with your IP every hour. + +```yaml +# Example configuration.yaml entry for one domain +cloudflare: + email: YOUR_EMAIL_ADDRESS + api_key: YOUR_GLOBAL_API_KEY + zone: EXAMPLE.COM + records: + - EXAMPLE.COM +``` + +#### The minimum DNS record settings are (if you have set up https already): + +To redirect from your domain to the IP address of your Home Assistant server set this DNS record: + +```text +Type: A +Name: @ +IPv4 Address: your.ip.address +``` + +You can find your current IP address using [this](https://api.ipify.org/) page. + +In order to redirect from `https://www` to `https://` you need to set this DNS record: + +```text +Type: CNAME +Name: @ +Target: example.com (your actual domain) +``` + +And also create Page Rule: + +```text +If the URL matches: www.example.com* +Then the settings are: Forwarding URL +Status: 302 - Temporary redirect +Destination URL: https://example.com/$1 +``` From 4a6ff7fda5bb6a2c92ee39a0963d35dd34ac15e4 Mon Sep 17 00:00:00 2001 From: labrunning Date: Mon, 16 Dec 2019 16:07:43 +0000 Subject: [PATCH 074/236] Update blink.markdown with minor spelling mistake (#11471) Spelling of pelase to please in 'Arm Blink When Away' paragraph. --- source/_integrations/blink.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 0639b502f63..60250732d78 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -167,7 +167,7 @@ sequence: ### Arm Blink When Away -This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you've changed anything in your app, you're all set. If you want to manually enable motion detection for individual cameras, you can utilize the [appropriate camera service](/integrations/camera#service-enable_motion_detection) but pelase note that motion will only be captured if the sync module is armed. +This example automation will arm your blink sync module to detect motion on any of your blink cameras that have motion detection enabled. By default, Blink enables motion detection on all cameras so, unless you've changed anything in your app, you're all set. If you want to manually enable motion detection for individual cameras, you can utilize the [appropriate camera service](/integrations/camera#service-enable_motion_detection) but please note that motion will only be captured if the sync module is armed. Here, this example assumes your blink module is named `My Sync Module` and that you have [device trackers](/integrations/device_tracker) set up for presence detection. From e889cf7ff5928fff30bae4fa1723771cef778b43 Mon Sep 17 00:00:00 2001 From: Quentame Date: Mon, 16 Dec 2019 17:15:45 +0100 Subject: [PATCH 075/236] Add battery sensor to iCloud (#11434) * Add battery sensor to iCloud * Review --- source/_integrations/icloud.markdown | 36 ++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 609c633bdea..1c42db3b4dc 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -4,11 +4,18 @@ description: "Instructions on how to use iCloud to track devices in Home Assista logo: icloud.png ha_category: - Presence Detection + - Sensor +ha_iot_class: Cloud Polling ha_release: "0.10" --- The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. +There is currently support for the following platforms within Home Assistant: + +- [Device Tracker](#device-tracker) +- [Sensor](#sensor) + It does require that your device is registered with "Find My iPhone". ## Setup the integration @@ -84,11 +91,32 @@ If 2 Step Authentication is enabled for your iCloud account. The integration wil Go into your Home Assistant configuration `.storage` folder and delete the "icloud" folder, then retry. +## Platforms + +### Device Tracker + +The iCloud integration will track available devices on your iCloud account. + +### Sensor + +The iCloud integration will add a battery sensor for each iCloud devices available on your iCloud account. + ## Services 4 services are available: -- **update**: This service can be used to ask an update of a certain iDevice or all devices linked to an iCloud account. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iPhone location. Can be used in automations when manual location update is needed, e.g., to check if anyone is home when door's been opened. -- **play_sound**: This service will play the Lost iPhone sound on your iDevice. It will still ring if you are on "Mute" or "Do not disturb" mode. -- **display_message**: This service will display a message on your iDevice. It can also ring your device. -- **lost_device**: This service will put your iDevice on "lost" mode (compatible devices only). You have to provide a phone number with a suffixed [country code](https://en.wikipedia.org/wiki/List_of_country_calling_codes) and a message. +### Service `icloud.update` + +This service can be used to ask an update of a certain iDevice or all devices linked to an iCloud account. Request will result in new Home Assistant [state_changed](/docs/configuration/events/#event-state_changed) event describing current iPhone location. It can be used in automations when a manual location update is needed, e.g., to check if anyone is home when a door been opened. + +### Service `icloud.play_sound` + +This service will play the Lost iPhone sound on your iDevice. It will still ring if you are on "Mute" or "Do not disturb" mode. + +### Service `icloud.display_message` + +This service will display a message on your iDevice. It can also ring your device. + +### Service `icloud.lost_device` + +This service will put your iDevice on "lost" mode (compatible devices only). You have to provide a phone number with a suffixed [country code](https://en.wikipedia.org/wiki/List_of_country_calling_codes) and a message. From 12c022a03ea9134a3c00269cdf35bde4ff1722d7 Mon Sep 17 00:00:00 2001 From: jordaosoft Date: Mon, 16 Dec 2019 12:57:31 -0500 Subject: [PATCH 076/236] Fixed settings page link (#11472) --- source/_integrations/flume.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index 5fe1f561eb7..86b1e1b1318 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -14,7 +14,7 @@ Flume monitors the real-time status of your home water meter. Allowing the end-u ## Configuration -You can find your Client ID and Client Secret under "API Access" on the [settings page](https://https://portal.flumetech.com/#settings). +You can find your Client ID and Client Secret under "API Access" on the [settings page](https://portal.flumetech.com/#settings). To enable the flume sensor, add the following lines to your `configuration.yaml` file: From b67fb24128dbd9a5713500ca4d1e2fee22c11966 Mon Sep 17 00:00:00 2001 From: inputd <38230664+inputd@users.noreply.github.com> Date: Mon, 16 Dec 2019 12:10:34 -0700 Subject: [PATCH 077/236] Update on onyo.markdown (#11473) * Update on onyo.markdown The default source list does not include all sources, and there is an easy way to determine exact source names. In my case, even though my receiver displays "Blu-ray/DVD" on screen, the "bd-dvd" source value was incorrect, and the correct input was "bd", which isn't in the default list, and is also pretty counter-intuitive. * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/onkyo.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index 18ff6e598cf..cc1067bcab9 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -82,6 +82,12 @@ List of source names: - xm - sirius +If your source is not listed above, and you want to figure out how to format that source name so you can map its entry, you can use the `onkyo-eiscp` Python module to discover the exact naming needed. First, change your receiver's source to the one that you need to define, and then run: + +```bash +onkyo --host 192.168.0.100 source=query +``` + To find your receivers max volume use the onkyo-eiscp python module set the receiver to its maximum volume (don't do this whilst playing something!) and run: From 4de113ebfe9e8289ef7ad339ba15ff44c03edc70 Mon Sep 17 00:00:00 2001 From: KaiboshOz <16894159+KaiboshOz@users.noreply.github.com> Date: Tue, 17 Dec 2019 19:04:56 +1100 Subject: [PATCH 078/236] Update 2 missed service names (lifx.xxx) (#11476) Prev light.lifx_xxx - updated to lifx.xxx per changes in HA v0.103 --- source/_integrations/lifx.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index bc3b9a39b42..f775f12ef73 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -20,7 +20,7 @@ The LIFX bulbs allow a change of color and brightness even when they are turned The normal `light.turn_on` call cannot be used for this because it always turns the power on. Thus, LIFX has its own service call that allows color changes without affecting the current power state. -### Service `light.lifx_set_state` +### Service `lifx.set_state` Change the light to a new state. @@ -54,7 +54,7 @@ script: colorloop_start: alias: 'Start colorloop' sequence: - - service: light.lifx_effect_colorloop + - service: lifx.effect_colorloop data: entity_id: group.livingroom brightness: 255 From ad023f898f50bb4a5fac20bb79dfeab20ecc47b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Tue, 17 Dec 2019 10:51:19 +0200 Subject: [PATCH 079/236] rflink deprecation and other doc fixes (#11452) * Remove docs for old misspelled configs They've been deprecated already since July 2017, https://github.com/home-assistant/home-assistant/pull/8348 * Remove incorrect deprecation markers on switch aliases Was apparently inadvertently added in 4d739b04c67bd43ac0f68e938290208b0d2f2bc1, https://github.com/home-assistant/home-assistant.io/pull/7098 * Talk about switch instead of light in switch group doc * Grammar fix --- source/_integrations/light.rflink.markdown | 12 ------------ source/_integrations/sensor.rflink.markdown | 6 +----- source/_integrations/switch.rflink.markdown | 8 ++++---- 3 files changed, 5 insertions(+), 21 deletions(-) diff --git a/source/_integrations/light.rflink.markdown b/source/_integrations/light.rflink.markdown index 054831cffc7..98852be2d27 100644 --- a/source/_integrations/light.rflink.markdown +++ b/source/_integrations/light.rflink.markdown @@ -99,18 +99,6 @@ devices: required: false default: true type: boolean - aliasses: - description: (**deprecated**) Alternative RFLink ID's this device is known by. - required: false - type: [list, string] - group_aliasses: - description: "(**deprecated**) `aliases` which only respond to group commands." - required: false - type: [list, string] - no_group_aliasses: - description: "(**deprecated**) `aliases` which do not respond to group commands." - required: false - type: [list, string] {% endconfiguration %} ### Light state diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown index b9896eb28c1..5db5a1a7e61 100644 --- a/source/_integrations/sensor.rflink.markdown +++ b/source/_integrations/sensor.rflink.markdown @@ -63,13 +63,9 @@ devices: description: "Alternative RFLink ID's this device is known by." required: false type: [list, string] - aliasses: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." - required: false - type: [list, string] {% endconfiguration %} -## Sensors types +## Sensor types Sensor type values: diff --git a/source/_integrations/switch.rflink.markdown b/source/_integrations/switch.rflink.markdown index 263a788bc28..cc46fb0915c 100644 --- a/source/_integrations/switch.rflink.markdown +++ b/source/_integrations/switch.rflink.markdown @@ -82,20 +82,20 @@ devices: default: 1 type: integer group: - description: Allow light to respond to group commands (ALLON/ALLOFF). + description: Allow switch to respond to group commands (ALLON/ALLOFF). required: false default: true type: boolean aliases: - description: "(**deprecated**) Alternative RFLink ID's this device is known by." + description: Alternative RFLink ID's this device is known by. required: false type: [list, string] group_aliases: - description: "(**deprecated**) `aliases` which only respond to group commands." + description: "`aliases` which only respond to group commands." required: false type: [list, string] no_group_aliases: - description: "(**deprecated**) `aliases` which do not respond to group commands." + description: "`aliases` which do not respond to group commands." required: false type: [list, string] {% endconfiguration %} From c897f02edc95665c6914748b58be81d986523d59 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 17 Dec 2019 13:27:43 +0100 Subject: [PATCH 080/236] Update HassOS 3.7 (#11481) * Update HassOS 3.7 * Fix style --- source/hassio/installation.markdown | 40 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 4a07e17f82f..05aedbfcc8c 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -11,8 +11,8 @@ The following will take you through the steps required to install Hass.io. - [Raspberry Pi 3 Model B and B+ 32bit][pi3-32] (recommended) - [Raspberry Pi 3 Model B and B+ 64bit][pi3-64] - - [(RC) Raspberry Pi 4 Model B 32bit][pi4-32] (recommended) - - [(RC) Raspberry Pi 4 Model B 64bit][pi4-64] + - [Raspberry Pi 4 Model B 32bit][pi4-32] (recommended) + - [Raspberry Pi 4 Model B 64bit][pi4-64] - [Tinkerboard][tinker] - [Odroid-C2][odroid-c2] - [Odroid-XU4][odroid-xu4] @@ -26,6 +26,12 @@ The following will take you through the steps required to install Hass.io. - [VDI][vdi] - [OVA][Virtual Appliance] (not available at this time!) + - Not recommended Hardware: + + - [Raspberry Pi][pi1] + - [Raspberry Pi Zero-W][pi0-w] + - [Raspberry Pi 2][pi2] + 2. Install Hass.io: - Flash the downloaded image to an SD card using [balenaEtcher][balenaEtcher]. If using a Pi we recommend at least a 32 GB SD card to avoid running out of space. On Virtual machine platforms, provide at least 32 GB of disk space for the VM. @@ -202,21 +208,21 @@ A detailed guide about running Hass.io as a virtual machine is available in the [balenaEtcher]: https://www.balena.io/etcher [Virtual Appliance]: https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/ova.md [hassos-network]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md -[pi0-w]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi0-w-2.12.img.gz -[pi1]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi-2.12.img.gz -[pi2]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi2-2.12.img.gz -[pi3-32]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi3-2.12.img.gz -[pi3-64]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_rpi3-64-2.12.img.gz -[pi4-32]: https://github.com/home-assistant/hassos/releases/download/3.5/hassos_rpi4-3.5.img.gz -[pi4-64]: https://github.com/home-assistant/hassos/releases/download/3.5/hassos_rpi4-64-3.5.img.gz -[tinker]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_tinker-2.12.img.gz -[odroid-c2]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_odroid-c2-2.12.img.gz -[odroid-xu4]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_odroid-xu4-2.12.img.gz -[opi-prime]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_opi-prime-2.12.img.gz -[intel-nuc]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_intel-nuc-2.12.img.gz -[vmdk]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vmdk.gz -[vhdx]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vhdx.gz -[vdi]: https://github.com/home-assistant/hassos/releases/download/2.12/hassos_ova-2.12.vdi.gz +[pi0-w]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi0-w-3.7.img.gz +[pi1]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi-3.7.img.gz +[pi2]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi2-3.7.img.gz +[pi3-32]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi3-3.7.img.gz +[pi3-64]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi3-64-3.7.img.gz +[pi4-32]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi4-3.7.img.gz +[pi4-64]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_rpi4-64-3.7.img.gz +[tinker]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_tinker-3.7.img.gz +[odroid-c2]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_odroid-c2-3.7.img.gz +[odroid-xu4]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_odroid-xu4-3.7.img.gz +[opi-prime]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_opi-prime-3.7.img.gz +[intel-nuc]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_intel-nuc-3.7.img.gz +[vmdk]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_ova-3.7.vmdk.gz +[vhdx]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_ova-3.7.vhdx.gz +[vdi]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_ova-3.7.vdi.gz [linux]: https://github.com/home-assistant/hassio-installer [local]: http://hassio.local:8123 [samba]: /addons/samba/ From 484637765f9ce701de0974abe6af8e842ce840dc Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 17 Dec 2019 13:55:43 +0100 Subject: [PATCH 081/236] Replace MAC address in configuration description (#11464) * Replace MAC address in configuration description * Make a dummy change * Fix style --- source/_integrations/wake_on_lan.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/wake_on_lan.markdown b/source/_integrations/wake_on_lan.markdown index fe65e758050..f615eaf1df1 100644 --- a/source/_integrations/wake_on_lan.markdown +++ b/source/_integrations/wake_on_lan.markdown @@ -9,7 +9,7 @@ ha_release: 0.49 ha_iot_class: Local Push --- -The `wake_on_lan` integration enables the ability to send _magic packets_ to [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) capable devices, to turn them on. +The `wake_on_lan` integration enables the ability to send _magic packets_ to [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) capable devices to turn them on. There is currently support for the following device types within Home Assistant: @@ -61,12 +61,12 @@ To enable this switch in your installation, add the following to your `configura # Example configuration.yaml entry switch: - platform: wake_on_lan - mac: "00-01-02-03-04-05" + mac: MAC_ADDRESS ``` {% configuration %} mac: - description: The MAC address to send the wake up command to. + description: "The MAC address to send the wake up command to, e.g, `00:01:02:03:04:05`." required: true type: string name: From fea3884d6e0d6199a49d175a7ca0789f5acc5bfd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 17 Dec 2019 15:36:23 +0100 Subject: [PATCH 082/236] Initial release (#11484) * Initial release * Fix list * Update source/_posts/2019-12-17-hassos-release-3.markdown Co-Authored-By: Franck Nijhof * Update source/_posts/2019-12-17-hassos-release-3.markdown Co-Authored-By: Franck Nijhof * Update source/_posts/2019-12-17-hassos-release-3.markdown Co-Authored-By: Franck Nijhof * Update source/_posts/2019-12-17-hassos-release-3.markdown Co-Authored-By: Franck Nijhof * Update social image for HassOS 3 blog post --- .../2019-12-17-hassos-release-3.markdown | 49 ++++++++++++++++++ .../2019-12-hassos-release-3/blogpost.png | Bin 0 -> 267768 bytes 2 files changed, 49 insertions(+) create mode 100644 source/_posts/2019-12-17-hassos-release-3.markdown create mode 100644 source/images/blog/2019-12-hassos-release-3/blogpost.png diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown new file mode 100644 index 00000000000..618a8b5eff7 --- /dev/null +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -0,0 +1,49 @@ +--- +title: "HassOS 3 released! Raspberry Pi 4 support" +description: "HassOS update: Raspberry Pi 4 now officially supported!" +date: 2019-12-17 00:00:00 +date_formatted: "December 17, 2019" +author: Pascal Vizeli +author_twitter: pvizeli +categories: Announcements +og_image: /images/blog/2019-12-hassos-release-3/blogpost.png +--- + + +A bit behind the original timeline, but we happy to announce, we've released version 3 of Hass.io Operating System: HassOS. Just in time for Christmas! + +TL;DR; A quick summary of the changes: + + - Official RPi4 support + - Linux LT 4.19 + - Buildroot LT 2019 + - USB-boot capabilities for the RPi3 + - SMS integrations with USB/GSM modem + - Qemu Agent support + - Optimized kernel for virtual appliances + - Improved automatic disk expansion + - Initial foundation for offloading the data partition + +## Raspberry Pi + +We support now officially the Raspberry Pi 4 on this stable version of HassOS! The Raspberry Pi 4 is a great and powerful device to get you started on Hass.io and Home Assistant. + +[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB-boot support! Please note, this is currently limited to RPi3 devices. carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19) + +## Hypervisors / Running HassOS on a Virtual Machine + +The HassOS image for virtual appliances did get some beautiful updates as well. We have optimized the Linux kernel to support more virtual hardware. + +We have now included the Qemu Agent in HassOS. So if you are running on a Hypervisor that is Qemu based (e.g., Proxmox), you now have a lot more information in your Hypervisor control panel, proper shutdown support and improved support for backing up/snapshotting your virtual machine. + +Finally, the automated disk expansion got some updates. So if you need more disk space in your virtual appliance, add it in your Hypervisor and HassOS automatically pick it up at the next boot. + +We want to emphasize that running Hass.io as a virtual machine is the **only** supported method to run Hass.io on a virtualized system. We've lately seen some funky tutorials on how to run Hass.io inside a container like Docker or LXC, which we **DO NOT** recommend, you will end up having issues. + +## How to update to HassOS 3 + +If you are already running HassOS, you have the full flavor of Hass.io, and thus, all the comfort it has to offer, making this upgrade a breeze! + +To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io Panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. + +Another option is to our powerful CLI that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. diff --git a/source/images/blog/2019-12-hassos-release-3/blogpost.png b/source/images/blog/2019-12-hassos-release-3/blogpost.png new file mode 100644 index 0000000000000000000000000000000000000000..a0562dde18e2cb4a95fa4eb731617634123fb667 GIT binary patch literal 267768 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 Date: Tue, 17 Dec 2019 15:46:31 +0100 Subject: [PATCH 083/236] :pencil2: Fix list in HassOS blog post --- .../2019-12-17-hassos-release-3.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown index 618a8b5eff7..1a770c52800 100644 --- a/source/_posts/2019-12-17-hassos-release-3.markdown +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -14,15 +14,15 @@ A bit behind the original timeline, but we happy to announce, we've released ver TL;DR; A quick summary of the changes: - - Official RPi4 support - - Linux LT 4.19 - - Buildroot LT 2019 - - USB-boot capabilities for the RPi3 - - SMS integrations with USB/GSM modem - - Qemu Agent support - - Optimized kernel for virtual appliances - - Improved automatic disk expansion - - Initial foundation for offloading the data partition +- Official RPi4 support +- Linux LT 4.19 +- Buildroot LT 2019 +- USB-boot capabilities for the RPi3 +- SMS integrations with USB/GSM modem +- Qemu Agent support +- Optimized kernel for virtual appliances +- Improved automatic disk expansion +- Initial foundation for offloading the data partition ## Raspberry Pi From a7fc2a035dce3cdce7869bc0c9b53f77d7e889ba Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 17 Dec 2019 15:57:12 +0100 Subject: [PATCH 084/236] Grammar/Spelling update to HassOS 3 blog post --- source/_posts/2019-12-17-hassos-release-3.markdown | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown index 1a770c52800..16b4faacec2 100644 --- a/source/_posts/2019-12-17-hassos-release-3.markdown +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -9,7 +9,6 @@ categories: Announcements og_image: /images/blog/2019-12-hassos-release-3/blogpost.png --- - A bit behind the original timeline, but we happy to announce, we've released version 3 of Hass.io Operating System: HassOS. Just in time for Christmas! TL;DR; A quick summary of the changes: @@ -26,9 +25,9 @@ TL;DR; A quick summary of the changes: ## Raspberry Pi -We support now officially the Raspberry Pi 4 on this stable version of HassOS! The Raspberry Pi 4 is a great and powerful device to get you started on Hass.io and Home Assistant. +We now officially support the Raspberry Pi 4 on this stable version of HassOS! The Raspberry Pi 4 is a great and powerful device to get you started on Hass.io and Home Assistant. -[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB-boot support! Please note, this is currently limited to RPi3 devices. carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19) +[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB-boot support! Please note, this is currently limited to RPi3 devices. Carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19) ## Hypervisors / Running HassOS on a Virtual Machine @@ -46,4 +45,4 @@ If you are already running HassOS, you have the full flavor of Hass.io, and thus To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io Panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. -Another option is to our powerful CLI that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. +Another option is to use our powerful CLI, that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. From d8885dd36856e0fe051d7ac779b6ecfc784e0a04 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 17 Dec 2019 16:12:34 +0100 Subject: [PATCH 085/236] Update tensorflow release (#11485) --- source/_integrations/tensorflow.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/tensorflow.markdown b/source/_integrations/tensorflow.markdown index f68cd5e7358..55b774c11f5 100644 --- a/source/_integrations/tensorflow.markdown +++ b/source/_integrations/tensorflow.markdown @@ -19,7 +19,7 @@ The `tensorflow` image processing platform allows you to detect and recognize ob ## Setup -You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow==1.11.0`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. Hass.io is not yet supported but an addon is under development. +You need to install the `tensorflow` Python packages with: `$ pip3 install tensorflow==1.13.2`. The wheel is not available for all platforms. See [the official install guide](https://www.tensorflow.org/install/) for other options. Hass.io is not yet supported but an addon is under development. This integration requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed using the sample script at [this gist](https://gist.github.com/hunterjm/6f9332f92b60c3d5e448ad936d7353c3). Alternatively, if you wish to perform the process manually, the process is as follows: From 5cb264eb3b7bebbb5caafe6d035f3a82c2f1e584 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 17 Dec 2019 16:26:22 +0100 Subject: [PATCH 086/236] =?UTF-8?q?Use=20the=20right=20spelling=20for=20QE?= =?UTF-8?q?MU,=20add=20period=20and=20other=20small=20ch=E2=80=A6=20(#1148?= =?UTF-8?q?6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_posts/2019-12-17-hassos-release-3.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown index 16b4faacec2..4de9c67a6ac 100644 --- a/source/_posts/2019-12-17-hassos-release-3.markdown +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -27,13 +27,13 @@ TL;DR; A quick summary of the changes: We now officially support the Raspberry Pi 4 on this stable version of HassOS! The Raspberry Pi 4 is a great and powerful device to get you started on Hass.io and Home Assistant. -[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB-boot support! Please note, this is currently limited to RPi3 devices. Carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19) +[@rbray89](https://github.com/rbray89) worked hard on this release to add the very often requested USB boot support! Please note, this is currently limited to RPi3 devices. Carefully read how the USB boot [works](https://github.com/home-assistant/hassos/blob/rel-3/Documentation/boards/raspberrypi.md#usb-boot) and be aware of the limited [supported hardware](https://community.home-assistant.io/t/hass-io-transfer-from-sd-card-to-ssd-or-usb/97452/19). ## Hypervisors / Running HassOS on a Virtual Machine -The HassOS image for virtual appliances did get some beautiful updates as well. We have optimized the Linux kernel to support more virtual hardware. +The HassOS image for virtual appliances did get some useful updates as well. We have optimized the Linux kernel to support more virtual hardware. -We have now included the Qemu Agent in HassOS. So if you are running on a Hypervisor that is Qemu based (e.g., Proxmox), you now have a lot more information in your Hypervisor control panel, proper shutdown support and improved support for backing up/snapshotting your virtual machine. +We have now included the QEMU Agent in HassOS. So if you are running on a Hypervisor that is QEMU based (e.g., Proxmox or Libvirt), you now have a lot more information in your Hypervisor control panel, proper shutdown support and improved support for backing up/snapshotting your virtual machine. Finally, the automated disk expansion got some updates. So if you need more disk space in your virtual appliance, add it in your Hypervisor and HassOS automatically pick it up at the next boot. @@ -43,6 +43,6 @@ We want to emphasize that running Hass.io as a virtual machine is the **only** s If you are already running HassOS, you have the full flavor of Hass.io, and thus, all the comfort it has to offer, making this upgrade a breeze! -To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io Panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. +To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. Another option is to use our powerful CLI, that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. From 3e1e40244ed63b377a01d2aa003a059e009af001 Mon Sep 17 00:00:00 2001 From: Greg <34967045+gtdiehl@users.noreply.github.com> Date: Wed, 18 Dec 2019 01:37:23 -0800 Subject: [PATCH 087/236] Updated Envoy documentation to include new variables (#11212) --- source/_integrations/enphase_envoy.markdown | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index b3367d300b8..686d43d4138 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -29,6 +29,14 @@ ip_address: description: The local IP address of your Envoy. Leave blank to use the default host name 'envoy', but this may not always be reliable. You should be able to just browse to this IP address. required: false type: string +username: + description: Access more information beyond the basics, such as Inverter data. Some Envoy devices do not use the standard username which is used by the API. This lets the user use a different username than the default of 'envoy'. + required: false + type: string +password: + description: Password to be used with the username configuration variable. + required: false + type: string monitored_conditions: description: The list of conditions to monitor. If you have an Envoy that doesn't support consumption metrics (ie. Envoy-C), it's best only configure the production metrics. required: false From ee1a3a55a4063e8a976c7fe12aca34098b3379be Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 18 Dec 2019 15:18:26 +0100 Subject: [PATCH 088/236] Update to blogpost (#11490) * Update to blogpost * :pencil2: Tweak * Update 2019-12-17-hassos-release-3.markdown --- .../_posts/2019-12-17-hassos-release-3.markdown | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/source/_posts/2019-12-17-hassos-release-3.markdown b/source/_posts/2019-12-17-hassos-release-3.markdown index 4de9c67a6ac..2f11e06f058 100644 --- a/source/_posts/2019-12-17-hassos-release-3.markdown +++ b/source/_posts/2019-12-17-hassos-release-3.markdown @@ -46,3 +46,19 @@ If you are already running HassOS, you have the full flavor of Hass.io, and thus To update via the user interface, go to the Home Assistant frontend, click on **Hass.io** in the sidebar to go into the Hass.io panel. Next, click on the System tab and press the **UPDATE** button in the "Host system" panel. In case the update isn't showing up yet, push the **RELOAD** button on the "Hass.io supervisor" box first, which makes your system look for updates instantly. Another option is to use our powerful CLI, that is shipped with the SSH add-on. Run the following command to trigger the upgrade: `hassio os update --version 3.7`. + +## Update 2019-12-18 + +After some confusion about the statement of supporting virtual environments and running Hass.io on top of a custom Linux; so let's clarify it. + +The supported ways to run Hass.io are documented here: + +This also includes running Hass.io on Linux using the [Generic Linux](https://github.com/home-assistant/hassio-installer) installer, which is a supported method. + +Hass.io runs partly on your local machine, but for most parts inside multiple containers. All installation types we list, respect this. + +If you run VMWare, ProxMox or other virtualization environments, you can use the HassOS OVA/VMDK to run a virtual machine with. Or, if you like to use a Ubuntu VM, that will work with the supported generic Linux installer. + +We **DO NOT** support any kind of LXC hacks like listed here: . These setups try to put everything inside a **single** container, [which will cause you issues](https://community.home-assistant.io/t/hassio-installation-on-lxd-lxc-container-ubuntu-18-04/151543/2). Hass.io is not designed to run fully inside a containerized system, like LXC. + +We hope this clarifies our earlier statement. From eb1274ae424f764655f767e98e528eaee05ee09b Mon Sep 17 00:00:00 2001 From: lyghtnox <33329184+lyghtnox@users.noreply.github.com> Date: Wed, 18 Dec 2019 15:47:29 +0100 Subject: [PATCH 089/236] Update nginx conf file (#11491) --- source/_docs/ecosystem/nginx.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/ecosystem/nginx.markdown b/source/_docs/ecosystem/nginx.markdown index 8a84cb0d0d4..ce8cf97fd38 100644 --- a/source/_docs/ecosystem/nginx.markdown +++ b/source/_docs/ecosystem/nginx.markdown @@ -130,9 +130,9 @@ server { # These shouldn't need to be changed - listen [::]:443 default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here + listen [::]:443 ssl default_server ipv6only=off; # if your nginx version is >= 1.9.5 you can also add the "http2" flag here add_header Strict-Transport-Security "max-age=31536000; includeSubdomains"; - ssl on; + # ssl on; # Uncomment if you are using nginx < 1.15.0 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; ssl_prefer_server_ciphers on; From 3ed99da27388e65b713bee61facbac5b2e364ce6 Mon Sep 17 00:00:00 2001 From: Michael Farrell Date: Thu, 19 Dec 2019 05:13:16 +1030 Subject: [PATCH 090/236] Add example lighting discovery payload (#11489) Because adding `device_class` to a `light` only leads to sadness. While here, also adds headers and untangles the examples into a (subjectively) nicer order. --- source/_docs/mqtt/discovery.markdown | 54 ++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index dab05ec8b67..cbde6f94195 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -236,6 +236,8 @@ The following software has built-in support for MQTT discovery: ### Examples +#### Motion detection (binary sensor) + A motion detection device which can be represented by a [binary sensor](/integrations/binary_sensor.mqtt/) for your garden would send its configuration as JSON payload to the Configuration topic. After the first message to `config`, then the MQTT messages sent to the state topic will update the state in Home Assistant. - Configuration topic: `homeassistant/binary_sensor/garden/config` @@ -259,6 +261,18 @@ Delete the sensor by sending an empty message. $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m '' ``` +#### Sensors with multiple values + +Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. + +- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` +- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` +- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` +- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` +- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` + +#### Switches + Setting up a switch is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/). - Configuration topic: `homeassistant/switch/irrigation/config` @@ -276,27 +290,45 @@ Set the state. $ mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/switch/irrigation/set" -m ON ``` -Setting up a sensor with multiple measurement values requires multiple consecutive configuration topic submissions. - -- Configuration topic no1: `homeassistant/sensor/sensorBedroomT/config` -- Configuration payload no1: `{"device_class": "temperature", "name": "Temperature", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "°C", "value_template": "{% raw %}{{ value_json.temperature}}{% endraw %}" }` -- Configuration topic no2: `homeassistant/sensor/sensorBedroomH/config` -- Configuration payload no2: `{"device_class": "humidity", "name": "Humidity", "state_topic": "homeassistant/sensor/sensorBedroom/state", "unit_of_measurement": "%", "value_template": "{% raw %}{{ value_json.humidity}}{% endraw %}" }` -- Common state payload: `{ "temperature": 23.20, "humidity": 43.70 }` +#### Abbreviating topic names Setting up a switch using topic prefix and abbreviated configuration variable names to reduce payload length. - Configuration topic: `homeassistant/switch/irrigation/config` - Command topic: `homeassistant/switch/irrigation/set` - State topic: `homeassistant/switch/irrigation/state` -- Payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` +- Configuration payload: `{"~": "homeassistant/switch/irrigation", "name": "garden", "cmd_t": "~/set", "stat_t": "~/state"}` -Setting up a climate integration (heat only) with abbreviated configuration variable names to reduce payload length. +#### Lighting + +Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-schema), with abbreviated configuration variable names: + +- Configuration topic: `homeassistant/light/kitchen/config` +- Command topic: `homeassistant/light/kitchen/set` +- State topic: `homeassistant/light/kitchen/state` +- Example state payload: `{"state": "ON", "brightness": 255}` +- Configuration payload: + + ```json + { + "~": "homeassistant/light/kitchen", + "name": "Kitchen", + "unique_id": "kitchen_light", + "cmd_t": "~/set", + "stat_t": "~/state", + "schema": "json", + "brightness": true + } + ``` + +#### Climate control + +Setting up a climate integration (heat only): - Configuration topic: `homeassistant/climate/livingroom/config` - Configuration payload: -```yaml +```json { "name":"Livingroom", "mode_cmd_t":"homeassistant/climate/livingroom/thermostatModeCmd", @@ -320,7 +352,7 @@ Setting up a climate integration (heat only) with abbreviated configuration vari - State topic: `homeassistant/climate/livingroom/state` - State payload: -```yaml +```json { "mode":"off", "target_temp":"21.50", From 6645bcec0be5a2f1e7f59bca4084ad985480d42a Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Wed, 18 Dec 2019 22:25:47 +0100 Subject: [PATCH 091/236] 103.1 --- _config.yml | 4 +- source/_posts/2019-12-11-release-103.markdown | 98 +++++++++++++------ 2 files changed, 69 insertions(+), 33 deletions(-) diff --git a/_config.yml b/_config.yml index 7f9811dbf78..a13394cf8a0 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 103 -current_patch_version: 0 -date_released: 2019-12-11 +current_patch_version: 1 +date_released: 2019-12-18 # 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-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index aef337c02c6..d19f0cc0485 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -72,7 +72,7 @@ Thank you so much! [@briglx]: https://github.com/briglx [@djpremier]: https://github.com/djpremier [@javicalle]: https://github.com/javicalle -[@Michsior14]: https://github.com/Michsior14 +[@michsior14]: https://github.com/Michsior14 [@mnigbur]: https://github.com/mnigbur [@thaohtp]: https://github.com/thaohtp @@ -244,6 +244,42 @@ All services for use in Home Assistant are moved to their integration naming spa - **Entity ID** - It is no longer possible to target all entities by not passing both `entity_id` and `area_id` to your service data. This feature was previously deprecated and has been printing warnings. The correct way to target all entities is to set `entity_id: all` - ([@balloob] - [#29178]) - **Heatmiser Thermostat** - The Heatmiser integration has been updated to the latest version of the heatmiserV3 library, meaning less code inside HA, and more leverage on the library. The current version of the Heatmiser integration went out of date with the introduction of voluptuous. This has now been fixed, but it breaks the old config syntax slightly. See the updated docs for the new config format. - ([@andylockran] - [#29006]) ([heatmiser docs]) +## Release 0.103.1 - December 18 + +- Install requirements of after_dependencies when loading integrations ([@balloob] - [#29491]) +- Bump aioambient to 1.0.2 ([@bachya] - [#29850]) ([ambient_station docs]) +- Fix setup for tank_utility component ([@springstan] - [#29902]) ([tank_utility docs]) +- Fix setup error for logbook ([@springstan] - [#29908]) +- Support entity_id: all in lifx.set_state ([@amelchio] - [#29919]) ([lifx docs]) +- Fix mobile app device identifiers ([@JBassett] - [#29920]) ([mobile_app docs]) +- Fix loading flume integration ([@ChrisMandich] - [#29926]) ([flume docs]) +- Fix support for legacy Z-Wave thermostats ([@oandrew] - [#29955]) ([zwave docs]) +- Bump simplisafe-python to 5.3.6 ([@bachya] - [#30055]) ([simplisafe docs]) + +[#29491]: https://github.com/home-assistant/home-assistant/pull/29491 +[#29850]: https://github.com/home-assistant/home-assistant/pull/29850 +[#29902]: https://github.com/home-assistant/home-assistant/pull/29902 +[#29908]: https://github.com/home-assistant/home-assistant/pull/29908 +[#29919]: https://github.com/home-assistant/home-assistant/pull/29919 +[#29920]: https://github.com/home-assistant/home-assistant/pull/29920 +[#29926]: https://github.com/home-assistant/home-assistant/pull/29926 +[#29955]: https://github.com/home-assistant/home-assistant/pull/29955 +[#30055]: https://github.com/home-assistant/home-assistant/pull/30055 +[@chrismandich]: https://github.com/ChrisMandich +[@jbassett]: https://github.com/JBassett +[@amelchio]: https://github.com/amelchio +[@bachya]: https://github.com/bachya +[@balloob]: https://github.com/balloob +[@oandrew]: https://github.com/oandrew +[@springstan]: https://github.com/springstan +[ambient_station docs]: /integrations/ambient_station/ +[flume docs]: /integrations/flume/ +[lifx docs]: /integrations/lifx/ +[mobile_app docs]: /integrations/mobile_app/ +[simplisafe docs]: /integrations/simplisafe/ +[tank_utility docs]: /integrations/tank_utility/ +[zwave docs]: /integrations/zwave/ + ## 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). @@ -332,7 +368,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update services.yaml for cloudflare component ([@raman325] - [#28888]) - update services.yaml for keyboard component ([@raman325] - [#28889]) - bump herepy to 0.6.3.3 ([@eifinger] - [#28907]) ([here_travel_time docs]) -- Update __init__.py ([@SNoof85] - [#28911]) ([freebox docs]) +- Update **init**.py ([@SNoof85] - [#28911]) ([freebox docs]) - Delay Plex websocket connection to avoid race ([@jjlawren] - [#28934]) ([plex docs]) (beta fix) - Bump verisure to vsure 1.5.4 and jsonpath 0.82 ([@persandstrom] - [#28933]) ([verisure docs]) - Add device trigger support for Aqara WXKG11LM 2016 switch to Deconz ([@kurniawan77] - [#28946]) ([deconz docs]) @@ -1226,32 +1262,32 @@ Experiencing issues introduced by this release? Please report them in our [issue [#29820]: https://github.com/home-assistant/home-assistant/pull/29820 [#29824]: https://github.com/home-assistant/home-assistant/pull/29824 [#29835]: https://github.com/home-assistant/home-assistant/pull/29835 -[@Adminiuga]: https://github.com/Adminiuga -[@Anonym-tsk]: https://github.com/Anonym-tsk -[@BKPepe]: https://github.com/BKPepe -[@Bouni]: https://github.com/Bouni -[@ChrisMandich]: https://github.com/ChrisMandich -[@Danielhiversen]: https://github.com/Danielhiversen -[@Dilbert66]: https://github.com/Dilbert66 -[@HarlemSquirrel]: https://github.com/HarlemSquirrel -[@JayNewstrom]: https://github.com/JayNewstrom -[@JeffLIrion]: https://github.com/JeffLIrion -[@K4ds3]: https://github.com/K4ds3 -[@Kane610]: https://github.com/Kane610 -[@Mariusthvdb]: https://github.com/Mariusthvdb -[@Misiu]: https://github.com/Misiu -[@Mryck]: https://github.com/Mryck -[@NobleKangaroo]: https://github.com/NobleKangaroo -[@OttoWinter]: https://github.com/OttoWinter -[@PedroLamas]: https://github.com/PedroLamas -[@Quentame]: https://github.com/Quentame -[@Romkabouter]: https://github.com/Romkabouter -[@SNoof85]: https://github.com/SNoof85 -[@Santobert]: https://github.com/Santobert -[@Shulyaka]: https://github.com/Shulyaka -[@SukramJ]: https://github.com/SukramJ -[@TomBrien]: https://github.com/TomBrien -[@USA-RedDragon]: https://github.com/USA-RedDragon +[@adminiuga]: https://github.com/Adminiuga +[@anonym-tsk]: https://github.com/Anonym-tsk +[@bkpepe]: https://github.com/BKPepe +[@bouni]: https://github.com/Bouni +[@chrismandich]: https://github.com/ChrisMandich +[@danielhiversen]: https://github.com/Danielhiversen +[@dilbert66]: https://github.com/Dilbert66 +[@harlemsquirrel]: https://github.com/HarlemSquirrel +[@jaynewstrom]: https://github.com/JayNewstrom +[@jefflirion]: https://github.com/JeffLIrion +[@k4ds3]: https://github.com/K4ds3 +[@kane610]: https://github.com/Kane610 +[@mariusthvdb]: https://github.com/Mariusthvdb +[@misiu]: https://github.com/Misiu +[@mryck]: https://github.com/Mryck +[@noblekangaroo]: https://github.com/NobleKangaroo +[@ottowinter]: https://github.com/OttoWinter +[@pedrolamas]: https://github.com/PedroLamas +[@quentame]: https://github.com/Quentame +[@romkabouter]: https://github.com/Romkabouter +[@snoof85]: https://github.com/SNoof85 +[@santobert]: https://github.com/Santobert +[@shulyaka]: https://github.com/Shulyaka +[@sukramj]: https://github.com/SukramJ +[@tombrien]: https://github.com/TomBrien +[@usa-reddragon]: https://github.com/USA-RedDragon [@abmantis]: https://github.com/abmantis [@adamchengtkc]: https://github.com/adamchengtkc [@adrum]: https://github.com/adrum @@ -1261,7 +1297,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@amelchio]: https://github.com/amelchio [@andersonshatch]: https://github.com/andersonshatch [@andylockran]: https://github.com/andylockran -[@awkwardDuck]: https://github.com/awkwardDuck +[@awkwardduck]: https://github.com/awkwardDuck [@bachya]: https://github.com/bachya [@balloob]: https://github.com/balloob [@bannhead]: https://github.com/bannhead @@ -1330,10 +1366,10 @@ Experiencing issues introduced by this release? Please report them in our [issue [@tetienne]: https://github.com/tetienne [@thomasgermain]: https://github.com/thomasgermain [@timmccor]: https://github.com/timmccor -[@tofuSCHNITZEL]: https://github.com/tofuSCHNITZEL +[@tofuschnitzel]: https://github.com/tofuSCHNITZEL [@tsvi]: https://github.com/tsvi [@tulindo]: https://github.com/tulindo -[@uSpike]: https://github.com/uSpike +[@uspike]: https://github.com/uSpike [aftership docs]: /integrations/aftership/ [alarm_control_panel docs]: /integrations/alarm_control_panel/ [alarmdecoder docs]: /integrations/alarmdecoder/ From 4b600088123fd4384d027fdf19824ea80f5e4867 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2019 09:00:21 +0100 Subject: [PATCH 092/236] Bump rack from 2.0.7 to 2.0.8 (#11493) Bumps [rack](https://github.com/rack/rack) from 2.0.7 to 2.0.8. - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/2.0.7...2.0.8) Signed-off-by: dependabot[bot] Co-authored-by: null <49699333+dependabot[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 76fb16a02e4..d753bd10486 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -78,7 +78,7 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.1) - rack (2.0.7) + rack (2.0.8) rack-protection (2.0.7) rack rake (13.0.1) From ba9aab7a1538b1fa1bb422574e259fa14e91f958 Mon Sep 17 00:00:00 2001 From: Alexei Chetroi Date: Thu, 19 Dec 2019 03:01:57 -0500 Subject: [PATCH 093/236] Add timer.reload service documentation. (#11475) * Add timer.reload service documentation. * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/timer.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index acdac91e773..9f3e563728d 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -96,6 +96,10 @@ Manually finish a running timer earlier than scheduled. You can also use `entity | ---------------------- | -------- | ----------- | | `entity_id` | no | Name of the entity to take action, e.g., `timer.timer0`. | +### Service `timer.reload` + +Reload `timer`'s configuration without restarting Home Assistant itself. This service takes no service data attributes. + ### Use the service Select service developer tool icon **Services** from the **Developer Tools**. Choose **timer** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. From 2188db3c79bd772d3e36bc98071b2ec48bff915f Mon Sep 17 00:00:00 2001 From: "Michael A. Alderete" <4359+alderete@users.noreply.github.com> Date: Thu, 19 Dec 2019 01:58:51 -0800 Subject: [PATCH 094/236] Minor edits for standard English (#11495) Minor edits to improve American English grammar and usage. --- source/_docs/scripts/conditions.markdown | 28 ++++++++++++------------ 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index f0ca450a8ad..3cf74805178 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -4,13 +4,13 @@ description: "Documentation about all available conditions." redirect_from: /getting-started/scripts-conditions/ --- -Conditions can be used within a script or automation to prevent further execution. When a condition does not return true, the script or automation will stop executing. A condition will look at the system right now. For example a condition can test if a switch is currently turned on or off. +Conditions can be used within a script or automation to prevent further execution. When a condition does not return true, the script or automation stops executing. A condition will look at the system at that moment. For example, a condition can test if a switch is currently turned on or off. Unlike a trigger, which is always `or`, conditions are `and` by default - all conditions have to be true. ### AND condition -Test multiple conditions in 1 condition statement. Passes if all embedded conditions are valid. +Test multiple conditions in one condition statement. Passes if all embedded conditions are valid. ```yaml condition: @@ -24,7 +24,7 @@ condition: below: 20 ``` -If you do not want to combine AND and OR conditions, you can also just list them sequentially. +If you do not want to combine AND and OR conditions, you can list them sequentially. The following configuration works the same as the one listed above: @@ -42,7 +42,7 @@ Currently you need to format your conditions like this to be able to edit them u ### OR condition -Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid. +Test multiple conditions in one condition statement. Passes if any embedded condition is valid. ```yaml condition: @@ -58,7 +58,7 @@ condition: ### MIXED AND and OR conditions -Test multiple AND and OR conditions in 1 condition statement. Passes if any embedded conditions is valid. +Test multiple AND and OR conditions in one condition statement. Passes if any embedded condition is valid. This allows you to mix several AND and OR conditions together. ```yaml @@ -80,7 +80,7 @@ condition: ### Numeric state condition -This type of condition attempts to parse the state of specified entity as a number and triggers if the value matches the thresholds. +This type of condition attempts to parse the state of the specified entity as a number, and triggers if the value matches the thresholds. If both `below` and `above` are specified, both tests have to pass. @@ -134,8 +134,8 @@ condition: #### Sun elevation condition -The sun elevation can be used to test if the sun has set or risen, it is dusk, it is night etc. when a trigger occurs. -For an in depth explanation of sun elevation see [sun elevation trigger][sun_elevation_trigger]. +The sun elevation can be used to test if the sun has set or risen, it is dusk, it is night, etc. when a trigger occurs. +For an in-depth explanation of sun elevation, see [sun elevation trigger][sun_elevation_trigger]. [sun_elevation_trigger]: /docs/automation/trigger/#sun-elevation-trigger @@ -162,9 +162,9 @@ The sun condition can also test if the sun has already set or risen when a trigg [sun_trigger]: /docs/automation/trigger/#sun-trigger
-The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with highly skewed local time zone. +The sunset/sunrise conditions do not work in locations inside the polar circles, and also not in locations with a highly skewed local time zone. -It is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions. +In those cases it is advised to use conditions evaluating the solar elevation instead of the before/after sunset/sunrise conditions.
```yaml @@ -195,13 +195,13 @@ condition: after: sunrise ``` -A visual timeline is provided below showing an example of when these conditions will be true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions will be true. +A visual timeline is provided below showing an example of when these conditions are true. In this chart, sunrise is at 6:00, and sunset is at 18:00 (6:00 PM). The green areas of the chart indicate when the specified conditions are true. Graphic showing an example of sun conditions ### Template condition -The template condition will test if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. +The template condition tests if the [given template][template] renders a value equal to true. This is achieved by having the template result in a true boolean expression or by having the template render 'true'. ```yaml condition: @@ -216,7 +216,7 @@ Within an automation, template conditions also have access to the `trigger` vari ### Time condition -The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week +The time condition can test if it is after a specified time, before a specified time or if it is a certain day of the week. ```yaml condition: @@ -241,7 +241,7 @@ A better weekday condition could be by using the [Workday Binary Sensor](/integr ### Zone condition -Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have setup a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/integrations/owntracks/) and the [iCloud platform](/integrations/icloud/). +Zone conditions test if an entity is in a certain zone. For zone automation to work, you need to have set up a device tracker platform that supports reporting GPS coordinates. Currently this is limited to the [OwnTracks platform](/integrations/owntracks/) and the [iCloud platform](/integrations/icloud/). ```yaml condition: From 7d53e17ea2f68bab7e4cd47e99f239da3e1b06e6 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 19 Dec 2019 18:45:22 +0100 Subject: [PATCH 095/236] Fix redirects iOS/Android urls --- source/ios/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/ios/index.markdown b/source/ios/index.markdown index 7d9688739bf..82cab817984 100644 --- a/source/ios/index.markdown +++ b/source/ios/index.markdown @@ -4,4 +4,4 @@ description: "Landing page for Home Assistant iOS app." --- - + From dfb2a14d620f1965b30426146047566d4a9a9f22 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 19 Dec 2019 18:45:34 +0100 Subject: [PATCH 096/236] Fix redirects iOS/Android urls --- source/android/index.markdown | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/source/android/index.markdown b/source/android/index.markdown index cce4541db9a..2e437db0c0f 100644 --- a/source/android/index.markdown +++ b/source/android/index.markdown @@ -5,6 +5,4 @@ description: "Landing page for Home Assistant Android app." -Nothing to see yet :) - - + From 972b025b4758d6439be5bc8c99be8f00c70afcaf Mon Sep 17 00:00:00 2001 From: Phil Cole Date: Fri, 20 Dec 2019 10:11:07 +0000 Subject: [PATCH 097/236] Correct --open flag to nmap (#11500) --- source/_integrations/dyson.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/dyson.markdown b/source/_integrations/dyson.markdown index 2fc4820b085..b433c645590 100644 --- a/source/_integrations/dyson.markdown +++ b/source/_integrations/dyson.markdown @@ -78,7 +78,7 @@ Discovery is not yet supported for any robot vacuum models (Dyson 360 Eye). For To find a devices IP address, you can use your router or `nmap`: ```bash -$ nmap -p 1883 XXX.XXX.XXX.XXX/YY -- open +$ nmap -p 1883 XXX.XXX.XXX.XXX/YY --open ``` Where: @@ -89,7 +89,7 @@ Where: For example: ```bash -$ nmap -p 1883 192.168.0.0/24 -- open +$ nmap -p 1883 192.168.0.0/24 --open ``` ## Vacuum @@ -168,4 +168,4 @@ Note: currently only the 2018 dyson fans are supported(TP04 and DP04). - Pure Cool link (desk and tower) - Pure Hot+cool link (see climate part) for thermal control -- Pure Cool 2018 Models (TP04 and DP04) \ No newline at end of file +- Pure Cool 2018 Models (TP04 and DP04) From 4f432133cf948b33b09a69a283f8b893ade6a8a0 Mon Sep 17 00:00:00 2001 From: berichta <30439938+berichta@users.noreply.github.com> Date: Fri, 20 Dec 2019 12:05:45 +0100 Subject: [PATCH 098/236] Update picture-glance.markdown (#11504) Extended the description for the entity entry and the state_filter example (now including an entity entry. Reason is that the state_filter requires an entity entry. This was not documented yet. --- source/_lovelace/picture-glance.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_lovelace/picture-glance.markdown b/source/_lovelace/picture-glance.markdown index c26ce3d3c23..cf92f560d7a 100644 --- a/source/_lovelace/picture-glance.markdown +++ b/source/_lovelace/picture-glance.markdown @@ -56,7 +56,7 @@ aspect_ratio: type: string entity: required: false - description: Entity to use for `state_image`. + description: Entity to use for `state_image` and `state_filter`. type: string show_state: required: false @@ -320,6 +320,7 @@ Specify different [CSS filters](https://developer.mozilla.org/en-US/docs/Web/CSS state_filter: "on": brightness(110%) saturate(1.2) "off": brightness(50%) hue-rotate(45deg) +entity: switch.decorative_lights ``` ## Examples From 9161862b767914a2d3dcb87fa687ec8f47eb9e5b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 20 Dec 2019 12:22:35 +0100 Subject: [PATCH 099/236] Add open standards blog --- ...2-20-all-i-want-is-open-standards.markdown | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 source/_posts/2019-12-20-all-i-want-is-open-standards.markdown diff --git a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown new file mode 100644 index 00000000000..772e6c8d874 --- /dev/null +++ b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown @@ -0,0 +1,42 @@ +--- +layout: post +title: "Celebrate the holidays with open standards" +description: "A lot of news dropped around open standards. Time for a quick round up." +date: 2019-12-20 0:43:02 +date_formatted: "December 20, 2019" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Technology +--- + +It's been a busy week with a lot of announcements around IoT standards, so I thought I would do a quick round up of them, and how it might impact Home Assistant users. + +## New IoT standard announced + +As it's been a while, the industry has announced yet a new effort to create a new IoT standard called [Project Connected Home over IP](https://www.connectedhomeip.com/). I think that there are a few interesting bits to this standard: + +The standard will be royalty-free. This is big, as it means that it will be easy for companies to build products. Take for example Homekit, which is a great IP-based local standard. Homekit has strict licensing and royaltees which prevented it from widespread adoption. + +The new standard specification will be written in conjunction with building an open source implementation of the standard. Once it's all finished, we'll be able to integrate this implementation into Home Assistant. + +Finally, Apple, Google and Amazon are seriously involved, even contributing their own IoT standards to help bootstrap this specification. This significantly increases the odds of them also integrating it into their products. Since their products are everywhere, it means that more companies might incorporate the standard and it can get widespread adoption. + +But don't hold your breath. Developing a standard takes time. They aim for a draft to be released at the end of 2020. And that's just the specification. Not any of the devices built with it. If (and that's a big IF) everything works out, expect this standard to get into your home in 2022. + + + +## Z-Wave to become an open standard + +Silicon Labs and the Z-Wave Alliance have announced plans to [open up Z-Wave](https://news.silabs.com/2019-12-19-Silicon-Labs-and-Z-Wave-Alliance-Expand-Smart-Home-Ecosystem-by-Opening-Z-Wave-to-Silicon-and-Stack-Suppliers) in the second half of 2020. Among other things, this will allow other companies to create Z-Wave radios, which could result in wider adoption and cheaper devices. + +## Open Source HomeKit Accessory Development Kit + +As part of the Connected Home over IP announcement, Apple has released an [open source version](https://github.com/apple/HomeKitADK) of their Accessory Development Kit (ADK). The ADK allows devices to be controlled by HomeKit controllers like Home Assistant (and ok, iOS devices). The spec was already open and Home Assistant implements it via the [Homekit integration](/integrations/homekit/). Opening up the ADK still helps because it gives a reference implementation to see how the spec should work. + +## Bonus: deCONZ hass.io add-on gets Ingress support + +It's not really related, but a little. deCONZ is Zigbee controller software that works with the Conbee Zigbee stick. It's a platinum Home Assistant integration and we've been working with [Phoscon](https://phoscon.de), the company behind deCONZ and Conbee, to add Ingress support to the hass.io add-on. + +
From 379d369590c7f57f2669163f1f01c321805a26ce Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 20 Dec 2019 14:04:49 +0100 Subject: [PATCH 100/236] :pencil2: Tweak --- .../_posts/2019-12-20-all-i-want-is-open-standards.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown index 772e6c8d874..b11eda9fa9a 100644 --- a/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown +++ b/source/_posts/2019-12-20-all-i-want-is-open-standards.markdown @@ -16,7 +16,7 @@ It's been a busy week with a lot of announcements around IoT standards, so I tho As it's been a while, the industry has announced yet a new effort to create a new IoT standard called [Project Connected Home over IP](https://www.connectedhomeip.com/). I think that there are a few interesting bits to this standard: -The standard will be royalty-free. This is big, as it means that it will be easy for companies to build products. Take for example Homekit, which is a great IP-based local standard. Homekit has strict licensing and royaltees which prevented it from widespread adoption. +The standard will be royalty-free. This is big, as it means that it will be easy for companies to build products. Take, for example, Homekit, which is a great IP-based local standard. Homekit has strict licensing and royalties, which prevented it from widespread adoption. The new standard specification will be written in conjunction with building an open source implementation of the standard. Once it's all finished, we'll be able to integrate this implementation into Home Assistant. @@ -28,7 +28,7 @@ But don't hold your breath. Developing a standard takes time. They aim for a dra ## Z-Wave to become an open standard -Silicon Labs and the Z-Wave Alliance have announced plans to [open up Z-Wave](https://news.silabs.com/2019-12-19-Silicon-Labs-and-Z-Wave-Alliance-Expand-Smart-Home-Ecosystem-by-Opening-Z-Wave-to-Silicon-and-Stack-Suppliers) in the second half of 2020. Among other things, this will allow other companies to create Z-Wave radios, which could result in wider adoption and cheaper devices. +Silicon Labs and the Z-Wave Alliance have announced plans to [open up Z-Wave](https://news.silabs.com/2019-12-19-Silicon-Labs-and-Z-Wave-Alliance-Expand-Smart-Home-Ecosystem-by-Opening-Z-Wave-to-Silicon-and-Stack-Suppliers) in the second half of 2020. Among other things, this allows other companies to create Z-Wave radios, which could result in wider adoption and cheaper devices. ## Open Source HomeKit Accessory Development Kit @@ -36,7 +36,7 @@ As part of the Connected Home over IP announcement, Apple has released an [open ## Bonus: deCONZ hass.io add-on gets Ingress support -It's not really related, but a little. deCONZ is Zigbee controller software that works with the Conbee Zigbee stick. It's a platinum Home Assistant integration and we've been working with [Phoscon](https://phoscon.de), the company behind deCONZ and Conbee, to add Ingress support to the hass.io add-on. +It's not really related, but a little. deCONZ is Zigbee controller software that works with the Conbee Zigbee stick. It's a platinum Home Assistant integration and we've been working with [Phoscon](https://phoscon.de), the company behind deCONZ and Conbee, to add Ingress support to the Hass.io add-on. From bbe7af4dca71a9ed6ce315726ecaee9babdc5442 Mon Sep 17 00:00:00 2001 From: datafx Date: Fri, 20 Dec 2019 09:36:27 -0500 Subject: [PATCH 101/236] Update MS SQL Server documentation with info on ODBC Drivers (#11505) * Update MS SQL Server info corrected db_url and added notes about odbc driver requirements. * Fix punctuation --- source/_integrations/recorder.markdown | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 049aac26927..875d26c90e0 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -138,7 +138,7 @@ Call the service `recorder.purge` to start a purge task which deletes events and | PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | | PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | | PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pyodbc://username:password@dsnname` | +| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` |
@@ -247,7 +247,7 @@ A service restart will work as well. ### MS SQL Server -For MS SQL Server you may have to install a few dependencies: +For MS SQL Server you will have to install a few dependencies: ```bash sudo apt-get install unixodbc-dev @@ -261,3 +261,11 @@ sudo -u homeassistant -H -s source /srv/homeassistant/bin/activate pip3 install pyodbc ``` + +You will also need to install an ODBC Driver. Microsoft ODBC drivers are recommended, however FreeTDS is available for systems that are not supported by Microsoft. Instrucitons for installing the Microsoft ODBC drivers can be found [here](https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server). + +
+ +If you are using Hass.io, FreeTDS is already installed for you. The db_url you need to use is `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={FreeTDS};Port=1433;`. + +
From 93e2b2f44818819f407b1e1ef7c94ef82ebb3643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Arnauts?= Date: Fri, 20 Dec 2019 15:47:54 +0100 Subject: [PATCH 102/236] Add documentation for tado fallback setting (#11497) --- source/_integrations/tado.markdown | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 05361951686..a4d816250f6 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -11,7 +11,7 @@ ha_release: 0.41 ha_iot_class: Cloud Polling --- -The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. +The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/) website. There is currently support for the following device types within Home Assistant: @@ -32,16 +32,21 @@ tado: {% configuration %} username: - description: Your username for my.tado.com. + description: Your username for [my.tado.com](https://my.tado.com/). required: true type: string password: - description: Your password for my.tado.com. + description: Your password for [my.tado.com](https://my.tado.com/). required: true type: string +fallback: + description: Indicates if you want to fallback to Smart Schedule on the next Schedule change, or stay in Manual mode until you set the mode back to Auto. + required: false + type: boolean + default: true {% endconfiguration %} -The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/webapp/#/account/sign-in), which is used by their website and now by this component. +The tado thermostats are internet connected thermostats. There exists an unofficial API at [my.tado.com](https://my.tado.com/), which is used by their website and now by this component. It currently supports presenting the current temperature, the setting temperature and the current operation mode. Switching the mode is also supported. If no user is at home anymore, the devices are showing the away-state. Switching to away-mode is not supported. From a368c0b51ecdcf386ec90509799812f8d42392d2 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 20 Dec 2019 21:31:19 +0100 Subject: [PATCH 103/236] 103.3 --- _config.yml | 4 +-- source/_posts/2019-12-11-release-103.markdown | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index a13394cf8a0..73fb51706f8 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 103 -current_patch_version: 1 -date_released: 2019-12-18 +current_patch_version: 3 +date_released: 2019-12-20 # 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-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index d19f0cc0485..c50923964c4 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -280,6 +280,38 @@ All services for use in Home Assistant are moved to their integration naming spa [tank_utility docs]: /integrations/tank_utility/ [zwave docs]: /integrations/zwave/ +## Release 0.103.2 - December 19 + +- Fix dependency installation recursinog ([@balloob]) + +## Release 0.103.3 - December 20 + +- Fix update port and api key on deconz discovery config entry u… ([@frenck] - [#30088]) ([deconz docs]) +- Patch rachio ([@omriasta] - [#30031]) ([rachio docs]) +- Fix failure in transform method ([@depl0y] - [#30023]) ([dsmr_reader docs]) +- Fix homekit handling of 0 light brightness and fan speed ([@fuzzie360] - [#29962]) ([homekit docs]) +- Bump starlingbank to 3.2 ([@springstan] - [#30098]) ([starlingbank docs]) +- Bump ring to 0.2.5 ([@balloob] - [#30103]) ([ring docs]) + +[#29962]: https://github.com/home-assistant/home-assistant/pull/29962 +[#30023]: https://github.com/home-assistant/home-assistant/pull/30023 +[#30031]: https://github.com/home-assistant/home-assistant/pull/30031 +[#30088]: https://github.com/home-assistant/home-assistant/pull/30088 +[#30098]: https://github.com/home-assistant/home-assistant/pull/30098 +[#30103]: https://github.com/home-assistant/home-assistant/pull/30103 +[@balloob]: https://github.com/balloob +[@depl0y]: https://github.com/depl0y +[@frenck]: https://github.com/frenck +[@fuzzie360]: https://github.com/fuzzie360 +[@omriasta]: https://github.com/omriasta +[@springstan]: https://github.com/springstan +[deconz docs]: /integrations/deconz/ +[dsmr_reader docs]: /integrations/dsmr_reader/ +[homekit docs]: /integrations/homekit/ +[rachio docs]: /integrations/rachio/ +[ring docs]: /integrations/ring/ +[starlingbank docs]: /integrations/starlingbank/ + ## 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). From c887e81e3a6688d5c9a3e71c56f5f5c54eb08463 Mon Sep 17 00:00:00 2001 From: Florijan Hamzic Date: Fri, 20 Dec 2019 22:38:41 +0100 Subject: [PATCH 104/236] Added missing quotes for value_template value (#11507) * added missing quotes for value_template value * removed redundant quotes for value_template --- source/_docs/scripts/conditions.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 3cf74805178..754615b555b 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -93,7 +93,7 @@ condition: above: 17 below: 25 # If your sensor value needs to be adjusted - value_template: {% raw %}{{ float(state.state) + 2 }}{% endraw %} + value_template: {% raw %}'{{ float(state.state) + 2 }}'{% endraw %} ``` ### State condition From a677ae47e29818e77b1078d71816ee4a69261abd Mon Sep 17 00:00:00 2001 From: Forte Date: Sat, 21 Dec 2019 11:08:12 -0500 Subject: [PATCH 105/236] Added link to https://www.solar-log.com/ (#11508) --- source/_integrations/solarlog.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index c8c21bf73c0..1439c4bbf47 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -7,7 +7,7 @@ ha_release: 0.101 ha_iot_class: Local Polling --- -The `solarlog` integration uses the open JSON interface on Solar-Log PV monitoring systems to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. +The `solarlog` integration uses the open JSON interface on [Solar-Log PV monitoring systems](https://www.solar-log.com/) to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. Before being able to use the integration, you have to activate the open JSON interface on your Solar-Log device. This can be activated from the Configuration | System | Access control menu of your Solar-Log device. When activating the interface, a red warning triangle with security information and risks is displayed. From 995893ad855fb18fadee889f49df53f8962c94e7 Mon Sep 17 00:00:00 2001 From: Jack <32000001+jackjohnsonuk@users.noreply.github.com> Date: Sun, 22 Dec 2019 10:54:49 +0000 Subject: [PATCH 106/236] Update doods.markdown (#11511) The entity_id cannot be camera.xxx - it's an invalid action. --- source/_integrations/doods.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index 3fb11bbabfb..2b4e9ab1926 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -199,5 +199,5 @@ image_processing: - binary_sensor.driveway action: - service: image_processing.scan - entity_id: camera.driveway + entity_id: image_processing.doods_camera_driveway ``` From 5e884634ec85f4d62dec3645980612bf13be1725 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 22 Dec 2019 23:42:10 +0100 Subject: [PATCH 107/236] 103.4 --- _config.yml | 4 ++-- source/_posts/2019-12-11-release-103.markdown | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index 73fb51706f8..d4725650dfe 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 103 -current_patch_version: 3 -date_released: 2019-12-20 +current_patch_version: 4 +date_released: 2019-12-22 # 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-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index c50923964c4..0df2480bf89 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -312,6 +312,28 @@ All services for use in Home Assistant are moved to their integration naming spa [ring docs]: /integrations/ring/ [starlingbank docs]: /integrations/starlingbank/ +## Release 0.103.4 - December 22 + +- Remove requirement from entity integration ([@balloob] - [#30113]) ([doods docs]) ([image_processing docs]) ([seven_segments docs]) ([tensorflow docs]) +- Move imports into setup function in homekit __init__.py ([@springstan] - [#30137]) ([homekit docs]) +- Fix deconz SSDP updating Hassio discovery ([@frenck] - [#30153]) ([deconz docs]) +- Allow battery value of 0 as well as make sure to not create a battery tracker if one already exist ([@Kane610] - [#30155]) ([deconz docs]) + +[#30113]: https://github.com/home-assistant/home-assistant/pull/30113 +[#30137]: https://github.com/home-assistant/home-assistant/pull/30137 +[#30153]: https://github.com/home-assistant/home-assistant/pull/30153 +[#30155]: https://github.com/home-assistant/home-assistant/pull/30155 +[@Kane610]: https://github.com/Kane610 +[@balloob]: https://github.com/balloob +[@frenck]: https://github.com/frenck +[@springstan]: https://github.com/springstan +[deconz docs]: /integrations/deconz/ +[doods docs]: /integrations/doods/ +[homekit docs]: /integrations/homekit/ +[image_processing docs]: /integrations/image_processing/ +[seven_segments docs]: /integrations/seven_segments/ +[tensorflow docs]: /integrations/tensorflow/ + ## 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). From 065dd0511b57551f620375bfed628ee25126a231 Mon Sep 17 00:00:00 2001 From: Muhammed Saho Date: Mon, 23 Dec 2019 04:20:49 -0600 Subject: [PATCH 108/236] Aadd extract instruction to getting started guide (#11518) It is not obvious that the downloaded file needs to be extracted before flashing it. I assumed balenaEtcher did it automatically and spent an entire afternoon trying to figure out why the raspberry pi was not booting up. Hopefully, this change will prevent someone from making the same mistake in the future. --- source/getting-started/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 196062407f7..642c129d280 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -42,7 +42,7 @@ We will need a few things to get started with installing Home Assistant. The Ras ### Software requirements -- Download the HassOS image for [your device](/hassio/installation/) +- Download and extract the HassOS image for [your device](/hassio/installation/) - Download [balenaEtcher] to write the image to an SD card [balenaEtcher]: https://www.balena.io/etcher From b9f91b0c865b95f25a0f100899d58a0d6e859ae3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Z=C3=A1hradn=C3=ADk?= Date: Mon, 23 Dec 2019 11:34:53 +0100 Subject: [PATCH 109/236] Fix Raspberry model to be consistent in docs (#11516) --- source/getting-started/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 642c129d280..515f5e422ae 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -33,7 +33,7 @@ Follow this guide if you want to get started with Home Assistant easily or if yo ### Suggested hardware -We will need a few things to get started with installing Home Assistant. The Raspberry Pi 3 Model B+ is a good, affordable starting point for your home automation journey. Links below lead to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. +We will need a few things to get started with installing Home Assistant. The Raspberry Pi 4 Model B is a good, affordable starting point for your home automation journey. Links below lead to Amazon US. If you're not in the US, you should be able to find these items in web stores in your country. - [Raspberry Pi 4 Model B (2GB)](https://amzn.to/2XULT2z) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) - [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended. From d83ce94dcc1be7f3c71fd08d9d617007fac14e97 Mon Sep 17 00:00:00 2001 From: Ionut Popovici Date: Mon, 23 Dec 2019 12:21:58 +0000 Subject: [PATCH 110/236] Added verified switch and working. (#11520) * Added verified switch and working. The switch is advertised on amazon as it have power measurements but deconz only detect as SONOFF. * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/deconz.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index c533f7e4b33..1553eae6285 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -479,6 +479,7 @@ The `entity_id` name will be `switch.device_name`, where `device_name` is define ### Verified supported switches - Innr SP120 +- Innr ZB-ONOFFPlug-D0005/SmartThings Smart Plug (2019) (without power measurements) - Osram Lightify plug - Osram Outdoor plug - Heiman siren From d3173cfc27944382bcc16c754e25d419f0a3789b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Mon, 23 Dec 2019 16:57:31 +0200 Subject: [PATCH 111/236] deCONZ IKEA bulb update (#11521) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * IKEA Trådfri bulb E27 WS clear 806lm verified * IKEA bulb (non)capitalization consistency --- source/_integrations/deconz.markdown | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 1553eae6285..1fec16f8a09 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -389,11 +389,12 @@ The `entity_id` names will be `light.device_name`, where `device_name` is define - IKEA Trådfri bulb E14 WS Opal 400lm - IKEA Trådfri bulb E14 WS Opal 600lm -- IKEA Trådfri Bulb E27 WS clear 950lm -- IKEA Trådfri Bulb E27 WS Opal 980lm -- IKEA Trådfri Bulb E27 WS Opal 1000lm -- IKEA Trådfri Bulb E27 WS & RGB Opal 600lm -- IKEA Trådfri Bulb GU10 W 400lm +- IKEA Trådfri bulb E27 WS clear 806lm +- IKEA Trådfri bulb E27 WS clear 950lm +- IKEA Trådfri bulb E27 WS Opal 980lm +- IKEA Trådfri bulb E27 WS Opal 1000lm +- IKEA Trådfri bulb E27 WS & RGB Opal 600lm +- IKEA Trådfri bulb GU10 W 400lm - IKEA Trådfri FLOALT LED light panel - Innr BY-265, BY-245 - OSRAM Classic A60 W clear - LIGHTIFY From ebfcf77562c44b51db310db7a5bb2e213f1c86ad Mon Sep 17 00:00:00 2001 From: Megachip Date: Mon, 23 Dec 2019 21:09:06 +0100 Subject: [PATCH 112/236] Update xiaomi_aqara.markdown (#11524) Adding additional MAC which having closed ports --- source/_integrations/xiaomi_aqara.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index a299ddfeec1..ef5198ae0b8 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -273,7 +273,7 @@ That means that Home Assistant is not getting any response from your Xiaomi gate - You should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances, there is an issue with keys being generated using the iOS application. - You need to make sure to have multicast support on your network. If you are running Home Assistant in a virtual machine (like Proxmox), try `echo 0 >/sys/class/net/vmbr0/bridge/multicast_snooping` on the host and restart the service or reboot the host. - If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`). -- If your gateway's MAC address starts with `04:CF:8C`, there is a good chance that the required port `9898` is closed on your gateway (you can check it with the Nmap utility, using the command `sudo nmap -sU {gateway_ip} -p 9898`). To fix that issue, you need to do these steps: +- If your gateway's MAC address starts with `04:CF:8C` or `7C:49:EB`, there is a good chance that the required port `9898` is closed on your gateway (you can check it with the Nmap utility, using the command `sudo nmap -sU {gateway_ip} -p 9898`). To fix that issue, you need to do these steps: - Find a specific screw bit (like a fork) to open the gateway case. - Find a USB-UART cable/module and connect it to your computer. - Solder 3 wires - RX, TX and GND like [here](https://cs5-3.4pda.to/14176168/IMG_20181020_201150.jpg). From 12c2697699c529ef405124bf775699c7f6101059 Mon Sep 17 00:00:00 2001 From: frasskungin <58339726+frasskungin@users.noreply.github.com> Date: Mon, 23 Dec 2019 22:09:26 +0200 Subject: [PATCH 113/236] Update mhz19.markdown (#11525) The serial device "address" was incorrect. The correct name is /dev/ttyS0 --- source/_integrations/mhz19.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/mhz19.markdown b/source/_integrations/mhz19.markdown index 640da7dfd26..e5e3765f1ca 100644 --- a/source/_integrations/mhz19.markdown +++ b/source/_integrations/mhz19.markdown @@ -53,7 +53,7 @@ enable_uart=1 Then (after a reboot): you can setup the sensor using: ```yaml - serial_device: /dev/tty.S0 + serial_device: /dev/ttyS0 ``` ## Calibration From 9211cf77dd5309741a1c3c7db1d7d7b20faa71ab Mon Sep 17 00:00:00 2001 From: Claudio Heckler Date: Mon, 23 Dec 2019 17:49:14 -0300 Subject: [PATCH 114/236] Updates time_date with mention to date_time_utc (#11519) Adds display option date_time_utc to the documentation for time_date sensor. Relates to home-assistant PR adding the date_time_utc display option. --- source/_integrations/time_date.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 4261bf2807f..c315127d653 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -20,13 +20,14 @@ sensor: - 'time' - 'date' - 'date_time' + - 'date_time_utc' - 'date_time_iso' - 'time_date' - 'time_utc' - 'beat' ``` -- **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](https://www.swatch.com/en_us/internet-time). +- **display_options** array (*Required*): The option to display. The types *date_time*, *date_time_utc*, *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](https://www.swatch.com/en_us/internet-time).

From 91abc971823165dcc2834e851c56be2b81215a62 Mon Sep 17 00:00:00 2001 From: Huon Wilson Date: Wed, 25 Dec 2019 00:34:27 +1100 Subject: [PATCH 115/236] Add MAC Address table OID for TP-Link Archer VR1600v (#11530) This is the standard router distributed by the TPG ISP in Australia. --- source/_integrations/snmp.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown index 649c77bfbff..41bb0d3ae2f 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -40,6 +40,7 @@ The following OID examples pull the current MAC Address table from a router. Thi | OPNSense | 19.1 | `1.3.6.1.2.1.4.22.1.2` | | pfSense | 2.2.4 | `1.3.6.1.2.1.4.22.1.2` | | Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | +| TP-Link | Archer VR1600v | `1.3.6.1.2.1.3.1.1.2.16.1` | | TP-Link | Archer VR2600v | `1.3.6.1.2.1.3.1.1.2.19.1` | | TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | | Ubiquiti | Edgerouter Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | From 45cbb99adbbfcd6c7977bad177f9588f8150094c Mon Sep 17 00:00:00 2001 From: Tim Rightnour <6556271+garbled1@users.noreply.github.com> Date: Tue, 24 Dec 2019 06:51:45 -0700 Subject: [PATCH 116/236] Add onewire devices and owserver remote host support (#11460) * Update onewire.markdown Document host/port/owserver * Update onewire.markdown * :pencil2: Tweaks * :pencil2: Adds default for port option Co-authored-by: Franck Nijhof --- source/_integrations/onewire.markdown | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index c2d1d1e3e5f..999fcd272c6 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -33,6 +33,10 @@ To edit `/boot/config.txt` on Hass.io use [this documentation](https://developer When an interface adapter is used, sensors can be accessed on Linux hosts via [owfs 1-Wire file system](https://owfs.org/). When using an interface adapter and the owfs, the `mount_dir` option must be configured to correspond a directory, where owfs device tree has been mounted. +### owserver + +When an interface adapter is used, you can also access sensors on a remote or local Linux host that is running owserver. owserver by default runs on port 4304. Use the `host` option to specify the host or IP of the remote server, and the optional `port` option to change the port from the default. + ### Units with multiple sensors This platform works with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices. @@ -72,6 +76,15 @@ mount_dir: description: Location of device tree if owfs driver used. required: false type: string +host: + description: Remote or local host running owserver. + required: false + type: string +port: + description: "The port number of the owserver (requires `host`)." + required: false + type: integer + default: 4304 {% endconfiguration %} ### Configuration Example From e7138dee380f8afeadc6e51dfef9df18472db3c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Z=C3=A1hradn=C3=ADk?= Date: Tue, 24 Dec 2019 14:54:58 +0100 Subject: [PATCH 117/236] Add device_class section into Modbus sensor and binary sensor docs (#11496) --- source/_integrations/binary_sensor.modbus.markdown | 5 +++++ source/_integrations/sensor.modbus.markdown | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/source/_integrations/binary_sensor.modbus.markdown b/source/_integrations/binary_sensor.modbus.markdown index 042a2c8355f..8adc0dd0d89 100644 --- a/source/_integrations/binary_sensor.modbus.markdown +++ b/source/_integrations/binary_sensor.modbus.markdown @@ -52,6 +52,11 @@ coils: description: Coil number. required: true type: integer + device_class: + description: The [type/class](/integrations/binary_sensor/#device-class) of the binary sensor to set the icon in the frontend. + required: false + type: device_class + default: None {% endconfiguration %} It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. diff --git a/source/_integrations/sensor.modbus.markdown b/source/_integrations/sensor.modbus.markdown index 13378090288..600eca91fbd 100644 --- a/source/_integrations/sensor.modbus.markdown +++ b/source/_integrations/sensor.modbus.markdown @@ -73,6 +73,11 @@ registers: description: Unit to attach to value. required: false type: integer + device_class: + description: The [type/class](/integrations/sensor/#device-class) of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None count: description: Number of registers to read. required: false From 87faf0e88648b444429f0dd8ea7cf56f0a4967e5 Mon Sep 17 00:00:00 2001 From: Alan Tse Date: Tue, 24 Dec 2019 06:02:24 -0800 Subject: [PATCH 118/236] Update Tesla for config flow (#11170) * Update Tesla for config flow Signed-off-by: Alan Tse * :pencil2: Tweak Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/tesla.markdown | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index 7c97985d10d..9d7d528f1c7 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -27,7 +27,11 @@ This integration provides the following platforms: ## Configuration -To use Tesla in your installation, add the following to your `configuration.yaml` file: +Home Assistant offers the Tesla integration through **Configuration** -> **Integrations** -> **Tesla**. + +Enter username and password and then continue. + +Alternatively, Home Assistant will also load Tesla via the `configuration.yaml`. Add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From 02908a82d6e72622a335ac7ba11f01f4467c71fe Mon Sep 17 00:00:00 2001 From: Marius <33354141+Mariusthvdb@users.noreply.github.com> Date: Tue, 24 Dec 2019 15:13:49 +0100 Subject: [PATCH 119/236] add raw to the delay template (#11456) * add raw to the delay template add raw to the delay template. might need something extra: right now, when visiting this page, no value is displayed for the delay, which wouldn't be correct, since it could suggest it to be valid syntax to do so. Not sure how to change that in the html of this page, so ask for suggestion on behalf of the team. please see https://community.home-assistant.io/t/confused-about-script-field-template-in-docs/155023/7?u=mariusthvdb for more info here * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/script.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index 846f5e8e54b..3ff893e8bd0 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -65,6 +65,8 @@ sequence: ### Full Configuration +{% raw %} + ```yaml script:  wakeup: @@ -96,6 +98,8 @@ script:  entity_id: group.living_room ``` +{% endraw %} + ### Passing variables to scripts As part of the service, variables can be passed along to a script so they become available within templates in that script. From c90ff61347bdd758ba3506d06cfe7d57ec9ddf92 Mon Sep 17 00:00:00 2001 From: Patrik Hermansson Date: Tue, 24 Dec 2019 15:25:24 +0100 Subject: [PATCH 120/236] Update broadlink.markdown (#11395) * Update broadlink.markdown Added commands to get codes with broadlink_cli. * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/broadlink.markdown | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index 5ff2381de7a..d56ca2d5e3c 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -635,6 +635,32 @@ Now you can add as many template nodes, each having a specific code, and add any ### Using broadlink_cli to obtain codes It is also possible to obtain codes using `broadlink_cli` from [python-broadlink](https://github.com/mjg59/python-broadlink) project. +First use discovery to find your Broadlink device: + +```bash +./broadlink_discovery +Discovering... +########################################### +RM2 +# broadlink_cli --type 0x2737 --host 192.168.1.137 --mac 36668342f7c8 +Device file data (to be used with --device @filename in broadlink_cli) : +0x2737 192.168.1.137 36668342nnnn +temperature = 0.0 +``` + +Then use this info in a cli-command: + +```bash +./broadlink_cli --learn --device "0x2737 192.168.1.137 36668342nnnn" +Learning... +``` + +Press a button on the remote and you get a code: + +```txt +260058000001219512131114113910141114111411141114103911391114103911391139103911391039113911141039111411391015103911141114113910141139111410391114110005250001274b11000c520001274b11000d05 +Base64: b'JgBYAAABIZUSExEUETkQFBEUERQRFBEUEDkROREUEDkRORE5EDkRORA5ETkRFBA5ERQRORAVEDkRFBEUETkQFBE5ERQQOREUEQAFJQABJ0sRAAxSAAEnSxEADQU=' +``` ### Conversion of codes from other projects From 802a0fc8d5ba2ed0a9dbacc4061df7c016cab21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Wed, 25 Dec 2019 16:05:31 +0200 Subject: [PATCH 121/236] Document Huawei LTE suspend/resume integration services (#11534) --- source/_integrations/huawei_lte.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 6c84d9cf4dc..214ae180103 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -129,6 +129,24 @@ Reboot router. | ---------------------- | -------- | ----------- | | `url` | yes, if only one router configured | Router URL. | +### Service `huawei_lte.suspend_integration` + +Suspend integration. Suspending logs the integration out from the router, and stops accessing it. +Useful e.g. if accessing the router web interface from another source such as a web browser is temporarily required. +Invoke the `huawei_lte.resume_integration` service to resume. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + +### Service `huawei_lte.resume_integration` + +Resume suspended integration. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `url` | yes, if only one router configured | Router URL. | + ## Tested devices Devices we know to be working with this integration based on the [documentation of used libraries](https://github.com/Salamek/huawei-lte-api/#huawei-lte-api) and reports by users: From 145d461718713a5e4131b6698436b5f1b885fc5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Wed, 25 Dec 2019 16:28:35 +0200 Subject: [PATCH 122/236] Document Huawei LTE notification service name option (#11535) * Document Huawei LTE notification service name option * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/huawei_lte.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 214ae180103..5c6268e4b60 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -103,6 +103,11 @@ notify: required: false type: map keys: + name: + description: Name of the notification service. + default: "`huawei_lte`" + required: false + type: string recipient: description: The phone number of a default recipient or a list with multiple recipients. required: false From 721c4af635389ce55f2938bce1c19698b1101eb7 Mon Sep 17 00:00:00 2001 From: Kevin McCormack Date: Wed, 25 Dec 2019 09:29:25 -0500 Subject: [PATCH 123/236] Update Vivotek camera integration (#11529) - Add optional digest authentication --- source/_integrations/vivotek.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index f00ddafb14d..ef610d3b09b 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -43,6 +43,11 @@ password: description: The password for accessing your camera. required: true type: string +authentication: + description: "Type for authenticating the requests `basic` or `digest`." + required: false + default: basic + type: string security_level: description: The security level of the user accessing your camera. This could be `admin` or `viewer`. required: false @@ -81,6 +86,7 @@ camera: ssl: true username: !secret fd_camera_username password: !secret fd_camera_pwd + authentication: digest security_level: admin verify_ssl: false framerate: 5 From 7eeba4bd8d9c2169369b226cc9a547679909cf4a Mon Sep 17 00:00:00 2001 From: rhadamantys <46837767+rhadamantys@users.noreply.github.com> Date: Wed, 25 Dec 2019 15:29:58 +0100 Subject: [PATCH 124/236] Add support for enocean window handle FA 10 00 (Hoppe) (#11499) * home assistant documentation change for PR29968 Add documentation description for home assistant PR 29968 https://github.com/home-assistant/home-assistant/pull/29968 to describe window handle setup in configuration.yaml file * :pencil2: Tweak * Update source/_integrations/enocean.markdown accepted review improvement proposal Co-Authored-By: Franck Nijhof Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/enocean.markdown | 30 +++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 8ecb70d3f75..3818a938ec4 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -19,7 +19,7 @@ The `enocean` integration adds support for some of these devices. You will need There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - Wall switches -- [Sensor](#sensor) - Power meters, temperature sensors and humidity sensors +- [Sensor](#sensor) - Power meters, temperature sensors, humidity sensors and window handles - [Light](#light) - Dimmers - [Switch](#switch) @@ -32,7 +32,7 @@ The following devices have been confirmed to work out of the box: - Omnio WS-CH-102-L-rw battery-less wall switch - Permundo PSC234 (switch and power monitor) - EnOcean STM-330 temperature sensor - +- Hoppe SecuSignal window handle from Somfy If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) (EEP). If it does, it will most likely work. @@ -160,6 +160,7 @@ The EnOcean sensor platform currently supports the following device types: * [power sensor](#power-sensor) * [humidity sensor](#humidity-sensor) * [temperature sensor](#temperature-sensor) + * [window handle](#window-handle) To use your EnOcean device, you first have to set up your [EnOcean hub](#hub) and then add the following to your `configuration.yaml` file: @@ -188,7 +189,6 @@ device_class: default: powersensor {% endconfiguration %} - ### Power sensor This has been tested with a Permundo PSC234 switch, but any device sending EEP **A5-12-01** messages will work. @@ -204,7 +204,6 @@ sensor: device_class: powersensor ``` - ### Humidity sensor The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported: @@ -298,6 +297,29 @@ sensor: range_max: 250 ``` +### Window handle + +As of now, the Hoppe SecuSignal window handle from Somfy has been successfully tested. However, any mechanical window handle that follows the EnOcean RPS telegram spec F6 10 00 (Hoppe AG) is supported. + +To configure a window handle, add the following code to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry for window handle EEP F6-10-00 +sensor: + - name: Living Room Window Handle + platform: enocean + id: [0xDE,0xAD,0xBE,0xEF] + device_class: windowhandle +``` + +The configuration does not have any optional parameters. + +The window handle sensor can have the following states: + +- **closed**: The window handle is in closed position (typically down, or 6 o'clock) +- **open**: The window handle is in open position (typically left or right, or 3 o'clock or 9 o'clock) +- **tilt**: The window handle is in tilt position (typically up or 12 o'clock) + ## Switch An EnOcean switch can take many forms. Currently, only a few types have been tested: Permundo PSC234 and Nod On SIN-2-1-01. From 15275e4a89cebfac595e64e3a01bb93d1fd42286 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2019 15:31:08 +0100 Subject: [PATCH 125/236] Bump tzinfo from 2.0.0 to 2.0.1 (#11538) Bumps [tzinfo](https://github.com/tzinfo/tzinfo) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/tzinfo/tzinfo/releases) - [Changelog](https://github.com/tzinfo/tzinfo/blob/master/CHANGES.md) - [Commits](https://github.com/tzinfo/tzinfo/compare/v2.0.0...v2.0.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 76fb16a02e4..2c2191d3889 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -105,7 +105,7 @@ GEM terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) tilt (2.0.10) - tzinfo (2.0.0) + tzinfo (2.0.1) concurrent-ruby (~> 1.0) tzinfo-data (1.2019.3) tzinfo (>= 1.0.0) From 7ed45e5adcbf8f40b9f132cc8a6d2deb4c198109 Mon Sep 17 00:00:00 2001 From: Jonas Pedersen Date: Wed, 25 Dec 2019 15:31:55 +0100 Subject: [PATCH 126/236] IPC-D140H(-M) as confirmed working model (#11537) Can confirm that the binary sensor is working on HikVision HiLook IPC-D140H(-M). --- source/_integrations/hikvision.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index a3bfd008d71..95f0bdceffe 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -55,6 +55,7 @@ and has been confirmed to work with the following models: - DS-2CD2042WD-I - DS-2CD2142FWD-I - DS-2CD2155FWD-IS +- IPC-D140H(-M) ## Configuration From 561b8c13ecec6ef948b3013f7d801d36cd6b00f1 Mon Sep 17 00:00:00 2001 From: Alex Solomaha Date: Wed, 25 Dec 2019 16:34:11 +0200 Subject: [PATCH 127/236] Simpler method to get chat_id for telegram bot (#11533) * Simpler method to get chat_id for telegram bot I was struggling with getting id some time ago but found this bot and this is the easiest method to get chat_id. Notice that chat_id is the same for all bots, but you should contact them first * Remove group ID part Co-authored-by: Fabian Affolter --- source/_integrations/telegram.markdown | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index d1e32de06e8..7dec6354cb3 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -16,9 +16,11 @@ The requirements are: - You need a [Telegram bot](https://core.telegram.org/bots). Please follow those [instructions](https://core.telegram.org/bots#6-botfather) to create one and get the token for your bot. Keep in mind that bots are not allowed to contact users. You need to make the first contact with your user. Meaning that you need to send a message to the bot from your user. - You need to configure a [Telegram bot in Home Assistant](/integrations/telegram_chatbot) and define there your API key and the allowed chat ids to interact with. -- The `chat_id` of an allowed user. +- The `chat_id` of an allowed user. -The quickest way to retrieve your `chat_id` is visiting `https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` **after** you have sent the bot a message. Replace `YOUR_API_TOKEN` with your actual token. +**Method 1:** You can get your `chat_id` by sending any message to the [GetIDs bot](https://t.me/getidsbot). + +**Method 2:** To retrieve your `chat_id` you can visit `https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` or to use `$ curl -X GET https://api.telegram.org/botYOUR_API_TOKEN/getUpdates` **after** you have sent the bot a message. Replace `YOUR_API_TOKEN` with your actual token. The result set will include your chat ID as `id` in the `chat` section: @@ -49,7 +51,7 @@ The result set will include your chat ID as `id` in the `chat` section: } ``` -Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: +**Method 3:** Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: ```python $ python3 From 6e3fa3bfad5e3f6fbc3c534803acd4ed5a10f035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Wed, 25 Dec 2019 16:40:47 +0200 Subject: [PATCH 128/236] Fix Netgear LTE notify service default name (#11536) * Fix Netgear LTE notify service default name * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/netgear_lte.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown index 65351a5ef47..1835ffeb242 100644 --- a/source/_integrations/netgear_lte.markdown +++ b/source/_integrations/netgear_lte.markdown @@ -71,7 +71,7 @@ notify: name: description: The name of the notification service. required: false - default: notify + default: "`netgear_lte`" type: string sensor: description: Configuration options for sensors. From 8df76d7fb1d6892f3e3b61f601c74eb2b07583ab Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2019 16:18:58 +0100 Subject: [PATCH 129/236] [Security] Bump rack from 2.0.7 to 2.0.8 (#11494) Bumps [rack](https://github.com/rack/rack) from 2.0.7 to 2.0.8. **This update includes a security fix.** - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/2.0.7...2.0.8) Signed-off-by: dependabot-preview[bot] Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 2c2191d3889..cb651a8c54d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -78,7 +78,7 @@ GEM pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.1) - rack (2.0.7) + rack (2.0.8) rack-protection (2.0.7) rack rake (13.0.1) From 4dbc4c9875f829c13cc9d01a6279fdefca42062b Mon Sep 17 00:00:00 2001 From: David Bonnes Date: Wed, 25 Dec 2019 15:20:06 +0000 Subject: [PATCH 130/236] Cleanup honeywell docs (#11423) --- source/_integrations/honeywell.markdown | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 6dbc14e6f68..332e6fbfb51 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -10,29 +10,9 @@ ha_iot_class: Cloud Polling The `honeywell` climate platform integrates Home Assistant with _US-based_ [Honeywell Total Connect Comfort (TCC)](https://mytotalconnectcomfort.com/portal/) climate systems. -It does not support the home security functionality of TCC. +It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library. It does not support the home security functionality of TCC. -It uses the [somecomfort](https://github.com/kk7ds/somecomfort) client library. - -

- -There is some potential confusion over this integration because it was previously implemented as a combination of two _distinct_ climate systems, one being US-based, the other EU-based. - -These two regions are _not_ interchangeable, and the `eu` region is now deprecated. Ongoing support for such systems is available via the [evohome](/integrations/evohome/) integration. - -
- -### US-based Systems - -These systems are based in North America, and temperatures are usually in Fahrenheit. They would likely be HVAC systems. They always use the [somecomfort](https://github.com/kk7ds/somecomfort) client library. In this integration, this is called the `us` region. - -If your system is US-based, then you can access your system via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`). - -### EU-based Systems - -These systems are based in Europe (including the UK & Ireland), and temperatures are usually in Celsius. They would likely be heating-only systems. They always use the [evohome-client](https://github.com/watchforstock/evohome-client) client library. In this integration, this is called the `eu` region. - -If your system is EU-based, then you can access it via [https://international.mytotalconnectcomfort.com/](https://international.mytotalconnectcomfort.com/) (note the `international`). +If your system is compatible with this integration, then you will be able access your it via [https://mytotalconnectcomfort.com/portal/](https://mytotalconnectcomfort.com/portal/) (note the `/portal/`). ## Configuration From 34a39c7865b234cb5880b12ab82794adf0d7bb3c Mon Sep 17 00:00:00 2001 From: Dan Jackson Date: Fri, 27 Dec 2019 01:28:02 -0800 Subject: [PATCH 131/236] Update homekit.markdown: URL encode space char (#11542) I'm not sure this addition to the URL works for everyone - it looks like unprivileged users can't label new issues, but this *does* fix the formatting of the link. --- source/_integrations/homekit.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 20acf947f03..dc0e98fdddf 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -459,7 +459,7 @@ To use the HomeKit integration with to different Home Assistant instances on the #### Specific entity doesn't work -Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component: homekit) +Although we try our best, some entities don't work with the HomeKit integration yet. The result will be that either pairing fails completely or all Home Assistant accessories will stop working. Use the filter to identify which entity is causing the issue. It's best to try pairing and step by step including more entities. If it works unpair and repeat until you find the one that is causing the issues. To help others and the developers, please open a new issue here: [home-assistant/issues/new](https://github.com/home-assistant/home-assistant/issues/new?labels=component:%20homekit) #### Accessories are all listed as not responding From a0c74463603fa74b59ca0df719e0db04a08d9b15 Mon Sep 17 00:00:00 2001 From: Frankster-NL Date: Fri, 27 Dec 2019 10:58:26 +0100 Subject: [PATCH 132/236] Added warning on method for spikey appliances (#11539) --- source/_integrations/integration.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index f2bd8fbf086..c40b9290208 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -59,7 +59,7 @@ method: default: trapezoidal {% endconfiguration %} -If 'unit' is set then 'unit_prefix' and 'unit_time' are ignored. +In case you have an appliance which produces 'spikey' consumption (like an on/off electrical boiler) you should opt for the left method I order to get accurate readings. 'unit' is set then 'unit_prefix' and 'unit_time' are ignored. ## Energy From d3eb43dde3191b435191c09e3f5e2c0764c21151 Mon Sep 17 00:00:00 2001 From: Kyle McNally Date: Fri, 27 Dec 2019 10:04:17 -0500 Subject: [PATCH 133/236] Update discovery.markdown (#11544) Spelling Error --- source/_integrations/discovery.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index 933320e1a5b..3b08c0c1d9c 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -47,7 +47,7 @@ Zeroconf discoverable integrations [Axis](/integrations/axis/)/[ESPHome](/integr
-`discovery` is included in the defalult configuration. To load this component manually, add the following lines to your `configuration.yaml` file: +`discovery` is included in the default configuration. To load this component manually, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From 22cc5201601839f09e93a95164297152350063f8 Mon Sep 17 00:00:00 2001 From: Kyle McNally Date: Fri, 27 Dec 2019 12:34:05 -0500 Subject: [PATCH 134/236] Update wwlln.markdown (#11545) * Update wwlln.markdown * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/wwlln.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/wwlln.markdown b/source/_integrations/wwlln.markdown index e9ef0048341..c5720cf57a7 100644 --- a/source/_integrations/wwlln.markdown +++ b/source/_integrations/wwlln.markdown @@ -65,7 +65,7 @@ the standard ones: | latitude | Latitude of the lightning strike. | | longitude | Longitude of the lightning strike. | | source | `wwlln` to be used in conjunction with the `geo_location` automation trigger. | -| external_id | The external ID used in the feed to identify the earthquake in the feed. | +| external_id | The external ID used in the feed to identify the lightning strike in the feed. | | publication_date | Date and time when this event occurred. | ## Full Configuration From 8054e564a980c5a2f7cf13c7a15d03b37fe88c6f Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Fri, 27 Dec 2019 22:39:01 +0100 Subject: [PATCH 135/236] Update style (#11546) --- source/_integrations/integration.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index c40b9290208..34d2859b897 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -10,7 +10,7 @@ logo: integral.png ha_qa_scale: internal --- -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. The integration sensors is updated upon changes of the the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. +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. The integration sensors is updated upon changes of the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. ## Configuration @@ -25,7 +25,7 @@ sensor: {% configuration %} source: - description: The entity ID of the sensor providing numeric readings + description: The entity ID of the sensor providing numeric readings. required: true type: string name: @@ -39,27 +39,27 @@ round: default: 3 type: integer unit_prefix: - description: Metric unit to prefix the integration result. Available units are k, M, G, T. + description: "Metric unit to prefix the integration result. Available units are `k`, `M`, `G` and `T`." required: false default: None type: string unit_time: - description: SI unit of time to integrate over. Available units are s, min, h, d. + description: "SI unit of time to integrate over. Available units are `s`, `min`, `h` and `d`." required: false default: h type: string unit: - description: Unit of Measurement to be used for the integration. + description: Unit of measurement to be used for the integration. required: false type: string method: - description: Riemann sum method to be used. Available methods are trapezoidal, left, right. + description: Riemann sum method to be used. Available methods are `trapezoidal`, `left` and `right`." required: false type: string default: trapezoidal {% endconfiguration %} -In case you have an appliance which produces 'spikey' consumption (like an on/off electrical boiler) you should opt for the left method I order to get accurate readings. 'unit' is set then 'unit_prefix' and 'unit_time' are ignored. +In case you have an appliance which produces spikey consumption (like an on/off electrical boiler) you should opt for the `left` method to get accurate readings. If `unit` is set then `unit_prefix` and `unit_time` are ignored. ## Energy From 68c0c82f24d7e68ce3526e85f851e348b35345ad Mon Sep 17 00:00:00 2001 From: Kevin Haffner Date: Sat, 28 Dec 2019 10:07:46 +0100 Subject: [PATCH 136/236] Specify Raspberry Pi version (#11548) Raspberry Pi 4 has gigabit ethernet --- source/_integrations/fastdotcom.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index ba875c36483..079ab1dc0d4 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -75,6 +75,6 @@ action: ## Notes -- When running on Raspberry Pi, the maximum speed is limited by its 100 Mbit/s LAN adapter. +- When running on Raspberry Pi 3 or older, the maximum speed is limited by its 100 Mbit/s LAN adapter. - The sensor will return the maximum measured speed during a 15-second test. - Speed tests consume data depending on your internet speed, make sure to consider this if your internet connection has limited bandwidth. From b5a2b12f3beaeb398ed17d4f5732912506ccfdba Mon Sep 17 00:00:00 2001 From: bkcberry Date: Sat, 28 Dec 2019 03:08:17 -0600 Subject: [PATCH 137/236] added build-essential to the ubuntu prerequisites (#11547) --- source/_docs/z-wave/installation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index d8c0842ea06..095956822ae 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -153,7 +153,7 @@ On the Raspberry Pi you will need to enable the serial interface in the `raspi-c On Debian Linux platforms there are dependencies you will need to have installed ahead of time (included in `systemd-devel` on Fedora/RHEL systems): ```bash -$ sudo apt-get install libudev-dev +$ sudo apt-get install libudev-dev build-essential ``` You may also have to install the Python development libraries for your version of Python. For example `libpython3.6-dev`, and possibly `python3.6-dev` if you're using Python 3.6. From 0cb2421c2d92352905855b987cc1d49882bcafb2 Mon Sep 17 00:00:00 2001 From: Mark Lopez Date: Sat, 28 Dec 2019 05:05:27 -0600 Subject: [PATCH 138/236] Html5 push docs (#11549) * Improved html5 docs around domain verification. * Minor change Co-authored-by: Fabian Affolter --- source/_integrations/html5.markdown | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index 97ab7cdb13d..bbd852874d9 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -54,15 +54,15 @@ name: type: string default: notify vapid_pub_key: - description: The VAPID public key generated by Google (this is the key that is immediately visible under "webpush certificates"). + description: The VAPID public key generated by Google (this is the key that is immediately visible under "webpush certificates"), [see configuring the platform](#configuring_the_platform). required: true type: string vapid_prv_key: - description: The VAPID private key generated by Google. + description: The VAPID private key generated by Google, [see configuring the platform](#configuring_the_platform). required: true type: string vapid_email: - description: The e-mail account associated with your Firebase project. + description: The e-mail account associated with your Firebase project, [see configuring the platform](#configuring_the_platform). required: true type: string gcm_api_key: @@ -80,7 +80,7 @@ gcm_sender_id: The `html5` platform can only function if all of the following requirements are met: * You are using Chrome and/or Firefox on any desktop platform, ChromeOS or Android. -* Your Home Assistant instance is accessible from outside your network over HTTPS. +* Your Home Assistant instance is accessible from outside your network over HTTPS or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. * If using a proxy, HTTP basic authentication must be off for registering or unregistering for push notifications. It can be re-enabled afterwards. * If you don't run Hass.io: `pywebpush` must be installed. `libffi-dev`, `libpython-dev` and `libssl-dev` must be installed prior to `pywebpush` (i.e. `pywebpush` probably won't automatically install). * You have configured SSL/TLS for your Home Assistant. It doesn't need to be configured in Home Assistant though, e.g., you can be running [NGINX](/ecosystem/nginx/) in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e. not self signed). @@ -88,13 +88,13 @@ The `html5` platform can only function if all of the following requirements are ### Configuring the platform -1. Make sure you can access your Home Assistant installation from outside your network over HTTPS ([see docs](/docs/configuration/remote/)). -2. Create a new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard). +1. Make sure you can access your Home Assistant installation from outside your network over HTTPS ([see docs](/docs/configuration/remote/)) or can perform an alternative [Domain Name Verification Method](https://support.google.com/webmasters/answer/9008080#domain_name_verification) on the domain used by Home Assistant. +2. Create a new project at [https://console.cloud.google.com/home/dashboard](https://console.cloud.google.com/home/dashboard), this project will be imported into Firebase later (alternatively, the project can also be created during step 4). 3. Go to [https://console.cloud.google.com/apis/credentials/domainverification](https://console.cloud.google.com/apis/credentials/domainverification) and verify your domain via Google Webmaster Central / Search Console - [see below](#verify-your-domain). 4. With the domain verified, go to [https://console.firebase.google.com](https://console.firebase.google.com), select import Google project and select the project you created. 5. Then, click the cogwheel on top left and select "Project settings". 6. Select 'Cloud Messaging' tab. -7. Generate a new key pair under the Web configuration listing at the bottom of the page. To view the private key click the three dots to the right and 'Show private key'. +7. Generate a new key pair under the Web configuration listing at the bottom of the page. To view the private key click the three dots to the right and 'Show private key'. ### Setting up your browser From 95b2141bd7d8dca565172763af478220e4157b35 Mon Sep 17 00:00:00 2001 From: Chris Hasenpflug <35075+chrishas35@users.noreply.github.com> Date: Sat, 28 Dec 2019 09:47:19 -0600 Subject: [PATCH 139/236] Correct typo in MQTT Certificate docs (#11552) --- source/_docs/mqtt/certificate.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/mqtt/certificate.markdown b/source/_docs/mqtt/certificate.markdown index 86225053aca..a1dc43c41a6 100644 --- a/source/_docs/mqtt/certificate.markdown +++ b/source/_docs/mqtt/certificate.markdown @@ -16,7 +16,7 @@ mqtt: {% configuration %} certificate: - description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. To enable a secure (TLS) connection to your server you must define the 'certitificate' configuration parameter. 'auto' uses the certifite CAs bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`." + description: "'auto' or the certificate authority certificate file that is to be treated as trusted by this client. To enable a secure (TLS) connection to your server you must define the 'certificate' configuration parameter. 'auto' uses the certifite CAs bundled certificates. If a file is specified the file should contain the root certificate of the certificate authority that signed your broker's certificate, but may contain multiple certificates. Example: `/home/user/identrust-root.pem`." required: false type: string client_key: From be1a66b43c0a59e68412bd1a27afdead1060276e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 28 Dec 2019 22:18:01 +0100 Subject: [PATCH 140/236] Release 0.103.5 (#11556) --- _config.yml | 4 ++-- source/_posts/2019-12-11-release-103.markdown | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index d4725650dfe..89d27b569a1 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 103 -current_patch_version: 4 -date_released: 2019-12-22 +current_patch_version: 5 +date_released: 2019-12-28 # 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-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index 0df2480bf89..8db433707b2 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -334,6 +334,14 @@ All services for use in Home Assistant are moved to their integration naming spa [seven_segments docs]: /integrations/seven_segments/ [tensorflow docs]: /integrations/tensorflow/ +## Release 0.103.5 - December 28 + +- Bump ring to 0.2.8 to fix Oauth issues ([@tchellomello] - [#30245]) ([ring docs]) + +[#30245]: https://github.com/home-assistant/home-assistant/pull/30245 +[@tchellomello]: https://github.com/tchellomello +[ring docs]: /components/ring/ + ## 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). From c903c60eee14b6bc3f8ff2d5bc772d2232dfe878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Mon, 30 Dec 2019 10:55:11 +0200 Subject: [PATCH 141/236] RFLink now supports * and ? anywhere in ignore_devices strings (#11559) --- source/_integrations/rflink.markdown | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index de5e8f0bfb4..a5fc69a9055 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -48,7 +48,7 @@ wait_for_ack: default: true type: boolean ignore_devices: - description: List of device id's to ignore. Supports wildcards (`*`) at the end. + description: List of device id's to ignore. Supports wildcards (`*`, `?`). required: false type: [list, string] reconnect_interval: @@ -137,10 +137,6 @@ rflink: This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`. -
-Wildcards only work at the end of the ID, not in the middle or front! -
- ### Device support Even though a lot of devices are supported by RFLink, not all have been tested/implemented. If you have a device supported by RFLink but not by this integration please consider testing and adding support yourself. From 594c6458b9c6f440785984bf254570c40f67c9ca Mon Sep 17 00:00:00 2001 From: Jc2k Date: Mon, 30 Dec 2019 08:55:52 +0000 Subject: [PATCH 142/236] Mention support for smoke sensors (#11560) --- source/_integrations/homekit_controller.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 05c90c88149..0995d68656b 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -32,7 +32,7 @@ There is currently support for the following device types within Home Assistant: - Light (HomeKit lights) - Lock (HomeKit lock) - Switch (HomeKit switches) -- Binary Sensor (HomeKit motion sensors and contact sensors) +- Binary Sensor (HomeKit motion, contact and smoke sensors) - Sensor (HomeKit humidity, temperature, co2 and light level sensors) HomeKit IP accessories for these device types may work with some caveats: From a4871be308f6205178a43bdc1929dddf13361a85 Mon Sep 17 00:00:00 2001 From: Andrew Jackson Date: Mon, 30 Dec 2019 08:56:54 +0000 Subject: [PATCH 143/236] Update transmission.markdown (#11561) Corrected Sensors & Switches sections. All are prefixed with transmission_ and on_off has changed to transmission_switch. --- source/_integrations/transmission.markdown | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index dd8455037c5..8f0640beb9a 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -70,18 +70,18 @@ scan_interval: The Transmission Integration will add the following sensors and switches. Sensors: -- current_status: The status of your Transmission daemon. -- download_speed: The current download speed [MB/s]. -- upload_speed: The current upload speed [MB/s]. -- active_torrents: The current number of active torrents. -- paused_torrents: The current number of paused torrents. -- total_torrents: The total number of torrents present in the client. -- started_torrents: The current number of started torrents (downloading). -- completed_torrents: The current number of completed torrents (seeding) +- transmission_current_status: The status of your Transmission daemon. +- transmission_download_speed: The current download speed [MB/s]. +- transmission_upload_speed: The current upload speed [MB/s]. +- transmission_active_torrents: The current number of active torrents. +- transmission_paused_torrents: The current number of paused torrents. +- transmission_total_torrents: The total number of torrents present in the client. +- transmission_started_torrents: The current number of started torrents (downloading). +- transmission_completed_torrents: The current number of completed torrents (seeding) Switches: -- on_off: A switch to start/stop all torrents -- turtle_mode: A switch to enable turtle mode. +- transmission_switch: A switch to start/stop all torrents +- transmission_turtle_mode: A switch to enable turtle mode. ## Event Automation From 9d0fef4eb6bcba0dd66536e874e48af962f2e870 Mon Sep 17 00:00:00 2001 From: Luke Pomfrey Date: Mon, 30 Dec 2019 08:58:44 +0000 Subject: [PATCH 144/236] =?UTF-8?q?Clarification=20on=20external=20access?= =?UTF-8?q?=20for=20Alexa=20intents=20and=20smart=20h=E2=80=A6=20(#11555)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clarifies that your Home Assistant instance must be accessible from the internet via HTTPS on port 443, using a valid certificate to use account linking. --- source/_integrations/alexa.intent.markdown | 7 ++++--- source/_integrations/alexa.smart_home.markdown | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown index c5f34e5bd08..f67737a01f9 100644 --- a/source/_integrations/alexa.intent.markdown +++ b/source/_integrations/alexa.intent.markdown @@ -19,7 +19,7 @@ The built-in Alexa integration allows you to integrate Home Assistant into Alexa - Amazon Developer Account. You can sign on [here](https://developer.amazon.com). - An [AWS account](https://aws.amazon.com/free/) is need if you want to use Alexa Custom Skill API. Part of your Alexa Custom Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However you don't need worry the cost, AWS Lambda allow free to use up to 1 millions requests and 1GB outbound data transfer per month. -- The Alexa Custom Skill API also needs your Home Assistant instance can be accessed from Internet. We strongly suggest you host HTTPS server and use validation certificate. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- The Alexa Custom Skill API also needs your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport), this is so account linking can take place. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. ### Create Your Amazon Alexa Custom Skill @@ -94,8 +94,9 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Find the skill you just created and click `Edit` in the `Actions` column. - Click `ACCOUNT LINKING` in the left navigation bar of build page - Input all information required. Assuming your Home Assistant can be accessed by https://[YOUR HOME ASSISTANT URL:PORT] - * `Authorization URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize - * `Access Token URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/token + * `Authorization URI`: https://[YOUR HOME ASSISTANT URL]/auth/authorize + * `Access Token URI`: https://[YOUR HOME ASSISTANT URL]/auth/token + - Note: you must use a valid/trusted SSL Certificate and port 443 for account linking to work * `Client ID`: - https://pitangui.amazon.com/ if you are in US - https://layla.amazon.com/ if you are in EU diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index e68f75e19cd..0d016189628 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -37,7 +37,7 @@ For Home Assistant Cloud Users, documentation can be found [here](https://www.na - Amazon Developer Account. You can sign on [here](https://developer.amazon.com). - An [AWS account](https://aws.amazon.com/free/) is need if you want to use Smart Home Skill API. Part of your Smart Home Skill will be hosted on [AWS Lambda](https://aws.amazon.com/lambda/pricing/). However you don't need worry the cost, AWS Lambda allow free to use up to 1 millions requests and 1GB outbound data transfer per month. -- Smart Home API also needs your Home Assistant instance can be accessed from Internet. We strongly suggest you host HTTPS server and use validation certificate. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. +- The Smart Home API also needs your Home Assistant instance to be accessible from the internet via HTTPS on port 443 using a certificate signed by [an Amazon approved certificate authority](https://ccadb-public.secure.force.com/mozilla/IncludedCACertificateReport), this is so account linking can take place. Read more on [our blog](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) about how to set up encryption for Home Assistant. When running Hass.io using the [Duck DNS](/addons/duckdns/) add-on is the easiest method. ### Create Your Amazon Alexa Smart Home Skill @@ -171,8 +171,8 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom - Find the skill you just created, click `Edit` link in the `Actions` column. - Click `ACCOUNT LINKING` in the left navigation bar of build page - Input all information required. Assuming your Home Assistant can be accessed by https://[YOUR HOME ASSISTANT URL:PORT] - * `Authorization URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/authorize - * `Access Token URI`: https://[YOUR HOME ASSISTANT URL:PORT]/auth/token + * `Authorization URI`: https://[YOUR HOME ASSISTANT URL]/auth/authorize + * `Access Token URI`: https://[YOUR HOME ASSISTANT URL]/auth/token - Note: you must use a valid/trusted SSL Certificate and port 443 for account linking to work * `Client ID`: - https://pitangui.amazon.com/ if you are in US From 4e4245df33ef78438d8d69f07fa757d42878787c Mon Sep 17 00:00:00 2001 From: Geoff Pursell Date: Mon, 30 Dec 2019 03:00:35 -0600 Subject: [PATCH 145/236] Cleanup, doc hierarchy, and ordering (#11562) * Cleanup, doc hierarchy, and ordering Hierarchical headings for TV support, working, not working lists, put naming info first to assist with finding your TV on the list * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/samsungtv.markdown | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 9ffd7b3e2ea..26fd4920b91 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -55,7 +55,17 @@ broadcast_address: type: string {% endconfiguration %} -Currently known supported models: +### Supported models + +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.io/tree/current/source/_integrations/samsungtv.markdown). + +#### Naming + +The first letter (U, P, L, H & K) represent the screen type, e.g., LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. If you add your model remember to remove these first 4 characters before adding to the list. + +For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North American, 55 inch TV, and the model number listed below would be the remainder: `NU7100`. + +#### Models tested and working - C7700 - D5500 @@ -103,7 +113,7 @@ Currently known supported models: - UE49KU6470 (port must be set to 8001, On/Off, Forward/Backward, Volume are OK, but no Play button) - UE46ES5500 (partially supported, turn on doesn't works) -Currently tested but not working models: +#### Models tested but not yet working - J5200 - Unable to see state and unable to control - J5500 - State is always "on" and unable to control (but port 8001 *is* open) @@ -125,10 +135,9 @@ Currently tested but not working models: None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, since Samsung have used a different (encrypted) type of interface for these. -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.io/tree/current/source/_integrations/samsungtv.markdown). -The first letter (U, P, L, H & K) represent the screen type, e.g., LED or Plasma. The second letter represents the region, E is Europe, N is North America and A is Asia & Australia. The two numbers following that represent the screen size. -If you add your model remember to remove these first 4 characters before adding to the list. +### Usage + +#### Changing channels Changing channels can be done by calling the `media_player.play_media` service with the following payload: @@ -140,8 +149,9 @@ with the following payload: "media_content_type": "channel" } ``` +#### Selecting a source -Currently the ability to select a source is not implemented. +Source selection is not yet implemented. ### Hass.io From 412455943597a3c8710aed90601f139dbee81805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emil=20H=C3=B8rlyck?= Date: Mon, 30 Dec 2019 10:01:00 +0100 Subject: [PATCH 146/236] Linked to SimpliSafe website (#11563) Added inline link to SimpliSafe website to show their lock. --- source/_integrations/simplisafe.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index f3fd0b49cd1..f8070448b9b 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -8,7 +8,7 @@ ha_category: - Lock --- -The `simplisafe` integration integrates SimpliSafe home security (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. +The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com/smart-lock) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. There is currently support for the following device types within Home Assistant: From c7dc9b86a2e13042cca26170f65ff87d69a94eb0 Mon Sep 17 00:00:00 2001 From: SukramJ Date: Mon, 30 Dec 2019 10:09:48 +0100 Subject: [PATCH 147/236] Add TM to Homematic IP Cloud (#11551) --- source/_integrations/homematicip_cloud.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index f98fb019127..bb9e698a9ff 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -123,6 +123,7 @@ Within this delay the device registration should be completed in the App, otherw * Shutter actuator for flush-mount (*HmIP-FROLL*) * Blind Actuator for brand switches (*HmIP-BBL*) * Blind Actuator for flush-mount (*HmIP-FBL*) + * Garage door module for Tormatic (*HmIP-MOD_TM*) * homematicip_cloud.light * Switch actuator and meter for brand switches (*HmIP-BSM*) From 4f88bf1ef5561fc2a2c323884b7610ce697ce329 Mon Sep 17 00:00:00 2001 From: Rudertier <19547127+Rudertier@users.noreply.github.com> Date: Mon, 30 Dec 2019 12:55:42 +0100 Subject: [PATCH 148/236] Update rmvtransport.markdown (#11568) --- source/_integrations/rmvtransport.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown index c8d8b33db3b..dfe20a02f96 100644 --- a/source/_integrations/rmvtransport.markdown +++ b/source/_integrations/rmvtransport.markdown @@ -59,9 +59,9 @@ next_departure: required: false type: [string, integer] products: - description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE']`." + description: "One or more modes of transport `['U-Bahn', 'Tram', 'Bus', 'S', 'RB', 'RE', 'EC', 'IC', 'ICE']`." required: false - default: ['U-Bahn', 'Tram', 'Bus', 'S-Bahn', 'RB', 'RE', 'EC', 'IC', 'ICE'] + default: ['U-Bahn', 'Tram', 'Bus', 'S', 'RB', 'RE', 'EC', 'IC', 'ICE'] type: [string] time_offset: description: Do not display departures leaving sooner than this number of minutes. Useful if you are a couple of minutes away from the stop. @@ -97,7 +97,7 @@ sensor: - 'RB' - 'RE' - 'Bus' - - 'S-Bahn' + - 'S' - station: 3006907 products: 'Bus' destinations: ['Wiesbaden Dernsches Gelände', 'Mainz Hauptbahnhof'] @@ -105,7 +105,7 @@ sensor: - station: 3006904 lines: 'S8' max_journeys: 5 - products: 'S-Bahn' + products: 'S' ``` The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away. From 25d9e68286e30cbb14774656f2da43c410b0312a Mon Sep 17 00:00:00 2001 From: Dan Jackson Date: Mon, 30 Dec 2019 12:35:19 -0800 Subject: [PATCH 149/236] =?UTF-8?q?Update=20trigger.markdown=20for=20consi?= =?UTF-8?q?stency=20with=20automation=5Fsun.ma=E2=80=A6=20(#11573)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Looks like a similar change was made to `automation_sun.markdown` in #10532, attributed to #10315. As someone trying to add an automation for the sun's elevation, the inconsistency was confusing. I don't know if other parts of this page should be updated in a similar way. --- source/_docs/automation/trigger.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 2be3ee4b435..448da488c73 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -216,7 +216,7 @@ automation: trigger: platform: numeric_state entity_id: sun.sun - value_template: "{{ state.attributes.elevation }}" + value_template: "{{ state_attr('sun.sun', 'elevation') }}" # Can be a positive or negative number below: -4.0 action: From 1a50ee649a4d499079b2241298aba867394a0493 Mon Sep 17 00:00:00 2001 From: Aaron Bach Date: Mon, 30 Dec 2019 14:27:36 -0700 Subject: [PATCH 150/236] Correct SimpliSafe website link (#11574) * Revert "Linked to SimpliSafe website (#11563)" This reverts commit 412455943597a3c8710aed90601f139dbee81805. * Revert "Revert "Linked to SimpliSafe website (#11563)"" This reverts commit a0543d47d71ce9cd961317dfb1337553ac8d6535. * Corrected link --- source/_integrations/simplisafe.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index f8070448b9b..40e6e089501 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -8,7 +8,7 @@ ha_category: - Lock --- -The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com/smart-lock) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. +The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. There is currently support for the following device types within Home Assistant: From 7adb9d0b27437209ecd0fc9511d71f8d9ea369c1 Mon Sep 17 00:00:00 2001 From: Patrick Smits Date: Mon, 30 Dec 2019 23:45:24 +0100 Subject: [PATCH 151/236] Update proxmoxve.markdown (#11576) Machine was misspelled --- source/_integrations/proxmoxve.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index 5cec938598b..dd997c31386 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -97,6 +97,6 @@ proxmoxve: ## Binary Sensor -The integration will automatically create a binary sensor for each tracked virtual machone or container. The binary sensor will either be on if the VM's state is running or off if the VM's state is different. +The integration will automatically create a binary sensor for each tracked virtual machine or container. The binary sensor will either be on if the VM's state is running or off if the VM's state is different. The created sensor will be called `binary_sensor.NODE_NAME_VMNAME_running`. From e2b183091072ab5d8aeb7e44f2f4fedc5aa1a57a Mon Sep 17 00:00:00 2001 From: Ronald Dehuysser Date: Tue, 31 Dec 2019 10:17:07 +0100 Subject: [PATCH 152/236] Update climate.markdown (#11575) --- source/_integrations/climate.markdown | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index de691fce92c..4a999999b29 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -28,7 +28,7 @@ Turn auxiliary heater on/off for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `aux_heat` | no | New value of auxiliary heater. #### Automation example @@ -53,7 +53,7 @@ reflecting a situation where the climate device is set to save energy. For examp | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `preset_mode` | no | New value of preset mode. #### Automation example @@ -76,7 +76,7 @@ Set target temperature of climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `temperature` | no | New target temperature for climate device (commonly referred to as a *setpoint*). Do not use if `hvac_mode` is `heat_cool`. | `target_temp_high` | yes | The highest temperature that the climate device will allow. Required if `hvac_mode` is `heat_cool`. | `target_temp_low` | yes | The lowest temperature that the climate device will allow. Required if `hvac_mode` is `heat_cool`. @@ -119,7 +119,7 @@ Set target humidity of climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `humidity` | no | New target humidity for climate device #### Automation example @@ -142,7 +142,7 @@ Set fan operation for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `fan_mode` | no | New value of fan mode #### Automation example @@ -165,7 +165,7 @@ Set climate device's HVAC mode | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `hvac_mode` | no | New value of HVAC mode #### Automation example @@ -188,7 +188,7 @@ Set swing operation mode for climate device | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. | `swing_mode` | no | New value of swing mode #### Automation example @@ -211,7 +211,7 @@ Turn climate device on. This is only supported if the climate device supports be | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. ### Service `climate.turn_off` @@ -219,4 +219,4 @@ Turn climate device off. This is only supported if the climate device has the hv | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. Targets all when omitted. +| `entity_id` | yes | String or list of strings that define the entity ID(s) of climate device(s) to control. To target all climate devices, use `all`. From 4edb0f7b84517f8effc0f42596ec41fffccc1e41 Mon Sep 17 00:00:00 2001 From: Panagiotis Panagiotopoulos Date: Tue, 31 Dec 2019 11:33:15 +0200 Subject: [PATCH 153/236] Entity_id isn't optional anymore at light.{turn_off/turn_on} (#11578) After #29178 entity_id isn't optional anymore. You have to use group.all_lights as entity_id. --- source/_integrations/light.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 0e623c64b0a..a72f02ed95b 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -24,7 +24,7 @@ Most lights do not support all attributes. You can check the integration documen | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all the lights use all as `entity_id`. | `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. | `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define an xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. | `hs_color` | yes | A list containing two floats representing the hue and saturation of the color you want the light to be. Hue is scaled 0-360, and saturation is scaled 0-100. @@ -82,7 +82,7 @@ Turns one or multiple lights off. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of lights. Else targets all. +| `entity_id` | no | String or list of strings that point at `entity_id`s of lights. To target all the lights use all as `entity_id`. | `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. ### Service `light.toggle` From e0636a3ef90d876f4743c1581fab2ea0afe68e25 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Tue, 31 Dec 2019 14:46:21 +0100 Subject: [PATCH 154/236] homematic: Add host port config documentation (#11498) --- source/_integrations/homematic.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index d6f587d5211..00c2f07a94f 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -133,6 +133,10 @@ host: description: IP address of CCU/Homegear device. required: true type: string +port: + description: "Port of CCU/Homegear XML-RPC Server. Wireless: 2001, wired: 2000, IP: 2010" + required: false + type: integer username: description: When fetching names via JSON-RPC, you need to specify a user with guest-access to the CCU. required: false @@ -172,6 +176,7 @@ homematic: hosts: ccu2: host: 127.0.0.1 + port: 2001 username: Admin password: secret From 3af6295867ea0d75e12271539ee1338e00151005 Mon Sep 17 00:00:00 2001 From: Phil Bruckner Date: Tue, 31 Dec 2019 08:24:02 -0600 Subject: [PATCH 155/236] Remove Amcrest deprecated sensors and switches (#11577) --- source/_integrations/amcrest.markdown | 28 --------------------------- 1 file changed, 28 deletions(-) diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index d5f9047eb76..49dab4ebbc3 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -7,7 +7,6 @@ ha_category: - Binary Sensor - Camera - Sensor - - Switch ha_iot_class: Local Polling ha_release: 0.49 --- @@ -19,7 +18,6 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor - Camera - Sensor -- Switch (deprecated) ## Configuration @@ -117,34 +115,12 @@ sensors: type: list default: None keys: - motion_detector: - description: > - Return `true`/`false` when motion is detected. - - **Note:** The motion_detector sensor is deprecated and will be removed in a future release. - Use **binary_sensors** option **motion_detected** instead. sdcard: description: Return the SD card usage by reporting the total and used space. ptz_preset: description: > Return the number of PTZ preset positions configured for the given camera. -switches: - description: > - Switches to display in the frontend. - - **Note:** Switches are deprecated and will be removed in a future release. - Use services and attributes instead. - - The following switches can be monitored: - required: false - type: list - default: None - keys: - motion_detection: - description: Enable/disable motion detection setting. - motion_recording: - description: Enable/disable recording on motion detection setting. control_light: description: > Automatically control the camera's indicator light, turning it on if the audio or video streams are enabled, and turning it off if both streams are disabled. @@ -254,7 +230,3 @@ amcrest: ``` To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. - -
-In previous versions, switch devices in setups with multiple cameras, would not have specific entity ID causing them to change randomly after each Home Assistant restart. The current version adds the name of the camera at the end of the switch entity ID, making it more specific and consistent and causes the name option to be required in a multi-camera system. This behavior matches the sensor behavior of the Amcrest component. Because of this, older automations may require updates to the entity ID. -
From cc2cf98fc829aa07259efe4058f7e420d5369261 Mon Sep 17 00:00:00 2001 From: Keith Bentrup Date: Wed, 1 Jan 2020 06:18:33 -0500 Subject: [PATCH 156/236] Remove bash prompt from shell commands to copy (#11588) By including the prompts in the shell commands, it breaks the copy/paste functionality provided on the webpage https://www.home-assistant.io/docs/installation/raspberry-pi/. I understand it was to indicate a change for the user but that should be in the surrounding text. --- source/_docs/installation/raspberry-pi.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index c1799b53744..89b92ca9428 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -67,22 +67,22 @@ cd /srv/homeassistant python3 -m venv . source bin/activate ``` -Once you have activated the virtual environment (notice the prompt change) you will need to run the following command to install a required python package. +Once you have activated the virtual environment (notice the prompt change to `(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $`) you will need to run the following command to install a required python package. ```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ python3 -m pip install wheel +python3 -m pip install wheel ``` Once you have installed the required python package it is now time to install Home Assistant! ```bash -(homeassistant) homeassistant@raspberrypi:/srv/homeassistant $ pip3 install homeassistant +pip3 install homeassistant ``` Start Home Assistant for the first time. This will complete the installation for you, automatically creating the `.homeassistant` configuration directory in the `/home/homeassistant` directory, and installing any basic dependencies. ```bash -(homeassistant) $ hass +hass ``` You can now reach your installation on your Raspberry Pi over the web interface on `http://ipaddress:8123`. From dde32d1d858d5aa91580bcb354a593d13c052681 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2020 14:03:17 +0100 Subject: [PATCH 157/236] Bump sinatra from 2.0.7 to 2.0.8 (#11590) Bumps [sinatra](https://github.com/sinatra/sinatra) from 2.0.7 to 2.0.8. - [Release notes](https://github.com/sinatra/sinatra/releases) - [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md) - [Commits](https://github.com/sinatra/sinatra/compare/v2.0.7...v2.0.8) Signed-off-by: dependabot-preview[bot] Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 12 +++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index e6f7c14f627..21a95182769 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,7 @@ group :jekyll_plugins do gem 'jekyll-commonmark', '1.3.1' end -gem 'sinatra', '2.0.7' +gem 'sinatra', '2.0.8' gem 'nokogiri', '1.10.7' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem diff --git a/Gemfile.lock b/Gemfile.lock index cb651a8c54d..fb8e7fa3903 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -70,7 +70,8 @@ GEM mercenary (0.3.6) mini_portile2 (2.4.0) multi_json (1.14.1) - mustermann (1.0.3) + mustermann (1.1.0) + ruby2_keywords (~> 0.0.1) nokogiri (1.10.7) mini_portile2 (~> 2.4.0) nokogiri (1.10.7-x64-mingw32) @@ -79,7 +80,7 @@ GEM forwardable-extended (~> 2.6) public_suffix (4.0.1) rack (2.0.8) - rack-protection (2.0.7) + rack-protection (2.0.8) rack rake (13.0.1) rb-fsevent (0.10.3) @@ -88,6 +89,7 @@ GEM rouge (3.13.0) ruby-enum (0.7.2) i18n + ruby2_keywords (0.0.1) safe_yaml (1.0.5) sass (3.4.25) sass-globbing (1.1.5) @@ -96,10 +98,10 @@ GEM ffi (~> 1.9) sassc (2.2.1-x64-mingw32) ffi (~> 1.9) - sinatra (2.0.7) + sinatra (2.0.8) mustermann (~> 1.0) rack (~> 2.0) - rack-protection (= 2.0.7) + rack-protection (= 2.0.8) tilt (~> 2.0) stringex (2.8.5) terminal-table (1.8.0) @@ -126,7 +128,7 @@ DEPENDENCIES nokogiri (= 1.10.7) rake (= 13.0.1) sass-globbing (= 1.1.5) - sinatra (= 2.0.7) + sinatra (= 2.0.8) stringex (= 2.8.5) tzinfo (~> 2.0) tzinfo-data From 0a7b70a189fcd536547e7276f79097dd8593f004 Mon Sep 17 00:00:00 2001 From: John Hollowell Date: Wed, 1 Jan 2020 08:38:52 -0500 Subject: [PATCH 158/236] Update ha-vs-hassio.markdown (#11586) --- source/_faq/ha-vs-hassio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_faq/ha-vs-hassio.markdown b/source/_faq/ha-vs-hassio.markdown index 6b6a8988c33..f83a3beb903 100644 --- a/source/_faq/ha-vs-hassio.markdown +++ b/source/_faq/ha-vs-hassio.markdown @@ -4,7 +4,7 @@ description: "Home Assistant vs. Hass.io" ha_category: Installation --- -Home Assistant is a Python program, in simple words. It can be run various operating system and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone [installation method](/docs/installation/). +Home Assistant is a Python program, in simple words. It can be run on various operating systems and provide the ability to track, control and automate your devices. When people talking about Home Assistant they usually refer to a standalone [installation method](/docs/installation/). [Hass.io](/hassio/) is a combination of Home Assistant and tools which allows one to run it easily on a Raspberry Pi and other platforms without setting up an operating system first. Hass.io is an all-in one-solution and has a management user interface that can be used from the Home Assistant frontend. This interface is not present in a standalone setup of Home Assistant. From f20728ef001763d2f09f148bfb60c753b9e2df8a Mon Sep 17 00:00:00 2001 From: Thiago Oliveira Date: Wed, 1 Jan 2020 10:52:26 -0800 Subject: [PATCH 159/236] Fix zwave control panel wiki (#11583) The **Entity Attrributes** button is actually named **Entity Information**. Also fixing the description on polling intensity to be a little clearer. --- source/_docs/z-wave/control-panel.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 5a516eaf494..d6ea9944505 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -78,11 +78,11 @@ Battery powered devices need to be awake before you can use the Z-Wave control p This is a dropdown where you can select all the entities of this node. Once selected you can then use: * **Refresh Entity** to refresh just that entity's values -* **Entity Attributes** to display the attributes of that entity (e.g., its friendly name, the ID of the node, etc) +* **Entity Information** to display the attributes of that entity (e.g., its friendly name, the ID of the node, etc) Here you can mark a device as requiring polling so the controller is aware of changes because the device doesn't send updates itself. Do see the information on [polling here](/docs/z-wave/devices/#polling), since excessive polling can break your Z-Wave network. -The **Polling intensity** says how many poll intervals does is this device polled on. For example, if you set 2 then it's polled on every second interval. +The **Polling intensity** says how many poll intervals this device is polled on. For example, if you set 2 then it's polled on every second interval. You can also exclude a Z-Wave devices from Home Assistant. You can do that if you have a device that you need to have on the Z-Wave network, but you don't want it to appear in Home Assistant, or if you've got a device that's failed and you're unable to exclude it. From 01f101ddbbf025c6be6837309e6b533e870c342b Mon Sep 17 00:00:00 2001 From: Roelof Schuiling Date: Thu, 2 Jan 2020 09:22:51 +0100 Subject: [PATCH 160/236] Improved wording for ModemManager troubleshooting (#11599) Users experiencing issues / interference by ModemManager are still commonly popping up in the forum. I changed the wording, so hopefully users will more easily recognize this applies to them. --- source/_docs/z-wave/installation.markdown | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 095956822ae..0c7a2228ce7 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -122,7 +122,7 @@ You can also check what hardware has been found using the [hassio command](/hass $ hassio hardware info ``` -If you did an alternative install on Linux then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled. Failure to do so will result in random failures of those components. For example you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager`. +If you did an alternative install of Hass.io on Linux (e.g. installing Ubuntu, then Docker, then Hass.io) then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled in the host OS. Failure to do so will result in random failures of those components, e.g. dead or unreachable Z-Wave nodes, most notably right after HomeAssistant restarts. Connect to your host OS via SSH, then you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` (commands are for Debian/Ubuntu). ### Docker @@ -215,13 +215,16 @@ ls /dev/cu.usbmodem* If your device path changes when you restart, see [this guide](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/) on fixing it. -## Ubuntu and Debian based host system +## Random unreachable Z-Wave nodes: ModemManager interference -If your instance is running on a Debian based system, e.g., Ubuntu, the ModemManager may cause unexpected issues. +If this applies to your situation: +- Some or all Z-Wave nodes are unreachable after restarting Home Assistant; not necessarily after every restart but seemingly random. +- The Z-Wave stick stops responding, needs to be re-plugged or Home Assistant needs a restart to get Z-Wave back. +- Your host OS is Debian-based/Ubuntu (for example: you installed Ubuntu, then Docker, then Hass.io). -The ModemManager might be claiming or interfering with a USB Z-Wave stick, like the much used Aeotec ones. If you experience issues where the stick stops responding, needs to be re-plugged or Home Assistant needs a restart to get Z-Wave back, chances are high that the ModemManager is causing the issue. +Then chances are high that the ModemManager in the host OS is causing the issue, claiming or interfering with the USB Z-Wave stick like the much used Aeotec ones. In this case you need to disable ModemManager. - Execute the following command on your host system to disable the ModemManager: +Connect to your host OS (e.g. Ubuntu) through SSH, then execute the following command on your host system to disable the ModemManager: ```bash systemctl disable ModemManager.service From 6effbe0f2df57fb3d623c2374a89a45827c92b66 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Thu, 2 Jan 2020 09:28:20 +0100 Subject: [PATCH 161/236] Add documentation for GIOS integration (#11162) * Add documentation for GIOS integration * Bump HA version --- source/_integrations/gios.markdown | 31 ++++++++++++++++++++++++ source/images/supported_brands/gios.png | Bin 0 -> 53546 bytes 2 files changed, 31 insertions(+) create mode 100644 source/_integrations/gios.markdown create mode 100644 source/images/supported_brands/gios.png diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown new file mode 100644 index 00000000000..f96d46261fc --- /dev/null +++ b/source/_integrations/gios.markdown @@ -0,0 +1,31 @@ +--- +title: "GIOŚ" +description: "Instructions on how to integrate GIOŚ (Polish Chief Inspectorate Of Environmental Protection) air quality service into Home Assistant." +logo: gios.png +ha_category: + - Health +ha_release: 0.104 +ha_iot_class: Cloud Polling +--- + +The `gios` integration uses the [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) web service as a source for air quality data for your location. + +## Setup + +To obtain `station_id` of the measuring station, go to [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) page, select the measuring station on the map and click the "More Info" link. The address of the opened page will look like this: `http://powietrze.gios.gov.pl/pjp/current/station_details/chart/291` and `291` will be `station_id` of measuring station. + +## Configuration + +To add GIOŚ to your installation, go to **Configuration** >> **Integrations** in the UI and enable the GIOŚ integration. + +{% configuration %} +name: + description: Manually specify Name. + required: false + type: string + default: GIOŚ +station_id: + description: Specify ID of the measuring station. + required: true + type: integer +{% endconfiguration %} \ No newline at end of file diff --git a/source/images/supported_brands/gios.png b/source/images/supported_brands/gios.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf74ab70d1995ed256ac1f4a1808769408edf42 GIT binary patch literal 53546 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 Date: Thu, 2 Jan 2020 09:28:51 +0100 Subject: [PATCH 162/236] Add light to velbus integration (#11581) --- source/_integrations/velbus.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index dd31e09655f..9600396318a 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -8,6 +8,7 @@ ha_category: - Climate - Sensor - Switch + - Light ha_iot_class: Local Push ha_release: "0.50" --- @@ -21,6 +22,7 @@ There is currently support for the following device types within Home Assistant: - Sensor - Switch - Cover +- Light ## Configuration @@ -35,7 +37,7 @@ velbus: port: 'PORT_STRING' ``` -## Port Sstring +## Port String The port string used in the user interface or the configuration file can have 2 formats: From b86b20e695bfb954fe8975efcb1212775313571e Mon Sep 17 00:00:00 2001 From: stappel Date: Thu, 2 Jan 2020 09:29:39 +0100 Subject: [PATCH 163/236] Added information to clarify options (#11580) * Added information to clarify options Added information to clarify options * Minor changes Co-authored-by: Fabian Affolter --- source/_integrations/synologydsm.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/synologydsm.markdown b/source/_integrations/synologydsm.markdown index 29c40eb41df..cad8a19a30d 100644 --- a/source/_integrations/synologydsm.markdown +++ b/source/_integrations/synologydsm.markdown @@ -29,7 +29,7 @@ sensor: {% configuration %} name: - description: The name of your device + description: The name to use in the frontend for your Synology device. required: false default: Synology DSM type: string @@ -56,11 +56,11 @@ ssl: default: true type: boolean volumes: - description: Array of volumes to monitor. Defaults to all volumes. + description: "Array of volumes to monitor. Defaults to all volumes. Replace any spaces in the volume name with underscores, e.g., `volume 1` with `volume_1`." required: false type: list disks: - description: Array of disks to monitor. Defaults to all disks. + description: "Array of disks to monitor. Defaults to all disks. Use only disk names like `sda`, `sdb`, etc." required: false type: list monitored_conditions: From 03dcf265635b9f80bb13f64c5fc0a81b22e8acec Mon Sep 17 00:00:00 2001 From: Jon Gilmore <7232986+JonGilmore@users.noreply.github.com> Date: Thu, 2 Jan 2020 02:30:54 -0600 Subject: [PATCH 164/236] example automation for hunter douglas scenes (#11592) --- .../_integrations/hunterdouglas_powerview.markdown | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 6a231a79af5..319742d7c76 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -24,3 +24,15 @@ address: required: true type: string {% endconfiguration %} + +## Example Automations + +``` yaml +- alias: "blinds closed at night" + trigger: + platform: time + at: "18:00:00" + action: + - service: scene.turn_on + entity_id: scene.10877 +``` From 14a6b3a10e607a733b90d4416cb9d99c1bc7214a Mon Sep 17 00:00:00 2001 From: omegacore Date: Thu, 2 Jan 2020 00:54:01 -0800 Subject: [PATCH 165/236] Alert users pymysql is not required for external MariaDB (#11527) * Update recorder.markdown * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/recorder.markdown | 37 +++++++++++++++----------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 875d26c90e0..6fe93a8a3f4 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -121,24 +121,25 @@ If you only want to hide events from your history, take a look at the [`history` Call the service `recorder.purge` to start a purge task which deletes events and states older than x days, according to `keep_days` service data. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) -| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `keep_days` | yes | The number of history days to keep in recorder database (defaults to the integration `purge_keep_days` configuration) | +| `repack` | yes | Rewrite the entire database, possibly saving some disk space. Only supported for SQLite and requires at least as much disk space free as the database currently uses. | ## Custom database engines -| Database engine | `db_url` | -| :---------------|:---------------------------------------------------------| -| SQLite | `sqlite:////PATH/TO/DB_NAME` | -| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | -| MariaDB         | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | -| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | -| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | -| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | -| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | -| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` | +| Database engine | `db_url` | +| :--------------------- | :------------------------------------------------------------------------------------------- | +| SQLite | `sqlite:////PATH/TO/DB_NAME` | +| MariaDB | `mysql+pymysql://SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB | `mysql+pymysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MariaDB (omit pymysql) | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://SERVER_IP/DB_NAME?charset=utf8` | +| MySQL | `mysql://user:password@SERVER_IP/DB_NAME?charset=utf8` | +| PostgreSQL | `postgresql://SERVER_IP/DB_NAME` | +| PostgreSQL | `postgresql://user:password@SERVER_IP/DB_NAME` | +| PostgreSQL (Socket) | `postgresql://@/DB_NAME` | +| MS SQL Server | `mssql+pyodbc://username:password@SERVER_IP/DB_NAME?charset=utf8;DRIVER={DRIVER};Port=1433;` |
@@ -148,6 +149,12 @@ Some installations of MariaDB/MySQL may require an ALTERNATE_PORT (3rd-party hos
+If using an external MariaDB backend (e.g., running on a separate NAS) with Home Assistant, you should omit `pymysql` from the URL. `pymysql` is not included in the base docker image, and is not necessary for this to work. + +
+ +
+ Unix Socket connections always bring performance advantages over TCP, if the database is on the same host as the `recorder` instance (i.e. `localhost`).
From 15914931fc83072c5826d6b6336b2f362cb66764 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2020 12:26:07 +0100 Subject: [PATCH 166/236] Bump sinatra from 2.0.8 to 2.0.8.1 (#11601) Bumps [sinatra](https://github.com/sinatra/sinatra) from 2.0.8 to 2.0.8.1. - [Release notes](https://github.com/sinatra/sinatra/releases) - [Changelog](https://github.com/sinatra/sinatra/blob/master/CHANGELOG.md) - [Commits](https://github.com/sinatra/sinatra/compare/v2.0.8...v2.0.8.1) Signed-off-by: dependabot-preview[bot] Co-authored-by: null <27856297+dependabot-preview[bot]@users.noreply.github.com> --- Gemfile | 2 +- Gemfile.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 21a95182769..bd668c466be 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,7 @@ group :jekyll_plugins do gem 'jekyll-commonmark', '1.3.1' end -gem 'sinatra', '2.0.8' +gem 'sinatra', '2.0.8.1' gem 'nokogiri', '1.10.7' # Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem diff --git a/Gemfile.lock b/Gemfile.lock index fb8e7fa3903..49dcc096717 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -80,7 +80,7 @@ GEM forwardable-extended (~> 2.6) public_suffix (4.0.1) rack (2.0.8) - rack-protection (2.0.8) + rack-protection (2.0.8.1) rack rake (13.0.1) rb-fsevent (0.10.3) @@ -98,10 +98,10 @@ GEM ffi (~> 1.9) sassc (2.2.1-x64-mingw32) ffi (~> 1.9) - sinatra (2.0.8) + sinatra (2.0.8.1) mustermann (~> 1.0) rack (~> 2.0) - rack-protection (= 2.0.8) + rack-protection (= 2.0.8.1) tilt (~> 2.0) stringex (2.8.5) terminal-table (1.8.0) @@ -128,7 +128,7 @@ DEPENDENCIES nokogiri (= 1.10.7) rake (= 13.0.1) sass-globbing (= 1.1.5) - sinatra (= 2.0.8) + sinatra (= 2.0.8.1) stringex (= 2.8.5) tzinfo (~> 2.0) tzinfo-data From ea749a53ba09c2576ff03987c5f521299392b655 Mon Sep 17 00:00:00 2001 From: Alexander Schneider Date: Thu, 2 Jan 2020 04:02:36 -0800 Subject: [PATCH 167/236] Update ZWave installation instructions (#11589) --- source/_docs/installation/freenas.markdown | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index b95d8ed5e66..78945280e6b 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -184,12 +184,17 @@ pkg install libudev-devd Then you can install the zwave package ```bash -pip3 install homeassistant-pyozw==0.1.4 +su homeassistant +cd /usr/local/share/homeassistant +source ./bin/activate.csh +pip3 install homeassistant-pyozw==0.1.7 +deactivate +exit ``` Stop the hass Jail ```bash -sudo iocage stop hass +sudo iocage stop HomeAssistant ``` Edit the devfs rules on the Freenas Host @@ -213,12 +218,12 @@ Set it to 7 Start the hass jail ```bash -sudo iocage start hass +sudo iocage start HomeAssistant ``` Connect to the hass jail and verify that you see the modem devices ```bash -sudo iocage console hass +sudo iocage console HomeAssistant ``` ```bash From ecd8c2c17de9a6fb657a96e5ce32765ce3301bc2 Mon Sep 17 00:00:00 2001 From: Josh Bendavid Date: Thu, 2 Jan 2020 07:03:41 -0500 Subject: [PATCH 168/236] Update webostv documentation (#11584) * Update webostv documentation Update webostv documentation following changes in https://github.com/home-assistant/home-assistant/pull/29296 * Update config file location * Remove reference to (not functional) auto-discovery * Add documentation for generic commands and buttons --- source/_integrations/webostv.markdown | 158 ++++++++++++-------------- 1 file changed, 70 insertions(+), 88 deletions(-) diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index e765f706a52..b5e903c33e9 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -16,13 +16,12 @@ There is currently support for the following device types within Home Assistant: - [Media Player](#media-player) - [Notifications](#notifications) -## Media Player To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](https://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). Once basic configuration is added to your `configuration.yaml` file. A notification should be visible in the frontend's **Notification** section. Follow the instructions and accept the pairing request on your TV. -Pairing information will be saved to the `filename:` provided in the configuration. This process is IP address-sensitive, in case the IP address of your TV would change in future. +Pairing information will be saved to a configuration file `webostv.conf` in the Home Assistant configuration directory. This process is IP address-sensitive, in case the IP address of your TV would change in future. ### Configuration @@ -30,28 +29,23 @@ To add a TV to your installation, add the following to your `configuration.yaml` ```yaml # Example configuration.yaml entry -media_player: - - platform: webostv +webostv: ``` {% configuration %} host: description: "The IP of the LG webOS Smart TV, e.g., `192.168.0.10`." - required: false + required: true type: string name: description: The name you would like to give to the LG webOS Smart TV. required: false type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." +standby_connection: + description: Keep connection alive when TV is in standby (this should be set to try if and only if the "Standby+" option is enabled in the TV UI.) required: false - type: string - default: webostv.conf -timeout: - description: The timeout for communication with the TV in seconds. - required: false - type: time + type: boolean + default: false turn_on_action: description: Defines an [action](/docs/automation/action/) to turn the TV on. required: false @@ -67,30 +61,30 @@ customize: type: list {% endconfiguration %} -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. - ### Example A full configuration example will look like the sample below: ```yaml # Example configuration.yaml entry +webostv: + host: 192.168.0.10 + name: Living Room TV + standby_connection: true + turn_on_action: + service: persistent_notification.create + data: + message: "Turn on action" + customize: + sources: + - livetv + - youtube + - makotv + - netflix + media_player: - - platform: webostv - host: 192.168.0.10 - name: Living Room TV - filename: webostv.conf - timeout: 5 - turn_on_action: - service: persistent_notification.create - data: - message: "Turn on action" - customize: - sources: - - livetv - - youtube - - makotv - - netflix + +notify: ``` Avoid using `[ ]` in the `name:` of your device. @@ -107,14 +101,17 @@ On newer models (2017+), WakeOnLan may need to be enabled in the TV settings by # Example configuration.yaml entry wake_on_lan: # enables `wake_on_lan` domain +webostv: + host: 192.168.0.10 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: "B4:E6:2A:1E:11:0F" + media_player: - - platform: webostv - host: 192.168.0.10 - #other settings - turn_on_action: - service: wake_on_lan.send_magic_packet - data: - mac: "B4:E6:2A:1E:11:0F" + +notify: ``` Any other [actions](/docs/automation/action/) to power on the device can be configured. @@ -154,61 +151,46 @@ The behaviour of the next and previous buttons is different depending on the act - if the source is 'LiveTV' (television): next/previous buttons act as channel up/down - otherwise: next/previous buttons act as next/previous track +### Generic commands and buttons + +Available services: `button`, `command` + +#### Service `webostv.button` + +| Service data attribute | Optional | Description | +|------------------------|----------|---------------------------------------------------------| +| `entity_id` | no | Target a specific webostv media player. | +| `button` | no | Name of the button. Known possible values are `LEFT`, `RIGHT`, `DOWN`, `UP`, `HOME`, `BACK`, `ENTER`, `DASH`, `INFO`, `ASTERISK`, `CC`, `EXIT`, `MUTE`, `RED`, `GREEN`, `BLUE`, `VOLUMEUP`, `VOLUMEDOWN`, `CHANNELUP`, `CHANNELDOWN`, `0`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9` | + +#### Service `webostv.command` + +| Service data attribute | Optional | Description | +|------------------------|----------|---------------------------------------------------------| +| `entity_id` | no | Target a specific webostv media player. | +| `command` | no | Endpoint for the command, e.g. `media.controls/rewind`. The full list of known endpoints is available at https://github.com/bendavid/aiopylgtv/blob/master/aiopylgtv/endpoints.py | + +#### Example + +``` +script: + home_button: + sequence: + - service: webostv.button + data: + entity_id: media_player.lg_webos_smart_tv + button: "HOME" + + rewind_command: + sequence: + - service: webostv.command + data: + entity_id: media_player.lg_webos_smart_tv + command: "media.controls/rewind" +``` ## Notifications The `webostv` notify platform allows you to send notifications to a LG webOS Smart TV. -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. - -To add a TV to your installation, add the following to your `configuration.yaml` file and follow the configurator instructions: - -```yaml -# Example configuration.yaml entry -notify: - - platform: webostv - host: 192.168.0.112 - name: livingroom_tv - filename: webostv.conf -``` - -{% configuration %} -host: - description: The IP of the LG webOS Smart TV, e.g., 192.168.0.10 - required: true - type: string -name: - description: The name you would like to give to the LG webOS Smart TV. - required: true - type: string -filename: - description: "The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. **NOTE**: When using multiple TVs each TV will need its own unique file." - required: false - type: string - default: webostv.conf -icon: - description: The path to an image file to use as the icon in notifications. - required: false - type: [string, icon] -{% endconfiguration %} - -A possible automation could be: - -{% raw %} -```yaml -# Example configuration.yaml entry -automation: - - alias: Open a window - trigger: - platform: numeric_state - entity_id: sensor.netatmo_livingroom_co2 - above: 999 - action: - service: notify.livingroom_tv - data: - message: "You should open a window! (Livingroom Co2: {{ states('sensor.netatmo_livingroom_co2') }}ppm)" -``` -{% endraw %} - The icon can be overridden for individual notifications by providing a path to an alternative icon image to use: ```yaml From 19562e20f41d00899a6e39a5436e1c440ecabeea Mon Sep 17 00:00:00 2001 From: Alan Tse Date: Thu, 2 Jan 2020 04:04:19 -0800 Subject: [PATCH 169/236] Add charging rate sensor. (#11567) --- source/_integrations/tesla.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index 9d7d528f1c7..5066a8f2145 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -19,7 +19,7 @@ The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.c This integration provides the following platforms: - Binary sensors - such as parking and charger connection. -- Sensors - such as Battery level, Inside/Outside temperature, odometer, and estimated range. +- Sensors - such as Battery level, Inside/Outside temperature, odometer, estimated range, and charging rate. - Device tracker - to track location of your car - Lock - Door lock. Enables you to control Tesla's door lock - Climate - HVAC control. Allow you to control (turn on/off, set target temperature) your Tesla's HVAC system. From 472a07be3de885dc2844fe691b99db3736c7219a Mon Sep 17 00:00:00 2001 From: Issac Date: Thu, 2 Jan 2020 14:17:01 +0200 Subject: [PATCH 170/236] Added local_ip integration (#11466) * Added localip component * Apply suggestions from code review Co-Authored-By: Klaas Schoute * :pencil2: Tweak * Rename localip to local_ip. Add config entry * Update release and description Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof Co-authored-by: Fabian Affolter --- source/_integrations/local_ip.markdown | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 source/_integrations/local_ip.markdown diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown new file mode 100644 index 00000000000..ad76ff1ec75 --- /dev/null +++ b/source/_integrations/local_ip.markdown @@ -0,0 +1,28 @@ +--- +title: "Local IP Address" +description: "Instructions on how to integrate the Local IP Address sensor into Home Assistant." +logo: home-assistant.png +ha_category: + - Network +ha_iot_class: Local Polling +ha_release: 0.105 +--- + +The `local_ip` sensor will expose the local (LAN) IP address of your Home Assistant instance. This can be useful when your instance has a static public hostname (for example, if you use the Nabu Casa service), but have a dynamically allocated local LAN address (for example, configured via DHCP). + +The sensor can be added via the user interface or using the `configuration.yaml` file. To enable this sensor, via the `configuration.yaml` file, add the following minimal configuration: + +```yaml +# Example configuration.yaml entry +local_ip: +``` + +To configure via the user interface, select the `Local IP Address` integration. + +{% configuration %} +name: + description: Friendly name of the sensor. + required: false + type: string + default: local_ip +{% endconfiguration %} From 875918c6a209b498ec48e237eb6ab6255aedef8d Mon Sep 17 00:00:00 2001 From: Josh Bendavid Date: Fri, 3 Jan 2020 04:12:56 -0500 Subject: [PATCH 171/236] Document denonavr generic commands (#11598) * Document denonavr generic commands * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/denonavr.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index d2cc4a62955..8c726d5428f 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -94,4 +94,14 @@ A few notes: - To remotely power on Marantz receivers with Home Assistant, the Auto-Standby feature must be enabled in the receiver's settings. - Sound mode: The command to set a specific sound mode is different from the value of the current sound mode reported by the receiver (sound_mode_raw). There is a key-value structure (sound_mode_dict) that matches the raw sound mode to one of the possible commands to set a sound mode (for instance {'MUSIC':['PLII MUSIC']}. If you get a "Not able to match sound mode" warning, please open an issue on the [denonavr library](https://github.com/scarface-4711/denonavr), stating which raw sound mode could not be matched so it can be added to the matching dictionary. You can find the current raw sound mode under "Development Tools/States" in the front panel. + +#### Service `denonavr.get_command` + +Generic commands are supported, in particular, any command supported by the telnet protocol can be sent to `/goform/formiPhoneAppDirect.xml`, e.g., `/goform/formiPhoneAppDirect.xml?VSMONI2` to switch HDMI outputs on supported receivers. IR remote codes can also be sent to this endpoint, e.g. "/goform/formiPhoneAppDirect.xml?RCKSK0410370" as a mute toggle. A comprehensive list of telnet protocol commands is available at https://ca.denon.com/ca/product/hometheater/receivers/avrx4400h?docname=AVR-X6400H_X4400H_X3400H_X2400H_X1400H_S930H_S730H_PROTOCOL_V01.xlsx and a full list of IR codes at http://www.denon-hifi.nl/uk/product/hometheater/avreceivers/avr3313?docname=AVR3313_IR_CODE_V01.pdf + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------------- | +| `entity_id` | no | Name of entity to send command to. For example `media_player.marantz`| +| `command` | no | Command to send to device, e.g. `/goform/formiPhoneAppDirect.xml?VSMONI2`| + [Denon]: /integrations/denon From 58b4c774b4c37aa1a0da4749dfbbf4dc29f0f875 Mon Sep 17 00:00:00 2001 From: John Hollowell Date: Fri, 3 Jan 2020 05:00:38 -0500 Subject: [PATCH 172/236] Update stream.markdown (#11612) integration doesn't do any replacements in the filename, so removed ambiguous/incorrect section --- source/_integrations/stream.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index 3b581f5e48c..e98e8a42a6a 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -33,7 +33,7 @@ Both `duration` and `lookback` options are suggestions, but should be consistent | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `stream_source` | no | The input source for the stream, e.g., `rtsp://my.stream.feed:554`. | -| `filename` | no | The file name string. Variable is `entity_id`, e.g., `/tmp/my_stream.mp4`. | +| `filename` | no | The file name string. e.g., `/tmp/my_stream.mp4`. | | `duration` | yes | Target recording length (in seconds). Default: 30 | | `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream for `stream_source`. Default: 0 | From 650b674c01f09f7e16609627ad4c8376d698575f Mon Sep 17 00:00:00 2001 From: Ronald Dehuysser Date: Fri, 3 Jan 2020 11:10:42 +0100 Subject: [PATCH 173/236] entity_id is not optional anymore - Media_player services (#11609) --- source/_integrations/media_player.markdown | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 3570768d7b1..43a14095c69 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -17,34 +17,34 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | | ---------------------- | -------- | ------------------------------------------------ | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | #### Service `media_player.volume_mute` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `is_volume_muted` | no | True/false for mute/unmute | #### Service `media_player.volume_set` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | yes | Target a specific media player. To target all media players, use `all`. | | `volume_level` | no | Float for volume level. Range 0..1 | #### Service `media_player.media_seek` | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------------| -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `seek_position` | no | Position to seek to. The format is platform dependent. | #### Service `media_player.play_media` | Service data attribute | Optional | Description | | -----------------------| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `media_content_id` | no | A media identifier. The format of this is integration dependent. For example, you can provide URLs to Sonos and Cast but only a playlist ID to iTunes. | | `media_content_type` | no | A media type. Must be one of `music`, `tvshow`, `video`, `episode`, `channel` or `playlist`. For example, to play music you would set `media_content_type` to `music`. | @@ -52,7 +52,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | -| `entity_id` | yes | Target a specific media player. Defaults to all. | +| `entity_id` | no | Target a specific media player. To target all media players, use `all`. | | `source` | no | Name of the source to switch to. Platform dependent. | #### Service `media_player.select_sound_mode` From 1993bd4f0354f002e60f667315c2a5b70b1dfee6 Mon Sep 17 00:00:00 2001 From: mannte Date: Fri, 3 Jan 2020 11:13:02 +0100 Subject: [PATCH 174/236] Update google_assistant.markdown (#11600) --- source/_addons/google_assistant.markdown | 60 +++++++----------------- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 7b6766f4a07..8af7a422b50 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -4,12 +4,6 @@ description: "Enhance your Hass.io installation with Google Assistant." featured: true --- -
- -These instructions are outdated - the add-on has been updated and these are no longer accurate or complete. - -
-
If you want to integrate your Google Home or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component](/integrations/google_assistant/). @@ -23,36 +17,11 @@ To enable access to the Google Assistant API, do the following: 1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project 1. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. 1. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. +1. Upload your "google_assistant.json" file to the "hassio/share" folder, for example by using the [Samba] add-on. +1. In the config window, fill in your "project-id", which can be found in your "google_assistant.json" file or in on the [Cloud Platform Resource Manager][cloudConsole]. Also choose a "model_id". +1. Below the "Config" window select the microphone and speaker that you want to use. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. -Now install and activate the [Samba] add-on so you can upload your credential file. Connect to the "share" Samba share and copy your credentials over. Name the file `google_assistant.json`. - -Now it's time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices in the "Logs" card. You might have to hit "refresh" to get the latest logs: - -```text -**** List of PLAYBACK Hardware Devices **** -card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA] - Subdevices: 8/8 - Subdevice #0: subdevice #0 - Subdevice #1: subdevice #1 - Subdevice #2: subdevice #2 - Subdevice #3: subdevice #3 - Subdevice #4: subdevice #4 - Subdevice #5: subdevice #5 - Subdevice #6: subdevice #6 - Subdevice #7: subdevice #7 -card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] - Subdevices: 1/1 - Subdevice #0: subdevice #0 -card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio] - Subdevices: 1/1 - Subdevice #0: subdevice #0 -``` - -You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0. - -Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options `mic` (microphone to use) and `speaker` (speaker to use). The format for these options is `,`. Change the configuration options and click save. - -The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the "OPEN WEB UI" button to start authentication. +You are now ready to start the add-on. The next step is to authenticate your Google account with Google Assistant. After starting the add-on and click on the "OPEN WEB UI" button to start authentication. ### Add-on configuration @@ -60,19 +29,23 @@ Configuration example that uses the USB microphone and the built-in headset audi ```json { - "mic": "1,0", - "speaker": "0,0", - "client_secrets": "google_assistant.json" + "client_secrets": "google_assistant.json", + "project_id": null, + "model_id": null } ``` {% configuration %} -mic: - description: This is the hardware address of your microphone. Look at the add-on output. +client_secrets: + description: The file downloaded from the Google Cloud Platform Console - Google Assistant API page. By default the add-on look in the "hassio/share" folder. required: true - type: float -speaker: - description: This is the hardware address of your speakers. Look at the add-on output. + type: string +project_id: + description: The project id can be found in your "google_assistant.json" file. + required: true + type: string +model_id: + description: A chosen model_id. required: true type: string {% endconfiguration %} @@ -88,3 +61,4 @@ Use the Home Assistant [DialogFlow component][comp] to integrate the add-on into [project]: https://console.cloud.google.com/project [API]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview [oauthclient]: https://console.developers.google.com/apis/credentials/oauthclient +[cloudConsole]: https://console.cloud.google.com/cloud-resource-manager From f5c2a557206029f630758592b3a18ae133e3a16d Mon Sep 17 00:00:00 2001 From: LWD Date: Fri, 3 Jan 2020 10:26:50 +0000 Subject: [PATCH 175/236] Update limitlessled.markdown (#11606) Removing link to MiLight.com. This site is no longer active. I've personally lost money from this site. There is a 94% bad rating on TrustPilot - https://uk.trustpilot.com/review/www.easybulb.com --- source/_integrations/limitlessled.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index b1e336b0146..e5594392c16 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -8,7 +8,7 @@ ha_iot_class: Assumed State ha_release: pre 0.7 --- -`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, [MiLight](https://www.milight.com/), LEDme, dekolight, or iLight. +`limitlessled` can control your LimitlessLED lights from within Home Assistant. The lights are also known as EasyBulb, AppLight, AppLamp, MiLight, LEDme, dekolight, or iLight. LimitlessLED bulbs are controlled via groups, so you can only control an individual bulb via the bridge if it is in a group by itself. From a607910d89433cfb38fae9b885b4de2549cb86f0 Mon Sep 17 00:00:00 2001 From: cogneato Date: Fri, 3 Jan 2020 03:27:41 -0700 Subject: [PATCH 176/236] Update to suggest Companion app (#11605) * Update to suggest Companion app Removed Owntracks suggestion for Android and point to HA Companion app for both iOS and Android * replace redirecting ios link replace /ios which was redirecting to companion.home-assistant.io * Remove owntracks video Remove video and add basic description of location setup for the Companion app * Update source/getting-started/presence-detection.markdown Co-Authored-By: Franck Nijhof * Update source/getting-started/presence-detection.markdown Co-Authored-By: Franck Nijhof Co-authored-by: Franck Nijhof --- source/getting-started/presence-detection.markdown | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/source/getting-started/presence-detection.markdown b/source/getting-started/presence-detection.markdown index 548b4090dc8..21eb5c2502c 100644 --- a/source/getting-started/presence-detection.markdown +++ b/source/getting-started/presence-detection.markdown @@ -17,11 +17,10 @@ Screenshot of Home Assistant showing a school, work and home zone and two people There are different ways of setting up presence detection. Usually the easiest way to detect presence is by checking which devices are connected to the network. You can do that if you have one of our [supported routers][routers]. By leveraging what your router already knows, you can easily detect if people are at home. -It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. If you're on iOS we suggest to use the [Home Assistant iOS app](/ios/). For Android, we suggest [OwnTracks][ha-owntracks]. +It's also possible to run an app on your phone to provide detailed location information to your Home Assistant instance. For iOS and Android, we suggest using the [Home Assistant Companion app][companion]. + +During the setup of Home Assistant Companion on your mobile device, the app will ask for permission to allow the device's location to be provided to Home Assistant. Allowing this will create a `device_tracker` entity for that device which can be used in automations and conditions. -
- -
### Zones @@ -37,7 +36,6 @@ The map view will hide all devices that are home. [nmap]: /integrations/nmap_tracker [ha-bluetooth]: /integrations/bluetooth_tracker [ha-bluetooth-le]: /integrations/bluetooth_le_tracker -[ha-owntracks]: /integrations/owntracks/ [ha-locative]: /integrations/locative [ha-gpslogger]: /integrations/gpslogger [ha-presence]: /integrations/#presence-detection @@ -47,5 +45,6 @@ The map view will hide all devices that are home. [trigger]: /getting-started/automation-trigger/#zone-trigger [condition]: /getting-started/automation-condition/#zone-condition [ha-map]: /integrations/map/ +[companion]: https://companion.home-assistant.io/ ### [Next step: Join the Community »](/getting-started/join-the-community/) From 7e84cc707e8611fd7d35c4fc2b320d38a97fbf1f Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 3 Jan 2020 13:32:01 +0100 Subject: [PATCH 177/236] Fix remark linting warnings (#11615) --- source/_integrations/picotts.markdown | 2 +- source/_integrations/vacuum.xiaomi_miio.markdown | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index 6f072958659..cbc6dba5528 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -13,7 +13,7 @@ On some Raspbian release, this package is missing but you can just copy the arm On Debian Buster, the package is missing, use the following commands to install it: -``` +```bash wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico0_1.0+git20130326-9_armhf.deb wget http://ftp.us.debian.org/debian/pool/non-free/s/svox/libttspico-utils_1.0+git20130326-9_armhf.deb sudo apt-get install -f ./libttspico0_1.0+git20130326-9_armhf.deb ./libttspico-utils_1.0+git20130326-9_armhf.deb diff --git a/source/_integrations/vacuum.xiaomi_miio.markdown b/source/_integrations/vacuum.xiaomi_miio.markdown index 085f92bfdad..cce32980088 100644 --- a/source/_integrations/vacuum.xiaomi_miio.markdown +++ b/source/_integrations/vacuum.xiaomi_miio.markdown @@ -114,6 +114,7 @@ Example of `xiaomi_miio.vacuum_clean_zone` use: Inline array: {% raw %} + ```yaml automation: - alias: Test vacuum zone3 @@ -128,10 +129,12 @@ automation: repeats: '{{states('input_number.vacuum_passes')|int}}' zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]] ``` + {% endraw %} Array with inline zone: {% raw %} + ```yaml automation: - alias: Test vacuum zone3 @@ -148,9 +151,11 @@ automation: - [30914,26007,35514,28807] - [20232,22496,26032,26496] ``` + {% endraw %} Array mode: + ```yaml automation: - alias: Test vacuum zone3 @@ -225,7 +230,6 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu 2. Using `v5.4.49` of Mi Home locate a text file under the `Smarthome/logs` folder where the 32 character token is stored. 3. There will likely be several text files in this directory, search all of them for the word 'token' and you should find it there. Be advised that the latest version of Mi Home does not store the token in clear text. - ### Linux and Rooted Android 1. To begin, set up your Robovac with the latest version of Mi Home on your primary Android device as you normally would. @@ -250,14 +254,18 @@ This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot Vacuu 9. Open DB Browser and load the `.sqlite` file you saved from your backup. 10. Click on the `Execute SQL` tab. 11. Input and run this query: + ```sql SELECT ZTOKEN FROM ZDEVICE WHERE ZMODEL LIKE "%vacuum%" ``` + 12. Copy the returned 96-digit hexadecimal string to your clipboard. 13. Open `Terminal` and execute this command: + ```bash echo '0: ' | xxd -r -p | openssl enc -d -aes-128-ecb -nopad -nosalt -K 00000000000000000000000000000000 ``` + 14. Use the resulting 32-digit string as your token. (On your mac in front of the terminal session) ### Bluestacks @@ -323,7 +331,7 @@ The information output is: Using the map editor you are able to acquire the co-ordinates required for zoned clean up. Here is an example script for zoned clean up: -``` +```yaml vacuum_kitchen: alias: "vacuum kitchen" sequence: @@ -332,4 +340,4 @@ vacuum_kitchen: entity_id: 'vacuum.xiaomi_vacuum_cleaner' command: app_zoned_clean params: [[23084,26282,27628,29727,1]] -``` \ No newline at end of file +``` From fa5c116a9a08dafe6ee7e40fe7fe11933e162106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio?= Date: Fri, 3 Jan 2020 15:34:17 +0200 Subject: [PATCH 178/236] Update docs for telegram bot (#11550) * Update docs for telegram bot * Add example --- .../_integrations/telegram_chatbot.markdown | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/source/_integrations/telegram_chatbot.markdown b/source/_integrations/telegram_chatbot.markdown index eb91c44efeb..2d327912532 100644 --- a/source/_integrations/telegram_chatbot.markdown +++ b/source/_integrations/telegram_chatbot.markdown @@ -328,7 +328,7 @@ Message editor: platform: event event_type: telegram_callback event_data: - data: '/edit_msg' + command: '/edit_msg' action: - service: telegram_bot.answer_callback_query data_template: @@ -360,7 +360,7 @@ Keyboard editor: platform: event event_type: telegram_callback event_data: - data: '/remove button' + command: '/remove button' action: - service: telegram_bot.answer_callback_query data_template: @@ -385,7 +385,7 @@ Only acknowledges the 'NO' answer: platform: event event_type: telegram_callback event_data: - data: '/do_nothing' + command: '/do_nothing' action: - service: telegram_bot.answer_callback_query data_template: @@ -394,6 +394,29 @@ Only acknowledges the 'NO' answer: ``` {% endraw %} +Telegram callbacks also support arguments and commands the same way as normal messages. + +{% raw %} +```yaml +- alias: 'Telegram bot repeats arguments on callback query' + hide_entity: true + trigger: + platform: event + event_type: telegram_callback + event_data: + command: '/repeat' + action: + - service: telegram_bot.answer_callback_query + data_template: + show_alert: true + callback_query_id: '{{ trigger.event.data.id }}' + message: 'I repeat: {{trigger.event.data["args"]}}' +``` +{% endraw %} + +In this case, having a callback with `/repeat 1 2 3` with pop a notification saying `I repeat: [1, 2, 3]` + + For a more complex usage of the `telegram_bot` capabilities, using [AppDaemon](/docs/ecosystem/appdaemon/tutorial/) is advised. This is how the previous 4 automations would be through a simple AppDaemon app: From e0956517f4826e6f04da4980ed032038addd3480 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 3 Jan 2020 18:49:21 +0100 Subject: [PATCH 179/236] Clarify Hass.io ecosystem in glossary (#11617) * Clarify Hass.io ecosystem in glosarry * Process review suggestions * Process review suggestions * Spelling --- source/_data/glossary.yml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 2ba4458766f..b0388379976 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -1,5 +1,7 @@ - topic: Action - description: "[Actions](/docs/automation/action/) are events that fires once all triggers and conditions have been met." + description: "An [Action](/docs/automation/action/) is an event that can be fired as a response to a trigger, once all conditions have been met." +- topic: Add-on + description: "Hass.io add-ons provide additional, standalone, applications that can run beside Home Assistant on a Hass.io installation. Most of these, add-on provided, applications can be integrated into Home Assistant using integrations. Examples of add-ons are: an MQTT broker, database service or a file server." - topic: Automation description: "[Automations](/docs/automation/) offer the capability to call a service based on a simple or complex trigger. Automation allows a condition such as a sunset to cause an event, such as a light turning on." - topic: Binary sensor @@ -7,7 +9,7 @@ - topic: Component description: "Integrations (see below) used to be known as components." - topic: Condition - description: "[Conditions](/docs/scripts/conditions/) are an optional part of an automation that will prevent an action from firing if they are not met." + description: "[Conditions](/docs/scripts/conditions/) are an optional part of an automation that will prevent an action from firing if they are not met." - topic: Cookbook description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community." - topic: Cover @@ -31,7 +33,11 @@ - topic: hass description: "HASS or [hass](/docs/tools/hass/) is often used as an abbreviation for Home Assistant. It is also the command-line tool." - topic: Hass.io - description: "[Hass.io](/hassio/) is an operating system that will take care of installing and updating Home Assistant, is managed from the Home Assistant UI, allows creating/restoring snapshots of your configuration, and can easily be extended." + description: "[Hass.io](/hassio/) is a full UI managed home automation ecosystem that runs Home Assistant, the Hass.io Supervisor and add-ons. It comes pre-installed on HassOS, but can be installed on any Linux system. It leverages Docker, which is managed by the Hass.io Supervisor." +- topic: Hass.io Supervisor + description: "The Hass.io Supervisor is a program that manages a Hass.io installation, taking care of installing and updating Home Assistant, add-ons, itself and, if used, updating the HassOS operating system." +- topic: HassOS + description: "HassOS, the Home Assistant Operating System, is an embedded, minimalistic, operating system designed to run the Hass.io ecosystem on single board computers (like the Raspberry Pi) or Virtual Machines. The Hass.io Supervisor can keep it up to date, removing the need for you to manage an operating system." - topic: Integration description: "[Integrations](/integrations/) provide the core logic for the functionality in Home Assistant. Like `notify` provides sending notifications." - topic: Lovelace @@ -45,7 +51,7 @@ - topic: Platform description: "[Platforms](/docs/configuration/platform_options/) make the connection to a specific software or hardware platform. For example, the `pushbullet` platform works with the service pushbullet.com to send notifications." - topic: Scene - description: "[Scenes](/integrations/scene/) capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red." + description: "[Scenes](/integrations/scene/) capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red." - topic: Script description: "[Scripts](/docs/scripts/) are components that allow users to specify a sequence of actions to be executed by Home Assistant when turned on." - topic: Sensor From ffec20f7920e67242965d9f28f7238bb25455ad0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Fri, 3 Jan 2020 19:50:06 +0200 Subject: [PATCH 180/236] Spell Zigbee consistently, with lowercase "b" (#11618) https://zigbeealliance.org/developer_resources/zigbee-specification/ "Please note that this uses old branding, Zigbee is always a lowercase B, not a capital. This change occurred shortly after the official release of this document." Also other docs at https://zigbeealliance.org/solution_type/zigbee/, https://github.com/zigpy/zigpy/issues/111 --- source/_integrations/tradfri.markdown | 2 +- source/_integrations/zha.markdown | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 4a43f7baa50..84cf716fc91 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -13,7 +13,7 @@ ha_category: - Switch --- -The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified ZigBee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. +The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. You will be prompted to configure the gateway through the Home Assistant interface. The configuration process is very simple: when prompted, enter the security key printed on the sticker on the bottom of the IKEA Trådfri Gateway, then click *configure*. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index c74a8e76a96..fea43dc9d6d 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -122,7 +122,7 @@ Go to the **Configuration** page and select the **ZHA** integration that was add Click on **ADD DEVICES** to start a scan for new devices. -Reset your ZigBee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). +Reset your Zigbee devices according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times, switches usually have a reset button/pin). ## Troubleshooting @@ -145,7 +145,7 @@ Follow the instructions on [https://github.com/vanviegen/hue-thief/](https://git ### ZHA Start up issue with Home-Assistant Docker/Hass.io installs on linux hosts -On Linux hosts ZHA can fail to start during HA startup or restarts because the zigbee USB device is being claimed by the host's modemmanager service. To fix this disable the modemmanger on the host system. +On Linux hosts ZHA can fail to start during HA startup or restarts because the Zigbee USB device is being claimed by the host's modemmanager service. To fix this disable the modemmanger on the host system. To remove modemmanager from an Debian/Ubuntu host run this command: From d82aaa88d1aa0e73cd8aa31be078a574ca23a90e Mon Sep 17 00:00:00 2001 From: John Hollowell Date: Fri, 3 Jan 2020 13:09:23 -0500 Subject: [PATCH 181/236] Add service information to homeassistant integration (#11607) * Update homeassistant.markdown Add services and descriptions for `homeassistant` * Update service-calls.markdown Add link to homeassistant services information * Update homeassistant.markdown adhere to documentation standards * Apply suggestions from code review Fix heading levels and a copy/paste typo Co-Authored-By: Franck Nijhof * Apply suggestions from code review make entity_id's optional Co-Authored-By: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_docs/scripts/service-calls.markdown | 3 + source/_integrations/homeassistant.markdown | 110 ++++++++++++++++++++ 2 files changed, 113 insertions(+) diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index 38d65358f10..9166b959477 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -96,7 +96,10 @@ There are four `homeassistant` services that aren't tied to any single domain, t * `homeassistant.toggle` - Turns off an entity that is on, or turns on an entity that is off (that supports being turned on and off) * `homeassistant.update_entity` - Request the update of an entity, rather than waiting for the next scheduled update, for example [google travel time] sensor, a [template sensor], or a [light] +Complete service details and examples can be found on the [Home Assistant integration][homeassistant-integration-services] page. + [templating]: /topics/templating/ [google travel time]: /integrations/google_travel_time/ [template sensor]: /integrations/template/ [light]: /integrations/light/ +[homeassistant-integration-services]: /integrations/homeassistant#services diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 62dda476583..6cfa9a9fe10 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -3,6 +3,116 @@ title: "Core integration" description: "Description of the homeassistant integration." logo: home-assistant.png ha_release: 0.0 +ha_qa_scale: internal --- The Home Assistant integration provides generic implementations like the generic `homeassistant.turn_on`. + +## Services + +The `homeassistant` integration provides services for controlling Home Assistant itself, as well as generic controls for any entity. + +### Service `homeassistant.check_config` + +Reads the config files and checks them for correctness, but **does not** load them into Home Assistant. Creates a persistent notification and log entry if errors are found. + +### Service `homeassistant.reload_core_config` + +Loads the main config file (`configuration.yaml`) and all linked files. Once loaded the new configuration is applied. + +### Service `homeassistant.restart` + +Restarts the Home Assistant instance (also reloading the configuration on start). + +### Service `homeassistant.stop` + +Stops the Home Assistant instance. Home Assistant must be restarted from the Host device to run again. + +### Service `homeassistant.set_location` + +Update the location of the Home Assistant default zone (usually "Home"). + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `latitude` | no | Latitude of your location. | +| `longitude` | no | Longitude of your location. | + +#### Example + +```yaml +action: + service: homeassistant.set_location + data: + latitude: 32.87336 + longitude: 117.22743 +``` + +### Service `homeassistant.toggle` + +Generic service to toggle devices on/off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to toggle on/off. | + +#### Example + +```yaml +action: + service: homeassistant.toggle + data: + entity_id: light.living_room +``` + +#### Service `homeassistant.turn_on` + +Generic service to turn devices on under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to turn on. | + +#### Example + +```yaml +action: + service: homeassistant.turn_on + data: + entity_id: light.living_room +``` + +### Service `homeassistant.turn_off` + +Generic service to turn devices off under any domain. Same usage as the light.turn_on, switch.turn_on, etc. services. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | The entity_id of the device to turn off. | + +#### Example + +```yaml +action: + service: homeassistant.turn_off + data: + entity_id: light.living_room +``` + +### Service `homeassistant.update_entity` + +Force one or more entities to update its data rather than wait for the next scheduled update. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | no | One or multiple entity_ids to update. It can be a list. | + +#### Example + +```yaml +action: + service: homeassistant.update_entity + data: + entity_id: + - light.living_room + - switch.coffe_pot +``` From e7544c8c7ccb397be3fd3c19f7a4c7b4150683c8 Mon Sep 17 00:00:00 2001 From: Bas Nijholt Date: Fri, 3 Jan 2020 19:11:03 +0100 Subject: [PATCH 182/236] Add KEF integration (#11274) * add KEF speaker integration docs * :pencil2: Tweak * update text for usage of aiokef v0.2.0 * :pencil2: Tweak * add port to the configuration * update ha_release to 0.104 Co-authored-by: Franck Nijhof Co-authored-by: Klaas Schoute --- source/_integrations/kef.markdown | 85 +++++++++++++++++++++++++ source/images/supported_brands/kef.png | Bin 0 -> 18986 bytes 2 files changed, 85 insertions(+) create mode 100644 source/_integrations/kef.markdown create mode 100644 source/images/supported_brands/kef.png diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown new file mode 100644 index 00000000000..d426953c30f --- /dev/null +++ b/source/_integrations/kef.markdown @@ -0,0 +1,85 @@ +--- +title: "KEF Speakers" +description: "Instructions on how to integrate KEF Speakers into Home Assistant." +logo: kef.png +ha_category: + - Media Player +ha_iot_class: Local Polling +ha_release: 0.104 +--- + +The `kef` platform allows you to control the [KEF LS50 Wireless](https://international.kef.com/products/ls50-wireless) and [KEF LSX](https://international.kef.com/products/lsx) speakers from Home Assistant. + +Supported devices: + +- KEF LS50 Wireless +- KEF LSX (untested) + +To add KEF Speakers to your installation, add the following to your `configuration.yaml` file: + +## Configuration + +```yaml +# Example configuration.yaml entry +- platform: kef + host: IP_ADDRESS + type: LS50 +``` + +{% configuration %} +host: + description: "IP address of the device. Example: 192.168.1.32" + required: true + type: string +type: + description: The speaker type, either `LS50` or `LSX`. + required: true + type: string +name: + description: The name of the device + required: false + default: KEF + type: string +port: + description: The port of the device + required: false + default: 50001 + type: integer +maximum_volume: + description: Maximum volume allowed. Number between 0 and 1. + required: false + default: 0.5 + type: float +volume_step: + description: Volume step when increasing volume. + required: false + default: 0.05 + type: float +inverse_speaker_mode: + description: Switch channels from L/R to R/L. + required: false + default: false + type: boolean +standby_time: + description: The speakers automatically turn to standby mode after either `20` or `60` minutes. Leave out for the speaker to never go into standby mode. + required: false + type: integer +{% endconfiguration %} + +## Advanced configuration example + +```yaml +# Example configuration.yaml entry +- platform: kef + host: IP_ADDRESS + type: LS50 + name: My KEF speakers + maximum_volume: 0.6 + volume_step: 0.05 +``` + +Notes: + +- The LS50 Wireless is tested with the latest firmware of 19-11-2019: `p6.3001902221.105039422` and older firmware: `p6.2101809171.105039422` + +[KEF Speakers]: /integrations/kef/ diff --git a/source/images/supported_brands/kef.png b/source/images/supported_brands/kef.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb73f3a3e2e4f45c64578361803de7f2c06a271 GIT binary patch literal 18986 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 literal 0 HcmV?d00001 From 49176343671db0d99ea7c1e1784653a80eab2c64 Mon Sep 17 00:00:00 2001 From: David Cramer Date: Fri, 3 Jan 2020 14:51:06 -0800 Subject: [PATCH 183/236] Add documentation for Sentry (#11625) * Add documentation for Sentry See also home-assistant/home-assistant#30422 * Fix YAML formatting * Add ha_category, ha_iot_class * Update category, add ha_release * Remove optional params Co-authored-by: Paulus Schoutsen --- source/_integrations/sentry.markdown | 32 ++++++++++++++++++++++ source/images/supported_brands/sentry.png | Bin 0 -> 7728 bytes 2 files changed, 32 insertions(+) create mode 100644 source/_integrations/sentry.markdown create mode 100644 source/images/supported_brands/sentry.png diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown new file mode 100644 index 00000000000..a7adb9382be --- /dev/null +++ b/source/_integrations/sentry.markdown @@ -0,0 +1,32 @@ +--- +title: "Sentry" +description: "Record errors to Sentry." +logo: sentry.png +ha_category: + - System Monitor +ha_iot_class: Cloud Polling +ha_release: 0.104 +--- + +The `sentry` integration integrates with [Sentry](https://sentry.io/) to capture both logged errors as well as unhandled exceptions in Home Assistant. + +## Configuration + +To use the `sentry` integration in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sentry: + dsn: SENTRY_DSN +``` + +{% configuration %} +dsn: + description: The DSN provided to you by Sentry. + required: true + type: string +environment: + description: An environment name to associate with events. + required: false + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/sentry.png b/source/images/supported_brands/sentry.png new file mode 100644 index 0000000000000000000000000000000000000000..29b637d52649e96e3b551edd7723f2b0bfc41d93 GIT binary patch literal 7728 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 NncXrix$+?9{{g-pEEfO( literal 0 HcmV?d00001 From b8a087266186cd1c9a84b179a1bbe9447ade5ce4 Mon Sep 17 00:00:00 2001 From: Ross Cullen <35301905+rosscullen@users.noreply.github.com> Date: Fri, 3 Jan 2020 22:53:27 +0000 Subject: [PATCH 184/236] Improved & simplified documentation - Doorbird (#11621) * Improved & simplified documentation * New amendments tested and validated on both IOS and Android - instructions updated to reflect this. * Improved & simplified documentation. I've gone through the menus on Android and IOS and can confirm this is where the information required is located * Minor grammar tweaks * Update source/_integrations/doorbird.markdown Co-Authored-By: Franck Nijhof * Update source/_integrations/doorbird.markdown Co-Authored-By: Franck Nijhof * Update source/_integrations/doorbird.markdown Co-Authored-By: Franck Nijhof * Update source/_integrations/doorbird.markdown Co-Authored-By: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/doorbird.markdown | 28 +++++++++++++------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_integrations/doorbird.markdown b/source/_integrations/doorbird.markdown index 5f21c87d629..23295f83fd2 100644 --- a/source/_integrations/doorbird.markdown +++ b/source/_integrations/doorbird.markdown @@ -19,13 +19,12 @@ There is currently support for the following device types within Home Assistant: ## Setup -It is recommended to set up a new account on your Doorbird for use with Home Assistant. This can be added via the Doorbird App by choosing Administration -> (User) Add. This user, needs specific permissions enabled, depending on what functionality you want: +It is recommended to set up a new account on your Doorbird App for use with Home Assistant. This can be added via the Doorbird App by clicking settings (cog icon) -> Administration-> LOGIN (using your App Administration details). Under the "USER" section, choose "Add". This new user account requires specific permissions enabled (depending on what functionality you want). Permissions can be found under "Permissions". The following permissions are recommended: -- Live view -> Watch Always -- Last motion -> Motion + History -- Last ring -> History - -In addition, the "API-Operator" permission needs to be enabled as well. +- "Watch Always" (live view) +- "History" (last motion) +- "Motion" (last motion) +- "API-Operator" (this needed to be enabled as a minimum) ## Configuration @@ -144,20 +143,21 @@ The URLs on the event will be based on the configuration used to connect to your #### Schedules -Once events have been registered on the DoorBird device, they must be attached to a schedule using the official DoorBird app on Android or iOS. Currently there are schedules available for doorbell, motion, relay, and RFID events (on supported devices). +Once events have been registered on the DoorBird device, they must be attached to a schedule using the official DoorBird app on Android or iOS. Currently, there are schedules available for doorbell, motion, relay, and RFID events (on supported Doorbird devices). -For iOS, the schedules can be found by navigating to the following areas of the app: +The schedules can be found by navigating to the following area of the Doorbird app (Android or IOS): -- Doorbell | Settings > Administration > Specific Device > Schedule for Doorbell -- Motion | Settings > Administration > Specific Device > 3D Motion Sensor (Settings) > Schedule for Actions -- Relay | Settings > Administration > Specific Device > Relays > Schedule -- RFID | Settings > Administration > Specific Device > RFID Transponder > Settings > Select Transponder > Schedule +Settings (cog icon) -> Administration -> LOGIN LOGIN (using your App Administration details) -> (under "EXPERT SETTINGS") Schedule for doorbell -Once you are on the desired schedule, click the dropdown button in the upper left to switch to the HTTP Calls view. Now if you click on the heading just above the schedule, you can select the event you would like to be called for the particular schedule that is being viewed. +- `Push notification` +- `Trigger Relay ("Relay 1" or "Relay 2")` +- `HTTP(S) Calls (button, motion/movement, RFID)` + +Click on the dropdown button in the top left and choose your specific "Schedule for actions" (listed above). Depending on your selection, you may have to click on the center title to see the sub-categories menu. On the desired event, you should be able to specify blocks of time for when you would like the event to be sent to Home Assistant. If you want the event to always send, the square in the upper right can be used to populate the entire schedule. Events will be fired to Home Assistant for blocks of time that are blue. -Remember to complete the schedule assignment steps above for each event type that you registered. +Note: Remember to complete the schedule assignment steps above for each event type that you registered. ### Automation Example From 0fcd54373d078a0c683e2cfb0768f53ea9bcad9c Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Fri, 3 Jan 2020 22:54:41 +0000 Subject: [PATCH 185/236] Removing reference to `api_password` (#11626) Removing the reference to the (deprecated) `api_password` --- source/_docs/ecosystem/certificates/lets_encrypt.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index 163ef2fe511..be1a62d2bd8 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -330,7 +330,6 @@ Now edit your configuration.yaml file to reflect the SSL entries and your base U ```yaml http: - api_password: YOUR_PASSWORD ssl_certificate: /etc/letsencrypt/live/examplehome.duckdns.org/fullchain.pem ssl_key: /etc/letsencrypt/live/examplehome.duckdns.org/privkey.pem base_url: examplehome.duckdns.org From 1ef6a09dbe3dc2a62bd2751af5bb67328f1ef635 Mon Sep 17 00:00:00 2001 From: Petro31 <35082313+Petro31@users.noreply.github.com> Date: Fri, 3 Jan 2020 17:55:47 -0500 Subject: [PATCH 186/236] Update example to show variable used in set_fan_speed template. (#11624) Update to the example to let users know what set_fan_speed passes as a variable to the template. --- source/_integrations/vacuum.template.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/vacuum.template.markdown b/source/_integrations/vacuum.template.markdown index bee77c70187..129114c287a 100644 --- a/source/_integrations/vacuum.template.markdown +++ b/source/_integrations/vacuum.template.markdown @@ -149,6 +149,8 @@ vacuum: service: script.vacuum_locate_vacuum set_fan_speed: service: script.vacuum_set_fan_speed + data_template: + speed: "{{ fan_speed }}" fan_speeds: - Low - Medium From e889908a409ee14b7bc76a31142f9e9429af4aa3 Mon Sep 17 00:00:00 2001 From: Iulius Date: Sat, 4 Jan 2020 17:41:28 +0100 Subject: [PATCH 187/236] separate cmd payloads to state values (#11420) --- source/_integrations/lock.mqtt.markdown | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index ecb714eaeeb..625f4ba4427 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -51,6 +51,16 @@ payload_unlock: required: false type: string default: UNLOCK +state_locked: + description: The value that represents the lock to be in locked state + required: false + type: string + default: locked +state_unlocked: + description: The value that represents the lock to be in unlocked state + required: false + type: string + default: unlocked optimistic: description: Flag that defines if lock works in optimistic mode. required: false From 9f42bbb5d68e47d3df5e7b4d21a92dac118eb89f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sat, 4 Jan 2020 23:07:08 +0200 Subject: [PATCH 188/236] Point to Telegram chatbot page from Telegram config example (#11631) * Point to Telegram chatbot page from Telegram config example * Refer to chatbot platforms consistently as platform, not method --- source/_integrations/telegram.markdown | 4 ++++ source/_integrations/telegram_chatbot.markdown | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index 7dec6354cb3..ebb7cb2d1bb 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -87,6 +87,10 @@ notify: chat_id: CHAT_ID_2 ``` +Refer to the platforms mentioned in the +[Telegram chatbot page](/integrations/telegram_chatbot/) for +`telegram_bot` configuration. + {% configuration %} name: description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`. diff --git a/source/_integrations/telegram_chatbot.markdown b/source/_integrations/telegram_chatbot.markdown index eb91c44efeb..ad5cf09e8fe 100644 --- a/source/_integrations/telegram_chatbot.markdown +++ b/source/_integrations/telegram_chatbot.markdown @@ -10,7 +10,7 @@ ha_iot_class: Cloud Push Use Telegram on your mobile or desktop device to send and receive messages or commands to/from your Home Assistant. -This integration creates notification services to send, or edit previously sent, messages from a [Telegram Bot account](https://core.telegram.org/bots) configured either with the [polling](/integrations/telegram_polling) method or with the [webhooks](/integrations/telegram_webhooks) one, and trigger events when receiving messages. +This integration creates notification services to send, or edit previously sent, messages from a [Telegram Bot account](https://core.telegram.org/bots) configured either with the [polling](/integrations/telegram_polling) platform or with the [webhooks](/integrations/telegram_webhooks) one, and trigger events when receiving messages. If you don't need to receive messages, you can use the [broadcast](/integrations/telegram_broadcast) platform instead. From d63223783fd708fd49b10717a0f3e558f1b658bb Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Sat, 4 Jan 2020 23:22:11 +0100 Subject: [PATCH 189/236] Cleanup Rakefile by removing obsolete tasks (#11622) --- Rakefile | 241 ------------------------------------------------------- 1 file changed, 241 deletions(-) diff --git a/Rakefile b/Rakefile index 860f95e79c4..182f8178a11 100644 --- a/Rakefile +++ b/Rakefile @@ -2,28 +2,13 @@ require "rubygems" require "bundler/setup" require "stringex" -## -- Rsync Deploy config -- ## -# Be sure your public key is listed in your server's ~/.ssh/authorized_keys file -ssh_user = "user@domain.com" -ssh_port = "22" -document_root = "~/website.com/" -rsync_delete = false -rsync_args = "" # Any extra arguments to pass to rsync -deploy_default = "push" - -# This will be configured for you when you run config_deploy -deploy_branch = "master" - ## -- Misc Configs -- ## - public_dir = "public/" # compiled site directory source_dir = "source" # source file directory blog_index_dir = 'source/blog' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog') -deploy_dir = "_deploy" # deploy directory (for Github pages deployment) stash_dir = "_stash" # directory to stash posts for speedy generation components_dir = "_components" # directory for component files posts_dir = "_posts" # directory for blog files -themes_dir = ".themes" # directory for blog files new_post_ext = "markdown" # default new post file extension when using the new_post task new_page_ext = "markdown" # default new page file extension when using the new_page task server_port = "4000" # port for preview server eg. localhost:4000 @@ -33,22 +18,6 @@ if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil `chcp 65001` end -desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]" -task :install, :theme do |t, args| - if File.directory?(source_dir) || File.directory?("sass") - abort("rake aborted!") if ask("A theme is already installed, proceeding will overwrite existing files. Are you sure?", ['y', 'n']) == 'n' - end - # copy theme into working Jekyll directories - theme = args.theme || 'classic' - puts "## Copying "+theme+" theme into ./#{source_dir} and ./sass" - mkdir_p source_dir - cp_r "#{themes_dir}/#{theme}/source/.", source_dir - mkdir_p "sass" - cp_r "#{themes_dir}/#{theme}/sass/.", "sass" - mkdir_p "#{source_dir}/#{posts_dir}" - mkdir_p public_dir -end - ####################### # Working with Jekyll # ####################### @@ -198,216 +167,6 @@ task :clean do rm_rf [Dir.glob(".pygments-cache/**"), Dir.glob(".gist-cache/**"), Dir.glob(".sass-cache/**"), "source/stylesheets/screen.css"] end -desc "Move sass to sass.old, install sass theme updates, replace sass/custom with sass.old/custom" -task :update_style, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("sass.old") - puts "removed existing sass.old directory" - rm_r "sass.old", :secure=>true - end - mv "sass", "sass.old" - puts "## Moved styles into sass.old/" - cp_r "#{themes_dir}/"+theme+"/sass/", "sass", :remove_destination=>true - cp_r "sass.old/custom/.", "sass/custom/", :remove_destination=>true - puts "## Updated Sass ##" -end - -desc "Move source to source.old, install source theme updates, replace source/_includes/navigation.html with source.old's navigation" -task :update_source, :theme do |t, args| - theme = args.theme || 'classic' - if File.directory?("#{source_dir}.old") - puts "## Removed existing #{source_dir}.old directory" - rm_r "#{source_dir}.old", :secure=>true - end - mkdir "#{source_dir}.old" - cp_r "#{source_dir}/.", "#{source_dir}.old" - puts "## Copied #{source_dir} into #{source_dir}.old/" - cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true - cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true - cp "#{source_dir}.old/favicon.png", source_dir - mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir - cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir && File.exists?("#{source_dir}.old/index.html") - puts "## Updated #{source_dir} ##" -end - -############## -# Deploying # -############## - -desc "Default deploy task" -task :deploy do - # Check if preview posts exist, which should not be published - if File.exists?(".preview-mode") - puts "## Found posts in preview mode, regenerating files ..." - File.delete(".preview-mode") - Rake::Task[:generate].execute - end - - Rake::Task[:copydot].invoke(source_dir, public_dir) - Rake::Task["#{deploy_default}"].execute -end - -desc "Generate website and deploy" -task :gen_deploy => [:integrate, :generate, :deploy] do -end - -desc "copy dot files for deployment" -task :copydot, :source, :dest do |t, args| - FileList["#{args.source}/**/.*"].exclude("**/.", "**/..", "**/.DS_Store", "**/._*").each do |file| - cp_r file, file.gsub(/#{args.source}/, "#{args.dest}") unless File.directory?(file) - end -end - -desc "Deploy website via rsync" -task :rsync do - exclude = "" - if File.exists?('./rsync-exclude') - exclude = "--exclude-from '#{File.expand_path('./rsync-exclude')}'" - end - puts "## Deploying website via Rsync" - ok_failed system("rsync -avze 'ssh -p #{ssh_port}' #{exclude} #{rsync_args} #{"--delete" unless rsync_delete == false} #{public_dir}/ #{ssh_user}:#{document_root}") -end - -desc "deploy public directory to github pages" -multitask :push do - puts "## Deploying branch to Github Pages " - puts "## Pulling any updates from Github Pages " - cd "#{deploy_dir}" do - system "git checkout #{deploy_branch}" - end - (Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) } - Rake::Task[:copydot].invoke(public_dir, deploy_dir) - puts "\n## Copying #{public_dir} to #{deploy_dir}" - cp_r "#{public_dir}/.", deploy_dir - cd "#{deploy_dir}" do - if ENV["TRAVIS"] == 'true' - system 'git config user.name "Travis CI"' - system 'git config user.email "balloob+bot@gmail.com"' - end - - system "git add -A" - message = "Site updated at #{Time.now.utc}" - puts "\n## Committing: #{message}" - system "git commit -m \"#{message}\"" - - puts "\n## Pushing generated #{deploy_dir} website" - if ENV["GH_TOKEN"].nil? - Bundler.with_clean_env { system "git push origin #{deploy_branch}" } - else - puts "## Using GH_TOKEN" - new_origin = `git remote -v | grep origin | grep push | awk '{print $2}'`.chomp.sub('//', "//#{ENV['GH_TOKEN']}@") - system "git remote add origin-auth #{new_origin} > /dev/null 2>&1" - system "git push --quiet origin-auth #{deploy_branch} > /dev/null 2>&1" - end - - puts "\n## Github Pages deploy complete" - end -end - -desc "Update configurations to support publishing to root or sub directory" -task :set_root_dir, :dir do |t, args| - puts ">>> !! Please provide a directory, eg. rake config_dir[publishing/subdirectory]" unless args.dir - if args.dir - if args.dir == "/" - dir = "" - else - dir = "/" + args.dir.sub(/(\/*)(.+)/, "\\2").sub(/\/$/, ''); - end - rakefile = IO.read(__FILE__) - rakefile.sub!(/public_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "public_dir\\1=\\2\\3public#{dir}\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - compass_config = IO.read('config.rb') - compass_config.sub!(/http_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_path\\1=\\2\\3#{dir}/\\3") - compass_config.sub!(/http_images_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_images_path\\1=\\2\\3#{dir}/images\\3") - compass_config.sub!(/http_fonts_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_fonts_path\\1=\\2\\3#{dir}/fonts\\3") - compass_config.sub!(/css_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "css_dir\\1=\\2\\3public#{dir}/stylesheets\\3") - File.open('config.rb', 'w') do |f| - f.write compass_config - end - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^destination:.+$/, "destination: public#{dir}") - jekyll_config.sub!(/^subscribe_rss:\s*\/.+$/, "subscribe_rss: #{dir}/atom.xml") - jekyll_config.sub!(/^root:.*$/, "root: /#{dir.sub(/^\//, '')}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf public_dir - mkdir_p "#{public_dir}#{dir}" - puts "## Site's root directory is now '/#{dir.sub(/^\//, '')}' ##" - end -end - -desc "Set up _deploy folder and deploy branch for Github Pages deployment" -task :setup_github_pages, :repo do |t, args| - if args.repo - repo_url = args.repo - else - puts "Enter the read/write url for your repository" - puts "(For example, 'git@github.com:your_username/your_username.github.io.git)" - puts " or 'https://github.com/your_username/your_username.github.io')" - repo_url = get_stdin("Repository url: ") - end - protocol = (repo_url.match(/(^git)@/).nil?) ? 'https' : 'git' - if protocol == 'git' - user = repo_url.match(/:([^\/]+)/)[1] - else - user = repo_url.match(/github\.com\/([^\/]+)/)[1] - end - branch = (repo_url.match(/\/[\w-]+\.github\.(?:io|com)/).nil?) ? 'gh-pages' : 'master' - project = (branch == 'gh-pages') ? repo_url.match(/\/([^\.]+)/)[1] : '' - unless (`git remote -v` =~ /origin.+?octopress(?:\.git)?/).nil? - # If octopress is still the origin remote (from cloning) rename it to octopress - system "git remote rename origin octopress" - if branch == 'master' - # If this is a user/organization pages repository, add the correct origin remote - # and checkout the source branch for committing changes to the blog source. - system "git remote add origin #{repo_url}" - puts "Added remote #{repo_url} as origin" - system "git config branch.master.remote origin" - puts "Set origin as default remote" - system "git branch -m master source" - puts "Master branch renamed to 'source' for committing your blog source files" - else - unless !public_dir.match("#{project}").nil? - system "rake set_root_dir[#{project}]" - end - end - end - url = blog_url(user, project) - jekyll_config = IO.read('_config.yml') - jekyll_config.sub!(/^url:.*$/, "url: #{url}") - File.open('_config.yml', 'w') do |f| - f.write jekyll_config - end - rm_rf deploy_dir - mkdir deploy_dir - cd "#{deploy_dir}" do - system "git init" - system 'echo "My Octopress Page is coming soon …" > index.html' - system "git add ." - system "git commit -m \"Octopress init\"" - system "git branch -m gh-pages" unless branch == 'master' - system "git remote add origin #{repo_url}" - rakefile = IO.read(__FILE__) - rakefile.sub!(/deploy_branch(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_branch\\1=\\2\\3#{branch}\\3") - rakefile.sub!(/deploy_default(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_default\\1=\\2\\3push\\3") - File.open(__FILE__, 'w') do |f| - f.write rakefile - end - end - puts "\n---\n## Now you can deploy to #{repo_url} with `rake deploy` ##" -end - -def ok_failed(condition) - if (condition) - puts "OK" - else - puts "FAILED" - end -end - def get_stdin(message) print message STDIN.gets.chomp From 2675661e67721b126a162e0282794959df0c7f5a Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Sun, 5 Jan 2020 01:22:17 -0800 Subject: [PATCH 190/236] Add troubleshooting solution for devices that drop off WiFi (#11634) --- source/_integrations/androidtv.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index dd311db046d..34f4d7a3e8d 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -185,7 +185,9 @@ If the setup for your Android TV or Fire TV device fails, then there is probably 5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to WiFi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well. -6. If you are using the [Python ADB implementation](#2-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#1-adb-server) approach instead. +6. If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock](https://github.com/d4rken/wakelock-revamp)) to prevent this from happening. Some users have reported this problem with Xiaomi Mi Box devices. + +7. If you are using the [Python ADB implementation](#2-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#1-adb-server) approach instead. ## Services From a4e6ff1e7adb6997d054384d1b8c30c3152ff09b Mon Sep 17 00:00:00 2001 From: Troy Prelog <35702532+tprelog@users.noreply.github.com> Date: Sun, 5 Jan 2020 04:29:16 -0500 Subject: [PATCH 191/236] Update Freenas docs (#11585) * updated rc.d script Add extra_commands check_config - checks config using `hass --script check_config` upgrade - stops HA / upgrade / checks config / starts HA (only starts if config check passes) test - simple test to check directories / activate venv / check version of python and homeassistant restart - (modified) check_config / stop HA /start HA (only restart if config check passes) NOTE: All extra_commands REQUIRE bash to be installed `pkg install bash` I also removed the check_config from the pre_start function because because it will prevent HA from starting if the configuration is missing (Like a clean install from example). NO BUENO! Another case to consider haveing no configuration even after initial install is troubleshooting or testing. For instance with rc.d script createing a fresh config is simple. Let's suppose my working config is at `/home/hass/homeassistant` Now to get a clean configuration I can just do this service homeassistant stop sysrc sysrc homeassistant_config_dir="/home/hass/ha_test_config" service homeassistant start That's it! Configuration wise, it's a clean install. To switch back to working config I just service homeassistant stop sysrc sysrc homeassistant_config_dir="/home/hass/homeassistant" service homeassistant start Awesome right?! But that doesn't work if check_config fails during pre_start * add pkgs These are not required to install HA but they are quickly missed once you start to actual use it. Let's just avoid some fustration from the start. I don't think this list should be all inclusive but these basic things seem to be frequently needed from the start. autoconf | gmake | - looking at you Z-Wave, Stream, IKEA Tradfri pkgconf | bash - Give me bash or give me death! Seriously, it makes life easier. There's not alot of *BSD focus around HA. I only use *BSD because of FreeNAS -- Typically (with the exception of jails) FreeNAS is webui. I'm ok with Linux cli and it's very similiar to FreeNAS but not the same. It's not bash. I don't think it needs to be for the root user either. But having bash installed and used by the HA user makes it easier to follow along with exising documentation for other virtualenv type installs when trying to further expand your HA installation * give me bash or give me death! Most people won't notice a differene but we'll know in our hearts we did the right thing. * fix typo I'm lucky I can spell my name * whitespace * use venv Use the built-in venv instead of virtualenv which must be installed seperate. --- source/_docs/installation/freenas.markdown | 155 ++++++++++++++------- 1 file changed, 101 insertions(+), 54 deletions(-) diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 78945280e6b..476cfb1332f 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -13,22 +13,19 @@ Enter the Home Assistant jail. If you don't know which name you have given the j iocage exec HomeAssistant ``` -Create the user and group that Home Assistant will run as. The user/group ID of `8123` can be replaced if this is already in use in your environment. - -```bash -pw groupadd -n homeassistant -g 8123 -echo 'homeassistant:8123:8123::::::/bin/csh:' | adduser -f - -``` - -Install the necessary Python packages and virtualenv: +Install the suggested packages: ```bash pkg update pkg upgrade -pkg install -y python37 py37-sqlite3 ca_root_nss -python3.7 -m ensurepip -pip3 install --upgrade pip -pip3 install --upgrade virtualenv +pkg install -y autoconf bash ca_root_nss gmake pkgconf python37 py37-sqlite3 +``` + +Create the user and group that Home Assistant will run as. The user/group ID of `8123` can be replaced if this is already in use in your environment. + +```bash +pw groupadd -n homeassistant -g 8123 +echo 'homeassistant:8123:8123::::::/usr/local/bin/bash:' | adduser -f - ``` Create the installation directory: @@ -38,13 +35,14 @@ mkdir -p /usr/local/share/homeassistant chown -R homeassistant:homeassistant /usr/local/share/homeassistant ``` -Install Home Assistant itself: +Create the virtualenv and install Home Assistant itself: ```bash su homeassistant cd /usr/local/share/homeassistant -virtualenv -p python3.7 . -source ./bin/activate.csh +python3.7 -m venv . +source ./bin/activate +pip3 install --upgrade pip pip3 install homeassistant ``` @@ -82,29 +80,37 @@ vi /usr/local/etc/rc.d/homeassistant ```bash #!/bin/sh # -# Based upon work by tprelog at https://www.ixsystems.com/community/resources/fn-11-2-iocage-home-assistant-jail-plugins-for-node-red-mosquitto-amazon-dash-tasmoadmin.102/ +# Based upon work by tprelog at https://github.com/tprelog/iocage-homeassistant/blob/11.3-RELEASE/overlay/usr/local/etc/rc.d/homeassistant # # PROVIDE: homeassistant # REQUIRE: LOGIN # KEYWORD: shutdown # -# homeassistant_enable: Set to YES to enable the homeassistant service. -# Default: NO -# homeassistant_user: The user account used to run the homeassistant daemon. -# This is optional, however do not specifically set this to an -# empty string as this will cause the daemon to run as root. -# Default: homeassistant -# homeassistant_group: The group account used to run the homeassistant daemon. -# This is optional, however do not specifically set this to an -# empty string as this will cause the daemon to run with group wheel. -# Default: homeassistant -# homeassistant_config_dir: Directory where config files are located. -# Default: /home/homeassistant/.homeassistant -# homeassistant_install_dir: Directory where Home Assistant is installed. -# Default: /usr/local/share/homeassistant +# homeassistant_user: The user account used to run the homeassistant daemon. +# This is optional, however do not specifically set this to an +# empty string as this will cause the daemon to run as root. +# Default: homeassistant +# homeassistant_group: The group account used to run the homeassistant daemon. +# This is optional, however do not specifically set this to an +# empty string as this will cause the daemon to run with group wheel. +# Default: homeassistant # -# sysrc homeassistant_enable=yes -# service homeassistant start +# homeassistant_venv: Directory where homeassistant virtualenv is installed. +# Default: "/usr/local/share/homeassistant" +# Change: `sysrc homeassistant_venv="/srv/homeassistant"` +# UnChange: `sysrc -x homeassistant_venv` +# +# homeassistant_config_dir: Directory where homeassistant config is located. +# Default: "/home/homeassistant/.homeassistant" +# Change: `sysrc homeassistant_config_dir="/home/hass/homeassistant"` +# UnChange: `sysrc -x homeassistant_config_dir` + +# ------------------------------------------------------- +# Copy this file to '/usr/local/etc/rc.d/homeassistant' +# `chmod +x /usr/local/etc/rc.d/homeassistant` +# `sysrc homeassistant_enable=yes` +# `service homeassistant start` +# ------------------------------------------------------- . /etc/rc.subr name=homeassistant @@ -118,37 +124,78 @@ load_rc_config ${name} : ${homeassistant_user:="homeassistant"} : ${homeassistant_group:="homeassistant"} : ${homeassistant_config_dir:="/home/homeassistant/.homeassistant"} -: ${homeassistant_install_dir:="/usr/local/share/homeassistant"} +: ${homeassistant_venv:="/usr/local/share/homeassistant"} command="/usr/sbin/daemon" +extra_commands="check_config restart test upgrade" + start_precmd=${name}_precmd -homeassistant_precmd() -{ - rc_flags="-f -P ${pidfile} -p ${pidfile_child} ${homeassistant_install_dir}/bin/hass --config ${homeassistant_config_dir} ${rc_flags}" - - if [ ! -e "${pidfile_child}" ]; then - install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile_child}"; - fi - - if [ ! -e "${pidfile}" ]; then - install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile}"; - fi - +homeassistant_precmd() { + rc_flags="-f -o ${logfile} -P ${pidfile} -p ${pidfile_child} ${homeassistant_venv}/bin/hass --config ${homeassistant_config_dir} ${rc_flags}" + [ ! -e "${pidfile_child}" ] && install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile_child}" + [ ! -e "${pidfile}" ] && install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${pidfile}" + [ -e "${logfile}" ] && rm -f -- "${logfile}" + install -g ${homeassistant_group} -o ${homeassistant_user} -- /dev/null "${logfile}" if [ ! -d "${homeassistant_config_dir}" ]; then - install -d -g ${homeassistant_group} -o ${homeassistant_user} -- "${homeassistant_config_dir}"; + install -d -g ${homeassistant_group} -o ${homeassistant_user} -m 775 -- "${homeassistant_config_dir}" fi - - echo "Performing check on Home Assistant configuration:" - eval "${homeassistant_install_dir}/bin/hass" --config "${homeassistant_config_dir}" --script check_config } stop_postcmd=${name}_postcmd -homeassistant_postcmd() -{ +homeassistant_postcmd() { rm -f -- "${pidfile}" rm -f -- "${pidfile_child}" } +upgrade_cmd="${name}_upgrade" +homeassistant_upgrade() { + service ${name} stop + su ${homeassistant_user} -c ' + source ${@}/bin/activate || exit 1 + pip3 install --upgrade homeassistant + deactivate + ' _ ${homeassistant_venv} || exit 1 + [ $? == 0 ] && homeassistant_check_config && service ${name} start +} + +check_config_cmd="${name}_check_config" +homeassistant_check_config() { + [ ! -e "${homeassistant_config_dir}/configuration.yaml" ] && return 0 + echo "Performing check on Home Assistant configuration:" + #eval "${homeassistant_venv}/bin/hass --config ${homeassistant_config_dir} --script check_config" + su ${homeassistant_user} -c ' + source ${1}/bin/activate || exit 2 + hass --config ${2} --script check_config || exit 3 + deactivate + ' _ ${homeassistant_venv} ${homeassistant_config_dir} +} + +restart_cmd="${name}_restart" +homeassistant_restart() { + homeassistant_check_config || exit 1 + echo "Restarting Home Assistant" + service ${name} stop + service ${name} start +} + +test_cmd="${name}_test" +homeassistant_test() { + echo -e "\nTesting virtualenv...\n" + [ ! -d "${homeassistant_venv}" ] && echo -e " NO DIRECTORY: ${homeassistant_venv}\n" && exit + [ ! -f "${homeassistant_venv}/bin/activate" ] && echo -e " NO FILE: ${homeassistant_venv}/bin/activate\n" && exit + + ## switch users / activate virtualenv / get version + su "${homeassistant_user}" -c ' + source ${1}/bin/activate || exit 2 + echo " $(python --version)" || exit 3 + echo " Home Assistant $(pip3 show homeassistant | grep Version | cut -d" " -f2)" || exit 4 + deactivate + ' _ ${homeassistant_venv} + + [ $? != 0 ] && echo "exit $?" +} + +load_rc_config ${name} run_rc_command "$1" ``` @@ -204,8 +251,8 @@ vi /etc/devfs.rules Add the following lines ```bash -[devfsrules_jail_allow_usb=7] -add path 'cu\*' mode 0660 group 8123 unhide +[devfsrules_jail_allow_usb=7] +add path 'cu\*' mode 0660 group 8123 unhide ``` Reload devfs @@ -261,7 +308,7 @@ Then, enter the `venv`: ```bash su homeassistant cd /usr/local/share/homeassistant -source ./bin/activate.csh +source ./bin/activate ``` Upgrade Home Assistant: From f8abed18e094876249a05f94deac752f5b2d34c5 Mon Sep 17 00:00:00 2001 From: trentjw Date: Sun, 5 Jan 2020 03:01:00 -0700 Subject: [PATCH 192/236] Update tplink.markdown (#11635) * Update tplink.markdown * :pencil2: Removal of non-existing platform to list. Co-authored-by: Franck Nijhof --- source/_integrations/tplink.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index f612c9eeb80..8a315124467 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -32,11 +32,12 @@ The following devices are known to work with this component. - HS105 - HS110 -### Multi-Plug Strips +### Strip (Multi-Plug) - HS107 (indoor 2-outlet) - HS300 (powerstrip 6-outlet) - KP400 (outdoor 2-outlet) +- KP200 (indoor 2-outlet) ### Wall Switches From 86a3bcb9169b4d64996ae6fca786b8084b20fd5f Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 5 Jan 2020 11:36:53 +0100 Subject: [PATCH 193/236] Add person reload service (#11633) --- source/_integrations/person.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown index b115523db61..62fc339ec22 100644 --- a/source/_integrations/person.markdown +++ b/source/_integrations/person.markdown @@ -87,6 +87,8 @@ person: - device_tracker.beacon ``` +If you change the YAML, you can reload it by calling the `person.reload` service. + ### Customizing the picture for a person By following the instructions on the [customizing entities](/docs/configuration/customizing-devices#entity_picture) page, you can customize the picture used for a person entity in the `customize:` section of your configuration. For example: @@ -97,4 +99,4 @@ customize: entity_picture: "/local/ada.jpg" ``` -See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. +See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. From 8fba0f8c74b8d5f35604c9de3b6b137f787d78fe Mon Sep 17 00:00:00 2001 From: GoSpursGoNL Date: Sun, 5 Jan 2020 12:00:25 +0100 Subject: [PATCH 194/236] Fix typo (#11636) --- source/_integrations/switch.rfxtrx.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/switch.rfxtrx.markdown b/source/_integrations/switch.rfxtrx.markdown index 31f1860b734..e1f1ecaa38c 100644 --- a/source/_integrations/switch.rfxtrx.markdown +++ b/source/_integrations/switch.rfxtrx.markdown @@ -105,9 +105,9 @@ switch: signal_repetitions: 2 devices: 0b1100ce3213c7f210010f70: - name: Movment1 + name: Movement1 0b11000a02ef2gf210010f50: - name: Movment2 + name: Movement2 0b1111e003af16aa10000060: name: Door fire_event: true From 301edb9bd25976b14ab99c4bcf3105cb2fbf29a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Sun, 5 Jan 2020 13:44:21 +0200 Subject: [PATCH 195/236] Home Assistant etc spelling consistency fixes (#11637) * Be consistent with Home Assistant spelling * Refer to the Configurator without "HASS" That's what's it calls itself and how it is in the add-on store. * Be consistent with Hass.io spelling * Tell vscode to spell HassOS like that --- .vscode/cSpell.json | 4 ++-- source/_addons/configurator.markdown | 4 ++-- source/_addons/snips.markdown | 4 ++-- source/_docs/authentication.markdown | 2 +- .../certificates/tls_self_signed_certificate.markdown | 2 +- source/_docs/ecosystem/hass-configurator.markdown | 6 +++--- source/_docs/mqtt/broker.markdown | 2 +- source/_docs/z-wave/controllers.markdown | 2 +- source/_docs/z-wave/installation.markdown | 2 +- source/_includes/asides/docs_navigation.html | 2 +- source/_integrations/apcupsd.markdown | 2 +- source/_integrations/dlna_dmr.markdown | 2 +- source/_integrations/elkm1.markdown | 2 +- source/_integrations/homekit.markdown | 2 +- source/_integrations/keba.markdown | 4 ++-- source/_integrations/openuv.markdown | 2 +- source/_integrations/owntracks.markdown | 2 +- source/_integrations/ptvsd.markdown | 6 +++--- source/_integrations/recorder.markdown | 2 +- source/_integrations/remote_rpi_gpio.markdown | 2 +- source/_integrations/rfxtrx.markdown | 2 +- source/_integrations/rpi_gpio.markdown | 2 +- source/_integrations/sinch.markdown | 2 +- source/_integrations/smartthings.markdown | 2 +- source/_integrations/tts.markdown | 2 +- source/_integrations/unifiled.markdown | 2 +- source/_integrations/upnp.markdown | 2 +- source/_integrations/utility_meter.markdown | 2 +- source/_integrations/vlc_telnet.markdown | 2 +- source/_integrations/yeelight.markdown | 2 +- source/getting-started/configuration.markdown | 4 ++-- source/getting-started/index.markdown | 2 +- source/hassio/installation.markdown | 2 +- 33 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.vscode/cSpell.json b/.vscode/cSpell.json index 1951a92694f..dbff6649d46 100644 --- a/.vscode/cSpell.json +++ b/.vscode/cSpell.json @@ -18,8 +18,8 @@ "geizhals", "Harman", "hass", - "hass.io", - "hassos", + "Hass.io", + "HassOS", "hcitool", "heos", "hikvision", diff --git a/source/_addons/configurator.markdown b/source/_addons/configurator.markdown index 2f7bc108843..2560a866ded 100644 --- a/source/_addons/configurator.markdown +++ b/source/_addons/configurator.markdown @@ -1,5 +1,5 @@ --- -title: "HASS Configurator" +title: "Configurator" description: "Browser-based configuration file editor for Home Assistant." featured: true og_image: /images/hassio/screenshots/addon-hass-configurator.png @@ -11,7 +11,7 @@ More information and a standalone version for regular Home Assistant installatio

-Screenshot of the HASS Configurator. +Screenshot of the Configurator.

### Feature list diff --git a/source/_addons/snips.markdown b/source/_addons/snips.markdown index a229a9bf0b6..b418fa00ef5 100644 --- a/source/_addons/snips.markdown +++ b/source/_addons/snips.markdown @@ -77,7 +77,7 @@ There is an active [discord](https://discordapp.com/invite/3939Kqx) channel and ### Examples -So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your HassIO installation using the Samba add-on. +So now you can turn lights on and off, let's check the weather. Log on to the [console](https://console.snips.ai/). If this is your first time, create a new assistant and add the Home Assistant skill, along with the Weather skill by snips. Download your assistant manually and copy it to the `/share` folder on your Hass.io installation using the Samba add-on. Next create a weather sensor, e.g., one for [Dark Sky](/integrations/darksky/), and put the `api_key` in your `secrets.yaml` file. For this example to work you will need to have a valid API key from [Dark Sky](https://darksky.net/dev). @@ -120,6 +120,6 @@ searchWeatherForecast: {% endraw %} -Now just restart HassIO and ask it what the weather is like. +Now just restart Hass.io and ask it what the weather is like. [their tutorial]: https://github.com/snipsco/snips-platform-documentation/wiki/2.-Create-an-assistant-using-an-existing-bundle diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index be648d36981..ce51136927b 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -81,7 +81,7 @@ While you should hopefully be storing your passwords in a password manager, if y * `auth` * `auth_provider.homeassistant` * `onboarding` -* `hassio` (for hassio users) +* `hassio` (for Hass.io users) * `cloud` (for nabucasa users) When you start Home Assistant next, you'll be required to set up authentication again. diff --git a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown index 22fde562eba..22d866ad873 100644 --- a/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown +++ b/source/_docs/ecosystem/certificates/tls_self_signed_certificate.markdown @@ -40,7 +40,7 @@ http: ssl_key: /ssl/privkey.pem ``` -Non-hass.io: +Non-Hass.io: ```yaml http: diff --git a/source/_docs/ecosystem/hass-configurator.markdown b/source/_docs/ecosystem/hass-configurator.markdown index 48df2d527e8..5225cc79ab8 100644 --- a/source/_docs/ecosystem/hass-configurator.markdown +++ b/source/_docs/ecosystem/hass-configurator.markdown @@ -1,6 +1,6 @@ --- -title: "HASS Configurator" -description: "Instructions on how to install and use the HASS Configurator" +title: "Configurator" +description: "Instructions on how to install and use the Configurator" redirect_from: /ecosystem/hass-configurator/ --- @@ -11,7 +11,7 @@ This is essentially a browser-based alternative to modifying your configuration

-Screenshot of the HASS Configurator. +Screenshot of the Configurator.

### Feature list diff --git a/source/_docs/mqtt/broker.markdown b/source/_docs/mqtt/broker.markdown index 553fcbb36dc..b6b9a0be12b 100644 --- a/source/_docs/mqtt/broker.markdown +++ b/source/_docs/mqtt/broker.markdown @@ -9,7 +9,7 @@ The MQTT integration needs you to run an MQTT broker for Home Assistant to conne ### Run your own This is the most private option, but it requires a little bit of work to setup. There are multiple free and open-source brokers to pick from: e.g., [Mosquitto](http://mosquitto.org/), [EMQ](https://github.com/emqx/emqx) or [Mosca](http://www.mosca.io/). -For hass.io users, the recommended setup method is to use the [Mosquitto MQTT broker addon](/addons/mosquitto). +For Hass.io users, the recommended setup method is to use the [Mosquitto MQTT broker addon](/addons/mosquitto). ```yaml # Example configuration.yaml entry diff --git a/source/_docs/z-wave/controllers.markdown b/source/_docs/z-wave/controllers.markdown index 552ce14d680..261e84da83f 100644 --- a/source/_docs/z-wave/controllers.markdown +++ b/source/_docs/z-wave/controllers.markdown @@ -24,7 +24,7 @@ There have [been reports](https://www.raspberrypi.org/forums/viewtopic.php?f=28& We recommend that you purchase a [Z-Wave Plus](https://z-wavealliance.org/z-wave_plus_certification/) controller, to take advantage of the improvements this provides. As OpenZWave doesn't support S2 or Smart Start, there's no need to buy one just for support of these features.
- If you're using Hass.io or running HASS in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through. + If you're using Hass.io or running Home Assistant in a Docker container, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through.
## Stick Alternatives diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 0c7a2228ce7..875a00463e5 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -122,7 +122,7 @@ You can also check what hardware has been found using the [hassio command](/hass $ hassio hardware info ``` -If you did an alternative install of Hass.io on Linux (e.g. installing Ubuntu, then Docker, then Hass.io) then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled in the host OS. Failure to do so will result in random failures of those components, e.g. dead or unreachable Z-Wave nodes, most notably right after HomeAssistant restarts. Connect to your host OS via SSH, then you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` (commands are for Debian/Ubuntu). +If you did an alternative install of Hass.io on Linux (e.g. installing Ubuntu, then Docker, then Hass.io) then the `modemmanager` package will interfere with any Z-Wave (or Zigbee) stick and should be removed or disabled in the host OS. Failure to do so will result in random failures of those components, e.g. dead or unreachable Z-Wave nodes, most notably right after Home Assistant restarts. Connect to your host OS via SSH, then you can disable with `sudo systemctl disable ModemManager` and remove with `sudo apt-get purge modemmanager` (commands are for Debian/Ubuntu). ### Docker diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 8f54340183b..5d7c4855a38 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -349,7 +349,7 @@
  • {% active_link /docs/ecosystem/synology/ Synology %}
  • - {% active_link /docs/ecosystem/hass-configurator/ HASS Configurator + {% active_link /docs/ecosystem/hass-configurator/ Configurator %}
  • diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index 93649d924b7..d7a27f6feb0 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -47,7 +47,7 @@ port:
    -If you get `ConnectionRefusedError: Connection refused` errors in the Home assistant logs, ensure the [APCUPSd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses [NISIP 0.0.0.0](http://www.apcupsd.org/manual/manual.html#configuration-directives-used-by-the-network-information-server), else non-local addesses will not connect. This includes Hass.io running in Docker, even when hosted on the same machine or a virtual machine. +If you get `ConnectionRefusedError: Connection refused` errors in the Home Assistant logs, ensure the [APCUPSd](http://www.apcupsd.org/) configuration directives used by its Network Information Server is set to permit connections from all addresses [NISIP 0.0.0.0](http://www.apcupsd.org/manual/manual.html#configuration-directives-used-by-the-network-information-server), else non-local addesses will not connect. This includes Hass.io running in Docker, even when hosted on the same machine or a virtual machine.
    diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index 67dac15e57b..d91b8a568e7 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -42,7 +42,7 @@ name: required: false type: string callback_url_override: - description: Override the advertised callback URL. In case the home assistant instance is not directly reachable (e.g., running in a docker container without bridged-networking), advertise this callback URL for events. + description: Override the advertised callback URL. In case the Home Assistant instance is not directly reachable (e.g., running in a docker container without bridged-networking), advertise this callback URL for events. required: false type: string {% endconfiguration %} diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown index c56d4f3231a..d64ed7c4897 100644 --- a/source/_integrations/elkm1.markdown +++ b/source/_integrations/elkm1.markdown @@ -55,7 +55,7 @@ password: required: false type: string prefix: - description: The prefix to use, if any, for all the devices created for this controller. At most one host can omit the prefix, all others must have a unique prefix within the home assistant instance. + description: The prefix to use, if any, for all the devices created for this controller. At most one host can omit the prefix, all others must have a unique prefix within the Home Assistant instance. require: false type: string temperature_unit: diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index dc0e98fdddf..61dd0e05c39 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -491,7 +491,7 @@ The volume and play/pause controls will show up on the Remote app or Control Cen #### Resetting accessories -On Home Assistant `0.97.x` or later, you may use the service `homekit.reset_accessory` with one or more entity_ids to reset accessories whose configuration may have changed. This can be useful when changing a media_player's device class to `tv`, linking a battery, or whenever HomeAssistant add supports for new HomeKit features to existing entities. +On Home Assistant `0.97.x` or later, you may use the service `homekit.reset_accessory` with one or more entity_ids to reset accessories whose configuration may have changed. This can be useful when changing a media_player's device class to `tv`, linking a battery, or whenever Home Assistant adds support for new HomeKit features to existing entities. On earlier versions of Home Assistant, you can reset accessories by removing the entity from HomeKit (via [filter](#configure-filter)) and then re-adding the accessory. diff --git a/source/_integrations/keba.markdown b/source/_integrations/keba.markdown index 07ba54e7cbb..add2df55143 100644 --- a/source/_integrations/keba.markdown +++ b/source/_integrations/keba.markdown @@ -9,7 +9,7 @@ ha_category: ha_release: 0.98 --- -The `keba` integrates your Keba charging station (wallbox) into your home assistant instance. It was tested with a BMW Wallbox but should also work with a Keba P20/P30 according to the developers [manual](https://www.keba.com/web/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. +The `keba` integrates your Keba charging station (wallbox) into your Home Assistant instance. It was tested with a BMW Wallbox but should also work with a Keba P20/P30 according to the developers [manual](https://www.keba.com/web/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. This component provides the following platforms: @@ -44,7 +44,7 @@ keba: type: string default: "00845500" failsafe: - description: Enable failsafe mode at home assistant startup. + description: Enable failsafe mode at Home Assistant startup. required: false type: boolean default: false diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index b52a39fbce0..ff3488b3e46 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -208,7 +208,7 @@ automation: service: openuv.update_protection_data ``` -Another method (useful when monitoring locations other than the HASS latitude +Another method (useful when monitoring locations other than the Home Assistant latitude and longitude, in locations where there is a large amount of sunlight per day, etc.) might be to simply query the API less often: diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index 77e265ac160..d56fb57c66d 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -33,7 +33,7 @@ In the OwnTracks app, open sidebar and click on preferences, then on connection. - Device ID: `` - Tracker ID: `` Two character tracker ID. (can be left blank) -Your tracker device will be known in home assistant as `_`. If you entered a Tracker ID the tid attribute will be set to that ID. +Your tracker device will be known in Home Assistant as `_`. If you entered a Tracker ID the tid attribute will be set to that ID. ### Configuring the app - iOS diff --git a/source/_integrations/ptvsd.markdown b/source/_integrations/ptvsd.markdown index 34f5fb95294..f0a42bc051a 100644 --- a/source/_integrations/ptvsd.markdown +++ b/source/_integrations/ptvsd.markdown @@ -32,7 +32,7 @@ port: default: 5678 type: integer wait: - description: If true, wait for the debugger to connect before starting up home assistant. + description: If true, wait for the debugger to connect before starting up Home Assistant. required: false default: false type: boolean @@ -40,9 +40,9 @@ wait: ### Security -Ensure if this is a public-facing server, that the port is secured. Anyone who is able to access the debugger port can *execute arbitrary code* on the home assistant server, which is very unsafe. +Ensure if this is a public-facing server, that the port is secured. Anyone who is able to access the debugger port can *execute arbitrary code* on the Home Assistant server, which is very unsafe. -If the home assistant server is behind your firewall with only the http(s) port exposed, then this is safe from outside connections. +If the Home Assistant server is behind your firewall with only the http(s) port exposed, then this is safe from outside connections. Another way of securing the port is to set `host` to localhost and have a secured SSH TCP tunnel with a client certificate for access from the outside internet. diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 6fe93a8a3f4..466b4237636 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -12,7 +12,7 @@ The `recorder` integration is responsible for storing details in a database, whi Home Assistant uses [SQLAlchemy](https://www.sqlalchemy.org/), which is an Object Relational Mapper (ORM). This means that you can use **any** SQL backend for the recorder that is supported by SQLAlchemy, like [MySQL](https://www.mysql.com/), [MariaDB](https://mariadb.org/), [PostgreSQL](https://www.postgresql.org/), or [MS SQL Server](https://www.microsoft.com/en-us/sql-server/). -The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant` or '/config/' in HassIO) and called `home-assistant_v2.db`. +The default database engine is [SQLite](https://www.sqlite.org/) which doesn't require any configuration. The database is stored in your Home Assistant configuration directory (`.homeassistant` or '/config/' in Hass.io) and called `home-assistant_v2.db`. To change the defaults for the `recorder` integration in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index b4e40e7d975..e9edffb006b 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -105,7 +105,7 @@ invert_logic: For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#GPIO_connector) about the Raspberry Pi.
    -Note that a pin managed by HASS is expected to be exclusive to HASS. +Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant.
    A common question is what does port refer to, this number is the actual GPIO #, not the pin #. diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index a42d39e681b..af64619e50d 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -57,7 +57,7 @@ Not all protocols as advertised are enabled on the initial setup of your transce ### ser2net -You can host your device on another computer by setting up ser2net and example configuration for ser2net looks like this and then using host/port in your home assistant config. +You can host your device on another computer by setting up ser2net and example configuration for ser2net looks like this and then using host/port in your Home Assistant config. ```text 50000:raw:0:/dev/ttyUSB0:38400 8DATABITS NONE 1STOPBIT diff --git a/source/_integrations/rpi_gpio.markdown b/source/_integrations/rpi_gpio.markdown index ecebf0b117f..cc33003e8b1 100644 --- a/source/_integrations/rpi_gpio.markdown +++ b/source/_integrations/rpi_gpio.markdown @@ -184,7 +184,7 @@ invert_logic: For more details about the GPIO layout, visit the Wikipedia [article](https://en.wikipedia.org/wiki/Raspberry_Pi#General_purpose_input-output_(GPIO)_connector) about the Raspberry Pi.
    -Note that a pin managed by HASS is expected to be exclusive to HASS. +Note that a pin managed by Home Assistant is expected to be exclusive to Home Assistant.
    A common question is what does Port refer to, this number is the actual GPIO #, not the pin #. diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown index e2ed441979f..b3ffba7bbe2 100644 --- a/source/_integrations/sinch.markdown +++ b/source/_integrations/sinch.markdown @@ -61,5 +61,5 @@ notify: service_plan_id: SINCH_SERVICE_PLAN_ID api_key: SINCH_API_KEY default_recipient: [PHONE_NO1, PHONE_NO2] - sender: Home assistant + sender: Home Assistant ``` diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 1986c58684e..78ba7bd2987 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -108,7 +108,7 @@ The integration will trigger an event when a device with the [button](https://sm | Attribute | Description |---------------------------|------------------------------------------------------------------| `component_id` | Describes which integration of the device triggered the event. `main` represents the parent device. For devices with child-devices, this attribute identifies the child that raised the event. -`device_id` | The unique id of the device in SmartThings. This can be located in the HASS device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). +`device_id` | The unique id of the device in SmartThings. This can be located in the Home Assistant device registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). `location_id` | The unique id of the location the device is part of. This can be found in the config entry registry or in the [SmartThings Developer Workspace](https://smartthings.developer.samsung.com/workspace/). `value` | Describes the action taken on the button. See the [button](https://smartthings.developer.samsung.com/develop/api-ref/capabilities.html#Button) capability reference for a list of possible values (not all are supported by every device). `name` | The name given to the device in SmartThings. diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index 0cfbe44a62c..4ae608c7fec 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -91,7 +91,7 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr * They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). Setting a `base_url` that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname. -* An alternative way to force Google cast devices to use internal DNS is to block them from accessing Google DNS at the firewall/router level. This would be useful in the case, for example, where your internal IP of HASS is a private IP and you have your internal DNS server (quite often a split-brain DNS scenario). This method works on both Google Home Mini and Google Chromecasts. +* An alternative way to force Google cast devices to use internal DNS is to block them from accessing Google DNS at the firewall/router level. This would be useful in the case, for example, where your internal IP of Home Assistant is a private IP and you have your internal DNS server (quite often a split-brain DNS scenario). This method works on both Google Home Mini and Google Chromecasts. ## Service say diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index 8b13a079709..66fa88c0527 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -50,4 +50,4 @@ password: ## Light -The light panels output state and brightness are synchronized with home assistant. +The light panels output state and brightness are synchronized with Home Assistant. diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 83f2d8376ba..73f2120adbb 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -54,7 +54,7 @@ ports: description: Map of ports to map from internal to external. Pass 'hass' as internal port to use the port Home Assistant runs on. Note that you have to enable port_mapping if you wish to map ports. required: false type: map - default: Open same port on external router as that HASS runs locally and forwards it. + default: Open same port on external router as that Home Assistant runs locally and forwards it. {% endconfiguration %} ## Troubleshooting diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 0af65a471c4..80905cda023 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -16,7 +16,7 @@ From a user perspective, utility meters operate in cycles (usually monthly) for Some utility providers have different tariffs according to time/resource availability/etc. The utility meter enables you to define the various tariffs supported by your utility provider and accounts your consumptions in accordance. When tariffs are defined a new entity will show up indicating the current tariff. In order to change the tariff, the user must call a service, usually through an automation that can be based in time or other external source (eg. a REST sensor).
    -Sensors created with this integration are persistent, so values are retained across restarts of home assistant. The first cycle for each sensor, will be incomplete; a sensor tracking daily usage, will start to be accurate the next day after the integration was activated. A sensor tracking monthly usage, will present accurate data starting the first of the next month after being added to home assistant. +Sensors created with this integration are persistent, so values are retained across restarts of Home Assistant. The first cycle for each sensor, will be incomplete; a sensor tracking daily usage, will start to be accurate the next day after the integration was activated. A sensor tracking monthly usage, will present accurate data starting the first of the next month after being added to Home Assistant.
    ## Configuration diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index be761f1c8f4..a0c48e3c46e 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -62,4 +62,4 @@ media_player: ##### Additional configuration for Rasperry Pi -You can run a VLC Media Player inside your Hassio installation using the [hassio-local-vlc add-on](https://github.com/rodripf/hassio-local-vlc). Using it you can play files on the local network, Internet or files and playlist locally saved to the /share folder of your Hassio installation. +You can run a VLC Media Player inside your Hass.io installation using the [hassio-local-vlc add-on](https://github.com/rodripf/hassio-local-vlc). Using it you can play files on the local network, Internet or files and playlist locally saved to the /share folder of your Hass.io installation. diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index 11ff99f2eda..d24968a0429 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -106,7 +106,7 @@ custom_effects: #### Music mode Per default the bulb limits the amount of requests per minute to 60, a limitation which can be bypassed by enabling the music mode. In music mode the bulb is commanded to connect back to a socket provided by the integration and it tries to keep the connection open, which may not be wanted in all use-cases. -**Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant. Bulbs in music mode may also not react to commands from HASS the first time if the connection is dropped. If you experience this issue, turn the light off and back on again in the frontend and everything will return to normal.** +**Also note that bulbs in music mode will not update their state to "unavailable" if they are disconnected, which can cause delays in Home Assistant. Bulbs in music mode may also not react to commands from Home Assistant the first time if the connection is dropped. If you experience this issue, turn the light off and back on again in the frontend and everything will return to normal.** ### Initial setup diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 4f9f83fcc52..a8133667aac 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -11,14 +11,14 @@ The steps below only apply if you've installed Home Assistant via Hass.io. If yo
    -We are going to help you make your first changes to `configuration.yaml`. To do this, we are going to install an add-on from the Hass.io add-on store: the HASS Configurator. To get to the add-on store, click on the menu icon in the top left, then click on Hass.io. On the new page, open the add-on store tab. +We are going to help you make your first changes to `configuration.yaml`. To do this, we are going to install an add-on from the Hass.io add-on store: the Configurator. To get to the add-on store, click on the menu icon in the top left, then click on Hass.io. On the new page, open the add-on store tab.

    From the Hass.io main panel, open the add-on store.

    -Under the "Core" section you will find HASS Configurator. +Under the "Core" section you will find Configurator. - Click on Configurator and click on INSTALL. When installation is complete, the UI will go to the add-on details page for the configurator. - Now start the add-on by clicking on START. diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 515f5e422ae..f908d0b5698 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -19,7 +19,7 @@ So here are guidelines: - Do not talk about YAML if it can be partially/fully done in UI. - Do not tell people about stuff they can do later. This can be added to a 2nd tier guide. - - The first page of the guide is for installation, hence hass.io specific. + - The first page of the guide is for installation, hence Hass.io specific. Other pages should not refer to it except for the page introducing the last page that introduces `configuration.yaml`. diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 05aedbfcc8c..6ecdb6dcc81 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -39,7 +39,7 @@ The following will take you through the steps required to install Hass.io. 3. Optional - set up the WiFi or static IP. There are two possible places for that: - on a blank USB stick with a FAT32 partition having partition label `CONFIG`, while in its root directory, create the `network/my-network` file, or - - on the Hassio SD card's first, bootable partition (labeled `hassio-boot`, might not be auto mounted in Linux) create the `CONFIG/network/my-network` file. + - on the Hass.io SD card's first, bootable partition (labeled `hassio-boot`, might not be auto mounted in Linux) create the `CONFIG/network/my-network` file. For the content of this file, follow the [HassOS howto][hassos-network]. From d383a5432482a976e8a45afe939e8221da2f1fac Mon Sep 17 00:00:00 2001 From: sdekker90 Date: Sun, 5 Jan 2020 14:57:37 +0100 Subject: [PATCH 196/236] Update samsungtv.markdown (#11639) Works on ES6100 --- source/_integrations/samsungtv.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 26fd4920b91..2942629fede 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -79,6 +79,7 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am - EH5600 - ES5500 - ES5700 +- ES6100 - ES6300 - ES6800 - F4580 From 997c64673e277a2d98b7c7ba60e81545d5eff0ea Mon Sep 17 00:00:00 2001 From: Jc2k Date: Sun, 5 Jan 2020 18:16:38 +0000 Subject: [PATCH 197/236] Mention fan support (#11638) --- source/_integrations/homekit_controller.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 0995d68656b..52aea041194 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -12,6 +12,7 @@ ha_category: - Switch - Binary Sensor - Sensor + - Fan ha_release: 0.68 ha_iot_class: Local Polling --- @@ -34,6 +35,7 @@ There is currently support for the following device types within Home Assistant: - Switch (HomeKit switches) - Binary Sensor (HomeKit motion, contact and smoke sensors) - Sensor (HomeKit humidity, temperature, co2 and light level sensors) +- Fan HomeKit IP accessories for these device types may work with some caveats: From d6cdd63b4952c69f64764ab28b1d922eeeb89ef3 Mon Sep 17 00:00:00 2001 From: ha14937 <56581105+ha14937@users.noreply.github.com> Date: Mon, 6 Jan 2020 02:04:27 -0500 Subject: [PATCH 198/236] HS110 clarifications (#11642) Hi all - my first proposed change, and it's minor. I ran into this issue where I misread the original and believed other devices (HS103's in my case) were supported for everything (control and sensors) when it's really just the HS110 that can create sensors. Anyway, I thought I would make it more clear for anyone else who may have misread it like I did. Cheers! --- source/_integrations/tplink.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 8a315124467..3fb5d2860ea 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -30,7 +30,7 @@ The following devices are known to work with this component. - HS100 - HS103 - HS105 -- HS110 +- HS110 (The only device capable or reporting energy usage data to template sensors) ### Strip (Multi-Plug) @@ -129,7 +129,7 @@ tplink: ## Extracting Energy Sensor data -In order to get the power consumption readings from supported devices, you'll have to create a [template sensor](/integrations/switch.template/). +In order to get the power consumption readings from a TP-Link HS110 device, you'll have to create a [template sensor](/integrations/switch.template/). In the example below, change all of the `my_tp_switch`'s to match your device's entity ID. {% raw %} From 1a2bcf023d68747349573f0a38f30ec15bf3d7a0 Mon Sep 17 00:00:00 2001 From: mannte Date: Mon, 6 Jan 2020 08:06:44 +0100 Subject: [PATCH 199/236] Update of the Google assistant SDK manual (#11640) The previous edit I made was not completely correct and only worked (partially) because I already had the Google Assistant Component API (not voice) activated. This is my previous pull request: https://github.com/home-assistant/home-assistant.io/pull/11600 --- source/_addons/google_assistant.markdown | 45 ++++++++++++++---------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 8af7a422b50..402a66ac34d 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -6,56 +6,65 @@ featured: true
    -If you want to integrate your Google Home or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component](/integrations/google_assistant/). +If you want to integrate your Google Home or mobile phone running Google Assistant, with Home Assistant, then you want the [Google Assistant component][AssistantIntergration].
    -[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the [DialogFlow][comp] integration with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. +[Google Assistant][GoogleAssistant] is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interacts via the [DialogFlow][comp] integration or the [Google Assistant component][AssistantIntergration] with Home-Assistant. You can also use [Google Actions][GoogleActions] to extend its functionality. To enable access to the Google Assistant API, do the following: +1. Go to the [Google Actions Console][GActionsConsole] and create a new project. +1. After you created the project on the bottom of the page click "Device registration". Keep this tab open for later use. +1. Enable the Google Assistant API on the new project through [this][enableAPI] link. Make sure you have the right project selected (shown in the middle of the screen in the top bar). If you can't select the right project, it may help to open the link in an incognito window. +1. Configure the [OAuth consent screen][OAuthConcent]. Also again check that you have the right project and don't forget to hit "Save" at the bottom of the page. You only have to fill in a project name and your e-mail. +1. You back to you device registration tab and click "Device registration". Or open you project in the [Google Actions Console][GActionsConsole] start the Quick setup, and in the left bar click "Device registration". +1. Give you project a name, think of a nice manufacturer and for device type select "speaker". +1. Edit you "model id", if you want to and copy it for later use. +1. Download the credentials. +1. Click "Next" and click "Skip". +1. Upload your credentials as "google_assistant.json" to the "hassio/share" folder, for example by using the [Samba] add-on. +1. In the Add-on configuration field fill-in you "project id" and your "model-id" and hit "Save". Your project id can be found in the Google Actions console by clicking on the top right menu button and selecting "Project settings". This id may differ from the project name that you choose! +1. Below the "Config" window select the microphone and speaker that you want to use. On a Raspberry Pi 3, ALSA device 0 is the built-in headset port and ALSA device 1 is the HDMI port. Also don't forget to click "Save". +1. Start the add-on. Check the log and click refresh till it says: "ENGINE Bus STARTED". +1. Now click "Open Web UI" and follow the authentication process. You will get an empty response after you have send your token. -1. In the [Cloud Platform Console][project], go to the Projects page. Select an existing project or create a new project -1. Open the project. In the top of the page search for Google Assistant API or use [this link][API] and enable it. -1. Create an [OAuth Client ID][oauthclient], pick type "Other", click "Create" and download the JSON file by clicking the Download JSON button on the right side. -1. Upload your "google_assistant.json" file to the "hassio/share" folder, for example by using the [Samba] add-on. -1. In the config window, fill in your "project-id", which can be found in your "google_assistant.json" file or in on the [Cloud Platform Resource Manager][cloudConsole]. Also choose a "model_id". -1. Below the "Config" window select the microphone and speaker that you want to use. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. - -You are now ready to start the add-on. The next step is to authenticate your Google account with Google Assistant. After starting the add-on and click on the "OPEN WEB UI" button to start authentication. +That's it. You should no be able to use the Google Voice assistant. ### Add-on configuration -Configuration example that uses the USB microphone and the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device. - ```json { "client_secrets": "google_assistant.json", - "project_id": null, - "model_id": null + "project_id": "you-project-id", + "model_id": "your-model-id" } ``` {% configuration %} client_secrets: - description: The file downloaded from the Google Cloud Platform Console - Google Assistant API page. By default the add-on look in the "hassio/share" folder. + description: The file downloaded from the [Google Actions Console][GActionsConsole], you can redownload them under the "Develop - Device registration" tab. By default the add-on look in the "hassio/share" folder. required: true type: string project_id: - description: The project id can be found in your "google_assistant.json" file. + description: The project id can be found in your "google_assistant.json" file or under project settings in the [Google Actions Console][GActionsConsole]. required: true type: string model_id: - description: A chosen model_id. + description: The model id can also be found under the "Develop - Device registration tab" in the [Google Actions Console][GActionsConsole]. required: true type: string {% endconfiguration %} ### Home Assistant configuration -Use the Home Assistant [DialogFlow component][comp] to integrate the add-on into Home Assistant. +Use the Home Assistant [DialogFlow component][comp] to integrate the add-on into Home Assistant or combine it with the [Google Assistant component][AssistantIntergration]. +[AssistantIntergration]: /integrations/google_assistant/ [GoogleAssistant]: https://assistant.google.com/ [GoogleActions]: https://actions.google.com/ +[GActionsConsole]: https://console.actions.google.com/ +[enableAPI]: https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview +[OAuthConcent]: https://console.developers.google.com/apis/credentials/consent [Samba]: /addons/samba/ [comp]: /integrations/dialogflow/ [project]: https://console.cloud.google.com/project From d6bf73ae8c8a584652d2f62719f75410d1724c70 Mon Sep 17 00:00:00 2001 From: brefra Date: Mon, 6 Jan 2020 10:19:29 +0100 Subject: [PATCH 200/236] Add automation example to Velbus integration (#11623) * Add automation example to Velbus integration * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/velbus.markdown | 58 +++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index 9600396318a..235dd9ccf91 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -13,7 +13,7 @@ ha_iot_class: Local Push ha_release: "0.50" --- -The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. +The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway. There is currently support for the following device types within Home Assistant: @@ -24,6 +24,8 @@ There is currently support for the following device types within Home Assistant: - Cover - Light +The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface. + ## Configuration There are 2 options in configuring the velbus integration: @@ -50,3 +52,57 @@ port: required: true type: string {% endconfiguration %} + +## Example automation + +The Velbus integration allows you to link a Velbus button (i.e., a button of a [VMBGPOD](https://www.velbus.eu/products/view/?id=416302&lang=en) module) to a controllable entity of Home Assistant. +The actual linking can be realized by two automation rules. One rule to control the device using the push button and a second rule to update the LED state of the push button as soon as the entity state changes. + +```yaml +# Control light living from Velbus push_button_10 +- id: 'Control_light_living_from_Velbus' + alias: Control light living using Velbus push_button_10 + trigger: + - entity_id: binary_sensor.push_button_10 + platform: state + to: 'on' + condition: [] + action: + - entity_id: light.living + service: light.toggle + +# Keep status LED push_button_10 in sync to status light living +- id: 'Update LED of push_button_10' + alias: Update LED state of push_button_10 + trigger: + - entity_id: light.living + platform: state + to: 'on' + - entity_id: light.living + platform: state + to: 'off' + condition: [] + action: + - condition: or + conditions: + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'on' + - condition: state + entity_id: light.living + state: 'off' + - condition: and + conditions: + - condition: state + entity_id: light.led_push_button_10 + state: 'off' + - condition: state + entity_id: light.living + state: 'on' + - entity_id: light.led_push_button_10 + service: light.toggle +``` + + From 13d5d76feaf47dbd5a3363f0ba6f5f1e42d4a7f7 Mon Sep 17 00:00:00 2001 From: ochlocracy <5885236+ochlocracy@users.noreply.github.com> Date: Mon, 6 Jan 2020 04:19:54 -0500 Subject: [PATCH 201/236] Add support for Alexa locale configuration (#11566) --- source/_integrations/alexa.smart_home.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown index 0d016189628..330ad3bd066 100644 --- a/source/_integrations/alexa.smart_home.markdown +++ b/source/_integrations/alexa.smart_home.markdown @@ -207,6 +207,7 @@ Example configuration: ```yaml alexa: smart_home: + locale: en-US endpoint: https://api.amazonalexa.com/v3/events client_id: !secret alexa_client_id client_secret: !secret alexa_client_secret @@ -226,6 +227,8 @@ alexa: display_categories: LIGHT ``` +Set the `locale` to the locale of your Alexa devices. Supported locales are: `de-DE`, `en-AU`, `en-CA`, `en-GB`, `en-IN`, `en-US`, `es-ES`, `es-MX`, `fr-CA`, `fr-FR`, `it-IT`, `ja-JP`. Default is `en-US`. + The `endpoint`, `client_id` and `client_secret` are optional, and are only required if you want to enable Alexa's proactive mode (i.e. "Send Alexa Events" enabled). Please note the following if you want to enable proactive mode: - There are different endpoint URLs, depending on the region of your skill. Please check the available endpoints at From b701713cfdde84610bd7bc18458d534c7648780d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 6 Jan 2020 10:36:18 +0100 Subject: [PATCH 202/236] Remove OrangePi Prime (#11644) --- source/hassio/installation.markdown | 2 -- 1 file changed, 2 deletions(-) diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 6ecdb6dcc81..10fd6064656 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -16,7 +16,6 @@ The following will take you through the steps required to install Hass.io. - [Tinkerboard][tinker] - [Odroid-C2][odroid-c2] - [Odroid-XU4][odroid-xu4] - - [OrangePi-Prime][opi-prime] - [Intel-Nuc][intel-nuc] - As a virtual appliance: @@ -218,7 +217,6 @@ A detailed guide about running Hass.io as a virtual machine is available in the [tinker]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_tinker-3.7.img.gz [odroid-c2]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_odroid-c2-3.7.img.gz [odroid-xu4]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_odroid-xu4-3.7.img.gz -[opi-prime]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_opi-prime-3.7.img.gz [intel-nuc]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_intel-nuc-3.7.img.gz [vmdk]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_ova-3.7.vmdk.gz [vhdx]: https://github.com/home-assistant/hassos/releases/download/3.7/hassos_ova-3.7.vhdx.gz From fa4e1e9c4d6f09b879f543b1ae8927215aaabeb1 Mon Sep 17 00:00:00 2001 From: Felix Eckhofer Date: Mon, 6 Jan 2020 11:02:57 +0100 Subject: [PATCH 203/236] Use explicit links inside configuration blocks (#11645) The converter used in the configuration plugin is not aware of references declared outside of the block and therefore fails to render reference links. This replaces them with explicit links. Resolves #11643 --- source/_addons/google_assistant.markdown | 6 +++--- source/_integrations/alert.markdown | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_addons/google_assistant.markdown b/source/_addons/google_assistant.markdown index 402a66ac34d..162c90fac3d 100644 --- a/source/_addons/google_assistant.markdown +++ b/source/_addons/google_assistant.markdown @@ -42,15 +42,15 @@ That's it. You should no be able to use the Google Voice assistant. {% configuration %} client_secrets: - description: The file downloaded from the [Google Actions Console][GActionsConsole], you can redownload them under the "Develop - Device registration" tab. By default the add-on look in the "hassio/share" folder. + description: The file downloaded from the [Google Actions Console](https://console.actions.google.com/), you can redownload them under the "Develop - Device registration" tab. By default the add-on look in the "hassio/share" folder. required: true type: string project_id: - description: The project id can be found in your "google_assistant.json" file or under project settings in the [Google Actions Console][GActionsConsole]. + description: The project id can be found in your "google_assistant.json" file or under project settings in the [Google Actions Console](https://console.actions.google.com/). required: true type: string model_id: - description: The model id can also be found under the "Develop - Device registration tab" in the [Google Actions Console][GActionsConsole]. + description: The model id can also be found under the "Develop - Device registration tab" in the [Google Actions Console](https://console.actions.google.com/). required: true type: string {% endconfiguration %} diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index 1791e897d33..392ea2c5af6 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -51,7 +51,7 @@ entity_id: title: description: > A title to be used for the notification if the notifier supports it - with [template][template] support. + with [template](/docs/configuration/templating/) support. required: false type: template state: @@ -80,13 +80,13 @@ skip_first: message: description: > A message to be sent after an alert transitions from `off` to `on` - with [template][template] support. + with [template](/docs/configuration/templating/) support. required: false type: template done_message: description: > - A message sent after an alert transitions from `on` to `off` with - [template][template] support. Is only sent if an alert notification + A message sent after an alert transitions from `on` to `off` with + [template](/docs/configuration/templating/) support. Is only sent if an alert notification was sent for transitioning from `off` to `on`. required: false type: template @@ -205,7 +205,7 @@ sent at 2:15, 2:45, 3:45, 4:45, etc., continuing every 60 minutes. ### Message Templates It may be desirable to have the alert notifications include information -about the state of the entity. [Templates](/docs/configuration/templating/) +about the state of the entity. [Templates][template] can be used in the message or name of the alert to make it more relevant. The following will show for a plant how to include the problem `attribute` of the entity. From 6a0fc0b2523ae6fb1ff1a376135dece7faca2bff Mon Sep 17 00:00:00 2001 From: SukramJ Date: Mon, 6 Jan 2020 14:35:47 +0100 Subject: [PATCH 204/236] Add HmIP-WHS and HmIP-PMFS to HomematicIP Cloud (#11582) --- source/_integrations/homematicip_cloud.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index bb9e698a9ff..5974fa77529 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -102,6 +102,7 @@ Within this delay the device registration should be completed in the App, otherw * Key Ring Remote Control - alarm (*HmIP-KRCA*) (battery only) * Alarm Siren (*HmIP-ASIR, -B1*) (battery only) * Remote Control for brand switches – 2-button (*HmIP-BRC2*) (battery only) + * Pluggable Power Supply Monitoring (*HmIP-PMFS*) * homematicip_cloud.climate * Climate group (*HmIP-HeatingGroup*) @@ -154,6 +155,7 @@ Within this delay the device registration should be completed in the App, otherw * Switch Circuit Board - 1x channels (*HmIP-PCBS*) * Switch Circuit Board - 2x channels (*HmIP-PCBS2*) * Printed Circuit Board Switch Battery (*HmIP-PCBS-BAT*) + * Switch Actuator for heating systems – 2 channels (*HmIP-WHS2*) * homematicip_cloud.weather * Weather Sensor – basic (*HmIP-SWO-B*) From 8f740dc845d48d63ebf00d929a8417ddb55204b2 Mon Sep 17 00:00:00 2001 From: Marco H Date: Mon, 6 Jan 2020 21:43:27 +0100 Subject: [PATCH 205/236] Fix typo (#11647) Fix typo in "headding" --- source/_integrations/dwd_weather_warnings.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index 4622f4b2e7c..66b02de701a 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -30,7 +30,7 @@ As it suggests the region name is not the city or nearest city you want to get t Be aware, to get the region name you need to use the following link by replacing `Hamburg` with your city: - Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg` -- On the page that is loaded in your browser you will find the correct region ("Kreis") below the map as a headding. +- On the page that is loaded in your browser you will find the correct region ("Kreis") below the map as a heading. - Verify if you find any warning for your region here. Your region ("Kreis") will appear only if warnings exist: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings`
    From 639d9047e2c94d57f2c5187acc247db1efb3cbda Mon Sep 17 00:00:00 2001 From: Jc2k Date: Mon, 6 Jan 2020 20:45:23 +0000 Subject: [PATCH 206/236] Mention homekit_controller air quality support (#11641) --- source/_integrations/homekit_controller.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 52aea041194..fccc6e48556 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -13,6 +13,7 @@ ha_category: - Binary Sensor - Sensor - Fan + - Health ha_release: 0.68 ha_iot_class: Local Polling --- @@ -36,6 +37,7 @@ There is currently support for the following device types within Home Assistant: - Binary Sensor (HomeKit motion, contact and smoke sensors) - Sensor (HomeKit humidity, temperature, co2 and light level sensors) - Fan +- Air Quality HomeKit IP accessories for these device types may work with some caveats: From 0e49f981219854080a68b1d10d28fe18fa16a5cc Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 6 Jan 2020 22:04:23 +0100 Subject: [PATCH 207/236] 103.6 --- _config.yml | 4 +-- source/_posts/2019-12-11-release-103.markdown | 25 +++++++++++++++++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/_config.yml b/_config.yml index 89d27b569a1..1ff688248a1 100644 --- a/_config.yml +++ b/_config.yml @@ -101,8 +101,8 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 103 -current_patch_version: 5 -date_released: 2019-12-28 +current_patch_version: 6 +date_released: 2020-01-06 # 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-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index 8db433707b2..72280521c0b 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -315,7 +315,7 @@ All services for use in Home Assistant are moved to their integration naming spa ## Release 0.103.4 - December 22 - Remove requirement from entity integration ([@balloob] - [#30113]) ([doods docs]) ([image_processing docs]) ([seven_segments docs]) ([tensorflow docs]) -- Move imports into setup function in homekit __init__.py ([@springstan] - [#30137]) ([homekit docs]) +- Move imports into setup function in homekit **init**.py ([@springstan] - [#30137]) ([homekit docs]) - Fix deconz SSDP updating Hassio discovery ([@frenck] - [#30153]) ([deconz docs]) - Allow battery value of 0 as well as make sure to not create a battery tracker if one already exist ([@Kane610] - [#30155]) ([deconz docs]) @@ -323,7 +323,7 @@ All services for use in Home Assistant are moved to their integration naming spa [#30137]: https://github.com/home-assistant/home-assistant/pull/30137 [#30153]: https://github.com/home-assistant/home-assistant/pull/30153 [#30155]: https://github.com/home-assistant/home-assistant/pull/30155 -[@Kane610]: https://github.com/Kane610 +[@kane610]: https://github.com/Kane610 [@balloob]: https://github.com/balloob [@frenck]: https://github.com/frenck [@springstan]: https://github.com/springstan @@ -342,6 +342,27 @@ All services for use in Home Assistant are moved to their integration naming spa [@tchellomello]: https://github.com/tchellomello [ring docs]: /components/ring/ +## Release 0.103.6 - January 6 + +- Handle wired bug on restart ([@Kane610] - [#30276]) ([unifi docs]) +- Bump pysmartthings 0.7.0 ([@andrewsayre] - [#30302]) ([smartthings docs]) +- Bump env_canada to 0.0.31 ([@michaeldavie] - [#30409]) ([environment_canada docs]) +- Fix google sync ([@balloob] - [#30524]) ([cloud docs]) ([google_assistant docs]) + +[#30276]: https://github.com/home-assistant/home-assistant/pull/30276 +[#30302]: https://github.com/home-assistant/home-assistant/pull/30302 +[#30409]: https://github.com/home-assistant/home-assistant/pull/30409 +[#30524]: https://github.com/home-assistant/home-assistant/pull/30524 +[@kane610]: https://github.com/Kane610 +[@andrewsayre]: https://github.com/andrewsayre +[@balloob]: https://github.com/balloob +[@michaeldavie]: https://github.com/michaeldavie +[cloud docs]: /integrations/cloud/ +[environment_canada docs]: /integrations/environment_canada/ +[google_assistant docs]: /integrations/google_assistant/ +[smartthings docs]: /integrations/smartthings/ +[unifi docs]: /integrations/unifi/ + ## 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). From 3f58993701d2d1fb1830da61c650129485aa801a Mon Sep 17 00:00:00 2001 From: Trekky12 Date: Tue, 7 Jan 2020 02:13:24 +0100 Subject: [PATCH 208/236] Add documentation for pilight dimmer as light (#11531) * Add documentation for pilight dimmer as light see https://github.com/home-assistant/home-assistant/pull/30107 * Change dimmers to light --- source/_integrations/pilight.markdown | 47 +++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index a21cb9fc815..933059abf4d 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -22,6 +22,7 @@ There is currently support for the following device types within Home Assistant: - [Binary Sensor](#binary-sensor) - [Sensor](#sensor) - [Switch](#switch) +- [Light](#light) ## Configuration @@ -304,6 +305,52 @@ switch: state: 'off' ``` +## Light + +Pilight dimmer devices, which can have different brightness values, can be used as a light. +The configuration parameters are the same for dimmers and switches. + +{% configuration %} +lights: + description: The list that contains all command lights. + required: true + type: string + keys: + entry: + description: Name of the command light, which are the same like for switches. Multiple entries are possible. + required: true + type: list +{% endconfiguration %} + +### Example + +```yaml +light: + - platform: pilight + lights: + test2: + on_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'on': 1 + off_code: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + 'off': 1 + on_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'on' + off_code_receive: + protocol: kaku_dimmer + id: 23298822 + unit: 10 + state: 'off' +``` + ## Troubleshooting - A list of tested RF transceiver hardware is available [here](https://manual.pilight.org/electronics/index.html). This might be useful before buying. From 497dfc4bcb77a4e79c1db8f77cec27d9ff541bb7 Mon Sep 17 00:00:00 2001 From: Eleftherios Chamakiotis Date: Tue, 7 Jan 2020 03:17:29 +0200 Subject: [PATCH 209/236] Added documentation for "autobypass" option added to the AlarmDecoder integration (#11470) * Added documentation for "autobypass" option added to the AlarmDecoder integration * Update source/_integrations/alarmdecoder.markdown Co-Authored-By: Franck Nijhof * Removed the autobypass option from the default configuration, as suggested * Minor text change * Jekyll build is failing, so trying to spot the problem * Update source/_integrations/alarmdecoder.markdown Co-Authored-By: Franck Nijhof * Restored original zone numbers in the example configuration, as it was not related to the preview-deploy problem Co-authored-by: Franck Nijhof --- source/_integrations/alarmdecoder.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 7bf65735817..4ec7c71d9f6 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -80,6 +80,11 @@ panel_display: required: false default: false type: boolean +autobypass: + description: "If this is set to `true`, then when arming (home or away), it will automatically bypass all open zones (sending '6#')." + required: false + default: false + type: boolean zones: description: "AlarmDecoder has no way to tell us which zones are actually in use, so each zone must be configured in Home Assistant. For each zone, at least a name must be given. For more information on the available zone types, take a look at the [Binary Sensor](/integrations/alarmdecoder) docs. *Note: If no zones are specified, Home Assistant will not load any binary_sensor integrations.*" required: false From b6a904933b1bc5e6d49c47133059766997be0067 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Tue, 7 Jan 2020 13:58:15 +0200 Subject: [PATCH 210/236] Code blocks (#11648) * Run black on Python code blocks, syntax fixes https://github.com/scop/misc/blob/master/black_markdown.py * Code block language marker fixes * String formatting style tweaks --- .../python_component_automation.markdown | 60 ++++-- .../python_component_mqtt_basic.markdown | 16 +- .../python_component_simple_alarm.markdown | 42 +++-- .../configuration/group_visibility.markdown | 36 ++-- source/_docs/ecosystem/appdaemon.markdown | 77 ++++---- source/_docs/ecosystem/appdaemon/api.markdown | 171 +++++++++++------- .../ecosystem/appdaemon/tutorial.markdown | 67 ++++--- source/_docs/z-wave/control-panel.markdown | 2 +- source/_integrations/deconz.markdown | 80 ++++---- source/_integrations/history.markdown | 1 + source/_integrations/http.markdown | 10 +- source/_integrations/python_script.markdown | 14 +- source/_integrations/ring.markdown | 12 +- .../sensor.command_line.markdown | 5 +- source/_integrations/telegram.markdown | 2 +- .../_integrations/telegram_chatbot.markdown | 112 +++++++----- source/_integrations/worldclock.markdown | 2 +- 17 files changed, 401 insertions(+), 308 deletions(-) diff --git a/source/_cookbook/python_component_automation.markdown b/source/_cookbook/python_component_automation.markdown index 9b55b7653e3..f37ad9a61f5 100644 --- a/source/_cookbook/python_component_automation.markdown +++ b/source/_cookbook/python_component_automation.markdown @@ -41,12 +41,20 @@ import voluptuous as vol import homeassistant.components as core import homeassistant.helpers.config_validation as cv from homeassistant.components import device_tracker, light -from homeassistant.const import (ATTR_ENTITY_ID, SERVICE_TURN_OFF, - SERVICE_TURN_ON, STATE_HOME, STATE_NOT_HOME, - STATE_OFF, STATE_ON) +from homeassistant.const import ( + ATTR_ENTITY_ID, + SERVICE_TURN_OFF, + SERVICE_TURN_ON, + STATE_HOME, + STATE_NOT_HOME, + STATE_OFF, + STATE_ON, +) from homeassistant.core import split_entity_id -from homeassistant.helpers.event import (async_track_state_change, - async_track_time_change) +from homeassistant.helpers.event import ( + async_track_state_change, + async_track_time_change, +) # The domain of your component. Should be equal to the name of your component. DOMAIN = "example" @@ -54,26 +62,26 @@ DOMAIN = "example" # List of integration names (string) your integration depends upon. # We depend on group because group will be loaded after all the integrations that # initialize devices have been setup. -DEPENDENCIES = ['group', 'device_tracker', 'light'] +DEPENDENCIES = ["group", "device_tracker", "light"] # Configuration key for the entity id we are targeting. -CONF_TARGET = 'target' +CONF_TARGET = "target" # Variable for storing configuration parameters. TARGET_ID = None # Name of the service that we expose. -SERVICE_FLASH = 'flash' +SERVICE_FLASH = "flash" # Shortcut for the logger _LOGGER = logging.getLogger(__name__) # Validate that all required config options are given. -CONFIG_SCHEMA = vol.Schema({ - DOMAIN: vol.Schema({ - vol.Optional(CONF_TARGET): cv.entity_id - }) -}, extra=vol.ALLOW_EXTRA) +CONFIG_SCHEMA = vol.Schema( + {DOMAIN: vol.Schema({vol.Optional(CONF_TARGET): cv.entity_id})}, + extra=vol.ALLOW_EXTRA, +) + async def async_setup(hass, config): """Setup example component.""" @@ -84,8 +92,7 @@ async def async_setup(hass, config): # Validate that the target entity id exists. if hass.states.get(TARGET_ID) is None: - _LOGGER.error("Target entity id %s does not exist", - TARGET_ID) + _LOGGER.error("Target entity id %s does not exist", TARGET_ID) # Tell the bootstrapper that we failed to initialize and clear the # stored target id so our functions don't run. @@ -120,7 +127,7 @@ async def async_setup(hass, config): return if device_tracker.is_on(hass) and not core.is_on(hass, TARGET_ID): - _LOGGER.info('People home at 7AM, turning target on') + _LOGGER.info("People home at 7AM, turning target on") await hass.services.async_call(domain, SERVICE_TURN_ON, data) async def async_flash_service(service): @@ -133,7 +140,9 @@ async def async_setup(hass, config): if core.is_on(hass, TARGET_ID): # We need this call to run blocking, as we want to wait 10s after it finished - await hass.services.async_call(domain, SERVICE_TURN_OFF, data, blocking=True) + await hass.services.async_call( + domain, SERVICE_TURN_OFF, data, blocking=True + ) time.sleep(10) await hass.services.async_call(domain, SERVICE_TURN_ON, data) else: @@ -146,15 +155,26 @@ async def async_setup(hass, config): # If all lights turn off, turn off. async_track_state_change( - hass, light.ENTITY_ID_ALL_LIGHTS, async_switch_off, STATE_ON, STATE_OFF) + hass, light.ENTITY_ID_ALL_LIGHTS, async_switch_off, STATE_ON, STATE_OFF + ) # If all people leave the house and the entity is on, turn it off. async_track_state_change( - hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_off, STATE_HOME, STATE_NOT_HOME) + hass, + device_tracker.ENTITY_ID_ALL_DEVICES, + async_switch_off, + STATE_HOME, + STATE_NOT_HOME, + ) # If anyone comes home and the entity is not on, turn it on. async_track_state_change( - hass, device_tracker.ENTITY_ID_ALL_DEVICES, async_switch_on, STATE_NOT_HOME, STATE_HOME) + hass, + device_tracker.ENTITY_ID_ALL_DEVICES, + async_switch_on, + STATE_NOT_HOME, + STATE_HOME, + ) # Call wakeup callback at 7 AM async_track_time_change(hass, async_wake_up, hour=7, minute=00, second=00) diff --git a/source/_cookbook/python_component_mqtt_basic.markdown b/source/_cookbook/python_component_mqtt_basic.markdown index 0824b4788c1..5801ec44d18 100644 --- a/source/_cookbook/python_component_mqtt_basic.markdown +++ b/source/_cookbook/python_component_mqtt_basic.markdown @@ -18,21 +18,21 @@ This example follows a topic on MQTT and updates the state of an entity to the l import homeassistant.loader as loader # The domain of your component. Should be equal to the name of your component. -DOMAIN = 'hello_mqtt' +DOMAIN = "hello_mqtt" # List of integration names (string) your integration depends upon. -DEPENDENCIES = ['mqtt'] +DEPENDENCIES = ["mqtt"] -CONF_TOPIC = 'topic' -DEFAULT_TOPIC = 'home-assistant/hello_mqtt' +CONF_TOPIC = "topic" +DEFAULT_TOPIC = "home-assistant/hello_mqtt" def setup(hass, config): """Set up the Hello MQTT component.""" mqtt = hass.components.mqtt topic = config[DOMAIN].get(CONF_TOPIC, DEFAULT_TOPIC) - entity_id = 'hello_mqtt.last_message' + entity_id = "hello_mqtt.last_message" # Listener to be called when we receive a message. # The msg parameter is a Message object with the following members: @@ -45,15 +45,15 @@ def setup(hass, config): mqtt.subscribe(topic, message_received) # Set the initial state. - hass.states.set(entity_id, 'No messages') + hass.states.set(entity_id, "No messages") # Service to publish a message on MQTT. def set_state_service(call): """Service to send a message.""" - mqtt.publish(topic, call.data.get('new_state')) + mqtt.publish(topic, call.data.get("new_state")) # Register our service with Home Assistant. - hass.services.register(DOMAIN, 'set_state', set_state_service) + hass.services.register(DOMAIN, "set_state", set_state_service) # Return boolean to indicate that initialization was successfully. return True diff --git a/source/_cookbook/python_component_simple_alarm.markdown b/source/_cookbook/python_component_simple_alarm.markdown index 67ce2b1c329..376d278217d 100644 --- a/source/_cookbook/python_component_simple_alarm.markdown +++ b/source/_cookbook/python_component_simple_alarm.markdown @@ -43,19 +43,19 @@ _LOGGER = logging.getLogger(__name__) DOMAIN = 'simple_alarm"' -DEPENDENCIES = ['group', 'device_tracker', 'light'] +DEPENDENCIES = ["group", "device_tracker", "light"] # Attribute to tell which light has to flash when a known person comes home # If omitted will flash all. -CONF_KNOWN_LIGHT = 'known_light' +CONF_KNOWN_LIGHT = "known_light" # Attribute to tell which light has to flash when an unknown person comes home # If omitted will flash all. -CONF_UNKNOWN_LIGHT = 'unknown_light' +CONF_UNKNOWN_LIGHT = "unknown_light" # Services to test the alarms -SERVICE_TEST_KNOWN_ALARM = 'test_known' -SERVICE_TEST_UNKNOWN_ALARM = 'test_unknown' +SERVICE_TEST_KNOWN_ALARM = "test_known" +SERVICE_TEST_UNKNOWN_ALARM = "test_unknown" def setup(hass, config): @@ -66,8 +66,7 @@ def setup(hass, config): light_id = config[DOMAIN].get(conf_key, light.ENTITY_ID_ALL_LIGHTS) if hass.states.get(light_id) is None: - _LOGGER.error( - "Light id %s could not be found in state machine", light_id) + _LOGGER.error("Light id %s could not be found in state machine", light_id) return False @@ -88,18 +87,19 @@ def setup(hass, config): def unknown_alarm(): """ Fire an alarm if the light turns on while no one is home. """ light.turn_on( - hass, unknown_light_id, - flash=light.FLASH_LONG, rgb_color=[255, 0, 0]) + hass, unknown_light_id, flash=light.FLASH_LONG, rgb_color=[255, 0, 0] + ) # Send a message to the user notify.send_message( - hass, "The lights just got turned on while no one was home.") + hass, "The lights just got turned on while no one was home." + ) # Setup services to test the effect + hass.services.register(DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm()) hass.services.register( - DOMAIN, SERVICE_TEST_KNOWN_ALARM, lambda call: known_alarm()) - hass.services.register( - DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm()) + DOMAIN, SERVICE_TEST_UNKNOWN_ALARM, lambda call: unknown_alarm() + ) def unknown_alarm_if_lights_on(entity_id, old_state, new_state): """Called when a light has been turned on.""" @@ -107,8 +107,12 @@ def setup(hass, config): unknown_alarm() track_state_change( - hass, light.ENTITY_ID_ALL_LIGHTS, - unknown_alarm_if_lights_on, STATE_OFF, STATE_ON) + hass, + light.ENTITY_ID_ALL_LIGHTS, + unknown_alarm_if_lights_on, + STATE_OFF, + STATE_ON, + ) def ring_known_alarm(entity_id, old_state, new_state): """Called when a known person comes home.""" @@ -117,8 +121,12 @@ def setup(hass, config): # Track home coming of each device track_state_change( - hass, hass.states.entity_ids(device_tracker.DOMAIN), - ring_known_alarm, STATE_NOT_HOME, STATE_HOME) + hass, + hass.states.entity_ids(device_tracker.DOMAIN), + ring_known_alarm, + STATE_NOT_HOME, + STATE_HOME, + ) return True ``` diff --git a/source/_docs/configuration/group_visibility.markdown b/source/_docs/configuration/group_visibility.markdown index df670c509ea..e42969e4517 100644 --- a/source/_docs/configuration/group_visibility.markdown +++ b/source/_docs/configuration/group_visibility.markdown @@ -59,33 +59,39 @@ One of the most common uses cases are to show groups during certain times of day from datetime import time, datetime + def mk_occasion(name, start, end, days=None): - s = start.split(':') - e = end.split(':') - return {'name' : name, - 'start': time(int(s[0]), int(s[1]), int(s[2])), - 'end' : time(int(e[0]), int(e[1]), int(e[2])), - 'days' : days} + s = start.split(":") + e = end.split(":") + return { + "name": name, + "start": time(int(s[0]), int(s[1]), int(s[2])), + "end": time(int(e[0]), int(e[1]), int(e[2])), + "days": days, + } + # Matching is done from top to bottom OCCASIONS = [ # More specific occasions - mk_occasion('work_morning', '06:00:00', '07:10:00', range(5)), - + mk_occasion("work_morning", "06:00:00", "07:10:00", range(5)), # General matching - mk_occasion('weekday', '00:00:00', '23:59:59', range(5)), - mk_occasion('weekend', '00:00:00', '23:59:59', [5, 6]) + mk_occasion("weekday", "00:00:00", "23:59:59", range(5)), + mk_occasion("weekend", "00:00:00", "23:59:59", [5, 6]), ] -def get_current_occasion(occasion_list, default_occasion='normal'): + +def get_current_occasion(occasion_list, default_occasion="normal"): now = datetime.now() for occasion in OCCASIONS: - if occasion['start'] <= now.time() <= occasion['end'] and \ - (occasion['days'] is None or now.weekday() in occasion['days']): - return occasion['name'] + if occasion["start"] <= now.time() <= occasion["end"] and ( + occasion["days"] is None or now.weekday() in occasion["days"] + ): + return occasion["name"] return default_occasion -if __name__ == '__main__': + +if __name__ == "__main__": print(get_current_occasion(OCCASIONS)) ``` diff --git a/source/_docs/ecosystem/appdaemon.markdown b/source/_docs/ecosystem/appdaemon.markdown index 5f8e20b8284..44722632095 100644 --- a/source/_docs/ecosystem/appdaemon.markdown +++ b/source/_docs/ecosystem/appdaemon.markdown @@ -31,18 +31,17 @@ Let's start with a simple App to turn a light on every night at sunset and off e ```python import appdaemon.plugins.hass.hassapi as hass + class OutsideLights(hass.Hass): + def initialize(self): + self.run_at_sunrise(self.sunrise_cb) + self.run_at_sunset(self.sunset_cb) - def initialize(self): - self.run_at_sunrise(self.sunrise_cb) - self.run_at_sunset(self.sunset_cb) - - def sunrise_cb(self, kwargs): - self.turn_on(self.args["off_scene"]) - - def sunset_cb(self, kwargs): - self.turn_on(self.args["on_scene"]) + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + def sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) ``` This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. @@ -54,18 +53,18 @@ Our next example is to turn on a light when motion is detected and it is dark, a ```python import appdaemon.plugins.hass.hassapi as hass -class FlashyMotionLights(hass.Hass): - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new="on") - - def motion(self, entity, attribute, old, new, kwargs): - if self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - - def light_off(self, kwargs): - self.turn_off("light.drive") +class FlashyMotionLights(hass.Hass): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + + def light_off(self, kwargs): + self.turn_off("light.drive") ``` This is starting to get a little more complex in Home Assistant automations, requiring an automation rule and two separate scripts. @@ -75,26 +74,26 @@ Now let's extend this with a somewhat artificial example to show something that ```python import appdaemon.plugins.hass.hassapi as hass -class MotionLights(hass.Hass): - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new="on") - - def motion(self, entity, attribute, old, new, kwargs): - if self.self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - self.flashcount = 0 - self.run_in(self.flash_warning, 1) - - def light_off(self, kwargs): - self.turn_off("light.drive") - - def flash_warning(self, kwargs): - self.toggle("light.living_room") - self.flashcount += 1 - if self.flashcount < 10: - self.run_in(self.flash_warning, 1) +class MotionLights(hass.Hass): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") + + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) + + def light_off(self, kwargs): + self.turn_off("light.drive") + + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) ``` Of course, if I wanted to make this App or its predecessor reusable, I would have provide parameters for the sensor, the light to activate on motion, the warning light, and even the number of flashes and delay between flashes. diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index 80afe9b3494..a81aba672da 100644 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -13,13 +13,16 @@ The first step is to create a unique file within the apps directory (as defined ```python import homeassistant.appapi as appapi + class MotionLights(appapi.AppDaemon): + """Motion lights implementation.""" ``` When configured as an app in the config file (more on that later) the lifecycle of the App begins. It will be instantiated as an object by AppDaemon, and immediately, it will have a call made to its `initialize()` function - this function must appear as part of every app: ```python def initialize(self): + """Perform initialization.""" ``` The initialize function allows the app to register any callbacks it might need for responding to state changes, and also any setup activities. When the `initialize()` function returns, the App will be dormant until any of its callbacks are activated. @@ -50,17 +53,17 @@ import datetime # Declare Class class NightLight(appapi.AppDaemon): - #initialize() function which will be called at startup and reload - def initialize(self): - # Create a time object for 7pm - time = datetime.time(19, 00, 0) - # Schedule a daily callback that will call run_daily() at 7pm every night - self.run_daily(self.run_daily_callback, time) + # initialize() function which will be called at startup and reload + def initialize(self): + # Create a time object for 7pm + time = datetime.time(19, 00, 0) + # Schedule a daily callback that will call run_daily() at 7pm every night + self.run_daily(self.run_daily_callback, time) - # Our callback function will be called by the scheduler every day at 7pm - def run_daily_callback(self, kwargs): - # Call to Home Assistant to turn the porch light on - self.turn_on("light.porch") + # Our callback function will be called by the scheduler every day at 7pm + def run_daily_callback(self, kwargs): + # Call to Home Assistant to turn the porch light on + self.turn_on("light.porch") ``` To summarize - an App's lifecycle consists of being initialized, which allows it to set one or more state and/or schedule callbacks. When those callbacks are activated, the App will typically use one of the Service Calling calls to effect some change to the devices of the system and then wait for the next relevant state change. That's all there is to it! @@ -273,7 +276,7 @@ In most cases, the attribute `state` has the most important value in it, e.g., f #### Synopsis ```python -get_state(entity = None, attribute = None) +get_state(entity=None, attribute=None) ``` `get_state()` is used to query the state of any integration within Home Assistant. State updates are continuously tracked so this call runs locally and does not require AppDaemon to call back to Home Assistant and as such is very efficient. @@ -311,10 +314,10 @@ state = self.get_state("switch") state = self.get_state("light.office_1") # Return the brightness attribute for light.office_1 -state = self.get_state("light.office_1", attribute = "brightness") +state = self.get_state("light.office_1", attribute="brightness") # Return the entire state for light.office_1 -state = self.get_state("light.office_1", attribute = "all") +state = self.get_state("light.office_1", attribute="all") ``` ### set_state() @@ -348,7 +351,7 @@ A list of keyword values to be changed or added to the entities state. e.g., `st #### Examples ```python -status = self.set_state("light.office_1", state = "on", attributes = {"color_name": "red"}) +status = self.set_state("light.office_1", state="on", attributes={"color_name": "red"}) ``` ### About Callbacks @@ -409,8 +412,9 @@ AppDaemons's state callbacks allow an App to listen to a wide variety of events, When calling back into the App, the App must provide a class function with a known signature for AppDaemon to call. The callback will provide various information to the function to enable the function to respond appropriately. For state callbacks, a class defined callback function should look like this: ```python - def my_callback(self, entity, attribute, old, new, **kwargs): - +def my_callback(self, entity, attribute, old, new, **kwargs): + """Handle state callback.""" + # do some useful work here ``` You can call the function whatever you like - you will reference it in the `listen_state()` call, and you can create as many callback functions as you need. @@ -450,7 +454,7 @@ A dictionary containing any constraints and/or additional user specific keyword #### Synopsis ```python -handle = listen_state(callback, entity = None, **kwargs) +handle = listen_state(callback, entity=None, **kwargs) ``` #### Returns @@ -492,8 +496,9 @@ Note: `old` and `new` can be used singly or together. If duration is supplied as a parameter, the callback will not fire unless the state listened for is maintained for that number of seconds. This makes the most sense if a specific attribute is specified (or the default os `state` is used), an in conjunction with the `old` or `new` parameters, or both. When the callback is called, it is supplied with the values of `entity`, `attr`, `old` and `new` that were current at the time the actual event occurred, since the assumption is that none of them have changed in the intervening period. ```python - def my_callback(self, **kwargs): - +def my_callback(self, **kwargs): + """Handle state change.""" + # do some useful work here ``` (Scheduler callbacks are documented in detail later in this document) @@ -515,20 +520,25 @@ self.handle = self.listen_state(self.my_callback, "light") self.handle = self.listen_state(self.my_callback, "light.office_1") # Listen for a state change involving light.office1 and return the entire state as a dict -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "all") +self.handle = self.listen_state(self.my_callback, "light.office_1", attribute="all") # Listen for a state change involving the brightness attribute of light.office1 -self.handle = self.listen_state(self.my_callback, "light.office_1", attribute = "brightness") +self.handle = self.listen_state( + self.my_callback, "light.office_1", attribute="brightness" +) # Listen for a state change involving light.office1 turning on and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on") +self.handle = self.listen_state(self.my_callback, "light.office_1", new="on") # Listen for a state change involving light.office1 changing from brightness 100 to 200 and return the state attribute -self.handle = self.listen_state(self.my_callback, "light.office_1", old = "100", new = "200") +self.handle = self.listen_state( + self.my_callback, "light.office_1", old="100", new="200" +) # Listen for a state change involving light.office1 changing to state on and remaining on for a minute -self.handle = self.listen_state(self.my_callback, "light.office_1", new = "on", duration = 60) - +self.handle = self.listen_state( + self.my_callback, "light.office_1", new="on", duration=60 +) ``` ### cancel_listen_state() @@ -592,8 +602,9 @@ AppDaemon contains a powerful scheduler that is able to run with 1 second resolu As with State Change callbacks, Scheduler Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: ```python - def my_callback(self, **kwargs): - +def my_callback(self, **kwargs): + """Handle scheduler callback.""" + # do some useful work here ``` You can call the function whatever you like; you will reference it in the Scheduler call, and you can create as many callback functions as you need. @@ -643,7 +654,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python self.handle = self.run_in(self.run_in_c) -self.handle = self.run_in(self.run_in_c, title = "run_in5") +self.handle = self.run_in(self.run_in_c, title="run_in5") ``` #### run_once() @@ -678,6 +689,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run at 4pm today, or 4pm tomorrow if it is already after 4pm import datetime + ... runtime = datetime.time(16, 0, 0) handle = self.run_once(self.run_once_c, runtime) @@ -716,6 +728,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run at 4pm today import datetime + ... runtime = datetime.time(16, 0, 0) today = datetime.date.today() @@ -755,6 +768,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run daily at 7pm import datetime + ... time = datetime.time(19, 0, 0) self.run_daily(self.run_daily_c, runtime) @@ -767,7 +781,7 @@ Execute a callback at the same time every hour. If the time has already passed, #### Synopsis ```python -self.handle = self.run_hourly(callback, time = None, **kwargs) +self.handle = self.run_hourly(callback, time=None, **kwargs) ``` #### Returns @@ -793,6 +807,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run every hour, on the hour import datetime + ... time = datetime.time(0, 0, 0) self.run_daily(self.run_daily_c, runtime) @@ -804,7 +819,7 @@ Execute a callback at the same time every minute. If the time has already passed #### Synopsis ```python -self.handle = self.run_minutely(callback, time = None, **kwargs) +self.handle = self.run_minutely(callback, time=None, **kwargs) ``` #### Returns @@ -830,6 +845,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run Every Minute on the minute import datetime + ... time = datetime.time(0, 0, 0) self.run_minutely(self.run_minutely_c, time) @@ -872,6 +888,7 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Run every 17 minutes starting in 2 hours time import datetime + ... self.run_every(self.run_every_c, time, 17 * 60) ``` @@ -944,11 +961,11 @@ For example: ```python # Run a callback in 2 minutes minus a random number of seconds between 0 and 60, e.g., run between 60 and 120 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, **kwargs) +self.handle = self.run_in(callback, 120, random_start=-60, **kwargs) # Run a callback in 2 minutes plus a random number of seconds between 0 and 60, e.g., run between 120 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_end = 60, **kwargs) +self.handle = self.run_in(callback, 120, random_end=60, **kwargs) # Run a callback in 2 minutes plus or minus a random number of seconds between 0 and 60, e.g., run between 60 and 180 seconds from now -self.handle = self.run_in(callback, 120, random_start = -60, random_end = 60, **kwargs) +self.handle = self.run_in(callback, 120, random_start=-60, random_end=60, **kwargs) ``` ## Sunrise and Sunset @@ -987,15 +1004,17 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python import datetime -... + +# ... + # Run 45 minutes before sunset -self.run_at_sunrise(self.sun, offset = datetime.timedelta(minutes = -45).total_seconds(), "Sunrise -45 mins") +self.run_at_sunrise(self.sun, offset=datetime.timedelta(minutes=-45).total_seconds()) # or you can just do the math yourself -self.run_at_sunrise(self.sun, offset = 30 * 60, "Sunrise +30 mins") +self.run_at_sunrise(self.sun, offset=30 * 60) # Sunrise +30 mins # Run at a random time +/- 60 minutes from sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 60*60, "Sunrise, random +/- 60 mins") +self.run_at_sunrise(self.sun, random_start=-60 * 60, random_end=60 * 60) # Run at a random time between 30 and 60 minutes before sunrise -self.run_at_sunrise(self.sun, random_start = -60*60, random_end = 30*60, "Sunrise, random - 30 - 60 mins") +self.run_at_sunrise(self.sun, random_start=-60 * 60, random_end=30 * 60) ``` ### run_at_sunset() @@ -1031,14 +1050,18 @@ Arbitrary keyword parameters to be provided to the callback function when it is ```python # Example using timedelta import datetime -... -self.run_at_sunset(self.sun, datetime.timedelta(minutes = -45).total_seconds(), "Sunset -45 mins") + +# ... + +self.run_at_sunset( + self.sun, datetime.timedelta(minutes=-45).total_seconds() +) # Sunset -45 mins # or you can just do the math yourself -self.run_at_sunset(self.sun, 30 * 60, "Sunset +30 mins") +self.run_at_sunset(self.sun, 30 * 60) # Sunset +30 mins # Run at a random time +/- 60 minutes from sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 60*60, "Sunset, random +/- 60 mins") +self.run_at_sunset(self.sun, random_start=-60 * 60, random_end=60 * 60) # Run at a random time between 30 and 60 minutes before sunset -self.run_at_sunset(self.sun, random_start = -60*60, random_end = 30*60, "Sunset, random - 30 - 60 mins") +self.run_at_sunset(self.sun, random_start=-60 * 60, random_end=30 * 60) ``` ### sunrise() @@ -1096,7 +1119,7 @@ result = self.sun_up() ```python if self.sun_up(): - do something + do_something() ``` ### sun_down() @@ -1117,7 +1140,7 @@ result = self.sun_down() ```python if self.sun_down(): - do something + do_something() ``` ## Calling Services @@ -1153,8 +1176,8 @@ Each service has different parameter requirements. This argument allows you to s #### Examples ```python -self.call_service("light/turn_on", entity_id = "light.office_lamp", color_name = "red") -self.call_service("notify/notify", title = "Hello", message = "Hello World") +self.call_service("light/turn_on", entity_id="light.office_lamp", color_name="red") +self.call_service("notify/notify", title="Hello", message="Hello World") ``` ### turn_on() @@ -1192,7 +1215,7 @@ A comma separated list of key value pairs to allow specification of parameters o ```python self.turn_on("switch.patio_lights") self.turn_on("scene.bedroom_on") -self.turn_on("light.office_1", color_name = "green") +self.turn_on("light.office_1", color_name="green") ``` ### turn_off() @@ -1246,7 +1269,7 @@ Fully qualified entity_id of the thing to be toggled, e.g., `light.office_lamp` ```python self.toggle("switch.patio_lights") -self.toggle("light.office_1", color_name = "green") +self.toggle("light.office_1", color_name="green") ``` ### select_value() @@ -1365,8 +1388,9 @@ In addition to the Home Assistant supplied events, AppDaemon adds 2 more events. As with State Change and Scheduler callbacks, Event Callbacks expect to call into functions with a known and specific signature and a class defined Scheduler callback function should look like this: ```python - def my_callback(self, event_name, data, kwargs): - +def my_callback(self, event_name, data, kwargs): + """Handle event callback.""" + # do some useful work here ``` You can call the function whatever you like - you will reference it in the Scheduler call, and you can create as many callback functions as you need. @@ -1396,7 +1420,7 @@ Listen event sets up a callback for a specific event, or any event. #### Synopsis ```python -handle = listen_event(function, event = None, **kwargs): +handle = listen_event(function, event=None, **kwargs) ``` #### Returns @@ -1425,9 +1449,11 @@ Filtering will work with any event type, but it will be necessary to figure out ```python self.listen_event(self.mode_event, "MODE_CHANGE") # Listen for a minimote event activating scene 3: -self.listen_event(self.generic_event, "zwave.scene_activated", scene_id = 3) +self.listen_event(self.generic_event, "zwave.scene_activated", scene_id=3) # Listen for a minimote event activating scene 3 from a specific minimote: -self.listen_event(self.generic_event, "zwave.scene_activated", entity_id = "minimote_31", scene_id = 3) +self.listen_event( + self.generic_event, "zwave.scene_activated", entity_id="minimote_31", scene_id=3 +) ``` ### cancel_listen_event() @@ -1518,6 +1544,7 @@ Functions called as an event callback will be supplied with 2 arguments: ```python def service(self, event_name, data): + """Handle event.""" ``` #### event_name @@ -1560,7 +1587,7 @@ automation: This can be triggered with a call to AppDaemon's fire_event() as follows: ```python -self.fire_event("MODE_CHANGE", mode = "Day") +self.fire_event("MODE_CHANGE", mode="Day") ``` ## Presence @@ -1585,7 +1612,7 @@ An iterable list of all device trackers. ```python trackers = self.get_trackers() for tracker in trackers: - do something + do_something(tracker) ``` ### get_tracker_state() @@ -1618,7 +1645,7 @@ Fully qualified entity_id of the device tracker to query, e.g., `device_tracker. ```python trackers = self.get_trackers() for tracker in trackers: - self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) + self.log("{} is {}".format(tracker, self.get_tracker_state(tracker))) ``` ### everyone_home() @@ -1638,7 +1665,7 @@ Returns `True` if everyone is at home, `False` otherwise. ```python if self.everyone_home(): - do something + do_something() ``` ### anyone_home() @@ -1658,7 +1685,7 @@ Returns `True` if anyone is at home, `False` otherwise. ```python if self.anyone_home(): - do something + do_something() ``` ### noone_home() @@ -1678,7 +1705,7 @@ Returns `True` if no one is home, `False` otherwise. ```python if self.noone_home(): - do something + do_something() ``` ## Miscellaneous Helper Functions @@ -1837,9 +1864,9 @@ A representation of the start and end time respectively in a string format with ```python if self.now_is_between("17:30:00", "08:00:00"): - do something + do_something() if self.now_is_between("sunset - 00:45:00", "sunrise + 00:45:00"): - do something + do_something_else() ``` ### friendly_name() @@ -1860,7 +1887,11 @@ The friendly name of the entity if it exists or the entity id if not. ```python tracker = "device_tracker.andrew" -self.log("{} ({}) is {}".format(tracker, self.friendly_name(tracker), self.get_tracker_state(tracker))) +self.log( + "{} ({}) is {}".format( + tracker, self.friendly_name(tracker), self.get_tracker_state(tracker) + ) +) ``` ### split_entity() @@ -1888,7 +1919,7 @@ A list with 2 entries, the device and entity respectively. ```python device, entity = self.split_entity(entity_id) if device == "scene": - do something specific to scenes + do_something_specific_to_scenes() ``` @@ -1935,7 +1966,7 @@ A list of split devices with 1 or more entries. ```python for sensor in self.split_device_list(self.args["sensors"]): - do something for each sensor, e.g., make a state subscription + do_something(sensor) # e.g. make a state subscription ``` @@ -1948,7 +1979,7 @@ AppDaemon uses 2 separate logs - the general log and the error log. An AppDaemon #### Synopsis ```python -log(message, level = "INFO") +log(message, level="INFO") ``` #### Returns @@ -1969,7 +2000,7 @@ The log level of the message - takes a string representing the standard logger l ```python self.log("Log Test: Parameter is {}".format(some_variable)) -self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") +self.log("Log Test: Parameter is {}".format(some_variable), level="ERROR") ``` ### error() @@ -1977,7 +2008,7 @@ self.log("Log Test: Parameter is {}".format(some_variable), level = "ERROR") #### Synopsis ```python -error(message, level = "WARNING") +error(message, level="WARNING") ``` #### Returns @@ -1997,7 +2028,7 @@ The log level of the message - takes a string representing the standard logger l ```python self.error("Some Warning string") -self.error("Some Critical string", level = "CRITICAL") +self.error("Some Critical string", level="CRITICAL") ``` ## Sharing information between Apps @@ -2007,7 +2038,7 @@ Sharing information between different Apps is very simple if required. Each app In addition, Apps have access to the entire configuration if required, meaning they can access AppDaemon configuration items as well as parameters from other Apps. To use this, there is a class attribute called `self.config`. It contains a `ConfigParser` object, which is similar in operation to a `Dictionary`. To access any apps parameters, simply reference the ConfigParser object using the Apps name (form the config file) as the first key, and the parameter required as the second, for instance: ```python -other_apps_arg = self.config["some_app"]["some_parameter"]. +other_apps_arg = self.config["some_app"]["some_parameter"] ``` To get AppDaemon's config parameters, use the key "AppDaemon", e.g.: diff --git a/source/_docs/ecosystem/appdaemon/tutorial.markdown b/source/_docs/ecosystem/appdaemon/tutorial.markdown index c0344c8ec1a..67475316b7c 100644 --- a/source/_docs/ecosystem/appdaemon/tutorial.markdown +++ b/source/_docs/ecosystem/appdaemon/tutorial.markdown @@ -58,18 +58,17 @@ different scenes in a different version of the App. ```python import appdaemon.plugins.hass.hassapi as hass + class OutsideLights(hass.Hass): + def initialize(self): + self.run_at_sunrise(self.sunrise_cb) + self.run_at_sunset(self.before_sunset_cb, offset=-900) - def initialize(self): - self.run_at_sunrise(self.sunrise_cb) - self.run_at_sunset(self.before_sunset_cb, offset=-900) - - def sunrise_cb(self, kwargs): - self.turn_on(self.args["off_scene"]) - - def before_sunset_cb(self, kwargs): - self.turn_on(self.args["on_scene"]) + def sunrise_cb(self, kwargs): + self.turn_on(self.args["off_scene"]) + def before_sunset_cb(self, kwargs): + self.turn_on(self.args["on_scene"]) ``` This is also fairly easy to achieve with Home Assistant automations, but we are just getting started. @@ -81,18 +80,18 @@ Our next example is to turn on a light when motion is detected and it is dark, a ```python import appdaemon.appapi as appapi + class FlashyMotionLights(appapi.AppDaemon): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") + def motion(self, entity, attribute, old, new, kwargs): + if self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) - def motion(self, entity, attribute, old, new, kwargs): - if self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - - def light_off(self, kwargs): - self.turn_off("light.drive") + def light_off(self, kwargs): + self.turn_off("light.drive") ``` This is starting to get a little more complex in Home Assistant automations requiring an Automation rule and two separate scripts. @@ -102,26 +101,26 @@ Now lets extend this with a somewhat artificial example to show something that i ```python import homeassistant.appapi as appapi + class MotionLights(appapi.AppDaemon): + def initialize(self): + self.listen_state(self.motion, "binary_sensor.drive", new="on") - def initialize(self): - self.listen_state(self.motion, "binary_sensor.drive", new = "on") + def motion(self, entity, attribute, old, new, kwargs): + if self.self.sun_down(): + self.turn_on("light.drive") + self.run_in(self.light_off, 60) + self.flashcount = 0 + self.run_in(self.flash_warning, 1) - def motion(self, entity, attribute, old, new, kwargs): - if self.self.sun_down(): - self.turn_on("light.drive") - self.run_in(self.light_off, 60) - self.flashcount = 0 - self.run_in(self.flash_warning, 1) + def light_off(self, kwargs): + self.turn_off("light.drive") - def light_off(self, kwargs): - self.turn_off("light.drive") - - def flash_warning(self, kwargs): - self.toggle("light.living_room") - self.flashcount += 1 - if self.flashcount < 10: - self.run_in(self.flash_warning, 1) + def flash_warning(self, kwargs): + self.toggle("light.living_room") + self.flashcount += 1 + if self.flashcount < 10: + self.run_in(self.flash_warning, 1) ``` Of course if I wanted to make this App or its predecessor reusable I would have provide parameters for the sensor, the light to activate on motion, the warning light and even the number of flashes and delay between flashes. diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index d6ea9944505..591da3767e3 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -154,7 +154,7 @@ for x in range(0, 10): translations["%s" % x] = "\\x3%s" % x for c in sys.argv[1]: - print(translations[c], end='') + print(translations[c], end="") ``` ## OZW Log diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 1fec16f8a09..cd28f28f939 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -223,6 +223,7 @@ import appdaemon.plugins.hass.hassapi as hass import datetime from datetime import datetime + class DeconzHelper(hass.Hass): def initialize(self) -> None: self.listen_event(self.event_received, "deconz_event") @@ -232,8 +233,15 @@ class DeconzHelper(hass.Hass): event_id = data["id"] event_received = datetime.now() - self.log("Deconz event received from {}. Event was: {}".format(event_id, event_data)) - self.set_state("sensor.deconz_event", state = event_id, attributes = {"event_data": event_data, "event_received": str(event_received)}) + self.log(f"Deconz event received from {event_id}. Event was: {event_data}") + self.set_state( + "sensor.deconz_event", + state=event_id, + attributes={ + "event_data": event_data, + "event_received": str(event_received), + }, + ) ``` {% endraw %} @@ -255,23 +263,23 @@ remote_control: ```python import appdaemon.plugins.hass.hassapi as hass -class RemoteControl(hass.Hass): +class RemoteControl(hass.Hass): def initialize(self): - if 'event' in self.args: - self.listen_event(self.handle_event, self.args['event']) + if "event" in self.args: + self.listen_event(self.handle_event, self.args["event"]) def handle_event(self, event_name, data, kwargs): - if data['id'] == self.args['id']: - self.log(data['event']) - if data['event'] == 1002: - self.log('Button on') - elif data['event'] == 2002: - self.log('Button dim up') - elif data['event'] == 3002: - self.log('Button dim down') - elif data['event'] == 4002: - self.log('Button off') + if data["id"] == self.args["id"]: + self.log(data["event"]) + if data["event"] == 1002: + self.log("Button on") + elif data["event"] == 2002: + self.log("Button dim up") + elif data["event"] == 3002: + self.log("Button dim down") + elif data["event"] == 4002: + self.log("Button off") ``` {% endraw %} @@ -298,34 +306,36 @@ sonos_remote_control: ```python import appdaemon.plugins.hass.hassapi as hass -class SonosRemote(hass.Hass): +class SonosRemote(hass.Hass): def initialize(self): - self.sonos = self.args['sonos'] - if 'event' in self.args: - self.listen_event(self.handle_event, self.args['event']) + self.sonos = self.args["sonos"] + if "event" in self.args: + self.listen_event(self.handle_event, self.args["event"]) def handle_event(self, event_name, data, kwargs): - if data['id'] == self.args['id']: - if data['event'] == 1002: - self.log('Button toggle') - self.call_service("media_player/media_play_pause", entity_id = self.sonos) + if data["id"] == self.args["id"]: + if data["event"] == 1002: + self.log("Button toggle") + self.call_service("media_player/media_play_pause", entity_id=self.sonos) - elif data['event'] == 2002: - self.log('Button volume up') - self.call_service("media_player/volume_up", entity_id = self.sonos) + elif data["event"] == 2002: + self.log("Button volume up") + self.call_service("media_player/volume_up", entity_id=self.sonos) - elif data['event'] == 3002: - self.log('Button volume down') - self.call_service("media_player/volume_down", entity_id = self.sonos) + elif data["event"] == 3002: + self.log("Button volume down") + self.call_service("media_player/volume_down", entity_id=self.sonos) - elif data['event'] == 4002: - self.log('Button previous') - self.call_service("media_player/media_previous_track", entity_id = self.sonos) + elif data["event"] == 4002: + self.log("Button previous") + self.call_service( + "media_player/media_previous_track", entity_id=self.sonos + ) - elif data['event'] == 5002: - self.log('Button next') - self.call_service("media_player/media_next_track", entity_id = self.sonos) + elif data["event"] == 5002: + self.log("Button next") + self.call_service("media_player/media_next_track", entity_id=self.sonos) ``` {% endraw %} diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index dd740ee6fb1..6a26d681646 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -161,6 +161,7 @@ in seconds since the UNIX epoch. Convert them manually using ```python from datetime import datetime + datetime.fromtimestamp(1422830502) ``` diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index c92e8b0fa3c..0505731aacf 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -222,9 +222,13 @@ As already shown on the [API](/developers/rest_api/) page, it's very simple to u ```python response = requests.post( - 'http://localhost:8123/api/states/binary_sensor.radio', - headers={'Authorization': 'Bearer LONG_LIVED_ACCESS_TOKEN', 'content-type': 'application/json'}, - data=json.dumps({'state': 'on', 'attributes': {'friendly_name': 'Radio'}})) + "http://localhost:8123/api/states/binary_sensor.radio", + headers={ + "Authorization": "Bearer LONG_LIVED_ACCESS_TOKEN", + "content-type": "application/json", + }, + data=json.dumps({"state": "on", "attributes": {"friendly_name": "Radio"}}), +) print(response.text) ``` diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index e3c14101919..5a1a47d8489 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -32,9 +32,9 @@ It is not possible to use Python imports with this integration. If you want to d - Create a file `hello_world.py` in the folder and give it this content: ```python -name = data.get('name', 'world') -logger.info("Hello {}".format(name)) -hass.bus.fire(name, { "wow": "from a Python script!" }) +name = data.get("name", "world") +logger.info("Hello %s", name) +hass.bus.fire(name, {"wow": "from a Python script!"}) ``` - Start Home Assistant @@ -50,11 +50,11 @@ The following example shows how to call a service from `python_script`. This scr ```python # turn_on_light.py -entity_id = data.get('entity_id') -rgb_color = data.get('rgb_color', [255, 255, 255]) +entity_id = data.get("entity_id") +rgb_color = data.get("rgb_color", [255, 255, 255]) if entity_id is not None: - service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 } - hass.services.call('light', 'turn_on', service_data, False) + service_data = {"entity_id": entity_id, "rgb_color": rgb_color, "brightness": 255} + hass.services.call("light", "turn_on", service_data, False) ``` The above `python_script` can be called using the following JSON as an input. diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index f8c3506dd1b..7d661b41dc7 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -137,19 +137,19 @@ You can then use the following `python_script` to save the video file: ```python # obtain ring doorbell camera object # replace the camera.front_door by your camera entity -ring_cam = hass.states.get('camera.front_door') +ring_cam = hass.states.get("camera.front_door") -subdir_name = 'ring_{}'.format(ring_cam.attributes.get('friendly_name')) +subdir_name = f"ring_{ring_cam.attributes.get('friendly_name')}" # get video URL data = { - 'url': ring_cam.attributes.get('video_url'), - 'subdir': subdir_name, - 'filename': ring_cam.attributes.get('friendly_name') + "url": ring_cam.attributes.get("video_url"), + "subdir": subdir_name, + "filename": ring_cam.attributes.get("friendly_name"), } # call downloader integration to save the video -hass.services.call('downloader', 'download_file', data) +hass.services.call("downloader", "download_file", data) ``` ## Sensor diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown index 670f5f2fb50..62edb923463 100644 --- a/source/_integrations/sensor.command_line.markdown +++ b/source/_integrations/sensor.command_line.markdown @@ -155,8 +155,9 @@ The script (saved as `arest-value.py`) that is used looks like the example below ```python #!/usr/bin/python3 from requests import get -response = get('http://10.0.0.48/analog/2') -print(response.json()['return_value']) + +response = get("http://10.0.0.48/analog/2") +print(response.json()["return_value"]) ``` To use the script you need to add something like the following to your `configuration.yaml` file. diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index ebb7cb2d1bb..6dd0cb4dfe3 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -53,7 +53,7 @@ The result set will include your chat ID as `id` in the `chat` section: **Method 3:** Another way to get your chat ID directly is described below. Start your Python interpreter from the command-line: -```python +```shell $ python3 >>> import telegram >>> bot = telegram.Bot(token='YOUR_API_TOKEN') diff --git a/source/_integrations/telegram_chatbot.markdown b/source/_integrations/telegram_chatbot.markdown index ad5cf09e8fe..f2aab30994b 100644 --- a/source/_integrations/telegram_chatbot.markdown +++ b/source/_integrations/telegram_chatbot.markdown @@ -401,76 +401,90 @@ This is how the previous 4 automations would be through a simple AppDaemon app: ```python import appdaemon.plugins.hass.hassapi as hass + class TelegramBotEventListener(hass.Hass): """Event listener for Telegram bot events.""" def initialize(self): """Listen to Telegram Bot events of interest.""" - self.listen_event(self.receive_telegram_text, 'telegram_text') - self.listen_event(self.receive_telegram_callback, 'telegram_callback') + self.listen_event(self.receive_telegram_text, "telegram_text") + self.listen_event(self.receive_telegram_callback, "telegram_callback") def receive_telegram_text(self, event_id, payload_event, *args): """Text repeater.""" - assert event_id == 'telegram_text' - user_id = payload_event['user_id'] - msg = 'You said: ``` %s ```' % payload_event['text'] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] - self.call_service('telegram_bot/send_message', - title='*Dumb automation*', - target=user_id, - message=msg, - disable_notification=True, - inline_keyboard=keyboard) + assert event_id == "telegram_text" + user_id = payload_event["user_id"] + msg = "You said: ``` %s ```" % payload_event["text"] + keyboard = [ + [("Edit message", "/edit_msg"), ("Don't", "/do_nothing")], + [("Remove this button", "/remove button")], + ] + self.call_service( + "telegram_bot/send_message", + title="*Dumb automation*", + target=user_id, + message=msg, + disable_notification=True, + inline_keyboard=keyboard, + ) def receive_telegram_callback(self, event_id, payload_event, *args): """Event listener for Telegram callback queries.""" - assert event_id == 'telegram_callback' - data_callback = payload_event['data'] - callback_id = payload_event['id'] - chat_id = payload_event['chat_id'] + assert event_id == "telegram_callback" + data_callback = payload_event["data"] + callback_id = payload_event["id"] + chat_id = payload_event["chat_id"] # keyboard = ["Edit message:/edit_msg, Don't:/do_nothing", # "Remove this button:/remove button"] - keyboard = [[("Edit message", "/edit_msg"), - ("Don't", "/do_nothing")], - [("Remove this button", "/remove button")]] + keyboard = [ + [("Edit message", "/edit_msg"), ("Don't", "/do_nothing")], + [("Remove this button", "/remove button")], + ] - if data_callback == '/edit_msg': # Message editor: + if data_callback == "/edit_msg": # Message editor: # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Editing the message!', - callback_query_id=callback_id, - show_alert=True) + self.call_service( + "telegram_bot/answer_callback_query", + message="Editing the message!", + callback_query_id=callback_id, + show_alert=True, + ) # Edit the message origin of the callback query - msg_id = payload_event['message']['message_id'] - user = payload_event['from_first'] - title = '*Message edit*' - msg = 'Callback received from %s. Message id: %s. Data: ``` %s ```' - self.call_service('telegram_bot/edit_message', - chat_id=chat_id, - message_id=msg_id, - title=title, - message=msg % (user, msg_id, data_callback), - inline_keyboard=keyboard) + msg_id = payload_event["message"]["message_id"] + user = payload_event["from_first"] + title = "*Message edit*" + msg = "Callback received from %s. Message id: %s. Data: ``` %s ```" + self.call_service( + "telegram_bot/edit_message", + chat_id=chat_id, + message_id=msg_id, + title=title, + message=msg % (user, msg_id, data_callback), + inline_keyboard=keyboard, + ) - elif data_callback == '/remove button': # Keyboard editor: + elif data_callback == "/remove button": # Keyboard editor: # Answer callback query - self.call_service('telegram_bot/answer_callback_query', - message='Callback received for editing the ' - 'inline keyboard!', - callback_query_id=callback_id) + self.call_service( + "telegram_bot/answer_callback_query", + message="Callback received for editing the " "inline keyboard!", + callback_query_id=callback_id, + ) # Edit the keyboard new_keyboard = keyboard[:1] - self.call_service('telegram_bot/edit_replymarkup', - chat_id=chat_id, - message_id='last', - inline_keyboard=new_keyboard) + self.call_service( + "telegram_bot/edit_replymarkup", + chat_id=chat_id, + message_id="last", + inline_keyboard=new_keyboard, + ) - elif data_callback == '/do_nothing': # Only Answer to callback query - self.call_service('telegram_bot/answer_callback_query', - message='OK, you said no!', - callback_query_id=callback_id) + elif data_callback == "/do_nothing": # Only Answer to callback query + self.call_service( + "telegram_bot/answer_callback_query", + message="OK, you said no!", + callback_query_id=callback_id, + ) ``` diff --git a/source/_integrations/worldclock.markdown b/source/_integrations/worldclock.markdown index c6af2b2c93a..b22f2766152 100644 --- a/source/_integrations/worldclock.markdown +++ b/source/_integrations/worldclock.markdown @@ -36,6 +36,6 @@ name: For valid time zones check the **TZ** column in the [Wikipedia overview](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Or get the full list from the [pytz](https://pypi.python.org/pypi/pytz) module. -```python +```shell python3 -c "import pytz;print(pytz.all_timezones)" ``` From b983082cb996ef884fd643838b3b27f03a527f5b Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 14:43:49 +0100 Subject: [PATCH 211/236] Frontmatter formatting (#11654) --- source/_integrations/abode.markdown | 4 ++-- source/_integrations/acer_projector.markdown | 4 ++-- source/_integrations/actiontec.markdown | 4 ++-- source/_integrations/adguard.markdown | 4 ++-- source/_integrations/ads.markdown | 4 ++-- source/_integrations/aftership.markdown | 2 +- source/_integrations/air_quality.markdown | 5 ++--- source/_integrations/airly.markdown | 4 ++-- source/_integrations/airvisual.markdown | 5 ++--- source/_integrations/aladdin_connect.markdown | 4 ++-- source/_integrations/alarm_control_panel.markdown | 4 ++-- source/_integrations/alarmdecoder.markdown | 4 ++-- source/_integrations/alarmdotcom.markdown | 4 ++-- source/_integrations/alert.markdown | 4 ++-- source/_integrations/alexa.markdown | 6 +++--- source/_integrations/almond.markdown | 6 +++--- source/_integrations/alpha_vantage.markdown | 7 +++---- source/_integrations/amazon_polly.markdown | 4 ++-- source/_integrations/ambiclimate.markdown | 4 ++-- source/_integrations/ambient_station.markdown | 4 ++-- source/_integrations/amcrest.markdown | 4 ++-- source/_integrations/ampio.markdown | 7 +++---- source/_integrations/android_ip_webcam.markdown | 6 +++--- source/_integrations/androidtv.markdown | 4 ++-- source/_integrations/anel_pwrctrl.markdown | 6 +++--- source/_integrations/anthemav.markdown | 4 ++-- source/_integrations/apache_kafka.markdown | 4 ++-- source/_integrations/apcupsd.markdown | 4 ++-- source/_integrations/api.markdown | 4 ++-- source/_integrations/apns.markdown | 4 ++-- source/_integrations/apple_tv.markdown | 4 ++-- source/_integrations/apprise.markdown | 4 ++-- source/_integrations/aprs.markdown | 4 ++-- source/_integrations/aqualogic.markdown | 6 +++--- source/_integrations/aquostv.markdown | 4 ++-- source/_integrations/arcam_fmj.markdown | 4 ++-- source/_integrations/arduino.markdown | 4 ++-- source/_integrations/arest.markdown | 4 ++-- source/_integrations/arlo.markdown | 4 ++-- source/_integrations/aruba.markdown | 5 ++--- source/_integrations/arwn.markdown | 4 ++-- source/_integrations/asterisk_cdr.markdown | 4 ++-- source/_integrations/asterisk_mbox.markdown | 4 ++-- source/_integrations/asuswrt.markdown | 5 ++--- source/_integrations/aten_pe.markdown | 4 ++-- source/_integrations/atome.markdown | 4 ++-- source/_integrations/august.markdown | 4 ++-- source/_integrations/aurora.markdown | 4 ++-- source/_integrations/aurora_abb_powerone.markdown | 4 ++-- source/_integrations/auth.markdown | 4 ++-- source/_integrations/automatic.markdown | 5 ++--- source/_integrations/automation.markdown | 4 ++-- source/_integrations/avea.markdown | 4 ++-- source/_integrations/avion.markdown | 4 ++-- source/_integrations/awair.markdown | 4 ++-- source/_integrations/aws.markdown | 6 +++--- source/_integrations/axis.markdown | 4 ++-- source/_integrations/azure_event_hub.markdown | 4 ++-- source/_integrations/azure_service_bus.markdown | 4 ++-- source/_integrations/baidu.markdown | 4 ++-- source/_integrations/bayesian.markdown | 4 ++-- source/_integrations/bbb_gpio.markdown | 4 ++-- source/_integrations/bbox.markdown | 4 ++-- source/_integrations/beewi_smartclim.markdown | 4 ++-- source/_integrations/bh1750.markdown | 4 ++-- source/_integrations/binary_sensor.markdown | 4 ++-- source/_integrations/bitcoin.markdown | 6 ++---- source/_integrations/bizkaibus.markdown | 6 +++--- source/_integrations/blackbird.markdown | 4 ++-- source/_integrations/blink.markdown | 6 +++--- source/_integrations/blinksticklight.markdown | 6 ++---- source/_integrations/blinkt.markdown | 5 ++--- source/_integrations/blockchain.markdown | 6 ++---- source/_integrations/bloomsky.markdown | 4 ++-- source/_integrations/bluesound.markdown | 4 ++-- source/_integrations/bluetooth_le_tracker.markdown | 4 ++-- source/_integrations/bluetooth_tracker.markdown | 4 ++-- source/_integrations/bme280.markdown | 4 ++-- source/_integrations/bme680.markdown | 4 ++-- source/_integrations/bmw_connected_drive.markdown | 4 ++-- source/_integrations/bom.markdown | 4 ++-- source/_integrations/braviatv.markdown | 4 ++-- source/_integrations/broadlink.markdown | 4 ++-- source/_integrations/brottsplatskartan.markdown | 4 ++-- source/_integrations/browser.markdown | 4 ++-- source/_integrations/brunt.markdown | 2 +- source/_integrations/bt_home_hub_5.markdown | 4 ++-- source/_integrations/bt_smarthub.markdown | 4 ++-- source/_integrations/buienradar.markdown | 4 ++-- source/_integrations/caldav.markdown | 6 +++--- source/_integrations/calendar.markdown | 4 ++-- source/_integrations/camera.markdown | 4 ++-- source/_integrations/canary.markdown | 6 +++--- source/_integrations/cast.markdown | 4 ++-- source/_integrations/cert_expiry.markdown | 4 ++-- source/_integrations/channels.markdown | 5 ++--- source/_integrations/cisco_ios.markdown | 4 ++-- source/_integrations/cisco_mobility_express.markdown | 6 +++--- source/_integrations/cisco_webex_teams.markdown | 6 +++--- source/_integrations/ciscospark.markdown | 6 +++--- source/_integrations/citybikes.markdown | 5 ++--- source/_integrations/clementine.markdown | 4 ++-- source/_integrations/clickatell.markdown | 4 ++-- source/_integrations/clicksend.markdown | 4 ++-- source/_integrations/clicksend_tts.markdown | 4 ++-- source/_integrations/climate.markdown | 4 ++-- source/_integrations/cloud.markdown | 6 +++--- source/_integrations/cloudflare.markdown | 4 ++-- source/_integrations/cmus.markdown | 6 ++---- source/_integrations/co2signal.markdown | 5 ++--- source/_integrations/coinbase.markdown | 4 ++-- source/_integrations/coinmarketcap.markdown | 6 ++---- source/_integrations/comed_hourly_pricing.markdown | 6 +++--- source/_integrations/comfoconnect.markdown | 6 +++--- source/_integrations/command_line.markdown | 4 ++-- source/_integrations/concord232.markdown | 4 ++-- source/_integrations/config.markdown | 5 ++--- source/_integrations/configurator.markdown | 4 ++-- source/_integrations/conversation.markdown | 6 +++--- source/_integrations/coolmaster.markdown | 5 ++--- source/_integrations/counter.markdown | 4 ++-- source/_integrations/cover.markdown | 4 ++-- source/_integrations/cppm_tracker.markdown | 6 +++--- source/_integrations/cpuspeed.markdown | 4 ++-- source/_integrations/crimereports.markdown | 4 ++-- source/_integrations/cups.markdown | 5 ++--- source/_integrations/currencylayer.markdown | 5 ++--- source/_integrations/daikin.markdown | 4 ++-- source/_integrations/danfoss_air.markdown | 4 ++-- source/_integrations/darksky.markdown | 6 +++--- source/_integrations/datadog.markdown | 4 ++-- source/_integrations/ddwrt.markdown | 4 ++-- source/_integrations/deconz.markdown | 4 ++-- source/_integrations/decora.markdown | 4 ++-- source/_integrations/decora_wifi.markdown | 5 ++--- source/_integrations/default_config.markdown | 4 ++-- source/_integrations/delijn.markdown | 6 +++--- source/_integrations/deluge.markdown | 4 ++-- source/_integrations/demo.markdown | 5 ++--- source/_integrations/denon.markdown | 4 ++-- source/_integrations/denonavr.markdown | 4 ++-- source/_integrations/deutsche_bahn.markdown | 5 ++--- source/_integrations/device_automation.markdown | 2 +- source/_integrations/device_sun_light_trigger.markdown | 6 +++--- source/_integrations/device_tracker.markdown | 4 ++-- source/_integrations/dht.markdown | 5 ++--- source/_integrations/dialogflow.markdown | 4 ++-- source/_integrations/digital_ocean.markdown | 6 +++--- source/_integrations/digitalloggers.markdown | 4 ++-- source/_integrations/directv.markdown | 4 ++-- source/_integrations/discogs.markdown | 2 +- source/_integrations/discord.markdown | 4 ++-- source/_integrations/discovery.markdown | 4 ++-- source/_integrations/dlib_face_detect.markdown | 4 ++-- source/_integrations/dlib_face_identify.markdown | 4 ++-- source/_integrations/dlink.markdown | 4 ++-- source/_integrations/dlna_dmr.markdown | 4 ++-- source/_integrations/dnsip.markdown | 6 +++--- source/_integrations/dominos.markdown | 4 ++-- source/_integrations/doods.markdown | 6 +++--- source/_integrations/doorbird.markdown | 4 ++-- source/_integrations/dovado.markdown | 4 ++-- source/_integrations/downloader.markdown | 4 ++-- source/_integrations/dsmr.markdown | 4 ++-- source/_integrations/dsmr_reader.markdown | 4 ++-- source/_integrations/dte_energy_bridge.markdown | 4 ++-- source/_integrations/dublin_bus_transport.markdown | 4 ++-- source/_integrations/duckdns.markdown | 4 ++-- source/_integrations/duke_energy.markdown | 4 ++-- source/_integrations/dunehd.markdown | 5 ++--- source/_integrations/dwd_weather_warnings.markdown | 5 ++--- source/_integrations/dweet.markdown | 6 +++--- source/_integrations/dyson.markdown | 4 ++-- source/_integrations/ebox.markdown | 4 ++-- source/_integrations/ebusd.markdown | 4 ++-- source/_integrations/ecoal_boiler.markdown | 4 ++-- source/_integrations/ecobee.markdown | 4 ++-- source/_integrations/econet.markdown | 4 ++-- source/_integrations/ecovacs.markdown | 6 +++--- source/_integrations/eddystone_temperature.markdown | 4 ++-- source/_integrations/edimax.markdown | 4 ++-- source/_integrations/ee_brightbox.markdown | 4 ++-- source/_integrations/efergy.markdown | 4 ++-- source/_integrations/egardia.markdown | 4 ++-- source/_integrations/eight_sleep.markdown | 4 ++-- source/_integrations/eliqonline.markdown | 6 +++--- source/_integrations/elkm1.markdown | 4 ++-- source/_integrations/elv.markdown | 4 ++-- source/_integrations/emby.markdown | 5 ++--- source/_integrations/emoncms.markdown | 5 ++--- source/_integrations/emoncms_history.markdown | 5 ++--- source/_integrations/emulated_hue.markdown | 4 ++-- source/_integrations/emulated_roku.markdown | 4 ++-- source/_integrations/enigma2.markdown | 8 ++++---- source/_integrations/enocean.markdown | 4 ++-- source/_integrations/enphase_envoy.markdown | 4 ++-- source/_integrations/entur_public_transport.markdown | 4 ++-- source/_integrations/environment_canada.markdown | 4 ++-- source/_integrations/envirophat.markdown | 4 ++-- source/_integrations/envisalink.markdown | 4 ++-- source/_integrations/ephember.markdown | 5 ++--- source/_integrations/epson.markdown | 4 ++-- source/_integrations/epsonworkforce.markdown | 4 ++-- source/_integrations/eq3btsmart.markdown | 4 ++-- source/_integrations/esphome.markdown | 4 ++-- source/_integrations/essent.markdown | 5 ++--- source/_integrations/etherscan.markdown | 4 ++-- source/_integrations/eufy.markdown | 4 ++-- source/_integrations/everlights.markdown | 4 ++-- source/_integrations/evohome.markdown | 6 +++--- source/_integrations/facebook.markdown | 4 ++-- source/_integrations/facebox.markdown | 7 +++---- source/_integrations/fail2ban.markdown | 5 ++--- source/_integrations/familyhub.markdown | 6 +++--- source/_integrations/fan.markdown | 4 ++-- source/_integrations/fastdotcom.markdown | 4 ++-- source/_integrations/feedreader.markdown | 2 +- source/_integrations/ffmpeg.markdown | 4 ++-- source/_integrations/ffmpeg_motion.markdown | 4 ++-- source/_integrations/ffmpeg_noise.markdown | 4 ++-- source/_integrations/fibaro.markdown | 4 ++-- source/_integrations/fido.markdown | 4 ++-- source/_integrations/file.markdown | 4 ++-- source/_integrations/filesize.markdown | 4 ++-- source/_integrations/filter.markdown | 4 ++-- source/_integrations/fints.markdown | 6 +++--- source/_integrations/fitbit.markdown | 4 ++-- source/_integrations/fixer.markdown | 5 ++--- source/_integrations/fleetgo.markdown | 4 ++-- source/_integrations/flexit.markdown | 4 ++-- source/_integrations/flic.markdown | 2 +- source/_integrations/flock.markdown | 5 ++--- source/_integrations/flume.markdown | 4 ++-- source/_integrations/flunearyou.markdown | 4 ++-- source/_integrations/flux.markdown | 4 ++-- source/_integrations/flux_led.markdown | 4 ++-- source/_integrations/folder.markdown | 4 ++-- source/_integrations/folder_watcher.markdown | 4 ++-- source/_integrations/foobot.markdown | 4 ++-- source/_integrations/fortigate.markdown | 4 ++-- source/_integrations/fortios.markdown | 4 ++-- source/_integrations/foscam.markdown | 4 ++-- source/_integrations/foursquare.markdown | 2 +- source/_integrations/free_mobile.markdown | 4 ++-- source/_integrations/freebox.markdown | 4 ++-- source/_integrations/freedns.markdown | 4 ++-- source/_integrations/fritz.markdown | 7 +++---- source/_integrations/fritzbox.markdown | 4 ++-- source/_integrations/fritzbox_callmonitor.markdown | 4 ++-- source/_integrations/fritzbox_netmonitor.markdown | 4 ++-- source/_integrations/fritzdect.markdown | 4 ++-- source/_integrations/fronius.markdown | 4 ++-- source/_integrations/frontend.markdown | 4 ++-- source/_integrations/frontier_silicon.markdown | 6 +++--- source/_integrations/futurenow.markdown | 4 ++-- source/_integrations/garadget.markdown | 5 ++--- source/_integrations/gc100.markdown | 4 ++-- source/_integrations/gearbest.markdown | 7 +++---- source/_integrations/geizhals.markdown | 4 ++-- source/_integrations/generic_thermostat.markdown | 4 ++-- source/_integrations/geniushub.markdown | 4 ++-- source/_integrations/geo_json_events.markdown | 4 ++-- source/_integrations/geo_location.markdown | 4 ++-- source/_integrations/geo_rss_events.markdown | 2 +- source/_integrations/geofency.markdown | 4 ++-- source/_integrations/geonetnz_quakes.markdown | 4 ++-- source/_integrations/geonetnz_volcano.markdown | 4 ++-- source/_integrations/github.markdown | 4 ++-- source/_integrations/gitlab_ci.markdown | 6 +++--- source/_integrations/gitter.markdown | 5 ++--- source/_integrations/glances.markdown | 5 ++--- source/_integrations/gntp.markdown | 4 ++-- source/_integrations/goalfeed.markdown | 4 ++-- source/_integrations/gogogate2.markdown | 4 ++-- source/_integrations/google_assistant.markdown | 4 ++-- source/_integrations/google_cloud.markdown | 4 ++-- source/_integrations/google_domains.markdown | 4 ++-- source/_integrations/google_maps.markdown | 4 ++-- source/_integrations/google_pubsub.markdown | 5 ++--- source/_integrations/google_translate.markdown | 4 ++-- source/_integrations/google_travel_time.markdown | 4 ++-- source/_integrations/google_wifi.markdown | 7 +++---- source/_integrations/gpmdp.markdown | 7 +++---- source/_integrations/gpsd.markdown | 5 ++--- source/_integrations/gpslogger.markdown | 4 ++-- source/_integrations/graphite.markdown | 5 ++--- source/_integrations/greeneye_monitor.markdown | 4 ++-- source/_integrations/greenwave.markdown | 2 +- source/_integrations/group.markdown | 4 ++-- source/_integrations/growatt_server.markdown | 4 ++-- source/_integrations/gstreamer.markdown | 4 ++-- source/_integrations/gtfs.markdown | 4 ++-- source/_integrations/habitica.markdown | 4 ++-- source/_integrations/hangouts.markdown | 4 ++-- source/_integrations/harman_kardon_avr.markdown | 4 ++-- source/_integrations/harmony.markdown | 4 ++-- source/_integrations/haveibeenpwned.markdown | 4 ++-- source/_integrations/hddtemp.markdown | 4 ++-- source/_integrations/hdmi_cec.markdown | 4 ++-- source/_integrations/heatmiser.markdown | 6 +++--- source/_integrations/heos.markdown | 4 ++-- source/_integrations/here_travel_time.markdown | 6 +++--- source/_integrations/hikvision.markdown | 2 +- source/_integrations/hikvisioncam.markdown | 4 ++-- source/_integrations/hisense_aehw4a1.markdown | 4 ++-- source/_integrations/history.markdown | 4 ++-- source/_integrations/history_graph.markdown | 4 ++-- source/_integrations/history_stats.markdown | 4 ++-- source/_integrations/hitron_coda.markdown | 4 ++-- source/_integrations/hive.markdown | 4 ++-- source/_integrations/hlk_sw16.markdown | 4 ++-- source/_integrations/homeassistant.markdown | 4 ++-- source/_integrations/homekit.markdown | 4 ++-- source/_integrations/homekit_controller.markdown | 4 ++-- source/_integrations/homematic.markdown | 4 ++-- source/_integrations/homematicip_cloud.markdown | 4 ++-- source/_integrations/homeworks.markdown | 4 ++-- source/_integrations/honeywell.markdown | 4 ++-- source/_integrations/hook.markdown | 4 ++-- source/_integrations/horizon.markdown | 4 ++-- source/_integrations/hp_ilo.markdown | 4 ++-- source/_integrations/html5.markdown | 4 ++-- source/_integrations/http.markdown | 4 ++-- source/_integrations/htu21d.markdown | 4 ++-- source/_integrations/huawei_lte.markdown | 4 ++-- source/_integrations/huawei_router.markdown | 4 ++-- source/_integrations/hue.markdown | 6 +++--- source/_integrations/hunterdouglas_powerview.markdown | 4 ++-- source/_integrations/hydrawise.markdown | 4 ++-- source/_integrations/hyperion.markdown | 4 ++-- source/_integrations/ialarm.markdown | 6 +++--- source/_integrations/iaqualink.markdown | 4 ++-- source/_integrations/icloud.markdown | 7 +++---- source/_integrations/idteck_prox.markdown | 4 ++-- source/_integrations/ifttt.markdown | 6 +++--- source/_integrations/iglo.markdown | 4 ++-- source/_integrations/ign_sismologia.markdown | 4 ++-- source/_integrations/ihc.markdown | 6 +++--- source/_integrations/image_processing.markdown | 4 ++-- source/_integrations/imap.markdown | 4 ++-- source/_integrations/imap_email_content.markdown | 4 ++-- source/_integrations/incomfort.markdown | 4 ++-- source/_integrations/influxdb.markdown | 4 ++-- source/_integrations/input_boolean.markdown | 4 ++-- source/_integrations/input_datetime.markdown | 4 ++-- source/_integrations/input_number.markdown | 4 ++-- source/_integrations/input_select.markdown | 4 ++-- source/_integrations/input_text.markdown | 4 ++-- source/_integrations/insteon.markdown | 4 ++-- source/_integrations/integration.markdown | 4 ++-- source/_integrations/intent_script.markdown | 6 +++--- source/_integrations/ios.markdown | 4 ++-- source/_integrations/iota.markdown | 4 ++-- source/_integrations/iperf3.markdown | 4 ++-- source/_integrations/ipma.markdown | 4 ++-- source/_integrations/iqvia.markdown | 4 ++-- source/_integrations/irish_rail_transport.markdown | 4 ++-- source/_integrations/islamic_prayer_times.markdown | 4 ++-- source/_integrations/iss.markdown | 4 ++-- source/_integrations/isy994.markdown | 4 ++-- source/_integrations/itach.markdown | 4 ++-- source/_integrations/itunes.markdown | 5 ++--- source/_integrations/izone.markdown | 6 +++--- source/_integrations/jewish_calendar.markdown | 4 ++-- source/_integrations/joaoapps_join.markdown | 4 ++-- source/_integrations/juicenet.markdown | 4 ++-- source/_integrations/kaiterra.markdown | 6 +++--- source/_integrations/kankun.markdown | 4 ++-- source/_integrations/keba.markdown | 4 ++-- source/_integrations/keenetic_ndms2.markdown | 4 ++-- source/_integrations/keyboard.markdown | 4 ++-- source/_integrations/keyboard_remote.markdown | 4 ++-- source/_integrations/kira.markdown | 4 ++-- source/_integrations/kiwi.markdown | 4 ++-- source/_integrations/knx.markdown | 4 ++-- source/_integrations/kodi.markdown | 4 ++-- source/_integrations/konnected.markdown | 8 ++++---- source/_integrations/kwb.markdown | 6 +++--- source/_integrations/lacrosse.markdown | 4 ++-- source/_integrations/lametric.markdown | 4 ++-- source/_integrations/lannouncer.markdown | 4 ++-- source/_integrations/lastfm.markdown | 6 +++--- source/_integrations/launch_library.markdown | 4 ++-- source/_integrations/lcn.markdown | 4 ++-- source/_integrations/lg_netcast.markdown | 6 +++--- source/_integrations/lg_soundbar.markdown | 4 ++-- source/_integrations/life360.markdown | 4 ++-- source/_integrations/lifx.markdown | 4 ++-- source/_integrations/lifx_cloud.markdown | 4 ++-- source/_integrations/light.markdown | 5 ++--- source/_integrations/lightwave.markdown | 4 ++-- source/_integrations/limitlessled.markdown | 4 ++-- source/_integrations/linksys_smart.markdown | 4 ++-- source/_integrations/linky.markdown | 4 ++-- source/_integrations/linode.markdown | 4 ++-- source/_integrations/linux_battery.markdown | 4 ++-- source/_integrations/lirc.markdown | 4 ++-- source/_integrations/litejet.markdown | 4 ++-- source/_integrations/liveboxplaytv.markdown | 4 ++-- source/_integrations/llamalab_automate.markdown | 4 ++-- source/_integrations/local_file.markdown | 4 ++-- source/_integrations/lock.markdown | 4 ++-- source/_integrations/lockitron.markdown | 4 ++-- source/_integrations/logbook.markdown | 4 ++-- source/_integrations/logentries.markdown | 5 ++--- source/_integrations/logger.markdown | 4 ++-- source/_integrations/logi_circle.markdown | 4 ++-- source/_integrations/london_air.markdown | 4 ++-- source/_integrations/london_underground.markdown | 4 ++-- source/_integrations/loopenergy.markdown | 4 ++-- source/_integrations/luci.markdown | 4 ++-- source/_integrations/luftdaten.markdown | 4 ++-- source/_integrations/lupusec.markdown | 4 ++-- source/_integrations/lutron.markdown | 4 ++-- source/_integrations/lutron_caseta.markdown | 4 ++-- source/_integrations/lw12wifi.markdown | 5 ++--- source/_integrations/lyft.markdown | 4 ++-- source/_integrations/magicseaweed.markdown | 4 ++-- source/_integrations/mailbox.markdown | 4 ++-- source/_integrations/mailgun.markdown | 6 +++--- source/_integrations/manual.markdown | 4 ++-- source/_integrations/manual_mqtt.markdown | 6 +++--- source/_integrations/map.markdown | 4 ++-- source/_integrations/marytts.markdown | 4 ++-- source/_integrations/mastodon.markdown | 4 ++-- source/_integrations/matrix.markdown | 6 +++--- source/_integrations/maxcube.markdown | 6 +++--- source/_integrations/mcp23017.markdown | 4 ++-- source/_integrations/media_extractor.markdown | 4 ++-- source/_integrations/media_player.markdown | 6 ++---- source/_integrations/mediaroom.markdown | 4 ++-- source/_integrations/melissa.markdown | 4 ++-- source/_integrations/meraki.markdown | 6 +++--- source/_integrations/message_bird.markdown | 4 ++-- source/_integrations/met.markdown | 4 ++-- source/_integrations/meteo_france.markdown | 4 ++-- source/_integrations/meteoalarm.markdown | 2 +- source/_integrations/metoffice.markdown | 4 ++-- source/_integrations/mfi.markdown | 4 ++-- source/_integrations/mhz19.markdown | 4 ++-- source/_integrations/microsoft.markdown | 4 ++-- source/_integrations/microsoft_face.markdown | 4 ++-- source/_integrations/microsoft_face_detect.markdown | 4 ++-- source/_integrations/microsoft_face_identify.markdown | 4 ++-- source/_integrations/miflora.markdown | 4 ++-- source/_integrations/mikrotik.markdown | 4 ++-- source/_integrations/mill.markdown | 4 ++-- source/_integrations/min_max.markdown | 4 ++-- source/_integrations/minio.markdown | 4 ++-- source/_integrations/mitemp_bt.markdown | 4 ++-- source/_integrations/mjpeg.markdown | 4 ++-- source/_integrations/mobile_app.markdown | 6 +++--- source/_integrations/mochad.markdown | 6 +++--- source/_integrations/modbus.markdown | 5 ++--- source/_integrations/modem_callerid.markdown | 6 +++--- source/_integrations/mold_indicator.markdown | 6 +++--- source/_integrations/monoprice.markdown | 4 ++-- source/_integrations/moon.markdown | 4 ++-- source/_integrations/mopar.markdown | 4 ++-- source/_integrations/mpchc.markdown | 5 ++--- source/_integrations/mpd.markdown | 6 ++---- source/_integrations/mqtt.markdown | 5 ++--- source/_integrations/mqtt_eventstream.markdown | 4 ++-- source/_integrations/mqtt_json.markdown | 4 ++-- source/_integrations/mqtt_room.markdown | 4 ++-- source/_integrations/mqtt_statestream.markdown | 4 ++-- source/_integrations/msteams.markdown | 4 ++-- source/_integrations/mvglive.markdown | 4 ++-- source/_integrations/mychevy.markdown | 4 ++-- source/_integrations/mycroft.markdown | 6 +++--- source/_integrations/myq.markdown | 5 ++--- source/_integrations/mysensors.markdown | 4 ++-- source/_integrations/mystrom.markdown | 6 +++--- source/_integrations/mythicbeastsdns.markdown | 4 ++-- source/_integrations/n26.markdown | 4 ++-- source/_integrations/nad.markdown | 4 ++-- source/_integrations/namecheapdns.markdown | 4 ++-- source/_integrations/nanoleaf.markdown | 4 ++-- source/_integrations/neato.markdown | 4 ++-- source/_integrations/nederlandse_spoorwegen.markdown | 4 ++-- source/_integrations/nello.markdown | 5 ++--- source/_integrations/ness_alarm.markdown | 5 ++--- source/_integrations/nest.markdown | 4 ++-- source/_integrations/netatmo.markdown | 6 +++--- source/_integrations/netdata.markdown | 4 ++-- source/_integrations/netgear.markdown | 4 ++-- source/_integrations/netgear_lte.markdown | 4 ++-- source/_integrations/netio.markdown | 4 ++-- source/_integrations/neurio_energy.markdown | 4 ++-- source/_integrations/nextbus.markdown | 4 ++-- source/_integrations/nfandroidtv.markdown | 4 ++-- source/_integrations/niko_home_control.markdown | 4 ++-- source/_integrations/nilu.markdown | 4 ++-- source/_integrations/nissan_leaf.markdown | 4 ++-- source/_integrations/nmap_tracker.markdown | 5 ++--- source/_integrations/nmbs.markdown | 4 ++-- source/_integrations/no_ip.markdown | 4 ++-- source/_integrations/noaa_tides.markdown | 4 ++-- source/_integrations/norway_air.markdown | 4 ++-- source/_integrations/notify.markdown | 4 ++-- source/_integrations/notion.markdown | 4 ++-- source/_integrations/nsw_fuel_station.markdown | 4 ++-- source/_integrations/nsw_rural_fire_service_feed.markdown | 4 ++-- source/_integrations/nuheat.markdown | 4 ++-- source/_integrations/nuimo_controller.markdown | 4 ++-- source/_integrations/nuki.markdown | 4 ++-- source/_integrations/nut.markdown | 2 +- source/_integrations/nws.markdown | 4 ++-- source/_integrations/nx584.markdown | 6 +++--- source/_integrations/nzbget.markdown | 4 ++-- source/_integrations/oasa_telematics.markdown | 4 ++-- source/_integrations/obihai.markdown | 4 ++-- source/_integrations/octoprint.markdown | 4 ++-- source/_integrations/oem.markdown | 4 ++-- source/_integrations/ohmconnect.markdown | 6 +++--- source/_integrations/ombi.markdown | 6 +++--- source/_integrations/onboarding.markdown | 4 ++-- source/_integrations/onewire.markdown | 4 ++-- source/_integrations/onkyo.markdown | 4 ++-- source/_integrations/onvif.markdown | 4 ++-- source/_integrations/openalpr_cloud.markdown | 4 ++-- source/_integrations/openalpr_local.markdown | 4 ++-- source/_integrations/opencv.markdown | 4 ++-- source/_integrations/openevse.markdown | 4 ++-- source/_integrations/openexchangerates.markdown | 4 ++-- source/_integrations/opengarage.markdown | 4 ++-- source/_integrations/openhardwaremonitor.markdown | 4 ++-- source/_integrations/openhome.markdown | 5 ++--- source/_integrations/opensensemap.markdown | 5 ++--- source/_integrations/opensky.markdown | 4 ++-- source/_integrations/opentherm_gw.markdown | 4 ++-- source/_integrations/openuv.markdown | 4 ++-- source/_integrations/openweathermap.markdown | 4 ++-- source/_integrations/opple.markdown | 7 +++---- source/_integrations/orangepi_gpio.markdown | 4 ++-- source/_integrations/oru.markdown | 4 ++-- source/_integrations/orvibo.markdown | 4 ++-- source/_integrations/osramlightify.markdown | 4 ++-- source/_integrations/otp.markdown | 4 ++-- source/_integrations/owlet.markdown | 4 ++-- source/_integrations/owntracks.markdown | 4 ++-- source/_integrations/panasonic_bluray.markdown | 4 ++-- source/_integrations/panasonic_viera.markdown | 4 ++-- source/_integrations/pandora.markdown | 5 ++--- source/_integrations/panel_custom.markdown | 4 ++-- source/_integrations/panel_iframe.markdown | 5 ++--- source/_integrations/pcal9535a.markdown | 4 ++-- source/_integrations/pencom.markdown | 4 ++-- source/_integrations/persistent_notification.markdown | 4 ++-- source/_integrations/person.markdown | 6 +++--- source/_integrations/philips_js.markdown | 4 ++-- source/_integrations/pi_hole.markdown | 4 ++-- source/_integrations/picotts.markdown | 4 ++-- source/_integrations/piglow.markdown | 5 ++--- source/_integrations/pilight.markdown | 4 ++-- source/_integrations/ping.markdown | 4 ++-- source/_integrations/pioneer.markdown | 4 ++-- source/_integrations/pjlink.markdown | 4 ++-- source/_integrations/plaato.markdown | 4 ++-- source/_integrations/plant.markdown | 4 ++-- source/_integrations/plex.markdown | 5 ++--- source/_integrations/plugwise.markdown | 4 ++-- source/_integrations/plum_lightpad.markdown | 4 ++-- source/_integrations/pocketcasts.markdown | 2 +- source/_integrations/point.markdown | 4 ++-- source/_integrations/postnl.markdown | 2 +- source/_integrations/prezzibenzina.markdown | 4 ++-- source/_integrations/proliphix.markdown | 5 ++--- source/_integrations/prometheus.markdown | 4 ++-- source/_integrations/prowl.markdown | 4 ++-- source/_integrations/proximity.markdown | 4 ++-- source/_integrations/proxmoxve.markdown | 4 ++-- source/_integrations/proxy.markdown | 4 ++-- source/_integrations/ps4.markdown | 4 ++-- source/_integrations/ptvsd.markdown | 6 +++--- source/_integrations/pulseaudio_loopback.markdown | 4 ++-- source/_integrations/push.markdown | 4 ++-- source/_integrations/pushbullet.markdown | 4 ++-- source/_integrations/pushetta.markdown | 4 ++-- source/_integrations/pushover.markdown | 4 ++-- source/_integrations/pushsafer.markdown | 4 ++-- source/_integrations/pvoutput.markdown | 4 ++-- source/_integrations/pyload.markdown | 4 ++-- source/_integrations/python_script.markdown | 4 ++-- source/_integrations/qbittorrent.markdown | 4 ++-- source/_integrations/qld_bushfire.markdown | 4 ++-- source/_integrations/qnap.markdown | 4 ++-- source/_integrations/qrcode.markdown | 4 ++-- source/_integrations/quantum_gateway.markdown | 4 ++-- source/_integrations/qwikswitch.markdown | 6 +++--- source/_integrations/rachio.markdown | 4 ++-- source/_integrations/radarr.markdown | 4 ++-- source/_integrations/radiotherm.markdown | 6 +++--- source/_integrations/rainbird.markdown | 6 +++--- source/_integrations/raincloud.markdown | 6 +++--- source/_integrations/rainforest_eagle.markdown | 4 ++-- source/_integrations/rainmachine.markdown | 4 ++-- source/_integrations/random.markdown | 4 ++-- source/_integrations/raspihats.markdown | 4 ++-- source/_integrations/raspyrfm.markdown | 4 ++-- source/_integrations/recollect_waste.markdown | 2 +- source/_integrations/recorder.markdown | 6 +++--- source/_integrations/recswitch.markdown | 6 +++--- source/_integrations/reddit.markdown | 4 ++-- source/_integrations/rejseplanen.markdown | 4 ++-- source/_integrations/remember_the_milk.markdown | 4 ++-- source/_integrations/remote.markdown | 4 ++-- source/_integrations/remote_rpi_gpio.markdown | 4 ++-- source/_integrations/repetier.markdown | 2 +- source/_integrations/rest.markdown | 4 ++-- source/_integrations/rest_command.markdown | 4 ++-- source/_integrations/rflink.markdown | 4 ++-- source/_integrations/rfxtrx.markdown | 4 ++-- source/_integrations/ring.markdown | 4 ++-- source/_integrations/ripple.markdown | 4 ++-- source/_integrations/rmvtransport.markdown | 4 ++-- source/_integrations/rocketchat.markdown | 6 ++---- source/_integrations/roku.markdown | 4 ++-- source/_integrations/roomba.markdown | 4 ++-- source/_integrations/route53.markdown | 4 ++-- source/_integrations/rova.markdown | 4 ++-- source/_integrations/rpi_camera.markdown | 4 ++-- source/_integrations/rpi_gpio.markdown | 4 ++-- source/_integrations/rpi_gpio_pwm.markdown | 4 ++-- source/_integrations/rpi_pfio.markdown | 6 +++--- source/_integrations/rpi_rf.markdown | 4 ++-- source/_integrations/rss_feed_template.markdown | 4 ++-- source/_integrations/rtorrent.markdown | 4 ++-- source/_integrations/russound_rio.markdown | 4 ++-- source/_integrations/russound_rnet.markdown | 4 ++-- source/_integrations/sabnzbd.markdown | 6 +++--- source/_integrations/saj.markdown | 6 +++--- source/_integrations/samsungtv.markdown | 4 ++-- source/_integrations/satel_integra.markdown | 4 ++-- source/_integrations/scene.markdown | 4 ++-- source/_integrations/scrape.markdown | 4 ++-- source/_integrations/script.markdown | 4 ++-- source/_integrations/scsgate.markdown | 4 ++-- source/_integrations/season.markdown | 4 ++-- source/_integrations/sendgrid.markdown | 4 ++-- source/_integrations/sense.markdown | 2 +- source/_integrations/sensehat.markdown | 4 ++-- source/_integrations/sensibo.markdown | 4 ++-- source/_integrations/sensor.markdown | 4 ++-- source/_integrations/serial.markdown | 4 ++-- source/_integrations/serial_pm.markdown | 4 ++-- source/_integrations/sesame.markdown | 4 ++-- source/_integrations/seven_segments.markdown | 4 ++-- source/_integrations/seventeentrack.markdown | 4 ++-- source/_integrations/shell_command.markdown | 4 ++-- source/_integrations/shiftr.markdown | 6 +++--- source/_integrations/shodan.markdown | 4 ++-- source/_integrations/shopping_list.markdown | 6 +++--- source/_integrations/sht31.markdown | 4 ++-- source/_integrations/sigfox.markdown | 4 ++-- source/_integrations/simplepush.markdown | 5 ++--- source/_integrations/simplisafe.markdown | 4 ++-- source/_integrations/simulated.markdown | 4 ++-- source/_integrations/sinch.markdown | 4 ++-- source/_integrations/sisyphus.markdown | 4 ++-- source/_integrations/sky_hub.markdown | 5 ++--- source/_integrations/skybeacon.markdown | 4 ++-- source/_integrations/skybell.markdown | 4 ++-- source/_integrations/slack.markdown | 5 ++--- source/_integrations/sleepiq.markdown | 4 ++-- source/_integrations/slide.markdown | 5 ++--- source/_integrations/sma.markdown | 4 ++-- source/_integrations/smappee.markdown | 4 ++-- source/_integrations/smarthab.markdown | 4 ++-- source/_integrations/smartthings.markdown | 4 ++-- source/_integrations/smarty.markdown | 4 ++-- source/_integrations/smhi.markdown | 8 ++++---- source/_integrations/smtp.markdown | 5 ++--- source/_integrations/snapcast.markdown | 4 ++-- source/_integrations/snips.markdown | 4 ++-- source/_integrations/snmp.markdown | 4 ++-- source/_integrations/sochain.markdown | 4 ++-- source/_integrations/socialblade.markdown | 2 +- source/_integrations/solaredge.markdown | 4 ++-- source/_integrations/solaredge_local.markdown | 4 ++-- source/_integrations/solarlog.markdown | 4 ++-- source/_integrations/solax.markdown | 4 ++-- source/_integrations/soma.markdown | 7 +++---- source/_integrations/somfy.markdown | 4 ++-- source/_integrations/somfy_mylink.markdown | 6 +++--- source/_integrations/sonarr.markdown | 4 ++-- source/_integrations/songpal.markdown | 7 ++----- source/_integrations/sonos.markdown | 4 ++-- source/_integrations/sony_projector.markdown | 4 ++-- source/_integrations/soundtouch.markdown | 4 ++-- source/_integrations/spaceapi.markdown | 6 +++--- source/_integrations/spc.markdown | 4 ++-- source/_integrations/speedtestdotnet.markdown | 4 ++-- source/_integrations/spider.markdown | 4 ++-- source/_integrations/splunk.markdown | 4 ++-- source/_integrations/spotcrime.markdown | 4 ++-- source/_integrations/spotify.markdown | 4 ++-- source/_integrations/sql.markdown | 4 ++-- source/_integrations/squeezebox.markdown | 5 ++--- source/_integrations/ssdp.markdown | 4 ++-- source/_integrations/starline.markdown | 4 ++-- source/_integrations/starlingbank.markdown | 4 ++-- source/_integrations/startca.markdown | 4 ++-- source/_integrations/statistics.markdown | 6 +++--- source/_integrations/statsd.markdown | 6 +++--- source/_integrations/steam_online.markdown | 4 ++-- source/_integrations/stiebel_eltron.markdown | 4 ++-- source/_integrations/stream.markdown | 6 +++--- source/_integrations/streamlabswater.markdown | 8 ++++---- source/_integrations/stt.markdown | 6 +++--- source/_integrations/suez_water.markdown | 4 ++-- source/_integrations/sun.markdown | 4 ++-- source/_integrations/supervisord.markdown | 6 +++--- source/_integrations/supla.markdown | 4 ++-- source/_integrations/swiss_hydrological_data.markdown | 4 ++-- source/_integrations/swiss_public_transport.markdown | 4 ++-- source/_integrations/swisscom.markdown | 5 ++--- source/_integrations/switch.markdown | 4 ++-- source/_integrations/switchbot.markdown | 4 ++-- source/_integrations/switcher_kis.markdown | 4 ++-- source/_integrations/switchmate.markdown | 4 ++-- source/_integrations/syncthru.markdown | 4 ++-- source/_integrations/synology.markdown | 4 ++-- source/_integrations/synology_chat.markdown | 4 ++-- source/_integrations/synology_srm.markdown | 4 ++-- source/_integrations/synologydsm.markdown | 4 ++-- source/_integrations/syslog.markdown | 4 ++-- source/_integrations/system_health.markdown | 6 +++--- source/_integrations/system_log.markdown | 5 ++--- source/_integrations/systemmonitor.markdown | 4 ++-- source/_integrations/tado.markdown | 4 ++-- source/_integrations/tahoma.markdown | 4 ++-- source/_integrations/tank_utility.markdown | 4 ++-- source/_integrations/tapsaff.markdown | 4 ++-- source/_integrations/tautulli.markdown | 4 ++-- source/_integrations/tcp.markdown | 4 ++-- source/_integrations/ted5000.markdown | 6 +++--- source/_integrations/teksavvy.markdown | 4 ++-- source/_integrations/telegram.markdown | 5 ++--- source/_integrations/tellduslive.markdown | 4 ++-- source/_integrations/tellstick.markdown | 4 ++-- source/_integrations/telnet.markdown | 4 ++-- source/_integrations/temper.markdown | 4 ++-- source/_integrations/template.markdown | 4 ++-- source/_integrations/tensorflow.markdown | 4 ++-- source/_integrations/tesla.markdown | 4 ++-- source/_integrations/tfiac.markdown | 4 ++-- source/_integrations/thermoworks_smoke.markdown | 4 ++-- source/_integrations/thethingsnetwork.markdown | 6 +++--- source/_integrations/thingspeak.markdown | 6 +++--- source/_integrations/thinkingcleaner.markdown | 4 ++-- source/_integrations/thomson.markdown | 5 ++--- source/_integrations/threshold.markdown | 4 ++-- source/_integrations/tibber.markdown | 6 +++--- source/_integrations/tikteck.markdown | 4 ++-- source/_integrations/tile.markdown | 4 ++-- source/_integrations/time_date.markdown | 4 ++-- source/_integrations/timer.markdown | 4 ++-- source/_integrations/tod.markdown | 4 ++-- source/_integrations/todoist.markdown | 4 ++-- source/_integrations/tof.markdown | 6 +++--- source/_integrations/tomato.markdown | 4 ++-- source/_integrations/toon.markdown | 4 ++-- source/_integrations/torque.markdown | 6 +++--- source/_integrations/totalconnect.markdown | 4 ++-- source/_integrations/touchline.markdown | 4 ++-- source/_integrations/tplink.markdown | 4 ++-- source/_integrations/tplink_lte.markdown | 4 ++-- source/_integrations/traccar.markdown | 4 ++-- source/_integrations/trackr.markdown | 6 ++---- source/_integrations/tradfri.markdown | 4 ++-- source/_integrations/trafikverket_train.markdown | 4 ++-- source/_integrations/trafikverket_weatherstation.markdown | 4 ++-- source/_integrations/transmission.markdown | 4 ++-- source/_integrations/transport_nsw.markdown | 4 ++-- source/_integrations/travisci.markdown | 4 ++-- source/_integrations/trend.markdown | 4 ++-- source/_integrations/tts.markdown | 4 ++-- source/_integrations/tuya.markdown | 4 ++-- source/_integrations/twentemilieu.markdown | 4 ++-- source/_integrations/twilio.markdown | 6 +++--- source/_integrations/twilio_call.markdown | 4 ++-- source/_integrations/twilio_sms.markdown | 6 +++--- source/_integrations/twitch.markdown | 6 +++--- source/_integrations/twitter.markdown | 5 ++--- source/_integrations/ubee.markdown | 4 ++-- source/_integrations/ubus.markdown | 4 ++-- source/_integrations/ue_smart_radio.markdown | 7 +++---- source/_integrations/uk_transport.markdown | 6 +++--- source/_integrations/unifi.markdown | 4 ++-- source/_integrations/unifi_direct.markdown | 6 ++---- source/_integrations/unifiled.markdown | 4 ++-- source/_integrations/universal.markdown | 4 ++-- source/_integrations/upc_connect.markdown | 6 ++---- source/_integrations/updater.markdown | 4 ++-- source/_integrations/upnp.markdown | 6 +++--- source/_integrations/uptime.markdown | 4 ++-- source/_integrations/uptimerobot.markdown | 4 ++-- source/_integrations/uscis.markdown | 2 +- source/_integrations/usgs_earthquakes_feed.markdown | 4 ++-- source/_integrations/utility_meter.markdown | 4 ++-- source/_integrations/uvc.markdown | 4 ++-- source/_integrations/vacuum.markdown | 4 ++-- source/_integrations/vallox.markdown | 4 ++-- source/_integrations/vasttrafik.markdown | 6 +++--- source/_integrations/velbus.markdown | 6 +++--- source/_integrations/velux.markdown | 4 ++-- source/_integrations/venstar.markdown | 5 ++--- source/_integrations/vera.markdown | 6 +++--- source/_integrations/verisure.markdown | 4 ++-- source/_integrations/versasense.markdown | 4 ++-- source/_integrations/version.markdown | 4 ++-- source/_integrations/vesync.markdown | 4 ++-- source/_integrations/viaggiatreno.markdown | 4 ++-- source/_integrations/vicare.markdown | 6 ++---- source/_integrations/vivotek.markdown | 4 ++-- source/_integrations/vizio.markdown | 4 ++-- source/_integrations/vlc.markdown | 4 ++-- source/_integrations/vlc_telnet.markdown | 4 ++-- source/_integrations/voicerss.markdown | 4 ++-- source/_integrations/volkszaehler.markdown | 4 ++-- source/_integrations/volumio.markdown | 4 ++-- source/_integrations/volvooncall.markdown | 4 ++-- source/_integrations/vultr.markdown | 4 ++-- source/_integrations/w800rf32.markdown | 4 ++-- source/_integrations/wake_on_lan.markdown | 4 ++-- source/_integrations/waqi.markdown | 4 ++-- source/_integrations/water_heater.markdown | 4 ++-- source/_integrations/waterfurnace.markdown | 4 ++-- source/_integrations/watson_iot.markdown | 4 ++-- source/_integrations/watson_tts.markdown | 4 ++-- source/_integrations/waze_travel_time.markdown | 5 ++--- source/_integrations/weather.markdown | 4 ++-- source/_integrations/webhook.markdown | 2 +- source/_integrations/weblink.markdown | 4 ++-- source/_integrations/webostv.markdown | 4 ++-- source/_integrations/websocket_api.markdown | 6 +++--- source/_integrations/wemo.markdown | 4 ++-- source/_integrations/whois.markdown | 4 ++-- source/_integrations/wink.markdown | 4 ++-- source/_integrations/wirelesstag.markdown | 4 ++-- source/_integrations/withings.markdown | 4 ++-- source/_integrations/wled.markdown | 4 ++-- source/_integrations/workday.markdown | 4 ++-- source/_integrations/worldclock.markdown | 4 ++-- source/_integrations/worldtidesinfo.markdown | 4 ++-- source/_integrations/worxlandroid.markdown | 4 ++-- source/_integrations/wsdot.markdown | 4 ++-- source/_integrations/wunderground.markdown | 4 ++-- source/_integrations/wunderlist.markdown | 4 ++-- source/_integrations/wwlln.markdown | 4 ++-- source/_integrations/x10.markdown | 4 ++-- source/_integrations/xbox_live.markdown | 5 ++--- source/_integrations/xeoma.markdown | 4 ++-- source/_integrations/xfinity.markdown | 8 ++++---- source/_integrations/xiaomi.markdown | 4 ++-- source/_integrations/xiaomi_aqara.markdown | 4 ++-- source/_integrations/xiaomi_miio.markdown | 4 ++-- source/_integrations/xiaomi_tv.markdown | 4 ++-- source/_integrations/xmpp.markdown | 5 ++--- source/_integrations/xs1.markdown | 4 ++-- source/_integrations/yale_smart_alarm.markdown | 4 ++-- source/_integrations/yamaha.markdown | 4 ++-- source/_integrations/yamaha_musiccast.markdown | 4 ++-- source/_integrations/yandex_transport.markdown | 6 +++--- source/_integrations/yandextts.markdown | 4 ++-- source/_integrations/yeelight.markdown | 4 ++-- source/_integrations/yeelightsunflower.markdown | 4 ++-- source/_integrations/yessssms.markdown | 4 ++-- source/_integrations/yi.markdown | 4 ++-- source/_integrations/yr.markdown | 4 ++-- source/_integrations/yweather.markdown | 4 ++-- source/_integrations/zabbix.markdown | 4 ++-- source/_integrations/zamg.markdown | 4 ++-- source/_integrations/zengge.markdown | 4 ++-- source/_integrations/zeroconf.markdown | 4 ++-- source/_integrations/zestimate.markdown | 4 ++-- source/_integrations/zha.markdown | 4 ++-- source/_integrations/zhong_hong.markdown | 5 ++--- source/_integrations/zigbee.markdown | 4 ++-- source/_integrations/ziggo_mediabox_xl.markdown | 6 +++--- source/_integrations/zone.markdown | 4 ++-- source/_integrations/zoneminder.markdown | 4 ++-- source/_integrations/zwave.markdown | 4 ++-- 884 files changed, 1866 insertions(+), 1971 deletions(-) diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown index e39cfcbc33b..7a4e2903285 100644 --- a/source/_integrations/abode.markdown +++ b/source/_integrations/abode.markdown @@ -1,6 +1,6 @@ --- -title: "Abode Home Security" -description: "Instructions on integrating Abode home security with Home Assistant." +title: Abode Home Security +description: Instructions on integrating Abode home security with Home Assistant. logo: abode.jpg ha_category: - Hub diff --git a/source/_integrations/acer_projector.markdown b/source/_integrations/acer_projector.markdown index ea66c086330..33693cd3fbe 100644 --- a/source/_integrations/acer_projector.markdown +++ b/source/_integrations/acer_projector.markdown @@ -1,6 +1,6 @@ --- -title: "Acer Projector Switch" -description: "Instructions on how to integrate Acer Projector switches into Home Assistant." +title: Acer Projector Switch +description: Instructions on how to integrate Acer Projector switches into Home Assistant. logo: acer.png ha_category: - Multimedia diff --git a/source/_integrations/actiontec.markdown b/source/_integrations/actiontec.markdown index 2ec05057621..ba8cae59d30 100644 --- a/source/_integrations/actiontec.markdown +++ b/source/_integrations/actiontec.markdown @@ -1,6 +1,6 @@ --- -title: "Actiontec" -description: "Instructions on how to integrate Actiontec routers into Home Assistant." +title: Actiontec +description: Instructions on how to integrate Actiontec routers into Home Assistant. logo: actiontec.png ha_category: - Presence Detection diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown index 486ccc30c1b..1f3078bfa8a 100644 --- a/source/_integrations/adguard.markdown +++ b/source/_integrations/adguard.markdown @@ -1,6 +1,6 @@ --- -title: "AdGuard Home" -description: "Instructions on how to integrate AdGuard Home with Home Assistant." +title: AdGuard Home +description: Instructions on how to integrate AdGuard Home with Home Assistant. logo: adguard.png ha_category: - Network diff --git a/source/_integrations/ads.markdown b/source/_integrations/ads.markdown index 61742c7b38e..cd19f4a938b 100644 --- a/source/_integrations/ads.markdown +++ b/source/_integrations/ads.markdown @@ -1,5 +1,5 @@ --- -title: "ADS" +title: ADS description: Connect Home Assistant to TwinCAT devices via the ADS interface logo: beckhoff.png ha_category: @@ -9,7 +9,7 @@ ha_category: - Sensor - Switch - Cover -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Local Push --- diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index e6e816e699b..0a47d3b7bed 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -1,6 +1,6 @@ --- title: AfterShip Sensor -description: "Instructions on how to set up AfterShip sensors within Home Assistant." +description: Instructions on how to set up AfterShip sensors within Home Assistant. logo: aftership.png ha_category: - Postal Service diff --git a/source/_integrations/air_quality.markdown b/source/_integrations/air_quality.markdown index 32c20f81e6c..3fe9bfa5c90 100644 --- a/source/_integrations/air_quality.markdown +++ b/source/_integrations/air_quality.markdown @@ -1,6 +1,6 @@ --- -title: "Air Quality" -description: "Instructions on how to add air quality sensors with Home Assistant" +title: Air Quality +description: Instructions on how to add air quality sensors with Home Assistant ha_release: 0.85 --- @@ -19,4 +19,3 @@ The platforms cover the following levels (if they are available): - The N2O (nitrogen oxide) level. - The NO (nitrogen monoxide) level. - The NO2 (nitrogen dioxide) level. - diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index 433dd654567..dacb9dfa989 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -1,6 +1,6 @@ --- -title: "Airly" -description: "Instructions on how to integrate Airly within Home Assistant." +title: Airly +description: Instructions on how to integrate Airly within Home Assistant. logo: airly.png ha_category: - Health diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index c95b3562d5e..fa4b0f077d2 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -1,6 +1,6 @@ --- -title: "AirVisual" -description: "Instructions on how to use AirVisual data within Home Assistant" +title: AirVisual +description: Instructions on how to use AirVisual data within Home Assistant logo: airvisual.jpg ha_category: - Health @@ -163,4 +163,3 @@ Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) - diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown index ddcf9d3797a..6e593d7575c 100644 --- a/source/_integrations/aladdin_connect.markdown +++ b/source/_integrations/aladdin_connect.markdown @@ -1,6 +1,6 @@ --- -title: "Genie Aladdin Connect Cover" -description: "Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant." +title: Genie Aladdin Connect Cover +description: Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant. logo: aladdin_connect.png ha_category: - Cover diff --git a/source/_integrations/alarm_control_panel.markdown b/source/_integrations/alarm_control_panel.markdown index b58bac3819f..21fcb02009e 100644 --- a/source/_integrations/alarm_control_panel.markdown +++ b/source/_integrations/alarm_control_panel.markdown @@ -1,6 +1,6 @@ --- -title: "Alarm Control Panels" -description: "Instructions on how to integrate Alarm Control Panels into Home Assistant." +title: Alarm Control Panels +description: Instructions on how to integrate Alarm Control Panels into Home Assistant. logo: home-assistant.png ha_category: - Alarm diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 7bf65735817..5489e280b6c 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -1,6 +1,6 @@ --- -title: "AlarmDecoder Alarm" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device." +title: AlarmDecoder Alarm +description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device. logo: alarmdecoder.png ha_category: - Alarm diff --git a/source/_integrations/alarmdotcom.markdown b/source/_integrations/alarmdotcom.markdown index ec12d4556ad..a14ee3dec57 100644 --- a/source/_integrations/alarmdotcom.markdown +++ b/source/_integrations/alarmdotcom.markdown @@ -1,6 +1,6 @@ --- -title: "Alarm.com Alarm Control Panel" -description: "Instructions on how to integrate Alarm.com into Home Assistant." +title: Alarm.com Alarm Control Panel +description: Instructions on how to integrate Alarm.com into Home Assistant. logo: alarmdotcom.png ha_category: - Alarm diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index 392ea2c5af6..10b7db5cf38 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -1,6 +1,6 @@ --- -title: "Alert" -description: "Instructions on how to setup automatic alerts within Home Assistant." +title: Alert +description: Instructions on how to setup automatic alerts within Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/alexa.markdown b/source/_integrations/alexa.markdown index 7b4d34c6e76..abbb94f0c2e 100644 --- a/source/_integrations/alexa.markdown +++ b/source/_integrations/alexa.markdown @@ -1,11 +1,11 @@ --- -title: "Amazon Alexa" -description: "Instructions on how to connect Alexa/Amazon Echo to Home Assistant." +title: Amazon Alexa +description: Instructions on how to connect Alexa/Amazon Echo to Home Assistant. logo: amazon-alexa.png ha_category: - Voice featured: true -ha_release: "0.10" +ha_release: '0.10' --- ## Automatic setup via Home Assistant Cloud diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown index 8830407c0d6..19afa87b05c 100644 --- a/source/_integrations/almond.markdown +++ b/source/_integrations/almond.markdown @@ -1,11 +1,11 @@ --- -title: "Almond" -description: "Instructions on how to setup Almond within Home Assistant." +title: Almond +description: Instructions on how to setup Almond within Home Assistant. logo: almond.png ha_category: - Voice ha_iot_class: Local Polling -ha_release: "0.102" +ha_release: '0.102' --- [Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant by [Stanford Open Virtual Assistant Lab](https://oval.cs.stanford.edu/). It allows you, among other things, to control Home Assistant using natural language. Once installed, it will be available on Lovelace via the microphone icon in the top right. diff --git a/source/_integrations/alpha_vantage.markdown b/source/_integrations/alpha_vantage.markdown index 5a6a919ef0f..b9493cc6961 100644 --- a/source/_integrations/alpha_vantage.markdown +++ b/source/_integrations/alpha_vantage.markdown @@ -1,11 +1,11 @@ --- -title: "Alpha Vantage" -description: "Instructions on how to setup Alpha Vantage within Home Assistant." +title: Alpha Vantage +description: Instructions on how to setup Alpha Vantage within Home Assistant. logo: alpha_vantage.png ha_category: - Finance ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' --- 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. @@ -89,4 +89,3 @@ sensor: to: USD name: Bitcoin ``` - diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index 7a63388dfba..9dfb93f01f8 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -1,6 +1,6 @@ --- -title: "Amazon Polly" -description: "Instructions on how to setup Amazon Polly with Home Assistant." +title: Amazon Polly +description: Instructions on how to setup Amazon Polly with Home Assistant. logo: polly.png ha_category: - Text-to-speech diff --git a/source/_integrations/ambiclimate.markdown b/source/_integrations/ambiclimate.markdown index a5e64074fd3..21ff7d0aae2 100644 --- a/source/_integrations/ambiclimate.markdown +++ b/source/_integrations/ambiclimate.markdown @@ -1,6 +1,6 @@ --- -title: "Ambiclimate A/C controller" -description: "Instructions on how to integrate Ambiclimate A/C controller into Home Assistant." +title: Ambiclimate A/C controller +description: Instructions on how to integrate Ambiclimate A/C controller into Home Assistant. logo: ambiclimate.png ha_category: Climate ha_release: 0.93 diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index d39490018ca..3bd927575b4 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -1,6 +1,6 @@ --- -title: "Ambient Weather Station Sensor" -description: "How to integrate Ambient Weather station within Home Assistant." +title: Ambient Weather Station Sensor +description: How to integrate Ambient Weather station within Home Assistant. logo: ambient_weather.png ha_category: - Weather diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index d5f9047eb76..b4b669f3033 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -1,6 +1,6 @@ --- -title: "Amcrest IP Camera" -description: "Instructions on how to integrate Amcrest IP cameras within Home Assistant." +title: Amcrest IP Camera +description: Instructions on how to integrate Amcrest IP cameras within Home Assistant. logo: amcrest.png ha_category: - Hub diff --git a/source/_integrations/ampio.markdown b/source/_integrations/ampio.markdown index 22386b8baa4..f1eceb4c89c 100644 --- a/source/_integrations/ampio.markdown +++ b/source/_integrations/ampio.markdown @@ -1,12 +1,12 @@ --- -title: "Ampio Smog" -description: "Instructions on how to setup Ampio Smog sensors in Home Assistant." +title: Ampio Smog +description: Instructions on how to setup Ampio Smog sensors in Home Assistant. logo: ampio_smog.png ha_category: - Health - Sensor ha_release: 0.92 -ha_iot_class: "Cloud Polling" +ha_iot_class: Cloud Polling --- The `ampio` air quality platform will query the open data API of [ampio.pl](http://smog1.ampio.pl:3050/) to monitor air quality sensor station. @@ -37,4 +37,3 @@ name: default: Station name type: string {% endconfiguration %} - diff --git a/source/_integrations/android_ip_webcam.markdown b/source/_integrations/android_ip_webcam.markdown index 3d13b52a815..b84d8267125 100644 --- a/source/_integrations/android_ip_webcam.markdown +++ b/source/_integrations/android_ip_webcam.markdown @@ -1,6 +1,6 @@ --- -title: "Android IP Webcam" -description: "Connect Android devices as an IP webcam to Home Assistant" +title: Android IP Webcam +description: Connect Android devices as an IP webcam to Home Assistant logo: android_ip_webcam.png ha_category: - Hub @@ -8,7 +8,7 @@ ha_category: - Camera - Sensor - Switch -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling --- diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 34f4d7a3e8d..15480e95709 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -1,6 +1,6 @@ --- -title: "Android TV" -description: "Instructions on how to integrate Android TV and Fire TV devices into Home Assistant." +title: Android TV +description: Instructions on how to integrate Android TV and Fire TV devices into Home Assistant. logo: androidtv.png ha_category: - Media Player diff --git a/source/_integrations/anel_pwrctrl.markdown b/source/_integrations/anel_pwrctrl.markdown index e146f69fb6e..15567eae9c7 100644 --- a/source/_integrations/anel_pwrctrl.markdown +++ b/source/_integrations/anel_pwrctrl.markdown @@ -1,11 +1,11 @@ --- -title: "ANEL PwrCtrl Switch" -description: "Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant." +title: ANEL PwrCtrl Switch +description: Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant. logo: anel.png ha_category: - Switch ha_iot_class: Local Polling -ha_release: "0.30" +ha_release: '0.30' --- The `anel_pwrctrl` switch platform allows you to control [ANEL PwrCtrl](https://anel-elektronik.de/SITE/produkte/produkte.htm) devices. diff --git a/source/_integrations/anthemav.markdown b/source/_integrations/anthemav.markdown index 7994f1334f4..9662b62512e 100644 --- a/source/_integrations/anthemav.markdown +++ b/source/_integrations/anthemav.markdown @@ -1,6 +1,6 @@ --- -title: "Anthem A/V Receivers" -description: "Instructions on how to integrate Anthem A/V Receivers into Home Assistant." +title: Anthem A/V Receivers +description: Instructions on how to integrate Anthem A/V Receivers into Home Assistant. logo: anthemav.png ha_category: - Media Player diff --git a/source/_integrations/apache_kafka.markdown b/source/_integrations/apache_kafka.markdown index 9442b8613df..40821d862ae 100644 --- a/source/_integrations/apache_kafka.markdown +++ b/source/_integrations/apache_kafka.markdown @@ -1,6 +1,6 @@ --- -title: "Apache Kafka" -description: "Send data and events to Apache Kafka." +title: Apache Kafka +description: Send data and events to Apache Kafka. logo: apache_kafka.png ha_category: - History diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown index d7a27f6feb0..54f99a94435 100644 --- a/source/_integrations/apcupsd.markdown +++ b/source/_integrations/apcupsd.markdown @@ -1,6 +1,6 @@ --- -title: "APCUPSd" -description: "Instructions on how to integrate APCUPSd status with Home Assistant." +title: APCUPSd +description: Instructions on how to integrate APCUPSd status with Home Assistant. logo: apcupsd.png ha_category: - System Monitor diff --git a/source/_integrations/api.markdown b/source/_integrations/api.markdown index 145aec44d37..99a416dd379 100644 --- a/source/_integrations/api.markdown +++ b/source/_integrations/api.markdown @@ -1,6 +1,6 @@ --- -title: "API" -description: "Instructions on how to setup the RESTful API within Home Assistant." +title: API +description: Instructions on how to setup the RESTful API within Home Assistant. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/apns.markdown b/source/_integrations/apns.markdown index 8a2d2d9a0bb..fe7df4e280a 100644 --- a/source/_integrations/apns.markdown +++ b/source/_integrations/apns.markdown @@ -1,6 +1,6 @@ --- -title: "APNS" -description: "Instructions on how to add APNS notifications to Home Assistant." +title: APNS +description: Instructions on how to add APNS notifications to Home Assistant. logo: apple.png ha_category: - Notifications diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown index eeec08c3d4a..4f772fbac47 100644 --- a/source/_integrations/apple_tv.markdown +++ b/source/_integrations/apple_tv.markdown @@ -1,6 +1,6 @@ --- -title: "Apple TV" -description: "Instructions on how to integrate Apple TV devices into Home Assistant." +title: Apple TV +description: Instructions on how to integrate Apple TV devices into Home Assistant. logo: apple.png ha_category: - Multimedia diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index b2759586a5d..f9e543c9382 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -1,6 +1,6 @@ --- -title: "Apprise" -description: "Instructions on how to add Apprise notifications to Home Assistant." +title: Apprise +description: Instructions on how to add Apprise notifications to Home Assistant. logo: apprise.png ha_category: - Notifications diff --git a/source/_integrations/aprs.markdown b/source/_integrations/aprs.markdown index 6e6e1993ab2..83ed1056387 100644 --- a/source/_integrations/aprs.markdown +++ b/source/_integrations/aprs.markdown @@ -1,6 +1,6 @@ --- -title: "APRS" -description: "Instructions on how to use APRS to track devices in Home Assistant." +title: APRS +description: Instructions on how to use APRS to track devices in Home Assistant. logo: aprs.png ha_release: 0.95 ha_category: Presence Detection diff --git a/source/_integrations/aqualogic.markdown b/source/_integrations/aqualogic.markdown index 0ec4b70a17b..7331ea0e519 100644 --- a/source/_integrations/aqualogic.markdown +++ b/source/_integrations/aqualogic.markdown @@ -1,12 +1,12 @@ --- -title: "AquaLogic" -description: "Instructions on how to integrate an AquaLogic controller within Home Assistant." +title: AquaLogic +description: Instructions on how to integrate an AquaLogic controller within Home Assistant. logo: hayward.png ha_category: - Hub - Sensor - Switch -ha_release: "0.80" +ha_release: '0.80' ha_iot_class: Local Push --- diff --git a/source/_integrations/aquostv.markdown b/source/_integrations/aquostv.markdown index 2ac9d50ab56..683ae0f55f9 100644 --- a/source/_integrations/aquostv.markdown +++ b/source/_integrations/aquostv.markdown @@ -1,6 +1,6 @@ --- -title: "Sharp Aquos TV" -description: "Instructions on how to integrate a Sharp Aquos TV into Home Assistant." +title: Sharp Aquos TV +description: Instructions on how to integrate a Sharp Aquos TV into Home Assistant. logo: sharp_aquos.png ha_category: - Media Player diff --git a/source/_integrations/arcam_fmj.markdown b/source/_integrations/arcam_fmj.markdown index 4071981ddad..d985da8e134 100644 --- a/source/_integrations/arcam_fmj.markdown +++ b/source/_integrations/arcam_fmj.markdown @@ -1,6 +1,6 @@ --- -title: "Arcam FMJ Receivers" -description: "Instructions on how to integrate Arcam FMJ Receivers into Home Assistant." +title: Arcam FMJ Receivers +description: Instructions on how to integrate Arcam FMJ Receivers into Home Assistant. logo: arcam.svg ha_category: Media Player ha_release: 0.96 diff --git a/source/_integrations/arduino.markdown b/source/_integrations/arduino.markdown index 52382a7eeb8..08558e17bcd 100644 --- a/source/_integrations/arduino.markdown +++ b/source/_integrations/arduino.markdown @@ -1,6 +1,6 @@ --- -title: "Arduino" -description: "Instructions on how to setup an Arduino boards within Home Assistant." +title: Arduino +description: Instructions on how to setup an Arduino boards within Home Assistant. logo: arduino.png ha_category: - DIY diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown index 88ee5984748..9c57b5afae3 100644 --- a/source/_integrations/arest.markdown +++ b/source/_integrations/arest.markdown @@ -1,6 +1,6 @@ --- -title: "aREST" -description: "Instructions on how to integrate aREST within Home Assistant." +title: aREST +description: Instructions on how to integrate aREST within Home Assistant. logo: arest.png ha_category: - DIY diff --git a/source/_integrations/arlo.markdown b/source/_integrations/arlo.markdown index 8afce16d6da..3556fc7f804 100644 --- a/source/_integrations/arlo.markdown +++ b/source/_integrations/arlo.markdown @@ -1,6 +1,6 @@ --- -title: "Arlo" -description: "Instructions on how to integrate your Netgear Arlo cameras within Home Assistant." +title: Arlo +description: Instructions on how to integrate your Netgear Arlo cameras within Home Assistant. logo: arlo.png ha_category: - Hub diff --git a/source/_integrations/aruba.markdown b/source/_integrations/aruba.markdown index 723ae4765a7..3be2fd75acd 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -1,13 +1,12 @@ --- -title: "Aruba" -description: "Instructions on how to integrate Aruba routers into Home Assistant." +title: Aruba +description: Instructions on how to integrate Aruba routers into Home Assistant. logo: aruba.png ha_category: - Presence Detection ha_release: 0.7 --- - This platform allows you to detect presence by looking at connected devices to an [Aruba Instant](https://www.arubanetworks.com/products/networking/aruba-instant/) device. Supported devices (tested): diff --git a/source/_integrations/arwn.markdown b/source/_integrations/arwn.markdown index b1eb557a99f..cceef83296f 100644 --- a/source/_integrations/arwn.markdown +++ b/source/_integrations/arwn.markdown @@ -1,6 +1,6 @@ --- -title: "ARWN Sensor" -description: "Instructions on how to integrate ARWN within Home Assistant." +title: ARWN Sensor +description: Instructions on how to integrate ARWN within Home Assistant. ha_category: - Sensor ha_release: 0.31 diff --git a/source/_integrations/asterisk_cdr.markdown b/source/_integrations/asterisk_cdr.markdown index c3b8483b85b..e8ef14c7c09 100644 --- a/source/_integrations/asterisk_cdr.markdown +++ b/source/_integrations/asterisk_cdr.markdown @@ -1,6 +1,6 @@ --- -title: "Asterisk Call Data Recorder" -description: "Instructions on how to integrate an Asterisk CDR within Home Assistant." +title: Asterisk Call Data Recorder +description: Instructions on how to integrate an Asterisk CDR within Home Assistant. logo: asterisk.png ha_category: - Mailbox diff --git a/source/_integrations/asterisk_mbox.markdown b/source/_integrations/asterisk_mbox.markdown index 7c702b3a58f..f71a5ac896c 100644 --- a/source/_integrations/asterisk_mbox.markdown +++ b/source/_integrations/asterisk_mbox.markdown @@ -1,6 +1,6 @@ --- -title: "Asterisk Voicemail" -description: "Instructions on how to integrate your existing Asterisk voicemail within Home Assistant." +title: Asterisk Voicemail +description: Instructions on how to integrate your existing Asterisk voicemail within Home Assistant. logo: asterisk.png ha_category: - Mailbox diff --git a/source/_integrations/asuswrt.markdown b/source/_integrations/asuswrt.markdown index 82aa97b7ef1..670d66b241e 100644 --- a/source/_integrations/asuswrt.markdown +++ b/source/_integrations/asuswrt.markdown @@ -1,6 +1,6 @@ --- -title: "Asuswrt" -description: "Instructions on how to integrate Asuswrt into Home Assistant." +title: Asuswrt +description: Instructions on how to integrate Asuswrt into Home Assistant. logo: asus.png ha_category: - Hub @@ -142,4 +142,3 @@ $ /bin/ln -s /tmp/dnsmasq.leases /var/lib/misc/dnsmasq.leases ``` The started script is also accessible and editable in the Router's web interface. `Advanced Settings -> Customization -> Scripts -> Custom User Script -> Run After Router Started` - diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown index 0ec6941905c..b2ba4541597 100644 --- a/source/_integrations/aten_pe.markdown +++ b/source/_integrations/aten_pe.markdown @@ -1,6 +1,6 @@ --- -title: "ATEN Rack PDU" -description: "Instructions on how to integrate ATEN Rack PDUs into Home Assistant." +title: ATEN Rack PDU +description: Instructions on how to integrate ATEN Rack PDUs into Home Assistant. logo: aten.png ha_category: - Switch diff --git a/source/_integrations/atome.markdown b/source/_integrations/atome.markdown index f0f71f152e5..6bdefa17eb6 100644 --- a/source/_integrations/atome.markdown +++ b/source/_integrations/atome.markdown @@ -1,6 +1,6 @@ --- -title: "Atome Linky Sensor" -description: "Integrate Atome Linky consumption data within Home Assistant." +title: Atome Linky Sensor +description: Integrate Atome Linky consumption data within Home Assistant. logo: total_direct_energie.png ha_release: 0.99 ha_category: diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown index a4c956714c2..50aef1be7b4 100644 --- a/source/_integrations/august.markdown +++ b/source/_integrations/august.markdown @@ -1,6 +1,6 @@ --- -title: "August" -description: "Instructions on how to integrate your August devices into Home Assistant." +title: August +description: Instructions on how to integrate your August devices into Home Assistant. logo: august.png ha_category: - Doorbell diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown index b4d12cacc29..4f51d0c0a91 100644 --- a/source/_integrations/aurora.markdown +++ b/source/_integrations/aurora.markdown @@ -1,6 +1,6 @@ --- -title: "Aurora sensor" -description: "Know when auroras might be visible at your location" +title: Aurora sensor +description: Know when auroras might be visible at your location ha_category: - Environment ha_release: 0.39 diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index 2ae6e0370b6..e4268bdbf28 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -1,6 +1,6 @@ --- -title: "Aurora ABB Powerone PV Inverter Sensor" -description: "Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant." +title: Aurora ABB Powerone PV Inverter Sensor +description: Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant. logo: powerone.png ha_category: - Sensor diff --git a/source/_integrations/auth.markdown b/source/_integrations/auth.markdown index 9e9f413a18a..0094c65f189 100644 --- a/source/_integrations/auth.markdown +++ b/source/_integrations/auth.markdown @@ -1,6 +1,6 @@ --- -title: "Auth" -description: "This integration is responsible for providing the authentication endpoints." +title: Auth +description: This integration is responsible for providing the authentication endpoints. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/automatic.markdown b/source/_integrations/automatic.markdown index fb9db70b934..68441f1617e 100644 --- a/source/_integrations/automatic.markdown +++ b/source/_integrations/automatic.markdown @@ -1,6 +1,6 @@ --- -title: "Automatic" -description: "Instructions for how to integrate Automatic ODB readers into Home Assistant." +title: Automatic +description: Instructions for how to integrate Automatic ODB readers into Home Assistant. logo: automatic.png ha_category: - Car @@ -8,7 +8,6 @@ ha_release: 0.28 ha_iot_class: Cloud Push --- - The `automatic` device tracker platform offers presence detection by retrieving your car's information from the [Automatic](https://automatic.com/) cloud service. ## Setup diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index 33e487071e1..cf7cece5126 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -1,6 +1,6 @@ --- -title: "Automation" -description: "Instructions on how to setup automation within Home Assistant." +title: Automation +description: Instructions on how to setup automation within Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/avea.markdown b/source/_integrations/avea.markdown index 44588bdcbcd..8187d2142f5 100644 --- a/source/_integrations/avea.markdown +++ b/source/_integrations/avea.markdown @@ -1,6 +1,6 @@ --- -title: "Elgato Avea" -description: "Instructions on how to integrate Elgato Avea with Home Assistant." +title: Elgato Avea +description: Instructions on how to integrate Elgato Avea with Home Assistant. logo: avea.png ha_category: - Light diff --git a/source/_integrations/avion.markdown b/source/_integrations/avion.markdown index 5313cfc4eff..20077987233 100644 --- a/source/_integrations/avion.markdown +++ b/source/_integrations/avion.markdown @@ -1,6 +1,6 @@ --- -title: "Avi-on" -description: "Instructions on how to setup GE Avi-on Bluetooth dimmers within Home Assistant." +title: Avi-on +description: Instructions on how to setup GE Avi-on Bluetooth dimmers within Home Assistant. ha_category: - Light ha_iot_class: Assumed State diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index 8754ae6e752..f0bde0f4e8b 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -1,6 +1,6 @@ --- -title: "Awair Air Quality Monitor" -description: "Instructions on how to setup Awair devices in Home Assistant." +title: Awair Air Quality Monitor +description: Instructions on how to setup Awair devices in Home Assistant. logo: awair.jpg ha_category: - Health diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 0c501748cea..6181bc9b584 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -1,10 +1,10 @@ --- -title: "Amazon Web Services" -description: "Instructions on how to integrate Amazon Web Services with Home Assistant." +title: Amazon Web Services +description: Instructions on how to integrate Amazon Web Services with Home Assistant. logo: aws.png ha_category: - Notifications -ha_release: "0.91" +ha_release: '0.91' --- The `aws` integration provides a single place to interact with [Amazon Web Services](https://aws.amazon.com/). Currently it provides a notification platform that 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. diff --git a/source/_integrations/axis.markdown b/source/_integrations/axis.markdown index 29d14a0a4e1..336c9ae253f 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -1,6 +1,6 @@ --- -title: "Axis" -description: "Integration between network devices from Axis Communications with Home Assistant." +title: Axis +description: Integration between network devices from Axis Communications with Home Assistant. logo: axis.png ha_category: - Camera diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index c7ed04efc3f..e1c5ba88f1a 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -1,6 +1,6 @@ --- -title: "Azure Event Hub" -description: "Setup for Azure Event Hub integration" +title: Azure Event Hub +description: Setup for Azure Event Hub integration logo: azure_event_hub.svg ha_category: - History diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index b09b71a574c..db5865dec64 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -1,6 +1,6 @@ --- -title: "Azure Service Bus" -description: "Setup for Azure Service Bus integration" +title: Azure Service Bus +description: Setup for Azure Service Bus integration logo: azure_service_bus.svg ha_category: - Notifications diff --git a/source/_integrations/baidu.markdown b/source/_integrations/baidu.markdown index e1b13e4c9bf..97282a202f9 100644 --- a/source/_integrations/baidu.markdown +++ b/source/_integrations/baidu.markdown @@ -1,6 +1,6 @@ --- -title: "Baidu Text-to-Speech" -description: "Instructions on how to setup Baidu TTS with Home Assistant." +title: Baidu Text-to-Speech +description: Instructions on how to setup Baidu TTS with Home Assistant. logo: baiducloud.png ha_category: - Text-to-speech diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index e6077902d1f..b8e622bc5ba 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -1,6 +1,6 @@ --- -title: "Bayesian Binary Sensor" -description: "Instructions on how to integrate threshold Bayesian sensors into Home Assistant." +title: Bayesian Binary Sensor +description: Instructions on how to integrate threshold Bayesian sensors into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/bbb_gpio.markdown b/source/_integrations/bbb_gpio.markdown index 389315e7f50..9585de1f001 100644 --- a/source/_integrations/bbb_gpio.markdown +++ b/source/_integrations/bbb_gpio.markdown @@ -1,6 +1,6 @@ --- -title: "BeagleBone Black GPIO" -description: "Instructions on how to integrate the GPIO capability of a BeagleBone Black into Home Assistant." +title: BeagleBone Black GPIO +description: Instructions on how to integrate the GPIO capability of a BeagleBone Black into Home Assistant. logo: beaglebone-black.png ha_category: - DIY diff --git a/source/_integrations/bbox.markdown b/source/_integrations/bbox.markdown index c9083780d65..7378484c515 100644 --- a/source/_integrations/bbox.markdown +++ b/source/_integrations/bbox.markdown @@ -1,6 +1,6 @@ --- -title: "Bbox" -description: "Instructions on how to integrate Bouygues Bbox routers into Home Assistant." +title: Bbox +description: Instructions on how to integrate Bouygues Bbox routers into Home Assistant. logo: bbox.png ha_category: - Network diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index 7a49cf788fa..809a817dc4f 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -1,6 +1,6 @@ --- -title: "BeeWi SmartClim BLE" -description: "Instructions on how to integrate MBeeWi SmartClim BLE sensor with Home Assistant." +title: BeeWi SmartClim BLE +description: Instructions on how to integrate MBeeWi SmartClim BLE sensor with Home Assistant. logo: beewi_by_otio.png ha_category: - Sensor diff --git a/source/_integrations/bh1750.markdown b/source/_integrations/bh1750.markdown index f270c27d31c..6107e589c78 100644 --- a/source/_integrations/bh1750.markdown +++ b/source/_integrations/bh1750.markdown @@ -1,6 +1,6 @@ --- -title: "BH1750 Light sensor" -description: "Instructions on how to integrate a BH1750 light sensor into Home Assistant." +title: BH1750 Light sensor +description: Instructions on how to integrate a BH1750 light sensor into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index 4d91c3d6fb1..b292f729662 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -1,6 +1,6 @@ --- -title: "Binary Sensor" -description: "Instructions on how-to setup binary sensors with Home Assistant." +title: Binary Sensor +description: Instructions on how-to setup binary sensors with Home Assistant. logo: home-assistant.png ha_category: - Binary Sensor diff --git a/source/_integrations/bitcoin.markdown b/source/_integrations/bitcoin.markdown index 372fa394799..62f718f9931 100644 --- a/source/_integrations/bitcoin.markdown +++ b/source/_integrations/bitcoin.markdown @@ -1,6 +1,6 @@ --- -title: "Bitcoin" -description: "Instructions on how to integrate Bitcoin data within Home Assistant." +title: Bitcoin +description: Instructions on how to integrate Bitcoin data within Home Assistant. logo: bitcoin.png ha_category: - Finance @@ -8,7 +8,6 @@ ha_release: pre 0.7 ha_iot_class: Cloud Polling --- - The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. To add the Bitcoin sensor to your installation, add a selection of the available display options to your `configuration.yaml` file: @@ -76,4 +75,3 @@ display_options: market_price_usd: description: Market price in USD {% endconfiguration %} - diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index c2fa349ffe0..0da48d6ec2b 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -1,8 +1,8 @@ --- -title: "Bizkaibus next bus tracking sensor" -description: "Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant." +title: Bizkaibus next bus tracking sensor +description: Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant. logo: bizkaibus.png -ha_category: +ha_category: - Transport - Sensor ha_iot_class: Cloud Polling diff --git a/source/_integrations/blackbird.markdown b/source/_integrations/blackbird.markdown index 834f9f2a4af..b7e442d3cd6 100644 --- a/source/_integrations/blackbird.markdown +++ b/source/_integrations/blackbird.markdown @@ -1,6 +1,6 @@ --- -title: "Blackbird 8x8 HDMI Matrix Switch" -description: "Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant." +title: Blackbird 8x8 HDMI Matrix Switch +description: Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant. logo: monoprice.svg ha_category: - Media Player diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 60250732d78..7c890221b28 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -1,6 +1,6 @@ --- -title: "Blink" -description: "Instructions for how to integrate Blink camera/security system within Home Assistant." +title: Blink +description: Instructions for how to integrate Blink camera/security system within Home Assistant. logo: blink.png ha_category: - Hub @@ -8,7 +8,7 @@ ha_category: - Binary Sensor - Camera - Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/blinksticklight.markdown b/source/_integrations/blinksticklight.markdown index deea66c49ee..4d3e5a56aef 100644 --- a/source/_integrations/blinksticklight.markdown +++ b/source/_integrations/blinksticklight.markdown @@ -1,6 +1,6 @@ --- -title: "Blinkstick Light" -description: "Instructions on how to setup Blinkstick lights within Home Assistant." +title: Blinkstick Light +description: Instructions on how to setup Blinkstick lights within Home Assistant. logo: blinkstick.png ha_category: - DIY @@ -8,7 +8,6 @@ ha_release: 0.7.5 ha_iot_class: Local Polling --- - The `blinkstick` platform lets you control your [Blinkstick](https://www.blinkstick.com/) lights from within Home Assistant. ## Setup @@ -42,4 +41,3 @@ name: type: string default: Blinkstick {% endconfiguration %} - diff --git a/source/_integrations/blinkt.markdown b/source/_integrations/blinkt.markdown index 41de596aa48..02a2f2da835 100644 --- a/source/_integrations/blinkt.markdown +++ b/source/_integrations/blinkt.markdown @@ -1,6 +1,6 @@ --- -title: "Blinkt! Light" -description: "Instructions on how to setup Blinkt! RGB LED lights within Home Assistant." +title: Blinkt! Light +description: Instructions on how to setup Blinkt! RGB LED lights within Home Assistant. logo: raspberry-pi.png ha_category: - DIY @@ -19,4 +19,3 @@ To enable `blinkt` in your installation, add the following to your `configuratio light: - platform: blinkt ``` - diff --git a/source/_integrations/blockchain.markdown b/source/_integrations/blockchain.markdown index 564747c1d08..458fc37d852 100644 --- a/source/_integrations/blockchain.markdown +++ b/source/_integrations/blockchain.markdown @@ -1,6 +1,6 @@ --- -title: "Blockchain.info" -description: "Instructions on how to integrate Blockchain.info data within Home Assistant." +title: Blockchain.info +description: Instructions on how to integrate Blockchain.info data within Home Assistant. logo: blockchain.png ha_category: - Finance @@ -8,7 +8,6 @@ ha_release: 0.47 ha_iot_class: Cloud Polling --- - The `Blockchain` sensor platform displays Bitcoin wallet balances from [blockchain.info](https://blockchain.info). To add the Blockchain sensor to your installation, specify a list of bitcoin addresses to watch in the `configuration.yaml` file. The sensor state will be the sum of the balances of all addresses listed. @@ -28,4 +27,3 @@ addresses: required: true type: [string, list] {% endconfiguration %} - diff --git a/source/_integrations/bloomsky.markdown b/source/_integrations/bloomsky.markdown index 9aa5661b1d4..d05cc8640bf 100644 --- a/source/_integrations/bloomsky.markdown +++ b/source/_integrations/bloomsky.markdown @@ -1,6 +1,6 @@ --- -title: "BloomSky" -description: "Instructions on how to integrate the BloomSky within Home Assistant." +title: BloomSky +description: Instructions on how to integrate the BloomSky within Home Assistant. logo: bloomsky.png ha_category: - Environment diff --git a/source/_integrations/bluesound.markdown b/source/_integrations/bluesound.markdown index 4422ba265a3..d4bcf552c6e 100644 --- a/source/_integrations/bluesound.markdown +++ b/source/_integrations/bluesound.markdown @@ -1,6 +1,6 @@ --- -title: "Bluesound" -description: "Instructions on how to integrate Bluesound devices into Home Assistant." +title: Bluesound +description: Instructions on how to integrate Bluesound devices into Home Assistant. logo: bluesound.png ha_category: - Media Player diff --git a/source/_integrations/bluetooth_le_tracker.markdown b/source/_integrations/bluetooth_le_tracker.markdown index 3154c973979..e37cb796311 100644 --- a/source/_integrations/bluetooth_le_tracker.markdown +++ b/source/_integrations/bluetooth_le_tracker.markdown @@ -1,6 +1,6 @@ --- -title: "Bluetooth LE Tracker" -description: "Instructions for integrating bluetooth low-energy tracking within Home Assistant." +title: Bluetooth LE Tracker +description: Instructions for integrating bluetooth low-energy tracking within Home Assistant. logo: bluetooth.png ha_category: - Presence Detection diff --git a/source/_integrations/bluetooth_tracker.markdown b/source/_integrations/bluetooth_tracker.markdown index a520b9b9d77..98f853de28f 100644 --- a/source/_integrations/bluetooth_tracker.markdown +++ b/source/_integrations/bluetooth_tracker.markdown @@ -1,6 +1,6 @@ --- -title: "Bluetooth Tracker" -description: "Instructions for integrating Bluetooth tracking within Home Assistant." +title: Bluetooth Tracker +description: Instructions for integrating Bluetooth tracking within Home Assistant. logo: bluetooth.png ha_category: - Presence Detection diff --git a/source/_integrations/bme280.markdown b/source/_integrations/bme280.markdown index 341716da1ce..827c15b4aee 100644 --- a/source/_integrations/bme280.markdown +++ b/source/_integrations/bme280.markdown @@ -1,6 +1,6 @@ --- -title: "BME280 Sensor" -description: "Instructions on how to integrate a BME280 sensor into Home Assistant." +title: BME280 Sensor +description: Instructions on how to integrate a BME280 sensor into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/bme680.markdown b/source/_integrations/bme680.markdown index 6ede66e3e8c..b87b1f4e1fa 100644 --- a/source/_integrations/bme680.markdown +++ b/source/_integrations/bme680.markdown @@ -1,6 +1,6 @@ --- -title: "BME680 Sensor" -description: "Instructions on how to integrate a BME680 sensor into Home Assistant." +title: BME680 Sensor +description: Instructions on how to integrate a BME680 sensor into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index 68c02352d4f..c41c7afa4a4 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -1,6 +1,6 @@ --- -title: "BMW Connected Drive" -description: "Instructions on how to setup your BMW Connected Drive account with Home Assistant." +title: BMW Connected Drive +description: Instructions on how to setup your BMW Connected Drive account with Home Assistant. logo: bmw.png ha_category: - Car diff --git a/source/_integrations/bom.markdown b/source/_integrations/bom.markdown index ba8d6710074..f8acc1303aa 100644 --- a/source/_integrations/bom.markdown +++ b/source/_integrations/bom.markdown @@ -1,6 +1,6 @@ --- -title: "BOM Australia" -description: "Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant." +title: BOM Australia +description: Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant. logo: bom.png ha_category: - Weather diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 0708f5314a7..e1fbadcf9f0 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -1,6 +1,6 @@ --- -title: "Sony Bravia TV" -description: "Instructions on how to integrate a Sony Bravia TV into Home Assistant." +title: Sony Bravia TV +description: Instructions on how to integrate a Sony Bravia TV into Home Assistant. logo: bravia.png ha_category: - Media Player diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index d56ca2d5e3c..edc1324a621 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -1,6 +1,6 @@ --- -title: "Broadlink" -description: "Instructions on how to integrate Broadlink within Home Assistant." +title: Broadlink +description: Instructions on how to integrate Broadlink within Home Assistant. logo: broadlink.png ha_category: - Remote diff --git a/source/_integrations/brottsplatskartan.markdown b/source/_integrations/brottsplatskartan.markdown index d696ff0a7b5..9ad6dff44ed 100644 --- a/source/_integrations/brottsplatskartan.markdown +++ b/source/_integrations/brottsplatskartan.markdown @@ -1,6 +1,6 @@ --- -title: "Brottsplatskartan" -description: "Instructions on how to integrate brottsplatskartan.se into Home Assistant." +title: Brottsplatskartan +description: Instructions on how to integrate brottsplatskartan.se into Home Assistant. ha_category: - Social logo: brottsplatskartan.png diff --git a/source/_integrations/browser.markdown b/source/_integrations/browser.markdown index ba23cbeba4f..c467ffae5e5 100644 --- a/source/_integrations/browser.markdown +++ b/source/_integrations/browser.markdown @@ -1,6 +1,6 @@ --- -title: "Browser" -description: "Instructions on how to setup the browser integration with Home Assistant." +title: Browser +description: Instructions on how to setup the browser integration with Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/brunt.markdown b/source/_integrations/brunt.markdown index 73efc8bfed0..93aa1975d0f 100644 --- a/source/_integrations/brunt.markdown +++ b/source/_integrations/brunt.markdown @@ -1,6 +1,6 @@ --- title: Brunt Cover -description: "Instructions on how to set up Brunt Blind Engine within Home Assistant." +description: Instructions on how to set up Brunt Blind Engine within Home Assistant. logo: brunt.png ha_category: - Cover diff --git a/source/_integrations/bt_home_hub_5.markdown b/source/_integrations/bt_home_hub_5.markdown index ae1b4f37f47..fb9a2e7ec6c 100644 --- a/source/_integrations/bt_home_hub_5.markdown +++ b/source/_integrations/bt_home_hub_5.markdown @@ -1,6 +1,6 @@ --- -title: "BT Home Hub 5" -description: "Instructions on how to integrate BT Home Hub 5 router into Home Assistant." +title: BT Home Hub 5 +description: Instructions on how to integrate BT Home Hub 5 router into Home Assistant. logo: bt.png ha_category: - Presence Detection diff --git a/source/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index cbe52ccd66e..18404c133e4 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -1,6 +1,6 @@ --- -title: "BT Smart Hub" -description: "Instructions on how to integrate BT Smart Hub router into Home Assistant." +title: BT Smart Hub +description: Instructions on how to integrate BT Smart Hub router into Home Assistant. logo: bt.png ha_category: - Presence Detection diff --git a/source/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown index 35ce1f630e8..ccb45a591fa 100644 --- a/source/_integrations/buienradar.markdown +++ b/source/_integrations/buienradar.markdown @@ -1,6 +1,6 @@ --- -title: "Buienradar" -description: "Instructions on how to integrate buienradar.nl weather within Home Assistant." +title: Buienradar +description: Instructions on how to integrate buienradar.nl weather within Home Assistant. logo: buienradar.png ha_category: - Camera diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown index 7222b17f02a..fea972820d4 100644 --- a/source/_integrations/caldav.markdown +++ b/source/_integrations/caldav.markdown @@ -1,10 +1,10 @@ --- -title: "CalDav" -description: "Instructions on how to integrate a WebDav calendar into Home Assistant." +title: CalDav +description: Instructions on how to integrate a WebDav calendar into Home Assistant. ha_category: - Calendar ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' --- The `caldav` platform allows you to connect to your WebDav calendar and generate diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index b26bd510275..4fc7a0be0dd 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -1,6 +1,6 @@ --- -title: "Calendar" -description: "Instructions on how to integrate calendars within Home Assistant." +title: Calendar +description: Instructions on how to integrate calendars within Home Assistant. ha_release: 0.33 --- diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown index 04848b97c3c..0e7a42eb518 100644 --- a/source/_integrations/camera.markdown +++ b/source/_integrations/camera.markdown @@ -1,6 +1,6 @@ --- -title: "Camera" -description: "Instructions on how to integrate cameras within Home Assistant." +title: Camera +description: Instructions on how to integrate cameras within Home Assistant. logo: home-assistant.png ha_category: - Camera diff --git a/source/_integrations/canary.markdown b/source/_integrations/canary.markdown index eec47dd3703..39ba3aa1cc3 100644 --- a/source/_integrations/canary.markdown +++ b/source/_integrations/canary.markdown @@ -1,12 +1,12 @@ --- -title: "Canary" -description: "Instructions on how to integrate your Canary devices into Home Assistant." +title: Canary +description: Instructions on how to integrate your Canary devices into Home Assistant. logo: canary.png ha_category: - Alarm - Camera - Sensor -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index 29190ff4128..0155617fbe9 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -1,6 +1,6 @@ --- -title: "Google Cast" -description: "Instructions on how to integrate Google Cast into Home Assistant." +title: Google Cast +description: Instructions on how to integrate Google Cast into Home Assistant. logo: google_cast.png ha_category: - Media Player diff --git a/source/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown index 2d3d82f851b..1480cf1c7bc 100644 --- a/source/_integrations/cert_expiry.markdown +++ b/source/_integrations/cert_expiry.markdown @@ -1,6 +1,6 @@ --- -title: "Certificate Expiry" -description: "Instructions on how to set up HTTPS (SSL) certificate expiry sensors within Home Assistant." +title: Certificate Expiry +description: Instructions on how to set up HTTPS (SSL) certificate expiry sensors within Home Assistant. logo: home-assistant.png ha_category: - Network diff --git a/source/_integrations/channels.markdown b/source/_integrations/channels.markdown index 4bc28d76cdb..8c6cb579464 100644 --- a/source/_integrations/channels.markdown +++ b/source/_integrations/channels.markdown @@ -1,6 +1,6 @@ --- -title: "Channels" -description: "Instructions on how to integrate Channels into Home Assistant." +title: Channels +description: Instructions on how to integrate Channels into Home Assistant. logo: channels.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: 0.65 ha_iot_class: Local Polling --- - The Channels platform allows you to control [Channels](https://getchannels.com/) from Home Assistant. Play, pause, seek, or skip commercials on an instance of Channels that is running on your network. Your favorite channels will appear as sources in the Source List in Home Assistant. diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index 4b6fad84935..4a2572d47be 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -1,6 +1,6 @@ --- -title: "Cisco IOS" -description: "Instructions on how to integrate Cisco IOS routers into Home Assistant." +title: Cisco IOS +description: Instructions on how to integrate Cisco IOS routers into Home Assistant. logo: cisco.png ha_category: - Presence Detection diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown index b76ae10d949..35ec28c4a23 100644 --- a/source/_integrations/cisco_mobility_express.markdown +++ b/source/_integrations/cisco_mobility_express.markdown @@ -1,10 +1,10 @@ --- -title: "Cisco Mobility Express" -description: "Instructions on how to integrate Cisco Mobility Express wireless controllers into Home Assistant." +title: Cisco Mobility Express +description: Instructions on how to integrate Cisco Mobility Express wireless controllers into Home Assistant. logo: cisco.png ha_category: - Presence Detection -ha_release: "0.90" +ha_release: '0.90' --- This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers. diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index 82a84047ddc..c27d605a14f 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -1,10 +1,10 @@ --- -title: "Cisco Webex Teams" -description: "Instructions on how to add Cisco Webex Teams notifications to Home Assistant." +title: Cisco Webex Teams +description: Instructions on how to add Cisco Webex Teams notifications to Home Assistant. logo: cisco_webex_teams.png ha_category: - Notifications -ha_release: "0.40" +ha_release: '0.40' --- The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark). diff --git a/source/_integrations/ciscospark.markdown b/source/_integrations/ciscospark.markdown index 55a18800534..16ff30b67d2 100644 --- a/source/_integrations/ciscospark.markdown +++ b/source/_integrations/ciscospark.markdown @@ -1,10 +1,10 @@ --- -title: "Cisco Spark" -description: "Instructions on how to add CiscoSpark notifications to Home Assistant." +title: Cisco Spark +description: Instructions on how to add CiscoSpark notifications to Home Assistant. logo: ciscospark.png ha_category: - Notifications -ha_release: "0.40" +ha_release: '0.40' --- The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index 3d5ac138e1f..f5d1fd7bfcc 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -1,13 +1,12 @@ --- -title: "CityBikes Sensor" -description: "Instructions on how to integrate data from the CityBikes API into Home Assistant." +title: CityBikes Sensor +description: Instructions on how to integrate data from the CityBikes API into Home Assistant. logo: citybikes.png ha_category: - Transport ha_release: 0.49 --- - The `citybikes` sensor platform monitors bike availability at bike sharing stations in a chosen area. The data is provided by [CityBikes](https://citybik.es/#about), which supports bike sharing systems all around the world. ## Configuration diff --git a/source/_integrations/clementine.markdown b/source/_integrations/clementine.markdown index 173f292a319..3ad0039d8c5 100644 --- a/source/_integrations/clementine.markdown +++ b/source/_integrations/clementine.markdown @@ -1,6 +1,6 @@ --- -title: "Clementine Music Player" -description: "Instructions on how to integrate Clementine Music Player within Home Assistant." +title: Clementine Music Player +description: Instructions on how to integrate Clementine Music Player within Home Assistant. logo: clementine.png ha_category: - Media Player diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown index 45959da4837..ef2270605ee 100644 --- a/source/_integrations/clickatell.markdown +++ b/source/_integrations/clickatell.markdown @@ -1,6 +1,6 @@ --- -title: "Clickatell SMS" -description: "Instructions on how to add Clickatell notifications to Home Assistant." +title: Clickatell SMS +description: Instructions on how to add Clickatell notifications to Home Assistant. logo: clickatell.png ha_category: - Notifications diff --git a/source/_integrations/clicksend.markdown b/source/_integrations/clicksend.markdown index cbe5dbd8ab6..4c2a625f9fd 100644 --- a/source/_integrations/clicksend.markdown +++ b/source/_integrations/clicksend.markdown @@ -1,6 +1,6 @@ --- -title: "ClickSend SMS" -description: "Instructions on how to add ClickSend notifications to Home Assistant." +title: ClickSend SMS +description: Instructions on how to add ClickSend notifications to Home Assistant. logo: clicksend.png ha_category: - Notifications diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index c82e7e8d3a7..f442faab4be 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -1,6 +1,6 @@ --- -title: "ClickSend text-to-speech" -description: "Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant." +title: ClickSend text-to-speech +description: Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant. logo: clicksend.png ha_category: - Notifications diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index 4a999999b29..566c352819f 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -1,6 +1,6 @@ --- -title: "Climate" -description: "Instructions on how to setup climate control devices within Home Assistant." +title: Climate +description: Instructions on how to setup climate control devices within Home Assistant. logo: home-assistant.png ha_category: - Climate diff --git a/source/_integrations/cloud.markdown b/source/_integrations/cloud.markdown index e643ee603b1..ae39bfa9cd4 100644 --- a/source/_integrations/cloud.markdown +++ b/source/_integrations/cloud.markdown @@ -1,8 +1,8 @@ --- -title: "Home Assistant Cloud" -description: "Enable the Home Assistant Cloud integration." +title: Home Assistant Cloud +description: Enable the Home Assistant Cloud integration. logo: nabu-casa.svg -ha_release: "0.60" +ha_release: '0.60' ha_category: - Voice ha_iot_class: Cloud Push diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index 26de231feb4..a3ab64e61f7 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -1,6 +1,6 @@ --- -title: "Cloudflare" -description: "Automatically update your Cloudflare DNS records." +title: Cloudflare +description: Automatically update your Cloudflare DNS records. logo: cloudflare.png ha_category: - Network diff --git a/source/_integrations/cmus.markdown b/source/_integrations/cmus.markdown index 8ac0a5b48c6..f995a5d9109 100644 --- a/source/_integrations/cmus.markdown +++ b/source/_integrations/cmus.markdown @@ -1,14 +1,12 @@ --- -title: "cmus" -description: "Instructions on how to integrate cmus Music Player into Home -Assistant." +title: cmus +description: Instructions on how to integrate cmus Music Player into Home Assistant. ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.23 --- - The `cmus` platform allows you to control a [cmus](https://cmus.github.io/) music player on a remote or local machine from Home Assistant. To add cmus to your installation, add the following to your `configuration.yaml` file if running locally it will look like: diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown index 48808af9f26..f2d10b3c0cd 100644 --- a/source/_integrations/co2signal.markdown +++ b/source/_integrations/co2signal.markdown @@ -1,6 +1,6 @@ --- -title: "CO2Signal" -description: "Instructions on how to use CO2Signal data within Home Assistant" +title: CO2Signal +description: Instructions on how to use CO2Signal data within Home Assistant logo: co2signal.png ha_category: - Environment @@ -94,4 +94,3 @@ sensor: ## Sensor Types When configured, the platform will create one sensor for each configured location. - diff --git a/source/_integrations/coinbase.markdown b/source/_integrations/coinbase.markdown index ba75ab338c7..347faa17270 100644 --- a/source/_integrations/coinbase.markdown +++ b/source/_integrations/coinbase.markdown @@ -1,6 +1,6 @@ --- -title: "Coinbase" -description: "Instructions for how to add Coinbase sensors to Home Assistant." +title: Coinbase +description: Instructions for how to add Coinbase sensors to Home Assistant. logo: coinbase.png ha_category: - Finance diff --git a/source/_integrations/coinmarketcap.markdown b/source/_integrations/coinmarketcap.markdown index a5d8d3d2e6a..6a13cbff593 100644 --- a/source/_integrations/coinmarketcap.markdown +++ b/source/_integrations/coinmarketcap.markdown @@ -1,6 +1,6 @@ --- -title: "CoinMarketCap" -description: "Instructions on how to integrate CoinMarketCap data within Home Assistant." +title: CoinMarketCap +description: Instructions on how to integrate CoinMarketCap data within Home Assistant. logo: coinmarketcap.png ha_category: - Finance @@ -8,7 +8,6 @@ ha_release: 0.28 ha_iot_class: Cloud Polling --- - The `coinmarketcap` sensor platform displays various details about a cryptocurrency provided by [CoinMarketCap](https://coinmarketcap.com/). To add the CoinMarketCap sensor to your installation, add the following lines to your `configuration.yaml`: @@ -38,4 +37,3 @@ display_currency_decimals: {% endconfiguration %} All supported currencies can be found [here](https://coinmarketcap.com/api/), a list of currency IDs can be found [here](https://api.coinmarketcap.com/v2/ticker/). - diff --git a/source/_integrations/comed_hourly_pricing.markdown b/source/_integrations/comed_hourly_pricing.markdown index 8bb97c4cda2..10cb0c14dc1 100644 --- a/source/_integrations/comed_hourly_pricing.markdown +++ b/source/_integrations/comed_hourly_pricing.markdown @@ -1,10 +1,10 @@ --- -title: "ComEd Hourly Pricing" -description: "Instructions on how to set up the ComEd Hourly Pricing sensor in Home Assistant." +title: ComEd Hourly Pricing +description: Instructions on how to set up the ComEd Hourly Pricing sensor in Home Assistant. logo: comed.png ha_category: - Energy -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/comfoconnect.markdown b/source/_integrations/comfoconnect.markdown index 5f5a3eb7dae..707a2e8d77d 100644 --- a/source/_integrations/comfoconnect.markdown +++ b/source/_integrations/comfoconnect.markdown @@ -1,12 +1,12 @@ --- -title: "Zehnder ComfoAir Q Ventilation" -description: "Instructions on how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +title: Zehnder ComfoAir Q Ventilation +description: Instructions on how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant. logo: zehnder.png ha_category: - Fan - Sensor ha_release: 0.48 -ha_iot_class: "Local Push" +ha_iot_class: Local Push --- The `comfoconnect` integration lets you control Zehnder ComfoAir [Q350](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-tr)/[Q450](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-tr)/[Q600](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 988422d584c..2e9a6b72bef 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -1,6 +1,6 @@ --- -title: "Command line Binary Sensor" -description: "Instructions on how to integrate Command binary sensors within Home Assistant." +title: Command line Binary Sensor +description: Instructions on how to integrate Command binary sensors within Home Assistant. logo: command_line.png ha_category: - Utility diff --git a/source/_integrations/concord232.markdown b/source/_integrations/concord232.markdown index d785bbdea6d..ea0b3bf88ef 100644 --- a/source/_integrations/concord232.markdown +++ b/source/_integrations/concord232.markdown @@ -1,6 +1,6 @@ --- -title: "Concord232" -description: "Instructions on how to integrate Interlogix/GE Concord4 into Home Assistant." +title: Concord232 +description: Instructions on how to integrate Interlogix/GE Concord4 into Home Assistant. logo: interlogix.png ha_category: - Alarm diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 4b7942af226..63f80672463 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -1,6 +1,6 @@ --- -title: "Config" -description: "Instructions on how to setup the configuration panel for Home Assistant." +title: Config +description: Instructions on how to setup the configuration panel for Home Assistant. logo: home-assistant.png ha_category: - Front End @@ -64,4 +64,3 @@ This section enables you to control your Z-Wave network and devices from within ### Customization This section enables you to customize entities within Home Assistant. Use this to set friendly names, change icons, hide entities, and modify other attributes. - diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index 763a7e493d6..158df34cfcc 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -1,6 +1,6 @@ --- -title: "Configurator" -description: "Instructions on how to integrate the configurator in your components." +title: Configurator +description: Instructions on how to integrate the configurator in your components. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/conversation.markdown b/source/_integrations/conversation.markdown index 819f58c5737..d9d3b1e22a7 100644 --- a/source/_integrations/conversation.markdown +++ b/source/_integrations/conversation.markdown @@ -1,9 +1,9 @@ --- -title: "Conversation" -description: "Instructions on how to have conversations with your Home Assistant." +title: Conversation +description: Instructions on how to have conversations with your Home Assistant. logo: home-assistant.png ha_category: - - "Voice" + - Voice ha_qa_scale: internal ha_release: 0.7 --- diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index 51335b919f7..d10eb4d71dc 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -1,6 +1,6 @@ --- -title: "CoolMasterNet Climate" -description: "Instructions on how to integrate CoolMasterNet within Home Assistant." +title: CoolMasterNet Climate +description: Instructions on how to integrate CoolMasterNet within Home Assistant. logo: coolautomation.png ha_category: - Climate @@ -8,7 +8,6 @@ ha_release: 0.88 ha_iot_class: Local Polling --- - The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). ## Configuration via the frontend diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index 45b9b3a1ce3..c5069fef7d2 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -1,6 +1,6 @@ --- -title: "Counter" -description: "Instructions on how to integrate counters into Home Assistant." +title: Counter +description: Instructions on how to integrate counters into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index bcda65e85e6..7e69a18b58d 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -1,6 +1,6 @@ --- -title: "Covers" -description: "Instructions on how to integrate covers into Home Assistant." +title: Covers +description: Instructions on how to integrate covers into Home Assistant. logo: home-assistant.png ha_category: - Cover diff --git a/source/_integrations/cppm_tracker.markdown b/source/_integrations/cppm_tracker.markdown index b5a67440ae6..3cc1ae5dacd 100644 --- a/source/_integrations/cppm_tracker.markdown +++ b/source/_integrations/cppm_tracker.markdown @@ -1,10 +1,10 @@ --- -title: "Aruba ClearPass" -description: "Instructions on how to integrate Aruba ClearPass into Home Assistant." +title: Aruba ClearPass +description: Instructions on how to integrate Aruba ClearPass into Home Assistant. logo: aruba.png ha_category: - Presence Detection -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Polling --- diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index be4aa104582..b9bcc20c65b 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -1,6 +1,6 @@ --- -title: "CPU speed" -description: "Instructions on how to integrate CPU speed within Home Assistant." +title: CPU speed +description: Instructions on how to integrate CPU speed within Home Assistant. logo: cpu.png ha_category: - System Monitor diff --git a/source/_integrations/crimereports.markdown b/source/_integrations/crimereports.markdown index 54fe180d362..b5ba389d2d7 100644 --- a/source/_integrations/crimereports.markdown +++ b/source/_integrations/crimereports.markdown @@ -1,6 +1,6 @@ --- -title: "Crime Reports" -description: "Instructions on how to integrate CrimeReports.com into Home Assistant." +title: Crime Reports +description: Instructions on how to integrate CrimeReports.com into Home Assistant. ha_category: - Social logo: crimereports.png diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index c8954521356..78065c62058 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -1,6 +1,6 @@ --- -title: "CUPS Sensor" -description: "Instructions on how to integrate CUPS sensors into Home Assistant." +title: CUPS Sensor +description: Instructions on how to integrate CUPS sensors into Home Assistant. logo: cups.png ha_category: - System Monitor @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_release: 0.32 --- - The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. ## Setup diff --git a/source/_integrations/currencylayer.markdown b/source/_integrations/currencylayer.markdown index 0dbe85504a2..784e947db0b 100644 --- a/source/_integrations/currencylayer.markdown +++ b/source/_integrations/currencylayer.markdown @@ -1,6 +1,6 @@ --- -title: "Currencylayer" -description: "Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant." +title: Currencylayer +description: Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant. ha_category: - Finance logo: currencylayer.png @@ -8,7 +8,6 @@ ha_iot_class: Cloud Polling ha_release: 0.32 --- - The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour. Obtain your API key [here](https://currencylayer.com/product) diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index 3af3ec3ce10..6c633f90055 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -1,6 +1,6 @@ --- -title: "Daikin AC" -description: "Instructions on how to integrate Daikin AC devices with Home Assistant." +title: Daikin AC +description: Instructions on how to integrate Daikin AC devices with Home Assistant. logo: daikin.png ha_category: - Climate diff --git a/source/_integrations/danfoss_air.markdown b/source/_integrations/danfoss_air.markdown index 95baa5ec0bd..cfb49385e27 100644 --- a/source/_integrations/danfoss_air.markdown +++ b/source/_integrations/danfoss_air.markdown @@ -1,6 +1,6 @@ --- -title: "Danfoss Air" -description: "How to integrate Danfoss Air HRV in Home Assistant." +title: Danfoss Air +description: How to integrate Danfoss Air HRV in Home Assistant. ha_category: - Climate - Binary Sensor diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index cea4581810b..f7108df8f6f 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -1,10 +1,10 @@ --- -title: "Dark Sky Sensor" -description: "How to integrate Dark Sky within Home Assistant." +title: Dark Sky Sensor +description: How to integrate Dark Sky within Home Assistant. logo: dark_sky.png ha_category: - Weather -ha_release: "0.30" +ha_release: '0.30' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/datadog.markdown b/source/_integrations/datadog.markdown index 7a0152f82c6..17aa9f449bd 100644 --- a/source/_integrations/datadog.markdown +++ b/source/_integrations/datadog.markdown @@ -1,6 +1,6 @@ --- -title: "Datadog" -description: "Send data and events to Datadog." +title: Datadog +description: Send data and events to Datadog. logo: datadog.png ha_category: - History diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown index 41210db2eb6..bb28ea003a8 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -1,6 +1,6 @@ --- -title: "DD-WRT" -description: "Instructions on how to integrate DD-WRT based routers into Home Assistant." +title: DD-WRT +description: Instructions on how to integrate DD-WRT based routers into Home Assistant. logo: ddwrt.png ha_category: - Presence Detection diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index cd28f28f939..2c21efbc9f8 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -1,6 +1,6 @@ --- -title: "deCONZ" -description: "Instructions on how to setup ConBee/RaspBee devices with deCONZ from dresden elektronik within Home Assistant." +title: deCONZ +description: Instructions on how to setup ConBee/RaspBee devices with deCONZ from dresden elektronik within Home Assistant. logo: deconz.jpeg ha_category: - Hub diff --git a/source/_integrations/decora.markdown b/source/_integrations/decora.markdown index 5357de2a2c4..d4ad3028714 100644 --- a/source/_integrations/decora.markdown +++ b/source/_integrations/decora.markdown @@ -1,6 +1,6 @@ --- -title: "Leviton Decora" -description: "Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant." +title: Leviton Decora +description: Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant. ha_category: - Light ha_iot_class: Local Polling diff --git a/source/_integrations/decora_wifi.markdown b/source/_integrations/decora_wifi.markdown index 9566535d2d3..d937b006e19 100644 --- a/source/_integrations/decora_wifi.markdown +++ b/source/_integrations/decora_wifi.markdown @@ -1,6 +1,6 @@ --- -title: "Leviton Decora Wi-Fi" -description: "Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant." +title: Leviton Decora Wi-Fi +description: Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant. ha_category: - Light ha_iot_class: Cloud Polling @@ -35,4 +35,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown index bb768586a89..eceacafabdb 100644 --- a/source/_integrations/default_config.markdown +++ b/source/_integrations/default_config.markdown @@ -1,6 +1,6 @@ --- -title: "Default Config" -description: "The default config integration will initate a default configuration for Home Assistant." +title: Default Config +description: The default config integration will initate a default configuration for Home Assistant. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/delijn.markdown b/source/_integrations/delijn.markdown index bb4ae3c759c..412514c1506 100644 --- a/source/_integrations/delijn.markdown +++ b/source/_integrations/delijn.markdown @@ -1,8 +1,8 @@ --- -title: "De Lijn" -description: "Instructions on how to integrate De Lijn (Flemish public transport company) departure times into Home Assistant." +title: De Lijn +description: Instructions on how to integrate De Lijn (Flemish public transport company) departure times into Home Assistant. ha_release: 0.97 -ha_category: +ha_category: - Transport - Sensor ha_iot_class: Cloud Polling diff --git a/source/_integrations/deluge.markdown b/source/_integrations/deluge.markdown index 14993ca1416..1b1d4d41dea 100644 --- a/source/_integrations/deluge.markdown +++ b/source/_integrations/deluge.markdown @@ -1,6 +1,6 @@ --- -title: "Deluge" -description: "Instructions on how to integrate Deluge within Home Assistant." +title: Deluge +description: Instructions on how to integrate Deluge within Home Assistant. logo: deluge.png ha_category: - Downloading diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index ecd79f57f4d..556a7ebb53e 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -1,6 +1,6 @@ --- -title: "Demo platforms" -description: "Instructions on how to use the Platform demos with Home Assistant." +title: Demo platforms +description: Instructions on how to use the Platform demos with Home Assistant. logo: home-assistant.png ha_category: - Other @@ -8,7 +8,6 @@ ha_qa_scale: internal ha_release: 0.7 --- - The `demo` platform allows you to use integrations which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/) or `hass --demo-mode` but combined with your own real/functional platforms. Available demo platforms: diff --git a/source/_integrations/denon.markdown b/source/_integrations/denon.markdown index 30af1e719db..5d8321fa423 100644 --- a/source/_integrations/denon.markdown +++ b/source/_integrations/denon.markdown @@ -1,6 +1,6 @@ --- -title: "Denon Network Receivers" -description: "Instructions on how to integrate Denon Network Receivers into Home Assistant." +title: Denon Network Receivers +description: Instructions on how to integrate Denon Network Receivers into Home Assistant. logo: denon.png ha_category: - Media Player diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index d2cc4a62955..26790ffb7ad 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -1,6 +1,6 @@ --- -title: "Denon AVR Network Receivers" -description: "Instructions on how to integrate Denon AVR Network Receivers into Home Assistant." +title: Denon AVR Network Receivers +description: Instructions on how to integrate Denon AVR Network Receivers into Home Assistant. logo: denon.png ha_category: - Media Player diff --git a/source/_integrations/deutsche_bahn.markdown b/source/_integrations/deutsche_bahn.markdown index 1ce069e50b1..928500f55e2 100644 --- a/source/_integrations/deutsche_bahn.markdown +++ b/source/_integrations/deutsche_bahn.markdown @@ -1,6 +1,6 @@ --- -title: "Deutsche Bahn" -description: "Instructions on how to integrate timetable data for traveling in Germany within Home Assistant." +title: Deutsche Bahn +description: Instructions on how to integrate timetable data for traveling in Germany within Home Assistant. ha_category: - Transport logo: db.png @@ -8,7 +8,6 @@ ha_iot_class: Cloud Polling ha_release: 0.14 --- - The `deutsche_bahn` sensor will give you the departure time of the next train for the given connection. In case of a delay, the delay is also shown. Additional details are used to inform about, e.g., the type of the train, price, and if it is on time. To enable this sensor, add the following lines to your `configuration.yaml` file: diff --git a/source/_integrations/device_automation.markdown b/source/_integrations/device_automation.markdown index 5f9dc1a1b80..802c02568ce 100644 --- a/source/_integrations/device_automation.markdown +++ b/source/_integrations/device_automation.markdown @@ -1,5 +1,5 @@ --- -title: "Device Automation" +title: Device Automation logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/device_sun_light_trigger.markdown b/source/_integrations/device_sun_light_trigger.markdown index 1b896c2acea..0105c8b9a26 100644 --- a/source/_integrations/device_sun_light_trigger.markdown +++ b/source/_integrations/device_sun_light_trigger.markdown @@ -1,6 +1,6 @@ --- -title: "Presence based lights" -description: "Instructions on how to automate your lights with Home Assistant." +title: Presence based lights +description: Instructions on how to automate your lights with Home Assistant. logo: home-assistant.png ha_category: - Automation @@ -53,4 +53,4 @@ device_sun_light_trigger: light_profile: relax device_group: group.my_devices disable_turn_off: 1 -``` +``` diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown index 4259c2251cc..4976193c9a6 100644 --- a/source/_integrations/device_tracker.markdown +++ b/source/_integrations/device_tracker.markdown @@ -1,6 +1,6 @@ --- -title: "Device Tracker" -description: "Instructions on how to setup device tracking within Home Assistant." +title: Device Tracker +description: Instructions on how to setup device tracking within Home Assistant. logo: home-assistant.png ha_category: - Presence Detection diff --git a/source/_integrations/dht.markdown b/source/_integrations/dht.markdown index 3a366372ed8..e6b1e55d96b 100644 --- a/source/_integrations/dht.markdown +++ b/source/_integrations/dht.markdown @@ -1,6 +1,6 @@ --- -title: "DHT Sensor" -description: "Instructions on how to integrate DHTxx sensors within Home Assistant." +title: DHT Sensor +description: Instructions on how to integrate DHTxx sensors within Home Assistant. ha_category: - DIY ha_release: 0.7 @@ -8,7 +8,6 @@ logo: dht.png ha_iot_class: Local Polling --- - The `dht` sensor platform allows you to get the current temperature and humidity from a DHT11, DHT22 or AM2302 device. ## Configuration diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 39634189b37..41a4789eb4c 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -1,6 +1,6 @@ --- -title: "Dialogflow" -description: "Instructions on how integrate Dialogflow with Home Assistant." +title: Dialogflow +description: Instructions on how integrate Dialogflow with Home Assistant. logo: dialogflow.png ha_category: - Voice diff --git a/source/_integrations/digital_ocean.markdown b/source/_integrations/digital_ocean.markdown index 7ff86f52b5f..7b6a0f21d30 100644 --- a/source/_integrations/digital_ocean.markdown +++ b/source/_integrations/digital_ocean.markdown @@ -1,11 +1,11 @@ --- -title: "Digital Ocean" -description: "Instructions on how to integrate the Digital Ocean within Home Assistant." +title: Digital Ocean +description: Instructions on how to integrate the Digital Ocean within Home Assistant. ha_category: - System Monitor - Binary Sensor - Switch -ha_release: "0.30" +ha_release: '0.30' logo: digital_ocean.png ha_iot_class: Local Polling --- diff --git a/source/_integrations/digitalloggers.markdown b/source/_integrations/digitalloggers.markdown index c725facab7f..e0d8e18e88f 100644 --- a/source/_integrations/digitalloggers.markdown +++ b/source/_integrations/digitalloggers.markdown @@ -1,6 +1,6 @@ --- -title: "Digital Loggers Switch" -description: "Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant." +title: Digital Loggers Switch +description: Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant. logo: digitalloggers.png ha_category: - Switch diff --git a/source/_integrations/directv.markdown b/source/_integrations/directv.markdown index 2f28a1a3df8..fa01c6f1ebd 100644 --- a/source/_integrations/directv.markdown +++ b/source/_integrations/directv.markdown @@ -1,6 +1,6 @@ --- -title: "DirecTV" -description: "Instructions on how to integrate DirecTV receivers into Home Assistant." +title: DirecTV +description: Instructions on how to integrate DirecTV receivers into Home Assistant. logo: directv.png ha_category: - Media Player diff --git a/source/_integrations/discogs.markdown b/source/_integrations/discogs.markdown index d2b58f61764..8b4c01f1d73 100644 --- a/source/_integrations/discogs.markdown +++ b/source/_integrations/discogs.markdown @@ -1,6 +1,6 @@ --- title: Discogs Sensor -description: "Instructions on how to set up Discogs sensors within Home Assistant." +description: Instructions on how to set up Discogs sensors within Home Assistant. ha_category: - Multimedia ha_release: 0.61 diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index a3331c40ebb..dc5c2ec8894 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -1,6 +1,6 @@ --- -title: "Discord" -description: "Instructions on how to add Discord notifications to Home Assistant." +title: Discord +description: Instructions on how to add Discord notifications to Home Assistant. logo: discord.png ha_category: - Notifications diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index 3b08c0c1d9c..257e73d991f 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -1,6 +1,6 @@ --- -title: "Discovery" -description: "Instructions on how to setup Home Assistant to discover new devices." +title: Discovery +description: Instructions on how to setup Home Assistant to discover new devices. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/dlib_face_detect.markdown b/source/_integrations/dlib_face_detect.markdown index a55723d655a..105d1dab1fc 100644 --- a/source/_integrations/dlib_face_detect.markdown +++ b/source/_integrations/dlib_face_detect.markdown @@ -1,6 +1,6 @@ --- -title: "Dlib Face Detect" -description: "Instructions on how to integrate Dlib Face Detect into Home Assistant." +title: Dlib Face Detect +description: Instructions on how to integrate Dlib Face Detect into Home Assistant. logo: dlib.png ha_category: - Image Processing diff --git a/source/_integrations/dlib_face_identify.markdown b/source/_integrations/dlib_face_identify.markdown index 0709fc15bd1..4e5eb22e8ec 100644 --- a/source/_integrations/dlib_face_identify.markdown +++ b/source/_integrations/dlib_face_identify.markdown @@ -1,6 +1,6 @@ --- -title: "Dlib Face Identify" -description: "Instructions on how to integrate Dlib Face Identify into Home Assistant." +title: Dlib Face Identify +description: Instructions on how to integrate Dlib Face Identify into Home Assistant. logo: dlib.png ha_category: - Image Processing diff --git a/source/_integrations/dlink.markdown b/source/_integrations/dlink.markdown index e43e03c10f4..178eb7194ec 100644 --- a/source/_integrations/dlink.markdown +++ b/source/_integrations/dlink.markdown @@ -1,6 +1,6 @@ --- -title: "D-Link Switch" -description: "Instructions on how to integrate D-Link switches into Home Assistant." +title: D-Link Switch +description: Instructions on how to integrate D-Link switches into Home Assistant. logo: dlink.png ha_category: - Switch diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index d91b8a568e7..944cfba4347 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -1,6 +1,6 @@ --- -title: "DLNA DMR" -description: "Instructions on how to integrate a DLNA DMR device into Home Assistant." +title: DLNA DMR +description: Instructions on how to integrate a DLNA DMR device into Home Assistant. logo: dlna.png ha_category: - Media Player diff --git a/source/_integrations/dnsip.markdown b/source/_integrations/dnsip.markdown index 24d3e270a74..64e077cbbc0 100644 --- a/source/_integrations/dnsip.markdown +++ b/source/_integrations/dnsip.markdown @@ -1,11 +1,11 @@ --- -title: "DNS IP Sensor" -description: "Instructions on how to integrate a DNS IP sensor into Home Assistant." +title: DNS IP Sensor +description: Instructions on how to integrate a DNS IP sensor into Home Assistant. logo: home-assistant.png ha_category: - Network ha_iot_class: Cloud Polling -ha_release: "0.40" +ha_release: '0.40' --- The `dnsip` sensor will expose an IP address, fetched via DNS resolution, as its value. There are two operational modes: diff --git a/source/_integrations/dominos.markdown b/source/_integrations/dominos.markdown index dfc8d461628..ad94c933c17 100644 --- a/source/_integrations/dominos.markdown +++ b/source/_integrations/dominos.markdown @@ -1,6 +1,6 @@ --- -title: "Dominos Pizza" -description: "Instructions on how to setup Dominos Pizza ordering within Home Assistant." +title: Dominos Pizza +description: Instructions on how to setup Dominos Pizza ordering within Home Assistant. logo: dominos.png ha_category: - Other diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index 2b4e9ab1926..c217a6935c3 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -1,10 +1,10 @@ --- -title: "DOODS" -description: "Detect and recognize objects with DOODS." +title: DOODS +description: Detect and recognize objects with DOODS. ha_category: - Image Processing ha_iot_class: Local Polling -ha_release: "0.100" +ha_release: '0.100' --- The `doods` image processing platform allows you to detect and recognize objects in a camera image using [DOODS](https://github.com/snowzach/doods/). 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/_integrations/doorbird.markdown b/source/_integrations/doorbird.markdown index 23295f83fd2..58ea6ec0d7d 100644 --- a/source/_integrations/doorbird.markdown +++ b/source/_integrations/doorbird.markdown @@ -1,6 +1,6 @@ --- -title: "DoorBird" -description: "Instructions on how to integrate your DoorBird video doorbell with Home Assistant." +title: DoorBird +description: Instructions on how to integrate your DoorBird video doorbell with Home Assistant. logo: doorbird.png ha_category: - Doorbell diff --git a/source/_integrations/dovado.markdown b/source/_integrations/dovado.markdown index 2319ce09adc..47046901e98 100644 --- a/source/_integrations/dovado.markdown +++ b/source/_integrations/dovado.markdown @@ -1,6 +1,6 @@ --- -title: "Dovado" -description: "How to integrate Dovado within Home Assistant." +title: Dovado +description: How to integrate Dovado within Home Assistant. ha_category: - System Monitor - Notifications diff --git a/source/_integrations/downloader.markdown b/source/_integrations/downloader.markdown index 5be5d7be0cd..5e3dda49dbe 100644 --- a/source/_integrations/downloader.markdown +++ b/source/_integrations/downloader.markdown @@ -1,6 +1,6 @@ --- -title: "Downloader" -description: "Instructions on how to setup the downloader integration with Home Assistant." +title: Downloader +description: Instructions on how to setup the downloader integration with Home Assistant. logo: home-assistant.png ha_category: - Downloading diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index 13a7a0ae834..e2d5b816582 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -1,6 +1,6 @@ --- -title: "DSMR or Slimme meter" -description: "Instructions on how to integrate DSMR Smartmeter within Home Assistant." +title: DSMR or Slimme meter +description: Instructions on how to integrate DSMR Smartmeter within Home Assistant. logo: netbeheernederland.jpg ha_category: - Energy diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index 7aae6a9329d..d6d86310b32 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -1,6 +1,6 @@ --- -title: "DSMR Reader" -description: "Instructions on how to integrate DSMR Reader." +title: DSMR Reader +description: Instructions on how to integrate DSMR Reader. ha_category: - Energy ha_iot_class: Cloud Polling diff --git a/source/_integrations/dte_energy_bridge.markdown b/source/_integrations/dte_energy_bridge.markdown index c0c6a8843c9..fa42c7c9509 100644 --- a/source/_integrations/dte_energy_bridge.markdown +++ b/source/_integrations/dte_energy_bridge.markdown @@ -1,6 +1,6 @@ --- -title: "DTE Energy Bridge" -description: "Instructions on how to setup DTE Energy Bridge with Home Assistant." +title: DTE Energy Bridge +description: Instructions on how to setup DTE Energy Bridge with Home Assistant. logo: dte_energy.png ha_category: - Energy diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown index 81689de682c..8d04147c397 100644 --- a/source/_integrations/dublin_bus_transport.markdown +++ b/source/_integrations/dublin_bus_transport.markdown @@ -1,6 +1,6 @@ --- -title: "Dublin Bus Transport" -description: "Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant." +title: Dublin Bus Transport +description: Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant. logo: dublin_bus.png ha_category: - Transport diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown index 2d1344aa704..214c95e0c3c 100644 --- a/source/_integrations/duckdns.markdown +++ b/source/_integrations/duckdns.markdown @@ -1,6 +1,6 @@ --- -title: "DuckDNS" -description: "Keep your computer registered with the DuckDNS dynamic DNS." +title: DuckDNS +description: Keep your computer registered with the DuckDNS dynamic DNS. logo: duckdns.png ha_category: - Network diff --git a/source/_integrations/duke_energy.markdown b/source/_integrations/duke_energy.markdown index 62e599b9e48..8e635da2a39 100644 --- a/source/_integrations/duke_energy.markdown +++ b/source/_integrations/duke_energy.markdown @@ -1,6 +1,6 @@ --- -title: "Duke Energy" -description: "Instructions on how to set Duke Energy smart meter sensors within Home Assistant." +title: Duke Energy +description: Instructions on how to set Duke Energy smart meter sensors within Home Assistant. logo: duke_energy.png ha_category: - Energy diff --git a/source/_integrations/dunehd.markdown b/source/_integrations/dunehd.markdown index 5357d950138..4c43e1404ad 100644 --- a/source/_integrations/dunehd.markdown +++ b/source/_integrations/dunehd.markdown @@ -1,6 +1,6 @@ --- -title: "DuneHD media players" -description: "Instructions on how to integrate DuneHD media players into Home Assistant." +title: DuneHD media players +description: Instructions on how to integrate DuneHD media players into Home Assistant. logo: dunehd.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_release: 0.34 --- - The `dunehd` media player platform allows you to control a [Dune HD media player](https://dune-hd.com/eng/products/full_hd_media_players) from Home Assistant. Support is based on the official [IP protocol](https://dune-hd.com/support/ip_control/dune_ip_control_overview.txt) published by Dune. Devices with firmware 110127_2105_beta or above are supported. Some functions may depend on the version of the protocol (volume / mute control is only available with version 2 onwards). diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index 66b02de701a..7690da7d556 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -1,7 +1,6 @@ --- -title: "DWD Weather warnings" -description: "Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant." -#logo: dwdwarnapp.png +title: DWD Weather warnings +description: Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant. ha_category: - Weather ha_release: 0.51 diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index cded98a4cef..911dd7e0a2b 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -1,6 +1,6 @@ --- -title: "Dweet.io" -description: "Transfer events to Dweet.io." +title: Dweet.io +description: Transfer events to Dweet.io. logo: dweet.png ha_category: - History @@ -133,4 +133,4 @@ Receive the latest dweet. ```bash >>> dweepy.get_latest_dweet_for('ha-sensor') [{'thing': 'ha-sensor'', 'created': '2015-12-10T09:43:31.133Z', 'content': {'humidity': 65, 'temperature': 40}}] -``` \ No newline at end of file +``` diff --git a/source/_integrations/dyson.markdown b/source/_integrations/dyson.markdown index b433c645590..89a851d653f 100644 --- a/source/_integrations/dyson.markdown +++ b/source/_integrations/dyson.markdown @@ -1,6 +1,6 @@ --- -title: "Dyson" -description: "Instructions on how to integrate Dyson into Home Assistant." +title: Dyson +description: Instructions on how to integrate Dyson into Home Assistant. logo: dyson.png ha_category: - Hub diff --git a/source/_integrations/ebox.markdown b/source/_integrations/ebox.markdown index 39561525151..275bb0fa1a4 100644 --- a/source/_integrations/ebox.markdown +++ b/source/_integrations/ebox.markdown @@ -1,6 +1,6 @@ --- -title: "EBox Sensor" -description: "Instructions on how to integrate EBox data usage within Home Assistant." +title: EBox Sensor +description: Instructions on how to integrate EBox data usage within Home Assistant. logo: ebox.png ha_category: - Network diff --git a/source/_integrations/ebusd.markdown b/source/_integrations/ebusd.markdown index 1a5ed645592..b304c95e0a6 100644 --- a/source/_integrations/ebusd.markdown +++ b/source/_integrations/ebusd.markdown @@ -1,6 +1,6 @@ --- -title: "ebusd" -description: "The ebusd integration allows the integration between eBUS heating system and Home Assistant." +title: ebusd +description: The ebusd integration allows the integration between eBUS heating system and Home Assistant. ha_category: - Sensor ha_iot_class: Local Polling diff --git a/source/_integrations/ecoal_boiler.markdown b/source/_integrations/ecoal_boiler.markdown index 9c4913dca89..ebf8230b61b 100644 --- a/source/_integrations/ecoal_boiler.markdown +++ b/source/_integrations/ecoal_boiler.markdown @@ -1,6 +1,6 @@ --- -title: "eCoal water boiler controller" -description: "Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant." +title: eCoal water boiler controller +description: Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant. ha_category: - Water Heater ha_release: 0.87 diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 34311394ca6..7209a679547 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -1,6 +1,6 @@ --- -title: "Ecobee" -description: "Instructions for how to integrate ecobee thermostats and sensors within Home Assistant." +title: Ecobee +description: Instructions for how to integrate ecobee thermostats and sensors within Home Assistant. logo: ecobee.png ha_category: - Sensor diff --git a/source/_integrations/econet.markdown b/source/_integrations/econet.markdown index da50296d305..bec1d849bef 100644 --- a/source/_integrations/econet.markdown +++ b/source/_integrations/econet.markdown @@ -1,6 +1,6 @@ --- -title: "EcoNet water heater" -description: "Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant." +title: EcoNet water heater +description: Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant. logo: econet.png ha_category: - Water Heater diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index 2cf81782640..3cd3227dc55 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -1,6 +1,6 @@ --- -title: "Ecovacs" -description: "Instructions on how to integrate Ecovacs vacuums within Home Assistant." +title: Ecovacs +description: Instructions on how to integrate Ecovacs vacuums within Home Assistant. logo: ecovacs.png ha_category: - Hub @@ -120,4 +120,4 @@ Alternatively, you can use the `ecovacs_error` event to watch for errors. This e } ``` -Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on. \ No newline at end of file +Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on. diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown index 076b5c6b5e2..502bef04dfb 100644 --- a/source/_integrations/eddystone_temperature.markdown +++ b/source/_integrations/eddystone_temperature.markdown @@ -1,6 +1,6 @@ --- -title: "Eddystone Beacon" -description: "Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data." +title: Eddystone Beacon +description: Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data. logo: eddystone.png ha_category: - DIY diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index e5e250d24d3..f08f44694a7 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -1,6 +1,6 @@ --- -title: "Edimax Switch" -description: "Instructions on how to integrate Edimax switches into Home Assistant." +title: Edimax Switch +description: Instructions on how to integrate Edimax switches into Home Assistant. logo: edimax.png ha_category: - Switch diff --git a/source/_integrations/ee_brightbox.markdown b/source/_integrations/ee_brightbox.markdown index 632b5633cb3..ecfb6610328 100644 --- a/source/_integrations/ee_brightbox.markdown +++ b/source/_integrations/ee_brightbox.markdown @@ -1,6 +1,6 @@ --- -title: "EE Bright Box" -description: "Instructions on how to integrate EE Bright Box router into Home Assistant." +title: EE Bright Box +description: Instructions on how to integrate EE Bright Box router into Home Assistant. logo: ee.png ha_category: - Presence Detection diff --git a/source/_integrations/efergy.markdown b/source/_integrations/efergy.markdown index 892d7a89aeb..725ccc2e194 100644 --- a/source/_integrations/efergy.markdown +++ b/source/_integrations/efergy.markdown @@ -1,6 +1,6 @@ --- -title: "Efergy" -description: "Instructions on how to integrate Efergy devices within Home Assistant." +title: Efergy +description: Instructions on how to integrate Efergy devices within Home Assistant. logo: efergy.png ha_category: - Energy diff --git a/source/_integrations/egardia.markdown b/source/_integrations/egardia.markdown index 415e5790116..fb3cde04bd3 100644 --- a/source/_integrations/egardia.markdown +++ b/source/_integrations/egardia.markdown @@ -1,6 +1,6 @@ --- -title: "Egardia" -description: "Instructions on how to setup Egardia / Woonveilig within Home Assistant." +title: Egardia +description: Instructions on how to setup Egardia / Woonveilig within Home Assistant. logo: egardia.png ha_category: - Hub diff --git a/source/_integrations/eight_sleep.markdown b/source/_integrations/eight_sleep.markdown index cd21e6bd7dc..9030d63af2c 100644 --- a/source/_integrations/eight_sleep.markdown +++ b/source/_integrations/eight_sleep.markdown @@ -1,6 +1,6 @@ --- -title: "Eight Sleep" -description: "Interface an Eight Sleep smart cover or mattress to Home Assistant" +title: Eight Sleep +description: Interface an Eight Sleep smart cover or mattress to Home Assistant logo: eight_sleep.png ha_category: - Health diff --git a/source/_integrations/eliqonline.markdown b/source/_integrations/eliqonline.markdown index c580bb41fb1..aaed08ffeaf 100644 --- a/source/_integrations/eliqonline.markdown +++ b/source/_integrations/eliqonline.markdown @@ -1,10 +1,10 @@ --- -title: "Eliqonline" -description: "Instructions on how to integrate Eliqonline devices within Home Assistant." +title: Eliqonline +description: Instructions on how to integrate Eliqonline devices within Home Assistant. logo: eliq.png ha_category: - Energy -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown index d64ed7c4897..3c2247ee261 100644 --- a/source/_integrations/elkm1.markdown +++ b/source/_integrations/elkm1.markdown @@ -1,6 +1,6 @@ --- -title: "Elk-M1 Controller" -description: "Instructions to setup the Elk-M1 controller." +title: Elk-M1 Controller +description: Instructions to setup the Elk-M1 controller. logo: elkproducts.png ha_release: 0.81 ha_category: diff --git a/source/_integrations/elv.markdown b/source/_integrations/elv.markdown index 33de8832c39..09ca6ac8065 100644 --- a/source/_integrations/elv.markdown +++ b/source/_integrations/elv.markdown @@ -1,6 +1,6 @@ --- -title: "ELV PCA 301 Switch" -description: "Instructions on how to integrate ELV PCA 301 switches into Home Assistant." +title: ELV PCA 301 Switch +description: Instructions on how to integrate ELV PCA 301 switches into Home Assistant. logo: elv.png ha_category: Switch ha_iot_class: Local Polling diff --git a/source/_integrations/emby.markdown b/source/_integrations/emby.markdown index 8d3efa65613..f81a38d587b 100644 --- a/source/_integrations/emby.markdown +++ b/source/_integrations/emby.markdown @@ -1,6 +1,6 @@ --- -title: "Emby" -description: "Instructions on how to integrate Emby into Home Assistant." +title: Emby +description: Instructions on how to integrate Emby into Home Assistant. logo: emby.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: 0.32 ha_iot_class: Local Push --- - The `emby` platform allows you to control a [Emby](https://emby.media/) multimedia system from Home Assistant. To add Emby to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/emoncms.markdown b/source/_integrations/emoncms.markdown index 69ce34188ee..5b820e2fd07 100644 --- a/source/_integrations/emoncms.markdown +++ b/source/_integrations/emoncms.markdown @@ -1,6 +1,6 @@ --- -title: "Emoncms Sensor" -description: "Instructions on how to integrate Emoncms feeds as sensors into Home Assistant." +title: Emoncms Sensor +description: Instructions on how to integrate Emoncms feeds as sensors into Home Assistant. logo: emoncms.png ha_category: - Sensor @@ -8,7 +8,6 @@ ha_release: 0.29 ha_iot_class: Local Polling --- - The `emoncms` sensor platform creates sensors for the feeds available in your local or cloud based version of [Emoncms](https://emoncms.org). To enable this sensor, add the following lines to your `configuration.yaml`, it will list all feeds as a sensor: diff --git a/source/_integrations/emoncms_history.markdown b/source/_integrations/emoncms_history.markdown index c024e4b710c..b78978f5ac0 100644 --- a/source/_integrations/emoncms_history.markdown +++ b/source/_integrations/emoncms_history.markdown @@ -1,13 +1,12 @@ --- -title: "Emoncms history" -description: "Instructions on how to integrate Emoncms history into Home Assistant." +title: Emoncms history +description: Instructions on how to integrate Emoncms history into Home Assistant. logo: emoncms.png ha_category: - History ha_release: 0.31 --- - The `emoncms_history` integration makes it possible to transfer details collected with Home Assistant to [Emoncms.org](https://emoncms.org/) or your local running Emoncms instance. It will send the data to a specific input node on Emoncms with the entity IDs as a key. Afterwards you can create feeds and dashboards in Emoncms with the collected data. To use the `emoncms_history` integration in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index 9fb8462b551..33570993169 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -1,6 +1,6 @@ --- -title: "Emulated Hue Bridge" -description: "Instructions on how to emulate a Hue Bridge within Home Assistant." +title: Emulated Hue Bridge +description: Instructions on how to emulate a Hue Bridge within Home Assistant. logo: home-assistant.png ha_category: - Hub diff --git a/source/_integrations/emulated_roku.markdown b/source/_integrations/emulated_roku.markdown index 5f0c7a46728..5154d602bdb 100644 --- a/source/_integrations/emulated_roku.markdown +++ b/source/_integrations/emulated_roku.markdown @@ -1,6 +1,6 @@ --- -title: "Emulated Roku" -description: "Instructions on how to set up Emulated Roku within Home Assistant." +title: Emulated Roku +description: Instructions on how to set up Emulated Roku within Home Assistant. logo: home-assistant.png ha_category: - Hub diff --git a/source/_integrations/enigma2.markdown b/source/_integrations/enigma2.markdown index 7a8c48a1ba4..014fa43fb77 100644 --- a/source/_integrations/enigma2.markdown +++ b/source/_integrations/enigma2.markdown @@ -1,11 +1,11 @@ --- -title: "Enigma2 (OpenWebif)" -description: "Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant." +title: Enigma2 (OpenWebif) +description: Instructions on how to integrate an Enigma2 based box running OpenWebif into Home Assistant. logo: openwebif.png ha_category: - Media Player -ha_release: "0.90" -ha_iot_class: "Local Polling" +ha_release: '0.90' +ha_iot_class: Local Polling --- The `enigma2` platform allows you to control a Linux based set-top box which is running [Enigma2](https://github.com/oe-alliance/oe-alliance-enigma2) with the OpenWebif plugin installed. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 8ecb70d3f75..55ff5dabbf4 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -1,6 +1,6 @@ --- -title: "EnOcean" -description: "Connect EnOcean devices to Home Assistant" +title: EnOcean +description: Connect EnOcean devices to Home Assistant logo: enocean.png ha_category: - Hub diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown index b3367d300b8..b0a2af49245 100644 --- a/source/_integrations/enphase_envoy.markdown +++ b/source/_integrations/enphase_envoy.markdown @@ -1,6 +1,6 @@ --- -title: "Enphase Envoy" -description: "Instructions on how to setup Enphase Envoy with Home Assistant." +title: Enphase Envoy +description: Instructions on how to setup Enphase Envoy with Home Assistant. logo: enphase-logo.svg ha_category: - Energy diff --git a/source/_integrations/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 55b8e667496..25009298d28 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -1,6 +1,6 @@ --- -title: "Entur public transport" -description: "Instructions for how to set up monitoring of public transport departures in Norway." +title: Entur public transport +description: Instructions for how to set up monitoring of public transport departures in Norway. logo: entur.svg ha_category: - Transport diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index d4196a79120..3b0e10a4411 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -1,6 +1,6 @@ --- -title: "Environment Canada Weather" -description: "Weather data from Environment Canada." +title: Environment Canada Weather +description: Weather data from Environment Canada. logo: environment_canada.png ha_category: - Weather diff --git a/source/_integrations/envirophat.markdown b/source/_integrations/envirophat.markdown index b0d41db4b8a..00b6fe55547 100644 --- a/source/_integrations/envirophat.markdown +++ b/source/_integrations/envirophat.markdown @@ -1,6 +1,6 @@ --- -title: "Enviro pHAT" -description: "Instructions on how to integrate the Enviro pHAT within Home Assistant." +title: Enviro pHAT +description: Instructions on how to integrate the Enviro pHAT within Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index 6c55413add0..ec5b6607dfa 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -1,6 +1,6 @@ --- -title: "Envisalink Alarm Control Panel" -description: "Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board." +title: Envisalink Alarm Control Panel +description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board. logo: eyezon.png ha_category: - Alarm diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index baf6765bac7..a403a0baf6d 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -1,6 +1,6 @@ --- -title: "EPH Controls EMBER Thermostat" -description: "Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant." +title: EPH Controls EMBER Thermostat +description: Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant. logo: ephcontrolsember.png ha_category: - Climate @@ -8,7 +8,6 @@ ha_release: 0.57 ha_iot_class: Local Polling --- - The `ephember` climate platform lets you control [EPH Controls](https://emberapp.ephcontrols.com/) thermostats. The module only works if you have a WiFi gateway to control your EPH system and an account on the EMBER app. To set it up, add the following information to your `configuration.yaml` file: diff --git a/source/_integrations/epson.markdown b/source/_integrations/epson.markdown index 311a3aa158c..9e334888754 100644 --- a/source/_integrations/epson.markdown +++ b/source/_integrations/epson.markdown @@ -1,6 +1,6 @@ --- -title: "Epson" -description: "Instructions on how to integrate Epson projector into Home Assistant." +title: Epson +description: Instructions on how to integrate Epson projector into Home Assistant. logo: epson.png ha_category: - Media Player diff --git a/source/_integrations/epsonworkforce.markdown b/source/_integrations/epsonworkforce.markdown index aaa6c43cd61..0ba55747e57 100644 --- a/source/_integrations/epsonworkforce.markdown +++ b/source/_integrations/epsonworkforce.markdown @@ -1,6 +1,6 @@ --- -title: "Epson Workforce" -description: "Instructions on how to integrate Epson Workforce Printer into Home Assistant." +title: Epson Workforce +description: Instructions on how to integrate Epson Workforce Printer into Home Assistant. logo: epson.png ha_category: - Sensor diff --git a/source/_integrations/eq3btsmart.markdown b/source/_integrations/eq3btsmart.markdown index 5eb9ea261db..d8f770e7316 100644 --- a/source/_integrations/eq3btsmart.markdown +++ b/source/_integrations/eq3btsmart.markdown @@ -1,6 +1,6 @@ --- -title: "EQ3 Bluetooth Smart Thermostats" -description: "Instructions on how to integrate EQ3 Bluetooth Smart Thermostats into Home Assistant." +title: EQ3 Bluetooth Smart Thermostats +description: Instructions on how to integrate EQ3 Bluetooth Smart Thermostats into Home Assistant. logo: eq3.gif ha_category: - Climate diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 1b774de5fe4..2f72b9a45bf 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -1,6 +1,6 @@ --- -title: "ESPHome" -description: "Support for ESPHome devices using the native ESPHome API." +title: ESPHome +description: Support for ESPHome devices using the native ESPHome API. featured: true logo: esphome.png ha_category: diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown index 4c786679a15..7bce2dcda2b 100644 --- a/source/_integrations/essent.markdown +++ b/source/_integrations/essent.markdown @@ -1,6 +1,6 @@ --- -title: "Essent" -description: "Instructions on how to integrate Essent within Home Assistant." +title: Essent +description: Instructions on how to integrate Essent within Home Assistant. logo: essent.png ha_category: - Energy @@ -31,4 +31,3 @@ password: description: Your password for [Mijn Essent](https://www.essent.nl/content/particulier/klantenservice/mijn_essent/). type: string {% endconfiguration %} - diff --git a/source/_integrations/etherscan.markdown b/source/_integrations/etherscan.markdown index d16cf44d78d..e9ff5f83810 100644 --- a/source/_integrations/etherscan.markdown +++ b/source/_integrations/etherscan.markdown @@ -1,6 +1,6 @@ --- -title: "Etherscan" -description: "Instructions on how to integrate Etherscan.io data within Home Assistant." +title: Etherscan +description: Instructions on how to integrate Etherscan.io data within Home Assistant. logo: etherscan.png ha_category: - Finance diff --git a/source/_integrations/eufy.markdown b/source/_integrations/eufy.markdown index c52ac6501b7..3267bd24a7b 100644 --- a/source/_integrations/eufy.markdown +++ b/source/_integrations/eufy.markdown @@ -1,6 +1,6 @@ --- -title: "Eufy" -description: "Instructions on how to integrate Eufy devices into Home Assistant." +title: Eufy +description: Instructions on how to integrate Eufy devices into Home Assistant. logo: eufy.png ha_category: - Hub diff --git a/source/_integrations/everlights.markdown b/source/_integrations/everlights.markdown index 9b29cf84f75..3a8ff903b6b 100644 --- a/source/_integrations/everlights.markdown +++ b/source/_integrations/everlights.markdown @@ -1,6 +1,6 @@ --- -title: "EverLights Light" -description: "Instructions on how to set up EverLights within Home Assistant." +title: EverLights Light +description: Instructions on how to set up EverLights within Home Assistant. logo: everlights.png ha_category: - Light diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index 5b6b12d43d2..9a8fbf32a6a 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -1,11 +1,11 @@ --- -title: "Honeywell evohome/TCC systems" -description: "Instructions on how to integrate a Honeywell evohome/TCC system with Home Assistant." +title: Honeywell evohome/TCC systems +description: Instructions on how to integrate a Honeywell evohome/TCC system with Home Assistant. logo: honeywell.png ha_category: - Hub - Climate -ha_release: 0.80 +ha_release: 0.8 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index fd55f53ac76..00f287cb5b4 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -1,6 +1,6 @@ --- -title: "Facebook Messenger" -description: "Instructions on how to add Facebook user notifications to Home Assistant." +title: Facebook Messenger +description: Instructions on how to add Facebook user notifications to Home Assistant. logo: facebook.png ha_category: - Notifications diff --git a/source/_integrations/facebox.markdown b/source/_integrations/facebox.markdown index 86007927153..5c833bc7b44 100644 --- a/source/_integrations/facebox.markdown +++ b/source/_integrations/facebox.markdown @@ -1,10 +1,10 @@ --- -title: "Facebox" -description: "Detect and recognize faces with Facebox." +title: Facebox +description: Detect and recognize faces with Facebox. logo: machine-box.png ha_category: - Image Processing -ha_release: 0.70 +ha_release: 0.7 --- 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. @@ -180,4 +180,3 @@ you can create an automation to receive notifications on Facebox errors: title: Facebox error ``` {% endraw %} - diff --git a/source/_integrations/fail2ban.markdown b/source/_integrations/fail2ban.markdown index 142a55dc6e2..a3473ff9ed6 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -1,6 +1,6 @@ --- -title: "Fail2Ban Sensor" -description: "Instructions on how to integrate a fail2ban sensor into Home Assistant." +title: Fail2Ban Sensor +description: Instructions on how to integrate a fail2ban sensor into Home Assistant. ha_category: - Network ha_iot_class: Local Polling @@ -8,7 +8,6 @@ logo: fail2ban.png ha_release: 0.57 --- - The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant frontend.
    diff --git a/source/_integrations/familyhub.markdown b/source/_integrations/familyhub.markdown index 27fdf1dcfee..39e999b6ec1 100644 --- a/source/_integrations/familyhub.markdown +++ b/source/_integrations/familyhub.markdown @@ -1,10 +1,10 @@ --- -title: "Family Hub Camera" -description: "Instructions on how to integrate Samsung Family Hub refrigerator cameras within Home Assistant." +title: Family Hub Camera +description: Instructions on how to integrate Samsung Family Hub refrigerator cameras within Home Assistant. logo: familyhub.png ha_category: - Camera -ha_release: "0.70" +ha_release: '0.70' ha_iot_class: Local Polling --- diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown index cdf478a8211..ae43188f8e5 100644 --- a/source/_integrations/fan.markdown +++ b/source/_integrations/fan.markdown @@ -1,6 +1,6 @@ --- -title: "Fan" -description: "Instructions on how to setup Fan devices within Home Assistant." +title: Fan +description: Instructions on how to setup Fan devices within Home Assistant. logo: home-assistant.png ha_category: - Fan diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index 079ab1dc0d4..c23a699c8d0 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -1,6 +1,6 @@ --- -title: "Fast.com" -description: "How to integrate Fast.com within Home Assistant." +title: Fast.com +description: How to integrate Fast.com within Home Assistant. logo: fastdotcom.png ha_category: - System Monitor diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index 98b1b7fcd6d..d96dee2b265 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -1,6 +1,6 @@ --- title: Feedreader -description: "Instructions on how to integrate RSS feeds into Home Assistant." +description: Instructions on how to integrate RSS feeds into Home Assistant. logo: rss.gif ha_category: - Other diff --git a/source/_integrations/ffmpeg.markdown b/source/_integrations/ffmpeg.markdown index 48219e79d7b..61ca3b6948f 100644 --- a/source/_integrations/ffmpeg.markdown +++ b/source/_integrations/ffmpeg.markdown @@ -1,6 +1,6 @@ --- -title: "FFmpeg" -description: "Instructions on how to integrate FFmpeg within Home Assistant." +title: FFmpeg +description: Instructions on how to integrate FFmpeg within Home Assistant. logo: ffmpeg.png ha_category: - Image Processing diff --git a/source/_integrations/ffmpeg_motion.markdown b/source/_integrations/ffmpeg_motion.markdown index 08d0cd8a668..727bad9220b 100644 --- a/source/_integrations/ffmpeg_motion.markdown +++ b/source/_integrations/ffmpeg_motion.markdown @@ -1,6 +1,6 @@ --- -title: "FFmpeg Motion Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based motion binary sensor" +title: FFmpeg Motion Binary Sensor +description: Instructions on how to integrate an FFmpeg-based motion binary sensor logo: ffmpeg.png ha_category: - Image Processing diff --git a/source/_integrations/ffmpeg_noise.markdown b/source/_integrations/ffmpeg_noise.markdown index 2f269a7b509..5d5996f5d1e 100644 --- a/source/_integrations/ffmpeg_noise.markdown +++ b/source/_integrations/ffmpeg_noise.markdown @@ -1,6 +1,6 @@ --- -title: "FFmpeg Noise Binary Sensor" -description: "Instructions on how to integrate an FFmpeg-based noise binary sensor" +title: FFmpeg Noise Binary Sensor +description: Instructions on how to integrate an FFmpeg-based noise binary sensor logo: ffmpeg.png ha_category: - Image Processing diff --git a/source/_integrations/fibaro.markdown b/source/_integrations/fibaro.markdown index ddea890a6b7..230fa166660 100644 --- a/source/_integrations/fibaro.markdown +++ b/source/_integrations/fibaro.markdown @@ -1,6 +1,6 @@ --- -title: "Fibaro" -description: "Instructions on how to setup Fibaro Z-Wave hubs (HCL and HC2) and configure devices within Home Assistant." +title: Fibaro +description: Instructions on how to setup Fibaro Z-Wave hubs (HCL and HC2) and configure devices within Home Assistant. logo: fibaro.png ha_category: - Hub diff --git a/source/_integrations/fido.markdown b/source/_integrations/fido.markdown index 0f615b4db6b..47b6fa24ff1 100644 --- a/source/_integrations/fido.markdown +++ b/source/_integrations/fido.markdown @@ -1,6 +1,6 @@ --- -title: "Fido Sensor" -description: "Instructions on how to integrate Fido data usage within Home Assistant." +title: Fido Sensor +description: Instructions on how to integrate Fido data usage within Home Assistant. logo: fido.png ha_category: - Network diff --git a/source/_integrations/file.markdown b/source/_integrations/file.markdown index 750767b1de4..0fb7f23afe7 100644 --- a/source/_integrations/file.markdown +++ b/source/_integrations/file.markdown @@ -1,6 +1,6 @@ --- -title: "File" -description: "Instructions on how to integrate sensors which read from files into Home Assistant." +title: File +description: Instructions on how to integrate sensors which read from files into Home Assistant. logo: file.png ha_category: - Utility diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown index 81e1fdcff92..71a3d592be9 100644 --- a/source/_integrations/filesize.markdown +++ b/source/_integrations/filesize.markdown @@ -1,6 +1,6 @@ --- -title: "File size Sensor" -description: "Component for monitoring the size of a file." +title: File size Sensor +description: Component for monitoring the size of a file. logo: file.png ha_category: - Utility diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index efe9cbc344f..ab2058307a3 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -1,6 +1,6 @@ --- -title: "Filter Sensor" -description: "Instructions on how to integrate Data Filter Sensors into Home Assistant." +title: Filter Sensor +description: Instructions on how to integrate Data Filter Sensors into Home Assistant. ha_category: - Utility ha_release: 0.65 diff --git a/source/_integrations/fints.markdown b/source/_integrations/fints.markdown index 50fe88040f7..d9380b8ea49 100644 --- a/source/_integrations/fints.markdown +++ b/source/_integrations/fints.markdown @@ -1,9 +1,9 @@ --- -title: "FinTS Sensor" -description: "Instructions on how to use the FinTS sensor." +title: FinTS Sensor +description: Instructions on how to use the FinTS sensor. ha_category: - Finance -ha_release: "0.70" +ha_release: '0.70' ha_iot_class: Local Push --- diff --git a/source/_integrations/fitbit.markdown b/source/_integrations/fitbit.markdown index 579273763bf..fa0fd72110c 100644 --- a/source/_integrations/fitbit.markdown +++ b/source/_integrations/fitbit.markdown @@ -1,6 +1,6 @@ --- -title: "Fitbit" -description: "Instructions on how to integrate Fitbit devices within Home Assistant." +title: Fitbit +description: Instructions on how to integrate Fitbit devices within Home Assistant. logo: fitbit.png ha_category: - Health diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown index 0a6f9d94711..547d42078c9 100644 --- a/source/_integrations/fixer.markdown +++ b/source/_integrations/fixer.markdown @@ -1,6 +1,6 @@ --- -title: "Fixer.io" -description: "Instructions on how to integrate exchange rates from Fixer.io within Home Assistant." +title: Fixer.io +description: Instructions on how to integrate exchange rates from Fixer.io within Home Assistant. ha_category: - Finance logo: fixer-io.png @@ -8,7 +8,6 @@ ha_iot_class: Cloud Polling ha_release: 0.23 --- - The `fixer` sensor will show you the current exchange rate from [Fixer.io](https://fixer.io/) which is using data from the [European Central Bank (ECB)](https://www.ecb.europa.eu). To get an overview about the available [currencies](https://fixer.io/symbols). diff --git a/source/_integrations/fleetgo.markdown b/source/_integrations/fleetgo.markdown index 9db3ebd72db..a438f74dbc3 100644 --- a/source/_integrations/fleetgo.markdown +++ b/source/_integrations/fleetgo.markdown @@ -1,6 +1,6 @@ --- -title: "FleetGO" -description: "Instructions on how to use a FleetGO as a device tracker." +title: FleetGO +description: Instructions on how to use a FleetGO as a device tracker. logo: fleetgo.png ha_category: - Car diff --git a/source/_integrations/flexit.markdown b/source/_integrations/flexit.markdown index eccec0f2748..5f5b0d49e37 100644 --- a/source/_integrations/flexit.markdown +++ b/source/_integrations/flexit.markdown @@ -1,6 +1,6 @@ --- -title: "Flexit A/C controller" -description: "Instructions on how to integrate Flexit A/C unit into Home Assistant." +title: Flexit A/C controller +description: Instructions on how to integrate Flexit A/C unit into Home Assistant. logo: flexit.png ha_category: - Climate diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown index d8b00f617a4..177966bfb7d 100644 --- a/source/_integrations/flic.markdown +++ b/source/_integrations/flic.markdown @@ -1,6 +1,6 @@ --- title: Flic Smart Button -description: "Instructions on how to integrate flic buttons within Home Assistant." +description: Instructions on how to integrate flic buttons within Home Assistant. logo: flic.png ha_category: - Binary Sensor diff --git a/source/_integrations/flock.markdown b/source/_integrations/flock.markdown index d063c7ce527..d2c86b9c2e0 100644 --- a/source/_integrations/flock.markdown +++ b/source/_integrations/flock.markdown @@ -1,13 +1,12 @@ --- -title: "Flock" -description: "Instructions on how to add Flock notifications to Home Assistant." +title: Flock +description: Instructions on how to add Flock notifications to Home Assistant. logo: flock.png ha_category: - Notifications ha_release: 0.71 --- - The `flock` platform uses [Flock.com](https://flock.com) to deliver notifications from Home Assistant. ## Setup diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index 86b1e1b1318..c6fac7d4c9c 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -1,6 +1,6 @@ --- -title: "flume" -description: "Documentation about the flume sensor." +title: flume +description: Documentation about the flume sensor. logo: flume.jpg ha_category: - Sensor diff --git a/source/_integrations/flunearyou.markdown b/source/_integrations/flunearyou.markdown index 4407c9241b0..c0f10887ab5 100644 --- a/source/_integrations/flunearyou.markdown +++ b/source/_integrations/flunearyou.markdown @@ -1,6 +1,6 @@ --- -title: "Flu Near You" -description: "Instructions on how to use Flu Near You data within Home Assistant" +title: Flu Near You +description: Instructions on how to use Flu Near You data within Home Assistant logo: flunearyou.png ha_category: - Health diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown index c888b5cee97..451e0fa606b 100644 --- a/source/_integrations/flux.markdown +++ b/source/_integrations/flux.markdown @@ -1,6 +1,6 @@ --- -title: "Flux Light Adjustment" -description: "Instructions on how to have switches call command line commands." +title: Flux Light Adjustment +description: Instructions on how to have switches call command line commands. ha_category: - Automation ha_release: 0.21 diff --git a/source/_integrations/flux_led.markdown b/source/_integrations/flux_led.markdown index 13ae001d4f4..5a4d8a55982 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -1,6 +1,6 @@ --- -title: "Flux Led/MagicLight" -description: "Instructions on how to setup Flux led/MagicLight within Home Assistant." +title: Flux Led/MagicLight +description: Instructions on how to setup Flux led/MagicLight within Home Assistant. logo: magic_light.png ha_category: - Light diff --git a/source/_integrations/folder.markdown b/source/_integrations/folder.markdown index 27b52d18ebd..d70b3c5d2f2 100644 --- a/source/_integrations/folder.markdown +++ b/source/_integrations/folder.markdown @@ -1,6 +1,6 @@ --- -title: "Folder sensor" -description: "Sensor for monitoring the contents of a folder." +title: Folder sensor +description: Sensor for monitoring the contents of a folder. logo: file.png ha_category: - Utility diff --git a/source/_integrations/folder_watcher.markdown b/source/_integrations/folder_watcher.markdown index 41e6de16f6f..8caae636910 100644 --- a/source/_integrations/folder_watcher.markdown +++ b/source/_integrations/folder_watcher.markdown @@ -1,6 +1,6 @@ --- -title: "Folder Watcher" -description: "Component for monitoring changes within the filesystem." +title: Folder Watcher +description: Component for monitoring changes within the filesystem. logo: home-assistant.png ha_category: - System Monitor diff --git a/source/_integrations/foobot.markdown b/source/_integrations/foobot.markdown index 113747fce19..3c51a50c70d 100644 --- a/source/_integrations/foobot.markdown +++ b/source/_integrations/foobot.markdown @@ -1,6 +1,6 @@ --- -title: "Foobot Air Quality Monitor" -description: "Instructions on how to setup Foobot Air Quality sensor in Home Assistant." +title: Foobot Air Quality Monitor +description: Instructions on how to setup Foobot Air Quality sensor in Home Assistant. logo: foobot.png ha_category: - Health diff --git a/source/_integrations/fortigate.markdown b/source/_integrations/fortigate.markdown index a5e2b815d25..cb4cfc1a089 100644 --- a/source/_integrations/fortigate.markdown +++ b/source/_integrations/fortigate.markdown @@ -1,6 +1,6 @@ --- -title: "Fortigate" -description: "Instructions on how to integrate FortiGate Firewalls into Home Assistant." +title: Fortigate +description: Instructions on how to integrate FortiGate Firewalls into Home Assistant. logo: fortinet.jpg ha_category: - Presence Detection diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index 4ec9a0de4c0..7db78ccc93e 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -1,6 +1,6 @@ --- -title: "Device Tracker FortiOS" -description: "Instructions on how to use Fortinet FortiOS to track devices in Home Assistant." +title: Device Tracker FortiOS +description: Instructions on how to use Fortinet FortiOS to track devices in Home Assistant. logo: fortinet.jpg ha_category: - Presence Detection diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index eda94f98cc5..da2e34bc3b2 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -1,6 +1,6 @@ --- -title: "Foscam IP Camera" -description: "Instructions on how to integrate Foscam IP cameras within Home Assistant." +title: Foscam IP Camera +description: Instructions on how to integrate Foscam IP cameras within Home Assistant. logo: foscam.png ha_category: - Camera diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index b008784e041..937deb6c0fa 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -1,6 +1,6 @@ --- title: Foursquare -description: "Instructions on how to the Foursquare API into Home Assistant." +description: Instructions on how to the Foursquare API into Home Assistant. logo: foursquare.png ha_category: - Social diff --git a/source/_integrations/free_mobile.markdown b/source/_integrations/free_mobile.markdown index 35e82eaa8bc..eacaecd716c 100644 --- a/source/_integrations/free_mobile.markdown +++ b/source/_integrations/free_mobile.markdown @@ -1,6 +1,6 @@ --- -title: "Free Mobile" -description: "Instructions on how to add user notifications to Home Assistant." +title: Free Mobile +description: Instructions on how to add user notifications to Home Assistant. logo: free_mobile.png ha_category: - Notifications diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index cfbd800d837..601d7419a07 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -1,6 +1,6 @@ --- -title: "Freebox" -description: "Instructions on how to integrate Freebox routers into Home Assistant." +title: Freebox +description: Instructions on how to integrate Freebox routers into Home Assistant. logo: freebox.svg ha_category: - Network diff --git a/source/_integrations/freedns.markdown b/source/_integrations/freedns.markdown index bf1dec6b950..95ca317e0c6 100644 --- a/source/_integrations/freedns.markdown +++ b/source/_integrations/freedns.markdown @@ -1,6 +1,6 @@ --- -title: "freedns.afraid.org" -description: "Keep your DNS record up to date with FreeDNS." +title: freedns.afraid.org +description: Keep your DNS record up to date with FreeDNS. logo: afraid_freedns.png ha_category: - Network diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index d94d7f739fa..f39fb19e729 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -1,13 +1,12 @@ --- -title: "FRITZ!Box" -description: "Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant." +title: FRITZ!Box +description: Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant. logo: avm.png ha_category: - Presence Detection -ha_release: "0.10" +ha_release: '0.10' --- - The `fritz` platform offers presence detection by looking at connected devices to a [AVM Fritz!Box](https://avm.de/produkte/fritzbox/) based router. ## Setup diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 584bd17b633..2940f34cb6a 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -1,6 +1,6 @@ --- -title: "Fritzbox" -description: "Instructions on how to integrate the AVM Fritzbox Smart Home components." +title: Fritzbox +description: Instructions on how to integrate the AVM Fritzbox Smart Home components. logo: avm.png ha_category: - Binary Sensor diff --git a/source/_integrations/fritzbox_callmonitor.markdown b/source/_integrations/fritzbox_callmonitor.markdown index c0ddef3c2cf..5f37a7818b5 100644 --- a/source/_integrations/fritzbox_callmonitor.markdown +++ b/source/_integrations/fritzbox_callmonitor.markdown @@ -1,6 +1,6 @@ --- -title: "FRITZ!Box Call Monitor" -description: "Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant." +title: FRITZ!Box Call Monitor +description: Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant. logo: avm.png ha_category: - System Monitor diff --git a/source/_integrations/fritzbox_netmonitor.markdown b/source/_integrations/fritzbox_netmonitor.markdown index 20297177ccd..4b3e8aa6f2f 100644 --- a/source/_integrations/fritzbox_netmonitor.markdown +++ b/source/_integrations/fritzbox_netmonitor.markdown @@ -1,6 +1,6 @@ --- -title: "FRITZ!Box Net Monitor" -description: "Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant." +title: FRITZ!Box Net Monitor +description: Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant. logo: avm.png ha_category: - System Monitor diff --git a/source/_integrations/fritzdect.markdown b/source/_integrations/fritzdect.markdown index e7b40fa340a..08d63c74a77 100644 --- a/source/_integrations/fritzdect.markdown +++ b/source/_integrations/fritzdect.markdown @@ -1,6 +1,6 @@ --- -title: "AVM FRITZ!DECT Switch" -description: "Instructions on how to integrate your AVM FRITZ!DECT switches into Home Assistant." +title: AVM FRITZ!DECT Switch +description: Instructions on how to integrate your AVM FRITZ!DECT switches into Home Assistant. logo: avm.png ha_category: - Switch diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index abcc86f3f80..c0d0002d402 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -1,6 +1,6 @@ --- -title: "Fronius" -description: "Instructions on how to connect your Fronius Inverter to Home Assistant." +title: Fronius +description: Instructions on how to connect your Fronius Inverter to Home Assistant. ha_category: - Energy - Sensor diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index 2abaf4600fd..50951174e1b 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -1,6 +1,6 @@ --- -title: "Frontend" -description: "Offers a frontend to Home Assistant." +title: Frontend +description: Offers a frontend to Home Assistant. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index 566cc2202ef..a2c66bc7656 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -1,11 +1,11 @@ --- -title: "Frontier Silicon Internet Radios" -description: "Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant." +title: Frontier Silicon Internet Radios +description: Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant. logo: frontier.png ha_category: - Media Player ha_iot_class: Local Push -ha_release: "0.40" +ha_release: '0.40' --- This integration 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/_integrations/futurenow.markdown b/source/_integrations/futurenow.markdown index 5dd9375e0a3..0e36149469d 100644 --- a/source/_integrations/futurenow.markdown +++ b/source/_integrations/futurenow.markdown @@ -1,6 +1,6 @@ --- -title: "P5 FutureNow Lights" -description: "Instructions on how to set up P5 FutureNow relay/dimmer units as lights within Home Assistant." +title: P5 FutureNow Lights +description: Instructions on how to set up P5 FutureNow relay/dimmer units as lights within Home Assistant. logo: p5.png ha_category: - Light diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown index 49c35416cef..2f6d20525ea 100644 --- a/source/_integrations/garadget.markdown +++ b/source/_integrations/garadget.markdown @@ -1,6 +1,6 @@ --- -title: "Garadget Cover" -description: "Instructions on how to integrate Garadget covers within Home Assistant." +title: Garadget Cover +description: Instructions on how to integrate Garadget covers within Home Assistant. logo: garadget.png ha_category: - Cover @@ -8,7 +8,6 @@ ha_release: 0.32 ha_iot_class: Cloud Polling --- - The `garadget` cover platform lets you control [Garadget](https://www.garadget.com/) garage door futurizers through Home Assistant. ## Configuration diff --git a/source/_integrations/gc100.markdown b/source/_integrations/gc100.markdown index dfdb8b97bde..1f8ab11c9b2 100644 --- a/source/_integrations/gc100.markdown +++ b/source/_integrations/gc100.markdown @@ -1,6 +1,6 @@ --- -title: "gc100" -description: "Instructions on how to integrate gc100 with Home Assistant." +title: gc100 +description: Instructions on how to integrate gc100 with Home Assistant. ha_category: - Hub - Binary Sensor diff --git a/source/_integrations/gearbest.markdown b/source/_integrations/gearbest.markdown index 113ce3a07d5..de50d3cc32f 100644 --- a/source/_integrations/gearbest.markdown +++ b/source/_integrations/gearbest.markdown @@ -1,14 +1,13 @@ --- -title: "Gearbest" -description: "Instructions on how to integrate a Gearbest sensor into Home Assistant." +title: Gearbest +description: Instructions on how to integrate a Gearbest sensor into Home Assistant. logo: gearbest.png ha_category: - Sensor ha_iot_class: Cloud Polling -ha_release: "0.60" +ha_release: '0.60' --- - The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. To enable this sensor, add the following lines to your `configuration.yaml` file: diff --git a/source/_integrations/geizhals.markdown b/source/_integrations/geizhals.markdown index a0f2d630f47..c6856f655bf 100644 --- a/source/_integrations/geizhals.markdown +++ b/source/_integrations/geizhals.markdown @@ -1,6 +1,6 @@ --- -title: "Geizhals" -description: "Instructions on how to integrate a Geizhals sensor into Home Assistant." +title: Geizhals +description: Instructions on how to integrate a Geizhals sensor into Home Assistant. logo: geizhals.png ha_category: - Sensor diff --git a/source/_integrations/generic_thermostat.markdown b/source/_integrations/generic_thermostat.markdown index abadb298863..ae4ec732e2f 100644 --- a/source/_integrations/generic_thermostat.markdown +++ b/source/_integrations/generic_thermostat.markdown @@ -1,6 +1,6 @@ --- -title: "Generic Thermostat" -description: "Turn Home Assistant into a thermostat" +title: Generic Thermostat +description: Turn Home Assistant into a thermostat logo: home-assistant.png ha_category: - Climate diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown index 488351ed483..a0ce9adcf29 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -1,6 +1,6 @@ --- -title: "Genius Hub" -description: "Instructions on how to integrate a Genius Hub with Home Assistant." +title: Genius Hub +description: Instructions on how to integrate a Genius Hub with Home Assistant. logo: geniushub.png ha_category: - Climate diff --git a/source/_integrations/geo_json_events.markdown b/source/_integrations/geo_json_events.markdown index af3cafcc038..3ee80518afb 100644 --- a/source/_integrations/geo_json_events.markdown +++ b/source/_integrations/geo_json_events.markdown @@ -1,6 +1,6 @@ --- -title: "GeoJSON Events" -description: "Instructions on how to integrate GeoJSON feeds into Home Assistant." +title: GeoJSON Events +description: Instructions on how to integrate GeoJSON feeds into Home Assistant. logo: geo_location.png ha_category: - Geolocation diff --git a/source/_integrations/geo_location.markdown b/source/_integrations/geo_location.markdown index cd95864cf06..2b020ba1974 100644 --- a/source/_integrations/geo_location.markdown +++ b/source/_integrations/geo_location.markdown @@ -1,6 +1,6 @@ --- -title: "Geolocation" -description: "Instructions on how to integrate geolocation aware platforms into Home Assistant." +title: Geolocation +description: Instructions on how to integrate geolocation aware platforms into Home Assistant. logo: geo_location.png ha_release: 0.78 --- diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index 6f020aa88e1..adb191c7574 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -1,6 +1,6 @@ --- title: GeoRSS Events Sensor -description: "Instructions on how to set up GeoRSS sensors within Home Assistant." +description: Instructions on how to set up GeoRSS sensors within Home Assistant. logo: rss.png ha_category: - Sensor diff --git a/source/_integrations/geofency.markdown b/source/_integrations/geofency.markdown index 02716bda083..751c216cdb3 100644 --- a/source/_integrations/geofency.markdown +++ b/source/_integrations/geofency.markdown @@ -1,6 +1,6 @@ --- -title: "Geofency" -description: "Instructions for how to use Geofency to track devices in Home Assistant." +title: Geofency +description: Instructions for how to use Geofency to track devices in Home Assistant. logo: geofency.png ha_category: - Presence Detection diff --git a/source/_integrations/geonetnz_quakes.markdown b/source/_integrations/geonetnz_quakes.markdown index ba00fd528a5..c16adf33ac9 100644 --- a/source/_integrations/geonetnz_quakes.markdown +++ b/source/_integrations/geonetnz_quakes.markdown @@ -1,6 +1,6 @@ --- -title: "GeoNet NZ Quakes" -description: "Instructions on how to integrate the GeoNet New Zealand Quakes feed into Home Assistant." +title: GeoNet NZ Quakes +description: Instructions on how to integrate the GeoNet New Zealand Quakes feed into Home Assistant. logo: geonet-nz.png ha_category: - Geolocation diff --git a/source/_integrations/geonetnz_volcano.markdown b/source/_integrations/geonetnz_volcano.markdown index 0f0631298d6..afd0e074360 100644 --- a/source/_integrations/geonetnz_volcano.markdown +++ b/source/_integrations/geonetnz_volcano.markdown @@ -1,6 +1,6 @@ --- -title: "GeoNet NZ Volcanic Alert Level" -description: "Instructions on how to integrate the GeoNet New Zealand Volcanic Alert Level feed into Home Assistant." +title: GeoNet NZ Volcanic Alert Level +description: Instructions on how to integrate the GeoNet New Zealand Volcanic Alert Level feed into Home Assistant. logo: geonet-nz.png ha_category: - Sensor diff --git a/source/_integrations/github.markdown b/source/_integrations/github.markdown index 030f8409ccc..ab374bc8210 100644 --- a/source/_integrations/github.markdown +++ b/source/_integrations/github.markdown @@ -1,6 +1,6 @@ --- -title: "GitHub Sensor" -description: "How to integrate the GitHub sensor into Home Assistant." +title: GitHub Sensor +description: How to integrate the GitHub sensor into Home Assistant. logo: github.png ha_category: - Sensor diff --git a/source/_integrations/gitlab_ci.markdown b/source/_integrations/gitlab_ci.markdown index 50e9054409b..219a386604e 100644 --- a/source/_integrations/gitlab_ci.markdown +++ b/source/_integrations/gitlab_ci.markdown @@ -1,10 +1,10 @@ --- -title: "GitLab-CI Sensor" -description: "How to integrate GitLab-CI Job status within Home Assistant." +title: GitLab-CI Sensor +description: How to integrate GitLab-CI Job status within Home Assistant. logo: gitlab.png ha_category: - Sensor -ha_release: 0.80 +ha_release: 0.8 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index f22ca36535a..d81b41fa320 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -1,13 +1,12 @@ --- -title: "Gitter Sensor" -description: "Instructions on how to integrate a Gitter room sensor with Home Assistant" +title: Gitter Sensor +description: Instructions on how to integrate a Gitter room sensor with Home Assistant logo: gitter.png ha_category: - Sensor ha_release: 0.47 --- - This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. ## Configuration diff --git a/source/_integrations/glances.markdown b/source/_integrations/glances.markdown index a4029b1cc01..575b77f683b 100644 --- a/source/_integrations/glances.markdown +++ b/source/_integrations/glances.markdown @@ -1,6 +1,6 @@ --- -title: "Glances" -description: "Instructions on how to integrate Glances sensors into Home Assistant." +title: Glances +description: Instructions on how to integrate Glances sensors into Home Assistant. logo: glances.png ha_category: - System Monitor @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_release: 0.7.3 --- - The `glances` integration allows you to monitor the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. ## Setup diff --git a/source/_integrations/gntp.markdown b/source/_integrations/gntp.markdown index a8b58a7ed9d..5715b24a564 100644 --- a/source/_integrations/gntp.markdown +++ b/source/_integrations/gntp.markdown @@ -1,6 +1,6 @@ --- -title: "GNTP (Growl)" -description: "Instructions for adding GNTP/Growl notifications to Home Assistant." +title: GNTP (Growl) +description: Instructions for adding GNTP/Growl notifications to Home Assistant. logo: gntp.png ha_category: - Notifications diff --git a/source/_integrations/goalfeed.markdown b/source/_integrations/goalfeed.markdown index e48394fa3a2..2fa13e1ec73 100644 --- a/source/_integrations/goalfeed.markdown +++ b/source/_integrations/goalfeed.markdown @@ -1,6 +1,6 @@ --- -title: "Goalfeed" -description: "Instructions on how to setup Goalfeed events within Home Assistant." +title: Goalfeed +description: Instructions on how to setup Goalfeed events within Home Assistant. logo: goalfeed.png ha_category: - Other diff --git a/source/_integrations/gogogate2.markdown b/source/_integrations/gogogate2.markdown index 9b91045b8d8..da5502a8c1d 100644 --- a/source/_integrations/gogogate2.markdown +++ b/source/_integrations/gogogate2.markdown @@ -1,6 +1,6 @@ --- -title: "Gogogate2 Cover" -description: "Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant." +title: Gogogate2 Cover +description: Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant. logo: gogogate2.png ha_category: - Cover diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 3921ca205ec..900a8171c96 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -1,6 +1,6 @@ --- -title: "Google Assistant" -description: "Setup for Google Assistant integration" +title: Google Assistant +description: Setup for Google Assistant integration logo: google-assistant.png ha_category: - Voice diff --git a/source/_integrations/google_cloud.markdown b/source/_integrations/google_cloud.markdown index b3239233729..97334697aca 100644 --- a/source/_integrations/google_cloud.markdown +++ b/source/_integrations/google_cloud.markdown @@ -1,6 +1,6 @@ --- -title: "Google Cloud Platform" -description: "Google Cloud Platform integration." +title: Google Cloud Platform +description: Google Cloud Platform integration. logo: google_cloud.png ha_category: Text-to-speech ha_release: 0.95 diff --git a/source/_integrations/google_domains.markdown b/source/_integrations/google_domains.markdown index 568344e69e7..a324f39c275 100644 --- a/source/_integrations/google_domains.markdown +++ b/source/_integrations/google_domains.markdown @@ -1,6 +1,6 @@ --- -title: "Google Domains" -description: "Keep your computer registered with the Google Domains dynamic DNS." +title: Google Domains +description: Keep your computer registered with the Google Domains dynamic DNS. logo: google_domains.png ha_category: - Network diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index 7c9d18a78a2..e45de9c5e0c 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -1,6 +1,6 @@ --- -title: "Google Maps Location Sharing" -description: "Instructions how to use Google Maps Location Sharing to track devices in Home Assistant." +title: Google Maps Location Sharing +description: Instructions how to use Google Maps Location Sharing to track devices in Home Assistant. logo: google_maps.png ha_release: 0.67 ha_category: diff --git a/source/_integrations/google_pubsub.markdown b/source/_integrations/google_pubsub.markdown index d940eadde8a..9545095c0b9 100644 --- a/source/_integrations/google_pubsub.markdown +++ b/source/_integrations/google_pubsub.markdown @@ -1,6 +1,6 @@ --- -title: "Google Pub/Sub" -description: "Setup for Google Pub/Sub integration" +title: Google Pub/Sub +description: Setup for Google Pub/Sub integration logo: google-pubsub.png ha_category: - History @@ -77,4 +77,3 @@ filter: ### Saving the data using a Google Cloud Function To save your data automatically to BigQuery, follow the [instructions here](https://github.com/timvancann/home-assistant-pubsub-cloud-function). The current [free tier](https://cloud.google.com/free/) of GCP should allow to store up to 10GB of data. - diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown index 6ab7ffde4d3..3964626ff14 100644 --- a/source/_integrations/google_translate.markdown +++ b/source/_integrations/google_translate.markdown @@ -1,6 +1,6 @@ --- -title: "Google Translate Text-to-Speech" -description: "Instructions on how to setup Google Translate Text-to-Speech with Home Assistant." +title: Google Translate Text-to-Speech +description: Instructions on how to setup Google Translate Text-to-Speech with Home Assistant. logo: google.png ha_category: - Text-to-speech diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown index 6ac9f604111..f81d11be400 100644 --- a/source/_integrations/google_travel_time.markdown +++ b/source/_integrations/google_travel_time.markdown @@ -1,6 +1,6 @@ --- -title: "Google Maps Travel Time" -description: "Instructions on how to add Google Maps travel time to Home Assistant." +title: Google Maps Travel Time +description: Instructions on how to add Google Maps travel time to Home Assistant. logo: google_maps.png ha_category: - Transport diff --git a/source/_integrations/google_wifi.markdown b/source/_integrations/google_wifi.markdown index 131ee254fd8..4022bf335b8 100644 --- a/source/_integrations/google_wifi.markdown +++ b/source/_integrations/google_wifi.markdown @@ -1,14 +1,13 @@ --- -title: "Google Wifi" -description: "Instructions on how to integrate Google Wifi/OnHub routers into Home Assistant." +title: Google Wifi +description: Instructions on how to integrate Google Wifi/OnHub routers into Home Assistant. ha_category: - System Monitor logo: google_wifi.png ha_iot_class: Local Polling -ha_release: "0.50" +ha_release: '0.50' --- - The `google_wifi` sensor platform is displaying the exposed status of a [Google Wifi](https://madeby.google.com/wifi/) (or OnHub) router. The sensor is able to report network status, up-time, current IP address and firmware versions. diff --git a/source/_integrations/gpmdp.markdown b/source/_integrations/gpmdp.markdown index dcc780a8ae9..2dc7eda69fe 100644 --- a/source/_integrations/gpmdp.markdown +++ b/source/_integrations/gpmdp.markdown @@ -1,14 +1,13 @@ --- -title: "Google Play Music Desktop Player" -description: "Instructions on how to integrate GPMDP into Home Assistant." +title: Google Play Music Desktop Player +description: Instructions on how to integrate GPMDP into Home Assistant. logo: gpmdp.png ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.20" +ha_release: '0.20' --- - The `gpmdp` media player platform allows you to control a [GPMDP](https://www.googleplaymusicdesktopplayer.com/) instance running on a computer from Home Assistant. You will have first have to check "Enable playback API" in GPMDP's settings and then add an inbound rule to the firewall to allow access to port 5672 on the computer running GPMDP. diff --git a/source/_integrations/gpsd.markdown b/source/_integrations/gpsd.markdown index c9b6bdadc6f..a92fb586857 100644 --- a/source/_integrations/gpsd.markdown +++ b/source/_integrations/gpsd.markdown @@ -1,6 +1,6 @@ --- -title: "GPSD" -description: "Instructions on how to integrate GPSD into Home Assistant." +title: GPSD +description: Instructions on how to integrate GPSD into Home Assistant. logo: gpsd.png ha_category: - Utility @@ -64,4 +64,3 @@ name: type: string default: GPS {% endconfiguration %} - diff --git a/source/_integrations/gpslogger.markdown b/source/_integrations/gpslogger.markdown index 1b46c6f2000..09529e155a3 100644 --- a/source/_integrations/gpslogger.markdown +++ b/source/_integrations/gpslogger.markdown @@ -1,6 +1,6 @@ --- -title: "GPSLogger" -description: "Instructions on how to use GPSLogger to track devices in Home Assistant." +title: GPSLogger +description: Instructions on how to use GPSLogger to track devices in Home Assistant. logo: gpslogger.png ha_category: - Presence Detection diff --git a/source/_integrations/graphite.markdown b/source/_integrations/graphite.markdown index 3a1c3c73780..e49ccf14c0b 100644 --- a/source/_integrations/graphite.markdown +++ b/source/_integrations/graphite.markdown @@ -1,6 +1,6 @@ --- -title: "Graphite" -description: "Instructions on how to record Home Assistant history in Graphite." +title: Graphite +description: Instructions on how to record Home Assistant history in Graphite. logo: graphite.png ha_category: - History @@ -33,4 +33,3 @@ prefix: type: string default: ha {% endconfiguration %} - diff --git a/source/_integrations/greeneye_monitor.markdown b/source/_integrations/greeneye_monitor.markdown index 52afe90bcb9..ebe899ea3e5 100644 --- a/source/_integrations/greeneye_monitor.markdown +++ b/source/_integrations/greeneye_monitor.markdown @@ -1,6 +1,6 @@ --- -title: "GreenEye Monitor" -description: "Instructions on how to integrate your GreenEye Monitor within Home Assistant." +title: GreenEye Monitor +description: Instructions on how to integrate your GreenEye Monitor within Home Assistant. logo: brultech.png ha_category: - Hub diff --git a/source/_integrations/greenwave.markdown b/source/_integrations/greenwave.markdown index 4aace281ee9..be0ca85ebb2 100644 --- a/source/_integrations/greenwave.markdown +++ b/source/_integrations/greenwave.markdown @@ -1,6 +1,6 @@ --- title: Greenwave Reality (TCP Connected) Lights -description: "Instructions on how to set up Greenwave Reality lights within Home Assistant." +description: Instructions on how to set up Greenwave Reality lights within Home Assistant. logo: greenwavereality.png ha_category: - Light diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index ce40ecc90aa..ab932a469e3 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -1,6 +1,6 @@ --- -title: "Group" -description: "Instructions on how to setup groups within Home Assistant." +title: Group +description: Instructions on how to setup groups within Home Assistant. logo: home-assistant.png ha_category: - Organization diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 10fe85ebf45..720e905c1a3 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -1,6 +1,6 @@ --- -title: "Growatt server PV Inverter Sensor" -description: "Instructions on how to integrate your Growatt server solar inverter within Home Assistant." +title: Growatt server PV Inverter Sensor +description: Instructions on how to integrate your Growatt server solar inverter within Home Assistant. logo: growatt.png ha_category: - Sensor diff --git a/source/_integrations/gstreamer.markdown b/source/_integrations/gstreamer.markdown index e0bf7e009f3..f32e3f05c0e 100644 --- a/source/_integrations/gstreamer.markdown +++ b/source/_integrations/gstreamer.markdown @@ -1,6 +1,6 @@ --- -title: "Gstreamer" -description: "Instructions on how to integrate Gstreamer into Home Assistant." +title: Gstreamer +description: Instructions on how to integrate Gstreamer into Home Assistant. ha_category: - Media Player logo: gstreamer.png diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index c6b79067dab..d8f3e02568f 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -1,6 +1,6 @@ --- -title: "Public Transit (GTFS)" -description: "Instructions on how to use public transit open data in Home Assistant." +title: Public Transit (GTFS) +description: Instructions on how to use public transit open data in Home Assistant. logo: train.png ha_category: - Transport diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown index 7b1c1ca31f3..f1e80396022 100644 --- a/source/_integrations/habitica.markdown +++ b/source/_integrations/habitica.markdown @@ -1,6 +1,6 @@ --- -title: "Habitica" -description: "Instructions on enabling Habitica support for your Home Assistant" +title: Habitica +description: Instructions on enabling Habitica support for your Home Assistant logo: habitica.png ha_category: - Hub diff --git a/source/_integrations/hangouts.markdown b/source/_integrations/hangouts.markdown index b6a1443eba4..e6828ecac78 100644 --- a/source/_integrations/hangouts.markdown +++ b/source/_integrations/hangouts.markdown @@ -1,6 +1,6 @@ --- -title: "Google Hangouts" -description: "Hangouts chatbot support" +title: Google Hangouts +description: Hangouts chatbot support logo: hangouts.png ha_category: - Hub diff --git a/source/_integrations/harman_kardon_avr.markdown b/source/_integrations/harman_kardon_avr.markdown index 87e4b0c47d9..4afc7993085 100644 --- a/source/_integrations/harman_kardon_avr.markdown +++ b/source/_integrations/harman_kardon_avr.markdown @@ -1,6 +1,6 @@ --- -title: "Harman Kardon AVR Network Receivers" -description: "Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant." +title: Harman Kardon AVR Network Receivers +description: Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant. logo: harman_kardon.png ha_category: - Media Player diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index afac8b40fbd..42732e8a713 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -1,6 +1,6 @@ --- -title: "Harmony Hub Remote" -description: "Instructions on how to integrate Harmony Hub remotes into Home Assistant." +title: Harmony Hub Remote +description: Instructions on how to integrate Harmony Hub remotes into Home Assistant. logo: logitech.png ha_category: - Remote diff --git a/source/_integrations/haveibeenpwned.markdown b/source/_integrations/haveibeenpwned.markdown index 7fd9fb67c9e..9b773b9a2b6 100644 --- a/source/_integrations/haveibeenpwned.markdown +++ b/source/_integrations/haveibeenpwned.markdown @@ -1,6 +1,6 @@ --- -title: "HaveIBeenPwned Sensor" -description: "Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant." +title: HaveIBeenPwned Sensor +description: Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant. logo: haveibeenpwned.png ha_category: - Sensor diff --git a/source/_integrations/hddtemp.markdown b/source/_integrations/hddtemp.markdown index 32a805b292e..4e1b37b5759 100644 --- a/source/_integrations/hddtemp.markdown +++ b/source/_integrations/hddtemp.markdown @@ -1,6 +1,6 @@ --- -title: "HDDTemp" -description: "Instructions on how to integrate hard drive temperature information into Home Assistant." +title: HDDTemp +description: Instructions on how to integrate hard drive temperature information into Home Assistant. ha_category: - System Monitor ha_release: 0.32 diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 674509549fa..0dd3fca20d2 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -1,6 +1,6 @@ --- -title: "HDMI CEC" -description: "Instructions on how to interact with HDMI CEC via Home Assistant." +title: HDMI CEC +description: Instructions on how to interact with HDMI CEC via Home Assistant. ha_category: - Automation logo: hdmi.png diff --git a/source/_integrations/heatmiser.markdown b/source/_integrations/heatmiser.markdown index c1ec07107c3..50dbccc3bb4 100644 --- a/source/_integrations/heatmiser.markdown +++ b/source/_integrations/heatmiser.markdown @@ -1,10 +1,10 @@ --- -title: "Heatmiser Thermostat" -description: "Instructions on how to integrate Heatmiser thermostats within Home Assistant." +title: Heatmiser Thermostat +description: Instructions on how to integrate Heatmiser thermostats within Home Assistant. logo: heatmiser.png ha_category: - Climate -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Local Polling --- diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index 77a90a30a31..7d4654e3036 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -1,6 +1,6 @@ --- -title: "Denon HEOS" -description: "Instructions on how to integrate Denon HEOS into Home Assistant." +title: Denon HEOS +description: Instructions on how to integrate Denon HEOS into Home Assistant. logo: heos.png ha_category: - Media Player diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown index cbb65aa66a6..20f0859785a 100644 --- a/source/_integrations/here_travel_time.markdown +++ b/source/_integrations/here_travel_time.markdown @@ -1,12 +1,12 @@ --- -title: "HERE Travel Time" -description: "Instructions on how to add HERE travel time to Home Assistant." +title: HERE Travel Time +description: Instructions on how to add HERE travel time to Home Assistant. logo: HERE_logo.svg ha_category: - Transport - Sensor ha_iot_class: Cloud Polling -ha_release: "0.100" +ha_release: '0.100' --- The `here_travel_time` sensor provides travel time from the [HERE Routing API](https://developer.here.com/documentation/routing/topics/introduction.html). diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index 95f0bdceffe..75e5563b060 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -1,6 +1,6 @@ --- title: Hikvision Binary Sensor -description: "Instructions on how to set up Hikvision camera binary sensors within Home Assistant." +description: Instructions on how to set up Hikvision camera binary sensors within Home Assistant. logo: hikvision.png ha_category: - Binary Sensor diff --git a/source/_integrations/hikvisioncam.markdown b/source/_integrations/hikvisioncam.markdown index 28101dfa697..78c1647228b 100644 --- a/source/_integrations/hikvisioncam.markdown +++ b/source/_integrations/hikvisioncam.markdown @@ -1,6 +1,6 @@ --- -title: "Hikvision Camera Switch" -description: "Instructions on how to integrate Hikvision camera switches into Home Assistant." +title: Hikvision Camera Switch +description: Instructions on how to integrate Hikvision camera switches into Home Assistant. logo: hikvision.png ha_category: - Switch diff --git a/source/_integrations/hisense_aehw4a1.markdown b/source/_integrations/hisense_aehw4a1.markdown index e070012f786..5e10124000a 100644 --- a/source/_integrations/hisense_aehw4a1.markdown +++ b/source/_integrations/hisense_aehw4a1.markdown @@ -1,6 +1,6 @@ --- -title: "Hisense AEH-W4A1" -description: "Instructions to setup the Hisense AEH W4A1 WiFi module for ACs." +title: Hisense AEH-W4A1 +description: Instructions to setup the Hisense AEH W4A1 WiFi module for ACs. logo: hisense.png ha_release: 0.103 ha_category: diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index 6a26d681646..ba5fbe4fab7 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -1,6 +1,6 @@ --- -title: "History" -description: "Instructions on how to enable history support for Home Assistant." +title: History +description: Instructions on how to enable history support for Home Assistant. logo: home-assistant.png ha_category: - History diff --git a/source/_integrations/history_graph.markdown b/source/_integrations/history_graph.markdown index d18cbd82b8b..4d1ffb4b014 100644 --- a/source/_integrations/history_graph.markdown +++ b/source/_integrations/history_graph.markdown @@ -1,6 +1,6 @@ --- -title: "History Graph" -description: "Instructions for setting up History Graph." +title: History Graph +description: Instructions for setting up History Graph. ha_category: - History logo: home-assistant.png diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 6038fbd4c10..4185692f39c 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -1,6 +1,6 @@ --- -title: "History Statistics Sensor" -description: "Instructions about how to integrate historical statistics into Home Assistant." +title: History Statistics Sensor +description: Instructions about how to integrate historical statistics into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 7ef0a51759b..5581f5cbc54 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -1,6 +1,6 @@ --- -title: "Hitron CODA Routers" -description: "Instructions on how to integrate Hitron CODA Routers into Home Assistant." +title: Hitron CODA Routers +description: Instructions on how to integrate Hitron CODA Routers into Home Assistant. logo: hitron.png ha_category: - Presence Detection diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index 2ea8ba4beeb..bf9e3ed8106 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -1,6 +1,6 @@ --- -title: "Hive" -description: "Instructions on how to integrate Hive devices with Home Assistant." +title: Hive +description: Instructions on how to integrate Hive devices with Home Assistant. logo: hive.png ha_category: - Hub diff --git a/source/_integrations/hlk_sw16.markdown b/source/_integrations/hlk_sw16.markdown index 69f8f71f180..6b51e47b8d8 100644 --- a/source/_integrations/hlk_sw16.markdown +++ b/source/_integrations/hlk_sw16.markdown @@ -1,6 +1,6 @@ --- -title: "HLK-SW16 Relay Module" -description: "Instructions on how to integrate HLK-SW16 relay into Home Assistant." +title: HLK-SW16 Relay Module +description: Instructions on how to integrate HLK-SW16 relay into Home Assistant. logo: hlktech.jpg ha_category: - DIY diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 6cfa9a9fe10..c9bc5d7dc4f 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -1,6 +1,6 @@ --- -title: "Core integration" -description: "Description of the homeassistant integration." +title: Core integration +description: Description of the homeassistant integration. logo: home-assistant.png ha_release: 0.0 ha_qa_scale: internal diff --git a/source/_integrations/homekit.markdown b/source/_integrations/homekit.markdown index 61dd0e05c39..1e6712df47a 100644 --- a/source/_integrations/homekit.markdown +++ b/source/_integrations/homekit.markdown @@ -1,6 +1,6 @@ --- -title: "HomeKit" -description: "Instructions on how to set up the HomeKit integration in Home Assistant." +title: HomeKit +description: Instructions on how to set up the HomeKit integration in Home Assistant. ha_category: - Voice ha_release: 0.64 diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 05c90c88149..461027de5da 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -1,6 +1,6 @@ --- -title: "HomeKit controller support" -description: "Instructions for how to integrate your HomeKit devices within Home Assistant." +title: HomeKit controller support +description: Instructions for how to integrate your HomeKit devices within Home Assistant. logo: apple-homekit.png ha_category: - Hub diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index d6f587d5211..cfbe2fd88bf 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -1,6 +1,6 @@ --- -title: "Homematic" -description: "Instructions for integrating Homematic into Home Assistant." +title: Homematic +description: Instructions for integrating Homematic into Home Assistant. logo: homematic.png ha_category: - Hub diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index f98fb019127..e85245f2b37 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -1,6 +1,6 @@ --- -title: "HomematicIP Cloud" -description: "Instructions for integrating HomematicIP into Home Assistant." +title: HomematicIP Cloud +description: Instructions for integrating HomematicIP into Home Assistant. logo: homematicip_cloud.png ha_category: - Hub diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index a7e94a4ccf5..849e324bb1f 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -1,6 +1,6 @@ --- -title: "Homeworks Hub" -description: "How to use Lutron Homeworks Series 4 & 8 with Home Assistant." +title: Homeworks Hub +description: How to use Lutron Homeworks Series 4 & 8 with Home Assistant. logo: lutron.png ha_category: - Hub diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 332e6fbfb51..9814b3af9a3 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -1,6 +1,6 @@ --- -title: "Honeywell Thermostat" -description: "Instructions on how to integrate Honeywell thermostats within Home Assistant." +title: Honeywell Thermostat +description: Instructions on how to integrate Honeywell thermostats within Home Assistant. logo: honeywell.png ha_category: - Climate diff --git a/source/_integrations/hook.markdown b/source/_integrations/hook.markdown index 94e046e9d91..134c484e054 100644 --- a/source/_integrations/hook.markdown +++ b/source/_integrations/hook.markdown @@ -1,6 +1,6 @@ --- -title: "Hook Switch" -description: "Instructions on how to integrate the Hook Smart Home Hub into Home Assistant." +title: Hook Switch +description: Instructions on how to integrate the Hook Smart Home Hub into Home Assistant. logo: hook.png ha_category: - Switch diff --git a/source/_integrations/horizon.markdown b/source/_integrations/horizon.markdown index 432fb10454b..82a57c1284d 100644 --- a/source/_integrations/horizon.markdown +++ b/source/_integrations/horizon.markdown @@ -1,6 +1,6 @@ --- -title: "Horizon HD Recorder" -description: "Instructions how to integrate the Unitymedia Horizon HD Recorder into Home Assistant." +title: Horizon HD Recorder +description: Instructions how to integrate the Unitymedia Horizon HD Recorder into Home Assistant. logo: unitymedia.png ha_category: - Media Player diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index 4f2cee29ede..e89152fa014 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -1,6 +1,6 @@ --- -title: "HP ILO" -description: "How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant." +title: HP ILO +description: How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant. logo: hewlett_packard_enterprise.png ha_category: - System Monitor diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index bbd852874d9..a003c401b01 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -1,6 +1,6 @@ --- -title: "Push Notifications" -description: "Instructions on how to use the HTML5 push notifications platform from Home Assistant." +title: Push Notifications +description: Instructions on how to use the HTML5 push notifications platform from Home Assistant. logo: html5.png ha_category: - Notifications diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index 0505731aacf..359bd8fb28e 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -1,6 +1,6 @@ --- -title: "HTTP" -description: "Offers a web framework to serve files." +title: HTTP +description: Offers a web framework to serve files. logo: http.png ha_category: - Other diff --git a/source/_integrations/htu21d.markdown b/source/_integrations/htu21d.markdown index 2037c37b652..a70a68577e7 100644 --- a/source/_integrations/htu21d.markdown +++ b/source/_integrations/htu21d.markdown @@ -1,6 +1,6 @@ --- -title: "HTU21D Temperature and humidity sensor" -description: "Instructions on how to integrate a HTU21D Temperature and humidity sensor into Home Assistant." +title: HTU21D Temperature and humidity sensor +description: Instructions on how to integrate a HTU21D Temperature and humidity sensor into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 515b488d12b..4a3c668cfb6 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -1,6 +1,6 @@ --- -title: "Huawei LTE" -description: "Instructions on how to integrate Huawei LTE router and modem devices with Home Assistant." +title: Huawei LTE +description: Instructions on how to integrate Huawei LTE router and modem devices with Home Assistant. logo: huawei.svg ha_category: - Network diff --git a/source/_integrations/huawei_router.markdown b/source/_integrations/huawei_router.markdown index 6a8f012e2f3..c6f0ed37e5b 100644 --- a/source/_integrations/huawei_router.markdown +++ b/source/_integrations/huawei_router.markdown @@ -1,6 +1,6 @@ --- -title: "Huawei Router" -description: "Instructions on how to integrate Huawei Routers into Home Assistant." +title: Huawei Router +description: Instructions on how to integrate Huawei Routers into Home Assistant. logo: huawei.svg ha_category: - Presence Detection diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index b1e36814b1b..8bc8bec378b 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -1,6 +1,6 @@ --- -title: "Philips Hue" -description: "Instructions on setting up Philips Hue within Home Assistant." +title: Philips Hue +description: Instructions on setting up Philips Hue within Home Assistant. logo: philips_hue.png ha_category: - Hub @@ -8,7 +8,7 @@ ha_category: ha_iot_class: Local Polling ha_qa_scale: platinum featured: true -ha_release: "0.60" +ha_release: '0.60' --- Philips Hue support is integrated into Home Assistant as a hub that can drive the light and sensor platforms. The preferred way to set up the Philips Hue platform is by enabling the [discovery component](/integrations/discovery/). diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 319742d7c76..56bb4ac5dcb 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -1,6 +1,6 @@ --- -title: "PowerView Scenes" -description: "Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant." +title: PowerView Scenes +description: Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant. logo: hunter-douglas-powerview.png ha_category: - Scene diff --git a/source/_integrations/hydrawise.markdown b/source/_integrations/hydrawise.markdown index 58a12fcc850..034ae51ac46 100644 --- a/source/_integrations/hydrawise.markdown +++ b/source/_integrations/hydrawise.markdown @@ -1,6 +1,6 @@ --- -title: "Hunter Hydrawise" -description: "Instructions on how to integrate your Hunter Hydrawise Wi-Fi irrigation control system within Home Assistant." +title: Hunter Hydrawise +description: Instructions on how to integrate your Hunter Hydrawise Wi-Fi irrigation control system within Home Assistant. logo: hydrawise_logo.png ha_category: - Irrigation diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index 1d6424fdfe0..2d9af3443b5 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -1,6 +1,6 @@ --- -title: "Hyperion" -description: "Instructions on how to integrate Hyperion into Home Assistant." +title: Hyperion +description: Instructions on how to integrate Hyperion into Home Assistant. logo: hyperion.png ha_category: - Light diff --git a/source/_integrations/ialarm.markdown b/source/_integrations/ialarm.markdown index 91a194f674e..888036a40e1 100644 --- a/source/_integrations/ialarm.markdown +++ b/source/_integrations/ialarm.markdown @@ -1,10 +1,10 @@ --- -title: "Antifurto365 iAlarm Control Panel" -description: "Instructions on how to integrate iAlarms alarms into Home Assistant." +title: Antifurto365 iAlarm Control Panel +description: Instructions on how to integrate iAlarms alarms into Home Assistant. logo: antifurto365-ialarm.png ha_category: - Alarm -ha_release: "0.60" +ha_release: '0.60' --- The `ialarm` platform provides connectivity with the [Antifurto365](https://www.antifurtocasa365.it/) iAlarm alarm systems. diff --git a/source/_integrations/iaqualink.markdown b/source/_integrations/iaqualink.markdown index 22c2c062077..426b23369bd 100644 --- a/source/_integrations/iaqualink.markdown +++ b/source/_integrations/iaqualink.markdown @@ -1,6 +1,6 @@ --- -title: "Jandy iAqualink" -description: "Instructions on how to configure Jandy iAqualink integration." +title: Jandy iAqualink +description: Instructions on how to configure Jandy iAqualink integration. logo: iaqualink.png ha_category: - Binary Sensor diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 8239a89f640..4ad8935640c 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -1,13 +1,12 @@ --- -title: "iCloud" -description: "Instructions on how to use iCloud to track devices in Home Assistant." +title: iCloud +description: Instructions on how to use iCloud to track devices in Home Assistant. logo: icloud.png ha_category: - Presence Detection -ha_release: "0.10" +ha_release: '0.10' --- - The `icloud` platform allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track the location of their iOS devices. It does require that your devices are registered with the [Find My](https://www.apple.com/uk/icloud/find-my/) service. diff --git a/source/_integrations/idteck_prox.markdown b/source/_integrations/idteck_prox.markdown index 8c744ad54ce..12348553512 100644 --- a/source/_integrations/idteck_prox.markdown +++ b/source/_integrations/idteck_prox.markdown @@ -1,6 +1,6 @@ --- -title: "IDTECK Prox Card Reader" -description: "How to use IDTECK proximity card readers." +title: IDTECK Prox Card Reader +description: How to use IDTECK proximity card readers. logo: idteck.jpg ha_category: - Other diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 20067909284..7a2e479aac3 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -1,12 +1,12 @@ --- -title: "IFTTT" -description: "Instructions on how to setup IFTTT within Home Assistant." +title: IFTTT +description: Instructions on how to setup IFTTT within Home Assistant. logo: ifttt.png ha_category: - Automation featured: true ha_iot_class: Cloud Push -ha_release: 0.80 +ha_release: 0.8 --- [IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so-called "Applets". With the IFTTT component, you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). diff --git a/source/_integrations/iglo.markdown b/source/_integrations/iglo.markdown index 9edbcfe3e8d..b209e451139 100644 --- a/source/_integrations/iglo.markdown +++ b/source/_integrations/iglo.markdown @@ -1,6 +1,6 @@ --- -title: "iGlo" -description: "Instructions on how to integrate iGlo lights into Home Assistant." +title: iGlo +description: Instructions on how to integrate iGlo lights into Home Assistant. logo: iglo.png ha_category: - Light diff --git a/source/_integrations/ign_sismologia.markdown b/source/_integrations/ign_sismologia.markdown index ed9d46b4c33..80a60575862 100644 --- a/source/_integrations/ign_sismologia.markdown +++ b/source/_integrations/ign_sismologia.markdown @@ -1,6 +1,6 @@ --- -title: "IGN Sismología" -description: "Instructions on how to integrate the Instituto Geográfico Nacional Sismología (Earthquakes) Feed feed into Home Assistant." +title: IGN Sismología +description: Instructions on how to integrate the Instituto Geográfico Nacional Sismología (Earthquakes) Feed feed into Home Assistant. logo: ign-sismologia.png ha_category: - Geolocation diff --git a/source/_integrations/ihc.markdown b/source/_integrations/ihc.markdown index 398e547b859..8c4626c1ace 100644 --- a/source/_integrations/ihc.markdown +++ b/source/_integrations/ihc.markdown @@ -1,6 +1,6 @@ --- -title: "IHC" -description: "Instructions on how to integrate the IHC integrations with Home Assistant" +title: IHC +description: Instructions on how to integrate the IHC integrations with Home Assistant logo: ihc.png ha_category: - Hub @@ -327,4 +327,4 @@ switch: type: string {% endconfiguration %} -The resource id should be a boolean resource (On/Off). For more information about IHC resource ids see [Manual Setup](#manual-setup). \ No newline at end of file +The resource id should be a boolean resource (On/Off). For more information about IHC resource ids see [Manual Setup](#manual-setup). diff --git a/source/_integrations/image_processing.markdown b/source/_integrations/image_processing.markdown index e145b03883a..cfeb350ac39 100644 --- a/source/_integrations/image_processing.markdown +++ b/source/_integrations/image_processing.markdown @@ -1,6 +1,6 @@ --- -title: "Image Processing" -description: "Instructions on how to setup image processing with Home Assistant." +title: Image Processing +description: Instructions on how to setup image processing with Home Assistant. ha_release: 0.36 --- diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index 418ddab9176..ac6de00aebc 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -1,6 +1,6 @@ --- -title: "IMAP Unread E-mail" -description: "Instructions on how to integrate IMAP unread email into Home Assistant." +title: IMAP Unread E-mail +description: Instructions on how to integrate IMAP unread email into Home Assistant. logo: smtp.png ha_category: - Mailbox diff --git a/source/_integrations/imap_email_content.markdown b/source/_integrations/imap_email_content.markdown index c4bce26f23e..c6d3c34f1dc 100644 --- a/source/_integrations/imap_email_content.markdown +++ b/source/_integrations/imap_email_content.markdown @@ -1,6 +1,6 @@ --- -title: "IMAP Email Content" -description: "Instructions on how to integrate IMAP email content sensor into Home Assistant." +title: IMAP Email Content +description: Instructions on how to integrate IMAP email content sensor into Home Assistant. logo: smtp.png ha_category: - Mailbox diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown index 40b9743e5da..27a650142ae 100644 --- a/source/_integrations/incomfort.markdown +++ b/source/_integrations/incomfort.markdown @@ -1,6 +1,6 @@ --- -title: "Intergas InComfort" -description: "Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant." +title: Intergas InComfort +description: Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant. logo: incomfort.png ha_category: - Water Heater diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 80ecdaf708e..6c6289d1b9d 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -1,6 +1,6 @@ --- -title: "InfluxDB" -description: "Record events in InfluxDB." +title: InfluxDB +description: Record events in InfluxDB. logo: influxdb.png ha_category: - History diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index c2987ede1f4..2e0d7b25626 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -1,6 +1,6 @@ --- -title: "Input Boolean" -description: "Instructions on how to integrate the Input Boolean integration into Home Assistant." +title: Input Boolean +description: Instructions on how to integrate the Input Boolean integration into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index a0da854525d..3593150b197 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -1,6 +1,6 @@ --- -title: "Input Datetime" -description: "Instructions on how to integrate the Input Datetime integration into Home Assistant." +title: Input Datetime +description: Instructions on how to integrate the Input Datetime integration into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 4456e59f1ef..e12b9673556 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -1,6 +1,6 @@ --- -title: "Input Number" -description: "Instructions on how to integrate the Input Number integration into Home Assistant." +title: Input Number +description: Instructions on how to integrate the Input Number integration into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index b87930e919e..ac73fe4d0c9 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -1,6 +1,6 @@ --- -title: "Input Select" -description: "Instructions on how to integrate the Input Select integration into Home Assistant." +title: Input Select +description: Instructions on how to integrate the Input Select integration into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index e413fbc1863..c3a7fb2568c 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -1,6 +1,6 @@ --- -title: "Input Text" -description: "Instructions on how to integrate the Input Text integration into Home Assistant." +title: Input Text +description: Instructions on how to integrate the Input Text integration into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/insteon.markdown b/source/_integrations/insteon.markdown index 4096a4d259d..784c9fb1fb6 100644 --- a/source/_integrations/insteon.markdown +++ b/source/_integrations/insteon.markdown @@ -1,6 +1,6 @@ --- -title: "Insteon" -description: "Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant." +title: Insteon +description: Instructions on how to set up an Insteon Modem (PLM or Hub) locally within Home Assistant. logo: insteon.png ha_category: - Hub diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index 34d2859b897..07d1811f868 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -1,6 +1,6 @@ --- -title: "Integration Sensor" -description: "Instructions on how to integrate Integration Sensor into Home Assistant." +title: Integration Sensor +description: Instructions on how to integrate Integration Sensor into Home Assistant. ha_category: - Utility - Energy diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown index 46d04c02b96..dcab7d7027f 100644 --- a/source/_integrations/intent_script.markdown +++ b/source/_integrations/intent_script.markdown @@ -1,10 +1,10 @@ --- -title: "Intent Script" -description: "Instructions on how to setup scripts to run on intents." +title: Intent Script +description: Instructions on how to setup scripts to run on intents. logo: home-assistant.png ha_category: - Intent -ha_release: "0.50" +ha_release: '0.50' ha_qa_scale: internal --- diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 449d57d8b63..4a49872d24e 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -1,6 +1,6 @@ --- -title: "iOS" -description: "Instructions on how to use the iOS companion app with Home Assistant." +title: iOS +description: Instructions on how to use the iOS companion app with Home Assistant. logo: apple.png ha_category: - Hub diff --git a/source/_integrations/iota.markdown b/source/_integrations/iota.markdown index 607de048798..e1ee6c74064 100644 --- a/source/_integrations/iota.markdown +++ b/source/_integrations/iota.markdown @@ -1,6 +1,6 @@ --- -title: "IOTA" -description: "Instructions on how to integrate IOTA wallets with Home Assistant." +title: IOTA +description: Instructions on how to integrate IOTA wallets with Home Assistant. logo: iota.png ha_category: - Finance diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 5513ccb726b..758365865bd 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -1,6 +1,6 @@ --- -title: "Iperf3 Sensor" -description: "How to use Iperf3 within Home Assistant to measure your network bandwidth." +title: Iperf3 Sensor +description: How to use Iperf3 within Home Assistant to measure your network bandwidth. logo: iperf3.png ha_category: - System Monitor diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 0edf8d6f9c9..e9e935c3ca5 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -1,6 +1,6 @@ --- -title: "IPMA" -description: "Instructions on how to integrate Instituto Português do Mar e Atmosfera weather conditions into Home Assistant." +title: IPMA +description: Instructions on how to integrate Instituto Português do Mar e Atmosfera weather conditions into Home Assistant. logo: ipma.png ha_category: - Weather diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index b496ee3bb3f..32232a85612 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -1,6 +1,6 @@ --- -title: "IQVIA" -description: "Instructions on how to use IQVIA data within Home Assistant" +title: IQVIA +description: Instructions on how to use IQVIA data within Home Assistant logo: iqvia.png ha_category: - Health diff --git a/source/_integrations/irish_rail_transport.markdown b/source/_integrations/irish_rail_transport.markdown index 96e6fd4244d..a4f39244e68 100644 --- a/source/_integrations/irish_rail_transport.markdown +++ b/source/_integrations/irish_rail_transport.markdown @@ -1,6 +1,6 @@ --- -title: "Irish Rail Transport" -description: "Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant." +title: Irish Rail Transport +description: Instructions on how to integrate timetable data for traveling on Irish Rail within Home Assistant. logo: irishrail.png ha_category: - Transport diff --git a/source/_integrations/islamic_prayer_times.markdown b/source/_integrations/islamic_prayer_times.markdown index 0e310132f11..89d5c5ee458 100644 --- a/source/_integrations/islamic_prayer_times.markdown +++ b/source/_integrations/islamic_prayer_times.markdown @@ -1,6 +1,6 @@ --- -title: "Islamic Prayer Times" -description: "Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant." +title: Islamic Prayer Times +description: Instructions on how to integrate the Islamic Prayer Times sensor within Home Assistant. ha_category: - Sensor ha_iot_class: Cloud Polling diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown index d1e605bc316..6931d3dc52e 100644 --- a/source/_integrations/iss.markdown +++ b/source/_integrations/iss.markdown @@ -1,6 +1,6 @@ --- -title: "International Space Station" -description: "Know if or when ISS will be above your home location" +title: International Space Station +description: Know if or when ISS will be above your home location logo: nasa.png ha_category: - Binary Sensor diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index 9bde4e8c6d1..b657fbf7a7f 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -1,6 +1,6 @@ --- -title: "ISY994 Controller" -description: "Instructions on how to setup the ISY994 controller within Home Assistant." +title: ISY994 Controller +description: Instructions on how to setup the ISY994 controller within Home Assistant. logo: universal_devices.png ha_category: - Hub diff --git a/source/_integrations/itach.markdown b/source/_integrations/itach.markdown index df89a06320c..bd783c1fa5a 100644 --- a/source/_integrations/itach.markdown +++ b/source/_integrations/itach.markdown @@ -1,6 +1,6 @@ --- -title: "iTach Remote" -description: "Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant." +title: iTach Remote +description: Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant. logo: globalcache.png ha_category: - Remote diff --git a/source/_integrations/itunes.markdown b/source/_integrations/itunes.markdown index 315d59af959..bcc051a4ea0 100644 --- a/source/_integrations/itunes.markdown +++ b/source/_integrations/itunes.markdown @@ -1,6 +1,6 @@ --- -title: "iTunes" -description: "Instructions on how to integrate iTunes into Home Assistant." +title: iTunes +description: Instructions on how to integrate iTunes into Home Assistant. logo: itunes.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: 0.7.3 ha_iot_class: Local Polling --- - The `itunes` media player platform allows you to control [iTunes](https://apple.com/itunes/) from Home Assistant. It uses a 3rd party server that you run on your Mac called [itunes-api](https://github.com/maddox/itunes-api). Play, pause or skip songs remotely on iTunes running on your Mac. In addition to controlling iTunes, your available AirPlay endpoints will be added as media players as well. You can then individually address them and turn them on, turn them off or adjust their volume. diff --git a/source/_integrations/izone.markdown b/source/_integrations/izone.markdown index ace8b1bff1b..9369704d414 100644 --- a/source/_integrations/izone.markdown +++ b/source/_integrations/izone.markdown @@ -1,9 +1,9 @@ --- -title: "iZone climate control" -description: "Instructions on how to integrate iZone climate control devices with Home Assistant." +title: iZone climate control +description: Instructions on how to integrate iZone climate control devices with Home Assistant. ha_category: - Climate -ha_release: "0.100" +ha_release: '0.100' ha_iot_class: Local Push --- diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index e772b887a43..558d67e9813 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -1,6 +1,6 @@ --- -title: "Jewish Calendar" -description: "Instructions on how to integrate the Jewish Calendar integration within Home Assistant." +title: Jewish Calendar +description: Instructions on how to integrate the Jewish Calendar integration within Home Assistant. ha_category: - Calendar ha_iot_class: Local Polling diff --git a/source/_integrations/joaoapps_join.markdown b/source/_integrations/joaoapps_join.markdown index 06fbffeff2d..f16d6782287 100644 --- a/source/_integrations/joaoapps_join.markdown +++ b/source/_integrations/joaoapps_join.markdown @@ -1,6 +1,6 @@ --- -title: "Joaoapps Join" -description: "Instructions for how to integrate the Join by Joaoapps service within Home Assistant." +title: Joaoapps Join +description: Instructions for how to integrate the Join by Joaoapps service within Home Assistant. logo: joaoapps_join.png ha_category: - Hub diff --git a/source/_integrations/juicenet.markdown b/source/_integrations/juicenet.markdown index 15fca05b5ac..7e0a9ef6f08 100644 --- a/source/_integrations/juicenet.markdown +++ b/source/_integrations/juicenet.markdown @@ -1,6 +1,6 @@ --- -title: "Juicenet" -description: "Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant." +title: Juicenet +description: Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant. logo: juicenet.png ha_category: - Car diff --git a/source/_integrations/kaiterra.markdown b/source/_integrations/kaiterra.markdown index 0ff306b1538..6ac053c1e85 100644 --- a/source/_integrations/kaiterra.markdown +++ b/source/_integrations/kaiterra.markdown @@ -1,11 +1,11 @@ --- -title: "Kaiterra" -description: "Instructions on how to integrate your Kaiterra device into Home Assistant." +title: Kaiterra +description: Instructions on how to integrate your Kaiterra device into Home Assistant. logo: kaiterra.svg ha_iot_class: Cloud Polling ha_category: - Health -ha_release: "0.100" +ha_release: '0.100' --- The `kaiterra` integration allows you to view the readings from your Laser Egg or Sensedge device using the [Kaiterra REST API](https://www.kaiterra.com/dev/). diff --git a/source/_integrations/kankun.markdown b/source/_integrations/kankun.markdown index 8c7c92c05c5..9662dd534ab 100644 --- a/source/_integrations/kankun.markdown +++ b/source/_integrations/kankun.markdown @@ -1,6 +1,6 @@ --- -title: "Kankun SP3 Wifi Switch" -description: "Instructions for the Kankun SP3 Wifi switch" +title: Kankun SP3 Wifi Switch +description: Instructions for the Kankun SP3 Wifi switch ha_category: - Switch ha_release: 0.36 diff --git a/source/_integrations/keba.markdown b/source/_integrations/keba.markdown index add2df55143..01abb5d82c3 100644 --- a/source/_integrations/keba.markdown +++ b/source/_integrations/keba.markdown @@ -1,6 +1,6 @@ --- -title: "Keba Charging Station" -description: "Instructions on how to setup your Keba charging station with Home Assistant." +title: Keba Charging Station +description: Instructions on how to setup your Keba charging station with Home Assistant. logo: keba.png ha_category: - Binary Sensor diff --git a/source/_integrations/keenetic_ndms2.markdown b/source/_integrations/keenetic_ndms2.markdown index edafdf0b1cd..674a705ea48 100644 --- a/source/_integrations/keenetic_ndms2.markdown +++ b/source/_integrations/keenetic_ndms2.markdown @@ -1,6 +1,6 @@ --- -title: "Keenetic NDMS2 Routers" -description: "Instructions on how to integrate Keenetic NDMS2 Routers into Home Assistant." +title: Keenetic NDMS2 Routers +description: Instructions on how to integrate Keenetic NDMS2 Routers into Home Assistant. logo: keenetic.png ha_category: - Presence Detection diff --git a/source/_integrations/keyboard.markdown b/source/_integrations/keyboard.markdown index 9443bd255fe..6731612aa71 100644 --- a/source/_integrations/keyboard.markdown +++ b/source/_integrations/keyboard.markdown @@ -1,6 +1,6 @@ --- -title: "Keyboard" -description: "Instructions on how to simulate key presses with Home Assistant." +title: Keyboard +description: Instructions on how to simulate key presses with Home Assistant. logo: keyboard.png ha_category: - Automation diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index 39a040962ca..156af58d678 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -1,6 +1,6 @@ --- -title: "Keyboard Remote" -description: "Instructions on how to use a keyboard to remote control Home Assistant." +title: Keyboard Remote +description: Instructions on how to use a keyboard to remote control Home Assistant. logo: keyboard.png ha_category: - Other diff --git a/source/_integrations/kira.markdown b/source/_integrations/kira.markdown index 3e5eb9c3ece..88c69594478 100644 --- a/source/_integrations/kira.markdown +++ b/source/_integrations/kira.markdown @@ -1,6 +1,6 @@ --- -title: "Kira" -description: "Instructions on how to integrate Keene Electronics IR over IP modules (Kira) into Home Assistant." +title: Kira +description: Instructions on how to integrate Keene Electronics IR over IP modules (Kira) into Home Assistant. logo: keene.png ha_category: - Hub diff --git a/source/_integrations/kiwi.markdown b/source/_integrations/kiwi.markdown index 9aaa8cf5804..902b3d1d170 100644 --- a/source/_integrations/kiwi.markdown +++ b/source/_integrations/kiwi.markdown @@ -1,6 +1,6 @@ --- -title: "KIWI Lock" -description: "Instructions on how to integrate KIWI Smart Lock and Smart Entry." +title: KIWI Lock +description: Instructions on how to integrate KIWI Smart Lock and Smart Entry. logo: kiwi.png ha_category: - Lock diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index e1cbe909725..22cc7e35bae 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -1,6 +1,6 @@ --- -title: "KNX" -description: "Instructions on how to integrate KNX components with Home Assistant." +title: KNX +description: Instructions on how to integrate KNX components with Home Assistant. logo: knx.png ha_category: - Hub diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index 01e48287370..a126d29be3a 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -1,6 +1,6 @@ --- -title: "Kodi" -description: "Instructions on how to integrate Kodi into Home Assistant." +title: Kodi +description: Instructions on how to integrate Kodi into Home Assistant. logo: kodi.png ha_category: - Notifications diff --git a/source/_integrations/konnected.markdown b/source/_integrations/konnected.markdown index 4d537224d01..11587b534ad 100644 --- a/source/_integrations/konnected.markdown +++ b/source/_integrations/konnected.markdown @@ -1,13 +1,13 @@ --- -title: "Konnected" -description: "Connect wired alarm sensors and siren using the NodeMCU based Konnected Alarm Panel" +title: Konnected +description: Connect wired alarm sensors and siren using the NodeMCU based Konnected Alarm Panel logo: konnected.png ha_category: - Alarm - Binary Sensor - Switch - Sensor -ha_release: "0.70" +ha_release: '0.70' --- The `konnected` integration lets you connect wired sensors and switches to a NodeMCU ESP8226 based device running the [open source Konnected software](https://github.com/konnected-io/konnected-security). Reuse the wired sensors and siren from an old or pre-wired alarm system installation and integrate them directly into Home Assistant. @@ -296,4 +296,4 @@ This integration supports all of the built-in device classes of the generic [Bin ### Switch -The `konnected` switch platform allows you to actuate an alarm system siren, strobe light, buzzer or any other wired device using a [Konnected Alarm Panel board](https://konnected.io) or relay module and a NodeMCU ESP8266 WiFi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). \ No newline at end of file +The `konnected` switch platform allows you to actuate an alarm system siren, strobe light, buzzer or any other wired device using a [Konnected Alarm Panel board](https://konnected.io) or relay module and a NodeMCU ESP8266 WiFi module running the [open source Konnected software](https://github.com/konnected-io/konnected-security). diff --git a/source/_integrations/kwb.markdown b/source/_integrations/kwb.markdown index fca97426250..d537316786e 100644 --- a/source/_integrations/kwb.markdown +++ b/source/_integrations/kwb.markdown @@ -1,11 +1,11 @@ --- -title: "KWB Easyfire Sensor" -description: "Instructions on how to integrate the KWB Easyfire sensor into Home Assistant." +title: KWB Easyfire Sensor +description: Instructions on how to integrate the KWB Easyfire sensor into Home Assistant. logo: kwb.png ha_category: - Sensor ha_iot_class: Local Polling -ha_release: "0.40" +ha_release: '0.40' --- The `kwb` integration integrates the sensors of KWB Easyfire pellet central heating units with the Comfort3 controller (https://www.kwb.net/produkte/) into Home Assistant. diff --git a/source/_integrations/lacrosse.markdown b/source/_integrations/lacrosse.markdown index 2b2ed25f101..2e74325fd1f 100644 --- a/source/_integrations/lacrosse.markdown +++ b/source/_integrations/lacrosse.markdown @@ -1,6 +1,6 @@ --- -title: "LaCrosse Sensor" -description: "Instructions on how to integrate LaCrosse sensor data received from Jeelink into Home Assistant." +title: LaCrosse Sensor +description: Instructions on how to integrate LaCrosse sensor data received from Jeelink into Home Assistant. logo: home-assistant.png ha_category: - DIY diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index 18879c0155e..96be54019d7 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -1,6 +1,6 @@ --- -title: "LaMetric" -description: "Instructions on how to integrate LaMetric with Home Assistant." +title: LaMetric +description: Instructions on how to integrate LaMetric with Home Assistant. logo: lametric.png ha_category: - Hub diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index 075a1ab45b1..e1171839621 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -1,6 +1,6 @@ --- -title: "Lannouncer" -description: "Instructions on how to add Lannouncer notifications to Home Assistant." +title: Lannouncer +description: Instructions on how to add Lannouncer notifications to Home Assistant. logo: lannouncer.png ha_category: - Notifications diff --git a/source/_integrations/lastfm.markdown b/source/_integrations/lastfm.markdown index 307ace29909..b0b04627c5e 100644 --- a/source/_integrations/lastfm.markdown +++ b/source/_integrations/lastfm.markdown @@ -1,11 +1,11 @@ --- -title: "Last.fm" -description: "Instructions on how to integrate Last.fm sensors into Home Assistant." +title: Last.fm +description: Instructions on how to integrate Last.fm sensors into Home Assistant. logo: lastfm.png ha_category: - Social ha_iot_class: Cloud Polling -ha_release: "0.20" +ha_release: '0.20' --- 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](https://www.last.fm/). diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index dba4672fe7e..567dad5da21 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -1,6 +1,6 @@ --- -title: "Space Launch sensor" -description: "Instructions on how to integrate space launch information within Home Assistant." +title: Space Launch sensor +description: Instructions on how to integrate space launch information within Home Assistant. logo: rocket.png ha_category: - Sensor diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown index 32e73f417eb..f40ac157811 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -1,6 +1,6 @@ --- -title: "LCN" -description: "Instructions on how to integrate LCN components with Home Assistant." +title: LCN +description: Instructions on how to integrate LCN components with Home Assistant. logo: lcn.png ha_category: - Hub diff --git a/source/_integrations/lg_netcast.markdown b/source/_integrations/lg_netcast.markdown index 9ea27c03390..56a909dba3f 100644 --- a/source/_integrations/lg_netcast.markdown +++ b/source/_integrations/lg_netcast.markdown @@ -1,11 +1,11 @@ --- -title: "LG Netcast TV" -description: "Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant." +title: LG Netcast TV +description: Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant. logo: lg.png ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.20" +ha_release: '0.20' --- 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](/integrations/webostv#media-player) platform. diff --git a/source/_integrations/lg_soundbar.markdown b/source/_integrations/lg_soundbar.markdown index 53d251a50ae..4f558d84c30 100644 --- a/source/_integrations/lg_soundbar.markdown +++ b/source/_integrations/lg_soundbar.markdown @@ -1,6 +1,6 @@ --- -title: "LG Soundbars" -description: "Instructions on how to integrate LG Soundbars into Home Assistant." +title: LG Soundbars +description: Instructions on how to integrate LG Soundbars into Home Assistant. logo: lg.png ha_category: - Media Player diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index d618a331434..131b8d3d70f 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -1,6 +1,6 @@ --- -title: "Life360" -description: "Instructions how to use Life360 to track devices in Home Assistant." +title: Life360 +description: Instructions how to use Life360 to track devices in Home Assistant. logo: life360.png ha_release: 0.95 ha_config_flow: true diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index f775f12ef73..93851def4a1 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -1,6 +1,6 @@ --- -title: "LIFX" -description: "Instructions on how to integrate LIFX into Home Assistant." +title: LIFX +description: Instructions on how to integrate LIFX into Home Assistant. logo: lifx.png ha_category: - Light diff --git a/source/_integrations/lifx_cloud.markdown b/source/_integrations/lifx_cloud.markdown index 97d8b109e14..e07a5e26006 100644 --- a/source/_integrations/lifx_cloud.markdown +++ b/source/_integrations/lifx_cloud.markdown @@ -1,6 +1,6 @@ --- -title: "LIFX Cloud Scenes" -description: "Instructions on using native LIFX scenes with Home Assistant." +title: LIFX Cloud Scenes +description: Instructions on using native LIFX scenes with Home Assistant. logo: lifx.png ha_category: - Scene diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index a72f02ed95b..c8249fdcfea 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -1,6 +1,6 @@ --- -title: "Light" -description: "Instructions on how to setup your lights with Home Assistant." +title: Light +description: Instructions on how to setup your lights with Home Assistant. logo: home-assistant.png ha_category: - Light @@ -91,4 +91,3 @@ Toggles the state of one or multiple lights using [groups]({{site_root}}/integra Takes the same arguments as [`turn_on`](#service-lightturn_on) service. *Note*: If `light.toggle` is used for a group of lights, it will toggle the individual state of each light. - diff --git a/source/_integrations/lightwave.markdown b/source/_integrations/lightwave.markdown index 393cb671659..264e2ec0eb4 100644 --- a/source/_integrations/lightwave.markdown +++ b/source/_integrations/lightwave.markdown @@ -1,6 +1,6 @@ --- -title: "Lightwave" -description: "Instructions on how to integrate Lightwave devices with Home Assistant." +title: Lightwave +description: Instructions on how to integrate Lightwave devices with Home Assistant. logo: lightwave.png ha_category: - Hub diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index e5594392c16..48292275fe4 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -1,6 +1,6 @@ --- -title: "LimitlessLED" -description: "Instructions on how to setup LimitlessLED within Home Assistant." +title: LimitlessLED +description: Instructions on how to setup LimitlessLED within Home Assistant. logo: limitlessled_logo.png ha_category: - Light diff --git a/source/_integrations/linksys_smart.markdown b/source/_integrations/linksys_smart.markdown index 673e6a23ea9..1395c8894cb 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -1,6 +1,6 @@ --- -title: "Linksys Smart Wifi Router" -description: "Instructions on how to integrate Linksys Smart Wifi Router into Home Assistant." +title: Linksys Smart Wifi Router +description: Instructions on how to integrate Linksys Smart Wifi Router into Home Assistant. ha_category: - Presence Detection logo: linksys.png diff --git a/source/_integrations/linky.markdown b/source/_integrations/linky.markdown index 059187b9d34..3baea06a9a1 100644 --- a/source/_integrations/linky.markdown +++ b/source/_integrations/linky.markdown @@ -1,6 +1,6 @@ --- -title: "Linky Sensor" -description: "Instructions on how to integrate Linky consumption data within Home Assistant." +title: Linky Sensor +description: Instructions on how to integrate Linky consumption data within Home Assistant. logo: enedis.png ha_release: 0.79 ha_category: diff --git a/source/_integrations/linode.markdown b/source/_integrations/linode.markdown index 097b925111f..281c12f5ebe 100644 --- a/source/_integrations/linode.markdown +++ b/source/_integrations/linode.markdown @@ -1,6 +1,6 @@ --- -title: "Linode" -description: "Instructions on how to set up Linode within Home Assistant." +title: Linode +description: Instructions on how to set up Linode within Home Assistant. ha_category: - System Monitor - Binary Sensor diff --git a/source/_integrations/linux_battery.markdown b/source/_integrations/linux_battery.markdown index 63d5ecc4395..8b242932bce 100644 --- a/source/_integrations/linux_battery.markdown +++ b/source/_integrations/linux_battery.markdown @@ -1,6 +1,6 @@ --- -title: "Linux Battery" -description: "Instructions on how to integrate Linux Battery information into Home Assistant." +title: Linux Battery +description: Instructions on how to integrate Linux Battery information into Home Assistant. logo: linux_battery.png ha_category: - System Monitor diff --git a/source/_integrations/lirc.markdown b/source/_integrations/lirc.markdown index 43507b1df03..ab39eb36de5 100644 --- a/source/_integrations/lirc.markdown +++ b/source/_integrations/lirc.markdown @@ -1,6 +1,6 @@ --- -title: "LIRC" -description: "Instructions on how to integrate IR remotes with LIRC into Home Assistant." +title: LIRC +description: Instructions on how to integrate IR remotes with LIRC into Home Assistant. logo: lirc.gif ha_category: - Automation diff --git a/source/_integrations/litejet.markdown b/source/_integrations/litejet.markdown index 15ad5dc2e13..fb6b8c9fadc 100644 --- a/source/_integrations/litejet.markdown +++ b/source/_integrations/litejet.markdown @@ -1,6 +1,6 @@ --- -title: "LiteJet" -description: "Instructions on how to setup the LiteJet hub within Home Assistant." +title: LiteJet +description: Instructions on how to setup the LiteJet hub within Home Assistant. logo: centralite.svg ha_category: - Light diff --git a/source/_integrations/liveboxplaytv.markdown b/source/_integrations/liveboxplaytv.markdown index 26353a990a1..6310ef89ffe 100644 --- a/source/_integrations/liveboxplaytv.markdown +++ b/source/_integrations/liveboxplaytv.markdown @@ -1,6 +1,6 @@ --- -title: "Orange Livebox Play TV" -description: "Instructions on how to integrate a Livebox Play TV appliance into Home Assistant." +title: Orange Livebox Play TV +description: Instructions on how to integrate a Livebox Play TV appliance into Home Assistant. logo: orange.png ha_category: - Media Player diff --git a/source/_integrations/llamalab_automate.markdown b/source/_integrations/llamalab_automate.markdown index 6aa652104fb..5b082e41200 100644 --- a/source/_integrations/llamalab_automate.markdown +++ b/source/_integrations/llamalab_automate.markdown @@ -1,6 +1,6 @@ --- -title: "LlamaLab Automate" -description: "Instructions on how to add user notifications to Home Assistant." +title: LlamaLab Automate +description: Instructions on how to add user notifications to Home Assistant. logo: llamalab_automate.png ha_category: - Notifications diff --git a/source/_integrations/local_file.markdown b/source/_integrations/local_file.markdown index 35969d5b130..71830eb98b1 100644 --- a/source/_integrations/local_file.markdown +++ b/source/_integrations/local_file.markdown @@ -1,6 +1,6 @@ --- -title: "Local File" -description: "Instructions how to use Local File as a Camera within Home Assistant." +title: Local File +description: Instructions how to use Local File as a Camera within Home Assistant. logo: file.png ha_category: - Camera diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown index 175a7389c3f..b01bedc8af6 100644 --- a/source/_integrations/lock.markdown +++ b/source/_integrations/lock.markdown @@ -1,6 +1,6 @@ --- -title: "Locks" -description: "Instructions on how to setup your locks with Home Assistant." +title: Locks +description: Instructions on how to setup your locks with Home Assistant. logo: home-assistant.png ha_category: - Lock diff --git a/source/_integrations/lockitron.markdown b/source/_integrations/lockitron.markdown index 045e314c8f5..4bc5534e5b8 100644 --- a/source/_integrations/lockitron.markdown +++ b/source/_integrations/lockitron.markdown @@ -1,6 +1,6 @@ --- -title: "Lockitron Lock" -description: "Instructions on how to integrate Lockitron locks into Home Assistant." +title: Lockitron Lock +description: Instructions on how to integrate Lockitron locks into Home Assistant. logo: lockitron.png ha_category: - Lock diff --git a/source/_integrations/logbook.markdown b/source/_integrations/logbook.markdown index 72c4c7263c3..23d20b8c37b 100644 --- a/source/_integrations/logbook.markdown +++ b/source/_integrations/logbook.markdown @@ -1,6 +1,6 @@ --- -title: "Logbook" -description: "Instructions on how to enable the logbook integration for Home Assistant." +title: Logbook +description: Instructions on how to enable the logbook integration for Home Assistant. logo: logbook.png ha_category: - History diff --git a/source/_integrations/logentries.markdown b/source/_integrations/logentries.markdown index f6b9092429b..bb4f4f7a4dc 100644 --- a/source/_integrations/logentries.markdown +++ b/source/_integrations/logentries.markdown @@ -1,6 +1,6 @@ --- -title: "Logentries" -description: "Send events to Logentries." +title: Logentries +description: Send events to Logentries. logo: logentries.png ha_category: - History @@ -25,4 +25,3 @@ token: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/logger.markdown b/source/_integrations/logger.markdown index 2d59c0b2384..7f1f25bb48c 100644 --- a/source/_integrations/logger.markdown +++ b/source/_integrations/logger.markdown @@ -1,6 +1,6 @@ --- -title: "Logger" -description: "Instructions on how to enable the logger integration for Home Assistant." +title: Logger +description: Instructions on how to enable the logger integration for Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/logi_circle.markdown b/source/_integrations/logi_circle.markdown index a2359ab1cbe..98947892c9d 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -1,6 +1,6 @@ --- -title: "Logi Circle" -description: "Instructions on how to integrate your Logi Circle cameras within Home Assistant." +title: Logi Circle +description: Instructions on how to integrate your Logi Circle cameras within Home Assistant. logo: logi_circle.png ha_category: - Camera diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown index 2fc19f24c74..ababc974b20 100644 --- a/source/_integrations/london_air.markdown +++ b/source/_integrations/london_air.markdown @@ -1,6 +1,6 @@ --- -title: "London Air Quality" -description: "Display the current status of London air quality by area and pollution type." +title: London Air Quality +description: Display the current status of London air quality by area and pollution type. logo: waqi.png ha_category: - Health diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown index 0e459945455..cb2e1ecdb23 100644 --- a/source/_integrations/london_underground.markdown +++ b/source/_integrations/london_underground.markdown @@ -1,6 +1,6 @@ --- -title: "London Underground" -description: "Display the current status of London underground & overground lines within Home Assistant." +title: London Underground +description: Display the current status of London underground & overground lines within Home Assistant. logo: london_underground.png ha_category: - Transport diff --git a/source/_integrations/loopenergy.markdown b/source/_integrations/loopenergy.markdown index d452f03e15b..c56d4ef8fb4 100644 --- a/source/_integrations/loopenergy.markdown +++ b/source/_integrations/loopenergy.markdown @@ -1,6 +1,6 @@ --- -title: "Loop Energy" -description: "Instructions on how to integrate Loop Energy devices within Home Assistant." +title: Loop Energy +description: Instructions on how to integrate Loop Energy devices within Home Assistant. logo: loop.png ha_category: - Energy diff --git a/source/_integrations/luci.markdown b/source/_integrations/luci.markdown index 5a93b535e6e..b89764bb979 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -1,6 +1,6 @@ --- -title: "OpenWRT (luci)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." +title: OpenWRT (luci) +description: Instructions on how to integrate OpenWRT routers into Home Assistant. logo: openwrt.png ha_category: - Presence Detection diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index 45e442ae717..acaf4bc1930 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -1,6 +1,6 @@ --- -title: "Luftdaten" -description: "Instructions on how to setup Luftdaten sensors in Home Assistant." +title: Luftdaten +description: Instructions on how to setup Luftdaten sensors in Home Assistant. logo: luftdaten.png ha_category: - Health diff --git a/source/_integrations/lupusec.markdown b/source/_integrations/lupusec.markdown index f23d4eee5f9..6e67c4d0c41 100644 --- a/source/_integrations/lupusec.markdown +++ b/source/_integrations/lupusec.markdown @@ -1,6 +1,6 @@ --- -title: "Lupus Electronics Home Security" -description: "Instructions on integrating Lupusec home security with Home Assistant." +title: Lupus Electronics Home Security +description: Instructions on integrating Lupusec home security with Home Assistant. logo: lupusec.png ha_category: - Hub diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown index e1c8c7b65b8..71db1abe85d 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -1,6 +1,6 @@ --- -title: "Lutron" -description: "Instructions on how to use Lutron devices with Home Assistant." +title: Lutron +description: Instructions on how to use Lutron devices with Home Assistant. logo: lutron.png ha_category: - Hub diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 38f2ee71e8d..3b35920e0f8 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -1,6 +1,6 @@ --- -title: "Lutron Caseta" -description: "Instructions on how to use Lutron Caseta devices with Home Assistant." +title: Lutron Caseta +description: Instructions on how to use Lutron Caseta devices with Home Assistant. logo: lutron.png ha_category: - Hub diff --git a/source/_integrations/lw12wifi.markdown b/source/_integrations/lw12wifi.markdown index 8fb1875028c..096c753f276 100644 --- a/source/_integrations/lw12wifi.markdown +++ b/source/_integrations/lw12wifi.markdown @@ -1,6 +1,6 @@ --- -title: "Lagute LW-12" -description: "Instructions on how to setup Lagute LW-12 Wifi LED controller within Home Assistant." +title: Lagute LW-12 +description: Instructions on how to setup Lagute LW-12 Wifi LED controller within Home Assistant. ha_category: - Light ha_iot_class: Local Polling @@ -37,4 +37,3 @@ name: type: string default: LW-12 FC {% endconfiguration %} - diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown index 44ac42bb65d..16fd5478da2 100644 --- a/source/_integrations/lyft.markdown +++ b/source/_integrations/lyft.markdown @@ -1,6 +1,6 @@ --- -title: "Lyft Sensor" -description: "How to integrate Lyft in Home Assistant" +title: Lyft Sensor +description: How to integrate Lyft in Home Assistant logo: lyft.png ha_category: - Transport diff --git a/source/_integrations/magicseaweed.markdown b/source/_integrations/magicseaweed.markdown index 7c4821d7139..da358d3a1af 100644 --- a/source/_integrations/magicseaweed.markdown +++ b/source/_integrations/magicseaweed.markdown @@ -1,6 +1,6 @@ --- -title: "Magicseaweed Sensor" -description: "How to integrate Magicseaweed within Home Assistant." +title: Magicseaweed Sensor +description: How to integrate Magicseaweed within Home Assistant. logo: magicseaweed.png ha_category: - Sensor diff --git a/source/_integrations/mailbox.markdown b/source/_integrations/mailbox.markdown index 9ce6fdbaa37..5cf36250816 100644 --- a/source/_integrations/mailbox.markdown +++ b/source/_integrations/mailbox.markdown @@ -1,6 +1,6 @@ --- -title: "Mailbox" -description: "Instructions on how to setup your mailboxes with Home Assistant." +title: Mailbox +description: Instructions on how to setup your mailboxes with Home Assistant. ha_release: 0.51 --- diff --git a/source/_integrations/mailgun.markdown b/source/_integrations/mailgun.markdown index 8d9ea72236d..225fe311700 100644 --- a/source/_integrations/mailgun.markdown +++ b/source/_integrations/mailgun.markdown @@ -1,6 +1,6 @@ --- -title: "Mailgun" -description: "Instructions on how to add Mailgun mail notifications to Home Assistant." +title: Mailgun +description: Instructions on how to add Mailgun mail notifications to Home Assistant. logo: mailgun.png ha_category: - Notifications @@ -116,4 +116,4 @@ automation: images: - /home/pi/pic_test1.png - /home/pi/pic_test2.png -``` \ No newline at end of file +``` diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index 233b2c91f98..fcc89223336 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -1,6 +1,6 @@ --- -title: "Manual Alarm Control Panel" -description: "Instructions on how to integrate manual alarms into Home Assistant." +title: Manual Alarm Control Panel +description: Instructions on how to integrate manual alarms into Home Assistant. logo: home-assistant.png ha_category: - Alarm diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index eeb69babf4e..b518114ec21 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -1,10 +1,10 @@ --- -title: "Manual Alarm Control Panel with MQTT Support" -description: "Instructions on how to integrate manual alarms into Home Assistant with MQTT support." +title: Manual Alarm Control Panel with MQTT Support +description: Instructions on how to integrate manual alarms into Home Assistant with MQTT support. logo: home-assistant.png ha_category: - Alarm -ha_release: "0.50" +ha_release: '0.50' --- The `mqtt` platform extends the [manual alarm](/integrations/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/_integrations/map.markdown b/source/_integrations/map.markdown index 294f544bbc8..b41422c7fed 100644 --- a/source/_integrations/map.markdown +++ b/source/_integrations/map.markdown @@ -1,6 +1,6 @@ --- -title: "Map" -description: "Offers a map to show tracked devices." +title: Map +description: Offers a map to show tracked devices. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/marytts.markdown b/source/_integrations/marytts.markdown index 84a13c4c6a4..37ff38238ad 100644 --- a/source/_integrations/marytts.markdown +++ b/source/_integrations/marytts.markdown @@ -1,6 +1,6 @@ --- -title: "MaryTTS" -description: "Instructions on how to setup MaryTTS with Home Assistant." +title: MaryTTS +description: Instructions on how to setup MaryTTS with Home Assistant. logo: marytts.png ha_category: - Text-to-speech diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index d779b7ab17f..575c7066058 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -1,6 +1,6 @@ --- -title: "Mastodon" -description: "Instructions on how to add Instapush notifications to Home Assistant." +title: Mastodon +description: Instructions on how to add Instapush notifications to Home Assistant. logo: mastodon.png ha_category: - Notifications diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index 08f0877f0e3..d0abc606304 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -1,6 +1,6 @@ --- -title: "Matrix" -description: "Matrix chatbot support" +title: Matrix +description: Matrix chatbot support logo: matrix.png ha_category: - Hub @@ -167,4 +167,4 @@ default_room: The target room has to be precreated, the room id can be obtained from the rooms settings dialog. Rooms by default have a canonical id of the form `"!:homeserver.tld"`, but can also be allocated aliases like `"#roomname:homeserver.tld"`. Make sure to use quotes around the room id or alias to escape special characters (`!`, and `#`) in YAML. The notifying account may need to be invited to the room, depending on the individual rooms policies. -To use notifications, please see the [getting started with automation page](/getting-started/automation/). \ No newline at end of file +To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index 5916c439820..e3876099658 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -1,11 +1,11 @@ --- -title: "eQ-3 MAX! Cube" -description: "Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube." +title: eQ-3 MAX! Cube +description: Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube. logo: maxcube.png ha_category: - Climate - Binary Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling --- diff --git a/source/_integrations/mcp23017.markdown b/source/_integrations/mcp23017.markdown index 35a241040bb..620b31ee8eb 100644 --- a/source/_integrations/mcp23017.markdown +++ b/source/_integrations/mcp23017.markdown @@ -1,6 +1,6 @@ --- -title: "MCP23017 I2C GPIO expander" -description: "Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant." +title: MCP23017 I2C GPIO expander +description: Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown index 5aeabfe89ba..adfb66cb403 100644 --- a/source/_integrations/media_extractor.markdown +++ b/source/_integrations/media_extractor.markdown @@ -1,6 +1,6 @@ --- -title: "Media Extractor" -description: "Instructions on how to integrate the Media Extractor into Home Assistant." +title: Media Extractor +description: Instructions on how to integrate the Media Extractor into Home Assistant. logo: home-assistant.png ha_category: - Media Player diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 43a14095c69..9454127bb36 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -1,6 +1,6 @@ --- -title: "Media Player" -description: "Instructions on how to setup your media players with Home Assistant." +title: Media Player +description: Instructions on how to setup your media players with Home Assistant. logo: home-assistant.png ha_category: - Media Player @@ -72,5 +72,3 @@ Currently only supported on [Spotify](/integrations/spotify), [MPD](/integration | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| | `shuffle` | no | `true`/`false` for enabling/disabling shuffle | - - diff --git a/source/_integrations/mediaroom.markdown b/source/_integrations/mediaroom.markdown index 49ca190d24e..f5a5ca44bd3 100644 --- a/source/_integrations/mediaroom.markdown +++ b/source/_integrations/mediaroom.markdown @@ -1,6 +1,6 @@ --- -title: "Mediaroom" -description: "Instructions on how to integrate Mediaroom Set-Top Boxes into Home Assistant." +title: Mediaroom +description: Instructions on how to integrate Mediaroom Set-Top Boxes into Home Assistant. logo: mediaroom.png ha_category: - Media Player diff --git a/source/_integrations/melissa.markdown b/source/_integrations/melissa.markdown index 9f3303f53fe..cd850d9421b 100644 --- a/source/_integrations/melissa.markdown +++ b/source/_integrations/melissa.markdown @@ -1,6 +1,6 @@ --- -title: "Melissa" -description: "Instructions on how to integrate Melissa Climate into Home Assistant." +title: Melissa +description: Instructions on how to integrate Melissa Climate into Home Assistant. logo: mclimate.png ha_category: - Hub diff --git a/source/_integrations/meraki.markdown b/source/_integrations/meraki.markdown index 0991e80739c..84e3f80a1cf 100644 --- a/source/_integrations/meraki.markdown +++ b/source/_integrations/meraki.markdown @@ -1,10 +1,10 @@ --- -title: "Meraki" -description: "Instructions on how to integrate Meraki-based presence detection into Home Assistant." +title: Meraki +description: Instructions on how to integrate Meraki-based presence detection into Home Assistant. logo: meraki.png ha_category: - Presence Detection -ha_release: "0.60" +ha_release: '0.60' --- Use your Meraki AP as device tracker. Note that Meraki will see all devices, not only connected to the network. diff --git a/source/_integrations/message_bird.markdown b/source/_integrations/message_bird.markdown index 62f25187aba..20cd621a85f 100644 --- a/source/_integrations/message_bird.markdown +++ b/source/_integrations/message_bird.markdown @@ -1,6 +1,6 @@ --- -title: "MessageBird" -description: "Instructions on how to add user notifications to Home Assistant." +title: MessageBird +description: Instructions on how to add user notifications to Home Assistant. logo: message_bird.png ha_category: - Notifications diff --git a/source/_integrations/met.markdown b/source/_integrations/met.markdown index 12d8428ca3e..bbd6a1c9d1d 100644 --- a/source/_integrations/met.markdown +++ b/source/_integrations/met.markdown @@ -1,6 +1,6 @@ --- -title: "Met.no" -description: "Instructions on how to integrate Met.no within Home Assistant." +title: Met.no +description: Instructions on how to integrate Met.no within Home Assistant. logo: metno.png ha_category: - Weather diff --git a/source/_integrations/meteo_france.markdown b/source/_integrations/meteo_france.markdown index a412eb6c4c6..6979a314974 100644 --- a/source/_integrations/meteo_france.markdown +++ b/source/_integrations/meteo_france.markdown @@ -1,6 +1,6 @@ --- -title: "Météo-France" -description: "Instructions on how to integrate Météo-France within Home Assistant." +title: Météo-France +description: Instructions on how to integrate Météo-France within Home Assistant. logo: meteo-france.png ha_release: 0.89 ha_iot_class: Cloud Polling diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index af0ac9d0895..3f7324c827a 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -1,6 +1,6 @@ --- title: MeteoAlarm Sensor -description: "Instructions on how to set up MeteoAlarm binary sensors within Home Assistant." +description: Instructions on how to set up MeteoAlarm binary sensors within Home Assistant. logo: meteoalarm.png ha_category: Binary Sensor ha_release: 0.93 diff --git a/source/_integrations/metoffice.markdown b/source/_integrations/metoffice.markdown index 937aecb7f32..3b8f26a4d6c 100644 --- a/source/_integrations/metoffice.markdown +++ b/source/_integrations/metoffice.markdown @@ -1,6 +1,6 @@ --- -title: "Met Office" -description: "Instructions on how to integrate Met Office weather conditions into Home Assistant." +title: Met Office +description: Instructions on how to integrate Met Office weather conditions into Home Assistant. logo: metoffice.jpg ha_category: - Weather diff --git a/source/_integrations/mfi.markdown b/source/_integrations/mfi.markdown index e3506cd10f3..f17d9b23f89 100644 --- a/source/_integrations/mfi.markdown +++ b/source/_integrations/mfi.markdown @@ -1,6 +1,6 @@ --- -title: "mFi" -description: "Instructions on how to integrate mFi within Home Assistant." +title: mFi +description: Instructions on how to integrate mFi within Home Assistant. logo: ubiquiti.png ha_category: - Network diff --git a/source/_integrations/mhz19.markdown b/source/_integrations/mhz19.markdown index e5e3765f1ca..4cd801814c0 100644 --- a/source/_integrations/mhz19.markdown +++ b/source/_integrations/mhz19.markdown @@ -1,6 +1,6 @@ --- -title: "MH-Z19 CO2 Sensor" -description: "Instructions on how to integrate the MH-Z19 CO2 sensor with Home Assistant." +title: MH-Z19 CO2 Sensor +description: Instructions on how to integrate the MH-Z19 CO2 sensor with Home Assistant. logo: mhz19_logo.png ha_category: - DIY diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 1d2556defbe..5d529f21221 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -1,6 +1,6 @@ --- -title: "Microsoft Text-to-Speech" -description: "Instructions on how to set up Microsoft Text-to-Speech with Home Assistant." +title: Microsoft Text-to-Speech +description: Instructions on how to set up Microsoft Text-to-Speech with Home Assistant. logo: microsoft.png ha_category: - Text-to-speech diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown index 02f1c347e31..512cdf252c4 100644 --- a/source/_integrations/microsoft_face.markdown +++ b/source/_integrations/microsoft_face.markdown @@ -1,6 +1,6 @@ --- -title: "Microsoft Face" -description: "Instructions on how to integrate Microsoft Face integration into Home Assistant." +title: Microsoft Face +description: Instructions on how to integrate Microsoft Face integration into Home Assistant. logo: microsoft.png ha_category: - Image Processing diff --git a/source/_integrations/microsoft_face_detect.markdown b/source/_integrations/microsoft_face_detect.markdown index c8956eb5a20..44ea10d97a7 100644 --- a/source/_integrations/microsoft_face_detect.markdown +++ b/source/_integrations/microsoft_face_detect.markdown @@ -1,6 +1,6 @@ --- -title: "Microsoft Face Detect" -description: "Instructions on how to integrate Microsoft Face Detect into Home Assistant." +title: Microsoft Face Detect +description: Instructions on how to integrate Microsoft Face Detect into Home Assistant. logo: microsoft.png ha_category: - Image Processing diff --git a/source/_integrations/microsoft_face_identify.markdown b/source/_integrations/microsoft_face_identify.markdown index 52fe8e5a305..da2b371a135 100644 --- a/source/_integrations/microsoft_face_identify.markdown +++ b/source/_integrations/microsoft_face_identify.markdown @@ -1,6 +1,6 @@ --- -title: "Microsoft Face Identify" -description: "Instructions on how to integrate Microsoft Face Identify into Home Assistant." +title: Microsoft Face Identify +description: Instructions on how to integrate Microsoft Face Identify into Home Assistant. logo: microsoft.png ha_category: - Image Processing diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown index 2a7a6c39e28..754b2e13404 100644 --- a/source/_integrations/miflora.markdown +++ b/source/_integrations/miflora.markdown @@ -1,6 +1,6 @@ --- -title: "Mi Flora plant sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." +title: Mi Flora plant sensor +description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. logo: miflora.png ha_category: - Environment diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index 3f04f43c66f..f23d31212bf 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -1,6 +1,6 @@ --- -title: "MikroTik" -description: "Instructions on how to integrate MikroTik/RouterOS based devices into Home Assistant." +title: MikroTik +description: Instructions on how to integrate MikroTik/RouterOS based devices into Home Assistant. logo: mikrotik.png ha_category: - Hub diff --git a/source/_integrations/mill.markdown b/source/_integrations/mill.markdown index 9c38fd6a74a..318d7047393 100644 --- a/source/_integrations/mill.markdown +++ b/source/_integrations/mill.markdown @@ -1,6 +1,6 @@ --- -title: "Mill heater" -description: "Instructions on how to integrate Mill heater into Home Assistant." +title: Mill heater +description: Instructions on how to integrate Mill heater into Home Assistant. logo: mill.png ha_category: - Climate diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 7c445df0cb4..50b114c5743 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -1,6 +1,6 @@ --- -title: "Min/max Sensor" -description: "Instructions on how to integrate min/max sensors into Home Assistant." +title: Min/max Sensor +description: Instructions on how to integrate min/max sensors into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown index e4bba03e2ea..6f645e8b3f1 100644 --- a/source/_integrations/minio.markdown +++ b/source/_integrations/minio.markdown @@ -1,6 +1,6 @@ --- -title: "Minio" -description: "Integration for interacting with Minio object storage." +title: Minio +description: Integration for interacting with Minio object storage. logo: minio.png ha_category: Utility ha_iot_class: Cloud Push diff --git a/source/_integrations/mitemp_bt.markdown b/source/_integrations/mitemp_bt.markdown index 88551f45fa3..d19e7027fea 100644 --- a/source/_integrations/mitemp_bt.markdown +++ b/source/_integrations/mitemp_bt.markdown @@ -1,6 +1,6 @@ --- -title: "Xiaomi BLE Temperature and Humidity sensor" -description: "Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant." +title: Xiaomi BLE Temperature and Humidity sensor +description: Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant. logo: xiaomi.png ha_category: - DIY diff --git a/source/_integrations/mjpeg.markdown b/source/_integrations/mjpeg.markdown index 33383a68061..f094838c506 100644 --- a/source/_integrations/mjpeg.markdown +++ b/source/_integrations/mjpeg.markdown @@ -1,6 +1,6 @@ --- -title: "Generic MJPEG IP Camera" -description: "Instructions on how to integrate IP cameras within Home Assistant." +title: Generic MJPEG IP Camera +description: Instructions on how to integrate IP cameras within Home Assistant. logo: home-assistant.png ha_category: - Camera diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index b330d52d4f0..d377de0fdbd 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -1,9 +1,9 @@ --- -title: "Mobile App" -description: "The Mobile App integration allows a generic platform for integrating with mobile apps." +title: Mobile App +description: The Mobile App integration allows a generic platform for integrating with mobile apps. logo: home-assistant.png ha_category: - - "Other" + - Other ha_release: 0.89 ha_qa_scale: internal --- diff --git a/source/_integrations/mochad.markdown b/source/_integrations/mochad.markdown index d704396e930..73d6d43548a 100644 --- a/source/_integrations/mochad.markdown +++ b/source/_integrations/mochad.markdown @@ -1,6 +1,6 @@ --- -title: "Mochad" -description: "Instructions on how to integrate Mochad into Home Assistant." +title: Mochad +description: Instructions on how to integrate Mochad into Home Assistant. ha_category: - Hub - Light @@ -115,4 +115,4 @@ comm_type: required: false default: pl type: string -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 33617d0fc2d..78ce4162bfb 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -1,6 +1,6 @@ --- -title: "Modbus" -description: "Instructions on how to integrate Modbus within Home Assistant." +title: Modbus +description: Instructions on how to integrate Modbus within Home Assistant. logo: modbus.png ha_category: - Hub @@ -8,7 +8,6 @@ ha_release: pre 0.7 ha_iot_class: Local Push --- - [Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable logic controller). It currently supports sensors and switches which can be controlled over serial, TCP, and UDP connections. diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown index cf395ee921e..9e5b4de6a43 100644 --- a/source/_integrations/modem_callerid.markdown +++ b/source/_integrations/modem_callerid.markdown @@ -1,9 +1,9 @@ --- -title: "Caller ID Sensor" -description: "Instructions on how to integrate the Caller ID sensor into Home Assistant." +title: Caller ID Sensor +description: Instructions on how to integrate the Caller ID sensor into Home Assistant. ha_category: - Sensor -ha_release: "0.40" +ha_release: '0.40' ha_iot_class: Local Polling --- diff --git a/source/_integrations/mold_indicator.markdown b/source/_integrations/mold_indicator.markdown index c714613d7fa..95facaae0cf 100644 --- a/source/_integrations/mold_indicator.markdown +++ b/source/_integrations/mold_indicator.markdown @@ -1,10 +1,10 @@ --- -title: "Mold Indicator" -description: "How to use the mold growth indication integration in Home Assistant" +title: Mold Indicator +description: How to use the mold growth indication integration in Home Assistant logo: home-assistant.png ha_category: - Environment -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Local Polling ha_qa_scale: internal --- diff --git a/source/_integrations/monoprice.markdown b/source/_integrations/monoprice.markdown index 6abacd00446..52a0325d928 100644 --- a/source/_integrations/monoprice.markdown +++ b/source/_integrations/monoprice.markdown @@ -1,6 +1,6 @@ --- -title: "Monoprice 6-Zone Amplifier" -description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant." +title: Monoprice 6-Zone Amplifier +description: Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant. logo: monoprice.svg ha_category: - Media Player diff --git a/source/_integrations/moon.markdown b/source/_integrations/moon.markdown index 494a66bdcf9..33701c1601b 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -1,6 +1,6 @@ --- -title: "Moon Sensor" -description: "Instructions on how to integrate the moon sensor into Home Assistant." +title: Moon Sensor +description: Instructions on how to integrate the moon sensor into Home Assistant. logo: home-assistant.png ha_category: - Environment diff --git a/source/_integrations/mopar.markdown b/source/_integrations/mopar.markdown index 22d6a67af75..ef58fe9ec3f 100644 --- a/source/_integrations/mopar.markdown +++ b/source/_integrations/mopar.markdown @@ -1,6 +1,6 @@ --- -title: "Mopar" -description: "Instructions on how to integrate Mopar vehicles into Home Assistant." +title: Mopar +description: Instructions on how to integrate Mopar vehicles into Home Assistant. logo: mopar.png ha_category: - Car diff --git a/source/_integrations/mpchc.markdown b/source/_integrations/mpchc.markdown index f0877c57fe4..c02a9f0a07b 100644 --- a/source/_integrations/mpchc.markdown +++ b/source/_integrations/mpchc.markdown @@ -1,6 +1,6 @@ --- -title: "MPC-HC" -description: "Instructions on how to integrate MPC-HC into Home Assistant." +title: MPC-HC +description: Instructions on how to integrate MPC-HC into Home Assistant. logo: mpchc.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: 0.25 ha_iot_class: Local Polling --- - The `mpchc` platform allows you to connect a [Media Player Classic Home Cinema](https://mpc-hc.org/) to Home Assistant. It will allow you to see the current playing item, and respond to changes in the player's state. For this integration to function, you will need to enable the Web Interface in the MPC-HC options dialog. diff --git a/source/_integrations/mpd.markdown b/source/_integrations/mpd.markdown index 754a5f697db..159fea1a597 100644 --- a/source/_integrations/mpd.markdown +++ b/source/_integrations/mpd.markdown @@ -1,6 +1,6 @@ --- -title: "Music Player Daemon (MPD)" -description: "Instructions on how to integrate Music Player Daemon into Home Assistant." +title: Music Player Daemon (MPD) +description: Instructions on how to integrate Music Player Daemon into Home Assistant. logo: mpd.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: pre 0.7 ha_iot_class: Local Polling --- - The `mpd` platform allows you to control a [Music Player Daemon](https://www.musicpd.org/) from Home Assistant. Unfortunately you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. Even though no playlist manipulation is possible, it is possible to use the play_media service to load an existing saved playlist as part of an automation or scene. @@ -61,4 +60,3 @@ relaxdeck: ``` This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://docs.mopidy.com/en/latest/ext/mpd/) as used by [Pi MusicBox](https://www.pimusicbox.com/). - diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 7e710f048d5..b74f44a143e 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -1,6 +1,6 @@ --- -title: "MQTT" -description: "Instructions on how to setup MQTT within Home Assistant." +title: MQTT +description: Instructions on how to setup MQTT within Home Assistant. logo: mqtt.png ha_category: - Hub @@ -46,4 +46,3 @@ This allows you to connect to the MQTT broker with user `homeassistant` and pass - [Testing your setup](/docs/mqtt/testing/) - [Logging](/docs/mqtt/logging/) - [Processing JSON](/docs/mqtt/processing_json/) - diff --git a/source/_integrations/mqtt_eventstream.markdown b/source/_integrations/mqtt_eventstream.markdown index b4216bf71c3..0029193b9c1 100644 --- a/source/_integrations/mqtt_eventstream.markdown +++ b/source/_integrations/mqtt_eventstream.markdown @@ -1,6 +1,6 @@ --- -title: "MQTT Eventstream" -description: "Instructions on how to setup MQTT eventstream within Home Assistant." +title: MQTT Eventstream +description: Instructions on how to setup MQTT eventstream within Home Assistant. logo: mqtt.png ha_category: - Other diff --git a/source/_integrations/mqtt_json.markdown b/source/_integrations/mqtt_json.markdown index 651a77f443e..1c54aa750f7 100644 --- a/source/_integrations/mqtt_json.markdown +++ b/source/_integrations/mqtt_json.markdown @@ -1,6 +1,6 @@ --- -title: "JSON MQTT Device Tracker" -description: "Instructions on how to use JSON MQTT to track devices in Home Assistant." +title: JSON MQTT Device Tracker +description: Instructions on how to use JSON MQTT to track devices in Home Assistant. logo: mqtt.png ha_category: - Presence Detection diff --git a/source/_integrations/mqtt_room.markdown b/source/_integrations/mqtt_room.markdown index 55d3a044adc..50dcf3d21be 100644 --- a/source/_integrations/mqtt_room.markdown +++ b/source/_integrations/mqtt_room.markdown @@ -1,6 +1,6 @@ --- -title: "MQTT Room Presence" -description: "Instructions on how to track room presence within Home Assistant." +title: MQTT Room Presence +description: Instructions on how to track room presence within Home Assistant. logo: mqtt.png ha_category: - Presence Detection diff --git a/source/_integrations/mqtt_statestream.markdown b/source/_integrations/mqtt_statestream.markdown index 2a4d185eb47..08ab4acd335 100644 --- a/source/_integrations/mqtt_statestream.markdown +++ b/source/_integrations/mqtt_statestream.markdown @@ -1,6 +1,6 @@ --- -title: "MQTT Statestream" -description: "Instructions on how to setup MQTT Statestream within Home Assistant." +title: MQTT Statestream +description: Instructions on how to setup MQTT Statestream within Home Assistant. logo: mqtt.png ha_category: - Other diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index 69ae8cb6c9d..e21e7ed7ba0 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -1,6 +1,6 @@ --- -title: "Microsoft Teams" -description: "Instructions on how to send a notification to a Microsoft Teams channel." +title: Microsoft Teams +description: Instructions on how to send a notification to a Microsoft Teams channel. logo: msteams.jpg ha_category: - Notifications diff --git a/source/_integrations/mvglive.markdown b/source/_integrations/mvglive.markdown index e989b4ef2ce..200ce0e556e 100644 --- a/source/_integrations/mvglive.markdown +++ b/source/_integrations/mvglive.markdown @@ -1,6 +1,6 @@ --- -title: "MVG" -description: "Instructions on how to integrate Munich public transport departure times into Home Assistant." +title: MVG +description: Instructions on how to integrate Munich public transport departure times into Home Assistant. logo: mvg.png ha_category: - Transport diff --git a/source/_integrations/mychevy.markdown b/source/_integrations/mychevy.markdown index 5827c3e2f48..eef6b219a2e 100644 --- a/source/_integrations/mychevy.markdown +++ b/source/_integrations/mychevy.markdown @@ -1,6 +1,6 @@ --- -title: "MyChevy" -description: "Instructions on how to integrate Chevy Bolt car into Home Assistant." +title: MyChevy +description: Instructions on how to integrate Chevy Bolt car into Home Assistant. logo: chevy.png ha_category: - Car diff --git a/source/_integrations/mycroft.markdown b/source/_integrations/mycroft.markdown index b8de2f32a96..30679751b75 100644 --- a/source/_integrations/mycroft.markdown +++ b/source/_integrations/mycroft.markdown @@ -1,6 +1,6 @@ --- -title: "Mycroft" -description: "Instructions on how to setup Mycroft AI within Home Assistant." +title: Mycroft +description: Instructions on how to setup Mycroft AI within Home Assistant. logo: mycroft.png ha_category: - Voice @@ -29,4 +29,4 @@ host: description: The IP address of your Mycroft instance. required: true type: string -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 54bb961895a..1306b991aad 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -1,6 +1,6 @@ --- -title: "MyQ Cover" -description: "Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant." +title: MyQ Cover +description: Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant. logo: myq.png ha_category: - Cover @@ -32,4 +32,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown index 5a000985871..38ff09885a1 100644 --- a/source/_integrations/mysensors.markdown +++ b/source/_integrations/mysensors.markdown @@ -1,6 +1,6 @@ --- -title: "MySensors" -description: "Instructions on how to integrate MySensors sensors into Home Assistant." +title: MySensors +description: Instructions on how to integrate MySensors sensors into Home Assistant. logo: mysensors.png ha_category: - DIY diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index 11fc8fec72c..b33cc69251a 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -1,6 +1,6 @@ --- -title: "myStrom WiFi Bulb" -description: "Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant." +title: myStrom WiFi Bulb +description: Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant. logo: mystrom.png ha_category: - Light @@ -213,4 +213,4 @@ sensor: unit_of_measurement: "W" value_template: "{{ state_attr('switch.office', 'current_power_w') }}" ``` -{% endraw %} \ No newline at end of file +{% endraw %} diff --git a/source/_integrations/mythicbeastsdns.markdown b/source/_integrations/mythicbeastsdns.markdown index b2e771163c0..dd2869e2481 100644 --- a/source/_integrations/mythicbeastsdns.markdown +++ b/source/_integrations/mythicbeastsdns.markdown @@ -1,6 +1,6 @@ --- -title: "Mythic Beasts DNS" -description: "Keep your mythic beasts DNS updated" +title: Mythic Beasts DNS +description: Keep your mythic beasts DNS updated ha_category: - Network ha_release: 0.85 diff --git a/source/_integrations/n26.markdown b/source/_integrations/n26.markdown index 4842c2529c2..2483522cc63 100644 --- a/source/_integrations/n26.markdown +++ b/source/_integrations/n26.markdown @@ -1,6 +1,6 @@ --- -title: "N26" -description: "Instructions on how to integrate N26 integration within Home Assistant." +title: N26 +description: Instructions on how to integrate N26 integration within Home Assistant. logo: n26.png ha_category: - Finance diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown index 64a25c3922c..00d63cf4878 100644 --- a/source/_integrations/nad.markdown +++ b/source/_integrations/nad.markdown @@ -1,6 +1,6 @@ --- -title: "NAD" -description: "Instructions on how to integrate NAD receivers into Home Assistant." +title: NAD +description: Instructions on how to integrate NAD receivers into Home Assistant. logo: nad.png ha_category: - Media Player diff --git a/source/_integrations/namecheapdns.markdown b/source/_integrations/namecheapdns.markdown index c103b04796f..e2d253b04e3 100644 --- a/source/_integrations/namecheapdns.markdown +++ b/source/_integrations/namecheapdns.markdown @@ -1,6 +1,6 @@ --- -title: "NamecheapDNS" -description: "Keep your namecheap dynamic DNS up to date" +title: NamecheapDNS +description: Keep your namecheap dynamic DNS up to date logo: namecheap.png ha_category: - Network diff --git a/source/_integrations/nanoleaf.markdown b/source/_integrations/nanoleaf.markdown index 3b22cf1b9ed..5ec505c46c2 100644 --- a/source/_integrations/nanoleaf.markdown +++ b/source/_integrations/nanoleaf.markdown @@ -1,6 +1,6 @@ --- -title: "Nanoleaf Light Panel" -description: "Instructions how to integrate Nanoleaf Light Panels into Home Assistant." +title: Nanoleaf Light Panel +description: Instructions how to integrate Nanoleaf Light Panels into Home Assistant. logo: nanoleaf_light.png ha_category: - Light diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 9654f71f0b2..49a0426393f 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -1,6 +1,6 @@ --- -title: "Neato Robotics" -description: "Instructions on how to integrate your Neato within Home Assistant." +title: Neato Robotics +description: Instructions on how to integrate your Neato within Home Assistant. logo: neato.png ha_category: - Camera diff --git a/source/_integrations/nederlandse_spoorwegen.markdown b/source/_integrations/nederlandse_spoorwegen.markdown index 7534e3d697a..29f619fd36f 100644 --- a/source/_integrations/nederlandse_spoorwegen.markdown +++ b/source/_integrations/nederlandse_spoorwegen.markdown @@ -1,6 +1,6 @@ --- -title: "Nederlandse Spoorwegen" -description: "Instructions on how to integrate timetable data for traveling by train in the Netherlands within Home Assistant." +title: Nederlandse Spoorwegen +description: Instructions on how to integrate timetable data for traveling by train in the Netherlands within Home Assistant. logo: nederlandse_spoorwegen.png ha_category: - Transport diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown index 5c9f09e8d0f..4be01b186f0 100644 --- a/source/_integrations/nello.markdown +++ b/source/_integrations/nello.markdown @@ -1,10 +1,9 @@ --- -title: "Nello Lock" -description: "Instructions on how to integrate Nello intercom devices." +title: Nello Lock +description: Instructions on how to integrate Nello intercom devices. logo: nello.png ha_category: - Lock - ha_release: 0.52 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown index 19f1f8b276d..494d9c20550 100644 --- a/source/_integrations/ness_alarm.markdown +++ b/source/_integrations/ness_alarm.markdown @@ -1,6 +1,6 @@ --- -title: "Ness Alarm" -description: "Instructions on how to integrate a Ness D8x/D16x alarm system with Home Assistant." +title: Ness Alarm +description: Instructions on how to integrate a Ness D8x/D16x alarm system with Home Assistant. logo: ness.png ha_category: - Alarm @@ -110,4 +110,3 @@ Trigger a panic | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `code` | No | The user code to use to trigger the panic. - diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 5b5745fc99f..2ffe57fcdd4 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -1,6 +1,6 @@ --- -title: "Nest" -description: "Instructions on how to integrate Nest into Home Assistant." +title: Nest +description: Instructions on how to integrate Nest into Home Assistant. logo: nest.png ha_category: - Hub diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown index 5e4b34ffed7..b27e8d680a5 100644 --- a/source/_integrations/netatmo.markdown +++ b/source/_integrations/netatmo.markdown @@ -1,6 +1,6 @@ --- -title: "Netatmo" -description: "Instructions on how to integrate Netatmo integration into Home Assistant." +title: Netatmo +description: Instructions on how to integrate Netatmo integration into Home Assistant. logo: netatmo.png ha_category: - Hub @@ -10,7 +10,7 @@ ha_category: - Sensor - Climate - Camera -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index 20136cdcb33..c28b7864344 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -1,6 +1,6 @@ --- -title: "Netdata" -description: "Instructions on how to integrate Netdata within Home Assistant." +title: Netdata +description: Instructions on how to integrate Netdata within Home Assistant. logo: netdata.png ha_category: - System Monitor diff --git a/source/_integrations/netgear.markdown b/source/_integrations/netgear.markdown index bae63c3fda0..5638dc9c27e 100644 --- a/source/_integrations/netgear.markdown +++ b/source/_integrations/netgear.markdown @@ -1,6 +1,6 @@ --- -title: "Netgear" -description: "Instructions on how to integrate Netgear routers into Home Assistant." +title: Netgear +description: Instructions on how to integrate Netgear routers into Home Assistant. logo: netgear.png ha_category: - Presence Detection diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown index 1835ffeb242..985bccd573b 100644 --- a/source/_integrations/netgear_lte.markdown +++ b/source/_integrations/netgear_lte.markdown @@ -1,6 +1,6 @@ --- -title: "Netgear LTE" -description: "Instructions on how to integrate your Netgear LTE modem within Home Assistant." +title: Netgear LTE +description: Instructions on how to integrate your Netgear LTE modem within Home Assistant. logo: netgear.png ha_release: 0.72 ha_category: diff --git a/source/_integrations/netio.markdown b/source/_integrations/netio.markdown index 72a54a80a1b..b0aac34ac76 100644 --- a/source/_integrations/netio.markdown +++ b/source/_integrations/netio.markdown @@ -1,6 +1,6 @@ --- -title: "Netio Switch" -description: "Instructions on how to integrate Netio switches into Home Assistant." +title: Netio Switch +description: Instructions on how to integrate Netio switches into Home Assistant. logo: netio.png ha_category: - Switch diff --git a/source/_integrations/neurio_energy.markdown b/source/_integrations/neurio_energy.markdown index 81bd24b41f9..b830823598a 100644 --- a/source/_integrations/neurio_energy.markdown +++ b/source/_integrations/neurio_energy.markdown @@ -1,6 +1,6 @@ --- -title: "Neurio" -description: "Instructions on how to integrate Neurio within Home Assistant." +title: Neurio +description: Instructions on how to integrate Neurio within Home Assistant. logo: neurio.png ha_category: - Energy diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 346ced63780..4b91aacbe5d 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -1,6 +1,6 @@ --- -title: "Public Transit (Nextbus)" -description: "Instructions on how to use public transit data from Nextbus in Home Assistant." +title: Public Transit (Nextbus) +description: Instructions on how to use public transit data from Nextbus in Home Assistant. logo: train.png ha_category: - Transport diff --git a/source/_integrations/nfandroidtv.markdown b/source/_integrations/nfandroidtv.markdown index fb9f86afae6..3fc9ccd81b3 100644 --- a/source/_integrations/nfandroidtv.markdown +++ b/source/_integrations/nfandroidtv.markdown @@ -1,6 +1,6 @@ --- -title: "Notifications for Android TV / FireTV" -description: "Notifications for Android TV / FireTV" +title: Notifications for Android TV / FireTV +description: Notifications for Android TV / FireTV logo: nfandroidtv.png ha_category: - Notifications diff --git a/source/_integrations/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown index ae7da8e3856..022da80c5ae 100644 --- a/source/_integrations/niko_home_control.markdown +++ b/source/_integrations/niko_home_control.markdown @@ -1,6 +1,6 @@ --- -title: "Niko Home Control Light" -description: "Instructions on how to integrate Niko Home Control lights into Home Assistant." +title: Niko Home Control Light +description: Instructions on how to integrate Niko Home Control lights into Home Assistant. logo: niko.png ha_category: - Light diff --git a/source/_integrations/nilu.markdown b/source/_integrations/nilu.markdown index 0cac8b53b6b..2f5f0b71d7c 100644 --- a/source/_integrations/nilu.markdown +++ b/source/_integrations/nilu.markdown @@ -1,6 +1,6 @@ --- -title: "Norwegian Institute for Air Research" -description: "Instructions on how to integrate air pollution data from NILU within Home Assistant." +title: Norwegian Institute for Air Research +description: Instructions on how to integrate air pollution data from NILU within Home Assistant. logo: nilu_logo.png ha_category: - Health diff --git a/source/_integrations/nissan_leaf.markdown b/source/_integrations/nissan_leaf.markdown index 0420bee71d5..d9e581eb295 100644 --- a/source/_integrations/nissan_leaf.markdown +++ b/source/_integrations/nissan_leaf.markdown @@ -1,6 +1,6 @@ --- -title: "Nissan Leaf" -description: "Instructions for how to integrate Nissan Leaf(s) into Home Assistant." +title: Nissan Leaf +description: Instructions for how to integrate Nissan Leaf(s) into Home Assistant. logo: nissan.png ha_category: - Car diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index e64fa16bea9..4adf50681ce 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -1,13 +1,12 @@ --- -title: "Nmap" -description: "Instructions on how to integrate Nmap into Home Assistant." +title: Nmap +description: Instructions on how to integrate Nmap into Home Assistant. logo: nmap.png ha_category: - Presence Detection ha_release: 0.7 --- - As an alternative to the router-based device tracking, it is possible to directly scan the network for devices by using Nmap. The IP addresses to scan can be specified in any format that Nmap understands, including the network-prefix notation (`192.168.1.1/24`) and the range notation (`192.168.1.1-255`).
    diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index 0b3deed7e59..a8af36e02d3 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -1,6 +1,6 @@ --- -title: "NMBS Sensor" -description: "Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant." +title: NMBS Sensor +description: Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant. logo: sncb_nmbs.gif ha_category: - Transport diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index 61a4f50d6e3..a283a1f97c7 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -1,6 +1,6 @@ --- -title: "NO-IP.com" -description: "Keep your computer registered with the NO-IP.com dynamic DNS." +title: NO-IP.com +description: Keep your computer registered with the NO-IP.com dynamic DNS. logo: noip.png ha_category: - Network diff --git a/source/_integrations/noaa_tides.markdown b/source/_integrations/noaa_tides.markdown index c9b84792a0c..c52b1f783bc 100644 --- a/source/_integrations/noaa_tides.markdown +++ b/source/_integrations/noaa_tides.markdown @@ -1,6 +1,6 @@ --- -title: "NOAA Tides" -description: "Instructions to add NOAA Tide information to Home Assistant." +title: NOAA Tides +description: Instructions to add NOAA Tide information to Home Assistant. ha_category: - Environment ha_release: 0.75 diff --git a/source/_integrations/norway_air.markdown b/source/_integrations/norway_air.markdown index babf6ddca85..66e210b9829 100644 --- a/source/_integrations/norway_air.markdown +++ b/source/_integrations/norway_air.markdown @@ -1,6 +1,6 @@ --- -title: "Norway Air Quality" -description: "Display the current status of Norway air quality." +title: Norway Air Quality +description: Display the current status of Norway air quality. logo: metno.png ha_category: - Health diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown index 6e02706c414..20a272c4814 100644 --- a/source/_integrations/notify.markdown +++ b/source/_integrations/notify.markdown @@ -1,6 +1,6 @@ --- -title: "Notifications" -description: "Instructions on how to add user notifications to Home Assistant." +title: Notifications +description: Instructions on how to add user notifications to Home Assistant. logo: home-assistant.png ha_category: - Notifications diff --git a/source/_integrations/notion.markdown b/source/_integrations/notion.markdown index 20c601549d2..6c5e80c09b9 100644 --- a/source/_integrations/notion.markdown +++ b/source/_integrations/notion.markdown @@ -1,6 +1,6 @@ --- -title: "Notion" -description: "How to integrate Notion kits within Home Assistant." +title: Notion +description: How to integrate Notion kits within Home Assistant. logo: notion.png ha_category: - Hub diff --git a/source/_integrations/nsw_fuel_station.markdown b/source/_integrations/nsw_fuel_station.markdown index 86566884e60..e448d8c561e 100644 --- a/source/_integrations/nsw_fuel_station.markdown +++ b/source/_integrations/nsw_fuel_station.markdown @@ -1,6 +1,6 @@ --- -title: "NSW Fuel Station Price Sensor" -description: "Instructions on how to integrate NSW fuel station prices into Home Assistant." +title: NSW Fuel Station Price Sensor +description: Instructions on how to integrate NSW fuel station prices into Home Assistant. logo: fuelcheck.png ha_category: - Car diff --git a/source/_integrations/nsw_rural_fire_service_feed.markdown b/source/_integrations/nsw_rural_fire_service_feed.markdown index bed72250c05..79db9ec9000 100644 --- a/source/_integrations/nsw_rural_fire_service_feed.markdown +++ b/source/_integrations/nsw_rural_fire_service_feed.markdown @@ -1,6 +1,6 @@ --- -title: "NSW Rural Fire Service Incidents" -description: "Instructions on how to integrate the NSW Rural Fire Service Incidents feed into Home Assistant." +title: NSW Rural Fire Service Incidents +description: Instructions on how to integrate the NSW Rural Fire Service Incidents feed into Home Assistant. logo: nsw-rural-fire-service.png ha_category: - Geolocation diff --git a/source/_integrations/nuheat.markdown b/source/_integrations/nuheat.markdown index 14659359816..1264d9d500d 100644 --- a/source/_integrations/nuheat.markdown +++ b/source/_integrations/nuheat.markdown @@ -1,6 +1,6 @@ --- -title: "NuHeat" -description: "Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant." +title: NuHeat +description: Instructions on how to integrate your NuHeat Signature thermostats within Home Assistant. logo: nuheat.png ha_category: - Climate diff --git a/source/_integrations/nuimo_controller.markdown b/source/_integrations/nuimo_controller.markdown index 0f808c1fab5..5e61ab57a3f 100644 --- a/source/_integrations/nuimo_controller.markdown +++ b/source/_integrations/nuimo_controller.markdown @@ -1,6 +1,6 @@ --- -title: "Nuimo controller" -description: "Instructions on how to setup and use a Nuimo device in Home Assistant." +title: Nuimo controller +description: Instructions on how to setup and use a Nuimo device in Home Assistant. logo: nuimo.png ha_category: - Hub diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index 30706cfe422..bd7e6f2b9a0 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -1,6 +1,6 @@ --- -title: "Nuki Smart Lock" -description: "Instructions on how to integrate a Nuki Smart Lock devices." +title: Nuki Smart Lock +description: Instructions on how to integrate a Nuki Smart Lock devices. logo: nuki.png ha_category: - Lock diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index 7b7dad1e9f9..a3ef59080d4 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -1,6 +1,6 @@ --- title: NUT Sensor -description: "Instructions on how to set up NUT sensors within Home Assistant." +description: Instructions on how to set up NUT sensors within Home Assistant. logo: nut.png ha_category: - System Monitor diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown index bf4c8dc200f..fb0a3912041 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -1,6 +1,6 @@ --- -title: "NWS" -description: "Instructions on how to integrate National Weather Service data within Home Assistant." +title: NWS +description: Instructions on how to integrate National Weather Service data within Home Assistant. logo: nws.png ha_category: Weather ha_release: 0.99 diff --git a/source/_integrations/nx584.markdown b/source/_integrations/nx584.markdown index d35c93faac0..cbc95125be1 100644 --- a/source/_integrations/nx584.markdown +++ b/source/_integrations/nx584.markdown @@ -1,6 +1,6 @@ --- -title: "NX584 Alarm Control Panel" -description: "Instructions on how to integrate NX584 into Home Assistant." +title: NX584 Alarm Control Panel +description: Instructions on how to integrate NX584 into Home Assistant. logo: networx.png ha_category: - Alarm @@ -107,4 +107,4 @@ binary_sensor: 2: opening 4: motion 6: moisture -``` \ No newline at end of file +``` diff --git a/source/_integrations/nzbget.markdown b/source/_integrations/nzbget.markdown index 621c9967246..f28cf8789b2 100644 --- a/source/_integrations/nzbget.markdown +++ b/source/_integrations/nzbget.markdown @@ -1,6 +1,6 @@ --- -title: "NZBGet" -description: "Instructions on how to integrate NZBGet within Home Assistant." +title: NZBGet +description: Instructions on how to integrate NZBGet within Home Assistant. ha_category: - Downloading logo: nzbget.png diff --git a/source/_integrations/oasa_telematics.markdown b/source/_integrations/oasa_telematics.markdown index c761c32c005..c196a43cf11 100644 --- a/source/_integrations/oasa_telematics.markdown +++ b/source/_integrations/oasa_telematics.markdown @@ -1,6 +1,6 @@ --- -title: "OASA Telematics" -description: "Instructions on how to integrate bus and trolley arrival data for Greek OASA Telematics within Home Assistant." +title: OASA Telematics +description: Instructions on how to integrate bus and trolley arrival data for Greek OASA Telematics within Home Assistant. logo: oasa.png ha_category: - Transport diff --git a/source/_integrations/obihai.markdown b/source/_integrations/obihai.markdown index a96b92f0b43..c52cc5622ac 100644 --- a/source/_integrations/obihai.markdown +++ b/source/_integrations/obihai.markdown @@ -1,6 +1,6 @@ --- -title: "Obihai" -description: "Instructions on how to integrate your Obihai device into Home Assistant." +title: Obihai +description: Instructions on how to integrate your Obihai device into Home Assistant. logo: obitalk.png ha_iot_class: Local Polling ha_category: diff --git a/source/_integrations/octoprint.markdown b/source/_integrations/octoprint.markdown index a3b3caf7c02..1e02df05718 100644 --- a/source/_integrations/octoprint.markdown +++ b/source/_integrations/octoprint.markdown @@ -1,6 +1,6 @@ --- -title: "OctoPrint" -description: "Instructions on how to setup the OctoPrint in Home Assistant." +title: OctoPrint +description: Instructions on how to setup the OctoPrint in Home Assistant. logo: octoprint.png ha_category: - Hub diff --git a/source/_integrations/oem.markdown b/source/_integrations/oem.markdown index 8aca1602c56..0ea4552f154 100644 --- a/source/_integrations/oem.markdown +++ b/source/_integrations/oem.markdown @@ -1,6 +1,6 @@ --- -title: "OpenEnergyMonitor WiFi Thermostat" -description: "Instructions on how to integrate an OpenEnergyMonitor thermostat with Home Assistant." +title: OpenEnergyMonitor WiFi Thermostat +description: Instructions on how to integrate an OpenEnergyMonitor thermostat with Home Assistant. logo: oem.png ha_category: - Climate diff --git a/source/_integrations/ohmconnect.markdown b/source/_integrations/ohmconnect.markdown index e01018a682b..68cb71aa4e2 100644 --- a/source/_integrations/ohmconnect.markdown +++ b/source/_integrations/ohmconnect.markdown @@ -1,7 +1,7 @@ --- -title: "OhmConnect" -description: "Documentation about the OhmConnect sensor." -logo: "ohmconnect.png" +title: OhmConnect +description: Documentation about the OhmConnect sensor. +logo: ohmconnect.png ha_category: - Energy ha_iot_class: Cloud Polling diff --git a/source/_integrations/ombi.markdown b/source/_integrations/ombi.markdown index 41d7e9a31fd..be895a0d281 100644 --- a/source/_integrations/ombi.markdown +++ b/source/_integrations/ombi.markdown @@ -1,10 +1,10 @@ --- -title: "Ombi" -description: "Instructions on how to set up the Ombi integration in Home Assistant." +title: Ombi +description: Instructions on how to set up the Ombi integration in Home Assistant. logo: ombi.png ha_category: - Sensor -ha_release: "0.100" +ha_release: '0.100' ha_iot_class: Local Polling --- diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown index 6bbc0ba483a..592c4e96367 100644 --- a/source/_integrations/onboarding.markdown +++ b/source/_integrations/onboarding.markdown @@ -1,6 +1,6 @@ --- -title: "Onboarding" -description: "This integration is responsible for providing the onboarding endpoints." +title: Onboarding +description: This integration is responsible for providing the onboarding endpoints. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index c2d1d1e3e5f..4bcbd5b5f24 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -1,6 +1,6 @@ --- -title: "One wire Sensor" -description: "Instructions on how to integrate One wire (1-wire) sensors into Home Assistant." +title: One wire Sensor +description: Instructions on how to integrate One wire (1-wire) sensors into Home Assistant. logo: onewire.png ha_category: - DIY diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index cc1067bcab9..7f5d4d87459 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -1,6 +1,6 @@ --- -title: "Onkyo" -description: "Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant." +title: Onkyo +description: Instructions on how to integrate Onkyo and some Pioneer receivers into Home Assistant. logo: onkyo.png ha_category: - Media Player diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index a4296f29070..f44cb6a911e 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -1,6 +1,6 @@ --- -title: "ONVIF Camera" -description: "Instructions on how to integrate a ONVIF camera within Home Assistant." +title: ONVIF Camera +description: Instructions on how to integrate a ONVIF camera within Home Assistant. logo: onvif.png ha_category: - Camera diff --git a/source/_integrations/openalpr_cloud.markdown b/source/_integrations/openalpr_cloud.markdown index 9ff8b1d2c5d..cea6dd46ff2 100644 --- a/source/_integrations/openalpr_cloud.markdown +++ b/source/_integrations/openalpr_cloud.markdown @@ -1,6 +1,6 @@ --- -title: "OpenALPR Cloud" -description: "Instructions on how to integrate licences plates with OpenALPR cloud into Home Assistant." +title: OpenALPR Cloud +description: Instructions on how to integrate licences plates with OpenALPR cloud into Home Assistant. logo: openalpr.png ha_category: - Image Processing diff --git a/source/_integrations/openalpr_local.markdown b/source/_integrations/openalpr_local.markdown index ece346d59ff..39d02fc2182 100644 --- a/source/_integrations/openalpr_local.markdown +++ b/source/_integrations/openalpr_local.markdown @@ -1,6 +1,6 @@ --- -title: "OpenALPR Local" -description: "Instructions on how to integrate licences plates with OpenALPR local into Home Assistant." +title: OpenALPR Local +description: Instructions on how to integrate licences plates with OpenALPR local into Home Assistant. logo: openalpr.png ha_category: - Image Processing diff --git a/source/_integrations/opencv.markdown b/source/_integrations/opencv.markdown index 8cff1ca6c88..b234fd2a2b1 100644 --- a/source/_integrations/opencv.markdown +++ b/source/_integrations/opencv.markdown @@ -1,6 +1,6 @@ --- -title: "OpenCV" -description: "Instructions on how to integrate OpenCV image processing into Home Assistant." +title: OpenCV +description: Instructions on how to integrate OpenCV image processing into Home Assistant. logo: opencv.png ha_category: - Image Processing diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index f84a21c0de1..7a6bf489760 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -1,6 +1,6 @@ --- -title: "OpenEVSE Sensor" -description: "Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant" +title: OpenEVSE Sensor +description: Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant logo: openevse.png ha_category: - Car diff --git a/source/_integrations/openexchangerates.markdown b/source/_integrations/openexchangerates.markdown index db5b2dd0ab4..8f9d67f5d28 100644 --- a/source/_integrations/openexchangerates.markdown +++ b/source/_integrations/openexchangerates.markdown @@ -1,6 +1,6 @@ --- -title: "Open Exchange Rates" -description: "Instructions on how to integrate exchange rates from https://openexchangerates.org within Home Assistant." +title: Open Exchange Rates +description: Instructions on how to integrate exchange rates from https://openexchangerates.org within Home Assistant. ha_category: - Finance logo: openexchangerates.png diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index 866df325e02..6119c151a53 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -1,6 +1,6 @@ --- -title: "OpenGarage Cover" -description: "Instructions on how to integrate OpenGarage.io covers within Home Assistant." +title: OpenGarage Cover +description: Instructions on how to integrate OpenGarage.io covers within Home Assistant. logo: opengarage.png ha_category: - DIY diff --git a/source/_integrations/openhardwaremonitor.markdown b/source/_integrations/openhardwaremonitor.markdown index 81f0809b6df..5bca886a972 100644 --- a/source/_integrations/openhardwaremonitor.markdown +++ b/source/_integrations/openhardwaremonitor.markdown @@ -1,6 +1,6 @@ --- -title: "Open Hardware Monitor Sensor" -description: "Instructions on how to integrate Open Hardware Monitor within Home Assistant." +title: Open Hardware Monitor Sensor +description: Instructions on how to integrate Open Hardware Monitor within Home Assistant. logo: openhardwaremonitor.png ha_category: - System Monitor diff --git a/source/_integrations/openhome.markdown b/source/_integrations/openhome.markdown index 9b1b66a8406..091cf4823d4 100644 --- a/source/_integrations/openhome.markdown +++ b/source/_integrations/openhome.markdown @@ -1,6 +1,6 @@ --- -title: "Linn / Openhome" -description: "Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant." +title: Linn / Openhome +description: Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant. logo: linn.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: 0.39 ha_iot_class: Local Polling --- - The `openhome` platform allows you to connect an [Openhome Compliant Renderer](http://openhome.org/) to Home Assistant such as a [Linn Products Ltd](https://www.linn.co.uk) HiFi streamer. It will allow you to control media playback, volume, source and see the current playing item. Openhome devices should be discovered by using the [the discovery component](/integrations/discovery/), their device names are taken from the name of the room configured on the device. ```yaml diff --git a/source/_integrations/opensensemap.markdown b/source/_integrations/opensensemap.markdown index e145cde47e8..57b6b00c070 100644 --- a/source/_integrations/opensensemap.markdown +++ b/source/_integrations/opensensemap.markdown @@ -1,6 +1,6 @@ --- -title: "OpenSenseMap" -description: "Instructions on how to setup openSenseMap sensors in Home Assistant." +title: OpenSenseMap +description: Instructions on how to setup openSenseMap sensors in Home Assistant. logo: opensensemap.png ha_category: - Health @@ -36,4 +36,3 @@ name: default: Station name type: string {% endconfiguration %} - diff --git a/source/_integrations/opensky.markdown b/source/_integrations/opensky.markdown index 5a09697aa2c..e0c42edada5 100644 --- a/source/_integrations/opensky.markdown +++ b/source/_integrations/opensky.markdown @@ -1,6 +1,6 @@ --- -title: "OpenSky Network" -description: "Instructions on how to integrate OpenSky Network into Home Assistant." +title: OpenSky Network +description: Instructions on how to integrate OpenSky Network into Home Assistant. logo: opensky.png ha_category: - Transport diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index 4e951f8edd2..f3bd3974f59 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -1,6 +1,6 @@ --- -title: "OpenTherm Gateway" -description: "Control your OpenTherm Gateway from Home Assistant." +title: OpenTherm Gateway +description: Control your OpenTherm Gateway from Home Assistant. logo: opentherm.png ha_category: - Hub diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index ff3488b3e46..26b51e74200 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -1,6 +1,6 @@ --- -title: "OpenUV" -description: "Instructions on how to integrate OpenUV within Home Assistant." +title: OpenUV +description: Instructions on how to integrate OpenUV within Home Assistant. logo: openuv.jpg ha_category: - Health diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index e5e1ced56a2..ee49b9c7fd9 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -1,6 +1,6 @@ --- -title: "OpenWeatherMap" -description: "Instructions on how to integrate OpenWeatherMap within Home Assistant." +title: OpenWeatherMap +description: Instructions on how to integrate OpenWeatherMap within Home Assistant. logo: openweathermap.png ha_category: - Weather diff --git a/source/_integrations/opple.markdown b/source/_integrations/opple.markdown index 0007a50341a..c31d346541d 100644 --- a/source/_integrations/opple.markdown +++ b/source/_integrations/opple.markdown @@ -1,14 +1,13 @@ --- -title: "Opple Light" -description: "Instructions on how to integrate Opple lights into Home Assistant." +title: Opple Light +description: Instructions on how to integrate Opple lights into Home Assistant. logo: opple.png ha_category: - Light -ha_release: "0.80" +ha_release: '0.80' ha_iot_class: Local Polling --- - The `opple` light platform allows you to control the state of your Opple smart light. The platform supports all Opple lights with Wi-Fi support or lights that can be controlled by the App. diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index ba6c07548b9..21068cc2497 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -1,6 +1,6 @@ --- -title: "Orange Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant." +title: Orange Pi GPIO +description: Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant. ha_category: - DIY - Binary Sensor diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown index a80d95a71bb..587f6419b1a 100644 --- a/source/_integrations/oru.markdown +++ b/source/_integrations/oru.markdown @@ -1,6 +1,6 @@ --- -title: "Orange and Rockland Utility Real-Time Energy Usage Sensor" -description: "Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant." +title: Orange and Rockland Utility Real-Time Energy Usage Sensor +description: Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant. logo: oru.png ha_release: 0.101 ha_category: diff --git a/source/_integrations/orvibo.markdown b/source/_integrations/orvibo.markdown index 75a61ff4c6e..cc493d189c3 100644 --- a/source/_integrations/orvibo.markdown +++ b/source/_integrations/orvibo.markdown @@ -1,6 +1,6 @@ --- -title: "Orvibo Switch" -description: "Instructions on how to integrate Orvibo sockets within Home Assistant." +title: Orvibo Switch +description: Instructions on how to integrate Orvibo sockets within Home Assistant. logo: orvibo.png ha_category: - Switch diff --git a/source/_integrations/osramlightify.markdown b/source/_integrations/osramlightify.markdown index 3e1d44b11e9..ce65e1e805d 100644 --- a/source/_integrations/osramlightify.markdown +++ b/source/_integrations/osramlightify.markdown @@ -1,6 +1,6 @@ --- -title: "Osram Lightify" -description: "Instructions on how to integrate Osram Lightify into Home Assistant." +title: Osram Lightify +description: Instructions on how to integrate Osram Lightify into Home Assistant. logo: osramlightify.png ha_category: - Light diff --git a/source/_integrations/otp.markdown b/source/_integrations/otp.markdown index 25abd8a7aca..7be4464d6a1 100644 --- a/source/_integrations/otp.markdown +++ b/source/_integrations/otp.markdown @@ -1,6 +1,6 @@ --- -title: "OTP Sensor" -description: "Instructions on how to add One-Time Password (OTP) sensors into Home Assistant." +title: OTP Sensor +description: Instructions on how to add One-Time Password (OTP) sensors into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/owlet.markdown b/source/_integrations/owlet.markdown index 506fe5ca46b..d02004fb1b0 100644 --- a/source/_integrations/owlet.markdown +++ b/source/_integrations/owlet.markdown @@ -1,6 +1,6 @@ --- -title: "Owlet" -description: "Instructions on how to integrate Owlet baby monitor into Home Assistant." +title: Owlet +description: Instructions on how to integrate Owlet baby monitor into Home Assistant. logo: owlet.svg ha_category: - Health diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index d56fb57c66d..b3ff49b2256 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -1,6 +1,6 @@ --- -title: "Owntracks" -description: "Instructions on how to use Owntracks to track devices in Home Assistant." +title: Owntracks +description: Instructions on how to use Owntracks to track devices in Home Assistant. logo: owntracks.png ha_category: - Presence Detection diff --git a/source/_integrations/panasonic_bluray.markdown b/source/_integrations/panasonic_bluray.markdown index c6d230710ba..8737679e01c 100644 --- a/source/_integrations/panasonic_bluray.markdown +++ b/source/_integrations/panasonic_bluray.markdown @@ -1,6 +1,6 @@ --- -title: "Panasonic Blu-Ray Player" -description: "Instructions on how to integrate a Panasonic Blu-Ray player into Home Assistant." +title: Panasonic Blu-Ray Player +description: Instructions on how to integrate a Panasonic Blu-Ray player into Home Assistant. logo: panasonic.png ha_category: - Media Player diff --git a/source/_integrations/panasonic_viera.markdown b/source/_integrations/panasonic_viera.markdown index a02cc8cebe8..7ac2b9d288d 100644 --- a/source/_integrations/panasonic_viera.markdown +++ b/source/_integrations/panasonic_viera.markdown @@ -1,6 +1,6 @@ --- -title: "Panasonic Viera TV" -description: "Instructions on how to integrate a Panasonic Viera TV into Home Assistant." +title: Panasonic Viera TV +description: Instructions on how to integrate a Panasonic Viera TV into Home Assistant. logo: panasonic.png ha_category: - Media Player diff --git a/source/_integrations/pandora.markdown b/source/_integrations/pandora.markdown index 9010ed29668..4cc4b62b2e3 100644 --- a/source/_integrations/pandora.markdown +++ b/source/_integrations/pandora.markdown @@ -1,6 +1,6 @@ --- -title: "Pandora" -description: "Instructions on how to integrate Pandora radio into Home Assistant." +title: Pandora +description: Instructions on how to integrate Pandora radio into Home Assistant. logo: pandora.png ha_category: - Media Player @@ -60,4 +60,3 @@ That's it! Now you will find a media player. If you click it you will find all y

    - diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index fd2aa8176d1..44f3c08f0e3 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -1,6 +1,6 @@ --- -title: "Panel Custom" -description: "Instructions on how to add customized panels to the frontend of Home Assistant." +title: Panel Custom +description: Instructions on how to add customized panels to the frontend of Home Assistant. logo: home-assistant.png ha_category: - Front End diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index cea10eab2be..12f7d459bdf 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -1,6 +1,6 @@ --- -title: "Panel iFrame" -description: "Instructions on how to add iFrames in the frontend of Home Assistant." +title: Panel iFrame +description: Instructions on how to add iFrames in the frontend of Home Assistant. logo: home-assistant.png ha_category: - Front End @@ -8,7 +8,6 @@ ha_release: 0.25 ha_qa_scale: internal --- - The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server.
    diff --git a/source/_integrations/pcal9535a.markdown b/source/_integrations/pcal9535a.markdown index de26e82c9f9..7c3a031a5ff 100644 --- a/source/_integrations/pcal9535a.markdown +++ b/source/_integrations/pcal9535a.markdown @@ -1,6 +1,6 @@ --- -title: "PCAL9535A I2C GPIO expander" -description: "Instructions on how to integrate the PCAL9535A GPIO pin expander with I2C interface into Home Assistant." +title: PCAL9535A I2C GPIO expander +description: Instructions on how to integrate the PCAL9535A GPIO pin expander with I2C interface into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/pencom.markdown b/source/_integrations/pencom.markdown index b44b15bac1a..abbd993282a 100644 --- a/source/_integrations/pencom.markdown +++ b/source/_integrations/pencom.markdown @@ -1,6 +1,6 @@ --- -title: "Pencom" -description: "How to use Pencom Designs 8 channel relay boards." +title: Pencom +description: How to use Pencom Designs 8 channel relay boards. logo: pencom.png ha_category: - Switch diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index bb0354a7407..2a87f3fcb52 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -1,6 +1,6 @@ --- -title: "Persistent notification" -description: "Instructions on how to integrate persistent notifications into Home Assistant." +title: Persistent notification +description: Instructions on how to integrate persistent notifications into Home Assistant. logo: home-assistant.png ha_category: - Other diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown index b115523db61..af973f5811d 100644 --- a/source/_integrations/person.markdown +++ b/source/_integrations/person.markdown @@ -1,6 +1,6 @@ --- -title: "Person" -description: "Instructions on how to set up people tracking within Home Assistant." +title: Person +description: Instructions on how to set up people tracking within Home Assistant. logo: home-assistant.png ha_category: - Presence Detection @@ -97,4 +97,4 @@ customize: entity_picture: "/local/ada.jpg" ``` -See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. +See the documentation about [hosting files](/integrations/http/#hosting-files) for more information about the `www` folder. diff --git a/source/_integrations/philips_js.markdown b/source/_integrations/philips_js.markdown index a45de307f8f..9f58e01e981 100644 --- a/source/_integrations/philips_js.markdown +++ b/source/_integrations/philips_js.markdown @@ -1,6 +1,6 @@ --- -title: "Philips TV" -description: "Instructions on how to add Philips TVs to Home Assistant." +title: Philips TV +description: Instructions on how to add Philips TVs to Home Assistant. logo: philips.png ha_category: - Media Player diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index bce2f73648d..3657176c359 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -1,6 +1,6 @@ --- -title: "Pi-hole" -description: "Instructions on how to integrate Pi-hole with Home Assistant." +title: Pi-hole +description: Instructions on how to integrate Pi-hole with Home Assistant. ha_category: - System Monitor ha_iot_class: Local Polling diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index cbc6dba5528..371a50a2961 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -1,6 +1,6 @@ --- -title: "Pico Text-to-Speech" -description: "Instructions on how to setup Pico Text-to-Speech with Home Assistant." +title: Pico Text-to-Speech +description: Instructions on how to setup Pico Text-to-Speech with Home Assistant. logo: home-assistant.png ha_category: - Text-to-speech diff --git a/source/_integrations/piglow.markdown b/source/_integrations/piglow.markdown index 675d1f41633..e47e438137a 100644 --- a/source/_integrations/piglow.markdown +++ b/source/_integrations/piglow.markdown @@ -1,6 +1,6 @@ --- -title: "Piglow" -description: "Instructions on how to setup Piglow LED's within Home Assistant." +title: Piglow +description: Instructions on how to setup Piglow LED's within Home Assistant. logo: raspberry-pi.png ha_category: - DIY @@ -8,7 +8,6 @@ ha_release: 0.37 ha_iot_class: Local Polling --- - The `piglow` platform lets you control the [Piglow](https://shop.pimoroni.com/products/piglow) lights on your Raspberry Pi from within Home Assistant. ## Configuration diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index a21cb9fc815..083225103f6 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -1,6 +1,6 @@ --- -title: "Pilight" -description: "Instructions on how to setup Pilight within Home Assistant." +title: Pilight +description: Instructions on how to setup Pilight within Home Assistant. logo: pilight.png ha_category: - DIY diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 48d94f91465..c0c1670b1ea 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -1,6 +1,6 @@ --- -title: "Ping (ICMP)" -description: "Instructions on how to integrate Ping (ICMP)-based into Home Assistant." +title: Ping (ICMP) +description: Instructions on how to integrate Ping (ICMP)-based into Home Assistant. logo: home-assistant.png ha_category: - Network diff --git a/source/_integrations/pioneer.markdown b/source/_integrations/pioneer.markdown index 145b1b4ddb0..cfdb746adf8 100644 --- a/source/_integrations/pioneer.markdown +++ b/source/_integrations/pioneer.markdown @@ -1,6 +1,6 @@ --- -title: "Pioneer Network Receivers" -description: "Instructions on how to integrate a Pioneer Network Receivers into Home Assistant." +title: Pioneer Network Receivers +description: Instructions on how to integrate a Pioneer Network Receivers into Home Assistant. logo: pioneer.png ha_category: - Media Player diff --git a/source/_integrations/pjlink.markdown b/source/_integrations/pjlink.markdown index 2e3cf757324..9fbb40cc3fc 100644 --- a/source/_integrations/pjlink.markdown +++ b/source/_integrations/pjlink.markdown @@ -1,6 +1,6 @@ --- -title: "PJLink" -description: "Instructions on how to integrate PJLink enabled projectors into Home Assistant." +title: PJLink +description: Instructions on how to integrate PJLink enabled projectors into Home Assistant. logo: pjlink.png ha_category: - Media Player diff --git a/source/_integrations/plaato.markdown b/source/_integrations/plaato.markdown index 484b968dcf7..266c7fd56c8 100644 --- a/source/_integrations/plaato.markdown +++ b/source/_integrations/plaato.markdown @@ -1,6 +1,6 @@ --- -title: "Plaato Airlock" -description: "Instructions on how to integrate Plaato Airlock sensors within Home Assistant." +title: Plaato Airlock +description: Instructions on how to integrate Plaato Airlock sensors within Home Assistant. logo: plaato.png ha_release: 0.95 ha_category: diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown index 2734a0c1e1c..40b42ee960e 100644 --- a/source/_integrations/plant.markdown +++ b/source/_integrations/plant.markdown @@ -1,6 +1,6 @@ --- -title: "Plant monitor" -description: "Instructions on how to setup plant monitoring with Home Assistant." +title: Plant monitor +description: Instructions on how to setup plant monitoring with Home Assistant. logo: home-assistant.png ha_category: - Environment diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index c87fcfe043d..96bf17d7e0f 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -1,6 +1,6 @@ --- -title: "Plex" -description: "Instructions on how to integrate Plex into Home Assistant." +title: Plex +description: Instructions on how to integrate Plex into Home Assistant. logo: plex.png ha_category: - Media Player @@ -11,7 +11,6 @@ ha_iot_class: Local Push ha_config_flow: true --- - The `plex` integration allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/integrations/media_player/) and report playback status via a [Sensor](/integrations/sensor/) in Home Assistant. The Media Players will allow you to control media playback and see the current playing item. There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 6bbfcdf1149..cc01b31f5e7 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -1,6 +1,6 @@ --- -title: "Plugwise" -description: "Plugwise Climate integration." +title: Plugwise +description: Plugwise Climate integration. logo: plugwise.png ha_category: Climate ha_iot_class: Local Polling diff --git a/source/_integrations/plum_lightpad.markdown b/source/_integrations/plum_lightpad.markdown index 56cdeb279da..9cade50ec26 100644 --- a/source/_integrations/plum_lightpad.markdown +++ b/source/_integrations/plum_lightpad.markdown @@ -1,6 +1,6 @@ --- -title: "Plum Lightpad" -description: "Instructions on setting up Plum Lightpads within Home Assistant." +title: Plum Lightpad +description: Instructions on setting up Plum Lightpads within Home Assistant. ha_category: - Switch ha_iot_class: Local Push diff --git a/source/_integrations/pocketcasts.markdown b/source/_integrations/pocketcasts.markdown index 9347a5bae8b..c7c03e96729 100644 --- a/source/_integrations/pocketcasts.markdown +++ b/source/_integrations/pocketcasts.markdown @@ -1,6 +1,6 @@ --- title: Pocket Casts -description: "Instructions on how to set up Pocket Casts sensors within Home Assistant." +description: Instructions on how to set up Pocket Casts sensors within Home Assistant. logo: pocketcasts.png ha_category: - Multimedia diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown index 2c9952dc65e..925345f090b 100644 --- a/source/_integrations/point.markdown +++ b/source/_integrations/point.markdown @@ -1,6 +1,6 @@ --- -title: "Minut Point" -description: "Instructions on how to integrate Minut Point into Home Assistant." +title: Minut Point +description: Instructions on how to integrate Minut Point into Home Assistant. logo: minut.svg ha_category: - Hub diff --git a/source/_integrations/postnl.markdown b/source/_integrations/postnl.markdown index 16082f46375..d0b768c7e92 100644 --- a/source/_integrations/postnl.markdown +++ b/source/_integrations/postnl.markdown @@ -1,6 +1,6 @@ --- title: PostNL Sensor -description: "Instructions on how to set up PostNL sensors within Home Assistant." +description: Instructions on how to set up PostNL sensors within Home Assistant. logo: postnl.png ha_category: - Postal Service diff --git a/source/_integrations/prezzibenzina.markdown b/source/_integrations/prezzibenzina.markdown index 44527d1fd04..d091d792134 100644 --- a/source/_integrations/prezzibenzina.markdown +++ b/source/_integrations/prezzibenzina.markdown @@ -1,6 +1,6 @@ --- -title: "PrezziBenzina Sensor" -description: "Instructions on how to integrate PrezziBenzina sensors within Home Assistant." +title: PrezziBenzina Sensor +description: Instructions on how to integrate PrezziBenzina sensors within Home Assistant. logo: prezzibenzina.png ha_category: - Energy diff --git a/source/_integrations/proliphix.markdown b/source/_integrations/proliphix.markdown index 999d30647d9..941c007e035 100644 --- a/source/_integrations/proliphix.markdown +++ b/source/_integrations/proliphix.markdown @@ -1,6 +1,6 @@ --- -title: "Proliphix Thermostat" -description: "Instructions on how to integrate Proliphix thermostats within Home Assistant." +title: Proliphix Thermostat +description: Instructions on how to integrate Proliphix thermostats within Home Assistant. logo: proliphix.png ha_category: - Climate @@ -8,7 +8,6 @@ ha_release: 0.11 ha_iot_class: Local Polling --- - The `proliphix` climate platform let you control [Proliphix](http://www.proliphix.com) thermostat from Home Assistant. Currently supported and tested thermostats: diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index 95157c7c450..ce1b519a260 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -1,6 +1,6 @@ --- -title: "Prometheus" -description: "Record events in Prometheus." +title: Prometheus +description: Record events in Prometheus. logo: prometheus.png ha_category: - History diff --git a/source/_integrations/prowl.markdown b/source/_integrations/prowl.markdown index 6f22cfb02bb..7415395b719 100644 --- a/source/_integrations/prowl.markdown +++ b/source/_integrations/prowl.markdown @@ -1,6 +1,6 @@ --- -title: "Prowl" -description: "Instructions on how to add Prowl notifications to Home Assistant." +title: Prowl +description: Instructions on how to add Prowl notifications to Home Assistant. logo: prowl.png ha_category: - Notifications diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown index 41ab3fe76e9..117b79e42df 100644 --- a/source/_integrations/proximity.markdown +++ b/source/_integrations/proximity.markdown @@ -1,6 +1,6 @@ --- -title: "Proximity" -description: "Instructions on how to setup Proximity monitoring within Home Assistant." +title: Proximity +description: Instructions on how to setup Proximity monitoring within Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index dd997c31386..d3c26b8afff 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -1,6 +1,6 @@ --- -title: "Proxmox VE" -description: "Access your ProxmoxVE instance in Home Assistant." +title: Proxmox VE +description: Access your ProxmoxVE instance in Home Assistant. logo: proxmoxve.png ha_category: - Binary Sensor diff --git a/source/_integrations/proxy.markdown b/source/_integrations/proxy.markdown index 52e2da8b2a9..e0f1eb61cda 100644 --- a/source/_integrations/proxy.markdown +++ b/source/_integrations/proxy.markdown @@ -1,6 +1,6 @@ --- -title: "Camera Proxy" -description: "Instructions on how to integrate a camera proxy within Home Assistant." +title: Camera Proxy +description: Instructions on how to integrate a camera proxy within Home Assistant. ha_category: - Camera ha_release: 0.65 diff --git a/source/_integrations/ps4.markdown b/source/_integrations/ps4.markdown index 2e11d10cd3a..cf46b6ef2c9 100644 --- a/source/_integrations/ps4.markdown +++ b/source/_integrations/ps4.markdown @@ -1,6 +1,6 @@ --- -title: "Sony PlayStation 4" -description: "Instructions on how to integrate a Sony PlayStation 4 into Home Assistant." +title: Sony PlayStation 4 +description: Instructions on how to integrate a Sony PlayStation 4 into Home Assistant. logo: ps4.png ha_category: - Media Player diff --git a/source/_integrations/ptvsd.markdown b/source/_integrations/ptvsd.markdown index f0a42bc051a..b090d244681 100644 --- a/source/_integrations/ptvsd.markdown +++ b/source/_integrations/ptvsd.markdown @@ -1,8 +1,8 @@ --- -title: "PTVSD Debugger (Visual Studio Code)" -description: "Debugging from Visual Studio Code." +title: PTVSD Debugger (Visual Studio Code) +description: Debugging from Visual Studio Code. logo: visual-studio.png -ha_category: +ha_category: - Utility ha_release: 0.93 --- diff --git a/source/_integrations/pulseaudio_loopback.markdown b/source/_integrations/pulseaudio_loopback.markdown index 63278529450..341f27a257a 100644 --- a/source/_integrations/pulseaudio_loopback.markdown +++ b/source/_integrations/pulseaudio_loopback.markdown @@ -1,6 +1,6 @@ --- -title: "PulseAudio Loopback Switch" -description: "Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system." +title: PulseAudio Loopback Switch +description: Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system. logo: pulseaudio.png ha_category: - Switch diff --git a/source/_integrations/push.markdown b/source/_integrations/push.markdown index 141d4029c82..41c04faad00 100644 --- a/source/_integrations/push.markdown +++ b/source/_integrations/push.markdown @@ -1,6 +1,6 @@ --- -title: "Push" -description: "Instructions how to use Push Camera within Home Assistant." +title: Push +description: Instructions how to use Push Camera within Home Assistant. logo: camcorder.png ha_category: - Camera diff --git a/source/_integrations/pushbullet.markdown b/source/_integrations/pushbullet.markdown index 19b8cf9f191..47cbaffd8e4 100644 --- a/source/_integrations/pushbullet.markdown +++ b/source/_integrations/pushbullet.markdown @@ -1,6 +1,6 @@ --- -title: "Pushbullet Mirrors" -description: "Instructions on how to read user pushes in Home Assistant" +title: Pushbullet Mirrors +description: Instructions on how to read user pushes in Home Assistant logo: pushbullet.png ha_category: - Sensor diff --git a/source/_integrations/pushetta.markdown b/source/_integrations/pushetta.markdown index 086f1e527b9..4ab68f63740 100644 --- a/source/_integrations/pushetta.markdown +++ b/source/_integrations/pushetta.markdown @@ -1,6 +1,6 @@ --- -title: "Pushetta" -description: "Instructions on how to add Pushetta notifications to Home Assistant." +title: Pushetta +description: Instructions on how to add Pushetta notifications to Home Assistant. logo: pushetta.png ha_category: - Notifications diff --git a/source/_integrations/pushover.markdown b/source/_integrations/pushover.markdown index 28e602f3002..a51e1e2784e 100644 --- a/source/_integrations/pushover.markdown +++ b/source/_integrations/pushover.markdown @@ -1,6 +1,6 @@ --- -title: "Pushover" -description: "Instructions on how to add Pushover notifications to Home Assistant." +title: Pushover +description: Instructions on how to add Pushover notifications to Home Assistant. logo: pushover.png ha_category: - Notifications diff --git a/source/_integrations/pushsafer.markdown b/source/_integrations/pushsafer.markdown index 3fcbe2239b7..7d015a92da6 100644 --- a/source/_integrations/pushsafer.markdown +++ b/source/_integrations/pushsafer.markdown @@ -1,6 +1,6 @@ --- -title: "Pushsafer" -description: "Instructions on how to add Pushsafer notifications to Home Assistant." +title: Pushsafer +description: Instructions on how to add Pushsafer notifications to Home Assistant. logo: pushsafer.png ha_category: - Notifications diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index 7aec4695b7b..fac2ab709f6 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -1,6 +1,6 @@ --- -title: "PVOutput Sensor" -description: "Instructions on how to use PVOutput within Home Assistant." +title: PVOutput Sensor +description: Instructions on how to use PVOutput within Home Assistant. logo: pvoutput.png ha_category: - Energy diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown index 6094fbb7816..f38e5d8edbf 100644 --- a/source/_integrations/pyload.markdown +++ b/source/_integrations/pyload.markdown @@ -1,6 +1,6 @@ --- -title: "pyLoad Sensor" -description: "Instructions on how to integrate pyLoad download sensor within Home Assistant." +title: pyLoad Sensor +description: Instructions on how to integrate pyLoad download sensor within Home Assistant. logo: pyload.png ha_category: - Downloading diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index 5a1a47d8489..b3d2710ccb1 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -1,6 +1,6 @@ --- -title: "Python Scripts" -description: "Instructions on how to setup Python scripts within Home Assistant." +title: Python Scripts +description: Instructions on how to setup Python scripts within Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index d1034466e88..91f8f134da2 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -1,6 +1,6 @@ --- -title: "qBittorrent Sensor" -description: "Instructions on how to integrate qBittorrent sensors within Home Assistant." +title: qBittorrent Sensor +description: Instructions on how to integrate qBittorrent sensors within Home Assistant. logo: qbittorrent.png ha_category: - Downloading diff --git a/source/_integrations/qld_bushfire.markdown b/source/_integrations/qld_bushfire.markdown index 2d3f2fb2fcf..01326c14500 100644 --- a/source/_integrations/qld_bushfire.markdown +++ b/source/_integrations/qld_bushfire.markdown @@ -1,6 +1,6 @@ --- -title: "Queensland Bushfire Alert" -description: "Instructions on how to integrate the Queensland Bushfire Alert feed into Home Assistant." +title: Queensland Bushfire Alert +description: Instructions on how to integrate the Queensland Bushfire Alert feed into Home Assistant. logo: geo_location.png ha_category: Geolocation ha_iot_class: Cloud Polling diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index 8231fb8a259..2d86a76e73f 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -1,6 +1,6 @@ --- -title: "QNAP Sensor" -description: "Instructions on how to integrate the QNAP sensor within Home Assistant." +title: QNAP Sensor +description: Instructions on how to integrate the QNAP sensor within Home Assistant. logo: qnap.png ha_category: - System Monitor diff --git a/source/_integrations/qrcode.markdown b/source/_integrations/qrcode.markdown index 1ca078276fa..b9af29882e9 100644 --- a/source/_integrations/qrcode.markdown +++ b/source/_integrations/qrcode.markdown @@ -1,6 +1,6 @@ --- -title: "QR Code Recognition" -description: "Instructions on how to integrate QR Code Recognition into Home Assistant." +title: QR Code Recognition +description: Instructions on how to integrate QR Code Recognition into Home Assistant. logo: home-assistant.png ha_category: - Image Processing diff --git a/source/_integrations/quantum_gateway.markdown b/source/_integrations/quantum_gateway.markdown index c651df98999..698f9a9fbfc 100644 --- a/source/_integrations/quantum_gateway.markdown +++ b/source/_integrations/quantum_gateway.markdown @@ -1,6 +1,6 @@ --- -title: "Quantum Gateway" -description: "Instructions on how to integrate Quantum Gateways into Home Assistant." +title: Quantum Gateway +description: Instructions on how to integrate Quantum Gateways into Home Assistant. ha_category: - Presence Detection logo: fios.svg diff --git a/source/_integrations/qwikswitch.markdown b/source/_integrations/qwikswitch.markdown index f243a567de0..209e5f6e643 100644 --- a/source/_integrations/qwikswitch.markdown +++ b/source/_integrations/qwikswitch.markdown @@ -1,6 +1,6 @@ --- -title: "QwikSwitch QSUSB Hub" -description: "Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant." +title: QwikSwitch QSUSB Hub +description: Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant. logo: qwikswitch.png ha_category: - Hub @@ -8,7 +8,7 @@ ha_category: - Light - Sensor - Switch -ha_release: "0.20" +ha_release: '0.20' --- The `qwikswitch` integration is the main integration to integrate various [QwikSwitch](https://www.qwikswitch.co.za/) devices with Home Assistant. The integration requires the QSUSB Modem device and connects to the QS Mobile application. diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown index b590233f330..9642ba9f698 100644 --- a/source/_integrations/rachio.markdown +++ b/source/_integrations/rachio.markdown @@ -1,6 +1,6 @@ --- -title: "Rachio" -description: "Instructions on how to use Rachio with Home Assistant." +title: Rachio +description: Instructions on how to use Rachio with Home Assistant. logo: rachio.png ha_category: - Irrigation diff --git a/source/_integrations/radarr.markdown b/source/_integrations/radarr.markdown index ca67ea7290c..b9c73b61e69 100644 --- a/source/_integrations/radarr.markdown +++ b/source/_integrations/radarr.markdown @@ -1,6 +1,6 @@ --- -title: "Radarr Sensor" -description: "Instructions on how to integrate Radarr sensors with Home Assistant" +title: Radarr Sensor +description: Instructions on how to integrate Radarr sensors with Home Assistant logo: radarr.png ha_category: - Downloading diff --git a/source/_integrations/radiotherm.markdown b/source/_integrations/radiotherm.markdown index a699c331423..2f6f0f4de15 100644 --- a/source/_integrations/radiotherm.markdown +++ b/source/_integrations/radiotherm.markdown @@ -1,6 +1,6 @@ --- -title: "Radio Thermostat (3M Filtrete) Thermostat" -description: "Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant." +title: Radio Thermostat (3M Filtrete) Thermostat +description: Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant. logo: radiotherm.png ha_category: - Climate @@ -58,4 +58,4 @@ climate: - 192.168.99.137 - 192.168.99.202 ``` -Humidity is now available as the `current_humidity` attribute for each `climate.$HOST` entity. This only works for RadioThermostat devices that have a built in humidity sensor. +Humidity is now available as the `current_humidity` attribute for each `climate.$HOST` entity. This only works for RadioThermostat devices that have a built in humidity sensor. diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index dd240c9c20d..2324b8201dc 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -1,6 +1,6 @@ --- -title: "Rain Bird" -description: "Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant." +title: Rain Bird +description: Instructions on how to integrate your Rain Bird LNK WiFi Module within Home Assistant. logo: rainbird.png ha_category: - Irrigation @@ -127,4 +127,4 @@ automation: entity_id: switch.sprinkler_1 data: duration: 5 -``` \ No newline at end of file +``` diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index 804109629a3..5ac7f83d61a 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -1,6 +1,6 @@ --- -title: "Melnor Raincloud" -description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +title: Melnor Raincloud +description: Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant. logo: raincloud.jpg ha_category: - Irrigation @@ -116,4 +116,4 @@ monitored_conditions: description: Toggle the watering scheduled per zone. manual_watering: description: Toggle manually the watering per zone. It will inherent the value in minutes specified on the RainCloud hub component. -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/rainforest_eagle.markdown b/source/_integrations/rainforest_eagle.markdown index d4b50ec4198..99fb073d605 100644 --- a/source/_integrations/rainforest_eagle.markdown +++ b/source/_integrations/rainforest_eagle.markdown @@ -1,6 +1,6 @@ --- -title: "Rainforest Eagle-200" -description: "Instructions on how to setup the Rainforest Eagle-200 with Home Assistant." +title: Rainforest Eagle-200 +description: Instructions on how to setup the Rainforest Eagle-200 with Home Assistant. logo: rainforest_automation_logo.png ha_category: - Energy diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index c0e4eb1daba..5a2ea7cd0e0 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -1,6 +1,6 @@ --- -title: "RainMachine" -description: "Instructions on how to integrate RainMachine units within Home Assistant." +title: RainMachine +description: Instructions on how to integrate RainMachine units within Home Assistant. logo: rainmachine.png ha_category: - Irrigation diff --git a/source/_integrations/random.markdown b/source/_integrations/random.markdown index f1f69b8bdd0..616f0483815 100644 --- a/source/_integrations/random.markdown +++ b/source/_integrations/random.markdown @@ -1,6 +1,6 @@ --- -title: "Random" -description: "Instructions on how to integrate random numbers into Home Assistant." +title: Random +description: Instructions on how to integrate random numbers into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/raspihats.markdown b/source/_integrations/raspihats.markdown index df01e666189..448b32227f1 100644 --- a/source/_integrations/raspihats.markdown +++ b/source/_integrations/raspihats.markdown @@ -1,6 +1,6 @@ --- -title: "Raspihats" -description: "Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant." +title: Raspihats +description: Instructions on how to integrate Raspihats add-on boards for Raspberry Pi into Home Assistant. logo: raspihats.png ha_category: - DIY diff --git a/source/_integrations/raspyrfm.markdown b/source/_integrations/raspyrfm.markdown index a9d1636fff4..c43f527e1e7 100644 --- a/source/_integrations/raspyrfm.markdown +++ b/source/_integrations/raspyrfm.markdown @@ -1,6 +1,6 @@ --- -title: "RaspyRFM Switch" -description: "Instructions on how to integrate RaspyRFM switches into Home Assistant." +title: RaspyRFM Switch +description: Instructions on how to integrate RaspyRFM switches into Home Assistant. logo: seegelsysteme.png ha_category: - Switch diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown index 6b507e3f871..c44020d4e4b 100644 --- a/source/_integrations/recollect_waste.markdown +++ b/source/_integrations/recollect_waste.markdown @@ -1,6 +1,6 @@ --- title: Recollect Waste Sensor -description: "Instructions on how to set up Recollect Waste sensor within Home Assistant." +description: Instructions on how to set up Recollect Waste sensor within Home Assistant. logo: recollect-waste.png ha_category: - Sensor diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index 466b4237636..c85426cbb34 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -1,9 +1,9 @@ --- -title: "Recorder" -description: "Instructions on how to configure the data recorder for Home Assistant." +title: Recorder +description: Instructions on how to configure the data recorder for Home Assistant. logo: home-assistant.png ha_category: - - "History" + - History ha_release: pre 0.7 ha_qa_scale: internal --- diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown index 110aa8b7261..143a7729430 100644 --- a/source/_integrations/recswitch.markdown +++ b/source/_integrations/recswitch.markdown @@ -1,7 +1,7 @@ --- -title: "Ankuoo Rec Switch" -description: "Instructions on how to integrate Ankuoo Rec Switch into Home Assistant." -logo: "ankuoo_recswitch.png" +title: Ankuoo Rec Switch +description: Instructions on how to integrate Ankuoo Rec Switch into Home Assistant. +logo: ankuoo_recswitch.png ha_release: 0.81 ha_category: - Switch diff --git a/source/_integrations/reddit.markdown b/source/_integrations/reddit.markdown index 0fe263b79e5..1f253beace2 100644 --- a/source/_integrations/reddit.markdown +++ b/source/_integrations/reddit.markdown @@ -1,6 +1,6 @@ --- -title: "Reddit" -description: "How to integrate the Reddit sensor into Home Assistant." +title: Reddit +description: How to integrate the Reddit sensor into Home Assistant. logo: reddit.png ha_category: - Sensor diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index 6001fc31b2c..a52f1f76ab4 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -1,6 +1,6 @@ --- -title: "Rejseplanen Public Transport" -description: "Instructions on how to integrate timetable data for Danish Rejseplanen within Home Assistant." +title: Rejseplanen Public Transport +description: Instructions on how to integrate timetable data for Danish Rejseplanen within Home Assistant. logo: rejseplanen.png ha_category: - Transport diff --git a/source/_integrations/remember_the_milk.markdown b/source/_integrations/remember_the_milk.markdown index d7a1c39c79a..6f62afc077b 100644 --- a/source/_integrations/remember_the_milk.markdown +++ b/source/_integrations/remember_the_milk.markdown @@ -1,6 +1,6 @@ --- -title: "Remember The Milk" -description: "Instructions on how to use Remember The Milk with Home Assistant." +title: Remember The Milk +description: Instructions on how to use Remember The Milk with Home Assistant. logo: rememberthemilk.png ha_category: - Calendar diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown index f8a32910bab..5621ae6e933 100644 --- a/source/_integrations/remote.markdown +++ b/source/_integrations/remote.markdown @@ -1,6 +1,6 @@ --- -title: "Remotes" -description: "Instructions on how to setup your remotes with Home Assistant." +title: Remotes +description: Instructions on how to setup your remotes with Home Assistant. ha_release: 0.34 --- diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index e9edffb006b..b901c3799fa 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -1,6 +1,6 @@ --- -title: "Remote Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant." +title: Remote Raspberry Pi GPIO +description: Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index 9beb073756f..f1a8478e899 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -1,6 +1,6 @@ --- title: Repetier-Server Component -description: "Instructions how to add Repetier-Server sensors to Home Assistant." +description: Instructions how to add Repetier-Server sensors to Home Assistant. logo: repetier.png ha_category: - Hub diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index 8f644dad45c..3372130b704 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -1,6 +1,6 @@ --- -title: "RESTful Sensor" -description: "Instructions on how to integrate REST sensors into Home Assistant." +title: RESTful Sensor +description: Instructions on how to integrate REST sensors into Home Assistant. logo: restful.png ha_category: - Sensor diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown index ebf3058e64f..e115b186647 100644 --- a/source/_integrations/rest_command.markdown +++ b/source/_integrations/rest_command.markdown @@ -1,6 +1,6 @@ --- -title: "RESTful Command" -description: "Instructions on how to integrate REST commands into Home Assistant." +title: RESTful Command +description: Instructions on how to integrate REST commands into Home Assistant. logo: restful.png ha_category: - Automation diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index de5e8f0bfb4..c41fece28ca 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -1,6 +1,6 @@ --- -title: "RFLink" -description: "Instructions on how to integrate RFLink gateway into Home Assistant." +title: RFLink +description: Instructions on how to integrate RFLink gateway into Home Assistant. logo: rflink.png ha_category: - Hub diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index af64619e50d..8d64b1172a6 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -1,6 +1,6 @@ --- -title: "RFXtrx" -description: "Instructions on how to integrate RFXtrx into Home Assistant." +title: RFXtrx +description: Instructions on how to integrate RFXtrx into Home Assistant. logo: rfxtrx.png ha_category: - Hub diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown index 7d661b41dc7..5b15811f835 100644 --- a/source/_integrations/ring.markdown +++ b/source/_integrations/ring.markdown @@ -1,6 +1,6 @@ --- -title: "Ring" -description: "Instructions on how to integrate your Ring.com devices within Home Assistant." +title: Ring +description: Instructions on how to integrate your Ring.com devices within Home Assistant. logo: ring.png ha_category: - Doorbell diff --git a/source/_integrations/ripple.markdown b/source/_integrations/ripple.markdown index ff0cfbb065e..f1d9d973089 100644 --- a/source/_integrations/ripple.markdown +++ b/source/_integrations/ripple.markdown @@ -1,6 +1,6 @@ --- -title: "Ripple" -description: "Instructions on how to integrate ripple.com data within Home Assistant." +title: Ripple +description: Instructions on how to integrate ripple.com data within Home Assistant. logo: ripple.png ha_category: - Finance diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown index dfe20a02f96..14aae2329e1 100644 --- a/source/_integrations/rmvtransport.markdown +++ b/source/_integrations/rmvtransport.markdown @@ -1,6 +1,6 @@ --- -title: "RMV" -description: "Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant." +title: RMV +description: Instructions on how to integrate Rhein-Main public transport departure times into Home Assistant. logo: RMV.png ha_category: - Transport diff --git a/source/_integrations/rocketchat.markdown b/source/_integrations/rocketchat.markdown index e269973de3c..328f2313c41 100644 --- a/source/_integrations/rocketchat.markdown +++ b/source/_integrations/rocketchat.markdown @@ -1,13 +1,12 @@ --- -title: "Rocket.Chat" -description: "Instructions on how to add Rocket.Chat notifications to Home Assistant." +title: Rocket.Chat +description: Instructions on how to add Rocket.Chat notifications to Home Assistant. logo: rocketchat.png ha_category: - Notifications ha_release: 0.56 --- - The `rocketchat` notify platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. ## Configuration @@ -49,4 +48,3 @@ rocketchat_notification: - **data** (*Optional*): Dictionary containing any of the variables defined in the [Rocket.Chat docs](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) To use notifications, please see the [getting started with automation page](/getting-started/automation/). - diff --git a/source/_integrations/roku.markdown b/source/_integrations/roku.markdown index e52267ae9d5..f640d668d8b 100644 --- a/source/_integrations/roku.markdown +++ b/source/_integrations/roku.markdown @@ -1,6 +1,6 @@ --- -title: "Roku" -description: "Instructions how to integrate Roku devices into Home Assistant." +title: Roku +description: Instructions how to integrate Roku devices into Home Assistant. logo: roku.png ha_category: - Hub diff --git a/source/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index 91fcc80c065..faf32d2ca13 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -1,6 +1,6 @@ --- -title: "iRobot Roomba" -description: "Instructions on how to integrate your Wi-Fi enabled Roomba within Home Assistant." +title: iRobot Roomba +description: Instructions on how to integrate your Wi-Fi enabled Roomba within Home Assistant. logo: irobot_roomba.png ha_category: - Vacuum diff --git a/source/_integrations/route53.markdown b/source/_integrations/route53.markdown index d0274ee8717..04492d61b43 100644 --- a/source/_integrations/route53.markdown +++ b/source/_integrations/route53.markdown @@ -1,6 +1,6 @@ --- -title: "route53" -description: "Automatically update your AWS Route53 DNS records." +title: route53 +description: Automatically update your AWS Route53 DNS records. logo: route53.png ha_category: - Network diff --git a/source/_integrations/rova.markdown b/source/_integrations/rova.markdown index 6f3f1ffdc42..0197b7b26a3 100644 --- a/source/_integrations/rova.markdown +++ b/source/_integrations/rova.markdown @@ -1,6 +1,6 @@ --- -title: "ROVA Sensor" -description: "Instructions on how to integrate ROVA sensor within Home Assistant." +title: ROVA Sensor +description: Instructions on how to integrate ROVA sensor within Home Assistant. logo: rova.jpg ha_category: - Sensor diff --git a/source/_integrations/rpi_camera.markdown b/source/_integrations/rpi_camera.markdown index bcc871acd48..372650bba2c 100644 --- a/source/_integrations/rpi_camera.markdown +++ b/source/_integrations/rpi_camera.markdown @@ -1,6 +1,6 @@ --- -title: "Raspberry Pi Camera" -description: "Instructions on how to integrate Raspberry Pi within Home Assistant." +title: Raspberry Pi Camera +description: Instructions on how to integrate Raspberry Pi within Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/rpi_gpio.markdown b/source/_integrations/rpi_gpio.markdown index cc33003e8b1..1c9b00e7526 100644 --- a/source/_integrations/rpi_gpio.markdown +++ b/source/_integrations/rpi_gpio.markdown @@ -1,6 +1,6 @@ --- -title: "Raspberry Pi GPIO" -description: "Instructions on how to integrate the GPIO capability of a Raspberry Pi into Home Assistant." +title: Raspberry Pi GPIO +description: Instructions on how to integrate the GPIO capability of a Raspberry Pi into Home Assistant. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/rpi_gpio_pwm.markdown b/source/_integrations/rpi_gpio_pwm.markdown index 3fcb775584e..ee6badcee4e 100644 --- a/source/_integrations/rpi_gpio_pwm.markdown +++ b/source/_integrations/rpi_gpio_pwm.markdown @@ -1,6 +1,6 @@ --- -title: "PWM LED Light" -description: "Instructions on how to setup PWM LEDs within Home Assistant." +title: PWM LED Light +description: Instructions on how to setup PWM LEDs within Home Assistant. ha_category: - DIY ha_iot_class: Local Push diff --git a/source/_integrations/rpi_pfio.markdown b/source/_integrations/rpi_pfio.markdown index d5bdae097f6..ab9505013f6 100644 --- a/source/_integrations/rpi_pfio.markdown +++ b/source/_integrations/rpi_pfio.markdown @@ -1,6 +1,6 @@ --- -title: "PiFace Digital I/O" -description: "Instructions on how to integrate the PiFace Digital I/O module into Home Assistant." +title: PiFace Digital I/O +description: Instructions on how to integrate the PiFace Digital I/O module into Home Assistant. logo: raspberry-pi.png ha_category: - DIY @@ -107,4 +107,4 @@ ports: required: false default: false type: boolean -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/rpi_rf.markdown b/source/_integrations/rpi_rf.markdown index 153f10b2442..452fe4bdd3b 100644 --- a/source/_integrations/rpi_rf.markdown +++ b/source/_integrations/rpi_rf.markdown @@ -1,6 +1,6 @@ --- -title: "Raspberry Pi RF Switch" -description: "Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch." +title: Raspberry Pi RF Switch +description: Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch. logo: raspberry-pi.png ha_category: - DIY diff --git a/source/_integrations/rss_feed_template.markdown b/source/_integrations/rss_feed_template.markdown index a0a73702de9..84ca8dc27e5 100644 --- a/source/_integrations/rss_feed_template.markdown +++ b/source/_integrations/rss_feed_template.markdown @@ -1,6 +1,6 @@ --- -title: "RSS feed template" -description: "Use this integration to generate RSS feeds showing your latest data." +title: RSS feed template +description: Use this integration to generate RSS feeds showing your latest data. logo: home-assistant.png ha_category: - Front End diff --git a/source/_integrations/rtorrent.markdown b/source/_integrations/rtorrent.markdown index 4e7449f1c76..501dcec65f4 100644 --- a/source/_integrations/rtorrent.markdown +++ b/source/_integrations/rtorrent.markdown @@ -1,6 +1,6 @@ --- -title: "rtorrent Sensor" -description: "Instructions on how to integrate rtorrent sensors within Home Assistant." +title: rtorrent Sensor +description: Instructions on how to integrate rtorrent sensors within Home Assistant. logo: rtorrent.png ha_category: - Downloading diff --git a/source/_integrations/russound_rio.markdown b/source/_integrations/russound_rio.markdown index 1c2fccda2e3..eabc2ada17d 100644 --- a/source/_integrations/russound_rio.markdown +++ b/source/_integrations/russound_rio.markdown @@ -1,6 +1,6 @@ --- -title: "Russound RIO" -description: "Instructions on how to integrate Russound RIO devices into Home Assistant." +title: Russound RIO +description: Instructions on how to integrate Russound RIO devices into Home Assistant. logo: russound.png ha_category: - Media Player diff --git a/source/_integrations/russound_rnet.markdown b/source/_integrations/russound_rnet.markdown index a7433385158..5583c0beef2 100644 --- a/source/_integrations/russound_rnet.markdown +++ b/source/_integrations/russound_rnet.markdown @@ -1,6 +1,6 @@ --- -title: "Russound RNET" -description: "Instructions on how to integrate Russound RNET devices into Home Assistant." +title: Russound RNET +description: Instructions on how to integrate Russound RNET devices into Home Assistant. logo: russound.png ha_category: - Media Player diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown index 9f41839fe57..7841cc8f53a 100644 --- a/source/_integrations/sabnzbd.markdown +++ b/source/_integrations/sabnzbd.markdown @@ -1,11 +1,11 @@ --- -title: "SABnzbd" -description: "Instructions on how to integrate SABnzbd with Home Assistant." +title: SABnzbd +description: Instructions on how to integrate SABnzbd with Home Assistant. logo: sabnzbd.png ha_category: - Downloading - Sensor -ha_release: 0.70 +ha_release: 0.7 ha_iot_class: Local Polling --- diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index 98dc00e205e..c82d374de06 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -1,11 +1,11 @@ --- -title: "SAJ Solar Inverter" -description: "Instructions on how to connect your SAJ Solar Inverter to Home Assistant." +title: SAJ Solar Inverter +description: Instructions on how to connect your SAJ Solar Inverter to Home Assistant. ha_category: - Energy logo: saj.png ha_iot_class: Local Polling -ha_release: "0.100" +ha_release: '0.100' --- The `saj` sensor will poll a [SAJ](https://www.saj-electric.com/) solar inverter and present the values as sensors in Home Assistant. diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 2942629fede..228bacd8a0d 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -1,6 +1,6 @@ --- -title: "Samsung Smart TV" -description: "Instructions on how to integrate a Samsung Smart TV into Home Assistant." +title: Samsung Smart TV +description: Instructions on how to integrate a Samsung Smart TV into Home Assistant. logo: samsung.png ha_category: - Media Player diff --git a/source/_integrations/satel_integra.markdown b/source/_integrations/satel_integra.markdown index eff0a7a26c6..7817fe42811 100644 --- a/source/_integrations/satel_integra.markdown +++ b/source/_integrations/satel_integra.markdown @@ -1,6 +1,6 @@ --- -title: "Satel Integra Alarm" -description: "Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel." +title: Satel Integra Alarm +description: Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel. logo: satel.jpg ha_category: - Hub diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 0848e1cc02f..5ac967cae21 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -1,6 +1,6 @@ --- -title: "Scenes" -description: "Instructions on how to setup scenes within Home Assistant." +title: Scenes +description: Instructions on how to setup scenes within Home Assistant. logo: home-assistant.png ha_category: - Organization diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index 5a033fe68d7..d5cde92ef5d 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -1,6 +1,6 @@ --- -title: "Scrape Sensor" -description: "Instructions on how to integrate Web scrape sensors into Home Assistant." +title: Scrape Sensor +description: Instructions on how to integrate Web scrape sensors into Home Assistant. logo: home-assistant.png ha_category: - Sensor diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index 3ff893e8bd0..a8883dec13d 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -1,6 +1,6 @@ --- -title: "Scripts" -description: "Instructions on how to setup scripts within Home Assistant." +title: Scripts +description: Instructions on how to setup scripts within Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/scsgate.markdown b/source/_integrations/scsgate.markdown index 34c3242c842..082b1c3775e 100644 --- a/source/_integrations/scsgate.markdown +++ b/source/_integrations/scsgate.markdown @@ -1,6 +1,6 @@ --- -title: "SCSGate" -description: "Instructions on how to integrate SCSGate into Home Assistant." +title: SCSGate +description: Instructions on how to integrate SCSGate into Home Assistant. logo: bus_scs.png ha_category: - Hub diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index e98a1f4d15a..2c07397509e 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -1,6 +1,6 @@ --- -title: "Season Sensor" -description: "Instructions on how to add season sensors into Home Assistant." +title: Season Sensor +description: Instructions on how to add season sensors into Home Assistant. ha_category: - Utility logo: home-assistant.png diff --git a/source/_integrations/sendgrid.markdown b/source/_integrations/sendgrid.markdown index 82b78b900df..0ff5dd07dcc 100644 --- a/source/_integrations/sendgrid.markdown +++ b/source/_integrations/sendgrid.markdown @@ -1,6 +1,6 @@ --- -title: "SendGrid" -description: "Instructions on how to add email notifications via SendGrid to Home Assistant." +title: SendGrid +description: Instructions on how to add email notifications via SendGrid to Home Assistant. logo: sendgrid.png ha_category: - Notifications diff --git a/source/_integrations/sense.markdown b/source/_integrations/sense.markdown index 02cd2b75cd4..9b8483130c3 100644 --- a/source/_integrations/sense.markdown +++ b/source/_integrations/sense.markdown @@ -1,6 +1,6 @@ --- title: Sense -description: "Instructions on how to integrate Sense within Home Assistant." +description: Instructions on how to integrate Sense within Home Assistant. logo: sense.png ha_category: - Energy diff --git a/source/_integrations/sensehat.markdown b/source/_integrations/sensehat.markdown index e605795f352..964dca115eb 100644 --- a/source/_integrations/sensehat.markdown +++ b/source/_integrations/sensehat.markdown @@ -1,6 +1,6 @@ --- -title: "Sense HAT" -description: "Instructions on how to setup Sense HAT LED lights within Home Assistant." +title: Sense HAT +description: Instructions on how to setup Sense HAT LED lights within Home Assistant. logo: sense-hat.png ha_category: - DIY diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 71b11163e49..e78ed5b7bca 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -1,6 +1,6 @@ --- -title: "Sensibo A/C controller" -description: "Instructions on how to integrate Sensibo A/C controller into Home Assistant." +title: Sensibo A/C controller +description: Instructions on how to integrate Sensibo A/C controller into Home Assistant. logo: sensibo.png ha_category: - Climate diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 7ac97d5280c..1981c257db7 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -1,6 +1,6 @@ --- -title: "Sensor" -description: "Instructions on how to setup your sensors with Home Assistant." +title: Sensor +description: Instructions on how to setup your sensors with Home Assistant. logo: home-assistant.png ha_category: - Sensor diff --git a/source/_integrations/serial.markdown b/source/_integrations/serial.markdown index 68f44acbb6f..8d7d034a5fc 100644 --- a/source/_integrations/serial.markdown +++ b/source/_integrations/serial.markdown @@ -1,6 +1,6 @@ --- -title: "Serial Sensor" -description: "Instructions on how to integrate data from serial connected sensors into Home Assistant." +title: Serial Sensor +description: Instructions on how to integrate data from serial connected sensors into Home Assistant. logo: home-assistant.png ha_category: - Sensor diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown index 1c55c5ee90b..b02bf218513 100644 --- a/source/_integrations/serial_pm.markdown +++ b/source/_integrations/serial_pm.markdown @@ -1,6 +1,6 @@ --- -title: "Particulate matter Sensor" -description: "Instructions on how to integrate particulate matter (dust) sensors with Home Assistant." +title: Particulate matter Sensor +description: Instructions on how to integrate particulate matter (dust) sensors with Home Assistant. logo: serial_pm.png ha_category: - DIY diff --git a/source/_integrations/sesame.markdown b/source/_integrations/sesame.markdown index 57ed4b3b0bc..c3599028536 100644 --- a/source/_integrations/sesame.markdown +++ b/source/_integrations/sesame.markdown @@ -1,6 +1,6 @@ --- -title: "Sesame Smart Lock" -description: "Instructions on how to integrate Sesame by CANDY HOUSE into Home Assistant." +title: Sesame Smart Lock +description: Instructions on how to integrate Sesame by CANDY HOUSE into Home Assistant. logo: sesame.png ha_category: - Lock diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index 728252e554b..f846c7772cc 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -1,6 +1,6 @@ --- -title: "Seven segments display" -description: "Instructions on how to use OCR for seven segments displays into Home Assistant." +title: Seven segments display +description: Instructions on how to use OCR for seven segments displays into Home Assistant. logo: home-assistant.png ha_category: - Image Processing diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index ebc8765c533..a1c84401713 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -1,6 +1,6 @@ --- -title: "17track.net" -description: "Instructions on how to use 17track.net data within Home Assistant" +title: 17track.net +description: Instructions on how to use 17track.net data within Home Assistant logo: 17track.png ha_category: - Postal Service diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index 6eab549b7b2..61de22c0267 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -1,6 +1,6 @@ --- -title: "Shell command" -description: "Instructions on how to integrate Shell commands into Home Assistant." +title: Shell command +description: Instructions on how to integrate Shell commands into Home Assistant. ha_category: - Automation logo: home-assistant.png diff --git a/source/_integrations/shiftr.markdown b/source/_integrations/shiftr.markdown index 24680c4b0c1..39e9d9123c7 100644 --- a/source/_integrations/shiftr.markdown +++ b/source/_integrations/shiftr.markdown @@ -1,9 +1,9 @@ --- -title: "Shiftr.io" -description: "Transfer events to Shiftr.io." +title: Shiftr.io +description: Transfer events to Shiftr.io. logo: shiftr.png ha_category: - - "History" + - History ha_release: 0.48 --- diff --git a/source/_integrations/shodan.markdown b/source/_integrations/shodan.markdown index 44810e38860..6a3760128f6 100644 --- a/source/_integrations/shodan.markdown +++ b/source/_integrations/shodan.markdown @@ -1,6 +1,6 @@ --- -title: "Shodan Sensor" -description: "Instructions on how to integrate Shodan sensors into Home Assistant." +title: Shodan Sensor +description: Instructions on how to integrate Shodan sensors into Home Assistant. ha_category: - Sensor ha_iot_class: Cloud Polling diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index 2cd9f884492..d3c8b380209 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -1,10 +1,10 @@ --- -title: "Shopping List" -description: "Instructions on how to integrate a Shopping list into Home Assistant using Intent." +title: Shopping List +description: Instructions on how to integrate a Shopping list into Home Assistant using Intent. logo: home-assistant.png ha_category: - Intent -ha_release: "0.50" +ha_release: '0.50' ha_qa_scale: internal --- diff --git a/source/_integrations/sht31.markdown b/source/_integrations/sht31.markdown index 95092ae30b4..25354839874 100644 --- a/source/_integrations/sht31.markdown +++ b/source/_integrations/sht31.markdown @@ -1,6 +1,6 @@ --- -title: "Sensirion SHT31 Sensor" -description: "Instructions on how to integrate SHT31 sensors within Home Assistant." +title: Sensirion SHT31 Sensor +description: Instructions on how to integrate SHT31 sensors within Home Assistant. ha_category: - DIY ha_release: 0.68 diff --git a/source/_integrations/sigfox.markdown b/source/_integrations/sigfox.markdown index 3ebdc2635ba..45edae6abd5 100644 --- a/source/_integrations/sigfox.markdown +++ b/source/_integrations/sigfox.markdown @@ -1,6 +1,6 @@ --- -title: "Sigfox Sensor" -description: "Display messages from Sigfox devices in Home Assistant." +title: Sigfox Sensor +description: Display messages from Sigfox devices in Home Assistant. logo: sigfox.png ha_category: - Sensor diff --git a/source/_integrations/simplepush.markdown b/source/_integrations/simplepush.markdown index 580b1c2fdaf..05fcbfd6834 100644 --- a/source/_integrations/simplepush.markdown +++ b/source/_integrations/simplepush.markdown @@ -1,13 +1,12 @@ --- -title: "Simplepush" -description: "Instructions on how to add Simplepush notifications to Home Assistant." +title: Simplepush +description: Instructions on how to add Simplepush notifications to Home Assistant. logo: simplepush.png ha_category: - Notifications ha_release: 0.29 --- - The `simplepush` platform uses [Simplepush](https://simplepush.io/) to delivery notifications from Home Assistant to your Android device. Unlike similar apps the Simplepush app requires no registration. To add Simplepush to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 40e6e089501..3e32f4d1e09 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -1,6 +1,6 @@ --- -title: "SimpliSafe" -description: "Instructions on how to integrate SimpliSafe into Home Assistant." +title: SimpliSafe +description: Instructions on how to integrate SimpliSafe into Home Assistant. logo: simplisafe.png ha_release: 0.81 ha_category: diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown index f964c1003aa..5bc4dd79d61 100644 --- a/source/_integrations/simulated.markdown +++ b/source/_integrations/simulated.markdown @@ -1,6 +1,6 @@ --- -title: "Simulated sensor" -description: "Component for simulating a numerical sensor." +title: Simulated sensor +description: Component for simulating a numerical sensor. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown index b3ffba7bbe2..67af31b37b1 100644 --- a/source/_integrations/sinch.markdown +++ b/source/_integrations/sinch.markdown @@ -1,6 +1,6 @@ --- -title: "Sinch SMS" -description: "Instructions on how to add Sinch notifications to Home Assistant." +title: Sinch SMS +description: Instructions on how to add Sinch notifications to Home Assistant. logo: sinch.png ha_category: - Notifications diff --git a/source/_integrations/sisyphus.markdown b/source/_integrations/sisyphus.markdown index bc9921e6991..3ed5531d490 100644 --- a/source/_integrations/sisyphus.markdown +++ b/source/_integrations/sisyphus.markdown @@ -1,6 +1,6 @@ --- -title: "Sisyphus" -description: "Instructions on how to integrate your Sisyphus Kinetic Art Table within Home Assistant." +title: Sisyphus +description: Instructions on how to integrate your Sisyphus Kinetic Art Table within Home Assistant. logo: sisyphus.png ha_category: - Hub diff --git a/source/_integrations/sky_hub.markdown b/source/_integrations/sky_hub.markdown index dbd43e9fe8e..c499f7f3a94 100644 --- a/source/_integrations/sky_hub.markdown +++ b/source/_integrations/sky_hub.markdown @@ -1,13 +1,12 @@ --- -title: "Sky Hub" -description: "Instructions on how to integrate Sky Hub routers into Home Assistant." +title: Sky Hub +description: Instructions on how to integrate Sky Hub routers into Home Assistant. logo: sky.png ha_category: - Presence Detection ha_release: 0.37 --- - The `sky_hub` platform offers presence detection by looking at connected devices to a [Sky Hub router](https://www.sky.com/shop/broadband-talk/sky-hub/) based router. To use your Sky Hub device in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/skybeacon.markdown b/source/_integrations/skybeacon.markdown index bb0563f93ef..aa5eeaf1460 100644 --- a/source/_integrations/skybeacon.markdown +++ b/source/_integrations/skybeacon.markdown @@ -1,6 +1,6 @@ --- -title: "Skybeacon sensor" -description: "Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant." +title: Skybeacon sensor +description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. ha_category: - DIY ha_release: 0.37 diff --git a/source/_integrations/skybell.markdown b/source/_integrations/skybell.markdown index 96faeb33500..9ed2ca87e65 100644 --- a/source/_integrations/skybell.markdown +++ b/source/_integrations/skybell.markdown @@ -1,6 +1,6 @@ --- -title: "Skybell" -description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +title: Skybell +description: Instructions on how to integrate your Skybell HD devices within Home Assistant. logo: skybell.png ha_category: - Doorbell diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown index 819cd9367dd..c70fb19c262 100644 --- a/source/_integrations/slack.markdown +++ b/source/_integrations/slack.markdown @@ -1,13 +1,12 @@ --- -title: "Slack" -description: "Instructions on how to add Slack notifications to Home Assistant." +title: Slack +description: Instructions on how to add Slack notifications to Home Assistant. logo: slack.png ha_category: - Notifications ha_release: pre 0.7 --- - The `slack` platform allows you to deliver notifications from Home Assistant to [Slack](https://slack.com/). ## Setup diff --git a/source/_integrations/sleepiq.markdown b/source/_integrations/sleepiq.markdown index ce55c4c9da4..e17338d1027 100644 --- a/source/_integrations/sleepiq.markdown +++ b/source/_integrations/sleepiq.markdown @@ -1,6 +1,6 @@ --- -title: "SleepIQ" -description: "Instructions for how to integrate SleepIQ beds within Home Assistant." +title: SleepIQ +description: Instructions for how to integrate SleepIQ beds within Home Assistant. logo: sleepiq.png ha_category: - Health diff --git a/source/_integrations/slide.markdown b/source/_integrations/slide.markdown index 8d7f6e5f916..5d2a0057573 100644 --- a/source/_integrations/slide.markdown +++ b/source/_integrations/slide.markdown @@ -1,6 +1,6 @@ --- -title: "Slide" -description: "Instructions on how to integrate the Innovation in Motion Slide covers with Home Assistant." +title: Slide +description: Instructions on how to integrate the Innovation in Motion Slide covers with Home Assistant. logo: slide.png ha_category: - Hub @@ -35,4 +35,3 @@ scan_interval: default: 30 seconds type: integer {% endconfiguration %} - diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index faccfba81d2..77ead4a6413 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -1,6 +1,6 @@ --- -title: "SMA Solar WebConnect" -description: "Instructions on how to connect your SMA Solar Inverter to Home Assistant." +title: SMA Solar WebConnect +description: Instructions on how to connect your SMA Solar Inverter to Home Assistant. ha_category: - Energy logo: sma.png diff --git a/source/_integrations/smappee.markdown b/source/_integrations/smappee.markdown index 7ebaff58b40..0b66df6971a 100644 --- a/source/_integrations/smappee.markdown +++ b/source/_integrations/smappee.markdown @@ -1,6 +1,6 @@ --- -title: "Smappee" -description: "Instructions on how to setup Smappee within Home Assistant." +title: Smappee +description: Instructions on how to setup Smappee within Home Assistant. logo: smappee.png ha_release: 0.64 ha_category: diff --git a/source/_integrations/smarthab.markdown b/source/_integrations/smarthab.markdown index e97965e6b3e..e15f339778e 100644 --- a/source/_integrations/smarthab.markdown +++ b/source/_integrations/smarthab.markdown @@ -1,6 +1,6 @@ --- -title: "SmartHab" -description: "Instructions on how to integrate SmartHab devices into Home Assistant" +title: SmartHab +description: Instructions on how to integrate SmartHab devices into Home Assistant logo: smarthab.png ha_release: 0.94 ha_category: diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 78ba7bd2987..b224463ac55 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -1,6 +1,6 @@ --- -title: "SmartThings" -description: "Instructions on setting up Samsung SmartThings within Home Assistant." +title: SmartThings +description: Instructions on setting up Samsung SmartThings within Home Assistant. featured: true logo: samsung_smartthings.png ha_category: diff --git a/source/_integrations/smarty.markdown b/source/_integrations/smarty.markdown index a1fe9070015..21706f5c418 100644 --- a/source/_integrations/smarty.markdown +++ b/source/_integrations/smarty.markdown @@ -1,6 +1,6 @@ --- -title: "Salda Smarty 2X/3X/4X P/V Ventilation" -description: "Instructions on how to integrate Salda Smarty 2X/3X/4X P/V ventilation systems into Home Assistant." +title: Salda Smarty 2X/3X/4X P/V Ventilation +description: Instructions on how to integrate Salda Smarty 2X/3X/4X P/V ventilation systems into Home Assistant. logo: salda.png ha_category: - Hub diff --git a/source/_integrations/smhi.markdown b/source/_integrations/smhi.markdown index a2642b3f06c..0b2f826f1ce 100644 --- a/source/_integrations/smhi.markdown +++ b/source/_integrations/smhi.markdown @@ -1,10 +1,10 @@ --- -title: "SMHI" -description: "Instructions on how to integrate SMHI forecasts within Home Assistant." +title: SMHI +description: Instructions on how to integrate SMHI forecasts within Home Assistant. logo: smhi.png ha_category: - - Hub - - Weather + - Hub + - Weather ha_release: 0.81 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown index 8328d569a1c..f1cfaa70b59 100644 --- a/source/_integrations/smtp.markdown +++ b/source/_integrations/smtp.markdown @@ -1,13 +1,12 @@ --- -title: "SMTP" -description: "Instructions on how to add e-mail notifications to Home Assistant." +title: SMTP +description: Instructions on how to add e-mail notifications to Home Assistant. logo: smtp.png ha_category: - Notifications ha_release: pre 0.7 --- - The `smtp` platform allows you to deliver notifications from Home Assistant to an e-mail recipient. To enable notification by e-mail in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/snapcast.markdown b/source/_integrations/snapcast.markdown index 2ad1d9b3e99..8dc4d17ca90 100644 --- a/source/_integrations/snapcast.markdown +++ b/source/_integrations/snapcast.markdown @@ -1,6 +1,6 @@ --- -title: "Snapcast" -description: "Instructions on how to integrate Snapcast into Home Assistant." +title: Snapcast +description: Instructions on how to integrate Snapcast into Home Assistant. logo: snapcast.png ha_category: - Media Player diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index a0f1c2da504..837ee40e53e 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -1,6 +1,6 @@ --- -title: "Snips" -description: "Instructions on how to integrate Snips within Home Assistant." +title: Snips +description: Instructions on how to integrate Snips within Home Assistant. logo: snips.png ha_category: - Voice diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown index 41bb0d3ae2f..6ae8d3eb7b8 100644 --- a/source/_integrations/snmp.markdown +++ b/source/_integrations/snmp.markdown @@ -1,6 +1,6 @@ --- -title: "SNMP" -description: "Instructions on how to integrate SNMP into Home Assistant." +title: SNMP +description: Instructions on how to integrate SNMP into Home Assistant. logo: network-snmp.png ha_category: - Network diff --git a/source/_integrations/sochain.markdown b/source/_integrations/sochain.markdown index c123f280909..d007e06c2f6 100644 --- a/source/_integrations/sochain.markdown +++ b/source/_integrations/sochain.markdown @@ -1,6 +1,6 @@ --- -title: "SoChain" -description: "Instructions on how to integrate chain.so data within Home Assistant." +title: SoChain +description: Instructions on how to integrate chain.so data within Home Assistant. logo: sochain.png ha_category: - Finance diff --git a/source/_integrations/socialblade.markdown b/source/_integrations/socialblade.markdown index cb46dfa638f..354a150dbd1 100644 --- a/source/_integrations/socialblade.markdown +++ b/source/_integrations/socialblade.markdown @@ -1,6 +1,6 @@ --- title: Social Blade Sensor -description: "Instructions on how to set up Social Blade Sensor within Home Assistant." +description: Instructions on how to set up Social Blade Sensor within Home Assistant. logo: socialblade.png ha_category: - Multimedia diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index b6bfcdee3b4..b47f19193fe 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -1,6 +1,6 @@ --- -title: "SolarEdge Sensor" -description: "Instructions on how to integrate SolarEdge sensor within Home Assistant." +title: SolarEdge Sensor +description: Instructions on how to integrate SolarEdge sensor within Home Assistant. logo: solaredge.png ha_category: - Sensor diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index b41a08ad4d8..e579616dd18 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -1,6 +1,6 @@ --- -title: "SolarEdge Local Sensor" -description: "Instructions on how to integrate SolarEdge sensor within Home Assistant via Local API." +title: SolarEdge Local Sensor +description: Instructions on how to integrate SolarEdge sensor within Home Assistant via Local API. logo: solaredge.png ha_category: - Sensor diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index 1439c4bbf47..e06a3aa92f6 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -1,6 +1,6 @@ --- -title: "Solar-Log Sensor" -description: "Instructions on how to integrate Solar-Log sensors within Home Assistant." +title: Solar-Log Sensor +description: Instructions on how to integrate Solar-Log sensors within Home Assistant. logo: solar-log.png ha_category: Sensor ha_release: 0.101 diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown index aa41aa3ef50..211e8200ade 100644 --- a/source/_integrations/solax.markdown +++ b/source/_integrations/solax.markdown @@ -1,6 +1,6 @@ --- -title: "Solax Sensor" -description: "Instructions on how to integrate Solax sensor within Home Assistant." +title: Solax Sensor +description: Instructions on how to integrate Solax sensor within Home Assistant. logo: solax-logo.png ha_category: - Energy diff --git a/source/_integrations/soma.markdown b/source/_integrations/soma.markdown index 390e45540c0..d16189fc44b 100644 --- a/source/_integrations/soma.markdown +++ b/source/_integrations/soma.markdown @@ -1,12 +1,12 @@ --- -title: "Soma" -description: "Instructions on how to set up the Soma Connect within Home Assistant." +title: Soma +description: Instructions on how to set up the Soma Connect within Home Assistant. logo: soma.png ha_category: - Cover ha_iot_class: Local Polling ha_config_flow: true -ha_release: "0.100" +ha_release: '0.100' --- The Soma integration will allow users to integrate their Soma Smarthome devices into Home Assistant using the Soma Connect hub. @@ -37,4 +37,3 @@ port: default: 3000 type: string {% endconfiguration %} - diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index 61d7bce342f..1a445a7c69c 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -1,6 +1,6 @@ --- -title: "Somfy" -description: "Instructions on how to set up the Somfy hub within Home Assistant." +title: Somfy +description: Instructions on how to set up the Somfy hub within Home Assistant. logo: somfy.png ha_category: - Hub diff --git a/source/_integrations/somfy_mylink.markdown b/source/_integrations/somfy_mylink.markdown index c913e371795..8efe11fcf24 100644 --- a/source/_integrations/somfy_mylink.markdown +++ b/source/_integrations/somfy_mylink.markdown @@ -1,12 +1,12 @@ --- -title: "Somfy MyLink" -description: "Instructions on how to integrate Somfy MyLink devices with Home Assistant." +title: Somfy MyLink +description: Instructions on how to integrate Somfy MyLink devices with Home Assistant. logo: tahoma.png ha_category: - Hub - Cover ha_release: 0.92 -ha_iot_class: "Assumed State" +ha_iot_class: Assumed State --- The `Somfy MyLink` integration is used as an interface to a compatible Somfy MyLink hub utilizing the `Synergy` API. It allows the addition of covers from the Somfy MyLink platform to Home Assistant. diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index acbe8d7d46d..18a5ccc3c2e 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -1,6 +1,6 @@ --- -title: "Sonarr Sensor" -description: "Instructions on how to integrate Sonarr sensors with Home Assistant" +title: Sonarr Sensor +description: Instructions on how to integrate Sonarr sensors with Home Assistant logo: sonarr.png ha_category: - Downloading diff --git a/source/_integrations/songpal.markdown b/source/_integrations/songpal.markdown index 6877ebf0d83..06ea835588e 100644 --- a/source/_integrations/songpal.markdown +++ b/source/_integrations/songpal.markdown @@ -1,6 +1,6 @@ --- -title: "Sony SongPal compatible devices" -description: "Instructions on how to integrate Sony Songpal devices into Home Assistant." +title: Sony SongPal compatible devices +description: Instructions on how to integrate Sony Songpal devices into Home Assistant. logo: sony.png ha_category: - Media Player @@ -58,6 +58,3 @@ For a list of available settings and their values use [`songpal sound`](https:// | `entity_id` | yes | Target entity, leave unset for all devices | | `name` | no | Configuration variable, e.g., `nightmode` | | `value` | no | New configuration value, e.g., `on` | - - - diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 3eede48379c..1ce7e3970f1 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -1,6 +1,6 @@ --- -title: "Sonos" -description: "Instructions on how to integrate Sonos devices into Home Assistant." +title: Sonos +description: Instructions on how to integrate Sonos devices into Home Assistant. logo: sonos.png ha_category: - Media Player diff --git a/source/_integrations/sony_projector.markdown b/source/_integrations/sony_projector.markdown index 632cd71fa74..3fbad6306bb 100644 --- a/source/_integrations/sony_projector.markdown +++ b/source/_integrations/sony_projector.markdown @@ -1,6 +1,6 @@ --- -title: "Sony Projector Switch" -description: "Instructions on how to integrate Sony Projector switches into Home Assistant." +title: Sony Projector Switch +description: Instructions on how to integrate Sony Projector switches into Home Assistant. logo: sony.png ha_category: - Multimedia diff --git a/source/_integrations/soundtouch.markdown b/source/_integrations/soundtouch.markdown index 8bc82bfaaa6..7bb986e41c7 100644 --- a/source/_integrations/soundtouch.markdown +++ b/source/_integrations/soundtouch.markdown @@ -1,6 +1,6 @@ --- -title: "Soundtouch" -description: "Instructions on how to integrate Bose Soundtouch devices into Home Assistant." +title: Soundtouch +description: Instructions on how to integrate Bose Soundtouch devices into Home Assistant. logo: soundtouch.png ha_category: - Media Player diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 719919b3952..584b149dba2 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -1,10 +1,10 @@ --- -title: "SpaceAPI" -description: "Instructions on how to configure the SpaceAPI for Home Assistant." +title: SpaceAPI +description: Instructions on how to configure the SpaceAPI for Home Assistant. logo: spaceapi.png ha_category: - Social -ha_release: "0.70" +ha_release: '0.70' --- The `spaceapi` integration allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](http://spaceapi.net/). diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown index f1caea63da4..6bd5f3ff94c 100644 --- a/source/_integrations/spc.markdown +++ b/source/_integrations/spc.markdown @@ -1,6 +1,6 @@ --- -title: "SPC" -description: "Instructions on how to setup Vanderbilt SPC devices within Home Assistant." +title: SPC +description: Instructions on how to setup Vanderbilt SPC devices within Home Assistant. ha_category: - Hub - Alarm diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index 5b93f1e17b1..dc36955ae90 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -1,6 +1,6 @@ --- -title: "Speedtest.net" -description: "How to integrate Speedtest.net within Home Assistant." +title: Speedtest.net +description: How to integrate Speedtest.net within Home Assistant. logo: speedtest.png ha_category: - System Monitor diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown index 49df07a8796..a768681cb21 100644 --- a/source/_integrations/spider.markdown +++ b/source/_integrations/spider.markdown @@ -1,6 +1,6 @@ --- -title: "Spider" -description: "Instructions on how to setup the Spider hub within Home Assistant." +title: Spider +description: Instructions on how to setup the Spider hub within Home Assistant. logo: spider.png ha_category: - Hub diff --git a/source/_integrations/splunk.markdown b/source/_integrations/splunk.markdown index d0718987d72..4c4ddd11b8c 100644 --- a/source/_integrations/splunk.markdown +++ b/source/_integrations/splunk.markdown @@ -1,6 +1,6 @@ --- -title: "Splunk" -description: "Record events in Splunk." +title: Splunk +description: Record events in Splunk. logo: splunk.png ha_category: - History diff --git a/source/_integrations/spotcrime.markdown b/source/_integrations/spotcrime.markdown index 0da27a6431d..8889ffb50c1 100644 --- a/source/_integrations/spotcrime.markdown +++ b/source/_integrations/spotcrime.markdown @@ -1,6 +1,6 @@ --- -title: "Spot Crime" -description: "Instructions on how to integrate spotcrime.com into Home Assistant." +title: Spot Crime +description: Instructions on how to integrate spotcrime.com into Home Assistant. ha_release: 0.65 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index e38bd74d85e..a52fb4916fd 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -1,6 +1,6 @@ --- -title: "Spotify" -description: "Instructions on how to integrate Spotify into Home Assistant." +title: Spotify +description: Instructions on how to integrate Spotify into Home Assistant. logo: spotify.png ha_category: - Media Player diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index 49f0587968e..fad655a514d 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -1,6 +1,6 @@ --- -title: "SQL Sensor" -description: "Instructions how to integrate SQL sensors into Home Assistant." +title: SQL Sensor +description: Instructions how to integrate SQL sensors into Home Assistant. logo: sql.png ha_category: - Utility diff --git a/source/_integrations/squeezebox.markdown b/source/_integrations/squeezebox.markdown index 2de50583424..cf50b3435fc 100644 --- a/source/_integrations/squeezebox.markdown +++ b/source/_integrations/squeezebox.markdown @@ -1,6 +1,6 @@ --- -title: "Logitech Squeezebox" -description: "Instructions on how to integrate a Logitech Squeezebox player into Home Assistant." +title: Logitech Squeezebox +description: Instructions on how to integrate a Logitech Squeezebox player into Home Assistant. logo: squeezebox.png ha_category: - Media Player @@ -8,7 +8,6 @@ ha_release: pre 0.7 ha_iot_class: Local Polling --- - The `squeezebox` platform allows you to control a [Logitech Squeezebox](https://en.wikipedia.org/wiki/Squeezebox_%28network_music_player%29) music player from Home Assistant. This lets you control Squeezebox hardware like the Classic, Transporter, Duet, Boom, Radio and Touch and of software players like [SoftSqueeze](http://softsqueeze.sourceforge.net/), [SqueezePlayer](https://play.google.com/store/apps/details?id=de.bluegaspode.squeezeplayer) and [SqueezeSlave](https://forums.slimdevices.com/showthread.php?93607-ANNOUNCE-Squeezeslave-1-2-released). To add your Squeezebox player to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index 98fdac9f5ce..f4ce23fc46a 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -1,6 +1,6 @@ --- -title: "SSDP - Simple Service Discovery Protocol" -description: "Discover integrations on the network using the SSDP protocol." +title: SSDP - Simple Service Discovery Protocol +description: Discover integrations on the network using the SSDP protocol. ha_category: - Network ha_release: 0.94 diff --git a/source/_integrations/starline.markdown b/source/_integrations/starline.markdown index 2ff6da66b01..1efe9214c7e 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -1,6 +1,6 @@ --- -title: "StarLine" -description: "Instructions on how to setup your StarLine account with Home Assistant." +title: StarLine +description: Instructions on how to setup your StarLine account with Home Assistant. logo: starline.png ha_category: - Car diff --git a/source/_integrations/starlingbank.markdown b/source/_integrations/starlingbank.markdown index fb413f3aa0b..dbc503b2b46 100644 --- a/source/_integrations/starlingbank.markdown +++ b/source/_integrations/starlingbank.markdown @@ -1,6 +1,6 @@ --- -title: "Starling Bank" -description: "How to integrate your Starling Bank account within Home Assistant." +title: Starling Bank +description: How to integrate your Starling Bank account within Home Assistant. logo: starlingbank.png ha_category: - Finance diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown index 417fa3e7fbb..86070175189 100644 --- a/source/_integrations/startca.markdown +++ b/source/_integrations/startca.markdown @@ -1,6 +1,6 @@ --- -title: "Start.ca" -description: "Instructions on how to integrate Start.ca data usage within Home Assistant." +title: Start.ca +description: Instructions on how to integrate Start.ca data usage within Home Assistant. logo: startca.png ha_category: - Network diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index dd3dd361085..980862259fd 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -1,11 +1,11 @@ --- -title: "Statistics Sensor" -description: "Instructions on how to integrate statistical sensors into Home Assistant." +title: Statistics Sensor +description: Instructions on how to integrate statistical sensors into Home Assistant. logo: home-assistant.png ha_category: - Utility ha_iot_class: Local Polling -ha_release: "0.30" +ha_release: '0.30' ha_qa_scale: internal --- diff --git a/source/_integrations/statsd.markdown b/source/_integrations/statsd.markdown index 7078a0a1d2e..f5e1e658f20 100644 --- a/source/_integrations/statsd.markdown +++ b/source/_integrations/statsd.markdown @@ -1,9 +1,9 @@ --- -title: "StatsD" -description: "Record events in StatsD." +title: StatsD +description: Record events in StatsD. logo: statsd.png ha_category: - - "History" + - History ha_release: 0.12 --- diff --git a/source/_integrations/steam_online.markdown b/source/_integrations/steam_online.markdown index 3a373c13eda..96f19308b87 100644 --- a/source/_integrations/steam_online.markdown +++ b/source/_integrations/steam_online.markdown @@ -1,6 +1,6 @@ --- -title: "Steam" -description: "Instructions on how to set up Steam sensors in Home Assistant." +title: Steam +description: Instructions on how to set up Steam sensors in Home Assistant. logo: steam.png ha_category: - Social diff --git a/source/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown index f0a7796683f..50adf5ddc9d 100644 --- a/source/_integrations/stiebel_eltron.markdown +++ b/source/_integrations/stiebel_eltron.markdown @@ -1,6 +1,6 @@ --- -title: "STIEBEL ELTRON" -description: "Instructions on how to integrate STIEBEL ELTRON integral ventilation and heat pump units into Home Assistant." +title: STIEBEL ELTRON +description: Instructions on how to integrate STIEBEL ELTRON integral ventilation and heat pump units into Home Assistant. logo: stiebel_eltron.png ha_category: - Climate diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index e98e8a42a6a..d0456ead490 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -1,10 +1,10 @@ --- -title: "Stream" -description: "Instructions on how to integrate live streams within Home Assistant." +title: Stream +description: Instructions on how to integrate live streams within Home Assistant. logo: home-assistant.png ha_category: - Other -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Push ha_qa_scale: internal --- diff --git a/source/_integrations/streamlabswater.markdown b/source/_integrations/streamlabswater.markdown index a3ffe8f22de..8d000777c18 100644 --- a/source/_integrations/streamlabswater.markdown +++ b/source/_integrations/streamlabswater.markdown @@ -1,12 +1,12 @@ --- -title: "Streamlabs Water" -description: "Instructions on how to integrate Streamlabs Water devices with Home Assistant." +title: Streamlabs Water +description: Instructions on how to integrate Streamlabs Water devices with Home Assistant. logo: streamlabswater.png ha_category: - Binary Sensor - Sensor -ha_release: "0.95" -ha_iot_class: "Cloud Polling" +ha_release: '0.95' +ha_iot_class: Cloud Polling --- The `Streamlabs Water` integration platform is used to interact with [Streamlabs water monitoring devices](https://www.streamlabswater.com/) in order to retrieve usage information and manage the away mode of the device. The [Streamlabs Water API](https://developer.streamlabswater.com) is used to retrieve daily, monthly, and yearly water usage along with the current away mode. diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown index 89a6f3bc7bc..28004d35421 100644 --- a/source/_integrations/stt.markdown +++ b/source/_integrations/stt.markdown @@ -1,7 +1,7 @@ --- -title: "Speech-to-Text (STT)" -description: "Instructions on how to set up Speech-to-Text (STT) with Home Assistant." -ha_release: "0.102" +title: Speech-to-Text (STT) +description: Instructions on how to set up Speech-to-Text (STT) with Home Assistant. +ha_release: '0.102' --- Speech-to-Text (SST) allows you to stream speech data to the SST API and get text back. diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 3b1add6172f..f0af4e32bd3 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -1,6 +1,6 @@ --- -title: "Suez Water Sensor" -description: "Instructions on how to integrate Suez Water daily data within Home Assistant." +title: Suez Water Sensor +description: Instructions on how to integrate Suez Water daily data within Home Assistant. logo: suez.png ha_release: 0.97 ha_category: diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 2c38f4fe31e..e3d65cd6359 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -1,6 +1,6 @@ --- -title: "Sun" -description: "Instructions on how to track the sun within Home Assistant." +title: Sun +description: Instructions on how to track the sun within Home Assistant. logo: home-assistant.png ha_category: - Environment diff --git a/source/_integrations/supervisord.markdown b/source/_integrations/supervisord.markdown index f11765e5108..143a831e232 100644 --- a/source/_integrations/supervisord.markdown +++ b/source/_integrations/supervisord.markdown @@ -1,10 +1,10 @@ --- -title: "Supervisord" -description: "Instructions on how to integrate Supervisord within Home Assistant." +title: Supervisord +description: Instructions on how to integrate Supervisord within Home Assistant. logo: supervisord.png ha_category: - System Monitor -ha_release: "0.20" +ha_release: '0.20' ha_iot_class: Local Polling --- diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown index cc2b3c4c330..15d8448af01 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -1,6 +1,6 @@ --- -title: "Supla" -description: "Instructions for integration with Supla Cloud's Web API" +title: Supla +description: Instructions for integration with Supla Cloud's Web API logo: supla.png ha_release: 0.92 ha_category: diff --git a/source/_integrations/swiss_hydrological_data.markdown b/source/_integrations/swiss_hydrological_data.markdown index 801dbaf3d34..c8e0464d6bf 100644 --- a/source/_integrations/swiss_hydrological_data.markdown +++ b/source/_integrations/swiss_hydrological_data.markdown @@ -1,6 +1,6 @@ --- -title: "Swiss Hydrological Data" -description: "Instructions on how to integrate hydrological data of Swiss waters within Home Assistant." +title: Swiss Hydrological Data +description: Instructions on how to integrate hydrological data of Swiss waters within Home Assistant. logo: swiss-hydrological-data.png ha_category: - Environment diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index 7c07936f410..37ee3b570bf 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -1,6 +1,6 @@ --- -title: "Swiss Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant." +title: Swiss Public Transport +description: Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant. logo: train.png ha_category: - Transport diff --git a/source/_integrations/swisscom.markdown b/source/_integrations/swisscom.markdown index d8bde268f4f..cde48414aa1 100644 --- a/source/_integrations/swisscom.markdown +++ b/source/_integrations/swisscom.markdown @@ -1,13 +1,12 @@ --- -title: "Swisscom Internet-Box" -description: "Instructions on how to integrate Swisscom Internet-Box into Home Assistant." +title: Swisscom Internet-Box +description: Instructions on how to integrate Swisscom Internet-Box into Home Assistant. logo: swisscom.png ha_category: - Presence Detection ha_release: 0.32 --- - The `swisscom` platform offers presence detection by looking at connected devices to an [Internet-Box](https://www.swisscom.ch/en/residential/help/device/internet-router.html) router from [Swisscom](https://www.swisscom.ch) which is an Internet provider in Switzerland.
    diff --git a/source/_integrations/switch.markdown b/source/_integrations/switch.markdown index bfddce7d1d4..b742c032cef 100644 --- a/source/_integrations/switch.markdown +++ b/source/_integrations/switch.markdown @@ -1,6 +1,6 @@ --- -title: "Switch" -description: "Instructions on how to set up your switches with Home Assistant." +title: Switch +description: Instructions on how to set up your switches with Home Assistant. logo: home-assistant.png ha_category: - Switch diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index a47e696b121..61e6d72cd34 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -1,6 +1,6 @@ --- -title: "Switchbot" -description: "Instructions on how to set up Switchbot switches." +title: Switchbot +description: Instructions on how to set up Switchbot switches. logo: switchbot.png ha_category: - Switch diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 54834bb13da..4e0131d0f56 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -1,6 +1,6 @@ --- -title: "Switcher" -description: "Controlling your Switcher V2 Water Heater." +title: Switcher +description: Controlling your Switcher V2 Water Heater. logo: switcher_boiler.png ha_category: - Switch diff --git a/source/_integrations/switchmate.markdown b/source/_integrations/switchmate.markdown index 2f21aac5de5..ee1ca31c256 100644 --- a/source/_integrations/switchmate.markdown +++ b/source/_integrations/switchmate.markdown @@ -1,6 +1,6 @@ --- -title: "Switchmate" -description: "Instructions on how to set up Switchmate switches." +title: Switchmate +description: Instructions on how to set up Switchmate switches. logo: switchmate-logo-rgb.png ha_category: - Switch diff --git a/source/_integrations/syncthru.markdown b/source/_integrations/syncthru.markdown index 77ee7dc9437..7617e1685b5 100644 --- a/source/_integrations/syncthru.markdown +++ b/source/_integrations/syncthru.markdown @@ -1,6 +1,6 @@ --- -title: "Samsung SyncThru Printer" -description: "Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant." +title: Samsung SyncThru Printer +description: Instructions on how to integrate a Samsung printer providing SyncThru within Home Assistant. logo: samsung.png ha_category: - System Monitor diff --git a/source/_integrations/synology.markdown b/source/_integrations/synology.markdown index 81f8cdea86a..2c1cf4002fd 100644 --- a/source/_integrations/synology.markdown +++ b/source/_integrations/synology.markdown @@ -1,6 +1,6 @@ --- -title: "Synology Camera" -description: "Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant." +title: Synology Camera +description: Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant. logo: synology.png ha_category: - Camera diff --git a/source/_integrations/synology_chat.markdown b/source/_integrations/synology_chat.markdown index 4f42943f3f9..2a8bfccbb33 100644 --- a/source/_integrations/synology_chat.markdown +++ b/source/_integrations/synology_chat.markdown @@ -1,6 +1,6 @@ --- -title: "Synology Chat" -description: "Instructions on how to add a Synology Chat Bot notifications to Home Assistant." +title: Synology Chat +description: Instructions on how to add a Synology Chat Bot notifications to Home Assistant. ha_release: 0.65 logo: synology.png ha_category: diff --git a/source/_integrations/synology_srm.markdown b/source/_integrations/synology_srm.markdown index be12e23c5f4..ba7296cd1fc 100644 --- a/source/_integrations/synology_srm.markdown +++ b/source/_integrations/synology_srm.markdown @@ -1,6 +1,6 @@ --- -title: "Synology SRM" -description: "Instructions on how to integrate Synology SRM routers into Home Assistant." +title: Synology SRM +description: Instructions on how to integrate Synology SRM routers into Home Assistant. logo: synology.png ha_category: - Presence Detection diff --git a/source/_integrations/synologydsm.markdown b/source/_integrations/synologydsm.markdown index cad8a19a30d..d203cfcc7a0 100644 --- a/source/_integrations/synologydsm.markdown +++ b/source/_integrations/synologydsm.markdown @@ -1,6 +1,6 @@ --- -title: "SynologyDSM Sensor" -description: "Instructions on how to integrate the SynologyDSM sensor within Home Assistant." +title: SynologyDSM Sensor +description: Instructions on how to integrate the SynologyDSM sensor within Home Assistant. logo: synology.png ha_category: - System Monitor diff --git a/source/_integrations/syslog.markdown b/source/_integrations/syslog.markdown index e61b3a9dc60..512d6a8a9a2 100644 --- a/source/_integrations/syslog.markdown +++ b/source/_integrations/syslog.markdown @@ -1,6 +1,6 @@ --- -title: "Syslog" -description: "Instructions on how to add syslog notifications to Home Assistant." +title: Syslog +description: Instructions on how to add syslog notifications to Home Assistant. logo: syslog.png ha_category: - Notifications diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index 08944ce9c45..43ca19a36f3 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -1,9 +1,9 @@ --- -title: "System Health" -description: "System Health integration will report system info and allow to run system diagnostics." +title: System Health +description: System Health integration will report system info and allow to run system diagnostics. logo: home-assistant.png ha_category: - - "Other" + - Other ha_qa_scale: internal ha_release: 0.87 --- diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown index 3f8fa87f588..ddb08e3d1a4 100644 --- a/source/_integrations/system_log.markdown +++ b/source/_integrations/system_log.markdown @@ -1,6 +1,6 @@ --- -title: "System Log" -description: "Summary of errors and warnings in Home Assistant during runtime." +title: System Log +description: Summary of errors and warnings in Home Assistant during runtime. logo: home-assistant.png ha_category: - Other @@ -140,4 +140,3 @@ automation: level: info ``` {% endraw %} - diff --git a/source/_integrations/systemmonitor.markdown b/source/_integrations/systemmonitor.markdown index f41871471a9..5bc06777a2a 100644 --- a/source/_integrations/systemmonitor.markdown +++ b/source/_integrations/systemmonitor.markdown @@ -1,6 +1,6 @@ --- -title: "System Monitor" -description: "Instructions on how to monitor the Home Assistant host." +title: System Monitor +description: Instructions on how to monitor the Home Assistant host. logo: system_monitor.png ha_category: - System Monitor diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 05361951686..15533cd7326 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -1,6 +1,6 @@ --- -title: "Tado" -description: "Instructions on how to integrate Tado devices with Home Assistant." +title: Tado +description: Instructions on how to integrate Tado devices with Home Assistant. logo: tado.png ha_category: - Hub diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown index 104bf7368ba..e6b7498d6c4 100644 --- a/source/_integrations/tahoma.markdown +++ b/source/_integrations/tahoma.markdown @@ -1,6 +1,6 @@ --- -title: "Tahoma" -description: "Instructions on how to integrate Somfy Tahoma devices with Home Assistant." +title: Tahoma +description: Instructions on how to integrate Somfy Tahoma devices with Home Assistant. logo: tahoma.png ha_category: - Hub diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 4832d1d4df1..52a30e0c678 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -1,6 +1,6 @@ --- -title: "Tank Utility Sensor" -description: "How to integrate Tank Utility sensors within Home Assistant." +title: Tank Utility Sensor +description: How to integrate Tank Utility sensors within Home Assistant. logo: tank_utility.png ha_category: - Energy diff --git a/source/_integrations/tapsaff.markdown b/source/_integrations/tapsaff.markdown index 83034e963bc..a39810fd179 100644 --- a/source/_integrations/tapsaff.markdown +++ b/source/_integrations/tapsaff.markdown @@ -1,6 +1,6 @@ --- -title: "Taps Aff" -description: "Instructions on how to use the Taps Aff binary sensor in Home Assistant." +title: Taps Aff +description: Instructions on how to use the Taps Aff binary sensor in Home Assistant. logo: tapsaff.png ha_category: - Weather diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown index f36d6b03ffe..06234f91e7f 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -1,6 +1,6 @@ --- -title: "Tautulli activity sensor" -description: "Instructions on how to set up Tautulli sensors in Home Assistant." +title: Tautulli activity sensor +description: Instructions on how to set up Tautulli sensors in Home Assistant. logo: tautulli.png ha_category: - Sensor diff --git a/source/_integrations/tcp.markdown b/source/_integrations/tcp.markdown index 2beb8ec07b4..9163452e2b7 100644 --- a/source/_integrations/tcp.markdown +++ b/source/_integrations/tcp.markdown @@ -1,6 +1,6 @@ --- title: TCP Binary Sensor -description: "Instructions on how to set up TCP within Home Assistant." +description: Instructions on how to set up TCP within Home Assistant. logo: tcp_ip.png ha_category: - Binary Sensor @@ -181,4 +181,4 @@ timeout: required: false type: integer default: 10 -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/ted5000.markdown b/source/_integrations/ted5000.markdown index 7376fd08b85..a214a0dc079 100644 --- a/source/_integrations/ted5000.markdown +++ b/source/_integrations/ted5000.markdown @@ -1,10 +1,10 @@ --- -title: "TED5000 electricity monitoring" -description: "How to add a TED5000 to Home Assistant." +title: TED5000 electricity monitoring +description: How to add a TED5000 to Home Assistant. logo: ted.png ha_category: - Energy -ha_release: "0.30" +ha_release: '0.30' ha_iot_class: Local Polling --- diff --git a/source/_integrations/teksavvy.markdown b/source/_integrations/teksavvy.markdown index 2601d76fadb..3d033787cef 100644 --- a/source/_integrations/teksavvy.markdown +++ b/source/_integrations/teksavvy.markdown @@ -1,6 +1,6 @@ --- -title: "TekSavvy" -description: "Instructions on how to integrate TekSavvy data usage within Home Assistant." +title: TekSavvy +description: Instructions on how to integrate TekSavvy data usage within Home Assistant. logo: teksavvy.png ha_category: - Network diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index 6dd0cb4dfe3..c0cd71ba42a 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -1,13 +1,12 @@ --- -title: "Telegram" -description: "Instructions on how to add Telegram notifications to Home Assistant." +title: Telegram +description: Instructions on how to add Telegram notifications to Home Assistant. logo: telegram.png ha_category: - Notifications ha_release: 0.7.5 --- - The `telegram` platform uses [Telegram](https://web.telegram.org) to deliver notifications from Home Assistant to your Android device, your Windows phone, or your iOS device. ## Setup diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index 1bbb8c34b81..1277776cc7f 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -1,6 +1,6 @@ --- -title: "Telldus Live" -description: "Instructions on how to integrate Telldus Live into Home Assistant." +title: Telldus Live +description: Instructions on how to integrate Telldus Live into Home Assistant. logo: tellduslive.svg ha_category: - Hub diff --git a/source/_integrations/tellstick.markdown b/source/_integrations/tellstick.markdown index 9ecd6476765..22919db444f 100644 --- a/source/_integrations/tellstick.markdown +++ b/source/_integrations/tellstick.markdown @@ -1,6 +1,6 @@ --- -title: "TellStick" -description: "Instructions on how to integrate your TellStick into Home Assistant." +title: TellStick +description: Instructions on how to integrate your TellStick into Home Assistant. logo: telldus_tellstick.png ha_release: pre 0.7 ha_category: diff --git a/source/_integrations/telnet.markdown b/source/_integrations/telnet.markdown index c996c2b794c..6b451421a3e 100644 --- a/source/_integrations/telnet.markdown +++ b/source/_integrations/telnet.markdown @@ -1,6 +1,6 @@ --- -title: "Telnet Switch" -description: "Instructions on how to integrate telnet switches into Home Assistant." +title: Telnet Switch +description: Instructions on how to integrate telnet switches into Home Assistant. ha_category: - Switch ha_release: 0.54 diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index 08e46aed119..cbbe2d633b5 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -1,6 +1,6 @@ --- -title: "TEMPer Sensor" -description: "Instructions on how to integrate TEMPer sensors into Home Assistant." +title: TEMPer Sensor +description: Instructions on how to integrate TEMPer sensors into Home Assistant. ha_category: - DIY ha_iot_class: Local Push diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 8918d530d75..db3114f58ef 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -1,6 +1,6 @@ --- -title: "Template Sensor" -description: "Instructions on how to integrate Template Sensors into Home Assistant." +title: Template Sensor +description: Instructions on how to integrate Template Sensors into Home Assistant. ha_category: - Sensor ha_release: 0.12 diff --git a/source/_integrations/tensorflow.markdown b/source/_integrations/tensorflow.markdown index 55b774c11f5..98aaa606a24 100644 --- a/source/_integrations/tensorflow.markdown +++ b/source/_integrations/tensorflow.markdown @@ -1,6 +1,6 @@ --- -title: "TensorFlow" -description: "Detect and recognize objects with TensorFlow." +title: TensorFlow +description: Detect and recognize objects with TensorFlow. logo: tensorflow.png ha_category: - Image Processing diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index 7c97985d10d..8b50d9781de 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -1,6 +1,6 @@ --- -title: "Tesla" -description: "Instructions on how to integrate Tesla car into Home Assistant." +title: Tesla +description: Instructions on how to integrate Tesla car into Home Assistant. logo: tesla.png ha_category: - Car diff --git a/source/_integrations/tfiac.markdown b/source/_integrations/tfiac.markdown index 6590d8ff4d9..a133047d1b8 100644 --- a/source/_integrations/tfiac.markdown +++ b/source/_integrations/tfiac.markdown @@ -1,6 +1,6 @@ --- -title: "Tfiac AC" -description: "Instructions on how to integrate Tfiac AC devices with Home Assistant." +title: Tfiac AC +description: Instructions on how to integrate Tfiac AC devices with Home Assistant. logo: tfiac.png ha_category: - Climate diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown index 752bf0679d4..04208b14fbc 100644 --- a/source/_integrations/thermoworks_smoke.markdown +++ b/source/_integrations/thermoworks_smoke.markdown @@ -1,6 +1,6 @@ --- -title: "ThermoWorks Smoke Sensor" -description: "Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway." +title: ThermoWorks Smoke Sensor +description: Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway. logo: thermoworks.png ha_category: - Sensor diff --git a/source/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown index 0e1e9a55e03..c12bfb55931 100644 --- a/source/_integrations/thethingsnetwork.markdown +++ b/source/_integrations/thethingsnetwork.markdown @@ -1,6 +1,6 @@ --- -title: "The Things Network" -description: "Instructions for how to integrate The Things Network within Home Assistant." +title: The Things Network +description: Instructions for how to integrate The Things Network within Home Assistant. logo: thethingsnetwork.png ha_category: - Hub @@ -131,4 +131,4 @@ sensor: description: The sensor values with their unit of measurement required: true type: list -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/thingspeak.markdown b/source/_integrations/thingspeak.markdown index 3f6d2f4a78c..158d4ff2446 100644 --- a/source/_integrations/thingspeak.markdown +++ b/source/_integrations/thingspeak.markdown @@ -1,9 +1,9 @@ --- -title: "ThingSpeak" -description: "Record one entity in ThingSpeak" +title: ThingSpeak +description: Record one entity in ThingSpeak logo: thingspeak.png ha_category: - - "History" + - History ha_release: 0.32 --- diff --git a/source/_integrations/thinkingcleaner.markdown b/source/_integrations/thinkingcleaner.markdown index 41a850b5697..f5439aaba61 100644 --- a/source/_integrations/thinkingcleaner.markdown +++ b/source/_integrations/thinkingcleaner.markdown @@ -1,6 +1,6 @@ --- -title: "Thinking Cleaner" -description: "Instructions on how to integrate a ThinkingCleaner within Home Assistant." +title: Thinking Cleaner +description: Instructions on how to integrate a ThinkingCleaner within Home Assistant. logo: thinkingcleaner.png ha_category: - Sensor diff --git a/source/_integrations/thomson.markdown b/source/_integrations/thomson.markdown index 9f809e8e5fb..a212f0366d2 100644 --- a/source/_integrations/thomson.markdown +++ b/source/_integrations/thomson.markdown @@ -1,13 +1,12 @@ --- -title: "Thomson" -description: "Instructions on how to integrate Thomson routers into Home Assistant." +title: Thomson +description: Instructions on how to integrate Thomson routers into Home Assistant. logo: technicolor.png ha_category: - Presence Detection ha_release: 0.7 --- - Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor. This platform allows you to detect presence by looking at connected devices to a [Thomson](https://www.technicolor.com/) device. diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 48053413f3d..1747636d7c6 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -1,6 +1,6 @@ --- -title: "Threshold Binary Sensor" -description: "Instructions on how to integrate threshold binary sensors into Home Assistant." +title: Threshold Binary Sensor +description: Instructions on how to integrate threshold binary sensors into Home Assistant. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index fe74790e370..080d12f05e7 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -1,12 +1,12 @@ --- -title: "Tibber" -description: "Instructions on how to integrate Tibber within Home Assistant." +title: Tibber +description: Instructions on how to integrate Tibber within Home Assistant. logo: tibber.png ha_category: - Energy - Sensor - Notifications -ha_release: 0.80 +ha_release: 0.8 ha_qa_scale: silver ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/tikteck.markdown b/source/_integrations/tikteck.markdown index b92b1927bb9..5fdb5957cb8 100644 --- a/source/_integrations/tikteck.markdown +++ b/source/_integrations/tikteck.markdown @@ -1,6 +1,6 @@ --- -title: "Tikteck" -description: "Instructions on how to setup Tikteck LED bulbs within Home Assistant." +title: Tikteck +description: Instructions on how to setup Tikteck LED bulbs within Home Assistant. ha_category: - Light ha_iot_class: Local Polling diff --git a/source/_integrations/tile.markdown b/source/_integrations/tile.markdown index f2eb9afe5e9..6f44232c879 100644 --- a/source/_integrations/tile.markdown +++ b/source/_integrations/tile.markdown @@ -1,6 +1,6 @@ --- -title: "Tile" -description: "Instructions on how to use Tile to track devices in Home Assistant." +title: Tile +description: Instructions on how to use Tile to track devices in Home Assistant. logo: tile.png ha_release: 0.58 ha_category: diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 4261bf2807f..75ab275f4a3 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -1,6 +1,6 @@ --- -title: "Time & Date" -description: "Instructions on how to integrate the time and the date within Home Assistant." +title: Time & Date +description: Instructions on how to integrate the time and the date within Home Assistant. logo: home-assistant.png ha_category: - Calendar diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index acdac91e773..bc32f6ccf98 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -1,6 +1,6 @@ --- -title: "Timer" -description: "Instructions on how to integrate timers into Home Assistant." +title: Timer +description: Instructions on how to integrate timers into Home Assistant. logo: home-assistant.png ha_category: - Automation diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index 6dcad276aa1..a74473328c6 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -1,6 +1,6 @@ --- -title: "Times of the Day Binary Sensor" -description: "Instructions on how to integrate Times of the Day binary sensors within Home Assistant." +title: Times of the Day Binary Sensor +description: Instructions on how to integrate Times of the Day binary sensors within Home Assistant. ha_category: - Binary Sensor ha_release: 0.89 diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index bedcfa150b8..e0dad321063 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -1,6 +1,6 @@ --- -title: "Todoist" -description: "Instructions on how to integrate Todoist into Home Assistant." +title: Todoist +description: Instructions on how to integrate Todoist into Home Assistant. logo: todoist.png ha_category: - Calendar diff --git a/source/_integrations/tof.markdown b/source/_integrations/tof.markdown index 6aba789f39e..a72636f6df1 100644 --- a/source/_integrations/tof.markdown +++ b/source/_integrations/tof.markdown @@ -1,11 +1,11 @@ --- -title: "Time of Flight sensor using VL53L1X" -description: "Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant." +title: Time of Flight sensor using VL53L1X +description: Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant. logo: raspberry-pi.png ha_category: - DIY - Sensor -ha_release: "0.90" +ha_release: '0.90' ha_iot_class: Local Polling --- diff --git a/source/_integrations/tomato.markdown b/source/_integrations/tomato.markdown index 8bea2170380..f8748bca5ab 100644 --- a/source/_integrations/tomato.markdown +++ b/source/_integrations/tomato.markdown @@ -1,6 +1,6 @@ --- -title: "Tomato" -description: "Instructions on how to integrate Tomato routers into Home Assistant." +title: Tomato +description: Instructions on how to integrate Tomato routers into Home Assistant. logo: tomato.png ha_category: - Presence Detection diff --git a/source/_integrations/toon.markdown b/source/_integrations/toon.markdown index ca9b5c45d6a..21ee1f61268 100644 --- a/source/_integrations/toon.markdown +++ b/source/_integrations/toon.markdown @@ -1,6 +1,6 @@ --- -title: "Toon" -description: "Instructions on how to integrate Toon within Home Assistant." +title: Toon +description: Instructions on how to integrate Toon within Home Assistant. ha_category: - Climate - Binary Sensor diff --git a/source/_integrations/torque.markdown b/source/_integrations/torque.markdown index b4403d7f0e9..215a4e3c65a 100644 --- a/source/_integrations/torque.markdown +++ b/source/_integrations/torque.markdown @@ -1,10 +1,10 @@ --- -title: "Torque (OBD2)" -description: "Instructions on how to integrate Torque sensors into Home Assistant." +title: Torque (OBD2) +description: Instructions on how to integrate Torque sensors into Home Assistant. logo: torque.png ha_category: - Car -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index 0116385285c..4ddddd8a5ef 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -1,6 +1,6 @@ --- -title: "Honeywell TotalConnect Alarm Control Panel" -description: "Instructions on how to integrate TotalConnect alarms into Home Assistant." +title: Honeywell TotalConnect Alarm Control Panel +description: Instructions on how to integrate TotalConnect alarms into Home Assistant. logo: honeywell-tc.png ha_category: - Alarm diff --git a/source/_integrations/touchline.markdown b/source/_integrations/touchline.markdown index 714f000c78a..d6674e4a5a2 100644 --- a/source/_integrations/touchline.markdown +++ b/source/_integrations/touchline.markdown @@ -1,6 +1,6 @@ --- -title: "Roth Touchline" -description: "Instructions on how to integrate Roth Touchline within Home Assistant." +title: Roth Touchline +description: Instructions on how to integrate Roth Touchline within Home Assistant. logo: roth.png ha_category: - Climate diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 3fb5d2860ea..fba27c54077 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -1,6 +1,6 @@ --- -title: "TP-Link Smart Home Devices" -description: "Instructions on integrating TP-Link Smart Home Devices to Home Assistant." +title: TP-Link Smart Home Devices +description: Instructions on integrating TP-Link Smart Home Devices to Home Assistant. logo: tp-link.png ha_category: - Hub diff --git a/source/_integrations/tplink_lte.markdown b/source/_integrations/tplink_lte.markdown index 8089adc25ff..ea1959588bd 100644 --- a/source/_integrations/tplink_lte.markdown +++ b/source/_integrations/tplink_lte.markdown @@ -1,6 +1,6 @@ --- -title: "TP-Link LTE" -description: "Instructions on how to integrate your TP-Link LTE routers within Home Assistant." +title: TP-Link LTE +description: Instructions on how to integrate your TP-Link LTE routers within Home Assistant. logo: tp-link.png ha_release: 0.83 ha_category: diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown index d7ee6a91cf2..f037093f0a5 100644 --- a/source/_integrations/traccar.markdown +++ b/source/_integrations/traccar.markdown @@ -1,6 +1,6 @@ --- -title: "Traccar GPS tracker" -description: "Instructions how to use Traccar GPS tracker to track devices in Home Assistant." +title: Traccar GPS tracker +description: Instructions how to use Traccar GPS tracker to track devices in Home Assistant. logo: traccar.png ha_release: 0.83 ha_category: diff --git a/source/_integrations/trackr.markdown b/source/_integrations/trackr.markdown index d5174a0721d..82ffc9be6a8 100644 --- a/source/_integrations/trackr.markdown +++ b/source/_integrations/trackr.markdown @@ -1,6 +1,6 @@ --- -title: "TrackR" -description: "Instructions on how to use TrackR to track devices in Home Assistant." +title: TrackR +description: Instructions on how to use TrackR to track devices in Home Assistant. logo: trackr.png ha_release: 0.36 ha_category: @@ -8,7 +8,6 @@ ha_category: ha_iot_class: Cloud Polling --- - The `trackr` platform allows you to detect presence using [TrackR](https://www.thetrackr.com/) devices. The official TrackR mobile app handles the tracking of the TrackR devices using your phones Bluetooth and GPS. @@ -33,4 +32,3 @@ password: required: true type: string {% endconfiguration %} - diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 84cf716fc91..a66269cb826 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -1,6 +1,6 @@ --- -title: "IKEA Trådfri (Tradfri)" -description: "Access and control your IKEA Trådfri Gateway and its connected Zigbee-based devices." +title: IKEA Trådfri (Tradfri) +description: Access and control your IKEA Trådfri Gateway and its connected Zigbee-based devices. featured: true logo: ikea.svg ha_iot_class: Local Polling diff --git a/source/_integrations/trafikverket_train.markdown b/source/_integrations/trafikverket_train.markdown index 383e66fa81d..30d9f7bfd6a 100644 --- a/source/_integrations/trafikverket_train.markdown +++ b/source/_integrations/trafikverket_train.markdown @@ -1,6 +1,6 @@ --- -title: "Trafikverket Train" -description: "Instructions how to integrate Trafikverket Train within Home Assistant." +title: Trafikverket Train +description: Instructions how to integrate Trafikverket Train within Home Assistant. logo: trafikverket.png ha_category: - Transport diff --git a/source/_integrations/trafikverket_weatherstation.markdown b/source/_integrations/trafikverket_weatherstation.markdown index 94b9fa8a320..981ec8634cc 100644 --- a/source/_integrations/trafikverket_weatherstation.markdown +++ b/source/_integrations/trafikverket_weatherstation.markdown @@ -1,6 +1,6 @@ --- -title: "Trafikverket WeatherStation" -description: "Instructions how to integrate Trafikverket WeatherStation within Home Assistant." +title: Trafikverket WeatherStation +description: Instructions how to integrate Trafikverket WeatherStation within Home Assistant. logo: trafikverket.png ha_category: - Weather diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index 8f0640beb9a..fc59a076b00 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -1,6 +1,6 @@ --- -title: "Transmission" -description: "Instructions on how to integrate Transmission within Home Assistant." +title: Transmission +description: Instructions on how to integrate Transmission within Home Assistant. logo: transmission.png ha_category: - Downloading diff --git a/source/_integrations/transport_nsw.markdown b/source/_integrations/transport_nsw.markdown index a98c96f938a..6b2ec21b6e6 100644 --- a/source/_integrations/transport_nsw.markdown +++ b/source/_integrations/transport_nsw.markdown @@ -1,6 +1,6 @@ --- -title: "Transport NSW" -description: "Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant." +title: Transport NSW +description: Instructions on how to integrate timetable data for Transport NSW (Australia) within Home Assistant. logo: transport_nsw.png ha_category: - Transport diff --git a/source/_integrations/travisci.markdown b/source/_integrations/travisci.markdown index b7c661fd9ec..314bca9d4f6 100644 --- a/source/_integrations/travisci.markdown +++ b/source/_integrations/travisci.markdown @@ -1,6 +1,6 @@ --- -title: "Travis-CI Sensor" -description: "Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant." +title: Travis-CI Sensor +description: Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant. logo: travisci.svg ha_category: - Sensor diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 5999eef5cb8..4acaf016a3b 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -1,6 +1,6 @@ --- -title: "Trend Binary Sensor" -description: "Instructions on how to integrate Trend binary sensors into Home Assistant." +title: Trend Binary Sensor +description: Instructions on how to integrate Trend binary sensors into Home Assistant. ha_category: - Utility logo: home-assistant.png diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index 4ae608c7fec..50ae4da862b 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -1,6 +1,6 @@ --- -title: "Text-to-Speech (TTS)" -description: "Instructions on how to set up Text-to-Speech (TTS) with Home Assistant." +title: Text-to-Speech (TTS) +description: Instructions on how to set up Text-to-Speech (TTS) with Home Assistant. ha_release: 0.35 --- diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index 23a42089716..d0ccc92aab3 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -1,6 +1,6 @@ --- -title: "Tuya" -description: "Instructions on how to setup the Tuya hub within Home Assistant." +title: Tuya +description: Instructions on how to setup the Tuya hub within Home Assistant. logo: tuya.png ha_category: - Hub diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown index df54c4ab44f..4419f64ade1 100644 --- a/source/_integrations/twentemilieu.markdown +++ b/source/_integrations/twentemilieu.markdown @@ -1,6 +1,6 @@ --- -title: "Twente Milieu" -description: "Instructions on how to integrate Twente Milieu with Home Assistant." +title: Twente Milieu +description: Instructions on how to integrate Twente Milieu with Home Assistant. logo: twentemilieu.png ha_category: - Sensor diff --git a/source/_integrations/twilio.markdown b/source/_integrations/twilio.markdown index aefa7363860..9f567492368 100644 --- a/source/_integrations/twilio.markdown +++ b/source/_integrations/twilio.markdown @@ -1,10 +1,10 @@ --- -title: "Twilio" -description: "Instructions on how to add Twilio notifications to Home Assistant." +title: Twilio +description: Instructions on how to add Twilio notifications to Home Assistant. logo: twilio.png ha_category: - Hub -ha_release: "0.40" +ha_release: '0.40' --- The `twilio` integration enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index bdbc0ef6eb3..ff119fa8220 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -1,6 +1,6 @@ --- -title: "Twilio Call" -description: "Instructions on how to add user notifications to Home Assistant." +title: Twilio Call +description: Instructions on how to add user notifications to Home Assistant. logo: twilio.png ha_category: - Notifications diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 94b4b59edd8..3714cdf8c00 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -1,10 +1,10 @@ --- -title: "Twilio SMS" -description: "Instructions on how to add user notifications to Home Assistant." +title: Twilio SMS +description: Instructions on how to add user notifications to Home Assistant. logo: twilio.png ha_category: - Notifications -ha_release: "0.20" +ha_release: '0.20' --- The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index af97ab66266..4ba79e52fd7 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -1,10 +1,10 @@ --- -title: "Twitch" -description: "Instructions on how to integrate Twitch sensors into Home Assistant." +title: Twitch +description: Instructions on how to integrate Twitch sensors into Home Assistant. logo: twitch.png ha_category: - Social -ha_release: "0.10" +ha_release: '0.10' ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/twitter.markdown b/source/_integrations/twitter.markdown index 3ecf12d08bb..d7094e4747d 100644 --- a/source/_integrations/twitter.markdown +++ b/source/_integrations/twitter.markdown @@ -1,13 +1,12 @@ --- -title: "Twitter" -description: "Instructions on how to add Twitter notifications to Home Assistant." +title: Twitter +description: Instructions on how to add Twitter notifications to Home Assistant. logo: twitter.png ha_category: - Notifications ha_release: 0.12 --- - The `twitter` notification platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. ## Setup diff --git a/source/_integrations/ubee.markdown b/source/_integrations/ubee.markdown index fa0ad03bd25..3e6ce633b62 100644 --- a/source/_integrations/ubee.markdown +++ b/source/_integrations/ubee.markdown @@ -1,6 +1,6 @@ --- -title: "Ubee Router" -description: "Instructions on how to integrate Ubee routers into Home Assistant." +title: Ubee Router +description: Instructions on how to integrate Ubee routers into Home Assistant. logo: ubee.png ha_category: - Presence Detection diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown index e2ced94e075..43f45cc2b5f 100644 --- a/source/_integrations/ubus.markdown +++ b/source/_integrations/ubus.markdown @@ -1,6 +1,6 @@ --- -title: "OpenWRT (ubus)" -description: "Instructions on how to integrate OpenWRT routers into Home Assistant." +title: OpenWRT (ubus) +description: Instructions on how to integrate OpenWRT routers into Home Assistant. logo: openwrt.png ha_category: - Presence Detection diff --git a/source/_integrations/ue_smart_radio.markdown b/source/_integrations/ue_smart_radio.markdown index 58ab2844572..26f314bcf11 100644 --- a/source/_integrations/ue_smart_radio.markdown +++ b/source/_integrations/ue_smart_radio.markdown @@ -1,14 +1,13 @@ --- -title: "Logitech UE Smart Radio" -description: "Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant." +title: Logitech UE Smart Radio +description: Instructions on how to integrate a Logitech UE Smart Radio player into Home Assistant. logo: ueradio.png ha_category: - Media Player -ha_release: "0.60" +ha_release: '0.60' ha_iot_class: Cloud Polling --- - The `ue_radio` platform allows you to control a [Logitech UE Smart Radio](https://www.uesmartradio.com) from Home Assistant. This lets you control both Logitech UE Smart Radios and Logitech Squeezebox Radios that have been updated with the UE Smart Radio update. To add your UE Smart Radio player to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown index 3c2d68650ec..52f9c0704c2 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -1,11 +1,11 @@ --- -title: "UK transport" -description: "Display the current status of UK train and bus departures." +title: UK transport +description: Display the current status of UK train and bus departures. logo: train.png ha_category: - Transport ha_iot_class: Cloud Polling -ha_release: "0.50" +ha_release: '0.50' --- 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](https://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](https://www.transportapi.com/plans/) allows 1000 requests daily, which is sufficient for a single sensor refreshing every 87 seconds. diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 78126ea1664..7a2bd626237 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -1,6 +1,6 @@ --- -title: "UniFi" -description: "Instructions on how to configure UniFi integration with UniFi Controller by Ubiquiti." +title: UniFi +description: Instructions on how to configure UniFi integration with UniFi Controller by Ubiquiti. logo: ubiquiti.png ha_category: - Hub diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index 7da2f26488e..3cf61548889 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -1,6 +1,6 @@ --- -title: "Ubiquiti Unifi direct AP" -description: "Instructions on how to use a Unifi WAP as a device tracker." +title: Ubiquiti Unifi direct AP +description: Instructions on how to use a Unifi WAP as a device tracker. logo: ubiquiti.png ha_category: - Presence Detection @@ -8,7 +8,6 @@ ha_iot_class: Local Polling ha_release: 0.59 --- - This platform allows you to detect presence by looking at devices connected to a [UniFi AP](https://www.ubnt.com/products/#unifi). This device tracker differs form [Ubiquiti Unifi WAP](/integrations/unifi) because it doesn't require the Unifi controller software. To use this device tracker in your installation, add the following to your `configuration.yaml` file: @@ -38,4 +37,3 @@ password: {% endconfiguration %} See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked. - diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index 66fa88c0527..7475c24fd7b 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -1,6 +1,6 @@ --- -title: "UniFi LED" -description: "Instructions on how to configure the UniFi LED integration with UniFi LED Controller by Ubiquiti." +title: UniFi LED +description: Instructions on how to configure the UniFi LED integration with UniFi LED Controller by Ubiquiti. logo: ubiquiti.png ha_category: - Light diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 0d703026305..0ee8a93fdef 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -1,6 +1,6 @@ --- -title: "Universal" -description: "Instructions on how to create a universal media player in Home Assistant." +title: Universal +description: Instructions on how to create a universal media player in Home Assistant. logo: home-assistant.png ha_category: - Media Player diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index 902a952da38..bfc4ff5bc02 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -1,13 +1,12 @@ --- -title: "UPC ConnectBox" -description: "Instructions on how to integrate UPC ConnectBox into Home Assistant." +title: UPC ConnectBox +description: Instructions on how to integrate UPC ConnectBox into Home Assistant. logo: upc.png ha_category: - Presence Detection ha_release: 0.36 --- - The `upc_connect` platform offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria and the Netherlands (under Ziggo). To use a Connect Box in your installation, add the following to your `configuration.yaml` file: @@ -38,4 +37,3 @@ Also known to be working with the following devices: - Unitymedia Connect Box (DE) - Ziggo Connectbox (NL) - Compal CH7465LG ED 3.0 - Connect box (UPC / Vodafone CZ) - diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index 550422bab05..b7952e88d61 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -1,6 +1,6 @@ --- -title: "Updater" -description: "Detecting when Home Assistant updates are available." +title: Updater +description: Detecting when Home Assistant updates are available. logo: home-assistant.png ha_category: - Binary Sensor diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 73f2120adbb..491feed6ee1 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -1,12 +1,12 @@ --- -title: "UPnP" -description: "Internet Gateway Device (IGD) Protocol for Home Assistant." +title: UPnP +description: Internet Gateway Device (IGD) Protocol for Home Assistant. logo: upnp.png ha_category: - Network - Sensor ha_release: 0.18 -ha_iot_class: "Local Polling" +ha_iot_class: Local Polling --- The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index 7ecee673608..64695938a6e 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -1,6 +1,6 @@ --- -title: "Uptime Sensor" -description: "Instructions on how to integrate an uptime sensor into Home Assistant." +title: Uptime Sensor +description: Instructions on how to integrate an uptime sensor into Home Assistant. ha_category: - Utility ha_iot_class: Local Push diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index 93ccce59911..1621caec5ea 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -1,6 +1,6 @@ --- -title: "Uptime Robot" -description: "Instructions on how to set up Uptime Robot within Home Assistant." +title: Uptime Robot +description: Instructions on how to set up Uptime Robot within Home Assistant. logo: uptimerobot.png ha_category: - System Monitor diff --git a/source/_integrations/uscis.markdown b/source/_integrations/uscis.markdown index 91ee0b7d97f..ad8356e7cc2 100644 --- a/source/_integrations/uscis.markdown +++ b/source/_integrations/uscis.markdown @@ -1,6 +1,6 @@ --- title: USCIS Sensor -description: "Instructions on how to set up USCIS within Home Assistant." +description: Instructions on how to set up USCIS within Home Assistant. logo: uscis.png ha_category: - Sensor diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index ef639c6c9b4..c1873c2f717 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -1,6 +1,6 @@ --- -title: "USGS Earthquakes" -description: "Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant." +title: USGS Earthquakes +description: Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant. logo: us-geological-survey.png ha_category: - Geolocation diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 80905cda023..3b9c723bb5a 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -1,6 +1,6 @@ --- -title: "Utility Meter" -description: "Instructions on how to integrate the Utility Meter into Home Assistant." +title: Utility Meter +description: Instructions on how to integrate the Utility Meter into Home Assistant. ha_category: - Sensor ha_release: 0.87 diff --git a/source/_integrations/uvc.markdown b/source/_integrations/uvc.markdown index 56a8711f279..a9fb876719d 100644 --- a/source/_integrations/uvc.markdown +++ b/source/_integrations/uvc.markdown @@ -1,6 +1,6 @@ --- -title: "UniFi Video Camera" -description: "Instructions on how to integrate UVC cameras within Home Assistant." +title: UniFi Video Camera +description: Instructions on how to integrate UVC cameras within Home Assistant. logo: ubiquiti.png ha_category: - Camera diff --git a/source/_integrations/vacuum.markdown b/source/_integrations/vacuum.markdown index de6647273cd..52cf0716955 100644 --- a/source/_integrations/vacuum.markdown +++ b/source/_integrations/vacuum.markdown @@ -1,6 +1,6 @@ --- -title: "Vacuum cleaner robots" -description: "Instructions on how to setup and use vacuum's in Home Assistant." +title: Vacuum cleaner robots +description: Instructions on how to setup and use vacuum's in Home Assistant. ha_release: 0.51 --- diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index 577cf87fe9f..71a112af006 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -1,6 +1,6 @@ --- -title: "Vallox Ventilation Units" -description: "Instructions on how to integrate Vallox ventilation units into Home Assistant." +title: Vallox Ventilation Units +description: Instructions on how to integrate Vallox ventilation units into Home Assistant. logo: vallox.png ha_category: - Fan diff --git a/source/_integrations/vasttrafik.markdown b/source/_integrations/vasttrafik.markdown index 66c3c1e9331..bb6b9db6fe4 100644 --- a/source/_integrations/vasttrafik.markdown +++ b/source/_integrations/vasttrafik.markdown @@ -1,11 +1,11 @@ --- -title: "Västtrafik Public Transport" -description: "Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant." +title: Västtrafik Public Transport +description: Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant. logo: vasttrafik.png ha_category: - Transport ha_iot_class: Cloud Polling -ha_release: "0.30" +ha_release: '0.30' --- 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/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index dd31e09655f..6aa7f70bace 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -1,6 +1,6 @@ --- -title: "Velbus" -description: "Access and control your Velbus devices." +title: Velbus +description: Access and control your Velbus devices. logo: velbus.png ha_category: - Hub @@ -9,7 +9,7 @@ ha_category: - Sensor - Switch ha_iot_class: Local Push -ha_release: "0.50" +ha_release: '0.50' --- The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown index be1a433f9ea..66b0817991c 100644 --- a/source/_integrations/velux.markdown +++ b/source/_integrations/velux.markdown @@ -1,6 +1,6 @@ --- -title: "Velux" -description: "Instructions on how to integrate Velux KLF 200 integration with Home Assistant." +title: Velux +description: Instructions on how to integrate Velux KLF 200 integration with Home Assistant. logo: velux.png ha_category: - Scene diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index f87295d3c99..d4635ee7ab6 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -1,6 +1,6 @@ --- -title: "Venstar Thermostat" -description: "Instructions for how to integrate Venstar WiFi thermostats within Home Assistant." +title: Venstar Thermostat +description: Instructions for how to integrate Venstar WiFi thermostats within Home Assistant. logo: venstar.png ha_category: - Climate @@ -8,7 +8,6 @@ ha_release: 0.62 ha_iot_class: Local Polling --- - The `venstar` climate platform allows you to control [Venstar](https://www.venstar.com/) thermostats from Home Assistant. Venstar thermostats feature a local API that allows for automation without the need for their Skyport cloud service. diff --git a/source/_integrations/vera.markdown b/source/_integrations/vera.markdown index a2611442c4f..b4787b103a4 100644 --- a/source/_integrations/vera.markdown +++ b/source/_integrations/vera.markdown @@ -1,6 +1,6 @@ --- -title: "Vera" -description: "Instructions on how to setup Vera Z-Wave hubs and configure devices within Home Assistant." +title: Vera +description: Instructions on how to setup Vera Z-Wave hubs and configure devices within Home Assistant. logo: vera.png ha_category: - Hub @@ -81,4 +81,4 @@ Please note that some vera sensors (such as _motion_ and _flood_ sensors) are _ Home Assistant will display the state of these sensors regardless of the _armed_ state. -To allow you to change the _armed state_ - Home Assistant will create a switch as well as a sensor for each _Armable_ sensor. You can hide these switches using customization if you wish. \ No newline at end of file +To allow you to change the _armed state_ - Home Assistant will create a switch as well as a sensor for each _Armable_ sensor. You can hide these switches using customization if you wish. diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown index 88c7b4d2e13..1339d16f6a3 100644 --- a/source/_integrations/verisure.markdown +++ b/source/_integrations/verisure.markdown @@ -1,6 +1,6 @@ --- -title: "Verisure" -description: "Instructions on how to setup Verisure devices within Home Assistant." +title: Verisure +description: Instructions on how to setup Verisure devices within Home Assistant. logo: verisure.png ha_category: - Hub diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown index f54e1e68716..07ccd103497 100644 --- a/source/_integrations/versasense.markdown +++ b/source/_integrations/versasense.markdown @@ -1,6 +1,6 @@ --- -title: "VersaSense" -description: "Integrate your VersaSense MicroPnP devices." +title: VersaSense +description: Integrate your VersaSense MicroPnP devices. date: 2019-11-19 14:00 logo: versasense.png ha_release: 0.103 diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 62f7755e94a..37300ad343a 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -1,6 +1,6 @@ --- -title: "Version Sensor" -description: "Instructions on how to integrate a version sensor into Home Assistant." +title: Version Sensor +description: Instructions on how to integrate a version sensor into Home Assistant. ha_category: - Utility ha_iot_class: Local Push diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index b1392d7d1a7..457e0b1961a 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -1,6 +1,6 @@ --- -title: "VeSync Integration" -description: "Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant." +title: VeSync Integration +description: Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant. logo: vesync.png ha_category: - Switch diff --git a/source/_integrations/viaggiatreno.markdown b/source/_integrations/viaggiatreno.markdown index e08db055af5..b1a72249aff 100644 --- a/source/_integrations/viaggiatreno.markdown +++ b/source/_integrations/viaggiatreno.markdown @@ -1,6 +1,6 @@ --- -title: "ViaggiaTreno Italian Railroads" -description: "Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant." +title: ViaggiaTreno Italian Railroads +description: Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant. logo: train.png ha_category: - Transport diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 9cbaf4b3d36..584c6fa6317 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -1,6 +1,6 @@ --- -title: "Viessmann climate controller" -description: "Instructions how to integrate Viessmann heating devices with Home Assistant" +title: Viessmann climate controller +description: Instructions how to integrate Viessmann heating devices with Home Assistant logo: viessmann.png ha_category: Climate ha_release: 0.99 @@ -114,5 +114,3 @@ Sets the target temperature of domestic hot water to the given temperature. | ---------------------- | -------- | ----------- | | `entity_id` | yes | String or list of strings that point at `entity_id`'s of water heater devices to control. To target all entities, use `all` keyword instead of entity_id. | `temperature` | no | New target temperature for water heater - - diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index f00ddafb14d..7616852c848 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -1,6 +1,6 @@ --- -title: "Vivotek Camera" -description: "Instructions on how to integrate Vivotek cameras within Home Assistant." +title: Vivotek Camera +description: Instructions on how to integrate Vivotek cameras within Home Assistant. ha_category: - Camera logo: vivotek.jpg diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 1d1fbccc8dd..10f4e33bb0d 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -1,6 +1,6 @@ --- -title: "Vizio SmartCast Device" -description: "Instructions on how to integrate Vizio SmartCast TVs and sound bars into Home Assistant." +title: Vizio SmartCast Device +description: Instructions on how to integrate Vizio SmartCast TVs and sound bars into Home Assistant. logo: vizio-smartcast.png ha_category: - Media Player diff --git a/source/_integrations/vlc.markdown b/source/_integrations/vlc.markdown index bd1b7dd0add..b24193219ba 100644 --- a/source/_integrations/vlc.markdown +++ b/source/_integrations/vlc.markdown @@ -1,6 +1,6 @@ --- -title: "VLC" -description: "Instructions on how to integrate VLC media player into Home Assistant." +title: VLC +description: Instructions on how to integrate VLC media player into Home Assistant. logo: videolan.png ha_category: - Media Player diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index a0c48e3c46e..3600b5b68d8 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -1,6 +1,6 @@ --- -title: "VLC Telnet" -description: "Instructions on how to integrate VLC media player into Home Assistant using the telnet interface." +title: VLC Telnet +description: Instructions on how to integrate VLC media player into Home Assistant using the telnet interface. logo: videolan.png ha_category: - Media Player diff --git a/source/_integrations/voicerss.markdown b/source/_integrations/voicerss.markdown index f125858799a..e7e5ae6de13 100644 --- a/source/_integrations/voicerss.markdown +++ b/source/_integrations/voicerss.markdown @@ -1,6 +1,6 @@ --- -title: "VoiceRSS" -description: "Instructions on how to setup VoiceRSS TTS with Home Assistant." +title: VoiceRSS +description: Instructions on how to setup VoiceRSS TTS with Home Assistant. logo: voicerss.png ha_category: - Text-to-speech diff --git a/source/_integrations/volkszaehler.markdown b/source/_integrations/volkszaehler.markdown index 93b45faf79a..43449b37e56 100644 --- a/source/_integrations/volkszaehler.markdown +++ b/source/_integrations/volkszaehler.markdown @@ -1,6 +1,6 @@ --- -title: "Volkszaehler" -description: "Instructions on how to integrate Volkszaehler sensors into Home Assistant." +title: Volkszaehler +description: Instructions on how to integrate Volkszaehler sensors into Home Assistant. logo: volkszaehler.png ha_category: - System Monitor diff --git a/source/_integrations/volumio.markdown b/source/_integrations/volumio.markdown index 7c8ffc360d9..45ec0990962 100644 --- a/source/_integrations/volumio.markdown +++ b/source/_integrations/volumio.markdown @@ -1,6 +1,6 @@ --- -title: "Volumio Media Player" -description: "How to set up the Volumio media player platform" +title: Volumio Media Player +description: How to set up the Volumio media player platform logo: volumio.png ha_category: - Media Player diff --git a/source/_integrations/volvooncall.markdown b/source/_integrations/volvooncall.markdown index ce169746f6b..fafa1d1f6e4 100644 --- a/source/_integrations/volvooncall.markdown +++ b/source/_integrations/volvooncall.markdown @@ -1,6 +1,6 @@ --- -title: "Volvo On Call" -description: "Instructions for how to integrate Volvo On Call into Home Assistant." +title: Volvo On Call +description: Instructions for how to integrate Volvo On Call into Home Assistant. logo: volvo.png ha_category: - Car diff --git a/source/_integrations/vultr.markdown b/source/_integrations/vultr.markdown index f4d8c54b078..850504af798 100644 --- a/source/_integrations/vultr.markdown +++ b/source/_integrations/vultr.markdown @@ -1,6 +1,6 @@ --- -title: "Vultr" -description: "Instructions on how to integrate Vultr within Home Assistant." +title: Vultr +description: Instructions on how to integrate Vultr within Home Assistant. ha_category: - System Monitor - Binary Sensor diff --git a/source/_integrations/w800rf32.markdown b/source/_integrations/w800rf32.markdown index a60a126a60e..5decb5738cf 100644 --- a/source/_integrations/w800rf32.markdown +++ b/source/_integrations/w800rf32.markdown @@ -1,6 +1,6 @@ --- -title: "W800rf32" -description: "Instructions on how to integrate a W800rf32(a) into Home Assistant." +title: W800rf32 +description: Instructions on how to integrate a W800rf32(a) into Home Assistant. logo: w800rf32.png ha_category: - Hub diff --git a/source/_integrations/wake_on_lan.markdown b/source/_integrations/wake_on_lan.markdown index f615eaf1df1..2082941e2b3 100644 --- a/source/_integrations/wake_on_lan.markdown +++ b/source/_integrations/wake_on_lan.markdown @@ -1,6 +1,6 @@ --- -title: "Wake on LAN" -description: "Instructions on how to setup the Wake on LAN integration in Home Assistant." +title: Wake on LAN +description: Instructions on how to setup the Wake on LAN integration in Home Assistant. logo: ethernet.png ha_category: - Network diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index 07d890f0492..09d419d9ea7 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -1,6 +1,6 @@ --- -title: "World Air Quality Index" -description: "Instructions on how to setup World Air Quality Index sensor in Home Assistant." +title: World Air Quality Index +description: Instructions on how to setup World Air Quality Index sensor in Home Assistant. logo: waqi.png ha_category: - Health diff --git a/source/_integrations/water_heater.markdown b/source/_integrations/water_heater.markdown index 9ac03694e2c..aa82a25ffbd 100644 --- a/source/_integrations/water_heater.markdown +++ b/source/_integrations/water_heater.markdown @@ -1,6 +1,6 @@ --- -title: "Water Heater" -description: "Instructions on how to setup water heater devices within Home Assistant." +title: Water Heater +description: Instructions on how to setup water heater devices within Home Assistant. ha_release: 0.81 --- diff --git a/source/_integrations/waterfurnace.markdown b/source/_integrations/waterfurnace.markdown index c5c6dd52c8a..0042a0d5599 100644 --- a/source/_integrations/waterfurnace.markdown +++ b/source/_integrations/waterfurnace.markdown @@ -1,6 +1,6 @@ --- -title: "WaterFurnace" -description: "Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant." +title: WaterFurnace +description: Instructions on how to integrate WaterFurnace Geothermal System into Home Assistant. logo: waterfurnace.png ha_category: - Sensor diff --git a/source/_integrations/watson_iot.markdown b/source/_integrations/watson_iot.markdown index 1d94dcad0b3..4aca1417c5c 100644 --- a/source/_integrations/watson_iot.markdown +++ b/source/_integrations/watson_iot.markdown @@ -1,6 +1,6 @@ --- -title: "IBM Watson IoT Platform" -description: "Record events in the IBM Watson IoT Platform." +title: IBM Watson IoT Platform +description: Record events in the IBM Watson IoT Platform. logo: ibm.png ha_category: - History diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 8326a7aed99..893664261c9 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -1,6 +1,6 @@ --- -title: "Watson TTS" -description: "Instructions on how to setup IBM Watson TTS with Home Assistant." +title: Watson TTS +description: Instructions on how to setup IBM Watson TTS with Home Assistant. logo: watson_tts.png ha_category: - Text-to-speech diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown index e223131dd7f..224740691a6 100644 --- a/source/_integrations/waze_travel_time.markdown +++ b/source/_integrations/waze_travel_time.markdown @@ -1,6 +1,6 @@ --- -title: "Waze Travel Time" -description: "Instructions on how to add Waze travel time to Home Assistant." +title: Waze Travel Time +description: Instructions on how to add Waze travel time to Home Assistant. logo: waze.png ha_category: - Transport @@ -152,4 +152,3 @@ sensor: If you plan to use [Waze's live map](https://developers.google.com/waze/iframe/) in Lovelace [iframe](/lovelace/iframe/) then use [https://embed.waze.com/iframe](https://embed.waze.com/iframe) and not the live map URL itself. - diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 36f03d1c081..3e127d89a97 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -1,6 +1,6 @@ --- -title: "Weather" -description: "Instructions on how to setup your Weather platforms with Home Assistant." +title: Weather +description: Instructions on how to setup your Weather platforms with Home Assistant. logo: home-assistant.png ha_category: - Weather diff --git a/source/_integrations/webhook.markdown b/source/_integrations/webhook.markdown index 319fa2a4e22..b0d9a151ddb 100644 --- a/source/_integrations/webhook.markdown +++ b/source/_integrations/webhook.markdown @@ -1,5 +1,5 @@ --- -ha_release: 0.80 +ha_release: 0.8 --- diff --git a/source/_integrations/weblink.markdown b/source/_integrations/weblink.markdown index 89b7d5b62d9..7ffc217f313 100644 --- a/source/_integrations/weblink.markdown +++ b/source/_integrations/weblink.markdown @@ -1,6 +1,6 @@ --- -title: "Weblink" -description: "Instructions on how to setup Links within Home Assistant." +title: Weblink +description: Instructions on how to setup Links within Home Assistant. logo: home-assistant.png ha_category: - Front End diff --git a/source/_integrations/webostv.markdown b/source/_integrations/webostv.markdown index e765f706a52..fb4895bba60 100644 --- a/source/_integrations/webostv.markdown +++ b/source/_integrations/webostv.markdown @@ -1,6 +1,6 @@ --- -title: "LG webOS Smart TV" -description: "Instructions on how to integrate a LG webOS Smart TV within Home Assistant." +title: LG webOS Smart TV +description: Instructions on how to integrate a LG webOS Smart TV within Home Assistant. logo: webos.png ha_category: - Media Player diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index 302f220173b..f7da1d73415 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -1,9 +1,9 @@ --- -title: "Websocket API" -description: "Instructions on how to setup the WebSocket API within Home Assistant." +title: Websocket API +description: Instructions on how to setup the WebSocket API within Home Assistant. logo: home-assistant.png ha_category: - - "Other" + - Other ha_qa_scale: internal ha_release: 0.34 --- diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index f4b671742a0..2247e165456 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -1,6 +1,6 @@ --- -title: "Belkin WeMo" -description: "Instructions on how to integrate Belkin WeMo devices into Home Assistant." +title: Belkin WeMo +description: Instructions on how to integrate Belkin WeMo devices into Home Assistant. logo: belkin_wemo.png ha_category: - Hub diff --git a/source/_integrations/whois.markdown b/source/_integrations/whois.markdown index 216768ef760..1f369922ee3 100644 --- a/source/_integrations/whois.markdown +++ b/source/_integrations/whois.markdown @@ -1,6 +1,6 @@ --- -title: "Whois Sensor" -description: "Instructions on how to integrate WHOIS lookup sensor within Home Assistant." +title: Whois Sensor +description: Instructions on how to integrate WHOIS lookup sensor within Home Assistant. logo: icann.png ha_category: - Network diff --git a/source/_integrations/wink.markdown b/source/_integrations/wink.markdown index 2d886838490..06caf43330f 100644 --- a/source/_integrations/wink.markdown +++ b/source/_integrations/wink.markdown @@ -1,6 +1,6 @@ --- -title: "Wink" -description: "Instructions on how to set up the Wink hub within Home Assistant." +title: Wink +description: Instructions on how to set up the Wink hub within Home Assistant. logo: wink.png ha_category: - Hub diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown index df591737665..59e476c3b02 100644 --- a/source/_integrations/wirelesstag.markdown +++ b/source/_integrations/wirelesstag.markdown @@ -1,6 +1,6 @@ --- -title: "WirelessTag" -description: "Instructions on how to integrate your Wireless Tags sensors within Home Assistant." +title: WirelessTag +description: Instructions on how to integrate your Wireless Tags sensors within Home Assistant. logo: wirelesstag.png ha_category: - Hub diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 5dce6f9877a..179831152d1 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -1,6 +1,6 @@ --- -title: "Withings" -description: "Instructions on how to integrate Withings health products within Home Assistant." +title: Withings +description: Instructions on how to integrate Withings health products within Home Assistant. logo: withings.png ha_category: - Health diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index a1375465be6..41997aea5aa 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -1,6 +1,6 @@ --- -title: "WLED" -description: "Instructions on how to integrate WLED with Home Assistant." +title: WLED +description: Instructions on how to integrate WLED with Home Assistant. logo: wled.png ha_category: - Light diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 7bc5e20e92f..972e9a9ce21 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -1,6 +1,6 @@ --- -title: "Workday Binary Sensor" -description: "Steps to configure the binary workday sensor." +title: Workday Binary Sensor +description: Steps to configure the binary workday sensor. logo: home-assistant.png ha_category: - Utility diff --git a/source/_integrations/worldclock.markdown b/source/_integrations/worldclock.markdown index b22f2766152..c4cc3913cf9 100644 --- a/source/_integrations/worldclock.markdown +++ b/source/_integrations/worldclock.markdown @@ -1,6 +1,6 @@ --- -title: "Worldclock" -description: "Instructions on how to integrate a Worldclock within Home Assistant." +title: Worldclock +description: Instructions on how to integrate a Worldclock within Home Assistant. logo: home-assistant.png ha_category: - Calendar diff --git a/source/_integrations/worldtidesinfo.markdown b/source/_integrations/worldtidesinfo.markdown index 34a99c5fc3f..3f9857275fb 100644 --- a/source/_integrations/worldtidesinfo.markdown +++ b/source/_integrations/worldtidesinfo.markdown @@ -1,6 +1,6 @@ --- -title: "World Tides" -description: "Instructions on how to add Tides information to Home Assistant." +title: World Tides +description: Instructions on how to add Tides information to Home Assistant. logo: worldtidesinfo.png ha_category: - Environment diff --git a/source/_integrations/worxlandroid.markdown b/source/_integrations/worxlandroid.markdown index 43443c9d00b..341f2136edc 100644 --- a/source/_integrations/worxlandroid.markdown +++ b/source/_integrations/worxlandroid.markdown @@ -1,6 +1,6 @@ --- -title: "Worx Landroid" -description: "Instructions on how to integrate Worx Landroid WG796E.1 or WG797E as sensors within Home Assistant." +title: Worx Landroid +description: Instructions on how to integrate Worx Landroid WG796E.1 or WG797E as sensors within Home Assistant. logo: worx.png ha_category: - DIY diff --git a/source/_integrations/wsdot.markdown b/source/_integrations/wsdot.markdown index b463e0685ff..7ade29602c3 100644 --- a/source/_integrations/wsdot.markdown +++ b/source/_integrations/wsdot.markdown @@ -1,6 +1,6 @@ --- -title: "Washington State DOT" -description: "Instructions on how to integrate WSDOT data into your home." +title: Washington State DOT +description: Instructions on how to integrate WSDOT data into your home. logo: wsdot.png ha_category: - Transport diff --git a/source/_integrations/wunderground.markdown b/source/_integrations/wunderground.markdown index abc4df68b4f..ab6c7ad725a 100644 --- a/source/_integrations/wunderground.markdown +++ b/source/_integrations/wunderground.markdown @@ -1,6 +1,6 @@ --- -title: "Weather Underground (WUnderground)" -description: "Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant." +title: Weather Underground (WUnderground) +description: Instructions on how to integrate Weather Underground (WUnderground) Weather within Home Assistant. logo: wunderground.png ha_category: - Weather diff --git a/source/_integrations/wunderlist.markdown b/source/_integrations/wunderlist.markdown index 0a3e3367744..64fe62efa6f 100644 --- a/source/_integrations/wunderlist.markdown +++ b/source/_integrations/wunderlist.markdown @@ -1,6 +1,6 @@ --- -title: "Wunderlist" -description: "Instructions on how to use Wunderlist with Home Assistant." +title: Wunderlist +description: Instructions on how to use Wunderlist with Home Assistant. logo: wunderlist.png ha_category: - Calendar diff --git a/source/_integrations/wwlln.markdown b/source/_integrations/wwlln.markdown index c5720cf57a7..a9d61370f90 100644 --- a/source/_integrations/wwlln.markdown +++ b/source/_integrations/wwlln.markdown @@ -1,6 +1,6 @@ --- -title: "World Wide Lightning Location Network (WWLLN)" -description: "Instructions on how to integrate WWLLN within Home Assistant." +title: World Wide Lightning Location Network (WWLLN) +description: Instructions on how to integrate WWLLN within Home Assistant. logo: wwlln.jpg ha_category: Geolocation ha_release: 0.96 diff --git a/source/_integrations/x10.markdown b/source/_integrations/x10.markdown index 8127de694b4..610d18a0d27 100644 --- a/source/_integrations/x10.markdown +++ b/source/_integrations/x10.markdown @@ -1,6 +1,6 @@ --- -title: "X10" -description: "Instructions on how to setup X10 devices within Home Assistant." +title: X10 +description: Instructions on how to setup X10 devices within Home Assistant. logo: x10.gif ha_category: - Light diff --git a/source/_integrations/xbox_live.markdown b/source/_integrations/xbox_live.markdown index 3308b649b76..84f1c105669 100644 --- a/source/_integrations/xbox_live.markdown +++ b/source/_integrations/xbox_live.markdown @@ -1,6 +1,6 @@ --- -title: "Xbox Live" -description: "Instructions on how to set up Xbox Live sensors in Home Assistant." +title: Xbox Live +description: Instructions on how to set up Xbox Live sensors in Home Assistant. logo: xbox-live.png ha_category: - Social @@ -42,4 +42,3 @@ xuid: required: true type: list {% endconfiguration %} - diff --git a/source/_integrations/xeoma.markdown b/source/_integrations/xeoma.markdown index 4017f37c8fb..87207ddfe8f 100644 --- a/source/_integrations/xeoma.markdown +++ b/source/_integrations/xeoma.markdown @@ -1,6 +1,6 @@ --- -title: "Xeoma Camera" -description: "Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant" +title: Xeoma Camera +description: Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant logo: xeoma.png ha_category: - Camera diff --git a/source/_integrations/xfinity.markdown b/source/_integrations/xfinity.markdown index 33b4728054f..a86e842e040 100644 --- a/source/_integrations/xfinity.markdown +++ b/source/_integrations/xfinity.markdown @@ -1,11 +1,11 @@ --- -title: "Xfinity Gateway" -description: "Instructions on how to integrate Xfinity Gateways into Home Assistant." +title: Xfinity Gateway +description: Instructions on how to integrate Xfinity Gateways into Home Assistant. ha_category: - Presence Detection logo: xfinity.svg -ha_release: 0.90 -ha_iot_class: "Local Polling" +ha_release: 0.9 +ha_iot_class: Local Polling --- The `xfinity` device tracker platform offers presence detection by looking at connected devices to an Xfinity gateway. diff --git a/source/_integrations/xiaomi.markdown b/source/_integrations/xiaomi.markdown index 5c742048fab..d4d9717893a 100644 --- a/source/_integrations/xiaomi.markdown +++ b/source/_integrations/xiaomi.markdown @@ -1,6 +1,6 @@ --- -title: "Xiaomi Cameras" -description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." +title: Xiaomi Cameras +description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. logo: xiaomi.png ha_category: - Camera diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index ef5198ae0b8..374e347174c 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -1,6 +1,6 @@ --- -title: "Xiaomi Gateway (Aqara)" -description: "Instructions for how to integrate the Xiaomi Gateway (Aqara) within Home Assistant." +title: Xiaomi Gateway (Aqara) +description: Instructions for how to integrate the Xiaomi Gateway (Aqara) within Home Assistant. logo: xiaomi.png ha_category: - Hub diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 1cc8a0f2082..d2ce22e960c 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -1,6 +1,6 @@ --- -title: "Xiaomi Mi WiFi Repeater 2" -description: "Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant." +title: Xiaomi Mi WiFi Repeater 2 +description: Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant. logo: xiaomi.png ha_category: - Presence Detection diff --git a/source/_integrations/xiaomi_tv.markdown b/source/_integrations/xiaomi_tv.markdown index 083113d7f6e..6cb1c9ce71e 100644 --- a/source/_integrations/xiaomi_tv.markdown +++ b/source/_integrations/xiaomi_tv.markdown @@ -1,6 +1,6 @@ --- -title: "Xiaomi TV" -description: "Instructions on how to integrate a Xiaomi TV into Home Assistant." +title: Xiaomi TV +description: Instructions on how to integrate a Xiaomi TV into Home Assistant. logo: xiaomi.png ha_category: - Media Player diff --git a/source/_integrations/xmpp.markdown b/source/_integrations/xmpp.markdown index 9c0083da870..5cb9204ce1e 100644 --- a/source/_integrations/xmpp.markdown +++ b/source/_integrations/xmpp.markdown @@ -1,13 +1,12 @@ --- -title: "Jabber (XMPP)" -description: "Instructions on how to add Jabber (XMPP) notifications to Home Assistant." +title: Jabber (XMPP) +description: Instructions on how to add Jabber (XMPP) notifications to Home Assistant. logo: xmpp.png ha_category: - Notifications ha_release: pre 0.7 --- - The `xmpp` notification platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](https://xmpp.org/) account. ## Configuration diff --git a/source/_integrations/xs1.markdown b/source/_integrations/xs1.markdown index 59c9e1904ad..77a903754f1 100644 --- a/source/_integrations/xs1.markdown +++ b/source/_integrations/xs1.markdown @@ -1,6 +1,6 @@ --- -title: "EZcontrol XS1" -description: "Instructions on how to integrate an XS1 Gateway within Home Assistant." +title: EZcontrol XS1 +description: Instructions on how to integrate an XS1 Gateway within Home Assistant. logo: xs1.jpg ha_category: - Hub diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown index f09406bbc68..0f39506d7e8 100644 --- a/source/_integrations/yale_smart_alarm.markdown +++ b/source/_integrations/yale_smart_alarm.markdown @@ -1,6 +1,6 @@ --- -title: "Yale Smart Alarm Control" -description: "Instructions on how to integrate Yale Smart Alarms into Home Assistant." +title: Yale Smart Alarm Control +description: Instructions on how to integrate Yale Smart Alarms into Home Assistant. logo: yale.png ha_category: - Alarm diff --git a/source/_integrations/yamaha.markdown b/source/_integrations/yamaha.markdown index 2bcd02479be..2b5e0e3bcff 100644 --- a/source/_integrations/yamaha.markdown +++ b/source/_integrations/yamaha.markdown @@ -1,6 +1,6 @@ --- -title: "Yamaha Network Receivers" -description: "Instructions on how to integrate Yamaha Network Receivers into Home Assistant." +title: Yamaha Network Receivers +description: Instructions on how to integrate Yamaha Network Receivers into Home Assistant. logo: yamaha.png ha_category: - Media Player diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index eb37674ece6..08bbc8ba8c8 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -1,6 +1,6 @@ --- -title: "Yamaha MusicCast Receivers" -description: "Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant." +title: Yamaha MusicCast Receivers +description: Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant. logo: yamaha.png ha_category: - Media Player diff --git a/source/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index bbb22373c3b..6e4cfd64560 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -1,11 +1,11 @@ --- -title: "Yandex transport" -description: "Instructions on how to set up Yandex transport with Home Assistant." +title: Yandex transport +description: Instructions on how to set up Yandex transport with Home Assistant. logo: yandex.png ha_category: - Sensor - Transport -ha_release: "0.100" +ha_release: '0.100' --- The `yandex_tranport` sensor platform uses [Yandex Maps](https://maps.yandex.ru/) it will give you the time until the next departure time from a bus/tramway/etc stop. diff --git a/source/_integrations/yandextts.markdown b/source/_integrations/yandextts.markdown index 1787af7cc07..a5262fc60e0 100644 --- a/source/_integrations/yandextts.markdown +++ b/source/_integrations/yandextts.markdown @@ -1,6 +1,6 @@ --- -title: "Yandex TTS" -description: "Instructions on how to setup Yandex SpeechKit TTS with Home Assistant." +title: Yandex TTS +description: Instructions on how to setup Yandex SpeechKit TTS with Home Assistant. logo: yandex.png ha_category: - Text-to-speech diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index d24968a0429..c2c2ef6706e 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -1,6 +1,6 @@ --- -title: "Yeelight Wifi Bulb" -description: "Instructions on how to setup Yeelight Wifi devices within Home Assistant." +title: Yeelight Wifi Bulb +description: Instructions on how to setup Yeelight Wifi devices within Home Assistant. logo: yeelight.png ha_category: - Light diff --git a/source/_integrations/yeelightsunflower.markdown b/source/_integrations/yeelightsunflower.markdown index 7da22be327a..af632aaeee4 100644 --- a/source/_integrations/yeelightsunflower.markdown +++ b/source/_integrations/yeelightsunflower.markdown @@ -1,6 +1,6 @@ --- -title: "Yeelight Sunflower Bulb" -description: "Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant." +title: Yeelight Sunflower Bulb +description: Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant. logo: yeelight.png ha_category: - Light diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index 322cde2d07f..a7f13294fdb 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -1,6 +1,6 @@ --- -title: "Yesss SMS" -description: "Instructions on how to add Yesss-SMS notifications to Home Assistant." +title: Yesss SMS +description: Instructions on how to add Yesss-SMS notifications to Home Assistant. logo: yesssat.png ha_category: - Notifications diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index b37eb945d93..43b9c633226 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -1,6 +1,6 @@ --- -title: "Yi Home Camera" -description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." +title: Yi Home Camera +description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. logo: yi.png ha_category: - Camera diff --git a/source/_integrations/yr.markdown b/source/_integrations/yr.markdown index f266364f81c..902ce9b1bae 100644 --- a/source/_integrations/yr.markdown +++ b/source/_integrations/yr.markdown @@ -1,6 +1,6 @@ --- -title: "YR" -description: "Instructions on how to integrate Yr.no within Home Assistant." +title: YR +description: Instructions on how to integrate Yr.no within Home Assistant. logo: yr.png ha_category: - Weather diff --git a/source/_integrations/yweather.markdown b/source/_integrations/yweather.markdown index 3f794b62e54..ef9b69df738 100644 --- a/source/_integrations/yweather.markdown +++ b/source/_integrations/yweather.markdown @@ -1,6 +1,6 @@ --- -title: "Yahoo Weather" -description: "Instructions on how to integrate Yahoo Weather within Home Assistant." +title: Yahoo Weather +description: Instructions on how to integrate Yahoo Weather within Home Assistant. logo: yahooweather.png ha_category: - Weather diff --git a/source/_integrations/zabbix.markdown b/source/_integrations/zabbix.markdown index a7cbae866ce..20470892bbf 100644 --- a/source/_integrations/zabbix.markdown +++ b/source/_integrations/zabbix.markdown @@ -1,6 +1,6 @@ --- -title: "Zabbix" -description: "Instructions on how to integrate Zabbix into Home Assistant." +title: Zabbix +description: Instructions on how to integrate Zabbix into Home Assistant. logo: zabbix.png ha_category: - System Monitor diff --git a/source/_integrations/zamg.markdown b/source/_integrations/zamg.markdown index 3fda67db4b5..7714f750939 100644 --- a/source/_integrations/zamg.markdown +++ b/source/_integrations/zamg.markdown @@ -1,6 +1,6 @@ --- -title: "ZAMG" -description: "Instructions on how to integrate ZAMG within Home Assistant." +title: ZAMG +description: Instructions on how to integrate ZAMG within Home Assistant. logo: zamg.png ha_category: - Weather diff --git a/source/_integrations/zengge.markdown b/source/_integrations/zengge.markdown index b141d328173..3f7b42de092 100644 --- a/source/_integrations/zengge.markdown +++ b/source/_integrations/zengge.markdown @@ -1,6 +1,6 @@ --- -title: "Zengge" -description: "Instructions on how to integrate Zengge Bluetooth bulbs into Home Assistant." +title: Zengge +description: Instructions on how to integrate Zengge Bluetooth bulbs into Home Assistant. logo: zengge.png ha_category: - Light diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index 1888e4ab651..d4f7bff99dc 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -1,6 +1,6 @@ --- -title: "Zeroconf/Avahi/Bonjour" -description: "Exposes Home Assistant using the Zeroconf protocol." +title: Zeroconf/Avahi/Bonjour +description: Exposes Home Assistant using the Zeroconf protocol. ha_category: - Network ha_qa_scale: internal diff --git a/source/_integrations/zestimate.markdown b/source/_integrations/zestimate.markdown index 9468b7c0321..affd98a54c3 100644 --- a/source/_integrations/zestimate.markdown +++ b/source/_integrations/zestimate.markdown @@ -1,6 +1,6 @@ --- -title: "Zestimate" -description: "Instructions on how to integrate the Zestimate sensor into Home Assistant." +title: Zestimate +description: Instructions on how to integrate the Zestimate sensor into Home Assistant. ha_category: - Sensor logo: zillow.png diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index fea43dc9d6d..0f44b5eff17 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -1,6 +1,6 @@ --- -title: "Zigbee Home Automation" -description: "Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant." +title: Zigbee Home Automation +description: Instructions on how to integrate your Zigbee Home Automation (ZHA) devices within Home Assistant. logo: zigbee.png ha_category: - Hub diff --git a/source/_integrations/zhong_hong.markdown b/source/_integrations/zhong_hong.markdown index 69c69edc1ca..4a7f7622997 100644 --- a/source/_integrations/zhong_hong.markdown +++ b/source/_integrations/zhong_hong.markdown @@ -1,6 +1,6 @@ --- -title: "ZhongHong Thermostats Controller" -description: "Instructions on how to integrate ZhongHong Support thermostats within Home Assistant." +title: ZhongHong Thermostats Controller +description: Instructions on how to integrate ZhongHong Support thermostats within Home Assistant. logo: zhong_hong.png ha_category: - Climate @@ -8,7 +8,6 @@ ha_release: 0.72 ha_iot_class: Local Push --- - The `zhong_hong` climate platform lets you control [Zhonghong HVAC Gateway Controller](http://zhonghongtech.cn/v1/index.shtml) thermostats through Home Assistant. To set it up, add the following information to your configuration.yaml file: diff --git a/source/_integrations/zigbee.markdown b/source/_integrations/zigbee.markdown index 9424890bad2..0803edb81e1 100644 --- a/source/_integrations/zigbee.markdown +++ b/source/_integrations/zigbee.markdown @@ -1,6 +1,6 @@ --- -title: "Zigbee" -description: "Instructions on how to integrate a Zigbee network with Home Assistant." +title: Zigbee +description: Instructions on how to integrate a Zigbee network with Home Assistant. logo: zigbee.png ha_category: - Binary Sensor diff --git a/source/_integrations/ziggo_mediabox_xl.markdown b/source/_integrations/ziggo_mediabox_xl.markdown index df55f5e2bc7..7bf3a5c1b9e 100644 --- a/source/_integrations/ziggo_mediabox_xl.markdown +++ b/source/_integrations/ziggo_mediabox_xl.markdown @@ -1,11 +1,11 @@ --- -title: "Ziggo Mediabox XL" -description: "Instructions on how to integrate the Ziggo Mediabox XL into Home Assistant." +title: Ziggo Mediabox XL +description: Instructions on how to integrate the Ziggo Mediabox XL into Home Assistant. logo: ziggo.png ha_category: - Media Player ha_iot_class: Local Polling -ha_release: "0.60" +ha_release: '0.60' --- The `ziggo_mediabox_xl` integration allows you to control a [Ziggo](https://www.ziggo.nl/) Mediabox XL from Home Assistant. diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index 4eccefd4d13..749509f6967 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -1,6 +1,6 @@ --- -title: "Zone" -description: "Instructions on how to set up zones within Home Assistant." +title: Zone +description: Instructions on how to set up zones within Home Assistant. logo: home-assistant.png ha_category: - Organization diff --git a/source/_integrations/zoneminder.markdown b/source/_integrations/zoneminder.markdown index 7052152886f..435c3c7805d 100644 --- a/source/_integrations/zoneminder.markdown +++ b/source/_integrations/zoneminder.markdown @@ -1,6 +1,6 @@ --- -title: "ZoneMinder" -description: "How to integrate ZoneMinder into Home Assistant." +title: ZoneMinder +description: How to integrate ZoneMinder into Home Assistant. logo: zoneminder.png ha_category: - Hub diff --git a/source/_integrations/zwave.markdown b/source/_integrations/zwave.markdown index 03b7fce9a06..d9b83eed838 100644 --- a/source/_integrations/zwave.markdown +++ b/source/_integrations/zwave.markdown @@ -1,6 +1,6 @@ --- -title: "Z-Wave" -description: "Instructions on how to integrate your existing Z-Wave within Home Assistant." +title: Z-Wave +description: Instructions on how to integrate your existing Z-Wave within Home Assistant. logo: z-wave.png ha_category: - Hub From 2c2cd0305f524fed1ddf77c95217361ceebdcf6a Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 14:50:24 +0100 Subject: [PATCH 212/236] Sync title/names with codebase (I-S) --- source/_integrations/ialarm.markdown | 2 +- source/_integrations/icloud.markdown | 2 +- source/_integrations/idteck_prox.markdown | 2 +- source/_integrations/ihc.markdown | 2 +- source/_integrations/imap.markdown | 2 +- source/_integrations/incomfort.markdown | 2 +- source/_integrations/integration.markdown | 2 +- source/_integrations/ios.markdown | 2 +- source/_integrations/iperf3.markdown | 2 +- source/_integrations/ipma.markdown | 2 +- source/_integrations/iss.markdown | 2 +- source/_integrations/isy994.markdown | 2 +- source/_integrations/itach.markdown | 2 +- source/_integrations/itunes.markdown | 2 +- source/_integrations/izone.markdown | 2 +- source/_integrations/juicenet.markdown | 2 +- source/_integrations/kankun.markdown | 2 +- source/_integrations/kiwi.markdown | 2 +- source/_integrations/kwb.markdown | 2 +- source/_integrations/lacrosse.markdown | 2 +- source/_integrations/lannouncer.markdown | 2 +- source/_integrations/launch_library.markdown | 2 +- source/_integrations/lg_netcast.markdown | 2 +- source/_integrations/lifx_cloud.markdown | 2 +- source/_integrations/linksys_smart.markdown | 2 +- source/_integrations/linky.markdown | 2 +- source/_integrations/lock.markdown | 2 +- source/_integrations/lockitron.markdown | 2 +- source/_integrations/london_air.markdown | 2 +- source/_integrations/lupusec.markdown | 2 +- source/_integrations/lw12wifi.markdown | 2 +- source/_integrations/lyft.markdown | 2 +- source/_integrations/magicseaweed.markdown | 2 +- source/_integrations/manual.markdown | 2 +- source/_integrations/manual_mqtt.markdown | 2 +- source/_integrations/maxcube.markdown | 2 +- source/_integrations/mcp23017.markdown | 2 +- source/_integrations/met.markdown | 2 +- source/_integrations/meteoalarm.markdown | 2 +- source/_integrations/mfi.markdown | 2 +- source/_integrations/microsoft.markdown | 2 +- source/_integrations/miflora.markdown | 2 +- source/_integrations/mill.markdown | 2 +- source/_integrations/min_max.markdown | 2 +- source/_integrations/mitemp_bt.markdown | 2 +- source/_integrations/mjpeg.markdown | 2 +- source/_integrations/mobile_app.markdown | 2 +- source/_integrations/modem_callerid.markdown | 2 +- source/_integrations/moon.markdown | 2 +- source/_integrations/mpchc.markdown | 2 +- source/_integrations/mqtt_json.markdown | 2 +- source/_integrations/mychevy.markdown | 2 +- source/_integrations/myq.markdown | 2 +- source/_integrations/mystrom.markdown | 2 +- source/_integrations/namecheapdns.markdown | 2 +- source/_integrations/nanoleaf.markdown | 2 +- source/_integrations/neato.markdown | 2 +- source/_integrations/nederlandse_spoorwegen.markdown | 2 +- source/_integrations/nello.markdown | 2 +- source/_integrations/netio.markdown | 2 +- source/_integrations/neurio_energy.markdown | 2 +- source/_integrations/nextbus.markdown | 2 +- source/_integrations/niko_home_control.markdown | 2 +- source/_integrations/nilu.markdown | 2 +- source/_integrations/nmap_tracker.markdown | 2 +- source/_integrations/nmbs.markdown | 2 +- source/_integrations/no_ip.markdown | 2 +- source/_integrations/norway_air.markdown | 2 +- source/_integrations/nsw_fuel_station.markdown | 2 +- source/_integrations/nuki.markdown | 2 +- source/_integrations/nut.markdown | 2 +- source/_integrations/nws.markdown | 2 +- source/_integrations/nx584.markdown | 2 +- source/_integrations/onboarding.markdown | 2 +- source/_integrations/onewire.markdown | 2 +- source/_integrations/onvif.markdown | 2 +- source/_integrations/openevse.markdown | 2 +- source/_integrations/opengarage.markdown | 2 +- source/_integrations/openhardwaremonitor.markdown | 2 +- source/_integrations/openhome.markdown | 2 +- source/_integrations/opensensemap.markdown | 2 +- source/_integrations/openuv.markdown | 2 +- source/_integrations/openweathermap.markdown | 2 +- source/_integrations/opple.markdown | 2 +- source/_integrations/orangepi_gpio.markdown | 2 +- source/_integrations/oru.markdown | 2 +- source/_integrations/orvibo.markdown | 2 +- source/_integrations/osramlightify.markdown | 2 +- source/_integrations/otp.markdown | 2 +- source/_integrations/owntracks.markdown | 2 +- source/_integrations/panel_custom.markdown | 2 +- source/_integrations/panel_iframe.markdown | 2 +- source/_integrations/pcal9535a.markdown | 2 +- source/_integrations/persistent_notification.markdown | 2 +- source/_integrations/picotts.markdown | 2 +- source/_integrations/pioneer.markdown | 2 +- source/_integrations/plant.markdown | 2 +- source/_integrations/plex.markdown | 2 +- source/_integrations/plugwise.markdown | 2 +- source/_integrations/postnl.markdown | 2 +- source/_integrations/prezzibenzina.markdown | 2 +- source/_integrations/proliphix.markdown | 2 +- source/_integrations/ptvsd.markdown | 2 +- source/_integrations/pulseaudio_loopback.markdown | 2 +- source/_integrations/pushbullet.markdown | 2 +- source/_integrations/pvoutput.markdown | 2 +- source/_integrations/pyload.markdown | 2 +- source/_integrations/qbittorrent.markdown | 2 +- source/_integrations/qnap.markdown | 2 +- source/_integrations/qrcode.markdown | 2 +- source/_integrations/qwikswitch.markdown | 2 +- source/_integrations/radarr.markdown | 2 +- source/_integrations/radiotherm.markdown | 2 +- source/_integrations/raincloud.markdown | 2 +- source/_integrations/raspyrfm.markdown | 2 +- source/_integrations/recollect_waste.markdown | 2 +- source/_integrations/recswitch.markdown | 2 +- source/_integrations/rejseplanen.markdown | 2 +- source/_integrations/remote.markdown | 2 +- source/_integrations/remote_rpi_gpio.markdown | 2 +- source/_integrations/repetier.markdown | 2 +- source/_integrations/rest.markdown | 2 +- source/_integrations/rfxtrx.markdown | 2 +- source/_integrations/route53.markdown | 2 +- source/_integrations/rova.markdown | 2 +- source/_integrations/rpi_gpio_pwm.markdown | 2 +- source/_integrations/rpi_pfio.markdown | 2 +- source/_integrations/rpi_rf.markdown | 2 +- source/_integrations/rss_feed_template.markdown | 2 +- source/_integrations/rtorrent.markdown | 2 +- source/_integrations/satel_integra.markdown | 2 +- source/_integrations/scrape.markdown | 2 +- source/_integrations/season.markdown | 2 +- source/_integrations/sensibo.markdown | 2 +- source/_integrations/serial.markdown | 2 +- source/_integrations/serial_pm.markdown | 2 +- source/_integrations/seven_segments.markdown | 2 +- source/_integrations/seventeentrack.markdown | 2 +- source/_integrations/shell_command.markdown | 2 +- source/_integrations/shiftr.markdown | 2 +- source/_integrations/shodan.markdown | 2 +- source/_integrations/sht31.markdown | 2 +- source/_integrations/sigfox.markdown | 2 +- source/_integrations/simulated.markdown | 2 +- source/_integrations/skybeacon.markdown | 2 +- source/_integrations/skybell.markdown | 2 +- source/_integrations/sma.markdown | 2 +- source/_integrations/smartthings.markdown | 2 +- source/_integrations/smarty.markdown | 2 +- source/_integrations/socialblade.markdown | 2 +- source/_integrations/solaredge.markdown | 2 +- source/_integrations/solaredge_local.markdown | 2 +- source/_integrations/solarlog.markdown | 2 +- source/_integrations/solax.markdown | 2 +- source/_integrations/soma.markdown | 2 +- source/_integrations/somfy.markdown | 2 +- source/_integrations/sonarr.markdown | 2 +- source/_integrations/songpal.markdown | 2 +- source/_integrations/sony_projector.markdown | 2 +- source/_integrations/soundtouch.markdown | 2 +- source/_integrations/spaceapi.markdown | 2 +- source/_integrations/spc.markdown | 2 +- source/_integrations/spider.markdown | 2 +- source/_integrations/sql.markdown | 2 +- source/_integrations/ssdp.markdown | 2 +- source/_integrations/statistics.markdown | 2 +- source/_integrations/streamlabswater.markdown | 2 +- source/_integrations/suez_water.markdown | 2 +- source/_integrations/swiss_public_transport.markdown | 2 +- source/_integrations/switchbot.markdown | 2 +- source/_integrations/switchmate.markdown | 2 +- source/_integrations/synology.markdown | 2 +- source/_integrations/synologydsm.markdown | 2 +- 173 files changed, 173 insertions(+), 173 deletions(-) diff --git a/source/_integrations/ialarm.markdown b/source/_integrations/ialarm.markdown index 888036a40e1..83f2db4613c 100644 --- a/source/_integrations/ialarm.markdown +++ b/source/_integrations/ialarm.markdown @@ -1,5 +1,5 @@ --- -title: Antifurto365 iAlarm Control Panel +title: Antifurto365 iAlarm description: Instructions on how to integrate iAlarms alarms into Home Assistant. logo: antifurto365-ialarm.png ha_category: diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index 4ad8935640c..62e01a13656 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -1,5 +1,5 @@ --- -title: iCloud +title: Apple iCloud description: Instructions on how to use iCloud to track devices in Home Assistant. logo: icloud.png ha_category: diff --git a/source/_integrations/idteck_prox.markdown b/source/_integrations/idteck_prox.markdown index 12348553512..1553305ceaa 100644 --- a/source/_integrations/idteck_prox.markdown +++ b/source/_integrations/idteck_prox.markdown @@ -1,5 +1,5 @@ --- -title: IDTECK Prox Card Reader +title: IDTECK Proximity Reader description: How to use IDTECK proximity card readers. logo: idteck.jpg ha_category: diff --git a/source/_integrations/ihc.markdown b/source/_integrations/ihc.markdown index 8c4626c1ace..5c552394214 100644 --- a/source/_integrations/ihc.markdown +++ b/source/_integrations/ihc.markdown @@ -1,5 +1,5 @@ --- -title: IHC +title: IHC Controller description: Instructions on how to integrate the IHC integrations with Home Assistant logo: ihc.png ha_category: diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown index ac6de00aebc..4468cf5f8fc 100644 --- a/source/_integrations/imap.markdown +++ b/source/_integrations/imap.markdown @@ -1,5 +1,5 @@ --- -title: IMAP Unread E-mail +title: IMAP description: Instructions on how to integrate IMAP unread email into Home Assistant. logo: smtp.png ha_category: diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown index 27a650142ae..fa41cecaf8b 100644 --- a/source/_integrations/incomfort.markdown +++ b/source/_integrations/incomfort.markdown @@ -1,5 +1,5 @@ --- -title: Intergas InComfort +title: Intergas InComfort/Intouch Lan2RF gateway description: Instructions on how to integrate an Intergas Lan2RF gateway with Home Assistant. logo: incomfort.png ha_category: diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index 07d1811f868..3186be5e2fb 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -1,5 +1,5 @@ --- -title: Integration Sensor +title: Integration - Riemann sum integral description: Instructions on how to integrate Integration Sensor into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 4a49872d24e..25ea180b567 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -1,5 +1,5 @@ --- -title: iOS +title: Apple iOS description: Instructions on how to use the iOS companion app with Home Assistant. logo: apple.png ha_category: diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 758365865bd..20956a24be0 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -1,5 +1,5 @@ --- -title: Iperf3 Sensor +title: Iperf3 description: How to use Iperf3 within Home Assistant to measure your network bandwidth. logo: iperf3.png ha_category: diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index e9e935c3ca5..3cff6aaa14d 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -1,5 +1,5 @@ --- -title: IPMA +title: Instituto Português do Mar e Atmosfera (IPMA) description: Instructions on how to integrate Instituto Português do Mar e Atmosfera weather conditions into Home Assistant. logo: ipma.png ha_category: diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown index 6931d3dc52e..a2323e1d04e 100644 --- a/source/_integrations/iss.markdown +++ b/source/_integrations/iss.markdown @@ -1,5 +1,5 @@ --- -title: International Space Station +title: International Space Station (ISS) description: Know if or when ISS will be above your home location logo: nasa.png ha_category: diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index b657fbf7a7f..51191ff5696 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -1,5 +1,5 @@ --- -title: ISY994 Controller +title: Universal Devices ISY994 description: Instructions on how to setup the ISY994 controller within Home Assistant. logo: universal_devices.png ha_category: diff --git a/source/_integrations/itach.markdown b/source/_integrations/itach.markdown index bd783c1fa5a..0607e4afb4d 100644 --- a/source/_integrations/itach.markdown +++ b/source/_integrations/itach.markdown @@ -1,5 +1,5 @@ --- -title: iTach Remote +title: Global Caché iTach TCP/IP to IR description: Instructions on how to integrate a Global Caché iTach IP2IR gateway into Home Assistant. logo: globalcache.png ha_category: diff --git a/source/_integrations/itunes.markdown b/source/_integrations/itunes.markdown index bcc051a4ea0..a578ea71bda 100644 --- a/source/_integrations/itunes.markdown +++ b/source/_integrations/itunes.markdown @@ -1,5 +1,5 @@ --- -title: iTunes +title: Apple iTunes description: Instructions on how to integrate iTunes into Home Assistant. logo: itunes.png ha_category: diff --git a/source/_integrations/izone.markdown b/source/_integrations/izone.markdown index 9369704d414..a951df15947 100644 --- a/source/_integrations/izone.markdown +++ b/source/_integrations/izone.markdown @@ -1,5 +1,5 @@ --- -title: iZone climate control +title: iZone description: Instructions on how to integrate iZone climate control devices with Home Assistant. ha_category: - Climate diff --git a/source/_integrations/juicenet.markdown b/source/_integrations/juicenet.markdown index 7e0a9ef6f08..4cc956733de 100644 --- a/source/_integrations/juicenet.markdown +++ b/source/_integrations/juicenet.markdown @@ -1,5 +1,5 @@ --- -title: Juicenet +title: JuiceNet description: Instructions on how to setup WiFi-equipped Juicenet charging stations with Home Assistant. logo: juicenet.png ha_category: diff --git a/source/_integrations/kankun.markdown b/source/_integrations/kankun.markdown index 9662dd534ab..b844f607047 100644 --- a/source/_integrations/kankun.markdown +++ b/source/_integrations/kankun.markdown @@ -1,5 +1,5 @@ --- -title: Kankun SP3 Wifi Switch +title: Kankun description: Instructions for the Kankun SP3 Wifi switch ha_category: - Switch diff --git a/source/_integrations/kiwi.markdown b/source/_integrations/kiwi.markdown index 902b3d1d170..b739ce3257a 100644 --- a/source/_integrations/kiwi.markdown +++ b/source/_integrations/kiwi.markdown @@ -1,5 +1,5 @@ --- -title: KIWI Lock +title: KIWI description: Instructions on how to integrate KIWI Smart Lock and Smart Entry. logo: kiwi.png ha_category: diff --git a/source/_integrations/kwb.markdown b/source/_integrations/kwb.markdown index d537316786e..54cff2e662d 100644 --- a/source/_integrations/kwb.markdown +++ b/source/_integrations/kwb.markdown @@ -1,5 +1,5 @@ --- -title: KWB Easyfire Sensor +title: KWB Easyfire description: Instructions on how to integrate the KWB Easyfire sensor into Home Assistant. logo: kwb.png ha_category: diff --git a/source/_integrations/lacrosse.markdown b/source/_integrations/lacrosse.markdown index 2e74325fd1f..66aa1f2da55 100644 --- a/source/_integrations/lacrosse.markdown +++ b/source/_integrations/lacrosse.markdown @@ -1,5 +1,5 @@ --- -title: LaCrosse Sensor +title: LaCrosse description: Instructions on how to integrate LaCrosse sensor data received from Jeelink into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index e1171839621..ebae5eca4a5 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -1,5 +1,5 @@ --- -title: Lannouncer +title: LANnouncer description: Instructions on how to add Lannouncer notifications to Home Assistant. logo: lannouncer.png ha_category: diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index 567dad5da21..9ca4c2f93f0 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -1,5 +1,5 @@ --- -title: Space Launch sensor +title: Launch Library description: Instructions on how to integrate space launch information within Home Assistant. logo: rocket.png ha_category: diff --git a/source/_integrations/lg_netcast.markdown b/source/_integrations/lg_netcast.markdown index 56a909dba3f..5f7c0d407e9 100644 --- a/source/_integrations/lg_netcast.markdown +++ b/source/_integrations/lg_netcast.markdown @@ -1,5 +1,5 @@ --- -title: LG Netcast TV +title: LG Netcast description: Instructions on how to integrate a LG TV (Netcast 3.0 & 4.0) within Home Assistant. logo: lg.png ha_category: diff --git a/source/_integrations/lifx_cloud.markdown b/source/_integrations/lifx_cloud.markdown index e07a5e26006..bc7e58024b2 100644 --- a/source/_integrations/lifx_cloud.markdown +++ b/source/_integrations/lifx_cloud.markdown @@ -1,5 +1,5 @@ --- -title: LIFX Cloud Scenes +title: LIFX Cloud description: Instructions on using native LIFX scenes with Home Assistant. logo: lifx.png ha_category: diff --git a/source/_integrations/linksys_smart.markdown b/source/_integrations/linksys_smart.markdown index 1395c8894cb..9cd5ebb485c 100644 --- a/source/_integrations/linksys_smart.markdown +++ b/source/_integrations/linksys_smart.markdown @@ -1,5 +1,5 @@ --- -title: Linksys Smart Wifi Router +title: Linksys Smart Wi-Fi description: Instructions on how to integrate Linksys Smart Wifi Router into Home Assistant. ha_category: - Presence Detection diff --git a/source/_integrations/linky.markdown b/source/_integrations/linky.markdown index 3baea06a9a1..08689dee88e 100644 --- a/source/_integrations/linky.markdown +++ b/source/_integrations/linky.markdown @@ -1,5 +1,5 @@ --- -title: Linky Sensor +title: Enedis Linky description: Instructions on how to integrate Linky consumption data within Home Assistant. logo: enedis.png ha_release: 0.79 diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown index b01bedc8af6..f7ee7803ef0 100644 --- a/source/_integrations/lock.markdown +++ b/source/_integrations/lock.markdown @@ -1,5 +1,5 @@ --- -title: Locks +title: Lock description: Instructions on how to setup your locks with Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/lockitron.markdown b/source/_integrations/lockitron.markdown index 4bc5534e5b8..672801edf64 100644 --- a/source/_integrations/lockitron.markdown +++ b/source/_integrations/lockitron.markdown @@ -1,5 +1,5 @@ --- -title: Lockitron Lock +title: Lockitron description: Instructions on how to integrate Lockitron locks into Home Assistant. logo: lockitron.png ha_category: diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown index ababc974b20..05b50374b84 100644 --- a/source/_integrations/london_air.markdown +++ b/source/_integrations/london_air.markdown @@ -1,5 +1,5 @@ --- -title: London Air Quality +title: London Air description: Display the current status of London air quality by area and pollution type. logo: waqi.png ha_category: diff --git a/source/_integrations/lupusec.markdown b/source/_integrations/lupusec.markdown index 6e67c4d0c41..3bef553dc17 100644 --- a/source/_integrations/lupusec.markdown +++ b/source/_integrations/lupusec.markdown @@ -1,5 +1,5 @@ --- -title: Lupus Electronics Home Security +title: Lupus Electronics LUPUSEC description: Instructions on integrating Lupusec home security with Home Assistant. logo: lupusec.png ha_category: diff --git a/source/_integrations/lw12wifi.markdown b/source/_integrations/lw12wifi.markdown index 096c753f276..3b1a10f1466 100644 --- a/source/_integrations/lw12wifi.markdown +++ b/source/_integrations/lw12wifi.markdown @@ -1,5 +1,5 @@ --- -title: Lagute LW-12 +title: LAGUTE LW-12 description: Instructions on how to setup Lagute LW-12 Wifi LED controller within Home Assistant. ha_category: - Light diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown index 16fd5478da2..504e4174d27 100644 --- a/source/_integrations/lyft.markdown +++ b/source/_integrations/lyft.markdown @@ -1,5 +1,5 @@ --- -title: Lyft Sensor +title: Lyft description: How to integrate Lyft in Home Assistant logo: lyft.png ha_category: diff --git a/source/_integrations/magicseaweed.markdown b/source/_integrations/magicseaweed.markdown index da358d3a1af..5bd4da3446f 100644 --- a/source/_integrations/magicseaweed.markdown +++ b/source/_integrations/magicseaweed.markdown @@ -1,5 +1,5 @@ --- -title: Magicseaweed Sensor +title: Magicseaweed description: How to integrate Magicseaweed within Home Assistant. logo: magicseaweed.png ha_category: diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index fcc89223336..9aca24d0611 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -1,5 +1,5 @@ --- -title: Manual Alarm Control Panel +title: Manual description: Instructions on how to integrate manual alarms into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/manual_mqtt.markdown b/source/_integrations/manual_mqtt.markdown index b518114ec21..b73920ed819 100644 --- a/source/_integrations/manual_mqtt.markdown +++ b/source/_integrations/manual_mqtt.markdown @@ -1,5 +1,5 @@ --- -title: Manual Alarm Control Panel with MQTT Support +title: Manual MQTT description: Instructions on how to integrate manual alarms into Home Assistant with MQTT support. logo: home-assistant.png ha_category: diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index e3876099658..e2172141231 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -1,5 +1,5 @@ --- -title: eQ-3 MAX! Cube +title: eQ-3 MAX! description: Instructions on how to integrate eQ-3 MAX! components with Home Assistant via eQ-3 MAX! Cube. logo: maxcube.png ha_category: diff --git a/source/_integrations/mcp23017.markdown b/source/_integrations/mcp23017.markdown index 620b31ee8eb..6cc92cff501 100644 --- a/source/_integrations/mcp23017.markdown +++ b/source/_integrations/mcp23017.markdown @@ -1,5 +1,5 @@ --- -title: MCP23017 I2C GPIO expander +title: MCP23017 I/O Expander description: Instructions on how to integrate the MCP23017 GPIO pin expander with I2C interface into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/met.markdown b/source/_integrations/met.markdown index bbd6a1c9d1d..d9855c07f18 100644 --- a/source/_integrations/met.markdown +++ b/source/_integrations/met.markdown @@ -1,5 +1,5 @@ --- -title: Met.no +title: Meteorologisk institutt (Met.no) description: Instructions on how to integrate Met.no within Home Assistant. logo: metno.png ha_category: diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index 3f7324c827a..10736129440 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -1,5 +1,5 @@ --- -title: MeteoAlarm Sensor +title: MeteoAlarm description: Instructions on how to set up MeteoAlarm binary sensors within Home Assistant. logo: meteoalarm.png ha_category: Binary Sensor diff --git a/source/_integrations/mfi.markdown b/source/_integrations/mfi.markdown index f17d9b23f89..fdb475653fe 100644 --- a/source/_integrations/mfi.markdown +++ b/source/_integrations/mfi.markdown @@ -1,5 +1,5 @@ --- -title: mFi +title: Ubiquiti mFi mPort description: Instructions on how to integrate mFi within Home Assistant. logo: ubiquiti.png ha_category: diff --git a/source/_integrations/microsoft.markdown b/source/_integrations/microsoft.markdown index 5d529f21221..c8f49d73ed3 100644 --- a/source/_integrations/microsoft.markdown +++ b/source/_integrations/microsoft.markdown @@ -1,5 +1,5 @@ --- -title: Microsoft Text-to-Speech +title: Microsoft Text-to-Speech (TTS) description: Instructions on how to set up Microsoft Text-to-Speech with Home Assistant. logo: microsoft.png ha_category: diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown index 754b2e13404..d6f3d6b8ef5 100644 --- a/source/_integrations/miflora.markdown +++ b/source/_integrations/miflora.markdown @@ -1,5 +1,5 @@ --- -title: Mi Flora plant sensor +title: Mi Flora description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. logo: miflora.png ha_category: diff --git a/source/_integrations/mill.markdown b/source/_integrations/mill.markdown index 318d7047393..361ec8a3f77 100644 --- a/source/_integrations/mill.markdown +++ b/source/_integrations/mill.markdown @@ -1,5 +1,5 @@ --- -title: Mill heater +title: Mill description: Instructions on how to integrate Mill heater into Home Assistant. logo: mill.png ha_category: diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 50b114c5743..7bb1ddbee3a 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -1,5 +1,5 @@ --- -title: Min/max Sensor +title: Min/Max description: Instructions on how to integrate min/max sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/mitemp_bt.markdown b/source/_integrations/mitemp_bt.markdown index d19e7027fea..64d736ea20c 100644 --- a/source/_integrations/mitemp_bt.markdown +++ b/source/_integrations/mitemp_bt.markdown @@ -1,5 +1,5 @@ --- -title: Xiaomi BLE Temperature and Humidity sensor +title: Xiaomi Mijia BLE Temperature and Humidity Sensor description: Instructions on how to integrate MiTemp BLE temperature and humidity sensor with Home Assistant. logo: xiaomi.png ha_category: diff --git a/source/_integrations/mjpeg.markdown b/source/_integrations/mjpeg.markdown index f094838c506..5ddd5dd9455 100644 --- a/source/_integrations/mjpeg.markdown +++ b/source/_integrations/mjpeg.markdown @@ -1,5 +1,5 @@ --- -title: Generic MJPEG IP Camera +title: MJPEG IP Camera description: Instructions on how to integrate IP cameras within Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index d377de0fdbd..2b9e358f7ae 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -1,5 +1,5 @@ --- -title: Mobile App +title: Home Assistant Mobile App Support description: The Mobile App integration allows a generic platform for integrating with mobile apps. logo: home-assistant.png ha_category: diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown index 9e5b4de6a43..016e3571945 100644 --- a/source/_integrations/modem_callerid.markdown +++ b/source/_integrations/modem_callerid.markdown @@ -1,5 +1,5 @@ --- -title: Caller ID Sensor +title: Modem Caller ID description: Instructions on how to integrate the Caller ID sensor into Home Assistant. ha_category: - Sensor diff --git a/source/_integrations/moon.markdown b/source/_integrations/moon.markdown index 33701c1601b..e68f0e58bdb 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -1,5 +1,5 @@ --- -title: Moon Sensor +title: Moon description: Instructions on how to integrate the moon sensor into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/mpchc.markdown b/source/_integrations/mpchc.markdown index c02a9f0a07b..bb6df94ca09 100644 --- a/source/_integrations/mpchc.markdown +++ b/source/_integrations/mpchc.markdown @@ -1,5 +1,5 @@ --- -title: MPC-HC +title: Media Player Classic Home Cinema (MPC-HC) description: Instructions on how to integrate MPC-HC into Home Assistant. logo: mpchc.png ha_category: diff --git a/source/_integrations/mqtt_json.markdown b/source/_integrations/mqtt_json.markdown index 1c54aa750f7..02623659e4a 100644 --- a/source/_integrations/mqtt_json.markdown +++ b/source/_integrations/mqtt_json.markdown @@ -1,5 +1,5 @@ --- -title: JSON MQTT Device Tracker +title: MQTT JSON description: Instructions on how to use JSON MQTT to track devices in Home Assistant. logo: mqtt.png ha_category: diff --git a/source/_integrations/mychevy.markdown b/source/_integrations/mychevy.markdown index eef6b219a2e..dbd4ff8f540 100644 --- a/source/_integrations/mychevy.markdown +++ b/source/_integrations/mychevy.markdown @@ -1,5 +1,5 @@ --- -title: MyChevy +title: myChevrolet description: Instructions on how to integrate Chevy Bolt car into Home Assistant. logo: chevy.png ha_category: diff --git a/source/_integrations/myq.markdown b/source/_integrations/myq.markdown index 1306b991aad..7d702540931 100644 --- a/source/_integrations/myq.markdown +++ b/source/_integrations/myq.markdown @@ -1,5 +1,5 @@ --- -title: MyQ Cover +title: MyQ description: Instructions on how to integrate MyQ-Enabled garage door covers into Home Assistant. logo: myq.png ha_category: diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index b33cc69251a..cb5168db425 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -1,5 +1,5 @@ --- -title: myStrom WiFi Bulb +title: myStrom description: Instructions on how to integrate myStrom WiFi Bulbs into Home Assistant. logo: mystrom.png ha_category: diff --git a/source/_integrations/namecheapdns.markdown b/source/_integrations/namecheapdns.markdown index e2d253b04e3..485830db8d5 100644 --- a/source/_integrations/namecheapdns.markdown +++ b/source/_integrations/namecheapdns.markdown @@ -1,5 +1,5 @@ --- -title: NamecheapDNS +title: Namecheap FreeDNS description: Keep your namecheap dynamic DNS up to date logo: namecheap.png ha_category: diff --git a/source/_integrations/nanoleaf.markdown b/source/_integrations/nanoleaf.markdown index 5ec505c46c2..d1a5dc8d948 100644 --- a/source/_integrations/nanoleaf.markdown +++ b/source/_integrations/nanoleaf.markdown @@ -1,5 +1,5 @@ --- -title: Nanoleaf Light Panel +title: Nanoleaf description: Instructions how to integrate Nanoleaf Light Panels into Home Assistant. logo: nanoleaf_light.png ha_category: diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index 49a0426393f..af7b11513e2 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -1,5 +1,5 @@ --- -title: Neato Robotics +title: Neato Botvac description: Instructions on how to integrate your Neato within Home Assistant. logo: neato.png ha_category: diff --git a/source/_integrations/nederlandse_spoorwegen.markdown b/source/_integrations/nederlandse_spoorwegen.markdown index 29f619fd36f..e78091e404b 100644 --- a/source/_integrations/nederlandse_spoorwegen.markdown +++ b/source/_integrations/nederlandse_spoorwegen.markdown @@ -1,5 +1,5 @@ --- -title: Nederlandse Spoorwegen +title: Nederlandse Spoorwegen (NS) description: Instructions on how to integrate timetable data for traveling by train in the Netherlands within Home Assistant. logo: nederlandse_spoorwegen.png ha_category: diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown index 4be01b186f0..0daee023667 100644 --- a/source/_integrations/nello.markdown +++ b/source/_integrations/nello.markdown @@ -1,5 +1,5 @@ --- -title: Nello Lock +title: Nello description: Instructions on how to integrate Nello intercom devices. logo: nello.png ha_category: diff --git a/source/_integrations/netio.markdown b/source/_integrations/netio.markdown index b0aac34ac76..713c58a427b 100644 --- a/source/_integrations/netio.markdown +++ b/source/_integrations/netio.markdown @@ -1,5 +1,5 @@ --- -title: Netio Switch +title: Netio description: Instructions on how to integrate Netio switches into Home Assistant. logo: netio.png ha_category: diff --git a/source/_integrations/neurio_energy.markdown b/source/_integrations/neurio_energy.markdown index b830823598a..5787bad8502 100644 --- a/source/_integrations/neurio_energy.markdown +++ b/source/_integrations/neurio_energy.markdown @@ -1,5 +1,5 @@ --- -title: Neurio +title: Neurio energy description: Instructions on how to integrate Neurio within Home Assistant. logo: neurio.png ha_category: diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 4b91aacbe5d..475dcf2260a 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -1,5 +1,5 @@ --- -title: Public Transit (Nextbus) +title: NextBus description: Instructions on how to use public transit data from Nextbus in Home Assistant. logo: train.png ha_category: diff --git a/source/_integrations/niko_home_control.markdown b/source/_integrations/niko_home_control.markdown index 022da80c5ae..27d34f039ce 100644 --- a/source/_integrations/niko_home_control.markdown +++ b/source/_integrations/niko_home_control.markdown @@ -1,5 +1,5 @@ --- -title: Niko Home Control Light +title: Niko Home Control description: Instructions on how to integrate Niko Home Control lights into Home Assistant. logo: niko.png ha_category: diff --git a/source/_integrations/nilu.markdown b/source/_integrations/nilu.markdown index 2f5f0b71d7c..0b38d1431dd 100644 --- a/source/_integrations/nilu.markdown +++ b/source/_integrations/nilu.markdown @@ -1,5 +1,5 @@ --- -title: Norwegian Institute for Air Research +title: Norwegian Institute for Air Research (NILU) description: Instructions on how to integrate air pollution data from NILU within Home Assistant. logo: nilu_logo.png ha_category: diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index 4adf50681ce..eebd1789949 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -1,5 +1,5 @@ --- -title: Nmap +title: Nmap Tracker description: Instructions on how to integrate Nmap into Home Assistant. logo: nmap.png ha_category: diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index a8af36e02d3..d1ccd6f2073 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -1,5 +1,5 @@ --- -title: NMBS Sensor +title: NMBS description: Instructions on how to integrate timetable data for traveling on the NMBS Belgian Railway within Home Assistant. logo: sncb_nmbs.gif ha_category: diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index a283a1f97c7..dcbe5719292 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -1,5 +1,5 @@ --- -title: NO-IP.com +title: No-IP.com description: Keep your computer registered with the NO-IP.com dynamic DNS. logo: noip.png ha_category: diff --git a/source/_integrations/norway_air.markdown b/source/_integrations/norway_air.markdown index 66e210b9829..e2fe99deaf2 100644 --- a/source/_integrations/norway_air.markdown +++ b/source/_integrations/norway_air.markdown @@ -1,5 +1,5 @@ --- -title: Norway Air Quality +title: Om Luftkvalitet i Norge (Norway Air) description: Display the current status of Norway air quality. logo: metno.png ha_category: diff --git a/source/_integrations/nsw_fuel_station.markdown b/source/_integrations/nsw_fuel_station.markdown index e448d8c561e..0e0524079e2 100644 --- a/source/_integrations/nsw_fuel_station.markdown +++ b/source/_integrations/nsw_fuel_station.markdown @@ -1,5 +1,5 @@ --- -title: NSW Fuel Station Price Sensor +title: NSW Fuel Station Price description: Instructions on how to integrate NSW fuel station prices into Home Assistant. logo: fuelcheck.png ha_category: diff --git a/source/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index bd7e6f2b9a0..bedc44cd9fa 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -1,5 +1,5 @@ --- -title: Nuki Smart Lock +title: Nuki description: Instructions on how to integrate a Nuki Smart Lock devices. logo: nuki.png ha_category: diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown index a3ef59080d4..bfe35115ddc 100644 --- a/source/_integrations/nut.markdown +++ b/source/_integrations/nut.markdown @@ -1,5 +1,5 @@ --- -title: NUT Sensor +title: Network UPS Tools (NUT) description: Instructions on how to set up NUT sensors within Home Assistant. logo: nut.png ha_category: diff --git a/source/_integrations/nws.markdown b/source/_integrations/nws.markdown index fb0a3912041..dededa571e8 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -1,5 +1,5 @@ --- -title: NWS +title: National Weather Service (NWS) description: Instructions on how to integrate National Weather Service data within Home Assistant. logo: nws.png ha_category: Weather diff --git a/source/_integrations/nx584.markdown b/source/_integrations/nx584.markdown index cbc95125be1..f7a30d8de03 100644 --- a/source/_integrations/nx584.markdown +++ b/source/_integrations/nx584.markdown @@ -1,5 +1,5 @@ --- -title: NX584 Alarm Control Panel +title: NX584 description: Instructions on how to integrate NX584 into Home Assistant. logo: networx.png ha_category: diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown index 592c4e96367..aea15cb67a3 100644 --- a/source/_integrations/onboarding.markdown +++ b/source/_integrations/onboarding.markdown @@ -1,5 +1,5 @@ --- -title: Onboarding +title: Home Assistant Onboarding description: This integration is responsible for providing the onboarding endpoints. logo: home-assistant.png ha_category: diff --git a/source/_integrations/onewire.markdown b/source/_integrations/onewire.markdown index 4bcbd5b5f24..46f8e1252f8 100644 --- a/source/_integrations/onewire.markdown +++ b/source/_integrations/onewire.markdown @@ -1,5 +1,5 @@ --- -title: One wire Sensor +title: 1-Wire description: Instructions on how to integrate One wire (1-wire) sensors into Home Assistant. logo: onewire.png ha_category: diff --git a/source/_integrations/onvif.markdown b/source/_integrations/onvif.markdown index f44cb6a911e..337684ca5aa 100644 --- a/source/_integrations/onvif.markdown +++ b/source/_integrations/onvif.markdown @@ -1,5 +1,5 @@ --- -title: ONVIF Camera +title: ONVIF description: Instructions on how to integrate a ONVIF camera within Home Assistant. logo: onvif.png ha_category: diff --git a/source/_integrations/openevse.markdown b/source/_integrations/openevse.markdown index 7a6bf489760..db05ed5297c 100644 --- a/source/_integrations/openevse.markdown +++ b/source/_integrations/openevse.markdown @@ -1,5 +1,5 @@ --- -title: OpenEVSE Sensor +title: OpenEVSE description: Instructions on how to integrate a WiFi-equipped OpenEVSE Charging station with Home Assistant logo: openevse.png ha_category: diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index 6119c151a53..43145cb8cb1 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -1,5 +1,5 @@ --- -title: OpenGarage Cover +title: OpenGarage description: Instructions on how to integrate OpenGarage.io covers within Home Assistant. logo: opengarage.png ha_category: diff --git a/source/_integrations/openhardwaremonitor.markdown b/source/_integrations/openhardwaremonitor.markdown index 5bca886a972..15a6f3c9cae 100644 --- a/source/_integrations/openhardwaremonitor.markdown +++ b/source/_integrations/openhardwaremonitor.markdown @@ -1,5 +1,5 @@ --- -title: Open Hardware Monitor Sensor +title: Open Hardware Monitor description: Instructions on how to integrate Open Hardware Monitor within Home Assistant. logo: openhardwaremonitor.png ha_category: diff --git a/source/_integrations/openhome.markdown b/source/_integrations/openhome.markdown index 091cf4823d4..bccde945bf1 100644 --- a/source/_integrations/openhome.markdown +++ b/source/_integrations/openhome.markdown @@ -1,5 +1,5 @@ --- -title: Linn / Openhome +title: Linn / OpenHome description: Instructions on how to integrate Linn Ds and Openhome renderers into Home Assistant. logo: linn.png ha_category: diff --git a/source/_integrations/opensensemap.markdown b/source/_integrations/opensensemap.markdown index 57b6b00c070..d4fc4740335 100644 --- a/source/_integrations/opensensemap.markdown +++ b/source/_integrations/opensensemap.markdown @@ -1,5 +1,5 @@ --- -title: OpenSenseMap +title: openSenseMap description: Instructions on how to setup openSenseMap sensors in Home Assistant. logo: opensensemap.png ha_category: diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index 26b51e74200..3c55fbb161a 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -1,5 +1,5 @@ --- -title: OpenUV +title: Openuv description: Instructions on how to integrate OpenUV within Home Assistant. logo: openuv.jpg ha_category: diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index ee49b9c7fd9..5f3939d1c07 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -1,5 +1,5 @@ --- -title: OpenWeatherMap +title: Openweathermap description: Instructions on how to integrate OpenWeatherMap within Home Assistant. logo: openweathermap.png ha_category: diff --git a/source/_integrations/opple.markdown b/source/_integrations/opple.markdown index c31d346541d..7efcdeda8d3 100644 --- a/source/_integrations/opple.markdown +++ b/source/_integrations/opple.markdown @@ -1,5 +1,5 @@ --- -title: Opple Light +title: Opple description: Instructions on how to integrate Opple lights into Home Assistant. logo: opple.png ha_category: diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index 21068cc2497..7f62be175a1 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -1,5 +1,5 @@ --- -title: Orange Pi GPIO +title: Orangepi GPIO description: Instructions on how to integrate the GPIO capability of a Orange Pi into Home Assistant. ha_category: - DIY diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown index 587f6419b1a..1ae62482c48 100644 --- a/source/_integrations/oru.markdown +++ b/source/_integrations/oru.markdown @@ -1,5 +1,5 @@ --- -title: Orange and Rockland Utility Real-Time Energy Usage Sensor +title: Orange and Rockland Utility (ORU) description: Instructions on how to integrate the Orange and Rockland Utility real-time energy usage sensor within Home Assistant. logo: oru.png ha_release: 0.101 diff --git a/source/_integrations/orvibo.markdown b/source/_integrations/orvibo.markdown index cc493d189c3..2c3287ae2aa 100644 --- a/source/_integrations/orvibo.markdown +++ b/source/_integrations/orvibo.markdown @@ -1,5 +1,5 @@ --- -title: Orvibo Switch +title: Orvibo description: Instructions on how to integrate Orvibo sockets within Home Assistant. logo: orvibo.png ha_category: diff --git a/source/_integrations/osramlightify.markdown b/source/_integrations/osramlightify.markdown index ce65e1e805d..2986096ef80 100644 --- a/source/_integrations/osramlightify.markdown +++ b/source/_integrations/osramlightify.markdown @@ -1,5 +1,5 @@ --- -title: Osram Lightify +title: Osramlightify description: Instructions on how to integrate Osram Lightify into Home Assistant. logo: osramlightify.png ha_category: diff --git a/source/_integrations/otp.markdown b/source/_integrations/otp.markdown index 7be4464d6a1..325db2fdc67 100644 --- a/source/_integrations/otp.markdown +++ b/source/_integrations/otp.markdown @@ -1,5 +1,5 @@ --- -title: OTP Sensor +title: One-Time Password (OTP) description: Instructions on how to add One-Time Password (OTP) sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index b3ff49b2256..5a0932c78bc 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -1,5 +1,5 @@ --- -title: Owntracks +title: OwnTracks description: Instructions on how to use Owntracks to track devices in Home Assistant. logo: owntracks.png ha_category: diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index 44f3c08f0e3..8ca5319fce6 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -1,5 +1,5 @@ --- -title: Panel Custom +title: Custom Panel description: Instructions on how to add customized panels to the frontend of Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index 12f7d459bdf..d4059fb39c1 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -1,5 +1,5 @@ --- -title: Panel iFrame +title: iframe Panel description: Instructions on how to add iFrames in the frontend of Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/pcal9535a.markdown b/source/_integrations/pcal9535a.markdown index 7c3a031a5ff..9789360d4a5 100644 --- a/source/_integrations/pcal9535a.markdown +++ b/source/_integrations/pcal9535a.markdown @@ -1,5 +1,5 @@ --- -title: PCAL9535A I2C GPIO expander +title: PCAL9535A I/O Expander description: Instructions on how to integrate the PCAL9535A GPIO pin expander with I2C interface into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index 2a87f3fcb52..657a7a02e93 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -1,5 +1,5 @@ --- -title: Persistent notification +title: Persistent Notification description: Instructions on how to integrate persistent notifications into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown index 371a50a2961..a814c1f5ee5 100644 --- a/source/_integrations/picotts.markdown +++ b/source/_integrations/picotts.markdown @@ -1,5 +1,5 @@ --- -title: Pico Text-to-Speech +title: Pico TTS description: Instructions on how to setup Pico Text-to-Speech with Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/pioneer.markdown b/source/_integrations/pioneer.markdown index cfdb746adf8..dcbe20748f5 100644 --- a/source/_integrations/pioneer.markdown +++ b/source/_integrations/pioneer.markdown @@ -1,5 +1,5 @@ --- -title: Pioneer Network Receivers +title: Pioneer description: Instructions on how to integrate a Pioneer Network Receivers into Home Assistant. logo: pioneer.png ha_category: diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown index 40b42ee960e..38bcab6acde 100644 --- a/source/_integrations/plant.markdown +++ b/source/_integrations/plant.markdown @@ -1,5 +1,5 @@ --- -title: Plant monitor +title: Plant Monitor description: Instructions on how to setup plant monitoring with Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 96bf17d7e0f..2cb80a2279e 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -1,5 +1,5 @@ --- -title: Plex +title: Plex Media Server description: Instructions on how to integrate Plex into Home Assistant. logo: plex.png ha_category: diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index cc01b31f5e7..122b2b56bfa 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -1,5 +1,5 @@ --- -title: Plugwise +title: Plugwise Anna description: Plugwise Climate integration. logo: plugwise.png ha_category: Climate diff --git a/source/_integrations/postnl.markdown b/source/_integrations/postnl.markdown index d0b768c7e92..7b30412aaf2 100644 --- a/source/_integrations/postnl.markdown +++ b/source/_integrations/postnl.markdown @@ -1,5 +1,5 @@ --- -title: PostNL Sensor +title: PostNL description: Instructions on how to set up PostNL sensors within Home Assistant. logo: postnl.png ha_category: diff --git a/source/_integrations/prezzibenzina.markdown b/source/_integrations/prezzibenzina.markdown index d091d792134..18e381c33c0 100644 --- a/source/_integrations/prezzibenzina.markdown +++ b/source/_integrations/prezzibenzina.markdown @@ -1,5 +1,5 @@ --- -title: PrezziBenzina Sensor +title: Prezzi Benzina description: Instructions on how to integrate PrezziBenzina sensors within Home Assistant. logo: prezzibenzina.png ha_category: diff --git a/source/_integrations/proliphix.markdown b/source/_integrations/proliphix.markdown index 941c007e035..54debd019cb 100644 --- a/source/_integrations/proliphix.markdown +++ b/source/_integrations/proliphix.markdown @@ -1,5 +1,5 @@ --- -title: Proliphix Thermostat +title: Proliphix description: Instructions on how to integrate Proliphix thermostats within Home Assistant. logo: proliphix.png ha_category: diff --git a/source/_integrations/ptvsd.markdown b/source/_integrations/ptvsd.markdown index b090d244681..65690666604 100644 --- a/source/_integrations/ptvsd.markdown +++ b/source/_integrations/ptvsd.markdown @@ -1,5 +1,5 @@ --- -title: PTVSD Debugger (Visual Studio Code) +title: PTVSD - Python Tools for Visual Studio Debug Server description: Debugging from Visual Studio Code. logo: visual-studio.png ha_category: diff --git a/source/_integrations/pulseaudio_loopback.markdown b/source/_integrations/pulseaudio_loopback.markdown index 341f27a257a..b21a758931e 100644 --- a/source/_integrations/pulseaudio_loopback.markdown +++ b/source/_integrations/pulseaudio_loopback.markdown @@ -1,5 +1,5 @@ --- -title: PulseAudio Loopback Switch +title: PulseAudio Loopback description: Instructions on how to use Pulseaudio loopback modules to build a flexible whole-home audio system. logo: pulseaudio.png ha_category: diff --git a/source/_integrations/pushbullet.markdown b/source/_integrations/pushbullet.markdown index 47cbaffd8e4..d96e84864db 100644 --- a/source/_integrations/pushbullet.markdown +++ b/source/_integrations/pushbullet.markdown @@ -1,5 +1,5 @@ --- -title: Pushbullet Mirrors +title: Pushbullet description: Instructions on how to read user pushes in Home Assistant logo: pushbullet.png ha_category: diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index fac2ab709f6..cdab70e066e 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -1,5 +1,5 @@ --- -title: PVOutput Sensor +title: PVOutput description: Instructions on how to use PVOutput within Home Assistant. logo: pvoutput.png ha_category: diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown index f38e5d8edbf..881cc72d552 100644 --- a/source/_integrations/pyload.markdown +++ b/source/_integrations/pyload.markdown @@ -1,5 +1,5 @@ --- -title: pyLoad Sensor +title: pyLoad description: Instructions on how to integrate pyLoad download sensor within Home Assistant. logo: pyload.png ha_category: diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown index 91f8f134da2..d5b577d3150 100644 --- a/source/_integrations/qbittorrent.markdown +++ b/source/_integrations/qbittorrent.markdown @@ -1,5 +1,5 @@ --- -title: qBittorrent Sensor +title: qBittorrent description: Instructions on how to integrate qBittorrent sensors within Home Assistant. logo: qbittorrent.png ha_category: diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index 2d86a76e73f..fccb37311e1 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -1,5 +1,5 @@ --- -title: QNAP Sensor +title: QNAP description: Instructions on how to integrate the QNAP sensor within Home Assistant. logo: qnap.png ha_category: diff --git a/source/_integrations/qrcode.markdown b/source/_integrations/qrcode.markdown index b9af29882e9..75a76d9ae22 100644 --- a/source/_integrations/qrcode.markdown +++ b/source/_integrations/qrcode.markdown @@ -1,5 +1,5 @@ --- -title: QR Code Recognition +title: QR Code description: Instructions on how to integrate QR Code Recognition into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/qwikswitch.markdown b/source/_integrations/qwikswitch.markdown index 209e5f6e643..1ff7eabed6f 100644 --- a/source/_integrations/qwikswitch.markdown +++ b/source/_integrations/qwikswitch.markdown @@ -1,5 +1,5 @@ --- -title: QwikSwitch QSUSB Hub +title: QwikSwitch QSUSB description: Instructions on how to integrate the QwikSwitch QSUSB Hub into Home Assistant. logo: qwikswitch.png ha_category: diff --git a/source/_integrations/radarr.markdown b/source/_integrations/radarr.markdown index b9c73b61e69..c94d7aa7677 100644 --- a/source/_integrations/radarr.markdown +++ b/source/_integrations/radarr.markdown @@ -1,5 +1,5 @@ --- -title: Radarr Sensor +title: Radarr description: Instructions on how to integrate Radarr sensors with Home Assistant logo: radarr.png ha_category: diff --git a/source/_integrations/radiotherm.markdown b/source/_integrations/radiotherm.markdown index 2f6f0f4de15..c5f81b08bfe 100644 --- a/source/_integrations/radiotherm.markdown +++ b/source/_integrations/radiotherm.markdown @@ -1,5 +1,5 @@ --- -title: Radio Thermostat (3M Filtrete) Thermostat +title: Radio Thermostat description: Instructions on how to integrate Radio Thermostat (3M Filtrete) thermostats within Home Assistant. logo: radiotherm.png ha_category: diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index 5ac7f83d61a..117e486aeb6 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -1,5 +1,5 @@ --- -title: Melnor Raincloud +title: Melnor RainCloud description: Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant. logo: raincloud.jpg ha_category: diff --git a/source/_integrations/raspyrfm.markdown b/source/_integrations/raspyrfm.markdown index c43f527e1e7..f70808f7eaf 100644 --- a/source/_integrations/raspyrfm.markdown +++ b/source/_integrations/raspyrfm.markdown @@ -1,5 +1,5 @@ --- -title: RaspyRFM Switch +title: RaspyRFM description: Instructions on how to integrate RaspyRFM switches into Home Assistant. logo: seegelsysteme.png ha_category: diff --git a/source/_integrations/recollect_waste.markdown b/source/_integrations/recollect_waste.markdown index c44020d4e4b..06fc4da938d 100644 --- a/source/_integrations/recollect_waste.markdown +++ b/source/_integrations/recollect_waste.markdown @@ -1,5 +1,5 @@ --- -title: Recollect Waste Sensor +title: ReCollect Waste description: Instructions on how to set up Recollect Waste sensor within Home Assistant. logo: recollect-waste.png ha_category: diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown index 143a7729430..9eba9e83cd3 100644 --- a/source/_integrations/recswitch.markdown +++ b/source/_integrations/recswitch.markdown @@ -1,5 +1,5 @@ --- -title: Ankuoo Rec Switch +title: Ankuoo REC Switch description: Instructions on how to integrate Ankuoo Rec Switch into Home Assistant. logo: ankuoo_recswitch.png ha_release: 0.81 diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown index a52f1f76ab4..0289f8e6c75 100644 --- a/source/_integrations/rejseplanen.markdown +++ b/source/_integrations/rejseplanen.markdown @@ -1,5 +1,5 @@ --- -title: Rejseplanen Public Transport +title: Rejseplanen description: Instructions on how to integrate timetable data for Danish Rejseplanen within Home Assistant. logo: rejseplanen.png ha_category: diff --git a/source/_integrations/remote.markdown b/source/_integrations/remote.markdown index 5621ae6e933..07053b6e00c 100644 --- a/source/_integrations/remote.markdown +++ b/source/_integrations/remote.markdown @@ -1,5 +1,5 @@ --- -title: Remotes +title: Remote description: Instructions on how to setup your remotes with Home Assistant. ha_release: 0.34 --- diff --git a/source/_integrations/remote_rpi_gpio.markdown b/source/_integrations/remote_rpi_gpio.markdown index b901c3799fa..b86f279c628 100644 --- a/source/_integrations/remote_rpi_gpio.markdown +++ b/source/_integrations/remote_rpi_gpio.markdown @@ -1,5 +1,5 @@ --- -title: Remote Raspberry Pi GPIO +title: remote_rpi_gpio description: Instructions on how to integrate the GPIO capability of a Remote Raspberry Pi into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index f1a8478e899..383195f370b 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -1,5 +1,5 @@ --- -title: Repetier-Server Component +title: Repetier-Server description: Instructions how to add Repetier-Server sensors to Home Assistant. logo: repetier.png ha_category: diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown index 3372130b704..febcb4a06e0 100644 --- a/source/_integrations/rest.markdown +++ b/source/_integrations/rest.markdown @@ -1,5 +1,5 @@ --- -title: RESTful Sensor +title: RESTful description: Instructions on how to integrate REST sensors into Home Assistant. logo: restful.png ha_category: diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 8d64b1172a6..7f4a9bc7025 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -1,5 +1,5 @@ --- -title: RFXtrx +title: RFXCOM RFXtrx description: Instructions on how to integrate RFXtrx into Home Assistant. logo: rfxtrx.png ha_category: diff --git a/source/_integrations/route53.markdown b/source/_integrations/route53.markdown index 04492d61b43..05da97c2454 100644 --- a/source/_integrations/route53.markdown +++ b/source/_integrations/route53.markdown @@ -1,5 +1,5 @@ --- -title: route53 +title: AWS Route53 description: Automatically update your AWS Route53 DNS records. logo: route53.png ha_category: diff --git a/source/_integrations/rova.markdown b/source/_integrations/rova.markdown index 0197b7b26a3..c0a5d9c5235 100644 --- a/source/_integrations/rova.markdown +++ b/source/_integrations/rova.markdown @@ -1,5 +1,5 @@ --- -title: ROVA Sensor +title: ROVA description: Instructions on how to integrate ROVA sensor within Home Assistant. logo: rova.jpg ha_category: diff --git a/source/_integrations/rpi_gpio_pwm.markdown b/source/_integrations/rpi_gpio_pwm.markdown index ee6badcee4e..15835e16054 100644 --- a/source/_integrations/rpi_gpio_pwm.markdown +++ b/source/_integrations/rpi_gpio_pwm.markdown @@ -1,5 +1,5 @@ --- -title: PWM LED Light +title: pigpio Daemon PWM LED description: Instructions on how to setup PWM LEDs within Home Assistant. ha_category: - DIY diff --git a/source/_integrations/rpi_pfio.markdown b/source/_integrations/rpi_pfio.markdown index ab9505013f6..7a762c590c0 100644 --- a/source/_integrations/rpi_pfio.markdown +++ b/source/_integrations/rpi_pfio.markdown @@ -1,5 +1,5 @@ --- -title: PiFace Digital I/O +title: PiFace Digital I/O (PFIO) description: Instructions on how to integrate the PiFace Digital I/O module into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/rpi_rf.markdown b/source/_integrations/rpi_rf.markdown index 452fe4bdd3b..3c98dc88ba1 100644 --- a/source/_integrations/rpi_rf.markdown +++ b/source/_integrations/rpi_rf.markdown @@ -1,5 +1,5 @@ --- -title: Raspberry Pi RF Switch +title: Raspberry Pi RF description: Instructions on how to integrate devices controlled via codes sent with low-cost GPIO RF modules on a Raspberry Pi into Home Assistant as a switch. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/rss_feed_template.markdown b/source/_integrations/rss_feed_template.markdown index 84ca8dc27e5..2ef9618ba58 100644 --- a/source/_integrations/rss_feed_template.markdown +++ b/source/_integrations/rss_feed_template.markdown @@ -1,5 +1,5 @@ --- -title: RSS feed template +title: RSS Feed Template description: Use this integration to generate RSS feeds showing your latest data. logo: home-assistant.png ha_category: diff --git a/source/_integrations/rtorrent.markdown b/source/_integrations/rtorrent.markdown index 501dcec65f4..ab97991454f 100644 --- a/source/_integrations/rtorrent.markdown +++ b/source/_integrations/rtorrent.markdown @@ -1,5 +1,5 @@ --- -title: rtorrent Sensor +title: rTorrent description: Instructions on how to integrate rtorrent sensors within Home Assistant. logo: rtorrent.png ha_category: diff --git a/source/_integrations/satel_integra.markdown b/source/_integrations/satel_integra.markdown index 7817fe42811..e04dc7514b0 100644 --- a/source/_integrations/satel_integra.markdown +++ b/source/_integrations/satel_integra.markdown @@ -1,5 +1,5 @@ --- -title: Satel Integra Alarm +title: Satel Integra description: Instructions on how to integrate a Satel Integra alarm panel with Home Assistant using an ETHM network extension from Satel. logo: satel.jpg ha_category: diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index d5cde92ef5d..31ae99af61a 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -1,5 +1,5 @@ --- -title: Scrape Sensor +title: Scrape description: Instructions on how to integrate Web scrape sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index 2c07397509e..63b4cbc1863 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -1,5 +1,5 @@ --- -title: Season Sensor +title: Season description: Instructions on how to add season sensors into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index e78ed5b7bca..7f2e8cf3d0c 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -1,5 +1,5 @@ --- -title: Sensibo A/C controller +title: Sensibo description: Instructions on how to integrate Sensibo A/C controller into Home Assistant. logo: sensibo.png ha_category: diff --git a/source/_integrations/serial.markdown b/source/_integrations/serial.markdown index 8d7d034a5fc..44c40ad9a3c 100644 --- a/source/_integrations/serial.markdown +++ b/source/_integrations/serial.markdown @@ -1,5 +1,5 @@ --- -title: Serial Sensor +title: Serial description: Instructions on how to integrate data from serial connected sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown index b02bf218513..2b156485676 100644 --- a/source/_integrations/serial_pm.markdown +++ b/source/_integrations/serial_pm.markdown @@ -1,5 +1,5 @@ --- -title: Particulate matter Sensor +title: Serial Particulate Matter description: Instructions on how to integrate particulate matter (dust) sensors with Home Assistant. logo: serial_pm.png ha_category: diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index f846c7772cc..ec15c7a7d6e 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -1,5 +1,5 @@ --- -title: Seven segments display +title: Seven Segments OCR description: Instructions on how to use OCR for seven segments displays into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index a1c84401713..ad0be6bc2b1 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -1,5 +1,5 @@ --- -title: 17track.net +title: 17TRACK description: Instructions on how to use 17track.net data within Home Assistant logo: 17track.png ha_category: diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index 61de22c0267..73d52d6b805 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -1,5 +1,5 @@ --- -title: Shell command +title: Shell Command description: Instructions on how to integrate Shell commands into Home Assistant. ha_category: - Automation diff --git a/source/_integrations/shiftr.markdown b/source/_integrations/shiftr.markdown index 39e9d9123c7..23fd4d88bc1 100644 --- a/source/_integrations/shiftr.markdown +++ b/source/_integrations/shiftr.markdown @@ -1,5 +1,5 @@ --- -title: Shiftr.io +title: shiftr.io description: Transfer events to Shiftr.io. logo: shiftr.png ha_category: diff --git a/source/_integrations/shodan.markdown b/source/_integrations/shodan.markdown index 6a3760128f6..abbe49c239e 100644 --- a/source/_integrations/shodan.markdown +++ b/source/_integrations/shodan.markdown @@ -1,5 +1,5 @@ --- -title: Shodan Sensor +title: Shodan description: Instructions on how to integrate Shodan sensors into Home Assistant. ha_category: - Sensor diff --git a/source/_integrations/sht31.markdown b/source/_integrations/sht31.markdown index 25354839874..f08a44393de 100644 --- a/source/_integrations/sht31.markdown +++ b/source/_integrations/sht31.markdown @@ -1,5 +1,5 @@ --- -title: Sensirion SHT31 Sensor +title: Sensirion SHT31 description: Instructions on how to integrate SHT31 sensors within Home Assistant. ha_category: - DIY diff --git a/source/_integrations/sigfox.markdown b/source/_integrations/sigfox.markdown index 45edae6abd5..352080c94ce 100644 --- a/source/_integrations/sigfox.markdown +++ b/source/_integrations/sigfox.markdown @@ -1,5 +1,5 @@ --- -title: Sigfox Sensor +title: Sigfox description: Display messages from Sigfox devices in Home Assistant. logo: sigfox.png ha_category: diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown index 5bc4dd79d61..7e8d9e876fb 100644 --- a/source/_integrations/simulated.markdown +++ b/source/_integrations/simulated.markdown @@ -1,5 +1,5 @@ --- -title: Simulated sensor +title: Simulated description: Component for simulating a numerical sensor. logo: home-assistant.png ha_category: diff --git a/source/_integrations/skybeacon.markdown b/source/_integrations/skybeacon.markdown index aa5eeaf1460..21dd1af3852 100644 --- a/source/_integrations/skybeacon.markdown +++ b/source/_integrations/skybeacon.markdown @@ -1,5 +1,5 @@ --- -title: Skybeacon sensor +title: Skybeacon description: Instructions on how to integrate MiFlora BLE plant sensor with Home Assistant. ha_category: - DIY diff --git a/source/_integrations/skybell.markdown b/source/_integrations/skybell.markdown index 9ed2ca87e65..34c7945c289 100644 --- a/source/_integrations/skybell.markdown +++ b/source/_integrations/skybell.markdown @@ -1,5 +1,5 @@ --- -title: Skybell +title: SkyBell description: Instructions on how to integrate your Skybell HD devices within Home Assistant. logo: skybell.png ha_category: diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index 77ead4a6413..0ee8835bd0f 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -1,5 +1,5 @@ --- -title: SMA Solar WebConnect +title: SMA Solar description: Instructions on how to connect your SMA Solar Inverter to Home Assistant. ha_category: - Energy diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index b224463ac55..0a28c51582d 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -1,5 +1,5 @@ --- -title: SmartThings +title: Smartthings description: Instructions on setting up Samsung SmartThings within Home Assistant. featured: true logo: samsung_smartthings.png diff --git a/source/_integrations/smarty.markdown b/source/_integrations/smarty.markdown index 21706f5c418..4cdeab028aa 100644 --- a/source/_integrations/smarty.markdown +++ b/source/_integrations/smarty.markdown @@ -1,5 +1,5 @@ --- -title: Salda Smarty 2X/3X/4X P/V Ventilation +title: Salda Smarty description: Instructions on how to integrate Salda Smarty 2X/3X/4X P/V ventilation systems into Home Assistant. logo: salda.png ha_category: diff --git a/source/_integrations/socialblade.markdown b/source/_integrations/socialblade.markdown index 354a150dbd1..676c9b1a2be 100644 --- a/source/_integrations/socialblade.markdown +++ b/source/_integrations/socialblade.markdown @@ -1,5 +1,5 @@ --- -title: Social Blade Sensor +title: Social Blade description: Instructions on how to set up Social Blade Sensor within Home Assistant. logo: socialblade.png ha_category: diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index b47f19193fe..1649ce4bc98 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -1,5 +1,5 @@ --- -title: SolarEdge Sensor +title: SolarEdge description: Instructions on how to integrate SolarEdge sensor within Home Assistant. logo: solaredge.png ha_category: diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index e579616dd18..d4662f6cb1a 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -1,5 +1,5 @@ --- -title: SolarEdge Local Sensor +title: SolarEdge Local description: Instructions on how to integrate SolarEdge sensor within Home Assistant via Local API. logo: solaredge.png ha_category: diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index e06a3aa92f6..e64be3d9c47 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -1,5 +1,5 @@ --- -title: Solar-Log Sensor +title: Solar-Log description: Instructions on how to integrate Solar-Log sensors within Home Assistant. logo: solar-log.png ha_category: Sensor diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown index 211e8200ade..2911be8f704 100644 --- a/source/_integrations/solax.markdown +++ b/source/_integrations/solax.markdown @@ -1,5 +1,5 @@ --- -title: Solax Sensor +title: SolaX Power description: Instructions on how to integrate Solax sensor within Home Assistant. logo: solax-logo.png ha_category: diff --git a/source/_integrations/soma.markdown b/source/_integrations/soma.markdown index d16189fc44b..0caf1bd4017 100644 --- a/source/_integrations/soma.markdown +++ b/source/_integrations/soma.markdown @@ -1,5 +1,5 @@ --- -title: Soma +title: Soma Connect description: Instructions on how to set up the Soma Connect within Home Assistant. logo: soma.png ha_category: diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index 1a445a7c69c..9d2cf07c0ce 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -1,5 +1,5 @@ --- -title: Somfy +title: Somfy Open API description: Instructions on how to set up the Somfy hub within Home Assistant. logo: somfy.png ha_category: diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index 18a5ccc3c2e..a58e92a540c 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -1,5 +1,5 @@ --- -title: Sonarr Sensor +title: Sonarr description: Instructions on how to integrate Sonarr sensors with Home Assistant logo: sonarr.png ha_category: diff --git a/source/_integrations/songpal.markdown b/source/_integrations/songpal.markdown index 06ea835588e..791a0437791 100644 --- a/source/_integrations/songpal.markdown +++ b/source/_integrations/songpal.markdown @@ -1,5 +1,5 @@ --- -title: Sony SongPal compatible devices +title: Sony Songpal description: Instructions on how to integrate Sony Songpal devices into Home Assistant. logo: sony.png ha_category: diff --git a/source/_integrations/sony_projector.markdown b/source/_integrations/sony_projector.markdown index 3fbad6306bb..47cd3687945 100644 --- a/source/_integrations/sony_projector.markdown +++ b/source/_integrations/sony_projector.markdown @@ -1,5 +1,5 @@ --- -title: Sony Projector Switch +title: Sony Projector description: Instructions on how to integrate Sony Projector switches into Home Assistant. logo: sony.png ha_category: diff --git a/source/_integrations/soundtouch.markdown b/source/_integrations/soundtouch.markdown index 7bb986e41c7..906187d5b6d 100644 --- a/source/_integrations/soundtouch.markdown +++ b/source/_integrations/soundtouch.markdown @@ -1,5 +1,5 @@ --- -title: Soundtouch +title: Bose Soundtouch description: Instructions on how to integrate Bose Soundtouch devices into Home Assistant. logo: soundtouch.png ha_category: diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 584b149dba2..54d762f29da 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -1,5 +1,5 @@ --- -title: SpaceAPI +title: Space API description: Instructions on how to configure the SpaceAPI for Home Assistant. logo: spaceapi.png ha_category: diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown index 6bd5f3ff94c..ce845506677 100644 --- a/source/_integrations/spc.markdown +++ b/source/_integrations/spc.markdown @@ -1,5 +1,5 @@ --- -title: SPC +title: Vanderbilt SPC description: Instructions on how to setup Vanderbilt SPC devices within Home Assistant. ha_category: - Hub diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown index a768681cb21..4d52b9e2b05 100644 --- a/source/_integrations/spider.markdown +++ b/source/_integrations/spider.markdown @@ -1,5 +1,5 @@ --- -title: Spider +title: Itho Daalderop Spider description: Instructions on how to setup the Spider hub within Home Assistant. logo: spider.png ha_category: diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index fad655a514d..b0b83ddacf8 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -1,5 +1,5 @@ --- -title: SQL Sensor +title: SQL description: Instructions how to integrate SQL sensors into Home Assistant. logo: sql.png ha_category: diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index f4ce23fc46a..dd7762bc89f 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -1,5 +1,5 @@ --- -title: SSDP - Simple Service Discovery Protocol +title: Simple Service Discovery Protocol (SSDP) description: Discover integrations on the network using the SSDP protocol. ha_category: - Network diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index 980862259fd..6127235420c 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -1,5 +1,5 @@ --- -title: Statistics Sensor +title: Statistics description: Instructions on how to integrate statistical sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/streamlabswater.markdown b/source/_integrations/streamlabswater.markdown index 8d000777c18..9cef0c86189 100644 --- a/source/_integrations/streamlabswater.markdown +++ b/source/_integrations/streamlabswater.markdown @@ -1,5 +1,5 @@ --- -title: Streamlabs Water +title: StreamLabs description: Instructions on how to integrate Streamlabs Water devices with Home Assistant. logo: streamlabswater.png ha_category: diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index f0af4e32bd3..79eac8e9e8b 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -1,5 +1,5 @@ --- -title: Suez Water Sensor +title: Suez Water description: Instructions on how to integrate Suez Water daily data within Home Assistant. logo: suez.png ha_release: 0.97 diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index 37ee3b570bf..33d6a0b97c7 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -1,5 +1,5 @@ --- -title: Swiss Public Transport +title: Swiss public transport description: Instructions on how to integrate timetable data for traveling in Switzerland within Home Assistant. logo: train.png ha_category: diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 61e6d72cd34..45f7e1f3ce5 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -1,5 +1,5 @@ --- -title: Switchbot +title: SwitchBot description: Instructions on how to set up Switchbot switches. logo: switchbot.png ha_category: diff --git a/source/_integrations/switchmate.markdown b/source/_integrations/switchmate.markdown index ee1ca31c256..dae2699403f 100644 --- a/source/_integrations/switchmate.markdown +++ b/source/_integrations/switchmate.markdown @@ -1,5 +1,5 @@ --- -title: Switchmate +title: Switchmate SimplySmart Home description: Instructions on how to set up Switchmate switches. logo: switchmate-logo-rgb.png ha_category: diff --git a/source/_integrations/synology.markdown b/source/_integrations/synology.markdown index 2c1cf4002fd..5a702d775b7 100644 --- a/source/_integrations/synology.markdown +++ b/source/_integrations/synology.markdown @@ -1,5 +1,5 @@ --- -title: Synology Camera +title: Synology description: Instructions on how to integrate Synology Surveillance Station cameras within Home Assistant. logo: synology.png ha_category: diff --git a/source/_integrations/synologydsm.markdown b/source/_integrations/synologydsm.markdown index d203cfcc7a0..da69f2da50c 100644 --- a/source/_integrations/synologydsm.markdown +++ b/source/_integrations/synologydsm.markdown @@ -1,5 +1,5 @@ --- -title: SynologyDSM Sensor +title: SynologyDSM description: Instructions on how to integrate the SynologyDSM sensor within Home Assistant. logo: synology.png ha_category: From 9e2728321750c9738e6a567991b229170bf671ae Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Tue, 7 Jan 2020 06:12:10 -0800 Subject: [PATCH 213/236] Document 'androidtv.download' and 'androidtv.upload' services (#11501) * Document 'androidtv.adb_filesync' service * Document 'androidtv.download' and 'androidtv.upload' services --- source/_integrations/androidtv.markdown | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 2c0be439f9e..eb756c5d001 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -249,6 +249,24 @@ You can also use the command `GET_PROPERTIES` to retrieve the properties used by A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e6875e1db5c089b1e3ddeb7dba0f304). +### `androidtv.download` and `androidtv.upload` + +You can use the `androidtv.download` service to download a file from your Android TV / Fire TV device to your Home Assistant instance. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name of Android TV / Fire TV entity. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + +Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android TV / Fire TV devices. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of Android TV / Fire TV entities. +| `device_path` | no | The filepath on the Android TV / Fire TV device. +| `local_path` | no | The filepath on your Home Assistant instance. + ## Custom State Detection The Android TV integration works by polling the Android TV / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations. From a28beaab04c6be01a2c603281d3688e2b3062588 Mon Sep 17 00:00:00 2001 From: Maciej Bieniek Date: Tue, 7 Jan 2020 15:15:48 +0100 Subject: [PATCH 214/236] Add documentation for Brother Printer integration (#11595) * Add Brother Printer documentation * Fix CI error * :pencil2: Tweak * Suggested change Co-Authored-By: Franck Nijhof * Suggested change Co-Authored-By: Franck Nijhof * Remove configuration * Suggested change Co-Authored-By: Franck Nijhof * :pencil2: Tweak * Fix version number Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/brother.markdown | 24 +++++++++++++++++++++ source/images/supported_brands/brother.png | Bin 0 -> 57359 bytes 2 files changed, 24 insertions(+) create mode 100644 source/_integrations/brother.markdown create mode 100644 source/images/supported_brands/brother.png diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown new file mode 100644 index 00000000000..e76da718259 --- /dev/null +++ b/source/_integrations/brother.markdown @@ -0,0 +1,24 @@ +--- +title: "Brother Printer" +description: "Instructions on how to integrate a Brother printer into Home Assistant." +logo: brother.png +ha_category: + - System Monitor +ha_release: 0.104 +ha_iot_class: Local Polling +--- + +The `Brother Printer` integration allows you to read current data from your local Brother printer. + +It usually provides information about the device's state, the left amount of ink or toner and the remaining life of the drum or other parts of the printer. +The integration monitors every supported part. + +## Configuration + +To add `Brother Printer` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Brother Printer**. + +
    + +Some very old Brother printers use different data format and these models are not supported. The integration will show information about that during configuration. + +
    diff --git a/source/images/supported_brands/brother.png b/source/images/supported_brands/brother.png new file mode 100644 index 0000000000000000000000000000000000000000..78396fd914eede7f8c53c486fe7d09661f83161a GIT binary patch literal 57359 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 Date: Tue, 7 Jan 2020 15:29:46 +0100 Subject: [PATCH 215/236] Sync title/names with codebase (T-S) (#11657) --- source/_integrations/tank_utility.markdown | 2 +- source/_integrations/tautulli.markdown | 2 +- source/_integrations/tcp.markdown | 2 +- source/_integrations/ted5000.markdown | 2 +- source/_integrations/telnet.markdown | 2 +- source/_integrations/temper.markdown | 2 +- source/_integrations/template.markdown | 2 +- source/_integrations/tfiac.markdown | 2 +- source/_integrations/thermoworks_smoke.markdown | 2 +- source/_integrations/threshold.markdown | 2 +- source/_integrations/tod.markdown | 2 +- source/_integrations/tof.markdown | 2 +- source/_integrations/torque.markdown | 2 +- source/_integrations/totalconnect.markdown | 2 +- source/_integrations/tplink.markdown | 2 +- source/_integrations/traccar.markdown | 2 +- source/_integrations/tradfri.markdown | 2 +- source/_integrations/trafikverket_weatherstation.markdown | 2 +- source/_integrations/travisci.markdown | 2 +- source/_integrations/trend.markdown | 2 +- source/_integrations/ubus.markdown | 2 +- source/_integrations/uk_transport.markdown | 2 +- source/_integrations/unifi.markdown | 2 +- source/_integrations/unifi_direct.markdown | 2 +- source/_integrations/unifiled.markdown | 2 +- source/_integrations/universal.markdown | 2 +- source/_integrations/upc_connect.markdown | 2 +- source/_integrations/uptime.markdown | 2 +- source/_integrations/uscis.markdown | 2 +- source/_integrations/usgs_earthquakes_feed.markdown | 2 +- source/_integrations/uvc.markdown | 2 +- source/_integrations/vacuum.markdown | 2 +- source/_integrations/vallox.markdown | 2 +- source/_integrations/vasttrafik.markdown | 2 +- source/_integrations/venstar.markdown | 2 +- source/_integrations/version.markdown | 2 +- source/_integrations/vesync.markdown | 2 +- source/_integrations/viaggiatreno.markdown | 2 +- source/_integrations/vicare.markdown | 2 +- source/_integrations/vivotek.markdown | 2 +- source/_integrations/vizio.markdown | 2 +- source/_integrations/vlc.markdown | 2 +- source/_integrations/vlc_telnet.markdown | 2 +- source/_integrations/volumio.markdown | 2 +- source/_integrations/w800rf32.markdown | 2 +- source/_integrations/waqi.markdown | 2 +- source/_integrations/watson_tts.markdown | 2 +- source/_integrations/webhook.markdown | 1 + source/_integrations/websocket_api.markdown | 2 +- source/_integrations/whois.markdown | 2 +- source/_integrations/wirelesstag.markdown | 2 +- source/_integrations/workday.markdown | 2 +- source/_integrations/wsdot.markdown | 2 +- source/_integrations/x10.markdown | 2 +- source/_integrations/xeoma.markdown | 2 +- source/_integrations/xiaomi.markdown | 2 +- source/_integrations/xiaomi_miio.markdown | 2 +- source/_integrations/yale_smart_alarm.markdown | 2 +- source/_integrations/yamaha_musiccast.markdown | 2 +- source/_integrations/yandex_transport.markdown | 2 +- source/_integrations/yeelight.markdown | 2 +- source/_integrations/yeelightsunflower.markdown | 2 +- source/_integrations/yessssms.markdown | 2 +- source/_integrations/yi.markdown | 2 +- source/_integrations/yr.markdown | 2 +- source/_integrations/zamg.markdown | 2 +- source/_integrations/zeroconf.markdown | 2 +- source/_integrations/zhong_hong.markdown | 2 +- 68 files changed, 68 insertions(+), 67 deletions(-) diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index 52a30e0c678..e281551dc68 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -1,5 +1,5 @@ --- -title: Tank Utility Sensor +title: Tank Utility description: How to integrate Tank Utility sensors within Home Assistant. logo: tank_utility.png ha_category: diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown index 06234f91e7f..184dac2dd44 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -1,5 +1,5 @@ --- -title: Tautulli activity sensor +title: Tautulli description: Instructions on how to set up Tautulli sensors in Home Assistant. logo: tautulli.png ha_category: diff --git a/source/_integrations/tcp.markdown b/source/_integrations/tcp.markdown index 9163452e2b7..90dc92e9e4b 100644 --- a/source/_integrations/tcp.markdown +++ b/source/_integrations/tcp.markdown @@ -1,5 +1,5 @@ --- -title: TCP Binary Sensor +title: TCP description: Instructions on how to set up TCP within Home Assistant. logo: tcp_ip.png ha_category: diff --git a/source/_integrations/ted5000.markdown b/source/_integrations/ted5000.markdown index a214a0dc079..784e11fbd11 100644 --- a/source/_integrations/ted5000.markdown +++ b/source/_integrations/ted5000.markdown @@ -1,5 +1,5 @@ --- -title: TED5000 electricity monitoring +title: The Energy Detective TED5000 description: How to add a TED5000 to Home Assistant. logo: ted.png ha_category: diff --git a/source/_integrations/telnet.markdown b/source/_integrations/telnet.markdown index 6b451421a3e..5f91f2f895b 100644 --- a/source/_integrations/telnet.markdown +++ b/source/_integrations/telnet.markdown @@ -1,5 +1,5 @@ --- -title: Telnet Switch +title: Telnet description: Instructions on how to integrate telnet switches into Home Assistant. ha_category: - Switch diff --git a/source/_integrations/temper.markdown b/source/_integrations/temper.markdown index cbbe2d633b5..352b1a51764 100644 --- a/source/_integrations/temper.markdown +++ b/source/_integrations/temper.markdown @@ -1,5 +1,5 @@ --- -title: TEMPer Sensor +title: TEMPer description: Instructions on how to integrate TEMPer sensors into Home Assistant. ha_category: - DIY diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index db3114f58ef..8fd5495a3be 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -1,5 +1,5 @@ --- -title: Template Sensor +title: Template description: Instructions on how to integrate Template Sensors into Home Assistant. ha_category: - Sensor diff --git a/source/_integrations/tfiac.markdown b/source/_integrations/tfiac.markdown index a133047d1b8..cc3897dd4d6 100644 --- a/source/_integrations/tfiac.markdown +++ b/source/_integrations/tfiac.markdown @@ -1,5 +1,5 @@ --- -title: Tfiac AC +title: Tfiac description: Instructions on how to integrate Tfiac AC devices with Home Assistant. logo: tfiac.png ha_category: diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown index 04208b14fbc..946a67169de 100644 --- a/source/_integrations/thermoworks_smoke.markdown +++ b/source/_integrations/thermoworks_smoke.markdown @@ -1,5 +1,5 @@ --- -title: ThermoWorks Smoke Sensor +title: ThermoWorks Smoke description: Pulls temperature data for a ThermoWorks Smoke Thermometer connected with Smoke Gateway. logo: thermoworks.png ha_category: diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 1747636d7c6..694f7db327a 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -1,5 +1,5 @@ --- -title: Threshold Binary Sensor +title: Threshold description: Instructions on how to integrate threshold binary sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index a74473328c6..b2594dffd7d 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -1,5 +1,5 @@ --- -title: Times of the Day Binary Sensor +title: Times of the Day description: Instructions on how to integrate Times of the Day binary sensors within Home Assistant. ha_category: - Binary Sensor diff --git a/source/_integrations/tof.markdown b/source/_integrations/tof.markdown index a72636f6df1..43353f56018 100644 --- a/source/_integrations/tof.markdown +++ b/source/_integrations/tof.markdown @@ -1,5 +1,5 @@ --- -title: Time of Flight sensor using VL53L1X +title: Time of Flight description: Instructions on how to integrate a VL53L1X ToF sensor into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/torque.markdown b/source/_integrations/torque.markdown index 215a4e3c65a..3b43b9c0bca 100644 --- a/source/_integrations/torque.markdown +++ b/source/_integrations/torque.markdown @@ -1,5 +1,5 @@ --- -title: Torque (OBD2) +title: Torque description: Instructions on how to integrate Torque sensors into Home Assistant. logo: torque.png ha_category: diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index 4ddddd8a5ef..bba1396b5e1 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -1,5 +1,5 @@ --- -title: Honeywell TotalConnect Alarm Control Panel +title: Honeywell Total Connect Alarm description: Instructions on how to integrate TotalConnect alarms into Home Assistant. logo: honeywell-tc.png ha_category: diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index fba27c54077..e2d5c41a486 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -1,5 +1,5 @@ --- -title: TP-Link Smart Home Devices +title: TP-Link Kasa Smart description: Instructions on integrating TP-Link Smart Home Devices to Home Assistant. logo: tp-link.png ha_category: diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown index f037093f0a5..0a8e2083f08 100644 --- a/source/_integrations/traccar.markdown +++ b/source/_integrations/traccar.markdown @@ -1,5 +1,5 @@ --- -title: Traccar GPS tracker +title: Traccar description: Instructions how to use Traccar GPS tracker to track devices in Home Assistant. logo: traccar.png ha_release: 0.83 diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index a66269cb826..17056d52c6b 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -1,5 +1,5 @@ --- -title: IKEA Trådfri (Tradfri) +title: IKEA TRÅDFRI (TRADFRI) description: Access and control your IKEA Trådfri Gateway and its connected Zigbee-based devices. featured: true logo: ikea.svg diff --git a/source/_integrations/trafikverket_weatherstation.markdown b/source/_integrations/trafikverket_weatherstation.markdown index 981ec8634cc..9b8604a5b30 100644 --- a/source/_integrations/trafikverket_weatherstation.markdown +++ b/source/_integrations/trafikverket_weatherstation.markdown @@ -1,5 +1,5 @@ --- -title: Trafikverket WeatherStation +title: Trafikverket Weather Station description: Instructions how to integrate Trafikverket WeatherStation within Home Assistant. logo: trafikverket.png ha_category: diff --git a/source/_integrations/travisci.markdown b/source/_integrations/travisci.markdown index 314bca9d4f6..13cd4306ece 100644 --- a/source/_integrations/travisci.markdown +++ b/source/_integrations/travisci.markdown @@ -1,5 +1,5 @@ --- -title: Travis-CI Sensor +title: Travis-CI description: Instructions on how to integrate the test build results reported by Travis-CI within Home Assistant. logo: travisci.svg ha_category: diff --git a/source/_integrations/trend.markdown b/source/_integrations/trend.markdown index 4acaf016a3b..928ce444428 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -1,5 +1,5 @@ --- -title: Trend Binary Sensor +title: Trend description: Instructions on how to integrate Trend binary sensors into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/ubus.markdown b/source/_integrations/ubus.markdown index 43f45cc2b5f..ab455b0a4b5 100644 --- a/source/_integrations/ubus.markdown +++ b/source/_integrations/ubus.markdown @@ -1,5 +1,5 @@ --- -title: OpenWRT (ubus) +title: OpenWrt (ubus) description: Instructions on how to integrate OpenWRT routers into Home Assistant. logo: openwrt.png ha_category: diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown index 52f9c0704c2..2d6eef75a15 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -1,5 +1,5 @@ --- -title: UK transport +title: UK Transport description: Display the current status of UK train and bus departures. logo: train.png ha_category: diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 7a2bd626237..b7efdc99162 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -1,5 +1,5 @@ --- -title: UniFi +title: Ubiquiti UniFi description: Instructions on how to configure UniFi integration with UniFi Controller by Ubiquiti. logo: ubiquiti.png ha_category: diff --git a/source/_integrations/unifi_direct.markdown b/source/_integrations/unifi_direct.markdown index 3cf61548889..dbc20717f95 100644 --- a/source/_integrations/unifi_direct.markdown +++ b/source/_integrations/unifi_direct.markdown @@ -1,5 +1,5 @@ --- -title: Ubiquiti Unifi direct AP +title: Ubiquiti UniFi AP description: Instructions on how to use a Unifi WAP as a device tracker. logo: ubiquiti.png ha_category: diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index 7475c24fd7b..b15abe0bfa1 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -1,5 +1,5 @@ --- -title: UniFi LED +title: Ubiquiti UniFi LED description: Instructions on how to configure the UniFi LED integration with UniFi LED Controller by Ubiquiti. logo: ubiquiti.png ha_category: diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 0ee8a93fdef..477fa801018 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -1,5 +1,5 @@ --- -title: Universal +title: Universal Media Player description: Instructions on how to create a universal media player in Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index bfc4ff5bc02..2489cba8cb8 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -1,5 +1,5 @@ --- -title: UPC ConnectBox +title: UPC Connect Box description: Instructions on how to integrate UPC ConnectBox into Home Assistant. logo: upc.png ha_category: diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index 64695938a6e..f99a91b9afe 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -1,5 +1,5 @@ --- -title: Uptime Sensor +title: Uptime description: Instructions on how to integrate an uptime sensor into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/uscis.markdown b/source/_integrations/uscis.markdown index ad8356e7cc2..5aecd9650a1 100644 --- a/source/_integrations/uscis.markdown +++ b/source/_integrations/uscis.markdown @@ -1,5 +1,5 @@ --- -title: USCIS Sensor +title: U.S. Citizenship and Immigration Services (USCIS) description: Instructions on how to set up USCIS within Home Assistant. logo: uscis.png ha_category: diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index c1873c2f717..b9a0765afc9 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -1,5 +1,5 @@ --- -title: USGS Earthquakes +title: U.S. Geological Survey Earthquake Hazards (USGS) description: Instructions on how to integrate the U.S. Geological Survey Earthquake Hazards Program Feed feed into Home Assistant. logo: us-geological-survey.png ha_category: diff --git a/source/_integrations/uvc.markdown b/source/_integrations/uvc.markdown index a9fb876719d..a24c9b985a0 100644 --- a/source/_integrations/uvc.markdown +++ b/source/_integrations/uvc.markdown @@ -1,5 +1,5 @@ --- -title: UniFi Video Camera +title: Ubiquiti UniFi Video description: Instructions on how to integrate UVC cameras within Home Assistant. logo: ubiquiti.png ha_category: diff --git a/source/_integrations/vacuum.markdown b/source/_integrations/vacuum.markdown index 52cf0716955..7c669b99270 100644 --- a/source/_integrations/vacuum.markdown +++ b/source/_integrations/vacuum.markdown @@ -1,5 +1,5 @@ --- -title: Vacuum cleaner robots +title: Vacuum description: Instructions on how to setup and use vacuum's in Home Assistant. ha_release: 0.51 --- diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index 71a112af006..14da1096117 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -1,5 +1,5 @@ --- -title: Vallox Ventilation Units +title: Valloxs description: Instructions on how to integrate Vallox ventilation units into Home Assistant. logo: vallox.png ha_category: diff --git a/source/_integrations/vasttrafik.markdown b/source/_integrations/vasttrafik.markdown index bb6b9db6fe4..d74232f47c0 100644 --- a/source/_integrations/vasttrafik.markdown +++ b/source/_integrations/vasttrafik.markdown @@ -1,5 +1,5 @@ --- -title: Västtrafik Public Transport +title: Västtrafik description: Instructions on how to integrate timetable data for traveling in Sweden within Home Assistant. logo: vasttrafik.png ha_category: diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index d4635ee7ab6..721facf9991 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -1,5 +1,5 @@ --- -title: Venstar Thermostat +title: Venstar description: Instructions for how to integrate Venstar WiFi thermostats within Home Assistant. logo: venstar.png ha_category: diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 37300ad343a..39d59f1b62a 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -1,5 +1,5 @@ --- -title: Version Sensor +title: Version description: Instructions on how to integrate a version sensor into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index 457e0b1961a..99fb589e506 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -1,5 +1,5 @@ --- -title: VeSync Integration +title: Etekcity VeSync description: Instructions on how to set up Etekcity VeSync switches and outlets within Home Assistant. logo: vesync.png ha_category: diff --git a/source/_integrations/viaggiatreno.markdown b/source/_integrations/viaggiatreno.markdown index b1a72249aff..b2548ee731e 100644 --- a/source/_integrations/viaggiatreno.markdown +++ b/source/_integrations/viaggiatreno.markdown @@ -1,5 +1,5 @@ --- -title: ViaggiaTreno Italian Railroads +title: Trenitalia ViaggiaTreno description: Instructions on how to integrate Italian Railroads data (from ViaggiaTreno API) into Home Assistant. logo: train.png ha_category: diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index 584c6fa6317..df002748d79 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -1,5 +1,5 @@ --- -title: Viessmann climate controller +title: Viessmann ViCare description: Instructions how to integrate Viessmann heating devices with Home Assistant logo: viessmann.png ha_category: Climate diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index 7616852c848..f09b1cc936a 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -1,5 +1,5 @@ --- -title: Vivotek Camera +title: Vivotek description: Instructions on how to integrate Vivotek cameras within Home Assistant. ha_category: - Camera diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 10f4e33bb0d..2a150daeb85 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -1,5 +1,5 @@ --- -title: Vizio SmartCast Device +title: Vizio SmartCast TV description: Instructions on how to integrate Vizio SmartCast TVs and sound bars into Home Assistant. logo: vizio-smartcast.png ha_category: diff --git a/source/_integrations/vlc.markdown b/source/_integrations/vlc.markdown index b24193219ba..b974ec9201b 100644 --- a/source/_integrations/vlc.markdown +++ b/source/_integrations/vlc.markdown @@ -1,5 +1,5 @@ --- -title: VLC +title: VLC media player description: Instructions on how to integrate VLC media player into Home Assistant. logo: videolan.png ha_category: diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index 3600b5b68d8..b24e846f8ac 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -1,5 +1,5 @@ --- -title: VLC Telnet +title: VLC media player Telnet description: Instructions on how to integrate VLC media player into Home Assistant using the telnet interface. logo: videolan.png ha_category: diff --git a/source/_integrations/volumio.markdown b/source/_integrations/volumio.markdown index 45ec0990962..c68dfc19620 100644 --- a/source/_integrations/volumio.markdown +++ b/source/_integrations/volumio.markdown @@ -1,5 +1,5 @@ --- -title: Volumio Media Player +title: Volumio description: How to set up the Volumio media player platform logo: volumio.png ha_category: diff --git a/source/_integrations/w800rf32.markdown b/source/_integrations/w800rf32.markdown index 5decb5738cf..48f5a32457f 100644 --- a/source/_integrations/w800rf32.markdown +++ b/source/_integrations/w800rf32.markdown @@ -1,5 +1,5 @@ --- -title: W800rf32 +title: WGL Designs W800RF32 description: Instructions on how to integrate a W800rf32(a) into Home Assistant. logo: w800rf32.png ha_category: diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index 09d419d9ea7..f8410cc9298 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -1,5 +1,5 @@ --- -title: World Air Quality Index +title: World Air Quality Index (WAQI) description: Instructions on how to setup World Air Quality Index sensor in Home Assistant. logo: waqi.png ha_category: diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 893664261c9..346152a89fd 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -1,5 +1,5 @@ --- -title: Watson TTS +title: IBM Watson TTS description: Instructions on how to setup IBM Watson TTS with Home Assistant. logo: watson_tts.png ha_category: diff --git a/source/_integrations/webhook.markdown b/source/_integrations/webhook.markdown index b0d9a151ddb..c062879b79c 100644 --- a/source/_integrations/webhook.markdown +++ b/source/_integrations/webhook.markdown @@ -1,5 +1,6 @@ --- ha_release: 0.8 +title: Webhook --- diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index f7da1d73415..c04a6b4d069 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -1,5 +1,5 @@ --- -title: Websocket API +title: Home Asssitant WebSocket API description: Instructions on how to setup the WebSocket API within Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/whois.markdown b/source/_integrations/whois.markdown index 1f369922ee3..68515e63eb1 100644 --- a/source/_integrations/whois.markdown +++ b/source/_integrations/whois.markdown @@ -1,5 +1,5 @@ --- -title: Whois Sensor +title: Whois description: Instructions on how to integrate WHOIS lookup sensor within Home Assistant. logo: icann.png ha_category: diff --git a/source/_integrations/wirelesstag.markdown b/source/_integrations/wirelesstag.markdown index 59e476c3b02..946b946d67b 100644 --- a/source/_integrations/wirelesstag.markdown +++ b/source/_integrations/wirelesstag.markdown @@ -1,5 +1,5 @@ --- -title: WirelessTag +title: Wireless Sensor Tags description: Instructions on how to integrate your Wireless Tags sensors within Home Assistant. logo: wirelesstag.png ha_category: diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index 972e9a9ce21..c8e5ac7055e 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -1,5 +1,5 @@ --- -title: Workday Binary Sensor +title: Workday description: Steps to configure the binary workday sensor. logo: home-assistant.png ha_category: diff --git a/source/_integrations/wsdot.markdown b/source/_integrations/wsdot.markdown index 7ade29602c3..fab914eb19b 100644 --- a/source/_integrations/wsdot.markdown +++ b/source/_integrations/wsdot.markdown @@ -1,5 +1,5 @@ --- -title: Washington State DOT +title: Washington State Department of Transportation (WSDOT) description: Instructions on how to integrate WSDOT data into your home. logo: wsdot.png ha_category: diff --git a/source/_integrations/x10.markdown b/source/_integrations/x10.markdown index 610d18a0d27..2d17e404b2d 100644 --- a/source/_integrations/x10.markdown +++ b/source/_integrations/x10.markdown @@ -1,5 +1,5 @@ --- -title: X10 +title: Heyu X10 description: Instructions on how to setup X10 devices within Home Assistant. logo: x10.gif ha_category: diff --git a/source/_integrations/xeoma.markdown b/source/_integrations/xeoma.markdown index 87207ddfe8f..e20a853525c 100644 --- a/source/_integrations/xeoma.markdown +++ b/source/_integrations/xeoma.markdown @@ -1,5 +1,5 @@ --- -title: Xeoma Camera +title: Xeoma description: Instructions on how to integrate camera video feeds from a Xeoma server in Home Assistant logo: xeoma.png ha_category: diff --git a/source/_integrations/xiaomi.markdown b/source/_integrations/xiaomi.markdown index d4d9717893a..ab14375a4bd 100644 --- a/source/_integrations/xiaomi.markdown +++ b/source/_integrations/xiaomi.markdown @@ -1,5 +1,5 @@ --- -title: Xiaomi Cameras +title: Xiaomi description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. logo: xiaomi.png ha_category: diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index d2ce22e960c..0dae8815a55 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -1,5 +1,5 @@ --- -title: Xiaomi Mi WiFi Repeater 2 +title: Xiaomi miio description: Instructions how to integrate your Xiaomi Mi WiFi Repeater 2 within Home Assistant. logo: xiaomi.png ha_category: diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown index 0f39506d7e8..c73c1b6500b 100644 --- a/source/_integrations/yale_smart_alarm.markdown +++ b/source/_integrations/yale_smart_alarm.markdown @@ -1,5 +1,5 @@ --- -title: Yale Smart Alarm Control +title: Yale Smart Living description: Instructions on how to integrate Yale Smart Alarms into Home Assistant. logo: yale.png ha_category: diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index 08bbc8ba8c8..e1397e32cd5 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -1,5 +1,5 @@ --- -title: Yamaha MusicCast Receivers +title: Yamaha MusicCast description: Instructions on how to integrate Yamaha MusicCast Receivers into Home Assistant. logo: yamaha.png ha_category: diff --git a/source/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index 6e4cfd64560..17ea63dc19b 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -1,5 +1,5 @@ --- -title: Yandex transport +title: Yandex Transport description: Instructions on how to set up Yandex transport with Home Assistant. logo: yandex.png ha_category: diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index c2c2ef6706e..dc31c9e2163 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -1,5 +1,5 @@ --- -title: Yeelight Wifi Bulb +title: Yeelight description: Instructions on how to setup Yeelight Wifi devices within Home Assistant. logo: yeelight.png ha_category: diff --git a/source/_integrations/yeelightsunflower.markdown b/source/_integrations/yeelightsunflower.markdown index af632aaeee4..a9c9f4d0f8e 100644 --- a/source/_integrations/yeelightsunflower.markdown +++ b/source/_integrations/yeelightsunflower.markdown @@ -1,5 +1,5 @@ --- -title: Yeelight Sunflower Bulb +title: Yeelight Sunflower description: Instructions on how to setup Yeelight Sunflower hub and bulbs within Home Assistant. logo: yeelight.png ha_category: diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index a7f13294fdb..b38753fdd35 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -1,5 +1,5 @@ --- -title: Yesss SMS +title: yesss! SMS description: Instructions on how to add Yesss-SMS notifications to Home Assistant. logo: yesssat.png ha_category: diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index 43b9c633226..0140880c436 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -1,5 +1,5 @@ --- -title: Yi Home Camera +title: Yi Home Cameras description: Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant. logo: yi.png ha_category: diff --git a/source/_integrations/yr.markdown b/source/_integrations/yr.markdown index 902ce9b1bae..7214dc57b9c 100644 --- a/source/_integrations/yr.markdown +++ b/source/_integrations/yr.markdown @@ -1,5 +1,5 @@ --- -title: YR +title: Yr description: Instructions on how to integrate Yr.no within Home Assistant. logo: yr.png ha_category: diff --git a/source/_integrations/zamg.markdown b/source/_integrations/zamg.markdown index 7714f750939..a1e452ac792 100644 --- a/source/_integrations/zamg.markdown +++ b/source/_integrations/zamg.markdown @@ -1,5 +1,5 @@ --- -title: ZAMG +title: Zentralanstalt für Meteorologie und Geodynamik (ZAMG) description: Instructions on how to integrate ZAMG within Home Assistant. logo: zamg.png ha_category: diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index d4f7bff99dc..4da0155329d 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -1,5 +1,5 @@ --- -title: Zeroconf/Avahi/Bonjour +title: Zero-configuration networking (zeroconf) description: Exposes Home Assistant using the Zeroconf protocol. ha_category: - Network diff --git a/source/_integrations/zhong_hong.markdown b/source/_integrations/zhong_hong.markdown index 4a7f7622997..dd934388bc9 100644 --- a/source/_integrations/zhong_hong.markdown +++ b/source/_integrations/zhong_hong.markdown @@ -1,5 +1,5 @@ --- -title: ZhongHong Thermostats Controller +title: ZhongHong description: Instructions on how to integrate ZhongHong Support thermostats within Home Assistant. logo: zhong_hong.png ha_category: From c50eb55b74c645bf0d5199b8826f478c408b5bff Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 15:30:05 +0100 Subject: [PATCH 216/236] Sync title/names with codebase (A-H) (#11655) --- source/_integrations/abode.markdown | 2 +- source/_integrations/acer_projector.markdown | 2 +- source/_integrations/aftership.markdown | 2 +- source/_integrations/aladdin_connect.markdown | 2 +- source/_integrations/alarm_control_panel.markdown | 2 +- source/_integrations/alarmdecoder.markdown | 2 +- source/_integrations/alarmdotcom.markdown | 2 +- source/_integrations/ambiclimate.markdown | 2 +- source/_integrations/ambient_station.markdown | 2 +- source/_integrations/amcrest.markdown | 2 +- source/_integrations/ampio.markdown | 2 +- source/_integrations/anel_pwrctrl.markdown | 2 +- source/_integrations/api.markdown | 2 +- source/_integrations/apns.markdown | 2 +- source/_integrations/arwn.markdown | 2 +- source/_integrations/asterisk_cdr.markdown | 2 +- source/_integrations/atome.markdown | 2 +- source/_integrations/aurora.markdown | 2 +- source/_integrations/aurora_abb_powerone.markdown | 2 +- source/_integrations/awair.markdown | 2 +- source/_integrations/aws.markdown | 2 +- source/_integrations/baidu.markdown | 2 +- source/_integrations/bayesian.markdown | 2 +- source/_integrations/beewi_smartclim.markdown | 2 +- source/_integrations/bh1750.markdown | 2 +- source/_integrations/bizkaibus.markdown | 2 +- source/_integrations/blackbird.markdown | 2 +- source/_integrations/blinksticklight.markdown | 2 +- source/_integrations/blinkt.markdown | 2 +- source/_integrations/bme280.markdown | 2 +- source/_integrations/bme680.markdown | 2 +- source/_integrations/bom.markdown | 2 +- source/_integrations/brunt.markdown | 2 +- source/_integrations/citybikes.markdown | 2 +- source/_integrations/clickatell.markdown | 2 +- source/_integrations/clicksend_tts.markdown | 2 +- source/_integrations/co2signal.markdown | 2 +- source/_integrations/comfoconnect.markdown | 2 +- source/_integrations/command_line.markdown | 2 +- source/_integrations/coolmaster.markdown | 2 +- source/_integrations/cover.markdown | 2 +- source/_integrations/cpuspeed.markdown | 2 +- source/_integrations/cups.markdown | 2 +- source/_integrations/currencylayer.markdown | 2 +- source/_integrations/darksky.markdown | 2 +- source/_integrations/demo.markdown | 2 +- source/_integrations/device_sun_light_trigger.markdown | 2 +- source/_integrations/digitalloggers.markdown | 2 +- source/_integrations/discogs.markdown | 2 +- source/_integrations/dlink.markdown | 2 +- source/_integrations/dlna_dmr.markdown | 2 +- source/_integrations/dnsip.markdown | 2 +- source/_integrations/doods.markdown | 2 +- source/_integrations/dsmr.markdown | 2 +- source/_integrations/dublin_bus_transport.markdown | 2 +- source/_integrations/duckdns.markdown | 2 +- source/_integrations/dunehd.markdown | 2 +- source/_integrations/dwd_weather_warnings.markdown | 2 +- source/_integrations/dweet.markdown | 2 +- source/_integrations/ebox.markdown | 2 +- source/_integrations/ecoal_boiler.markdown | 2 +- source/_integrations/econet.markdown | 2 +- source/_integrations/eddystone_temperature.markdown | 2 +- source/_integrations/edimax.markdown | 2 +- source/_integrations/elkm1.markdown | 2 +- source/_integrations/elv.markdown | 2 +- source/_integrations/emoncms.markdown | 2 +- source/_integrations/emoncms_history.markdown | 2 +- source/_integrations/emulated_hue.markdown | 2 +- source/_integrations/entur_public_transport.markdown | 2 +- source/_integrations/environment_canada.markdown | 2 +- source/_integrations/envisalink.markdown | 2 +- source/_integrations/ephember.markdown | 2 +- source/_integrations/eufy.markdown | 2 +- source/_integrations/everlights.markdown | 2 +- source/_integrations/evohome.markdown | 2 +- source/_integrations/fail2ban.markdown | 2 +- source/_integrations/familyhub.markdown | 2 +- source/_integrations/ffmpeg_motion.markdown | 2 +- source/_integrations/ffmpeg_noise.markdown | 2 +- source/_integrations/fido.markdown | 2 +- source/_integrations/filesize.markdown | 2 +- source/_integrations/filter.markdown | 2 +- source/_integrations/fints.markdown | 2 +- source/_integrations/fixer.markdown | 2 +- source/_integrations/flexit.markdown | 2 +- source/_integrations/flic.markdown | 2 +- source/_integrations/flux.markdown | 2 +- source/_integrations/flux_led.markdown | 2 +- source/_integrations/folder.markdown | 2 +- source/_integrations/foobot.markdown | 2 +- source/_integrations/fortigate.markdown | 2 +- source/_integrations/fortios.markdown | 2 +- source/_integrations/foscam.markdown | 2 +- source/_integrations/freedns.markdown | 2 +- source/_integrations/fritz.markdown | 2 +- source/_integrations/fritzbox.markdown | 2 +- source/_integrations/fritzbox_callmonitor.markdown | 2 +- source/_integrations/fritzbox_netmonitor.markdown | 2 +- source/_integrations/fritzdect.markdown | 2 +- source/_integrations/frontend.markdown | 2 +- source/_integrations/frontier_silicon.markdown | 2 +- source/_integrations/futurenow.markdown | 2 +- source/_integrations/garadget.markdown | 2 +- source/_integrations/gc100.markdown | 2 +- source/_integrations/geo_json_events.markdown | 2 +- source/_integrations/geo_rss_events.markdown | 2 +- source/_integrations/geonetnz_volcano.markdown | 2 +- source/_integrations/github.markdown | 2 +- source/_integrations/gitlab_ci.markdown | 2 +- source/_integrations/gitter.markdown | 2 +- source/_integrations/gntp.markdown | 2 +- source/_integrations/gogogate2.markdown | 2 +- source/_integrations/google_maps.markdown | 2 +- source/_integrations/gpmdp.markdown | 2 +- source/_integrations/greeneye_monitor.markdown | 2 +- source/_integrations/greenwave.markdown | 2 +- source/_integrations/growatt_server.markdown | 2 +- source/_integrations/gstreamer.markdown | 2 +- source/_integrations/gtfs.markdown | 2 +- source/_integrations/harman_kardon_avr.markdown | 2 +- source/_integrations/harmony.markdown | 2 +- source/_integrations/haveibeenpwned.markdown | 2 +- source/_integrations/hddtemp.markdown | 2 +- source/_integrations/hdmi_cec.markdown | 2 +- source/_integrations/heatmiser.markdown | 2 +- source/_integrations/hikvision.markdown | 2 +- source/_integrations/hikvisioncam.markdown | 2 +- source/_integrations/history_stats.markdown | 2 +- source/_integrations/hitron_coda.markdown | 2 +- source/_integrations/hlk_sw16.markdown | 2 +- source/_integrations/homeassistant.markdown | 2 +- source/_integrations/homekit_controller.markdown | 2 +- source/_integrations/homeworks.markdown | 2 +- source/_integrations/honeywell.markdown | 2 +- source/_integrations/hook.markdown | 2 +- source/_integrations/horizon.markdown | 2 +- source/_integrations/hp_ilo.markdown | 2 +- source/_integrations/html5.markdown | 2 +- source/_integrations/htu21d.markdown | 2 +- source/_integrations/hunterdouglas_powerview.markdown | 2 +- 141 files changed, 141 insertions(+), 141 deletions(-) diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown index 7a4e2903285..289fdbf36ea 100644 --- a/source/_integrations/abode.markdown +++ b/source/_integrations/abode.markdown @@ -1,5 +1,5 @@ --- -title: Abode Home Security +title: Abode description: Instructions on integrating Abode home security with Home Assistant. logo: abode.jpg ha_category: diff --git a/source/_integrations/acer_projector.markdown b/source/_integrations/acer_projector.markdown index 33693cd3fbe..04acb894d93 100644 --- a/source/_integrations/acer_projector.markdown +++ b/source/_integrations/acer_projector.markdown @@ -1,5 +1,5 @@ --- -title: Acer Projector Switch +title: Acer Projector description: Instructions on how to integrate Acer Projector switches into Home Assistant. logo: acer.png ha_category: diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown index 0a47d3b7bed..a04b251280a 100644 --- a/source/_integrations/aftership.markdown +++ b/source/_integrations/aftership.markdown @@ -1,5 +1,5 @@ --- -title: AfterShip Sensor +title: AfterShip description: Instructions on how to set up AfterShip sensors within Home Assistant. logo: aftership.png ha_category: diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown index 6e593d7575c..4dc5b4ebef6 100644 --- a/source/_integrations/aladdin_connect.markdown +++ b/source/_integrations/aladdin_connect.markdown @@ -1,5 +1,5 @@ --- -title: Genie Aladdin Connect Cover +title: Aladdin Connect description: Instructions how to integrate Genie Aladdin Connect garage door covers into Home Assistant. logo: aladdin_connect.png ha_category: diff --git a/source/_integrations/alarm_control_panel.markdown b/source/_integrations/alarm_control_panel.markdown index 21fcb02009e..482d1a062e1 100644 --- a/source/_integrations/alarm_control_panel.markdown +++ b/source/_integrations/alarm_control_panel.markdown @@ -1,5 +1,5 @@ --- -title: Alarm Control Panels +title: Alarm Control Panel description: Instructions on how to integrate Alarm Control Panels into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown index 5489e280b6c..25a80a4f5c0 100644 --- a/source/_integrations/alarmdecoder.markdown +++ b/source/_integrations/alarmdecoder.markdown @@ -1,5 +1,5 @@ --- -title: AlarmDecoder Alarm +title: AlarmDecoder description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an AlarmDecoder device. logo: alarmdecoder.png ha_category: diff --git a/source/_integrations/alarmdotcom.markdown b/source/_integrations/alarmdotcom.markdown index a14ee3dec57..02afea696a9 100644 --- a/source/_integrations/alarmdotcom.markdown +++ b/source/_integrations/alarmdotcom.markdown @@ -1,5 +1,5 @@ --- -title: Alarm.com Alarm Control Panel +title: Alarm.com description: Instructions on how to integrate Alarm.com into Home Assistant. logo: alarmdotcom.png ha_category: diff --git a/source/_integrations/ambiclimate.markdown b/source/_integrations/ambiclimate.markdown index 21ff7d0aae2..1f163dc225d 100644 --- a/source/_integrations/ambiclimate.markdown +++ b/source/_integrations/ambiclimate.markdown @@ -1,5 +1,5 @@ --- -title: Ambiclimate A/C controller +title: Ambiclimate description: Instructions on how to integrate Ambiclimate A/C controller into Home Assistant. logo: ambiclimate.png ha_category: Climate diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index 3bd927575b4..eb6af9d3995 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -1,5 +1,5 @@ --- -title: Ambient Weather Station Sensor +title: Ambient Weather Station description: How to integrate Ambient Weather station within Home Assistant. logo: ambient_weather.png ha_category: diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown index b4b669f3033..4996966310d 100644 --- a/source/_integrations/amcrest.markdown +++ b/source/_integrations/amcrest.markdown @@ -1,5 +1,5 @@ --- -title: Amcrest IP Camera +title: Amcrest description: Instructions on how to integrate Amcrest IP cameras within Home Assistant. logo: amcrest.png ha_category: diff --git a/source/_integrations/ampio.markdown b/source/_integrations/ampio.markdown index f1eceb4c89c..6588dc4cf0e 100644 --- a/source/_integrations/ampio.markdown +++ b/source/_integrations/ampio.markdown @@ -1,5 +1,5 @@ --- -title: Ampio Smog +title: Ampio Smart Smog System description: Instructions on how to setup Ampio Smog sensors in Home Assistant. logo: ampio_smog.png ha_category: diff --git a/source/_integrations/anel_pwrctrl.markdown b/source/_integrations/anel_pwrctrl.markdown index 15567eae9c7..509b449b4e5 100644 --- a/source/_integrations/anel_pwrctrl.markdown +++ b/source/_integrations/anel_pwrctrl.markdown @@ -1,5 +1,5 @@ --- -title: ANEL PwrCtrl Switch +title: Anel NET-PwrCtrl description: Instructions on how to integrate ANEL PwrCtrl switches within Home Assistant. logo: anel.png ha_category: diff --git a/source/_integrations/api.markdown b/source/_integrations/api.markdown index 99a416dd379..1898fb65993 100644 --- a/source/_integrations/api.markdown +++ b/source/_integrations/api.markdown @@ -1,5 +1,5 @@ --- -title: API +title: Home Assistant API description: Instructions on how to setup the RESTful API within Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/apns.markdown b/source/_integrations/apns.markdown index fe7df4e280a..e2cd6d2746d 100644 --- a/source/_integrations/apns.markdown +++ b/source/_integrations/apns.markdown @@ -1,5 +1,5 @@ --- -title: APNS +title: Apple Push Notification Service (APNS) description: Instructions on how to add APNS notifications to Home Assistant. logo: apple.png ha_category: diff --git a/source/_integrations/arwn.markdown b/source/_integrations/arwn.markdown index cceef83296f..4df56f890ce 100644 --- a/source/_integrations/arwn.markdown +++ b/source/_integrations/arwn.markdown @@ -1,5 +1,5 @@ --- -title: ARWN Sensor +title: Ambient Radio Weather Network description: Instructions on how to integrate ARWN within Home Assistant. ha_category: - Sensor diff --git a/source/_integrations/asterisk_cdr.markdown b/source/_integrations/asterisk_cdr.markdown index e8ef14c7c09..a78e34abe66 100644 --- a/source/_integrations/asterisk_cdr.markdown +++ b/source/_integrations/asterisk_cdr.markdown @@ -1,5 +1,5 @@ --- -title: Asterisk Call Data Recorder +title: Asterisk Call Detail Records description: Instructions on how to integrate an Asterisk CDR within Home Assistant. logo: asterisk.png ha_category: diff --git a/source/_integrations/atome.markdown b/source/_integrations/atome.markdown index 6bdefa17eb6..b2f521af0f2 100644 --- a/source/_integrations/atome.markdown +++ b/source/_integrations/atome.markdown @@ -1,5 +1,5 @@ --- -title: Atome Linky Sensor +title: Atome Linky description: Integrate Atome Linky consumption data within Home Assistant. logo: total_direct_energie.png ha_release: 0.99 diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown index 4f51d0c0a91..09222ea627b 100644 --- a/source/_integrations/aurora.markdown +++ b/source/_integrations/aurora.markdown @@ -1,5 +1,5 @@ --- -title: Aurora sensor +title: Aurora description: Know when auroras might be visible at your location ha_category: - Environment diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index e4268bdbf28..de64e474927 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -1,5 +1,5 @@ --- -title: Aurora ABB Powerone PV Inverter Sensor +title: Aurora ABB Solar PV description: Instructions on how to integrate an Aurora ABB Powerone solar inverter within Home Assistant. logo: powerone.png ha_category: diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index f0bde0f4e8b..4838a34f723 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -1,5 +1,5 @@ --- -title: Awair Air Quality Monitor +title: Awair description: Instructions on how to setup Awair devices in Home Assistant. logo: awair.jpg ha_category: diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 6181bc9b584..120ea12bf54 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -1,5 +1,5 @@ --- -title: Amazon Web Services +title: Amazon Web Services (AWS) description: Instructions on how to integrate Amazon Web Services with Home Assistant. logo: aws.png ha_category: diff --git a/source/_integrations/baidu.markdown b/source/_integrations/baidu.markdown index 97282a202f9..b56b334b02a 100644 --- a/source/_integrations/baidu.markdown +++ b/source/_integrations/baidu.markdown @@ -1,5 +1,5 @@ --- -title: Baidu Text-to-Speech +title: Baidu description: Instructions on how to setup Baidu TTS with Home Assistant. logo: baiducloud.png ha_category: diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index b8e622bc5ba..37de5284bf5 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -1,5 +1,5 @@ --- -title: Bayesian Binary Sensor +title: Bayesian description: Instructions on how to integrate threshold Bayesian sensors into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index 809a817dc4f..e152f029c34 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -1,5 +1,5 @@ --- -title: BeeWi SmartClim BLE +title: BeeWi SmartClim BLE sensor description: Instructions on how to integrate MBeeWi SmartClim BLE sensor with Home Assistant. logo: beewi_by_otio.png ha_category: diff --git a/source/_integrations/bh1750.markdown b/source/_integrations/bh1750.markdown index 6107e589c78..0501af1295e 100644 --- a/source/_integrations/bh1750.markdown +++ b/source/_integrations/bh1750.markdown @@ -1,5 +1,5 @@ --- -title: BH1750 Light sensor +title: BH1750 description: Instructions on how to integrate a BH1750 light sensor into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index 0da48d6ec2b..57e4327f8a8 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -1,5 +1,5 @@ --- -title: Bizkaibus next bus tracking sensor +title: Bizkaibus description: Instructions on how to integrate timetable data for traveling on Bizkaibus within Home Assistant. logo: bizkaibus.png ha_category: diff --git a/source/_integrations/blackbird.markdown b/source/_integrations/blackbird.markdown index b7e442d3cd6..ea35b35e64d 100644 --- a/source/_integrations/blackbird.markdown +++ b/source/_integrations/blackbird.markdown @@ -1,5 +1,5 @@ --- -title: Blackbird 8x8 HDMI Matrix Switch +title: Monoprice Blackbird Matrix Switch description: Instructions on how to integrate Monoprice Blackbird 4k 8x8 HDBaseT Matrix Switch into Home Assistant. logo: monoprice.svg ha_category: diff --git a/source/_integrations/blinksticklight.markdown b/source/_integrations/blinksticklight.markdown index 4d3e5a56aef..47a599bf547 100644 --- a/source/_integrations/blinksticklight.markdown +++ b/source/_integrations/blinksticklight.markdown @@ -1,5 +1,5 @@ --- -title: Blinkstick Light +title: BlinkStick description: Instructions on how to setup Blinkstick lights within Home Assistant. logo: blinkstick.png ha_category: diff --git a/source/_integrations/blinkt.markdown b/source/_integrations/blinkt.markdown index 02a2f2da835..70f63f99e0a 100644 --- a/source/_integrations/blinkt.markdown +++ b/source/_integrations/blinkt.markdown @@ -1,5 +1,5 @@ --- -title: Blinkt! Light +title: Blinkt! description: Instructions on how to setup Blinkt! RGB LED lights within Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/bme280.markdown b/source/_integrations/bme280.markdown index 827c15b4aee..89635428c0a 100644 --- a/source/_integrations/bme280.markdown +++ b/source/_integrations/bme280.markdown @@ -1,5 +1,5 @@ --- -title: BME280 Sensor +title: Bosch BME280 Environmental Sensor description: Instructions on how to integrate a BME280 sensor into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/bme680.markdown b/source/_integrations/bme680.markdown index b87b1f4e1fa..689c6d75c92 100644 --- a/source/_integrations/bme680.markdown +++ b/source/_integrations/bme680.markdown @@ -1,5 +1,5 @@ --- -title: BME680 Sensor +title: Bosch BME680 Environmental Sensor description: Instructions on how to integrate a BME680 sensor into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/bom.markdown b/source/_integrations/bom.markdown index f8acc1303aa..070ebea0163 100644 --- a/source/_integrations/bom.markdown +++ b/source/_integrations/bom.markdown @@ -1,5 +1,5 @@ --- -title: BOM Australia +title: Australian Bureau of Meteorology (BOM) description: Instructions on how to integrate Bureau of Meteorology Australia weather conditions into Home Assistant. logo: bom.png ha_category: diff --git a/source/_integrations/brunt.markdown b/source/_integrations/brunt.markdown index 93aa1975d0f..17db694edc5 100644 --- a/source/_integrations/brunt.markdown +++ b/source/_integrations/brunt.markdown @@ -1,5 +1,5 @@ --- -title: Brunt Cover +title: Brunt Blind Engine description: Instructions on how to set up Brunt Blind Engine within Home Assistant. logo: brunt.png ha_category: diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index f5d1fd7bfcc..fcffee6f642 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -1,5 +1,5 @@ --- -title: CityBikes Sensor +title: CityBikes description: Instructions on how to integrate data from the CityBikes API into Home Assistant. logo: citybikes.png ha_category: diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown index ef2270605ee..e01933cf1df 100644 --- a/source/_integrations/clickatell.markdown +++ b/source/_integrations/clickatell.markdown @@ -1,5 +1,5 @@ --- -title: Clickatell SMS +title: Clickatell description: Instructions on how to add Clickatell notifications to Home Assistant. logo: clickatell.png ha_category: diff --git a/source/_integrations/clicksend_tts.markdown b/source/_integrations/clicksend_tts.markdown index f442faab4be..544c71e9748 100644 --- a/source/_integrations/clicksend_tts.markdown +++ b/source/_integrations/clicksend_tts.markdown @@ -1,5 +1,5 @@ --- -title: ClickSend text-to-speech +title: ClickSend TTS description: Instructions on how to add ClickSend text-to-speech (TTS) notifications to Home Assistant. logo: clicksend.png ha_category: diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown index f2d10b3c0cd..b51ecea755b 100644 --- a/source/_integrations/co2signal.markdown +++ b/source/_integrations/co2signal.markdown @@ -1,5 +1,5 @@ --- -title: CO2Signal +title: CO2 Signal description: Instructions on how to use CO2Signal data within Home Assistant logo: co2signal.png ha_category: diff --git a/source/_integrations/comfoconnect.markdown b/source/_integrations/comfoconnect.markdown index 707a2e8d77d..eb01f63adf6 100644 --- a/source/_integrations/comfoconnect.markdown +++ b/source/_integrations/comfoconnect.markdown @@ -1,5 +1,5 @@ --- -title: Zehnder ComfoAir Q Ventilation +title: Zehnder ComfoAir Q description: Instructions on how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant. logo: zehnder.png ha_category: diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 2e9a6b72bef..252344982eb 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -1,5 +1,5 @@ --- -title: Command line Binary Sensor +title: Command Line description: Instructions on how to integrate Command binary sensors within Home Assistant. logo: command_line.png ha_category: diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index d10eb4d71dc..0f6c56f7b76 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -1,5 +1,5 @@ --- -title: CoolMasterNet Climate +title: CoolMasterNet description: Instructions on how to integrate CoolMasterNet within Home Assistant. logo: coolautomation.png ha_category: diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index 7e69a18b58d..eb67d8140d7 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -1,5 +1,5 @@ --- -title: Covers +title: Cover description: Instructions on how to integrate covers into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index b9bcc20c65b..dfead8a0ba1 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -1,5 +1,5 @@ --- -title: CPU speed +title: CPU Speed description: Instructions on how to integrate CPU speed within Home Assistant. logo: cpu.png ha_category: diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index 78065c62058..5ee69d9eb79 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -1,5 +1,5 @@ --- -title: CUPS Sensor +title: CUPS description: Instructions on how to integrate CUPS sensors into Home Assistant. logo: cups.png ha_category: diff --git a/source/_integrations/currencylayer.markdown b/source/_integrations/currencylayer.markdown index 784e947db0b..5052c428066 100644 --- a/source/_integrations/currencylayer.markdown +++ b/source/_integrations/currencylayer.markdown @@ -1,5 +1,5 @@ --- -title: Currencylayer +title: currencylayer description: Instructions on integrating exchange rates from https://currencylayer.com/ within Home Assistant. ha_category: - Finance diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index f7108df8f6f..98193c58c79 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -1,5 +1,5 @@ --- -title: Dark Sky Sensor +title: Dark Sky description: How to integrate Dark Sky within Home Assistant. logo: dark_sky.png ha_category: diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index 556a7ebb53e..208da4ceaa3 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -1,5 +1,5 @@ --- -title: Demo platforms +title: Demo description: Instructions on how to use the Platform demos with Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/device_sun_light_trigger.markdown b/source/_integrations/device_sun_light_trigger.markdown index 0105c8b9a26..c15b4ea9582 100644 --- a/source/_integrations/device_sun_light_trigger.markdown +++ b/source/_integrations/device_sun_light_trigger.markdown @@ -1,5 +1,5 @@ --- -title: Presence based lights +title: Presence-based Lights description: Instructions on how to automate your lights with Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/digitalloggers.markdown b/source/_integrations/digitalloggers.markdown index e0d8e18e88f..57d8c536cb7 100644 --- a/source/_integrations/digitalloggers.markdown +++ b/source/_integrations/digitalloggers.markdown @@ -1,5 +1,5 @@ --- -title: Digital Loggers Switch +title: Digital Loggers description: Instructions on how to integrate Digital Loggers DIN III relays into Home Assistant. logo: digitalloggers.png ha_category: diff --git a/source/_integrations/discogs.markdown b/source/_integrations/discogs.markdown index 8b4c01f1d73..25d35a30c6a 100644 --- a/source/_integrations/discogs.markdown +++ b/source/_integrations/discogs.markdown @@ -1,5 +1,5 @@ --- -title: Discogs Sensor +title: Discogs description: Instructions on how to set up Discogs sensors within Home Assistant. ha_category: - Multimedia diff --git a/source/_integrations/dlink.markdown b/source/_integrations/dlink.markdown index 178eb7194ec..af03708cd1a 100644 --- a/source/_integrations/dlink.markdown +++ b/source/_integrations/dlink.markdown @@ -1,5 +1,5 @@ --- -title: D-Link Switch +title: D-Link Wi-Fi Smart Plugs description: Instructions on how to integrate D-Link switches into Home Assistant. logo: dlink.png ha_category: diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown index 944cfba4347..125bdd674f6 100644 --- a/source/_integrations/dlna_dmr.markdown +++ b/source/_integrations/dlna_dmr.markdown @@ -1,5 +1,5 @@ --- -title: DLNA DMR +title: DLNA Digital Media Renderer description: Instructions on how to integrate a DLNA DMR device into Home Assistant. logo: dlna.png ha_category: diff --git a/source/_integrations/dnsip.markdown b/source/_integrations/dnsip.markdown index 64e077cbbc0..1b86cbc2140 100644 --- a/source/_integrations/dnsip.markdown +++ b/source/_integrations/dnsip.markdown @@ -1,5 +1,5 @@ --- -title: DNS IP Sensor +title: DNS IP description: Instructions on how to integrate a DNS IP sensor into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown index c217a6935c3..201e9c97562 100644 --- a/source/_integrations/doods.markdown +++ b/source/_integrations/doods.markdown @@ -1,5 +1,5 @@ --- -title: DOODS +title: DOODS - Distributed Outside Object Detection Service description: Detect and recognize objects with DOODS. ha_category: - Image Processing diff --git a/source/_integrations/dsmr.markdown b/source/_integrations/dsmr.markdown index e2d5b816582..a02484dad2d 100644 --- a/source/_integrations/dsmr.markdown +++ b/source/_integrations/dsmr.markdown @@ -1,5 +1,5 @@ --- -title: DSMR or Slimme meter +title: DSMR Slimme Meter description: Instructions on how to integrate DSMR Smartmeter within Home Assistant. logo: netbeheernederland.jpg ha_category: diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown index 8d04147c397..a32f4323725 100644 --- a/source/_integrations/dublin_bus_transport.markdown +++ b/source/_integrations/dublin_bus_transport.markdown @@ -1,5 +1,5 @@ --- -title: Dublin Bus Transport +title: Dublin Bus description: Instructions on how to integrate timetable data for traveling on Dublin Bus within Home Assistant. logo: dublin_bus.png ha_category: diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown index 214c95e0c3c..88a9dd522f8 100644 --- a/source/_integrations/duckdns.markdown +++ b/source/_integrations/duckdns.markdown @@ -1,5 +1,5 @@ --- -title: DuckDNS +title: Duck DNS description: Keep your computer registered with the DuckDNS dynamic DNS. logo: duckdns.png ha_category: diff --git a/source/_integrations/dunehd.markdown b/source/_integrations/dunehd.markdown index 4c43e1404ad..78b09a72806 100644 --- a/source/_integrations/dunehd.markdown +++ b/source/_integrations/dunehd.markdown @@ -1,5 +1,5 @@ --- -title: DuneHD media players +title: DuneHD description: Instructions on how to integrate DuneHD media players into Home Assistant. logo: dunehd.png ha_category: diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown index 7690da7d556..ec579b36891 100644 --- a/source/_integrations/dwd_weather_warnings.markdown +++ b/source/_integrations/dwd_weather_warnings.markdown @@ -1,5 +1,5 @@ --- -title: DWD Weather warnings +title: Deutsche Wetter Dienst (DWD) Weather Warnings description: Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant. ha_category: - Weather diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index 911dd7e0a2b..fccba41994d 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -1,5 +1,5 @@ --- -title: Dweet.io +title: dweet.io description: Transfer events to Dweet.io. logo: dweet.png ha_category: diff --git a/source/_integrations/ebox.markdown b/source/_integrations/ebox.markdown index 275bb0fa1a4..69c8ee9cc66 100644 --- a/source/_integrations/ebox.markdown +++ b/source/_integrations/ebox.markdown @@ -1,5 +1,5 @@ --- -title: EBox Sensor +title: EBox description: Instructions on how to integrate EBox data usage within Home Assistant. logo: ebox.png ha_category: diff --git a/source/_integrations/ecoal_boiler.markdown b/source/_integrations/ecoal_boiler.markdown index ebf8230b61b..0ca3a3589b7 100644 --- a/source/_integrations/ecoal_boiler.markdown +++ b/source/_integrations/ecoal_boiler.markdown @@ -1,5 +1,5 @@ --- -title: eCoal water boiler controller +title: eSterownik eCoal.pl Boiler description: Instructions on how to integrate eSterownik.pl eCoal.pl controller into Home Assistant. ha_category: - Water Heater diff --git a/source/_integrations/econet.markdown b/source/_integrations/econet.markdown index bec1d849bef..bace9cc8f0a 100644 --- a/source/_integrations/econet.markdown +++ b/source/_integrations/econet.markdown @@ -1,5 +1,5 @@ --- -title: EcoNet water heater +title: Rheem EcoNET Water Products description: Instructions on how to integrate Rheem EcoNet water heaters into Home Assistant. logo: econet.png ha_category: diff --git a/source/_integrations/eddystone_temperature.markdown b/source/_integrations/eddystone_temperature.markdown index 502bef04dfb..6041b40bda9 100644 --- a/source/_integrations/eddystone_temperature.markdown +++ b/source/_integrations/eddystone_temperature.markdown @@ -1,5 +1,5 @@ --- -title: Eddystone Beacon +title: Eddystone description: Instructions on how to integrate Eddystone beacons with Home Assistant in order to receive temperature data. logo: eddystone.png ha_category: diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index f08f44694a7..cb03fa8d84a 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -1,5 +1,5 @@ --- -title: Edimax Switch +title: Edimax description: Instructions on how to integrate Edimax switches into Home Assistant. logo: edimax.png ha_category: diff --git a/source/_integrations/elkm1.markdown b/source/_integrations/elkm1.markdown index 3c2247ee261..17cbb3cc9c5 100644 --- a/source/_integrations/elkm1.markdown +++ b/source/_integrations/elkm1.markdown @@ -1,5 +1,5 @@ --- -title: Elk-M1 Controller +title: Elk-M1 Control description: Instructions to setup the Elk-M1 controller. logo: elkproducts.png ha_release: 0.81 diff --git a/source/_integrations/elv.markdown b/source/_integrations/elv.markdown index 09ca6ac8065..22dacd7f090 100644 --- a/source/_integrations/elv.markdown +++ b/source/_integrations/elv.markdown @@ -1,5 +1,5 @@ --- -title: ELV PCA 301 Switch +title: ELV PCA description: Instructions on how to integrate ELV PCA 301 switches into Home Assistant. logo: elv.png ha_category: Switch diff --git a/source/_integrations/emoncms.markdown b/source/_integrations/emoncms.markdown index 5b820e2fd07..b6d3474f477 100644 --- a/source/_integrations/emoncms.markdown +++ b/source/_integrations/emoncms.markdown @@ -1,5 +1,5 @@ --- -title: Emoncms Sensor +title: Emoncms description: Instructions on how to integrate Emoncms feeds as sensors into Home Assistant. logo: emoncms.png ha_category: diff --git a/source/_integrations/emoncms_history.markdown b/source/_integrations/emoncms_history.markdown index b78978f5ac0..bd7f23b6104 100644 --- a/source/_integrations/emoncms_history.markdown +++ b/source/_integrations/emoncms_history.markdown @@ -1,5 +1,5 @@ --- -title: Emoncms history +title: Emoncms History description: Instructions on how to integrate Emoncms history into Home Assistant. logo: emoncms.png ha_category: diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index 33570993169..7a4d6e25f97 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -1,5 +1,5 @@ --- -title: Emulated Hue Bridge +title: Emulated Hue description: Instructions on how to emulate a Hue Bridge within Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 25009298d28..669994a0264 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -1,5 +1,5 @@ --- -title: Entur public transport +title: Entur description: Instructions for how to set up monitoring of public transport departures in Norway. logo: entur.svg ha_category: diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index 3b0e10a4411..01fe5b818b4 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -1,5 +1,5 @@ --- -title: Environment Canada Weather +title: Environment Canada description: Weather data from Environment Canada. logo: environment_canada.png ha_category: diff --git a/source/_integrations/envisalink.markdown b/source/_integrations/envisalink.markdown index ec5b6607dfa..129e921eb4e 100644 --- a/source/_integrations/envisalink.markdown +++ b/source/_integrations/envisalink.markdown @@ -1,5 +1,5 @@ --- -title: Envisalink Alarm Control Panel +title: Envisalink description: Instructions on how to integrate a DSC/Honeywell alarm panel with Home Assistant using an envisalink evl3/evl4 board. logo: eyezon.png ha_category: diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index a403a0baf6d..0f3832a0d3b 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -1,5 +1,5 @@ --- -title: EPH Controls EMBER Thermostat +title: EPH Controls description: Instructions on how to integrate EPH Controls EMBER thermostats within Home Assistant. logo: ephcontrolsember.png ha_category: diff --git a/source/_integrations/eufy.markdown b/source/_integrations/eufy.markdown index 3267bd24a7b..c6413b0a390 100644 --- a/source/_integrations/eufy.markdown +++ b/source/_integrations/eufy.markdown @@ -1,5 +1,5 @@ --- -title: Eufy +title: eufy description: Instructions on how to integrate Eufy devices into Home Assistant. logo: eufy.png ha_category: diff --git a/source/_integrations/everlights.markdown b/source/_integrations/everlights.markdown index 3a8ff903b6b..4b91cc58af0 100644 --- a/source/_integrations/everlights.markdown +++ b/source/_integrations/everlights.markdown @@ -1,5 +1,5 @@ --- -title: EverLights Light +title: EverLights description: Instructions on how to set up EverLights within Home Assistant. logo: everlights.png ha_category: diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index 9a8fbf32a6a..329c0fadb57 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -1,5 +1,5 @@ --- -title: Honeywell evohome/TCC systems +title: Honeywell evohome / Total Connect Comfort description: Instructions on how to integrate a Honeywell evohome/TCC system with Home Assistant. logo: honeywell.png ha_category: diff --git a/source/_integrations/fail2ban.markdown b/source/_integrations/fail2ban.markdown index a3473ff9ed6..00722a620de 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -1,5 +1,5 @@ --- -title: Fail2Ban Sensor +title: Fail2Ban description: Instructions on how to integrate a fail2ban sensor into Home Assistant. ha_category: - Network diff --git a/source/_integrations/familyhub.markdown b/source/_integrations/familyhub.markdown index 39e999b6ec1..99495110570 100644 --- a/source/_integrations/familyhub.markdown +++ b/source/_integrations/familyhub.markdown @@ -1,5 +1,5 @@ --- -title: Family Hub Camera +title: Samsung Family Hub description: Instructions on how to integrate Samsung Family Hub refrigerator cameras within Home Assistant. logo: familyhub.png ha_category: diff --git a/source/_integrations/ffmpeg_motion.markdown b/source/_integrations/ffmpeg_motion.markdown index 727bad9220b..2e24019ddc7 100644 --- a/source/_integrations/ffmpeg_motion.markdown +++ b/source/_integrations/ffmpeg_motion.markdown @@ -1,5 +1,5 @@ --- -title: FFmpeg Motion Binary Sensor +title: FFmpeg Motion description: Instructions on how to integrate an FFmpeg-based motion binary sensor logo: ffmpeg.png ha_category: diff --git a/source/_integrations/ffmpeg_noise.markdown b/source/_integrations/ffmpeg_noise.markdown index 5d5996f5d1e..0cf0085bcaa 100644 --- a/source/_integrations/ffmpeg_noise.markdown +++ b/source/_integrations/ffmpeg_noise.markdown @@ -1,5 +1,5 @@ --- -title: FFmpeg Noise Binary Sensor +title: FFmpeg Noise description: Instructions on how to integrate an FFmpeg-based noise binary sensor logo: ffmpeg.png ha_category: diff --git a/source/_integrations/fido.markdown b/source/_integrations/fido.markdown index 47b6fa24ff1..5b506ed2ffb 100644 --- a/source/_integrations/fido.markdown +++ b/source/_integrations/fido.markdown @@ -1,5 +1,5 @@ --- -title: Fido Sensor +title: Fido description: Instructions on how to integrate Fido data usage within Home Assistant. logo: fido.png ha_category: diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown index 71a3d592be9..bedeb2aaca1 100644 --- a/source/_integrations/filesize.markdown +++ b/source/_integrations/filesize.markdown @@ -1,5 +1,5 @@ --- -title: File size Sensor +title: File Size description: Component for monitoring the size of a file. logo: file.png ha_category: diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index ab2058307a3..892b542f525 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -1,5 +1,5 @@ --- -title: Filter Sensor +title: Filter description: Instructions on how to integrate Data Filter Sensors into Home Assistant. ha_category: - Utility diff --git a/source/_integrations/fints.markdown b/source/_integrations/fints.markdown index d9380b8ea49..b90521aca08 100644 --- a/source/_integrations/fints.markdown +++ b/source/_integrations/fints.markdown @@ -1,5 +1,5 @@ --- -title: FinTS Sensor +title: FinTS description: Instructions on how to use the FinTS sensor. ha_category: - Finance diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown index 547d42078c9..63f98164deb 100644 --- a/source/_integrations/fixer.markdown +++ b/source/_integrations/fixer.markdown @@ -1,5 +1,5 @@ --- -title: Fixer.io +title: Fixer description: Instructions on how to integrate exchange rates from Fixer.io within Home Assistant. ha_category: - Finance diff --git a/source/_integrations/flexit.markdown b/source/_integrations/flexit.markdown index 5f5b0d49e37..38f9184d17b 100644 --- a/source/_integrations/flexit.markdown +++ b/source/_integrations/flexit.markdown @@ -1,5 +1,5 @@ --- -title: Flexit A/C controller +title: Flexit description: Instructions on how to integrate Flexit A/C unit into Home Assistant. logo: flexit.png ha_category: diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown index 177966bfb7d..6218c34b118 100644 --- a/source/_integrations/flic.markdown +++ b/source/_integrations/flic.markdown @@ -1,5 +1,5 @@ --- -title: Flic Smart Button +title: Flic description: Instructions on how to integrate flic buttons within Home Assistant. logo: flic.png ha_category: diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown index 451e0fa606b..2ab6d73f1a6 100644 --- a/source/_integrations/flux.markdown +++ b/source/_integrations/flux.markdown @@ -1,5 +1,5 @@ --- -title: Flux Light Adjustment +title: Flux description: Instructions on how to have switches call command line commands. ha_category: - Automation diff --git a/source/_integrations/flux_led.markdown b/source/_integrations/flux_led.markdown index 5a4d8a55982..12d90b1a650 100644 --- a/source/_integrations/flux_led.markdown +++ b/source/_integrations/flux_led.markdown @@ -1,5 +1,5 @@ --- -title: Flux Led/MagicLight +title: Flux LED/MagicLight description: Instructions on how to setup Flux led/MagicLight within Home Assistant. logo: magic_light.png ha_category: diff --git a/source/_integrations/folder.markdown b/source/_integrations/folder.markdown index d70b3c5d2f2..20336e6cb83 100644 --- a/source/_integrations/folder.markdown +++ b/source/_integrations/folder.markdown @@ -1,5 +1,5 @@ --- -title: Folder sensor +title: Folder description: Sensor for monitoring the contents of a folder. logo: file.png ha_category: diff --git a/source/_integrations/foobot.markdown b/source/_integrations/foobot.markdown index 3c51a50c70d..4fc9a3d4cf6 100644 --- a/source/_integrations/foobot.markdown +++ b/source/_integrations/foobot.markdown @@ -1,5 +1,5 @@ --- -title: Foobot Air Quality Monitor +title: Foobot description: Instructions on how to setup Foobot Air Quality sensor in Home Assistant. logo: foobot.png ha_category: diff --git a/source/_integrations/fortigate.markdown b/source/_integrations/fortigate.markdown index cb4cfc1a089..a70157500cf 100644 --- a/source/_integrations/fortigate.markdown +++ b/source/_integrations/fortigate.markdown @@ -1,5 +1,5 @@ --- -title: Fortigate +title: FortiGate description: Instructions on how to integrate FortiGate Firewalls into Home Assistant. logo: fortinet.jpg ha_category: diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index 7db78ccc93e..69e15be0b5d 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -1,5 +1,5 @@ --- -title: Device Tracker FortiOS +title: Home Assistant Device Tracker to support FortiOS description: Instructions on how to use Fortinet FortiOS to track devices in Home Assistant. logo: fortinet.jpg ha_category: diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index da2e34bc3b2..aebedebbd82 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -1,5 +1,5 @@ --- -title: Foscam IP Camera +title: Foscam description: Instructions on how to integrate Foscam IP cameras within Home Assistant. logo: foscam.png ha_category: diff --git a/source/_integrations/freedns.markdown b/source/_integrations/freedns.markdown index 95ca317e0c6..902634fdda8 100644 --- a/source/_integrations/freedns.markdown +++ b/source/_integrations/freedns.markdown @@ -1,5 +1,5 @@ --- -title: freedns.afraid.org +title: FreeDNS description: Keep your DNS record up to date with FreeDNS. logo: afraid_freedns.png ha_category: diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index f39fb19e729..7cd6c869995 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -1,5 +1,5 @@ --- -title: FRITZ!Box +title: AVM Fritzbox description: Instructions on how to integrate AVM FRITZ!Box based routers into Home Assistant. logo: avm.png ha_category: diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 2940f34cb6a..b0a8578f463 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -1,5 +1,5 @@ --- -title: Fritzbox +title: AVM FRITZ!Box description: Instructions on how to integrate the AVM Fritzbox Smart Home components. logo: avm.png ha_category: diff --git a/source/_integrations/fritzbox_callmonitor.markdown b/source/_integrations/fritzbox_callmonitor.markdown index 5f37a7818b5..575039a5f16 100644 --- a/source/_integrations/fritzbox_callmonitor.markdown +++ b/source/_integrations/fritzbox_callmonitor.markdown @@ -1,5 +1,5 @@ --- -title: FRITZ!Box Call Monitor +title: AVM FRITZ!Box Call Monitor description: Instructions on how to integrate a phone call monitor for AVM FRITZ!Box routers into Home Assistant. logo: avm.png ha_category: diff --git a/source/_integrations/fritzbox_netmonitor.markdown b/source/_integrations/fritzbox_netmonitor.markdown index 4b3e8aa6f2f..8b1ec01035b 100644 --- a/source/_integrations/fritzbox_netmonitor.markdown +++ b/source/_integrations/fritzbox_netmonitor.markdown @@ -1,5 +1,5 @@ --- -title: FRITZ!Box Net Monitor +title: AVM FRITZ!Box Net Monitor description: Instructions on how to integrate an AVM FRITZ!Box monitor into Home Assistant. logo: avm.png ha_category: diff --git a/source/_integrations/fritzdect.markdown b/source/_integrations/fritzdect.markdown index 08d63c74a77..fecd6d02838 100644 --- a/source/_integrations/fritzdect.markdown +++ b/source/_integrations/fritzdect.markdown @@ -1,5 +1,5 @@ --- -title: AVM FRITZ!DECT Switch +title: AVM FRITZ!DECT description: Instructions on how to integrate your AVM FRITZ!DECT switches into Home Assistant. logo: avm.png ha_category: diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index 50951174e1b..5b7f7020179 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -1,5 +1,5 @@ --- -title: Frontend +title: Home Assistant Frontend description: Offers a frontend to Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index a2c66bc7656..4a1ec98a9cd 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -1,5 +1,5 @@ --- -title: Frontier Silicon Internet Radios +title: Frontier Silicon description: Instructions on how to integrate Frontier Silicon Internet Radios into Home Assistant. logo: frontier.png ha_category: diff --git a/source/_integrations/futurenow.markdown b/source/_integrations/futurenow.markdown index 0e36149469d..d7f11f41c58 100644 --- a/source/_integrations/futurenow.markdown +++ b/source/_integrations/futurenow.markdown @@ -1,5 +1,5 @@ --- -title: P5 FutureNow Lights +title: P5 FutureNow description: Instructions on how to set up P5 FutureNow relay/dimmer units as lights within Home Assistant. logo: p5.png ha_category: diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown index 2f6d20525ea..a6330b6056b 100644 --- a/source/_integrations/garadget.markdown +++ b/source/_integrations/garadget.markdown @@ -1,5 +1,5 @@ --- -title: Garadget Cover +title: Garadget description: Instructions on how to integrate Garadget covers within Home Assistant. logo: garadget.png ha_category: diff --git a/source/_integrations/gc100.markdown b/source/_integrations/gc100.markdown index 1f8ab11c9b2..83197d0ed1c 100644 --- a/source/_integrations/gc100.markdown +++ b/source/_integrations/gc100.markdown @@ -1,5 +1,5 @@ --- -title: gc100 +title: Global Caché GC-100 description: Instructions on how to integrate gc100 with Home Assistant. ha_category: - Hub diff --git a/source/_integrations/geo_json_events.markdown b/source/_integrations/geo_json_events.markdown index 3ee80518afb..d738f3cedc9 100644 --- a/source/_integrations/geo_json_events.markdown +++ b/source/_integrations/geo_json_events.markdown @@ -1,5 +1,5 @@ --- -title: GeoJSON Events +title: GeoJSON description: Instructions on how to integrate GeoJSON feeds into Home Assistant. logo: geo_location.png ha_category: diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index adb191c7574..39436023864 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -1,5 +1,5 @@ --- -title: GeoRSS Events Sensor +title: GeoRSS description: Instructions on how to set up GeoRSS sensors within Home Assistant. logo: rss.png ha_category: diff --git a/source/_integrations/geonetnz_volcano.markdown b/source/_integrations/geonetnz_volcano.markdown index afd0e074360..fb855de4473 100644 --- a/source/_integrations/geonetnz_volcano.markdown +++ b/source/_integrations/geonetnz_volcano.markdown @@ -1,5 +1,5 @@ --- -title: GeoNet NZ Volcanic Alert Level +title: GeoNet NZ Volcano description: Instructions on how to integrate the GeoNet New Zealand Volcanic Alert Level feed into Home Assistant. logo: geonet-nz.png ha_category: diff --git a/source/_integrations/github.markdown b/source/_integrations/github.markdown index ab374bc8210..22b40b1d3a8 100644 --- a/source/_integrations/github.markdown +++ b/source/_integrations/github.markdown @@ -1,5 +1,5 @@ --- -title: GitHub Sensor +title: GitHub description: How to integrate the GitHub sensor into Home Assistant. logo: github.png ha_category: diff --git a/source/_integrations/gitlab_ci.markdown b/source/_integrations/gitlab_ci.markdown index 219a386604e..1a4b045ba9d 100644 --- a/source/_integrations/gitlab_ci.markdown +++ b/source/_integrations/gitlab_ci.markdown @@ -1,5 +1,5 @@ --- -title: GitLab-CI Sensor +title: GitLab-CI description: How to integrate GitLab-CI Job status within Home Assistant. logo: gitlab.png ha_category: diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index d81b41fa320..3e5988aae0c 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -1,5 +1,5 @@ --- -title: Gitter Sensor +title: Gitter description: Instructions on how to integrate a Gitter room sensor with Home Assistant logo: gitter.png ha_category: diff --git a/source/_integrations/gntp.markdown b/source/_integrations/gntp.markdown index 5715b24a564..9a87a3a3871 100644 --- a/source/_integrations/gntp.markdown +++ b/source/_integrations/gntp.markdown @@ -1,5 +1,5 @@ --- -title: GNTP (Growl) +title: Growl (GnGNTP) description: Instructions for adding GNTP/Growl notifications to Home Assistant. logo: gntp.png ha_category: diff --git a/source/_integrations/gogogate2.markdown b/source/_integrations/gogogate2.markdown index da5502a8c1d..6f8a8d9a663 100644 --- a/source/_integrations/gogogate2.markdown +++ b/source/_integrations/gogogate2.markdown @@ -1,5 +1,5 @@ --- -title: Gogogate2 Cover +title: Gogogate2 description: Instructions on how to integrate Gogogate2-Enabled garage door covers into Home Assistant. logo: gogogate2.png ha_category: diff --git a/source/_integrations/google_maps.markdown b/source/_integrations/google_maps.markdown index e45de9c5e0c..b5e387018b5 100644 --- a/source/_integrations/google_maps.markdown +++ b/source/_integrations/google_maps.markdown @@ -1,5 +1,5 @@ --- -title: Google Maps Location Sharing +title: Google Maps description: Instructions how to use Google Maps Location Sharing to track devices in Home Assistant. logo: google_maps.png ha_release: 0.67 diff --git a/source/_integrations/gpmdp.markdown b/source/_integrations/gpmdp.markdown index 2dc7eda69fe..39f3064097c 100644 --- a/source/_integrations/gpmdp.markdown +++ b/source/_integrations/gpmdp.markdown @@ -1,5 +1,5 @@ --- -title: Google Play Music Desktop Player +title: Google Play Music Desktop Player (GPMDP) description: Instructions on how to integrate GPMDP into Home Assistant. logo: gpmdp.png ha_category: diff --git a/source/_integrations/greeneye_monitor.markdown b/source/_integrations/greeneye_monitor.markdown index ebe899ea3e5..c655ae01a76 100644 --- a/source/_integrations/greeneye_monitor.markdown +++ b/source/_integrations/greeneye_monitor.markdown @@ -1,5 +1,5 @@ --- -title: GreenEye Monitor +title: GreenEye Monitor (GEM) description: Instructions on how to integrate your GreenEye Monitor within Home Assistant. logo: brultech.png ha_category: diff --git a/source/_integrations/greenwave.markdown b/source/_integrations/greenwave.markdown index be0ca85ebb2..066c8ade251 100644 --- a/source/_integrations/greenwave.markdown +++ b/source/_integrations/greenwave.markdown @@ -1,5 +1,5 @@ --- -title: Greenwave Reality (TCP Connected) Lights +title: Greenwave Reality description: Instructions on how to set up Greenwave Reality lights within Home Assistant. logo: greenwavereality.png ha_category: diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 720e905c1a3..2646b5ce7fe 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -1,5 +1,5 @@ --- -title: Growatt server PV Inverter Sensor +title: Growatt description: Instructions on how to integrate your Growatt server solar inverter within Home Assistant. logo: growatt.png ha_category: diff --git a/source/_integrations/gstreamer.markdown b/source/_integrations/gstreamer.markdown index f32e3f05c0e..6d8e66ed87d 100644 --- a/source/_integrations/gstreamer.markdown +++ b/source/_integrations/gstreamer.markdown @@ -1,5 +1,5 @@ --- -title: Gstreamer +title: GStreamer description: Instructions on how to integrate Gstreamer into Home Assistant. ha_category: - Media Player diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index d8f3e02568f..4d4493cdb02 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -1,5 +1,5 @@ --- -title: Public Transit (GTFS) +title: General Transit Feed Specification (GTFS) description: Instructions on how to use public transit open data in Home Assistant. logo: train.png ha_category: diff --git a/source/_integrations/harman_kardon_avr.markdown b/source/_integrations/harman_kardon_avr.markdown index 4afc7993085..db484f5d9b7 100644 --- a/source/_integrations/harman_kardon_avr.markdown +++ b/source/_integrations/harman_kardon_avr.markdown @@ -1,5 +1,5 @@ --- -title: Harman Kardon AVR Network Receivers +title: Harman Kardon AVR description: Instructions on how to integrate Harman Kardon AVR Network Receivers into Home Assistant. logo: harman_kardon.png ha_category: diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index 42732e8a713..33ba658d9c3 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -1,5 +1,5 @@ --- -title: Harmony Hub Remote +title: Logitech Harmony Hub description: Instructions on how to integrate Harmony Hub remotes into Home Assistant. logo: logitech.png ha_category: diff --git a/source/_integrations/haveibeenpwned.markdown b/source/_integrations/haveibeenpwned.markdown index 9b773b9a2b6..dde84e46006 100644 --- a/source/_integrations/haveibeenpwned.markdown +++ b/source/_integrations/haveibeenpwned.markdown @@ -1,5 +1,5 @@ --- -title: HaveIBeenPwned Sensor +title: HaveIBeenPwned description: Instructions on how to integrate HaveIBeenPwned sensor into Home Assistant. logo: haveibeenpwned.png ha_category: diff --git a/source/_integrations/hddtemp.markdown b/source/_integrations/hddtemp.markdown index 4e1b37b5759..64227fa4070 100644 --- a/source/_integrations/hddtemp.markdown +++ b/source/_integrations/hddtemp.markdown @@ -1,5 +1,5 @@ --- -title: HDDTemp +title: hddtemp description: Instructions on how to integrate hard drive temperature information into Home Assistant. ha_category: - System Monitor diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 0dd3fca20d2..59f0265820e 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -1,5 +1,5 @@ --- -title: HDMI CEC +title: HDMI-CEC description: Instructions on how to interact with HDMI CEC via Home Assistant. ha_category: - Automation diff --git a/source/_integrations/heatmiser.markdown b/source/_integrations/heatmiser.markdown index 50dbccc3bb4..b759715596d 100644 --- a/source/_integrations/heatmiser.markdown +++ b/source/_integrations/heatmiser.markdown @@ -1,5 +1,5 @@ --- -title: Heatmiser Thermostat +title: Heatmiser description: Instructions on how to integrate Heatmiser thermostats within Home Assistant. logo: heatmiser.png ha_category: diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index 75e5563b060..05449207e25 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -1,5 +1,5 @@ --- -title: Hikvision Binary Sensor +title: Hikvision description: Instructions on how to set up Hikvision camera binary sensors within Home Assistant. logo: hikvision.png ha_category: diff --git a/source/_integrations/hikvisioncam.markdown b/source/_integrations/hikvisioncam.markdown index 78c1647228b..eb3d7a30ffa 100644 --- a/source/_integrations/hikvisioncam.markdown +++ b/source/_integrations/hikvisioncam.markdown @@ -1,5 +1,5 @@ --- -title: Hikvision Camera Switch +title: Hikvision description: Instructions on how to integrate Hikvision camera switches into Home Assistant. logo: hikvision.png ha_category: diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 4185692f39c..159fa4d1c5a 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -1,5 +1,5 @@ --- -title: History Statistics Sensor +title: History Stats description: Instructions about how to integrate historical statistics into Home Assistant. logo: home-assistant.png ha_category: diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 5581f5cbc54..33743215a88 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -1,5 +1,5 @@ --- -title: Hitron CODA Routers +title: Rogers Hitron CODA description: Instructions on how to integrate Hitron CODA Routers into Home Assistant. logo: hitron.png ha_category: diff --git a/source/_integrations/hlk_sw16.markdown b/source/_integrations/hlk_sw16.markdown index 6b51e47b8d8..73026c01fc2 100644 --- a/source/_integrations/hlk_sw16.markdown +++ b/source/_integrations/hlk_sw16.markdown @@ -1,5 +1,5 @@ --- -title: HLK-SW16 Relay Module +title: Hi-Link HLK-SW16 description: Instructions on how to integrate HLK-SW16 relay into Home Assistant. logo: hlktech.jpg ha_category: diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index c9bc5d7dc4f..d4bb1a8e5ad 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -1,5 +1,5 @@ --- -title: Core integration +title: Home Assistant Core Integration description: Description of the homeassistant integration. logo: home-assistant.png ha_release: 0.0 diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 461027de5da..c92b6e706af 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -1,5 +1,5 @@ --- -title: HomeKit controller support +title: HomeKit Controller description: Instructions for how to integrate your HomeKit devices within Home Assistant. logo: apple-homekit.png ha_category: diff --git a/source/_integrations/homeworks.markdown b/source/_integrations/homeworks.markdown index 849e324bb1f..dde96011ccf 100644 --- a/source/_integrations/homeworks.markdown +++ b/source/_integrations/homeworks.markdown @@ -1,5 +1,5 @@ --- -title: Homeworks Hub +title: Lutron Homeworks description: How to use Lutron Homeworks Series 4 & 8 with Home Assistant. logo: lutron.png ha_category: diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 9814b3af9a3..5f766392a69 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -1,5 +1,5 @@ --- -title: Honeywell Thermostat +title: Honeywell Total Connect Comfort (TCC) description: Instructions on how to integrate Honeywell thermostats within Home Assistant. logo: honeywell.png ha_category: diff --git a/source/_integrations/hook.markdown b/source/_integrations/hook.markdown index 134c484e054..4f840227e9e 100644 --- a/source/_integrations/hook.markdown +++ b/source/_integrations/hook.markdown @@ -1,5 +1,5 @@ --- -title: Hook Switch +title: Hook description: Instructions on how to integrate the Hook Smart Home Hub into Home Assistant. logo: hook.png ha_category: diff --git a/source/_integrations/horizon.markdown b/source/_integrations/horizon.markdown index 82a57c1284d..19ff8f60377 100644 --- a/source/_integrations/horizon.markdown +++ b/source/_integrations/horizon.markdown @@ -1,5 +1,5 @@ --- -title: Horizon HD Recorder +title: Unitymedia Horizon HD Recorder description: Instructions how to integrate the Unitymedia Horizon HD Recorder into Home Assistant. logo: unitymedia.png ha_category: diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index e89152fa014..19d0de01fef 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -1,5 +1,5 @@ --- -title: HP ILO +title: HP Integrated Lights-Out (ILO) description: How to integrate HP ILO (Integrated Lights-Out) sensors within Home Assistant. logo: hewlett_packard_enterprise.png ha_category: diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index a003c401b01..d8da56630e4 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -1,5 +1,5 @@ --- -title: Push Notifications +title: HTML5 Push Notifications description: Instructions on how to use the HTML5 push notifications platform from Home Assistant. logo: html5.png ha_category: diff --git a/source/_integrations/htu21d.markdown b/source/_integrations/htu21d.markdown index a70a68577e7..edc7c43e3a2 100644 --- a/source/_integrations/htu21d.markdown +++ b/source/_integrations/htu21d.markdown @@ -1,5 +1,5 @@ --- -title: HTU21D Temperature and humidity sensor +title: HTU21D(F) Sensor description: Instructions on how to integrate a HTU21D Temperature and humidity sensor into Home Assistant. logo: raspberry-pi.png ha_category: diff --git a/source/_integrations/hunterdouglas_powerview.markdown b/source/_integrations/hunterdouglas_powerview.markdown index 56bb4ac5dcb..ec63b020743 100644 --- a/source/_integrations/hunterdouglas_powerview.markdown +++ b/source/_integrations/hunterdouglas_powerview.markdown @@ -1,5 +1,5 @@ --- -title: PowerView Scenes +title: Hunter Douglas PowerView description: Instructions on how to setup Hunter Douglas PowerView scenes within Home Assistant. logo: hunter-douglas-powerview.png ha_category: From a1189eae7f119ce8fcad95f8b876c99858dd775d Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 7 Jan 2020 15:50:43 +0100 Subject: [PATCH 217/236] add surepetcare doc (#9590) * add surepetcare doc * fix date * Update surepetcare.markdown * add some missing info * :pencil2: Tweaks * Move documentation to new integrations location Co-authored-by: Franck Nijhof --- source/_integrations/surepetcare.markdown | 86 +++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 source/_integrations/surepetcare.markdown diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown new file mode 100644 index 00000000000..23e36fc43c8 --- /dev/null +++ b/source/_integrations/surepetcare.markdown @@ -0,0 +1,86 @@ +--- +title: "Sure Petcare" +description: "Instructions on how to integrate the Sure Petcare cat and pet flaps into Home Assistant." +date: 2019-06-08 20:00 +ha_category: + - Binary Sensor + - Sensor +ha_release: '0.104.0' +ha_iot_class: Cloud Polling +--- + +The `surepetcare` component allows you to get information on your Sure Petcare Connect Pet or Cat Flap. + +## Configuration + +To add a flap and pet, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +surepetcare: + username: x@y.com + password: v3rys3cr3t! + household_id: 1337 + flaps: [{id: 2337, name: Flap}] + pets: [{id: 3337, name: Pet}] +``` + +{% configuration %} + username: + description: The Sure Petcare Username/Email + required: true + type: string + password: + description: The Sure Petcare Password + required: true + type: string + household_id: + description: The Sure Petcare household_id + required: true + type: integer + flaps: + description: The Sure Petcare flaps + required: true + type: map + keys: + id: + description: The Sure Petcare id of a flap + required: true + type: integer + name: + description: A name for the flap + required: true + type: string + pets: + description: Pets managed by Sure Petcare flap(s) + required: true + type: map + keys: + id: + description: The Sure Petcare id of a pet + required: true + type: integer + name: + description: The name of the pet + required: true + type: string + icon: + description: "Icon to display (e.g., `mdi:cat`)" + required: false + default: "mdi:cat" + type: string + scan_interval: + description: "Minimum time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)." + required: false + default: 3 minutes + type: time + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + default: lock + type: device_class +{% endconfiguration %} + +## Getting the IDs of your household, flaps and pets + +For now, please use the [sp_cli.py](https://github.com/rcastberg/sure_petcare/blob/master/sp_cli.py) from [@rcastberg](https://github.com/rcastberg) to fetch the IDs from the Sure Petcare API. With default setting, the IDs will be written as JSON to `~/.surepet.cache`. From d18b2af10790d529a1b6d06a9a0aa7acce9f6c4c Mon Sep 17 00:00:00 2001 From: Raman Gupta <7243222+raman325@users.noreply.github.com> Date: Tue, 7 Jan 2020 09:52:17 -0500 Subject: [PATCH 218/236] =?UTF-8?q?remove=20suppress=5Fwarning=20from=20co?= =?UTF-8?q?nfiguration=20definition=20of=20vizio=E2=80=A6=20(#11650)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Gupta, Raman --- source/_integrations/vizio.markdown | 5 ----- 1 file changed, 5 deletions(-) diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 1d1fbccc8dd..fd9dd9482e0 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -97,11 +97,6 @@ device_class: required: false type: string default: tv -suppress_warning: - description: Set to `true` to disable self-signed certificate warnings. - required: false - default: false - type: string {% endconfiguration %} ## Notes and limitations From c85302ed695238074f042ad75238a13c00c71678 Mon Sep 17 00:00:00 2001 From: Jason Ross Date: Tue, 7 Jan 2020 08:52:54 -0600 Subject: [PATCH 219/236] Add Documentation for PIN Feature (#11571) --- source/_integrations/venstar.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/venstar.markdown b/source/_integrations/venstar.markdown index f87295d3c99..f8d3266685f 100644 --- a/source/_integrations/venstar.markdown +++ b/source/_integrations/venstar.markdown @@ -56,6 +56,10 @@ password: description: Password for the thermostat. required: false type: string +pin: + description: Pin for Lockscreen (required if lock screen enabled) + required: false + type: string ssl: description: Whether to use SSL or not when communicating. required: false @@ -83,6 +87,7 @@ climate: ssl: true username: OPTIONAL_AUTH_USER_HERE password: OPTIONAL_AUTH_PASS_HERE + pin: LOCKSCREEN_PIN timeout: 5 humidifier: false ``` From cbd38fbaea409c6c0ae60ce3b446f49878bf4dd3 Mon Sep 17 00:00:00 2001 From: RockBomber Date: Tue, 7 Jan 2020 17:54:33 +0300 Subject: [PATCH 220/236] Adding definition of logfile variable to rc.d script (#11646) With this instruction a have an error after starting service: ``` # sysrc homeassistant_enable="YES" homeassistant_enable: -> YES # service homeassistant start install: : No such file or directory Starting homeassistant. daemon: open: Permission denied /usr/local/etc/rc.d/homeassistant: WARNING: failed to start homeassistant ``` There is needs to define logfile variable in rc.d script --- source/_docs/installation/freenas.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/installation/freenas.markdown b/source/_docs/installation/freenas.markdown index 476cfb1332f..e4179928d32 100644 --- a/source/_docs/installation/freenas.markdown +++ b/source/_docs/installation/freenas.markdown @@ -118,6 +118,7 @@ rcvar=${name}_enable pidfile_child="/var/run/${name}.pid" pidfile="/var/run/${name}_daemon.pid" +logfile="/var/log/${name}.log" load_rc_config ${name} : ${homeassistant_enable:="NO"} From 81169a8f1d604e536b31b20d5a9252b8c3f9cb83 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 16:18:43 +0100 Subject: [PATCH 221/236] Sync title/names with codebase (#11659) --- source/_integrations/brother.markdown | 4 ++-- source/_integrations/elgato.markdown | 4 ++-- source/_integrations/gios.markdown | 6 +++--- source/_integrations/icloud.markdown | 2 +- source/_integrations/intesishome.markdown | 4 ++-- source/_integrations/kef.markdown | 4 ++-- source/_integrations/local_ip.markdown | 4 ++-- source/_integrations/sentry.markdown | 4 ++-- source/_integrations/signal_messenger.markdown | 4 ++-- source/_integrations/surepetcare.markdown | 6 +++--- source/_integrations/velbus.markdown | 2 -- 11 files changed, 21 insertions(+), 23 deletions(-) diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown index e76da718259..9e260ee0e20 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -1,6 +1,6 @@ --- -title: "Brother Printer" -description: "Instructions on how to integrate a Brother printer into Home Assistant." +title: Brother Printer +description: Instructions on how to integrate a Brother printer into Home Assistant. logo: brother.png ha_category: - System Monitor diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown index da953d977dd..3e88d7c5ebe 100644 --- a/source/_integrations/elgato.markdown +++ b/source/_integrations/elgato.markdown @@ -1,6 +1,6 @@ --- -title: "Elgato Key Light" -description: "Instructions on how to integrate an Elgato Key Light with Home Assistant." +title: Elgato Key Light +description: Instructions on how to integrate an Elgato Key Light with Home Assistant. logo: elgato.jpg ha_category: - Light diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown index f96d46261fc..1eca27e8675 100644 --- a/source/_integrations/gios.markdown +++ b/source/_integrations/gios.markdown @@ -1,6 +1,6 @@ --- -title: "GIOŚ" -description: "Instructions on how to integrate GIOŚ (Polish Chief Inspectorate Of Environmental Protection) air quality service into Home Assistant." +title: GIOŚ +description: Instructions on how to integrate GIOŚ (Polish Chief Inspectorate Of Environmental Protection) air quality service into Home Assistant. logo: gios.png ha_category: - Health @@ -28,4 +28,4 @@ station_id: description: Specify ID of the measuring station. required: true type: integer -{% endconfiguration %} \ No newline at end of file +{% endconfiguration %} diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index ea0c5720bb5..b390b76b4bc 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -6,7 +6,7 @@ ha_category: - Presence Detection - Sensor ha_iot_class: Cloud Polling -ha_release: "0.10" +ha_release: '0.10' --- The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown index 4d00039ce78..105c551fd84 100644 --- a/source/_integrations/intesishome.markdown +++ b/source/_integrations/intesishome.markdown @@ -1,6 +1,6 @@ --- -title: "IntesisHome AC Controller" -description: "Instructions how to integrate IntesisHome AC devices with Home Assistant" +title: IntesisHome +description: Instructions how to integrate IntesisHome AC devices with Home Assistant logo: intesishome.png ha_category: Climate ha_release: 0.104 diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown index d426953c30f..a6f3fb0f94f 100644 --- a/source/_integrations/kef.markdown +++ b/source/_integrations/kef.markdown @@ -1,6 +1,6 @@ --- -title: "KEF Speakers" -description: "Instructions on how to integrate KEF Speakers into Home Assistant." +title: KEF +description: Instructions on how to integrate KEF Speakers into Home Assistant. logo: kef.png ha_category: - Media Player diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown index ad76ff1ec75..6961f5eb345 100644 --- a/source/_integrations/local_ip.markdown +++ b/source/_integrations/local_ip.markdown @@ -1,6 +1,6 @@ --- -title: "Local IP Address" -description: "Instructions on how to integrate the Local IP Address sensor into Home Assistant." +title: Local IP Address +description: Instructions on how to integrate the Local IP Address sensor into Home Assistant. logo: home-assistant.png ha_category: - Network diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown index a7adb9382be..65a41192bc6 100644 --- a/source/_integrations/sentry.markdown +++ b/source/_integrations/sentry.markdown @@ -1,6 +1,6 @@ --- -title: "Sentry" -description: "Record errors to Sentry." +title: Sentry +description: Record errors to Sentry. logo: sentry.png ha_category: - System Monitor diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown index 07a0e9ecbc5..814108ba7ea 100644 --- a/source/_integrations/signal_messenger.markdown +++ b/source/_integrations/signal_messenger.markdown @@ -1,6 +1,6 @@ --- -title: "Signal Messenger" -description: "Instructions on how to integrate Signal Messenger within Home Assistant." +title: Signal Messenger +description: Instructions on how to integrate Signal Messenger within Home Assistant. logo: signal_messenger.png ha_category: - Notifications diff --git a/source/_integrations/surepetcare.markdown b/source/_integrations/surepetcare.markdown index 23e36fc43c8..8dc3e2e33ff 100644 --- a/source/_integrations/surepetcare.markdown +++ b/source/_integrations/surepetcare.markdown @@ -1,11 +1,11 @@ --- -title: "Sure Petcare" -description: "Instructions on how to integrate the Sure Petcare cat and pet flaps into Home Assistant." +title: Sure Petcare +description: Instructions on how to integrate the Sure Petcare cat and pet flaps into Home Assistant. date: 2019-06-08 20:00 ha_category: - Binary Sensor - Sensor -ha_release: '0.104.0' +ha_release: 0.104.0 ha_iot_class: Cloud Polling --- diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index f8d900c8690..3354ca600df 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -104,5 +104,3 @@ The actual linking can be realized by two automation rules. One rule to control - entity_id: light.led_push_button_10 service: light.toggle ``` - - From bb1fe0ff88d389e01226cfbfe11028e3ee66c091 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 16:25:50 +0100 Subject: [PATCH 222/236] Sync config flow with codebase (#11660) * Sync config flow with codebase * Corrected sync with release --- source/_integrations/adguard.markdown | 1 + source/_integrations/airly.markdown | 1 + source/_integrations/almond.markdown | 1 + source/_integrations/ambiclimate.markdown | 1 + source/_integrations/ambient_station.markdown | 1 + source/_integrations/cast.markdown | 1 + source/_integrations/cert_expiry.markdown | 1 + source/_integrations/coolmaster.markdown | 1 + source/_integrations/daikin.markdown | 1 + source/_integrations/dialogflow.markdown | 1 + source/_integrations/ecobee.markdown | 1 + source/_integrations/emulated_roku.markdown | 1 + source/_integrations/esphome.markdown | 1 + source/_integrations/geofency.markdown | 1 + source/_integrations/geonetnz_quakes.markdown | 1 + source/_integrations/glances.markdown | 1 + source/_integrations/gpslogger.markdown | 1 + source/_integrations/hangouts.markdown | 1 + source/_integrations/heos.markdown | 1 + source/_integrations/hisense_aehw4a1.markdown | 1 + source/_integrations/homekit_controller.markdown | 1 + source/_integrations/homematicip_cloud.markdown | 1 + source/_integrations/huawei_lte.markdown | 1 + source/_integrations/hue.markdown | 1 + source/_integrations/iaqualink.markdown | 1 + source/_integrations/ifttt.markdown | 1 + source/_integrations/ios.markdown | 1 + source/_integrations/ipma.markdown | 1 + source/_integrations/iqvia.markdown | 1 + source/_integrations/izone.markdown | 1 + source/_integrations/lifx.markdown | 1 + source/_integrations/linky.markdown | 1 + source/_integrations/logi_circle.markdown | 1 + source/_integrations/luftdaten.markdown | 1 + source/_integrations/mailgun.markdown | 1 + source/_integrations/met.markdown | 1 + source/_integrations/mobile_app.markdown | 1 + source/_integrations/mqtt.markdown | 1 + source/_integrations/nest.markdown | 1 + source/_integrations/notion.markdown | 1 + source/_integrations/opentherm_gw.markdown | 1 + source/_integrations/owntracks.markdown | 1 + source/_integrations/plaato.markdown | 1 + source/_integrations/rainmachine.markdown | 1 + source/_integrations/simplisafe.markdown | 1 + source/_integrations/smartthings.markdown | 1 + source/_integrations/smhi.markdown | 1 + source/_integrations/solaredge.markdown | 1 + source/_integrations/solarlog.markdown | 1 + source/_integrations/somfy.markdown | 1 + source/_integrations/sonos.markdown | 1 + source/_integrations/toon.markdown | 1 + source/_integrations/tplink.markdown | 1 + source/_integrations/traccar.markdown | 1 + source/_integrations/transmission.markdown | 1 + source/_integrations/twilio.markdown | 1 + source/_integrations/unifi.markdown | 1 + source/_integrations/upnp.markdown | 1 + source/_integrations/velbus.markdown | 1 + source/_integrations/vesync.markdown | 1 + source/_integrations/wemo.markdown | 1 + source/_integrations/withings.markdown | 1 + source/_integrations/wled.markdown | 1 + source/_integrations/zha.markdown | 1 + source/_integrations/zone.markdown | 1 + source/_integrations/zwave.markdown | 1 + 66 files changed, 66 insertions(+) diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown index 1f3078bfa8a..a600245422f 100644 --- a/source/_integrations/adguard.markdown +++ b/source/_integrations/adguard.markdown @@ -8,6 +8,7 @@ ha_category: - Switch ha_release: 0.95 ha_iot_class: Local Polling +ha_config_flow: true --- AdGuard Home is a network-wide ad- and tracker-blocking DNS server with parental diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index dacb9dfa989..490af408079 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -6,6 +6,7 @@ ha_category: - Health ha_release: 0.101 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `airly` integration uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown index 19afa87b05c..5c8e39c0d15 100644 --- a/source/_integrations/almond.markdown +++ b/source/_integrations/almond.markdown @@ -6,6 +6,7 @@ ha_category: - Voice ha_iot_class: Local Polling ha_release: '0.102' +ha_config_flow: true --- [Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant by [Stanford Open Virtual Assistant Lab](https://oval.cs.stanford.edu/). It allows you, among other things, to control Home Assistant using natural language. Once installed, it will be available on Lovelace via the microphone icon in the top right. diff --git a/source/_integrations/ambiclimate.markdown b/source/_integrations/ambiclimate.markdown index 1f163dc225d..04bf151d468 100644 --- a/source/_integrations/ambiclimate.markdown +++ b/source/_integrations/ambiclimate.markdown @@ -5,6 +5,7 @@ logo: ambiclimate.png ha_category: Climate ha_release: 0.93 ha_iot_class: Cloud Polling +ha_config_flow: true --- Integrates [Ambiclimate](https://ambiclimate.com/) Air Conditioning controller into Home Assistant. diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index eb6af9d3995..029c6e1efa0 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -6,6 +6,7 @@ ha_category: - Weather ha_release: 0.85 ha_iot_class: Cloud Push +ha_config_flow: true --- The `Ambient Weather Station` integration retrieves local weather information diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown index 0155617fbe9..2bd49bfafb5 100644 --- a/source/_integrations/cast.markdown +++ b/source/_integrations/cast.markdown @@ -7,6 +7,7 @@ ha_category: featured: true ha_release: pre 0.7 ha_iot_class: Local Polling +ha_config_flow: true --- You can enable the Cast integration by going to the Integrations page inside the config panel. diff --git a/source/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown index 1480cf1c7bc..4771f17107f 100644 --- a/source/_integrations/cert_expiry.markdown +++ b/source/_integrations/cert_expiry.markdown @@ -6,6 +6,7 @@ ha_category: - Network ha_release: 0.44 ha_iot_class: Configurable +ha_config_flow: true --- The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index 0f6c56f7b76..e4dbb85725a 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -6,6 +6,7 @@ ha_category: - Climate ha_release: 0.88 ha_iot_class: Local Polling +ha_config_flow: true --- The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index 6c633f90055..5f418f77804 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -9,6 +9,7 @@ ha_category: ha_release: 0.59 ha_iot_class: Local Polling ha_qa_scale: platinum +ha_config_flow: true --- The `daikin` integration integrates Daikin air conditioning systems into Home Assistant. diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 41a4789eb4c..9e06b06a98c 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -5,6 +5,7 @@ logo: dialogflow.png ha_category: - Voice ha_release: 0.56 +ha_config_flow: true --- The `dialogflow` integration is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 7209a679547..7d9831ebe26 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -11,6 +11,7 @@ ha_category: featured: true ha_release: 0.9 ha_iot_class: Cloud Poll +ha_config_flow: true --- The `ecobee` integration lets you control and view sensor data from [ecobee](https://ecobee.com) thermostats. diff --git a/source/_integrations/emulated_roku.markdown b/source/_integrations/emulated_roku.markdown index 5154d602bdb..ea80363b9f7 100644 --- a/source/_integrations/emulated_roku.markdown +++ b/source/_integrations/emulated_roku.markdown @@ -6,6 +6,7 @@ ha_category: - Hub ha_release: 0.86 ha_iot_class: Local Push +ha_config_flow: true --- This integration integrates an emulated Roku API into Home Assistant, diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index 2f72b9a45bf..cb037d3caa9 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -7,6 +7,7 @@ ha_category: - DIY ha_release: 0.85 ha_iot_class: Local Push +ha_config_flow: true --- This integration allows you to connect your [ESPHome](https://esphome.io) devices directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html). diff --git a/source/_integrations/geofency.markdown b/source/_integrations/geofency.markdown index 751c216cdb3..01f4202f243 100644 --- a/source/_integrations/geofency.markdown +++ b/source/_integrations/geofency.markdown @@ -6,6 +6,7 @@ ha_category: - Presence Detection ha_release: 0.53 ha_iot_class: Cloud Push +ha_config_flow: true --- This integration sets up integration with [Geofency](https://www.geofency.com/). Geofency is a paid app for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. diff --git a/source/_integrations/geonetnz_quakes.markdown b/source/_integrations/geonetnz_quakes.markdown index c16adf33ac9..773976eb90f 100644 --- a/source/_integrations/geonetnz_quakes.markdown +++ b/source/_integrations/geonetnz_quakes.markdown @@ -6,6 +6,7 @@ ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.98 +ha_config_flow: true --- The `geonetnz_quakes` integration lets you use a GeoJSON feed provided by diff --git a/source/_integrations/glances.markdown b/source/_integrations/glances.markdown index 575b77f683b..65697b651d0 100644 --- a/source/_integrations/glances.markdown +++ b/source/_integrations/glances.markdown @@ -6,6 +6,7 @@ ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.7.3 +ha_config_flow: true --- The `glances` integration allows you to monitor the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. diff --git a/source/_integrations/gpslogger.markdown b/source/_integrations/gpslogger.markdown index 09529e155a3..6c3e9681c4d 100644 --- a/source/_integrations/gpslogger.markdown +++ b/source/_integrations/gpslogger.markdown @@ -6,6 +6,7 @@ ha_category: - Presence Detection ha_release: 0.34 ha_iot_class: Cloud Push +ha_config_flow: true --- This integration sets up integration with [GPSLogger](https://gpslogger.app/). GPSLogger is an open source app for Android that allows users to update your location in Home Assistant. diff --git a/source/_integrations/hangouts.markdown b/source/_integrations/hangouts.markdown index e6828ecac78..bf30af1c565 100644 --- a/source/_integrations/hangouts.markdown +++ b/source/_integrations/hangouts.markdown @@ -6,6 +6,7 @@ ha_category: - Hub - Notifications ha_release: 0.77 +ha_config_flow: true --- This integration allows you to send messages to [Google Hangouts](https://hangouts.google.com) conversations, as well as to react to messages in conversations. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. Home Assistant will impersonate a Smartisan YQ603 phone which will then show up in your Google devices. diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index 7d4654e3036..e73640139dc 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -6,6 +6,7 @@ ha_category: - Media Player ha_release: 0.92 ha_iot_class: Local Push +ha_config_flow: true --- The HEOS integration adds support for [HEOS](http://heosbydenon.denon.com) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: diff --git a/source/_integrations/hisense_aehw4a1.markdown b/source/_integrations/hisense_aehw4a1.markdown index 5e10124000a..cb65629e93d 100644 --- a/source/_integrations/hisense_aehw4a1.markdown +++ b/source/_integrations/hisense_aehw4a1.markdown @@ -6,6 +6,7 @@ ha_release: 0.103 ha_category: - Climate ha_iot_class: Local Poll +ha_config_flow: true --- The Hisense AEH-W4A1 is a WiFi module used to give WiFi connectivity to some Hisense ACs and rebranded models (Smart Cool, Beko and others). diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index c92b6e706af..81d7bf40072 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -14,6 +14,7 @@ ha_category: - Sensor ha_release: 0.68 ha_iot_class: Local Polling +ha_config_flow: true --- The [HomeKit](https://developer.apple.com/homekit/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index e85245f2b37..db11934c145 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -13,6 +13,7 @@ ha_category: - Switch ha_iot_class: Cloud Push ha_release: 0.66 +ha_config_flow: true --- The [HomematicIP](https://www.homematic-ip.com/) integration platform is used as an interface to the cloud server. Since there is no official documentation about this API, everything was done via reverse engineering. The [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used for communicating. Use at your own risk. diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 4a3c668cfb6..8b08289514c 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -11,6 +11,7 @@ ha_category: - Binary Sensor ha_release: 0.79 ha_iot_class: Local Polling +ha_config_flow: true --- The Huawei LTE router and modem integration for Home Assistant allows you to observe and control [Huawei LTE devices](https://consumer.huawei.com/en/smart-home/). diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index 8bc8bec378b..3f90c84db61 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -9,6 +9,7 @@ ha_iot_class: Local Polling ha_qa_scale: platinum featured: true ha_release: '0.60' +ha_config_flow: true --- Philips Hue support is integrated into Home Assistant as a hub that can drive the light and sensor platforms. The preferred way to set up the Philips Hue platform is by enabling the [discovery component](/integrations/discovery/). diff --git a/source/_integrations/iaqualink.markdown b/source/_integrations/iaqualink.markdown index 426b23369bd..c0e880680aa 100644 --- a/source/_integrations/iaqualink.markdown +++ b/source/_integrations/iaqualink.markdown @@ -10,6 +10,7 @@ ha_category: - Switch ha_release: 0.99 ha_iot_class: Cloud Polling +ha_config_flow: true --- [iAqualink](https://www.iaqualink.com/) by [Jandy](https://www.jandy.com/) allows you to control your pool anytime, anywhere. diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 7a2e479aac3..5e0e7c4c7b1 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -7,6 +7,7 @@ ha_category: featured: true ha_iot_class: Cloud Push ha_release: 0.8 +ha_config_flow: true --- [IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so-called "Applets". With the IFTTT component, you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 25ea180b567..64594d90b7a 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -6,6 +6,7 @@ ha_category: - Hub ha_release: 0.31 ha_iot_class: Configurable +ha_config_flow: true --- The `ios` integration is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 3cff6aaa14d..081f419db1e 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -6,6 +6,7 @@ ha_category: - Weather ha_release: 0.72 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `ipma` weather platform uses the [Instituto Português do Mar e Atmosfera](https://www.ipma.pt/) as a source for current and forecast meteorological data. diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index 32232a85612..fd4baf48608 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -6,6 +6,7 @@ ha_category: - Health ha_release: 0.63 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `iqvia` sensor platform collects and displays allergy, asthma and disease diff --git a/source/_integrations/izone.markdown b/source/_integrations/izone.markdown index a951df15947..fb053bc7eac 100644 --- a/source/_integrations/izone.markdown +++ b/source/_integrations/izone.markdown @@ -5,6 +5,7 @@ ha_category: - Climate ha_release: '0.100' ha_iot_class: Local Push +ha_config_flow: true --- The `iZone` integration allows access of control of a local [iZone](https://izone.com.au/) ducted reverse-cycle climate control devices. These are largely available in Australia. diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index 93851def4a1..406fab6e5e5 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -6,6 +6,7 @@ ha_category: - Light ha_iot_class: Local Polling ha_release: 0.81 +ha_config_flow: true --- The `lifx` integration allows you to integrate your [LIFX](https://www.lifx.com) into Home Assistant. diff --git a/source/_integrations/linky.markdown b/source/_integrations/linky.markdown index 08689dee88e..6c0bfa3c1f4 100644 --- a/source/_integrations/linky.markdown +++ b/source/_integrations/linky.markdown @@ -7,6 +7,7 @@ ha_category: - Energy - Sensor ha_iot_class: Cloud Polling +ha_config_flow: true --- The `linky` sensor platform is retrieving the consumption of your home from the [Linky electric meter](https://www.enedis.fr/linky-compteur-communicant). diff --git a/source/_integrations/logi_circle.markdown b/source/_integrations/logi_circle.markdown index 98947892c9d..eceb38f2a78 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -7,6 +7,7 @@ ha_category: - Sensor ha_release: 0.79 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `logi_circle` implementation allows you to integrate your [Logi Circle](https://circle.logi.com/) cameras in Home Assistant. To connect Logi Circle, you will have to [sign up for API access](#requesting-api-access) and get a `client_id`, `client_secret` and `api_key`. diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index acaf4bc1930..045e49a86b0 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -8,6 +8,7 @@ ha_category: ha_release: 0.82 ha_iot_class: Cloud Polling ha_qa_scale: gold +ha_config_flow: true --- The `luftdaten` integration will query the open data API of [luftdaten.info](https://luftdaten.info/) to monitor air quality and other weather data from a specific (self build) sensor station. diff --git a/source/_integrations/mailgun.markdown b/source/_integrations/mailgun.markdown index 225fe311700..67a5a4fde1b 100644 --- a/source/_integrations/mailgun.markdown +++ b/source/_integrations/mailgun.markdown @@ -5,6 +5,7 @@ logo: mailgun.png ha_category: - Notifications ha_release: 0.38 +ha_config_flow: true --- To be able to receive webhooks from Mailgun, your Home Assistant instance needs to be accessible from the web ([Hass.io instructions](/addons/duckdns/)) and you need to have the `base_url` configured for the HTTP integration ([docs](/integrations/http/#base_url)). diff --git a/source/_integrations/met.markdown b/source/_integrations/met.markdown index d9855c07f18..fcd4519e3ed 100644 --- a/source/_integrations/met.markdown +++ b/source/_integrations/met.markdown @@ -6,6 +6,7 @@ ha_category: - Weather ha_release: 0.79 ha_iot_class: Cloud Polling +ha_config_flow: true --- 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/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index 2b9e358f7ae..7521bee5f74 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -6,6 +6,7 @@ ha_category: - Other ha_release: 0.89 ha_qa_scale: internal +ha_config_flow: true --- The Mobile App integration allows Home Assistant mobile apps to easily integrate with Home Assistant. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index b74f44a143e..9dffe1b8582 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -7,6 +7,7 @@ ha_category: featured: true ha_release: pre 0.7 ha_iot_class: Local Push +ha_config_flow: true --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 2ffe57fcdd4..96299a41716 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -10,6 +10,7 @@ ha_category: - Sensor ha_iot_class: Cloud Push ha_release: 0.7 +ha_config_flow: true --- The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. diff --git a/source/_integrations/notion.markdown b/source/_integrations/notion.markdown index 6c5e80c09b9..f89afc5261f 100644 --- a/source/_integrations/notion.markdown +++ b/source/_integrations/notion.markdown @@ -8,6 +8,7 @@ ha_category: - Sensor ha_release: 0.96 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `Notion` component retrieves data from [Notion](https://getnotion.com) wireless diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index f3bd3974f59..cf5a1707a71 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -9,6 +9,7 @@ ha_category: - Sensor ha_release: 0.81 ha_iot_class: Local Push +ha_config_flow: true --- The `opentherm_gw` integration is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown index 5a0932c78bc..e076f80b823 100644 --- a/source/_integrations/owntracks.markdown +++ b/source/_integrations/owntracks.markdown @@ -5,6 +5,7 @@ logo: owntracks.png ha_category: - Presence Detection ha_release: 0.7.4 +ha_config_flow: true --- [OwnTracks](https://owntracks.org/) is a free and open source application for iOS and Android that allow you to track your location and send it directly to Home Assistant. It can be set up via the integrations panel in the configuration screen. diff --git a/source/_integrations/plaato.markdown b/source/_integrations/plaato.markdown index 266c7fd56c8..d9059f303bf 100644 --- a/source/_integrations/plaato.markdown +++ b/source/_integrations/plaato.markdown @@ -6,6 +6,7 @@ ha_release: 0.95 ha_category: - Sensor ha_iot_class: Cloud Push +ha_config_flow: true --- This integration sets up integration with [Plaato Airlock](https://www.plaato.io/). diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index 5a2ea7cd0e0..8099fd10019 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -9,6 +9,7 @@ ha_category: - Switch ha_release: 0.69 ha_iot_class: Local Polling +ha_config_flow: true --- The `rainmachine` integration is the main integration to integrate all platforms related to [RainMachine smart Wi-Fi sprinkler controllers](https://www.rainmachine.com/). diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 3e32f4d1e09..5d9364004ea 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -6,6 +6,7 @@ ha_release: 0.81 ha_category: - Alarm - Lock +ha_config_flow: true --- The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index 0a28c51582d..b6e1d9caaab 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -16,6 +16,7 @@ ha_category: - Switch ha_release: 0.87 ha_iot_class: Cloud Push +ha_config_flow: true --- Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings integration is the main integration to integrate all SmartThings related platforms. The basic features of this integration include: diff --git a/source/_integrations/smhi.markdown b/source/_integrations/smhi.markdown index 0b2f826f1ce..2e53261bed0 100644 --- a/source/_integrations/smhi.markdown +++ b/source/_integrations/smhi.markdown @@ -7,6 +7,7 @@ ha_category: - Weather ha_release: 0.81 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `smhi` integration adds support for the [SMHI.se](https://www.smhi.se/) web service as a source for meteorological data for your location. diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown index 1649ce4bc98..65b4600da30 100644 --- a/source/_integrations/solaredge.markdown +++ b/source/_integrations/solaredge.markdown @@ -6,6 +6,7 @@ ha_category: - Sensor ha_release: 0.85 ha_iot_class: Cloud Polling +ha_config_flow: true --- 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/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index e64be3d9c47..c9b0400dd4f 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -5,6 +5,7 @@ logo: solar-log.png ha_category: Sensor ha_release: 0.101 ha_iot_class: Local Polling +ha_config_flow: true --- The `solarlog` integration uses the open JSON interface on [Solar-Log PV monitoring systems](https://www.solar-log.com/) to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index 9d2cf07c0ce..d24b63a45ba 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -6,6 +6,7 @@ ha_category: - Hub ha_iot_class: Cloud Polling ha_release: 0.95 +ha_config_flow: true --- The Somfy integration will allow users to integrate their Somfy devices into Home Assistant using the [official API](https://developer.somfy.com/somfy-open-api/apis), unlike the [tahoma](/integrations/tahoma/) component. diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown index 1ce7e3970f1..4af4c8e23b2 100644 --- a/source/_integrations/sonos.markdown +++ b/source/_integrations/sonos.markdown @@ -7,6 +7,7 @@ ha_category: featured: true ha_release: 0.7.3 ha_iot_class: Local Push +ha_config_flow: true --- The `sonos` integration allows you to control your [Sonos](https://www.sonos.com) wireless speakers from Home Assistant. It also works with IKEA Symfonisk speakers. diff --git a/source/_integrations/toon.markdown b/source/_integrations/toon.markdown index 21ee1f61268..009c2ae9a89 100644 --- a/source/_integrations/toon.markdown +++ b/source/_integrations/toon.markdown @@ -9,6 +9,7 @@ ha_category: ha_release: 0.56 logo: toon.png ha_iot_class: Cloud Polling +ha_config_flow: true --- The `toon` integration platform can be used to control your Toon thermostat. This integration adds a climate device for your Toon thermostat, sensors for power and gas consumption, sensors for solar production and several binary sensors for things like boiler burner on/off, hot tap water and boiler health status. diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index e2d5c41a486..f363cc78257 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -8,6 +8,7 @@ ha_category: - Light ha_release: 0.89 ha_iot_class: Local Polling +ha_config_flow: true --- The `tplink` integration allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as smart plugs and smart bulbs. diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown index 0a8e2083f08..8025db01256 100644 --- a/source/_integrations/traccar.markdown +++ b/source/_integrations/traccar.markdown @@ -6,6 +6,7 @@ ha_release: 0.83 ha_category: - Presence Detection ha_iot_class: Local Polling +ha_config_flow: true --- `Traccar` uses GPS for tracking and has support for over 1500 different types of devices. One option is to track the [Traccar Client](https://www.traccar.org/client/) app on a smartphone via `webhook`. The other option is to connect to an existing [Traccar Server](https://www.traccar.org/server/) installation which is also available as Hass.io addon. diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index fc59a076b00..4485a5e6b85 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -8,6 +8,7 @@ ha_category: - Sensor ha_release: 0.87 ha_iot_class: Local Polling +ha_config_flow: true --- The `transmission` integration allows you to monitor your downloads with [Transmission](https://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/twilio.markdown b/source/_integrations/twilio.markdown index 9f567492368..d3f532fecfe 100644 --- a/source/_integrations/twilio.markdown +++ b/source/_integrations/twilio.markdown @@ -5,6 +5,7 @@ logo: twilio.png ha_category: - Hub ha_release: '0.40' +ha_config_flow: true --- The `twilio` integration enables the sending of notifications via SMS and the creation of calls with [Twilio](https://twilio.com). diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index b7efdc99162..36aef73ca19 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -9,6 +9,7 @@ ha_category: ha_release: 0.81 ha_iot_class: Local Polling ha_qa_scale: platinum +ha_config_flow: true --- [UniFi](https://unifi-sdn.ubnt.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index 491feed6ee1..eaea478786d 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -7,6 +7,7 @@ ha_category: - Sensor ha_release: 0.18 ha_iot_class: Local Polling +ha_config_flow: true --- The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index 6aa7f70bace..3ddf5275545 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -10,6 +10,7 @@ ha_category: - Switch ha_iot_class: Local Push ha_release: '0.50' +ha_config_flow: true --- The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index 99fb589e506..c5dbbf166b3 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -5,6 +5,7 @@ logo: vesync.png ha_category: - Switch ha_release: 0.66 +ha_config_flow: true --- The `vesync` integration enables you to control Etekcity smart switches and outlets connected to the VeSync App. diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index 2247e165456..214a1287daa 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -9,6 +9,7 @@ ha_category: - Light - Switch ha_release: pre 0.7 +ha_config_flow: true --- The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) devices with Home Assistant. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index 179831152d1..ad5de6d416f 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -7,6 +7,7 @@ ha_category: - Sensor ha_release: 0.99 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `withings` sensor platform consumes data from various health products produced by [Withings](https://www.withings.com). diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index 41997aea5aa..a6ee392e0d4 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -9,6 +9,7 @@ ha_category: ha_release: 0.102 ha_iot_class: Local Polling ha_qa_scale: platinum +ha_config_flow: true --- [WLED](https://github.com/Aircoookie/WLED) is a fast and feature-rich diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 0f44b5eff17..6373e266a0b 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -13,6 +13,7 @@ ha_category: ha_release: 0.44 ha_iot_class: Local Polling featured: true +ha_config_flow: true --- [Zigbee Home Automation](https://zigbee.org/zigbee-for-developers/applicationstandards/zigbeehomeautomation/) diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index 749509f6967..dbb87906552 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -6,6 +6,7 @@ ha_category: - Organization ha_qa_scale: internal ha_release: 0.69 +ha_config_flow: true --- Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/getting-started/automation-trigger/#zone-trigger) or [condition](/getting-started/automation-condition/#zone-condition) inside automation setups. diff --git a/source/_integrations/zwave.markdown b/source/_integrations/zwave.markdown index d9b83eed838..7a47e009677 100644 --- a/source/_integrations/zwave.markdown +++ b/source/_integrations/zwave.markdown @@ -15,6 +15,7 @@ ha_category: featured: true ha_iot_class: Local Push ha_release: 0.7 +ha_config_flow: true --- The [Z-Wave](https://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Please see the [Z-Wave getting started section](/docs/z-wave/) for in-depth documentation on how to use and setup the Z-Wave component. From c9466649272f1fd903505838060982f8e152c0fe Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 17:00:56 +0100 Subject: [PATCH 223/236] Sync config flow with codebase (#11661) --- source/_integrations/brother.markdown | 1 + source/_integrations/elgato.markdown | 1 + source/_integrations/gios.markdown | 1 + source/_integrations/icloud.markdown | 1 + source/_integrations/local_ip.markdown | 1 + source/_integrations/sentry.markdown | 1 + source/_integrations/tesla.markdown | 1 + 7 files changed, 7 insertions(+) diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown index 9e260ee0e20..fe0412bf232 100644 --- a/source/_integrations/brother.markdown +++ b/source/_integrations/brother.markdown @@ -6,6 +6,7 @@ ha_category: - System Monitor ha_release: 0.104 ha_iot_class: Local Polling +ha_config_flow: true --- The `Brother Printer` integration allows you to read current data from your local Brother printer. diff --git a/source/_integrations/elgato.markdown b/source/_integrations/elgato.markdown index 3e88d7c5ebe..06f9a097053 100644 --- a/source/_integrations/elgato.markdown +++ b/source/_integrations/elgato.markdown @@ -7,6 +7,7 @@ ha_category: ha_release: 0.104 ha_iot_class: Local Polling ha_qa_scale: platinum +ha_config_flow: true --- The [Elgato Key Light](https://www.elgato.com/en/gaming/key-light) sets the diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown index 1eca27e8675..0fa0898d78e 100644 --- a/source/_integrations/gios.markdown +++ b/source/_integrations/gios.markdown @@ -6,6 +6,7 @@ ha_category: - Health ha_release: 0.104 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `gios` integration uses the [GIOŚ](http://powietrze.gios.gov.pl/pjp/current) web service as a source for air quality data for your location. diff --git a/source/_integrations/icloud.markdown b/source/_integrations/icloud.markdown index b390b76b4bc..a86cf660f28 100644 --- a/source/_integrations/icloud.markdown +++ b/source/_integrations/icloud.markdown @@ -7,6 +7,7 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: '0.10' +ha_config_flow: true --- The `icloud` integration allows you to detect presence using the [iCloud](https://www.icloud.com/) service. iCloud allows users to track their location on iOS devices. diff --git a/source/_integrations/local_ip.markdown b/source/_integrations/local_ip.markdown index 6961f5eb345..f64e15f63c8 100644 --- a/source/_integrations/local_ip.markdown +++ b/source/_integrations/local_ip.markdown @@ -6,6 +6,7 @@ ha_category: - Network ha_iot_class: Local Polling ha_release: 0.105 +ha_config_flow: true --- The `local_ip` sensor will expose the local (LAN) IP address of your Home Assistant instance. This can be useful when your instance has a static public hostname (for example, if you use the Nabu Casa service), but have a dynamically allocated local LAN address (for example, configured via DHCP). diff --git a/source/_integrations/sentry.markdown b/source/_integrations/sentry.markdown index 65a41192bc6..648967a0931 100644 --- a/source/_integrations/sentry.markdown +++ b/source/_integrations/sentry.markdown @@ -6,6 +6,7 @@ ha_category: - System Monitor ha_iot_class: Cloud Polling ha_release: 0.104 +ha_config_flow: true --- The `sentry` integration integrates with [Sentry](https://sentry.io/) to capture both logged errors as well as unhandled exceptions in Home Assistant. diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index 6adebb3fc9b..3643afd0c4f 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -12,6 +12,7 @@ ha_category: - Switch ha_release: 0.53 ha_iot_class: Cloud Polling +ha_config_flow: true --- The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.com/login) cloud service and provides presence detection as well as sensors such as charger state and temperature. From 7c94a77b42c031ca4f11f6bcb0de3ec74a45d400 Mon Sep 17 00:00:00 2001 From: SukramJ Date: Tue, 7 Jan 2020 17:03:17 +0100 Subject: [PATCH 224/236] Add reset_energy_counter service to Homematic IP Cloud (#11553) * Add reset_energy_counter service to Homematic IP Cloud * Add service description to overview --- source/_integrations/homematicip_cloud.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index c2d01017977..c39dbcc6546 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -172,6 +172,7 @@ Within this delay the device registration should be completed in the App, otherw - `homematicip_cloud.deactivate_vacation`: Deactivates the vacation mode immediately. - `homematicip_cloud.set_active_climate_profile`: Set the active climate profile index. - `homematicip_cloud.dump_hap_config`: Dump the configuration of the Homematic IP Access Point(s). +- `homematicip_cloud.reset_energy_counter`: Reset energy counter of measuring actuators. ### Service Examples @@ -256,6 +257,16 @@ action: anonymize: True ``` +Reset energy counter of measuring actuators. + +```yaml +... +action: + service: homematicip_cloud.reset_energy_counter + data: + entity_id: switch.livingroom +``` + ## Additional info From 735786820386ad07ed3d22e6fee14686175a14c5 Mon Sep 17 00:00:00 2001 From: Aleix Murtra Date: Tue, 7 Jan 2020 17:32:09 +0100 Subject: [PATCH 225/236] Add TMB sensor documentation (#10905) * Add TMB sensor resources * :pencil2: Tweaks Co-authored-by: Franck Nijhof --- source/_integrations/tmb.markdown | 57 +++++++++++++++++++++++++ source/images/supported_brands/tmb.png | Bin 0 -> 10306 bytes 2 files changed, 57 insertions(+) create mode 100644 source/_integrations/tmb.markdown create mode 100644 source/images/supported_brands/tmb.png diff --git a/source/_integrations/tmb.markdown b/source/_integrations/tmb.markdown new file mode 100644 index 00000000000..47ed71cf9b6 --- /dev/null +++ b/source/_integrations/tmb.markdown @@ -0,0 +1,57 @@ +--- +title: "Transports Metropolitans de Barcelona" +description: "Instructions on how to integrate TMB iBus sensor within Home Assistant." +logo: tmb.png +ha_category: + - Transport +ha_release: 0.104 +ha_iot_class: Local Polling +--- + +This sensor will provide you the remaining time, in minutes, for the next bus in a specific stop by using the [iBus service](https://www.tmb.cat/en/barcelona/tmb-ibus). + +You must create an application on [developer.tmb.cat](https://developer.tmb.cat/account/applications/public/new) to obtain the `app_id` and `app_key` values that you will need. + +Add the data to your `configuration.yaml` file as shown in the example: + +```yaml +# Example configuration.yaml entry +sensor: +- platform: tmb + app_id: !secret tmb_app_id + app_key: !secret tmb_app_key + stops: + - line: V25 + stop: 3258 +``` + +{% configuration %} +app_id: + description: Your TMB APP identifier. + required: true + type: string +app_key: + description: Your TMB APP key. + required: true + type: string +stops: + description: List of bus stops to track. + required: false + type: list + keys: + line: + description: Identifier of the line to track. + required: true + type: string + stop: + description: Stop identifier. + required: true + type: integer + name: + description: Name you want to use to identifier that stop. + required: false + type: string + default: "LINE - STOP" +{% endconfiguration %} + +Data provided by [TMB](https://tmb.cat/). diff --git a/source/images/supported_brands/tmb.png b/source/images/supported_brands/tmb.png new file mode 100644 index 0000000000000000000000000000000000000000..0606dd3f180c5010daabe72781952c3de89965cf GIT binary patch literal 10306 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 literal 0 HcmV?d00001 From ada7cc55a4468720fc64fa858aa73040b559eac5 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Tue, 7 Jan 2020 18:00:45 +0100 Subject: [PATCH 226/236] Entity Component to no longer generate automatic groups (#11662) * Entity Component to no longer generate automatic groups * Entity Component to no longer generate automatic groups --- .../automation_for_rainy_days.markdown | 2 +- source/_cookbook/automation_sun.markdown | 2 +- source/_cookbook/ifttt.manything.markdown | 14 +++--- source/_docs/automation/examples.markdown | 6 +-- source/_docs/ecosystem/appdaemon/api.markdown | 6 +-- source/_integrations/blink.markdown | 14 +++--- .../_integrations/google_assistant.markdown | 6 --- source/_integrations/group.markdown | 49 ------------------- ...19-alarm-sonos-and-itunes-support.markdown | 4 +- 9 files changed, 24 insertions(+), 79 deletions(-) diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown index c6d2eaf785d..35f66c70948 100644 --- a/source/_cookbook/automation_for_rainy_days.markdown +++ b/source/_cookbook/automation_for_rainy_days.markdown @@ -17,7 +17,7 @@ automation: to: 'rain' condition: - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '14:00' diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown index 8add13a3c5d..615aaed79d1 100644 --- a/source/_cookbook/automation_sun.markdown +++ b/source/_cookbook/automation_sun.markdown @@ -14,7 +14,7 @@ automation: offset: "-00:45:00" condition: condition: state - entity_id: group.all_devices + entity_id: all state: home action: service: light.turn_on diff --git a/source/_cookbook/ifttt.manything.markdown b/source/_cookbook/ifttt.manything.markdown index ccc39bd9bfc..45a8161b666 100644 --- a/source/_cookbook/ifttt.manything.markdown +++ b/source/_cookbook/ifttt.manything.markdown @@ -21,7 +21,7 @@ automation: # if we leave the house during the day. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' condition: - platform: state @@ -36,7 +36,7 @@ automation: # when we get home unless it's nighttime. trigger: - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: - condition: state @@ -59,9 +59,9 @@ For ManyThing support, you need to set up an `on` and `off` event. You can use the developer tools to test your [Maker Service](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant UI, open the sidebar, click on the first icon in the developer tools. This should get you to the 'Call Service' screen. Fill in the following values: -Field | Value ------ | ----- -domain | `ifttt` -service | `trigger` -Service Data | `{"event": "manything_on"}` +| Field | Value | +| ------------ | --------------------------- | +| domain | `ifttt` | +| service | `trigger` | +| Service Data | `{"event": "manything_on"}` | diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown index 3b19efd458f..c27aeeb0286 100644 --- a/source/_docs/automation/examples.markdown +++ b/source/_docs/automation/examples.markdown @@ -20,13 +20,13 @@ automation: event: sunset offset: '-01:00:00' - platform: state - entity_id: group.all_devices + entity_id: all to: 'home' condition: # Prefix the first line of each condition configuration # with a '-'' to enter multiple - condition: state - entity_id: group.all_devices + entity_id: all state: 'home' - condition: time after: '16:00:00' @@ -40,7 +40,7 @@ automation: - alias: 'Rule 2 - Away Mode' trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: light.turn_off diff --git a/source/_docs/ecosystem/appdaemon/api.markdown b/source/_docs/ecosystem/appdaemon/api.markdown index a81aba672da..6a44dfd1d9c 100644 --- a/source/_docs/ecosystem/appdaemon/api.markdown +++ b/source/_docs/ecosystem/appdaemon/api.markdown @@ -1650,7 +1650,7 @@ for tracker in trackers: ### everyone_home() -A convenience function to determine if everyone is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if everyone is home. #### Synopsis @@ -1669,7 +1669,7 @@ if self.everyone_home(): ``` ### anyone_home() -A convenience function to determine if one or more person is home. Use this in preference to getting the state of `group.all_devices()` as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if one or more person is home. #### Synopsis @@ -1689,7 +1689,7 @@ if self.anyone_home(): ``` ### noone_home() -A convenience function to determine if no people are at home. Use this in preference to getting the state of group.all_devices() as it avoids a race condition when using state change callbacks for device trackers. +A convenience function to determine if no people are at home. #### Synopsis diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 7c890221b28..4a8fbb63649 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -117,17 +117,17 @@ Force a refresh of the Blink system. Trigger a camera to take a new still image. | Service Data Attribute | Optional | Description | -|------------------------|----------|----------------------------------------| -| `name` | no | Name of camera to take new image with. | +| ---------------------- | -------- | -------------------------------------- | +| `name` | no | Name of camera to take new image with. | ### `blink.save_video` Save the last recorded video of a camera to a local file. Note that in most cases, Home Assistant will need to know that the directory is writable via the `whitelist_external_dirs` in your `configuration.yaml` file (see example below). | Service Data Attribute | Optional | Description | -|------------------------|----------|------------------------------------------| -| `name` | no | Name of camera containing video to save. | -| `filename` | no | Location of save file. | +| ---------------------- | -------- | ---------------------------------------- | +| `name` | no | Name of camera containing video to save. | +| `filename` | no | Location of save file. | ```yaml @@ -176,7 +176,7 @@ Here, this example assumes your blink module is named `My Sync Module` and that alias: Arm Blink When Away trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'not_home' action: service: alarm_control_panel.alarm_arm_away @@ -192,7 +192,7 @@ Similar to the previous example, this automation will disarm blink when arriving alias: Disarm Blink When Home trigger: platform: state - entity_id: group.all_devices + entity_id: all to: 'home' action: service: alarm_control_panel.alarm_disarm diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 900a8171c96..67a0e28476d 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -102,8 +102,6 @@ google_assistant: light.living_room: expose: false room: LIVING_ROOM - group.all_automations: - expose: false ``` {% configuration %} @@ -196,10 +194,6 @@ Currently, the following domains are available to be used with Google Assistant, - sensor (temperature setting for temperature sensors and humidity setting for humidity sensors) - Alarm Control Panel (arm/disarm) -
    - The domain `groups` contains groups containing all items, such as `group.all_automations`. When telling Google Assistant to shut down everything, this will lead in this example to disabling all automations. -
    - ### Secure Devices Certain devices are considered secure, including anything in the `lock` domain, `alarm_control_panel` domain and `covers` with device types `garage` and `door`. diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index ab932a469e3..cb2460bd9e3 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -60,18 +60,6 @@ control: type: string {% endconfiguration %} -## Default groups - -Some integrations automatically create special groups containing integration entities. These groups are named like `group.all_...`, for example: - -- `group.all_switches` -- `group.all_lights` -- `group.all_devices` -- `group.all_scripts` -- `group.all_automations` - -You can see list of these groups in **States** page of the **Developer Tools**. - ## Group behavior By default when any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`. If you set the `all` option to `true` though, this behavior is inverted and all members of the group have to be `on` for the group to turn on as well. @@ -148,40 +136,3 @@ Notice in the example below that in order to refer to the group "Living Room", y - group.living_room - group.bedroom ``` - -Default groups appear in the HOME tab, if not overridden by user views and groups. Default groups are hidden by default, so you must [customize](/docs/configuration/customizing-devices/) them to be visible in your custom groups and views. - -```yaml -# Example configuration.yaml to include default groups in custom view -customize: - group.all_automations: - hidden: false - group.all_scripts: - hidden: false -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` - -## Customize group order -You can also order your groups using [customize](/docs/configuration/customizing-devices/) with `order: ` if they don't show up in the order you want them in. - -```yaml -# Example configuration.yaml to order groups with order: -customize: - group.all_automations: - order: 1 - group.all_scripts: - order: 2 -group: - automation_view: - name: Automation - view: true - entities: - - group.all_automations - - group.all_scripts -``` diff --git a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown index 05a28c95ea3..57c1f6060ed 100644 --- a/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown +++ b/source/_posts/2015-09-19-alarm-sonos-and-itunes-support.markdown @@ -43,11 +43,11 @@ automation: event: sunset offset: "-01:00:00" - platform: state - entity_id: group.all_devices + entity_id: all state: home condition: - platform: state - entity_id: group.all_devices + entity_id: all state: home - platform: time after: "16:00:00" From 6166ad00c2d4f8de3284b8d4dd51e7ce7c643c99 Mon Sep 17 00:00:00 2001 From: jeremywillans <31495062+jeremywillans@users.noreply.github.com> Date: Wed, 8 Jan 2020 06:36:16 +1000 Subject: [PATCH 227/236] Update media_player.markdown (#11653) --- source/_integrations/media_player.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 9454127bb36..dc79106cd34 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -66,7 +66,7 @@ Currently only supported on [Denon AVR](/integrations/denonavr/) and [Songpal]( #### Service `media_player.shuffle_set` -Currently only supported on [Spotify](/integrations/spotify), [MPD](/integrations/mpd), [Kodi](/integrations/kodi), [Squeezebox](/integrations/squeezebox) and [Universal](/integrations/universal). +Currently only supported on [Sonos](/integrations/sonos), [Spotify](/integrations/spotify), [MPD](/integrations/mpd), [Kodi](/integrations/kodi), [Squeezebox](/integrations/squeezebox) and [Universal](/integrations/universal). | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | From 07446d2bf6cf824dabd1f42962c3498a46ca35ef Mon Sep 17 00:00:00 2001 From: FrengerH Date: Wed, 8 Jan 2020 10:40:09 +0100 Subject: [PATCH 228/236] Added documentation gesture support Deconz (#11671) --- source/_integrations/deconz.markdown | 30 ++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2c21efbc9f8..3d5b7119b85 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -103,7 +103,7 @@ Note: deCONZ automatically signals Home Assistant when new sensors are added, bu ## Remote control devices -Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. +Remote controls (ZHASwitch category) will not be exposed as regular entities, but as events named `deconz_event` with a payload of `id` and `event` and in case of the Aqara Magic Cube also `gesture`. Id will be the device name from deCONZ and Event will be the momentary state of the switch. Gesture is used for some Aqara Magic Cube specific events like: flip 90 degrees, flip 180 degrees, clockwise and counter clockwise rotation. However, a sensor entity will be created that shows the battery level of the switch as reported by deCONZ, named sensor.device_name_battery_level. Typical values for switches, the event codes are 4 numbers where the first and last number are of interest here. @@ -118,6 +118,20 @@ Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up butt For the IKEA Tradfri remote the first digit equals, 1 for the middle button, 2 for up, 3 for down, 4 for left, and 5 for right (e.g., "event: 1002" for middle button short release). +Specific gestures for the Aqara Magic Cube are: + +| Gesture | Description | +|---------|-------------| +| 0 | Awake | +| 1 | Shake | +| 2 | Free fall | +| 3 | Flip 90 | +| 4 | Flip 180 | +| 5 | Move on any side | +| 6 | Double tap on any side | +| 7 | Turn clockwise | +| 8 | Turn counter clockwise | + ### Finding your events Navigate to **Developer tools->Events**. In the section **Listen to events** add `deconz_event` and press **START LISTENING**. All events from deCONZ will now be shown and by pushing your remote button while monitoring the log it should be fairly easy to find the events you are looking for. @@ -139,6 +153,7 @@ Currently supported devices as device triggers: - Aqara Mini Switch - Aqara Round Switch - Aqara Square Switch +- Aqara Magic Cube #### Requesting support for new device trigger @@ -197,6 +212,18 @@ automation: brightness: > {% set bri = state_attr('light.lamp', 'brightness') | int %} {{ [bri-30, 0] | max }} + + - alias: 'Turn lamp on when turning cube clockwise' + initial_state: 'on' + trigger: + platform: event + event_type: deconz_event + event_data: + id: remote_control_1 + gesture: 7 + action: + service: light.turn_on + entity_id: light.lamp ``` {% endraw %} @@ -445,7 +472,6 @@ The `entity_id` name will be `sensor.device_name`, where `device_name` is define - Philips Hue Motion Sensor - IKEA Trådfri Remote - Philips Hue Dimmer Switch - - Xiaomi Cube - Xiaomi Aqara Smart Light Switch - Xiaomi Aqara Smart Wireless Switch - Xiaomi Smart Home Wireless Switch From ebaa3e460ed1912a013d0673eab86c60fe6c9e37 Mon Sep 17 00:00:00 2001 From: Peter Epley Date: Wed, 8 Jan 2020 04:41:00 -0500 Subject: [PATCH 229/236] Add Device Class info for customization (#11670) * Add Device Class info for customization * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/media_player.markdown | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index dc79106cd34..2c3f0333654 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -72,3 +72,10 @@ Currently only supported on [Sonos](/integrations/sonos), [Spotify](/integration | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| | `shuffle` | no | `true`/`false` for enabling/disabling shuffle | + +### Device Class + +The way media players are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for media players: + +- **tv**: Device is a television type device. +- **speaker**: Device is speaker or stereo type device. From aae05ed6a9e19dfcef316c144953007c2c5ca452 Mon Sep 17 00:00:00 2001 From: Peter Epley Date: Wed, 8 Jan 2020 04:41:31 -0500 Subject: [PATCH 230/236] Add Media Player as component with Device Classes (#11669) --- source/_docs/configuration/customizing-devices.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 20618b1021f..aa7a7154d19 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -89,6 +89,7 @@ Device class is currently supported by the following components: * [Binary Sensor](/integrations/binary_sensor/) * [Sensor](/integrations/sensor/) * [Cover](/integrations/cover/) +* [Media Player](integrations/media_player/) ### Manual customization From 71b234544c8524277739754ecf7e594450878ad6 Mon Sep 17 00:00:00 2001 From: Eric Nagley Date: Wed, 8 Jan 2020 05:03:59 -0500 Subject: [PATCH 231/236] add testing notes for Q9F (#11668) * add testing notes for Q9F * :pencil2: Tweak Co-authored-by: Franck Nijhof --- source/_integrations/samsungtv.markdown | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 228bacd8a0d..24e1da05fcd 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -130,9 +130,10 @@ For example: for model `UN55NU7100`, the `UN55` would mean it's an LED, North Am - MU6125 - Unable to see state and unable to control (Tested on UE58MU6125 on port 8001 and 8801) - MU6300 - Port set to 8001, turning on works, status not working reliably, turning off is not permanent (it comes back on) - MU6400 - Unable to see state and unable to control (using latest 1270 firmware. Had limited functionality on previous firmware) -- Q60 – turning on works, turning off does not work, State is always "off". +- Q60 – Turning on works, turning off does not work, State is always "off". - Q6F – Port set to 8001, turning on works, turning off does not work, status not working reliably. - Q7F - State is always "off" and unable to control via port 8001. +- Q9F - Turning on works, turning off does not work. State is correct. Nothing else works. Port 8001. None of the 2014 (H) and 2015 (J) model series (e.g., J5200) will work, since Samsung have used a different (encrypted) type of interface for these. From 23b0b57c08796425e1ed8cef2f6a32c1bd372b40 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 8 Jan 2020 13:10:43 +0100 Subject: [PATCH 232/236] Rename frontmatter ha_qa_scale to ha_quality_scale to match codebase (#11672) * Rename frontmatter ha_qa_scale to ha_quality_scale to match codebase * Update all integrations quality scales (done by sync) --- source/_includes/asides/component_navigation.html | 10 +++++----- source/_integrations/alarm_control_panel.markdown | 2 +- source/_integrations/alert.markdown | 2 +- source/_integrations/api.markdown | 2 +- source/_integrations/auth.markdown | 2 +- source/_integrations/automation.markdown | 2 +- source/_integrations/bayesian.markdown | 2 +- source/_integrations/binary_sensor.markdown | 2 +- source/_integrations/binary_sensor.template.markdown | 2 +- source/_integrations/browser.markdown | 2 +- source/_integrations/camera.markdown | 2 +- source/_integrations/climate.markdown | 2 +- source/_integrations/config.markdown | 2 +- source/_integrations/configurator.markdown | 2 +- source/_integrations/conversation.markdown | 2 +- source/_integrations/counter.markdown | 2 +- source/_integrations/cover.group.markdown | 2 +- source/_integrations/cover.markdown | 2 +- source/_integrations/cover.template.markdown | 2 +- source/_integrations/daikin.markdown | 2 +- source/_integrations/deconz.markdown | 2 +- source/_integrations/demo.markdown | 2 +- source/_integrations/device_automation.markdown | 2 +- source/_integrations/device_sun_light_trigger.markdown | 2 +- source/_integrations/device_tracker.markdown | 2 +- source/_integrations/discovery.markdown | 2 +- source/_integrations/downloader.markdown | 2 +- source/_integrations/emulated_hue.markdown | 2 +- source/_integrations/fan.markdown | 2 +- source/_integrations/fan.template.markdown | 2 +- source/_integrations/filter.markdown | 2 +- source/_integrations/flux.markdown | 2 +- source/_integrations/folder_watcher.markdown | 2 +- source/_integrations/frontend.markdown | 2 +- source/_integrations/group.markdown | 2 +- source/_integrations/history.markdown | 2 +- source/_integrations/history_graph.markdown | 2 +- source/_integrations/history_stats.markdown | 2 +- source/_integrations/homeassistant.markdown | 2 +- source/_integrations/http.markdown | 2 +- source/_integrations/hue.markdown | 2 +- source/_integrations/input_boolean.markdown | 2 +- source/_integrations/input_datetime.markdown | 2 +- source/_integrations/input_number.markdown | 2 +- source/_integrations/input_select.markdown | 2 +- source/_integrations/input_text.markdown | 2 +- source/_integrations/integration.markdown | 2 +- source/_integrations/intent_script.markdown | 2 +- source/_integrations/light.group.markdown | 2 +- source/_integrations/light.markdown | 2 +- source/_integrations/light.switch.markdown | 2 +- source/_integrations/light.template.markdown | 2 +- source/_integrations/lock.markdown | 2 +- source/_integrations/lock.template.markdown | 2 +- source/_integrations/logger.markdown | 2 +- source/_integrations/luftdaten.markdown | 2 +- source/_integrations/manual.markdown | 2 +- source/_integrations/map.markdown | 2 +- source/_integrations/media_extractor.markdown | 2 +- source/_integrations/media_player.markdown | 2 +- source/_integrations/min_max.markdown | 2 +- source/_integrations/mobile_app.markdown | 2 +- source/_integrations/mold_indicator.markdown | 2 +- source/_integrations/moon.markdown | 2 +- source/_integrations/notify.group.markdown | 2 +- source/_integrations/notify.markdown | 2 +- source/_integrations/onboarding.markdown | 2 +- source/_integrations/otp.markdown | 2 +- source/_integrations/panel_custom.markdown | 2 +- source/_integrations/panel_iframe.markdown | 2 +- source/_integrations/persistent_notification.markdown | 2 +- source/_integrations/person.markdown | 2 +- source/_integrations/ping.markdown | 2 +- source/_integrations/plant.markdown | 2 +- source/_integrations/point.markdown | 2 +- source/_integrations/proximity.markdown | 2 +- source/_integrations/python_script.markdown | 2 +- source/_integrations/random.markdown | 2 +- source/_integrations/recorder.markdown | 2 +- source/_integrations/rss_feed_template.markdown | 2 +- source/_integrations/scene.markdown | 2 +- source/_integrations/script.markdown | 2 +- source/_integrations/season.markdown | 2 +- source/_integrations/sensor.markdown | 2 +- source/_integrations/sensor.websocket_api.markdown | 2 +- source/_integrations/shell_command.markdown | 2 +- source/_integrations/shopping_list.markdown | 2 +- source/_integrations/simulated.markdown | 2 +- source/_integrations/statistics.markdown | 2 +- source/_integrations/stream.markdown | 2 +- source/_integrations/sun.markdown | 2 +- source/_integrations/switch.markdown | 2 +- source/_integrations/switch.template.markdown | 2 +- source/_integrations/system_health.markdown | 2 +- source/_integrations/system_log.markdown | 2 +- source/_integrations/tellduslive.markdown | 2 +- source/_integrations/template.markdown | 2 +- source/_integrations/threshold.markdown | 2 +- source/_integrations/tibber.markdown | 2 +- source/_integrations/time_date.markdown | 2 +- source/_integrations/timer.markdown | 2 +- source/_integrations/tod.markdown | 2 +- source/_integrations/trend.markdown | 2 +- source/_integrations/unifi.markdown | 2 +- source/_integrations/universal.markdown | 2 +- source/_integrations/updater.markdown | 2 +- source/_integrations/uptime.markdown | 2 +- source/_integrations/utility_meter.markdown | 2 +- source/_integrations/vacuum.template.markdown | 2 +- source/_integrations/version.markdown | 2 +- source/_integrations/weather.markdown | 2 +- source/_integrations/weblink.markdown | 2 +- source/_integrations/websocket_api.markdown | 2 +- source/_integrations/wled.markdown | 2 +- source/_integrations/workday.markdown | 2 +- source/_integrations/worldclock.markdown | 2 +- source/_integrations/zeroconf.markdown | 2 +- source/_integrations/zone.markdown | 2 +- 118 files changed, 122 insertions(+), 122 deletions(-) diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index 1ad28740e5c..66e78373bdd 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -22,16 +22,16 @@
    {%- endif -%} - {%- if page.ha_qa_scale -%} + {%- if page.ha_quality_scale -%}
    Quality Scale: - {%- if page.ha_qa_scale == 'platinum' -%} + {%- if page.ha_quality_scale == 'platinum' -%} 🏆 (platinum) - {%- elsif page.ha_qa_scale == 'gold' -%} + {%- elsif page.ha_quality_scale == 'gold' -%} 🥇 (gold) - {%- elsif page.ha_qa_scale == 'silver' -%} + {%- elsif page.ha_quality_scale == 'silver' -%} 🥈 (silver) - {%- elsif page.ha_qa_scale == 'internal' -%} + {%- elsif page.ha_quality_scale == 'internal' -%} 🏠 (internal) {%- endif -%} diff --git a/source/_integrations/alarm_control_panel.markdown b/source/_integrations/alarm_control_panel.markdown index 482d1a062e1..19430f332f8 100644 --- a/source/_integrations/alarm_control_panel.markdown +++ b/source/_integrations/alarm_control_panel.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate Alarm Control Panels into Home Ass logo: home-assistant.png ha_category: - Alarm -ha_qa_scale: internal ha_release: 0.7.3 +ha_quality_scale: internal --- Home Assistant can give you an interface with is similar to a classic alarm system. diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index 10b7db5cf38..751584342d8 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.38 -ha_qa_scale: internal +ha_quality_scale: internal --- The `alert` integration is designed to notify you when problematic issues arise. diff --git a/source/_integrations/api.markdown b/source/_integrations/api.markdown index 1898fb65993..0ce98884949 100644 --- a/source/_integrations/api.markdown +++ b/source/_integrations/api.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup the RESTful API within Home Assistant. logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The `api` integration exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` integration](/integrations/http/). diff --git a/source/_integrations/auth.markdown b/source/_integrations/auth.markdown index 0094c65f189..4a3fd31df96 100644 --- a/source/_integrations/auth.markdown +++ b/source/_integrations/auth.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Other ha_release: 0.73 -ha_qa_scale: internal +ha_quality_scale: internal --- This integration creates the endpoints for the [authentication system](/docs/authentication/) that is built into Home Assistant. diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index cf7cece5126..7edf31adca3 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup automation within Home Assistant. logo: home-assistant.png ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Please see the [docs section](/docs/automation/) for in-depth diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown index 37de5284bf5..54868a6d3b6 100644 --- a/source/_integrations/bayesian.markdown +++ b/source/_integrations/bayesian.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index b292f729662..638bfb7cae6 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -4,8 +4,8 @@ description: Instructions on how-to setup binary sensors with Home Assistant. logo: home-assistant.png ha_category: - Binary Sensor -ha_qa_scale: internal ha_release: 0.9 +ha_quality_scale: internal --- Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown index b8fa12ad0bb..99e551adeb4 100644 --- a/source/_integrations/binary_sensor.template.markdown +++ b/source/_integrations/binary_sensor.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.12 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform supports binary sensors which get their values from diff --git a/source/_integrations/browser.markdown b/source/_integrations/browser.markdown index c467ffae5e5..f0267f6fb30 100644 --- a/source/_integrations/browser.markdown +++ b/source/_integrations/browser.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup the browser integration with Home Assi logo: home-assistant.png ha_category: - Utility -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal --- The `browser` integration provides a service to open URLs in the default browser on the host machine. diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown index 0e7a42eb518..6e65fd21493 100644 --- a/source/_integrations/camera.markdown +++ b/source/_integrations/camera.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate cameras within Home Assistant. logo: home-assistant.png ha_category: - Camera -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The camera integration allows you to use IP cameras with Home Assistant. diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index 566c352819f..ad8f8452f41 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup climate control devices within Home As logo: home-assistant.png ha_category: - Climate -ha_qa_scale: internal ha_release: 0.19 +ha_quality_scale: internal --- The Climate integration allows you to control and monitor HVAC (heating, ventilating, and air conditioning) devices and thermostats. diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 63f80672463..c57f9c9d0ac 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Front End ha_release: 0.39 -ha_qa_scale: internal +ha_quality_scale: internal --- The `config` integration is designed to display panels in the frontend to configure and manage parts of Home Assistant. diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index 158df34cfcc..ba2b9af53fd 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate the configurator in your component logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal ---
    diff --git a/source/_integrations/conversation.markdown b/source/_integrations/conversation.markdown index d9d3b1e22a7..138dff4486e 100644 --- a/source/_integrations/conversation.markdown +++ b/source/_integrations/conversation.markdown @@ -4,8 +4,8 @@ description: Instructions on how to have conversations with your Home Assistant. logo: home-assistant.png ha_category: - Voice -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The conversation integration allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the `conversation/process` service with the transcribed text. diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index c5069fef7d2..d78fd4b7b0d 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal --- The `counter` integration allows one to count occurrences fired by automations. diff --git a/source/_integrations/cover.group.markdown b/source/_integrations/cover.group.markdown index 999daeee25b..43c7c4c455c 100644 --- a/source/_integrations/cover.group.markdown +++ b/source/_integrations/cover.group.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.66 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `group` platform can create a cover that combines several cover entities into one. diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index eb67d8140d7..4f44d989472 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate covers into Home Assistant. logo: home-assistant.png ha_category: - Cover -ha_qa_scale: internal ha_release: 0.27 +ha_quality_scale: internal --- Home Assistant can give you an interface to control covers such as rollershutters, blinds, and garage doors. diff --git a/source/_integrations/cover.template.markdown b/source/_integrations/cover.template.markdown index 81b2d8f5b78..94770e9a967 100644 --- a/source/_integrations/cover.template.markdown +++ b/source/_integrations/cover.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.48 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform can create covers that combine integrations and provides diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index 5f418f77804..d2e3a1c49ca 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -8,8 +8,8 @@ ha_category: - Switch ha_release: 0.59 ha_iot_class: Local Polling -ha_qa_scale: platinum ha_config_flow: true +ha_quality_scale: platinum --- The `daikin` integration integrates Daikin air conditioning systems into Home Assistant. diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 2c21efbc9f8..5164b927666 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -12,8 +12,8 @@ ha_category: - Switch ha_release: 0.61 ha_iot_class: Local Push -ha_qa_scale: platinum ha_config_flow: true +ha_quality_scale: platinum --- [deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index 208da4ceaa3..0cd29718c0e 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -4,8 +4,8 @@ description: Instructions on how to use the Platform demos with Home Assistant. logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The `demo` platform allows you to use integrations which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/) or `hass --demo-mode` but combined with your own real/functional platforms. diff --git a/source/_integrations/device_automation.markdown b/source/_integrations/device_automation.markdown index 802c02568ce..74b45ce493a 100644 --- a/source/_integrations/device_automation.markdown +++ b/source/_integrations/device_automation.markdown @@ -3,8 +3,8 @@ title: Device Automation logo: home-assistant.png ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Device Automations is a plugin for the automation integration to allow other integrations to provide device specific triggers, conditions and actions. diff --git a/source/_integrations/device_sun_light_trigger.markdown b/source/_integrations/device_sun_light_trigger.markdown index c15b4ea9582..13b830179bc 100644 --- a/source/_integrations/device_sun_light_trigger.markdown +++ b/source/_integrations/device_sun_light_trigger.markdown @@ -4,8 +4,8 @@ description: Instructions on how to automate your lights with Home Assistant. logo: home-assistant.png ha_category: - Automation -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal --- Home Assistant has a built-in integration called `device_sun_light_trigger` to help you automate your lights. The integration will: diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown index 4976193c9a6..b101c29adbc 100644 --- a/source/_integrations/device_tracker.markdown +++ b/source/_integrations/device_tracker.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup device tracking within Home Assistant. logo: home-assistant.png ha_category: - Presence Detection -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The device tracker allows you to track devices in Home Assistant. This can happen by querying your wireless router or by having applications push location info. diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index 257e73d991f..e0d83cc0efb 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup Home Assistant to discover new devices logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [uPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` integration can detect: diff --git a/source/_integrations/downloader.markdown b/source/_integrations/downloader.markdown index 5e3dda49dbe..3fa20c1162a 100644 --- a/source/_integrations/downloader.markdown +++ b/source/_integrations/downloader.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Downloading ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal --- The `downloader` integration provides a service to download files. It will raise an error and not continue to set itself up when the download directory does not exist. The directory needs to be writable for the user that is running Home Assistant. diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index 7a4d6e25f97..9f8635f9942 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -6,7 +6,7 @@ ha_category: - Hub ha_release: 0.27 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal ---
    diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown index ae43188f8e5..9b1bf790465 100644 --- a/source/_integrations/fan.markdown +++ b/source/_integrations/fan.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup Fan devices within Home Assistant. logo: home-assistant.png ha_category: - Fan -ha_qa_scale: internal ha_release: 0.27 +ha_quality_scale: internal --- The `fan` integration is built for the controlling of fan devices. diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown index 9f1cef8b046..5f44f08c756 100644 --- a/source/_integrations/fan.template.markdown +++ b/source/_integrations/fan.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.69 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform creates fans that combine integrations and provides the diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index 892b542f525..31c9e703a8e 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.65 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `filter` platform enables sensors that process the states of other entities. diff --git a/source/_integrations/flux.markdown b/source/_integrations/flux.markdown index 2ab6d73f1a6..4605a6ad82b 100644 --- a/source/_integrations/flux.markdown +++ b/source/_integrations/flux.markdown @@ -5,7 +5,7 @@ ha_category: - Automation ha_release: 0.21 logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `flux` switch platform will change the temperature of your lights similar to the way flux works on your computer, using circadian rhythm. They will be bright during the day, and gradually fade to a red/orange at night. The `flux` switch restores its last state after startup. diff --git a/source/_integrations/folder_watcher.markdown b/source/_integrations/folder_watcher.markdown index 8caae636910..c6637397c1c 100644 --- a/source/_integrations/folder_watcher.markdown +++ b/source/_integrations/folder_watcher.markdown @@ -6,7 +6,7 @@ ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.67 -ha_qa_scale: internal +ha_quality_scale: internal --- This integration adds [Watchdog](https://pythonhosted.org/watchdog/) file system monitoring, publishing events on the Home Assistant bus on the creation/deletion/modification of files within configured folders. The monitored `event_type` are: diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index 5b7f7020179..deede712de2 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -4,8 +4,8 @@ description: Offers a frontend to Home Assistant. logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- This offers the official frontend to control Home Assistant. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index ab932a469e3..5f411317736 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup groups within Home Assistant. logo: home-assistant.png ha_category: - Organization -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal --- Groups allow the user to combine multiple entities into one. diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index ba5fbe4fab7..f277e6af483 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - History ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal --- The `history` integration will track everything that is going on within Home diff --git a/source/_integrations/history_graph.markdown b/source/_integrations/history_graph.markdown index 4d1ffb4b014..c13728d92a3 100644 --- a/source/_integrations/history_graph.markdown +++ b/source/_integrations/history_graph.markdown @@ -5,7 +5,7 @@ ha_category: - History logo: home-assistant.png ha_release: 0.55 -ha_qa_scale: internal +ha_quality_scale: internal ---

    diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown index 159fa4d1c5a..0b6a2db934c 100644 --- a/source/_integrations/history_stats.markdown +++ b/source/_integrations/history_stats.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.39 -ha_qa_scale: internal +ha_quality_scale: internal --- The `history_stats` sensor platform provides quick statistics about another integration or platforms, using data from the [history](/integrations/history/). diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index d4bb1a8e5ad..6293167b7df 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -3,7 +3,7 @@ title: Home Assistant Core Integration description: Description of the homeassistant integration. logo: home-assistant.png ha_release: 0.0 -ha_qa_scale: internal +ha_quality_scale: internal --- The Home Assistant integration provides generic implementations like the generic `homeassistant.turn_on`. diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index 359bd8fb28e..e905b9013d8 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -8,7 +8,7 @@ ha_category: - Sensor ha_release: pre 0.7 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal --- The `http` integration serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings. diff --git a/source/_integrations/hue.markdown b/source/_integrations/hue.markdown index 3f90c84db61..d0c48268ae1 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -6,10 +6,10 @@ ha_category: - Hub - Light ha_iot_class: Local Polling -ha_qa_scale: platinum featured: true ha_release: '0.60' ha_config_flow: true +ha_quality_scale: platinum --- Philips Hue support is integrated into Home Assistant as a hub that can drive the light and sensor platforms. The preferred way to set up the Philips Hue platform is by enabling the [discovery component](/integrations/discovery/). diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index 2e0d7b25626..ff7faac63a7 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate the Input Boolean integration into logo: home-assistant.png ha_category: - Automation -ha_qa_scale: internal ha_release: 0.11 +ha_quality_scale: internal --- The `input_boolean` integration allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 3593150b197..5348cf2dd64 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.55 -ha_qa_scale: internal +ha_quality_scale: internal --- The `input_datetime` integration allows the user to define date and time values diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index e12b9673556..2dcf533fa96 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.55 -ha_qa_scale: internal +ha_quality_scale: internal --- The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index ac73fe4d0c9..2f6e4773bc3 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.13 -ha_qa_scale: internal +ha_quality_scale: internal --- The `input_select` integration allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index c3a7fb2568c..09c789b0e96 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal --- The `input_text` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. It can also be configured in password mode (obscured text). diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index 3186be5e2fb..ea2e7f2b55d 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -7,7 +7,7 @@ ha_category: ha_release: 0.87 ha_iot_class: Local Push logo: integral.png -ha_qa_scale: internal +ha_quality_scale: internal --- 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. The integration sensors is updated upon changes of the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown index dcab7d7027f..b5c39705146 100644 --- a/source/_integrations/intent_script.markdown +++ b/source/_integrations/intent_script.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Intent ha_release: '0.50' -ha_qa_scale: internal +ha_quality_scale: internal --- The `intent_script` integration allows users to configure actions and responses to intents. Intents can be fired by any integration that supports it. Examples are [Alexa](/integrations/alexa/) (Amazon Echo), [Dialogflow](/integrations/dialogflow/) (Google Assistant) and [Snips](/integrations/snips/). diff --git a/source/_integrations/light.group.markdown b/source/_integrations/light.group.markdown index 4b044f225ad..c4362cff627 100644 --- a/source/_integrations/light.group.markdown +++ b/source/_integrations/light.group.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.65 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The group light platform lets you combine multiple lights into one entity. All child lights of a light group can still be used as usual, but controlling the state of the grouped light will forward the command to each child light. diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index c8249fdcfea..64cce7036d9 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup your lights with Home Assistant. logo: home-assistant.png ha_category: - Light -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal --- This integration allows you to track and control various light bulbs. Read the integration documentation for your particular light hardware to learn how to enable it. diff --git a/source/_integrations/light.switch.markdown b/source/_integrations/light.switch.markdown index 8ddacb048a0..95ff6a8d4e2 100644 --- a/source/_integrations/light.switch.markdown +++ b/source/_integrations/light.switch.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.83 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The light switch platform lets you control an existing switch, allowing you diff --git a/source/_integrations/light.template.markdown b/source/_integrations/light.template.markdown index d125b568789..b8088833327 100644 --- a/source/_integrations/light.template.markdown +++ b/source/_integrations/light.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.46 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform creates lights that combine integrations and provides the diff --git a/source/_integrations/lock.markdown b/source/_integrations/lock.markdown index f7ee7803ef0..10aac50e55c 100644 --- a/source/_integrations/lock.markdown +++ b/source/_integrations/lock.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup your locks with Home Assistant. logo: home-assistant.png ha_category: - Lock -ha_qa_scale: internal ha_release: 0.9 +ha_quality_scale: internal --- Keeps track which locks are in your environment, their state and allows you to control them. diff --git a/source/_integrations/lock.template.markdown b/source/_integrations/lock.template.markdown index 74e67c1a2ee..204df904ffe 100644 --- a/source/_integrations/lock.template.markdown +++ b/source/_integrations/lock.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.81 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform creates locks that combines components. diff --git a/source/_integrations/logger.markdown b/source/_integrations/logger.markdown index 7f1f25bb48c..7e4e293e331 100644 --- a/source/_integrations/logger.markdown +++ b/source/_integrations/logger.markdown @@ -4,8 +4,8 @@ description: Instructions on how to enable the logger integration for Home Assis logo: home-assistant.png ha_category: - Utility -ha_qa_scale: internal ha_release: 0.8 +ha_quality_scale: internal --- The `logger` integration lets you define the level of logging activities in Home diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index 045e49a86b0..cdef44e2c51 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -7,8 +7,8 @@ ha_category: - Sensor ha_release: 0.82 ha_iot_class: Cloud Polling -ha_qa_scale: gold ha_config_flow: true +ha_quality_scale: gold --- The `luftdaten` integration will query the open data API of [luftdaten.info](https://luftdaten.info/) to monitor air quality and other weather data from a specific (self build) sensor station. diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown index 9aca24d0611..0029971f04f 100644 --- a/source/_integrations/manual.markdown +++ b/source/_integrations/manual.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Alarm ha_release: 0.7.6 -ha_qa_scale: internal +ha_quality_scale: internal --- The `manual` alarm control panel platform enables you to set manual alarms in Home Assistant. diff --git a/source/_integrations/map.markdown b/source/_integrations/map.markdown index b41422c7fed..98c8e62d986 100644 --- a/source/_integrations/map.markdown +++ b/source/_integrations/map.markdown @@ -4,8 +4,8 @@ description: Offers a map to show tracked devices. logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.56 +ha_quality_scale: internal --- This offers a map on the frontend to display the location of tracked devices. To set up tracked devices, look at the [device tracker](/integrations/device_tracker/) documentation. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown index adfb66cb403..7a013b889e9 100644 --- a/source/_integrations/media_extractor.markdown +++ b/source/_integrations/media_extractor.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Media Player ha_release: 0.49 -ha_qa_scale: internal +ha_quality_scale: internal --- The `media_extractor` integration gets a stream URL and sends it to a media player entity. This integration can extract entity specific streams if configured accordingly. diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown index 2c3f0333654..2a4d30f80a5 100644 --- a/source/_integrations/media_player.markdown +++ b/source/_integrations/media_player.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup your media players with Home Assistant logo: home-assistant.png ha_category: - Media Player -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Interacts with media players on your network. diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 7bb1ddbee3a..0852f08d381 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.31 -ha_qa_scale: internal +ha_quality_scale: internal --- 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](/integrations/statistics) first. diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index 7521bee5f74..855e4c5b5c2 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -5,8 +5,8 @@ logo: home-assistant.png ha_category: - Other ha_release: 0.89 -ha_qa_scale: internal ha_config_flow: true +ha_quality_scale: internal --- The Mobile App integration allows Home Assistant mobile apps to easily integrate with Home Assistant. diff --git a/source/_integrations/mold_indicator.markdown b/source/_integrations/mold_indicator.markdown index 95facaae0cf..e3bb135a255 100644 --- a/source/_integrations/mold_indicator.markdown +++ b/source/_integrations/mold_indicator.markdown @@ -6,7 +6,7 @@ ha_category: - Environment ha_release: '0.20' ha_iot_class: Local Polling -ha_qa_scale: internal +ha_quality_scale: internal --- The Mold Indicator sensor integration 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 integration 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/_integrations/moon.markdown b/source/_integrations/moon.markdown index e68f0e58bdb..2953eee8d85 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -6,7 +6,7 @@ ha_category: - Environment ha_iot_class: Local Polling ha_release: 0.38 -ha_qa_scale: internal +ha_quality_scale: internal --- The `moon` integration tracks the phases of the moon. diff --git a/source/_integrations/notify.group.markdown b/source/_integrations/notify.group.markdown index 2efe7347988..818118ee923 100644 --- a/source/_integrations/notify.group.markdown +++ b/source/_integrations/notify.group.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Notifications ha_release: 0.26 -ha_qa_scale: internal +ha_quality_scale: internal --- The `group` notification platform allows you to combine multiple `notify` platforms into a single service. diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown index 20a272c4814..45357d0afd9 100644 --- a/source/_integrations/notify.markdown +++ b/source/_integrations/notify.markdown @@ -4,8 +4,8 @@ description: Instructions on how to add user notifications to Home Assistant. logo: home-assistant.png ha_category: - Notifications -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The `notify` integration makes it possible to send notifications to a wide variety of platforms. To use it you have to setup at least one notification target (notifier), check the [integrations list](/integrations/#notifications) for one that fits your use case. diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown index aea15cb67a3..70123cb48d4 100644 --- a/source/_integrations/onboarding.markdown +++ b/source/_integrations/onboarding.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Other ha_release: 0.73 -ha_qa_scale: internal +ha_quality_scale: internal --- This integration creates the endpoints for the onboarding that is built into Home Assistant. There are no configuration options for this integration directly. diff --git a/source/_integrations/otp.markdown b/source/_integrations/otp.markdown index 325db2fdc67..d4a3ec4d983 100644 --- a/source/_integrations/otp.markdown +++ b/source/_integrations/otp.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.49 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index 8ca5319fce6..5f839685351 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Front End ha_release: 0.26 -ha_qa_scale: internal +ha_quality_scale: internal --- The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/en/frontend_creating_custom_panels.html). diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index d4059fb39c1..7ef82fe5e34 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Front End ha_release: 0.25 -ha_qa_scale: internal +ha_quality_scale: internal --- The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server. diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index 657a7a02e93..d083d98a10f 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Other ha_release: 0.23 -ha_qa_scale: internal +ha_quality_scale: internal --- The `persistent_notification` integration can be used to show a notification on the frontend that has to be dismissed by the user. diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown index af973f5811d..7d792c2bfd7 100644 --- a/source/_integrations/person.markdown +++ b/source/_integrations/person.markdown @@ -4,8 +4,8 @@ description: Instructions on how to set up people tracking within Home Assistant logo: home-assistant.png ha_category: - Presence Detection -ha_qa_scale: internal ha_release: 0.88 +ha_quality_scale: internal --- The person integration allows connecting [device tracker](/integrations/device_tracker/) entities to one or more person entities. The state updates of a connected device tracker will set the state of the person. When multiple device trackers are used, the state of person will be determined in this order: diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index c0c1670b1ea..ccdbcf83e14 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -7,7 +7,7 @@ ha_category: - Binary Sensor - Presence Detection ha_release: 0.43 -ha_qa_scale: internal +ha_quality_scale: internal --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown index 38bcab6acde..c9243a18e79 100644 --- a/source/_integrations/plant.markdown +++ b/source/_integrations/plant.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Environment ha_release: 0.44 -ha_qa_scale: internal +ha_quality_scale: internal --- This`plant`component lets you merge moisture, conductivity, light intensity, temperature and battery level for a plant into a single UI element. It also supports setting minimum and maximum values for each measurement and will change its state to "problem" if it is not within those limits. diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown index 925345f090b..d63815b234a 100644 --- a/source/_integrations/point.markdown +++ b/source/_integrations/point.markdown @@ -10,7 +10,7 @@ ha_category: ha_release: 0.83 ha_config_flow: true ha_iot_class: Cloud Polling -ha_qa_scale: gold +ha_quality_scale: gold --- The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. diff --git a/source/_integrations/proximity.markdown b/source/_integrations/proximity.markdown index 117b79e42df..64c8bd3335e 100644 --- a/source/_integrations/proximity.markdown +++ b/source/_integrations/proximity.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.13 -ha_qa_scale: internal +ha_quality_scale: internal --- The `proximity` integration allows you to monitor the proximity of devices to a particular [zone](/integrations/zone/) and the direction of travel. The result is an entity created in Home Assistant which maintains the proximity data. diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index b3d2710ccb1..7f312483f38 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.47 -ha_qa_scale: internal +ha_quality_scale: internal --- This integration allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the `/python_scripts/` folder will be exposed as a service. The content is not cached so you can easily develop: edit file, save changes, call service. The scripts are run in a sandboxed environment. The following variables are available in the sandbox: diff --git a/source/_integrations/random.markdown b/source/_integrations/random.markdown index 616f0483815..1a2b31c2426 100644 --- a/source/_integrations/random.markdown +++ b/source/_integrations/random.markdown @@ -8,7 +8,7 @@ ha_category: - Binary Sensor ha_iot_class: Local Polling ha_release: 0.32 -ha_qa_scale: internal +ha_quality_scale: internal --- The `random` integration simply creates random values or state. This can be useful if you want to test automation rules or run an interactive demo. It generates a new state every time it is polled. diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown index c85426cbb34..7002f58b278 100644 --- a/source/_integrations/recorder.markdown +++ b/source/_integrations/recorder.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - History ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal --- The `recorder` integration is responsible for storing details in a database, which then are handled by the [`history` integration](/integrations/history/). diff --git a/source/_integrations/rss_feed_template.markdown b/source/_integrations/rss_feed_template.markdown index 2ef9618ba58..8698d709526 100644 --- a/source/_integrations/rss_feed_template.markdown +++ b/source/_integrations/rss_feed_template.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Front End ha_release: 0.44 -ha_qa_scale: internal +ha_quality_scale: internal --- The `rss_feed_template` integration can export any information from Home Assistant as a static RSS feed. This can be used to display that information on many types of devices using an RSS reader. While native apps for Home Assistant are not widely available, native RSS readers exist for almost any platform. diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 5ac967cae21..7ee5009b04f 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup scenes within Home Assistant. logo: home-assistant.png ha_category: - Organization -ha_qa_scale: internal ha_release: 0.15 +ha_quality_scale: internal --- You can create scenes that capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red. diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown index a8883dec13d..082bca9f227 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup scripts within Home Assistant. logo: home-assistant.png ha_category: - Automation -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- The `script` integration allows users to specify a sequence of actions to be executed by Home Assistant. These are run when you turn the script on. The script integration will create an entity for each script and allow them to be controlled via services. diff --git a/source/_integrations/season.markdown b/source/_integrations/season.markdown index 63b4cbc1863..1a87f68e96d 100644 --- a/source/_integrations/season.markdown +++ b/source/_integrations/season.markdown @@ -6,7 +6,7 @@ ha_category: logo: home-assistant.png ha_iot_class: Local Polling ha_release: 0.53 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/sensor.markdown b/source/_integrations/sensor.markdown index 1981c257db7..8a85255f098 100644 --- a/source/_integrations/sensor.markdown +++ b/source/_integrations/sensor.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup your sensors with Home Assistant. logo: home-assistant.png ha_category: - Sensor -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Sensors are gathering information about states and conditions. diff --git a/source/_integrations/sensor.websocket_api.markdown b/source/_integrations/sensor.websocket_api.markdown index 5dcea994cd8..987d1717dd8 100644 --- a/source/_integrations/sensor.websocket_api.markdown +++ b/source/_integrations/sensor.websocket_api.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_release: 0.33 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal --- The `websocket_api` sensor platform shows how many clients are connected to the stream API. diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index 73d52d6b805..ca449b39155 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -4,8 +4,8 @@ description: Instructions on how to integrate Shell commands into Home Assistant ha_category: - Automation logo: home-assistant.png -ha_qa_scale: internal ha_release: 0.7.6 +ha_quality_scale: internal --- This integration can expose regular shell commands as services. Services can be called from a [script] or in [automation]. diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index d3c8b380209..49dade52144 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Intent ha_release: '0.50' -ha_qa_scale: internal +ha_quality_scale: internal --- The `shopping_list` integration allows you to keep track of shopping list items. Includes the ability to add items via your voice using the sentence "Add eggs to my shopping list". diff --git a/source/_integrations/simulated.markdown b/source/_integrations/simulated.markdown index 7e8d9e876fb..79bc4a947b9 100644 --- a/source/_integrations/simulated.markdown +++ b/source/_integrations/simulated.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.65 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index 6127235420c..f0d2103bb53 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: '0.30' -ha_qa_scale: internal +ha_quality_scale: internal --- 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_value`, `max_value`, `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/_integrations/stream.markdown b/source/_integrations/stream.markdown index d0456ead490..321bb160c31 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -6,7 +6,7 @@ ha_category: - Other ha_release: '0.90' ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal --- The `stream` integration provides a way to proxy live streams through Home Assistant. The integration currently only supports proxying H.264 source streams to the HLS format and requires at least FFmpeg >= 3.2. diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index e3d65cd6359..6896382fcf9 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -4,8 +4,8 @@ description: Instructions on how to track the sun within Home Assistant. logo: home-assistant.png ha_category: - Environment -ha_qa_scale: internal ha_release: pre 0.7 +ha_quality_scale: internal --- The sun integration will use your current location to track if the sun is above or diff --git a/source/_integrations/switch.markdown b/source/_integrations/switch.markdown index b742c032cef..778934ddbdd 100644 --- a/source/_integrations/switch.markdown +++ b/source/_integrations/switch.markdown @@ -4,8 +4,8 @@ description: Instructions on how to set up your switches with Home Assistant. logo: home-assistant.png ha_category: - Switch -ha_qa_scale: internal ha_release: 0.7 +ha_quality_scale: internal --- Keeps track which switches are in your environment, their state and allows you to control them. diff --git a/source/_integrations/switch.template.markdown b/source/_integrations/switch.template.markdown index 228f161564b..86b42952907 100644 --- a/source/_integrations/switch.template.markdown +++ b/source/_integrations/switch.template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.13 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform creates switches that combines components. diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index 43ca19a36f3..f19aa2d9965 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -4,8 +4,8 @@ description: System Health integration will report system info and allow to run logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.87 +ha_quality_scale: internal --- The System Health integration provides an API to offer information on the system and its components. It also allows to run diagnostic tools to diagnose problems. diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown index ddb08e3d1a4..8ca64765809 100644 --- a/source/_integrations/system_log.markdown +++ b/source/_integrations/system_log.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Other ha_release: 0.58 -ha_qa_scale: internal +ha_quality_scale: internal --- The `system_log` integration stores information about all logged errors and warnings in Home Assistant. All collected information is accessible directly in the frontend, just navigate to the `Info` section under `Developer Tools`. In order to not overload Home Assistant with log data, only the 50 last errors and warnings will be stored. Older entries are automatically discarded from the log. It is possible to change the number of stored log entries using the parameter `max_entries`. diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index 1277776cc7f..799f24724dc 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -11,8 +11,8 @@ ha_category: - Switch ha_release: 0.11 ha_config_flow: true -ha_qa_scale: gold ha_iot_class: Cloud Polling +ha_quality_scale: gold --- The `tellduslive` integration let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 8fd5495a3be..4b30a28cac1 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.12 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform supports sensors which get their values from other entities. diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 694f7db327a..5f43d99e05e 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.34 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index 080d12f05e7..57347258916 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -7,8 +7,8 @@ ha_category: - Sensor - Notifications ha_release: 0.8 -ha_qa_scale: silver ha_iot_class: Cloud Polling +ha_quality_scale: silver --- The `tibber` integration provides a sensor with the current electricity price if you are a [Tibber](https://tibber.com/) customer. diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 75ab275f4a3..82c6bde0729 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -6,7 +6,7 @@ ha_category: - Calendar ha_iot_class: Local Push ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal --- The time and date (`time_date`) sensor platform adds one or more sensors to your Home Assistant state machine. diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index bc32f6ccf98..82cb21c4c39 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Automation ha_release: 0.57 -ha_qa_scale: internal +ha_quality_scale: internal --- The `timer` integration aims to simplify automations based on (dynamic) durations. diff --git a/source/_integrations/tod.markdown b/source/_integrations/tod.markdown index b2594dffd7d..50ae48c4260 100644 --- a/source/_integrations/tod.markdown +++ b/source/_integrations/tod.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.89 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/trend.markdown b/source/_integrations/trend.markdown index 928ce444428..90f78990765 100644 --- a/source/_integrations/trend.markdown +++ b/source/_integrations/trend.markdown @@ -6,7 +6,7 @@ ha_category: logo: home-assistant.png ha_release: 0.28 ha_iot_class: Local Push -ha_qa_scale: internal +ha_quality_scale: internal --- The `trend` platform allows you to create sensors which show the trend of diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 36aef73ca19..1bd67c8b596 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -8,8 +8,8 @@ ha_category: - Switch ha_release: 0.81 ha_iot_class: Local Polling -ha_qa_scale: platinum ha_config_flow: true +ha_quality_scale: platinum --- [UniFi](https://unifi-sdn.ubnt.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown index 477fa801018..5bc4449896b 100644 --- a/source/_integrations/universal.markdown +++ b/source/_integrations/universal.markdown @@ -4,8 +4,8 @@ description: Instructions on how to create a universal media player in Home Assi logo: home-assistant.png ha_category: - Media Player -ha_qa_scale: internal ha_release: 0.11 +ha_quality_scale: internal --- 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/_integrations/updater.markdown b/source/_integrations/updater.markdown index b7952e88d61..0f2abf27bf9 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -4,8 +4,8 @@ description: Detecting when Home Assistant updates are available. logo: home-assistant.png ha_category: - Binary Sensor -ha_qa_scale: internal ha_release: 0.8 +ha_quality_scale: internal --- The `updater` binary sensor will check daily for new releases. The state will be "on" when an update is available. Otherwise, the state will be "off". The newer version, as well as the link to the release notes, are attributes of the updater. As [Hass.io](/hassio/) has its own schedule for release it doesn't make sense to use this binary sensor on Hass.io. diff --git a/source/_integrations/uptime.markdown b/source/_integrations/uptime.markdown index f99a91b9afe..cb958e0d7da 100644 --- a/source/_integrations/uptime.markdown +++ b/source/_integrations/uptime.markdown @@ -6,7 +6,7 @@ ha_category: ha_iot_class: Local Push logo: home-assistant.png ha_release: 0.56 -ha_qa_scale: internal +ha_quality_scale: internal --- The `uptime` sensor platform displays the time since the last Home Assistant restart. diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 3b9c723bb5a..82ac310b35e 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -6,7 +6,7 @@ ha_category: ha_release: 0.87 ha_iot_class: Local Push logo: energy_meter.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `utility meter` integration provides functionality to track consumptions of various utilities (e.g., energy, gas, water, heating). diff --git a/source/_integrations/vacuum.template.markdown b/source/_integrations/vacuum.template.markdown index 129114c287a..5fe3ebb8ea4 100644 --- a/source/_integrations/vacuum.template.markdown +++ b/source/_integrations/vacuum.template.markdown @@ -5,7 +5,7 @@ ha_category: Vacuum ha_release: 0.96 ha_iot_class: Local Push logo: home-assistant.png -ha_qa_scale: internal +ha_quality_scale: internal --- The `template` platform creates vacuums that combine integrations and provides the diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 39d59f1b62a..2118d04aebd 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -6,7 +6,7 @@ ha_category: ha_iot_class: Local Push logo: home-assistant.png ha_release: 0.52 -ha_qa_scale: internal +ha_quality_scale: internal --- The `version` sensor platform that can display the current Home Assistant versions. diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 3e127d89a97..e2377040782 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup your Weather platforms with Home Assis logo: home-assistant.png ha_category: - Weather -ha_qa_scale: internal ha_release: 0.32 +ha_quality_scale: internal --- The `weather` platforms gather meteorological information from web services and display the conditions and other details about the weather at the given location. Read the integration documentation for your particular weather provider to learn how to set it up. diff --git a/source/_integrations/weblink.markdown b/source/_integrations/weblink.markdown index 7ffc217f313..adca15c318b 100644 --- a/source/_integrations/weblink.markdown +++ b/source/_integrations/weblink.markdown @@ -5,7 +5,7 @@ logo: home-assistant.png ha_category: - Front End ha_release: 0.13 -ha_qa_scale: internal +ha_quality_scale: internal --- The `weblink` integration allows you to display links in the Home Assistant frontend. diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index c04a6b4d069..bef6b4c5c83 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -4,8 +4,8 @@ description: Instructions on how to setup the WebSocket API within Home Assistan logo: home-assistant.png ha_category: - Other -ha_qa_scale: internal ha_release: 0.34 +ha_quality_scale: internal --- The `websocket_api` integration set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` component](/integrations/http/). diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index a6ee392e0d4..c11fad8be9f 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -8,8 +8,8 @@ ha_category: - Switch ha_release: 0.102 ha_iot_class: Local Polling -ha_qa_scale: platinum ha_config_flow: true +ha_quality_scale: platinum --- [WLED](https://github.com/Aircoookie/WLED) is a fast and feature-rich diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown index c8e5ac7055e..6c9a095667b 100644 --- a/source/_integrations/workday.markdown +++ b/source/_integrations/workday.markdown @@ -6,7 +6,7 @@ ha_category: - Utility ha_iot_class: Local Polling ha_release: 0.41 -ha_qa_scale: internal +ha_quality_scale: internal --- 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/_integrations/worldclock.markdown b/source/_integrations/worldclock.markdown index c4cc3913cf9..0d35b44dbe4 100644 --- a/source/_integrations/worldclock.markdown +++ b/source/_integrations/worldclock.markdown @@ -6,7 +6,7 @@ ha_category: - Calendar ha_iot_class: Local Push ha_release: pre 0.7 -ha_qa_scale: internal +ha_quality_scale: internal --- The `worldclock` sensor platform simply displays the current time in a different time zone. diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index 4da0155329d..0ccf6e6bc65 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -3,9 +3,9 @@ title: Zero-configuration networking (zeroconf) description: Exposes Home Assistant using the Zeroconf protocol. ha_category: - Network -ha_qa_scale: internal ha_release: 0.18 logo: home-assistant.png +ha_quality_scale: internal --- The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the config panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index dbb87906552..dc85f702e5d 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -4,9 +4,9 @@ description: Instructions on how to set up zones within Home Assistant. logo: home-assistant.png ha_category: - Organization -ha_qa_scale: internal ha_release: 0.69 ha_config_flow: true +ha_quality_scale: internal --- Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/getting-started/automation-trigger/#zone-trigger) or [condition](/getting-started/automation-condition/#zone-condition) inside automation setups. From 2311a9fed633ee79f21bf1add609e9721558d0ba Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 8 Jan 2020 13:25:21 +0100 Subject: [PATCH 233/236] Initial sync codeowners with codebase integration manifests (#11673) --- CODEOWNERS | 376 ++++++++++++++++++ source/_integrations/abode.markdown | 2 + source/_integrations/adguard.markdown | 2 + source/_integrations/airly.markdown | 2 + source/_integrations/airvisual.markdown | 2 + source/_integrations/alexa.markdown | 3 + source/_integrations/almond.markdown | 3 + source/_integrations/alpha_vantage.markdown | 2 + source/_integrations/amazon_polly.markdown | 2 + source/_integrations/ambiclimate.markdown | 2 + source/_integrations/ambient_station.markdown | 2 + source/_integrations/androidtv.markdown | 2 + source/_integrations/apache_kafka.markdown | 2 + source/_integrations/api.markdown | 2 + source/_integrations/apprise.markdown | 2 + source/_integrations/aprs.markdown | 2 + source/_integrations/arcam_fmj.markdown | 2 + source/_integrations/arduino.markdown | 2 + source/_integrations/arest.markdown | 2 + source/_integrations/asuswrt.markdown | 2 + source/_integrations/aten_pe.markdown | 2 + source/_integrations/atome.markdown | 2 + .../aurora_abb_powerone.markdown | 2 + source/_integrations/auth.markdown | 2 + source/_integrations/automatic.markdown | 2 + source/_integrations/automation.markdown | 2 + source/_integrations/avea.markdown | 2 + source/_integrations/awair.markdown | 2 + source/_integrations/aws.markdown | 3 + source/_integrations/axis.markdown | 2 + source/_integrations/azure_event_hub.markdown | 2 + .../_integrations/azure_service_bus.markdown | 2 + source/_integrations/beewi_smartclim.markdown | 2 + source/_integrations/bitcoin.markdown | 2 + source/_integrations/bizkaibus.markdown | 2 + source/_integrations/blink.markdown | 2 + .../bmw_connected_drive.markdown | 2 + source/_integrations/braviatv.markdown | 2 + source/_integrations/broadlink.markdown | 3 + source/_integrations/brunt.markdown | 2 + source/_integrations/bt_smarthub.markdown | 2 + source/_integrations/buienradar.markdown | 3 + source/_integrations/cert_expiry.markdown | 3 + source/_integrations/cisco_ios.markdown | 2 + .../cisco_mobility_express.markdown | 2 + .../_integrations/cisco_webex_teams.markdown | 2 + source/_integrations/ciscospark.markdown | 2 + source/_integrations/cloud.markdown | 2 + source/_integrations/cloudflare.markdown | 2 + source/_integrations/comfoconnect.markdown | 2 + source/_integrations/config.markdown | 2 + source/_integrations/configurator.markdown | 2 + source/_integrations/conversation.markdown | 2 + source/_integrations/coolmaster.markdown | 2 + source/_integrations/counter.markdown | 2 + source/_integrations/cover.markdown | 2 + source/_integrations/cpuspeed.markdown | 2 + source/_integrations/cups.markdown | 2 + source/_integrations/daikin.markdown | 3 + source/_integrations/darksky.markdown | 2 + source/_integrations/deconz.markdown | 2 + source/_integrations/delijn.markdown | 2 + source/_integrations/demo.markdown | 2 + .../_integrations/device_automation.markdown | 2 + source/_integrations/digital_ocean.markdown | 2 + source/_integrations/discogs.markdown | 2 + source/_integrations/doorbird.markdown | 2 + source/_integrations/dsmr_reader.markdown | 2 + source/_integrations/dweet.markdown | 2 + source/_integrations/ecobee.markdown | 2 + source/_integrations/ecovacs.markdown | 2 + source/_integrations/egardia.markdown | 2 + source/_integrations/eight_sleep.markdown | 2 + source/_integrations/elv.markdown | 2 + source/_integrations/emby.markdown | 2 + source/_integrations/emulated_hue.markdown | 2 + source/_integrations/enigma2.markdown | 2 + source/_integrations/enocean.markdown | 2 + .../entur_public_transport.markdown | 2 + .../_integrations/environment_canada.markdown | 2 + source/_integrations/ephember.markdown | 2 + source/_integrations/epsonworkforce.markdown | 2 + source/_integrations/eq3btsmart.markdown | 2 + source/_integrations/esphome.markdown | 2 + source/_integrations/essent.markdown | 2 + source/_integrations/evohome.markdown | 2 + source/_integrations/fastdotcom.markdown | 2 + source/_integrations/file.markdown | 2 + source/_integrations/filter.markdown | 2 + source/_integrations/fitbit.markdown | 2 + source/_integrations/fixer.markdown | 2 + source/_integrations/flock.markdown | 2 + source/_integrations/flume.markdown | 2 + source/_integrations/flunearyou.markdown | 2 + source/_integrations/fortigate.markdown | 2 + source/_integrations/fortios.markdown | 2 + source/_integrations/foscam.markdown | 2 + source/_integrations/foursquare.markdown | 2 + source/_integrations/freebox.markdown | 2 + source/_integrations/fronius.markdown | 2 + source/_integrations/frontend.markdown | 2 + source/_integrations/gearbest.markdown | 2 + source/_integrations/geniushub.markdown | 2 + source/_integrations/geo_rss_events.markdown | 2 + source/_integrations/geonetnz_quakes.markdown | 2 + .../_integrations/geonetnz_volcano.markdown | 2 + source/_integrations/gitter.markdown | 2 + source/_integrations/glances.markdown | 3 + source/_integrations/gntp.markdown | 2 + .../_integrations/google_assistant.markdown | 2 + source/_integrations/google_cloud.markdown | 2 + .../_integrations/google_translate.markdown | 2 + .../_integrations/google_travel_time.markdown | 2 + source/_integrations/gpsd.markdown | 2 + source/_integrations/group.markdown | 2 + source/_integrations/growatt_server.markdown | 2 + source/_integrations/gtfs.markdown | 2 + source/_integrations/harmony.markdown | 2 + source/_integrations/heatmiser.markdown | 2 + source/_integrations/heos.markdown | 2 + .../_integrations/here_travel_time.markdown | 2 + source/_integrations/hikvision.markdown | 2 + source/_integrations/hikvisioncam.markdown | 2 + source/_integrations/hisense_aehw4a1.markdown | 2 + source/_integrations/history.markdown | 2 + source/_integrations/history_graph.markdown | 2 + source/_integrations/hive.markdown | 3 + source/_integrations/homeassistant.markdown | 2 + .../_integrations/homekit_controller.markdown | 2 + source/_integrations/homematic.markdown | 3 + .../_integrations/homematicip_cloud.markdown | 2 + source/_integrations/honeywell.markdown | 2 + source/_integrations/html5.markdown | 2 + source/_integrations/http.markdown | 2 + source/_integrations/huawei_lte.markdown | 2 + source/_integrations/huawei_router.markdown | 2 + source/_integrations/hue.markdown | 2 + source/_integrations/iaqualink.markdown | 2 + source/_integrations/ign_sismologia.markdown | 2 + source/_integrations/incomfort.markdown | 2 + source/_integrations/influxdb.markdown | 2 + source/_integrations/input_boolean.markdown | 2 + source/_integrations/input_datetime.markdown | 2 + source/_integrations/input_number.markdown | 2 + source/_integrations/input_select.markdown | 2 + source/_integrations/input_text.markdown | 2 + source/_integrations/integration.markdown | 2 + source/_integrations/ios.markdown | 2 + source/_integrations/iperf3.markdown | 2 + source/_integrations/ipma.markdown | 2 + source/_integrations/iqvia.markdown | 2 + .../irish_rail_transport.markdown | 2 + source/_integrations/izone.markdown | 2 + source/_integrations/jewish_calendar.markdown | 2 + source/_integrations/juicenet.markdown | 2 + source/_integrations/kaiterra.markdown | 2 + source/_integrations/keba.markdown | 2 + source/_integrations/keenetic_ndms2.markdown | 2 + source/_integrations/keyboard_remote.markdown | 2 + source/_integrations/knx.markdown | 2 + source/_integrations/kodi.markdown | 2 + source/_integrations/konnected.markdown | 2 + source/_integrations/lametric.markdown | 2 + source/_integrations/launch_library.markdown | 2 + source/_integrations/lcn.markdown | 2 + source/_integrations/life360.markdown | 2 + source/_integrations/linky.markdown | 2 + source/_integrations/linux_battery.markdown | 2 + source/_integrations/liveboxplaytv.markdown | 2 + source/_integrations/logger.markdown | 2 + source/_integrations/logi_circle.markdown | 2 + source/_integrations/luci.markdown | 3 + source/_integrations/luftdaten.markdown | 2 + source/_integrations/lupusec.markdown | 2 + source/_integrations/lutron.markdown | 2 + source/_integrations/mastodon.markdown | 2 + source/_integrations/matrix.markdown | 2 + source/_integrations/mcp23017.markdown | 2 + source/_integrations/mediaroom.markdown | 2 + source/_integrations/melissa.markdown | 2 + source/_integrations/met.markdown | 2 + source/_integrations/meteo_france.markdown | 3 + source/_integrations/meteoalarm.markdown | 2 + source/_integrations/miflora.markdown | 3 + source/_integrations/mill.markdown | 2 + source/_integrations/min_max.markdown | 2 + source/_integrations/minio.markdown | 2 + source/_integrations/mobile_app.markdown | 2 + source/_integrations/modbus.markdown | 2 + source/_integrations/monoprice.markdown | 2 + source/_integrations/moon.markdown | 2 + source/_integrations/mpd.markdown | 2 + source/_integrations/mqtt.markdown | 2 + source/_integrations/msteams.markdown | 2 + source/_integrations/mysensors.markdown | 2 + source/_integrations/mystrom.markdown | 2 + source/_integrations/neato.markdown | 3 + source/_integrations/nello.markdown | 2 + source/_integrations/ness_alarm.markdown | 2 + source/_integrations/nest.markdown | 2 + source/_integrations/netdata.markdown | 2 + source/_integrations/nextbus.markdown | 2 + source/_integrations/nilu.markdown | 2 + source/_integrations/nissan_leaf.markdown | 2 + source/_integrations/nmbs.markdown | 2 + source/_integrations/no_ip.markdown | 2 + source/_integrations/notify.markdown | 2 + source/_integrations/notion.markdown | 2 + .../_integrations/nsw_fuel_station.markdown | 2 + .../nsw_rural_fire_service_feed.markdown | 2 + source/_integrations/nuki.markdown | 2 + source/_integrations/nws.markdown | 2 + source/_integrations/nzbget.markdown | 2 + source/_integrations/obihai.markdown | 2 + source/_integrations/ohmconnect.markdown | 2 + source/_integrations/ombi.markdown | 2 + source/_integrations/onboarding.markdown | 2 + source/_integrations/opentherm_gw.markdown | 2 + source/_integrations/openuv.markdown | 2 + source/_integrations/openweathermap.markdown | 2 + source/_integrations/orangepi_gpio.markdown | 2 + source/_integrations/oru.markdown | 2 + source/_integrations/owlet.markdown | 2 + source/_integrations/panel_custom.markdown | 2 + source/_integrations/panel_iframe.markdown | 2 + source/_integrations/pcal9535a.markdown | 2 + .../persistent_notification.markdown | 2 + source/_integrations/philips_js.markdown | 2 + source/_integrations/pi_hole.markdown | 3 + source/_integrations/plaato.markdown | 2 + source/_integrations/plant.markdown | 2 + source/_integrations/plex.markdown | 2 + source/_integrations/plugwise.markdown | 4 + source/_integrations/point.markdown | 2 + source/_integrations/proxmoxve.markdown | 2 + source/_integrations/ps4.markdown | 2 + source/_integrations/ptvsd.markdown | 2 + source/_integrations/push.markdown | 2 + source/_integrations/pvoutput.markdown | 2 + source/_integrations/qld_bushfire.markdown | 2 + source/_integrations/qnap.markdown | 2 + source/_integrations/quantum_gateway.markdown | 2 + source/_integrations/qwikswitch.markdown | 2 + source/_integrations/rainbird.markdown | 2 + source/_integrations/raincloud.markdown | 2 + .../_integrations/rainforest_eagle.markdown | 2 + source/_integrations/rainmachine.markdown | 2 + source/_integrations/random.markdown | 2 + source/_integrations/repetier.markdown | 2 + source/_integrations/rfxtrx.markdown | 2 + source/_integrations/rmvtransport.markdown | 2 + source/_integrations/roomba.markdown | 2 + source/_integrations/saj.markdown | 2 + source/_integrations/samsungtv.markdown | 2 + source/_integrations/scene.markdown | 2 + source/_integrations/scrape.markdown | 2 + source/_integrations/script.markdown | 2 + source/_integrations/sense.markdown | 2 + source/_integrations/sensibo.markdown | 2 + source/_integrations/serial.markdown | 2 + source/_integrations/seventeentrack.markdown | 2 + source/_integrations/shell_command.markdown | 2 + source/_integrations/shiftr.markdown | 2 + source/_integrations/shodan.markdown | 2 + source/_integrations/simplisafe.markdown | 2 + source/_integrations/sinch.markdown | 2 + source/_integrations/slide.markdown | 2 + source/_integrations/sma.markdown | 2 + source/_integrations/smarthab.markdown | 2 + source/_integrations/smartthings.markdown | 2 + source/_integrations/smarty.markdown | 2 + source/_integrations/smtp.markdown | 2 + source/_integrations/solaredge_local.markdown | 3 + source/_integrations/solarlog.markdown | 2 + source/_integrations/solax.markdown | 2 + source/_integrations/soma.markdown | 2 + source/_integrations/somfy.markdown | 2 + source/_integrations/songpal.markdown | 2 + source/_integrations/spaceapi.markdown | 2 + source/_integrations/speedtestdotnet.markdown | 2 + source/_integrations/spider.markdown | 2 + source/_integrations/sql.markdown | 2 + source/_integrations/starline.markdown | 2 + source/_integrations/statistics.markdown | 2 + source/_integrations/stiebel_eltron.markdown | 2 + source/_integrations/stream.markdown | 2 + source/_integrations/stt.markdown | 2 + source/_integrations/suez_water.markdown | 2 + source/_integrations/sun.markdown | 2 + source/_integrations/supla.markdown | 2 + .../swiss_hydrological_data.markdown | 2 + .../swiss_public_transport.markdown | 2 + source/_integrations/switchbot.markdown | 2 + source/_integrations/switcher_kis.markdown | 2 + source/_integrations/switchmate.markdown | 2 + source/_integrations/syncthru.markdown | 2 + source/_integrations/synology_srm.markdown | 2 + source/_integrations/syslog.markdown | 2 + source/_integrations/tado.markdown | 2 + source/_integrations/tahoma.markdown | 2 + source/_integrations/tautulli.markdown | 2 + source/_integrations/tellduslive.markdown | 2 + source/_integrations/template.markdown | 2 + source/_integrations/tesla.markdown | 2 + source/_integrations/tfiac.markdown | 3 + .../_integrations/thethingsnetwork.markdown | 2 + source/_integrations/threshold.markdown | 2 + source/_integrations/tibber.markdown | 2 + source/_integrations/tile.markdown | 2 + source/_integrations/time_date.markdown | 2 + source/_integrations/todoist.markdown | 2 + source/_integrations/toon.markdown | 2 + source/_integrations/tplink.markdown | 2 + source/_integrations/traccar.markdown | 2 + source/_integrations/tradfri.markdown | 2 + .../_integrations/trafikverket_train.markdown | 2 + source/_integrations/transmission.markdown | 3 + source/_integrations/tts.markdown | 2 + source/_integrations/twentemilieu.markdown | 2 + source/_integrations/twilio_call.markdown | 2 + source/_integrations/twilio_sms.markdown | 2 + source/_integrations/unifi.markdown | 2 + source/_integrations/unifiled.markdown | 2 + source/_integrations/upc_connect.markdown | 2 + source/_integrations/upcloud.markdown | 2 + source/_integrations/updater.markdown | 2 + source/_integrations/upnp.markdown | 2 + source/_integrations/uptimerobot.markdown | 2 + .../usgs_earthquakes_feed.markdown | 2 + source/_integrations/utility_meter.markdown | 2 + source/_integrations/velbus.markdown | 2 + source/_integrations/velux.markdown | 2 + source/_integrations/versasense.markdown | 2 + source/_integrations/version.markdown | 2 + source/_integrations/vesync.markdown | 3 + source/_integrations/vicare.markdown | 2 + source/_integrations/vivotek.markdown | 2 + source/_integrations/vizio.markdown | 2 + source/_integrations/vlc_telnet.markdown | 2 + source/_integrations/waqi.markdown | 2 + source/_integrations/watson_tts.markdown | 2 + source/_integrations/weather.markdown | 2 + source/_integrations/weblink.markdown | 2 + source/_integrations/websocket_api.markdown | 2 + source/_integrations/wemo.markdown | 2 + source/_integrations/withings.markdown | 2 + source/_integrations/wled.markdown | 2 + source/_integrations/worldclock.markdown | 2 + source/_integrations/wwlln.markdown | 2 + source/_integrations/xbox_live.markdown | 2 + source/_integrations/xfinity.markdown | 2 + source/_integrations/xiaomi_aqara.markdown | 3 + source/_integrations/xiaomi_miio.markdown | 3 + source/_integrations/xiaomi_tv.markdown | 2 + source/_integrations/xmpp.markdown | 3 + .../_integrations/yamaha_musiccast.markdown | 2 + .../_integrations/yandex_transport.markdown | 2 + source/_integrations/yeelight.markdown | 3 + .../_integrations/yeelightsunflower.markdown | 2 + source/_integrations/yessssms.markdown | 2 + source/_integrations/yi.markdown | 2 + source/_integrations/yr.markdown | 2 + source/_integrations/zeroconf.markdown | 3 + source/_integrations/zha.markdown | 3 + source/_integrations/zone.markdown | 2 + source/_integrations/zoneminder.markdown | 2 + source/_integrations/zwave.markdown | 2 + 367 files changed, 1135 insertions(+) create mode 100644 CODEOWNERS diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 00000000000..8a2f70fb67a --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,376 @@ +# This file is generated. +# +# People marked here will be automatically requested for a review +# when the documentation that they own is touched. +# +# It is synced with the codebase, so if you own the integration, +# you will own the docs as well. +# https://github.com/blog/2392-introducing-code-owners + +# Pages +source/_integrations/abode.markdown @shred86 +source/_integrations/adguard.markdown @frenck +source/_integrations/airly.markdown @bieniu +source/_integrations/airvisual.markdown @bachya +source/_integrations/alexa.markdown @home-assistant/cloud @ochlocracy +source/_integrations/almond.markdown @gcampax @balloob +source/_integrations/alpha_vantage.markdown @fabaff +source/_integrations/amazon_polly.markdown @robbiet480 +source/_integrations/ambiclimate.markdown @danielhiversen +source/_integrations/ambient_station.markdown @bachya +source/_integrations/androidtv.markdown @JeffLIrion +source/_integrations/apache_kafka.markdown @bachya +source/_integrations/api.markdown @home-assistant/core +source/_integrations/apprise.markdown @caronc +source/_integrations/aprs.markdown @PhilRW +source/_integrations/arcam_fmj.markdown @elupus +source/_integrations/arduino.markdown @fabaff +source/_integrations/arest.markdown @fabaff +source/_integrations/asuswrt.markdown @kennedyshead +source/_integrations/aten_pe.markdown @mtdcr +source/_integrations/atome.markdown @baqs +source/_integrations/aurora_abb_powerone.markdown @davet2001 +source/_integrations/auth.markdown @home-assistant/core +source/_integrations/automatic.markdown @armills +source/_integrations/automation.markdown @home-assistant/core +source/_integrations/avea.markdown @pattyland +source/_integrations/awair.markdown @danielsjf +source/_integrations/aws.markdown @awarecan @robbiet480 +source/_integrations/axis.markdown @kane610 +source/_integrations/azure_event_hub.markdown @eavanvalkenburg +source/_integrations/azure_service_bus.markdown @hfurubotten +source/_integrations/beewi_smartclim.markdown @alemuro +source/_integrations/bitcoin.markdown @fabaff +source/_integrations/bizkaibus.markdown @UgaitzEtxebarria +source/_integrations/blink.markdown @fronzbot +source/_integrations/bmw_connected_drive.markdown @gerard33 +source/_integrations/braviatv.markdown @robbiet480 +source/_integrations/broadlink.markdown @danielhiversen @felipediel +source/_integrations/brunt.markdown @eavanvalkenburg +source/_integrations/bt_smarthub.markdown @jxwolstenholme +source/_integrations/buienradar.markdown @mjj4791 @ties +source/_integrations/cert_expiry.markdown @Cereal2nd @jjlawren +source/_integrations/cisco_ios.markdown @fbradyirl +source/_integrations/cisco_mobility_express.markdown @fbradyirl +source/_integrations/cisco_webex_teams.markdown @fbradyirl +source/_integrations/ciscospark.markdown @fbradyirl +source/_integrations/cloud.markdown @home-assistant/cloud +source/_integrations/cloudflare.markdown @ludeeus +source/_integrations/comfoconnect.markdown @michaelarnauts +source/_integrations/config.markdown @home-assistant/core +source/_integrations/configurator.markdown @home-assistant/core +source/_integrations/conversation.markdown @home-assistant/core +source/_integrations/coolmaster.markdown @OnFreund +source/_integrations/counter.markdown @fabaff +source/_integrations/cover.markdown @home-assistant/core +source/_integrations/cpuspeed.markdown @fabaff +source/_integrations/cups.markdown @fabaff +source/_integrations/daikin.markdown @fredrike @rofrantz +source/_integrations/darksky.markdown @fabaff +source/_integrations/deconz.markdown @kane610 +source/_integrations/delijn.markdown @bollewolle +source/_integrations/demo.markdown @home-assistant/core +source/_integrations/device_automation.markdown @home-assistant/core +source/_integrations/digital_ocean.markdown @fabaff +source/_integrations/discogs.markdown @thibmaek +source/_integrations/doorbird.markdown @oblogic7 +source/_integrations/dsmr_reader.markdown @depl0y +source/_integrations/dweet.markdown @fabaff +source/_integrations/ecobee.markdown @marthoc +source/_integrations/ecovacs.markdown @OverloadUT +source/_integrations/egardia.markdown @jeroenterheerdt +source/_integrations/eight_sleep.markdown @mezz64 +source/_integrations/elv.markdown @majuss +source/_integrations/emby.markdown @mezz64 +source/_integrations/emulated_hue.markdown @NobleKangaroo +source/_integrations/enigma2.markdown @fbradyirl +source/_integrations/enocean.markdown @bdurrer +source/_integrations/entur_public_transport.markdown @hfurubotten +source/_integrations/environment_canada.markdown @michaeldavie +source/_integrations/ephember.markdown @ttroy50 +source/_integrations/epsonworkforce.markdown @ThaStealth +source/_integrations/eq3btsmart.markdown @rytilahti +source/_integrations/esphome.markdown @OttoWinter +source/_integrations/essent.markdown @TheLastProject +source/_integrations/evohome.markdown @zxdavb +source/_integrations/fastdotcom.markdown @rohankapoorcom +source/_integrations/file.markdown @fabaff +source/_integrations/filter.markdown @dgomes +source/_integrations/fitbit.markdown @robbiet480 +source/_integrations/fixer.markdown @fabaff +source/_integrations/flock.markdown @fabaff +source/_integrations/flume.markdown @ChrisMandich +source/_integrations/flunearyou.markdown @bachya +source/_integrations/fortigate.markdown @kifeo +source/_integrations/fortios.markdown @kimfrellsen +source/_integrations/foscam.markdown @skgsergio +source/_integrations/foursquare.markdown @robbiet480 +source/_integrations/freebox.markdown @snoof85 +source/_integrations/fronius.markdown @nielstron +source/_integrations/frontend.markdown @home-assistant/frontend +source/_integrations/gearbest.markdown @HerrHofrat +source/_integrations/geniushub.markdown @zxdavb +source/_integrations/geo_rss_events.markdown @exxamalte +source/_integrations/geonetnz_quakes.markdown @exxamalte +source/_integrations/geonetnz_volcano.markdown @exxamalte +source/_integrations/gitter.markdown @fabaff +source/_integrations/glances.markdown @fabaff @engrbm87 +source/_integrations/gntp.markdown @robbiet480 +source/_integrations/google_assistant.markdown @home-assistant/cloud +source/_integrations/google_cloud.markdown @lufton +source/_integrations/google_translate.markdown @awarecan +source/_integrations/google_travel_time.markdown @robbiet480 +source/_integrations/gpsd.markdown @fabaff +source/_integrations/group.markdown @home-assistant/core +source/_integrations/growatt_server.markdown @indykoning +source/_integrations/gtfs.markdown @robbiet480 +source/_integrations/harmony.markdown @ehendrix23 +source/_integrations/heatmiser.markdown @andylockran +source/_integrations/heos.markdown @andrewsayre +source/_integrations/here_travel_time.markdown @eifinger +source/_integrations/hikvision.markdown @mezz64 +source/_integrations/hikvisioncam.markdown @fbradyirl +source/_integrations/hisense_aehw4a1.markdown @bannhead +source/_integrations/history.markdown @home-assistant/core +source/_integrations/history_graph.markdown @andrey-git +source/_integrations/hive.markdown @Rendili @KJonline +source/_integrations/homeassistant.markdown @home-assistant/core +source/_integrations/homekit_controller.markdown @Jc2k +source/_integrations/homematic.markdown @pvizeli @danielperna84 +source/_integrations/homematicip_cloud.markdown @SukramJ +source/_integrations/honeywell.markdown @zxdavb +source/_integrations/html5.markdown @robbiet480 +source/_integrations/http.markdown @home-assistant/core +source/_integrations/huawei_lte.markdown @scop +source/_integrations/huawei_router.markdown @abmantis +source/_integrations/hue.markdown @balloob +source/_integrations/iaqualink.markdown @flz +source/_integrations/ign_sismologia.markdown @exxamalte +source/_integrations/incomfort.markdown @zxdavb +source/_integrations/influxdb.markdown @fabaff +source/_integrations/input_boolean.markdown @home-assistant/core +source/_integrations/input_datetime.markdown @home-assistant/core +source/_integrations/input_number.markdown @home-assistant/core +source/_integrations/input_select.markdown @home-assistant/core +source/_integrations/input_text.markdown @home-assistant/core +source/_integrations/integration.markdown @dgomes +source/_integrations/ios.markdown @robbiet480 +source/_integrations/iperf3.markdown @rohankapoorcom +source/_integrations/ipma.markdown @dgomes +source/_integrations/iqvia.markdown @bachya +source/_integrations/irish_rail_transport.markdown @ttroy50 +source/_integrations/izone.markdown @Swamp-Ig +source/_integrations/jewish_calendar.markdown @tsvi +source/_integrations/juicenet.markdown @jesserockz +source/_integrations/kaiterra.markdown @Michsior14 +source/_integrations/keba.markdown @dannerph +source/_integrations/keenetic_ndms2.markdown @foxel +source/_integrations/keyboard_remote.markdown @bendavid +source/_integrations/knx.markdown @Julius2342 +source/_integrations/kodi.markdown @armills +source/_integrations/konnected.markdown @heythisisnate +source/_integrations/lametric.markdown @robbiet480 +source/_integrations/launch_library.markdown @ludeeus +source/_integrations/lcn.markdown @alengwenus +source/_integrations/life360.markdown @pnbruckner +source/_integrations/linky.markdown @Quentame +source/_integrations/linux_battery.markdown @fabaff +source/_integrations/liveboxplaytv.markdown @pschmitt +source/_integrations/logger.markdown @home-assistant/core +source/_integrations/logi_circle.markdown @evanjd +source/_integrations/luci.markdown @fbradyirl @mzdrale +source/_integrations/luftdaten.markdown @fabaff +source/_integrations/lupusec.markdown @majuss +source/_integrations/lutron.markdown @JonGilmore +source/_integrations/mastodon.markdown @fabaff +source/_integrations/matrix.markdown @tinloaf +source/_integrations/mcp23017.markdown @jardiamj +source/_integrations/mediaroom.markdown @dgomes +source/_integrations/melissa.markdown @kennedyshead +source/_integrations/met.markdown @danielhiversen +source/_integrations/meteo_france.markdown @victorcerutti @oncleben31 +source/_integrations/meteoalarm.markdown @rolfberkenbosch +source/_integrations/miflora.markdown @danielhiversen @ChristianKuehnel +source/_integrations/mill.markdown @danielhiversen +source/_integrations/min_max.markdown @fabaff +source/_integrations/minio.markdown @tkislan +source/_integrations/mobile_app.markdown @robbiet480 +source/_integrations/modbus.markdown @adamchengtkc +source/_integrations/monoprice.markdown @etsinko +source/_integrations/moon.markdown @fabaff +source/_integrations/mpd.markdown @fabaff +source/_integrations/mqtt.markdown @home-assistant/core +source/_integrations/msteams.markdown @peroyvind +source/_integrations/mysensors.markdown @MartinHjelmare +source/_integrations/mystrom.markdown @fabaff +source/_integrations/neato.markdown @dshokouhi @Santobert +source/_integrations/nello.markdown @pschmitt +source/_integrations/ness_alarm.markdown @nickw444 +source/_integrations/nest.markdown @awarecan +source/_integrations/netdata.markdown @fabaff +source/_integrations/nextbus.markdown @vividboarder +source/_integrations/nilu.markdown @hfurubotten +source/_integrations/nissan_leaf.markdown @filcole +source/_integrations/nmbs.markdown @thibmaek +source/_integrations/no_ip.markdown @fabaff +source/_integrations/notify.markdown @home-assistant/core +source/_integrations/notion.markdown @bachya +source/_integrations/nsw_fuel_station.markdown @nickw444 +source/_integrations/nsw_rural_fire_service_feed.markdown @exxamalte +source/_integrations/nuki.markdown @pvizeli +source/_integrations/nws.markdown @MatthewFlamm +source/_integrations/nzbget.markdown @chriscla +source/_integrations/obihai.markdown @dshokouhi +source/_integrations/ohmconnect.markdown @robbiet480 +source/_integrations/ombi.markdown @larssont +source/_integrations/onboarding.markdown @home-assistant/core +source/_integrations/opentherm_gw.markdown @mvn23 +source/_integrations/openuv.markdown @bachya +source/_integrations/openweathermap.markdown @fabaff +source/_integrations/orangepi_gpio.markdown @pascallj +source/_integrations/oru.markdown @bvlaicu +source/_integrations/owlet.markdown @oblogic7 +source/_integrations/panel_custom.markdown @home-assistant/frontend +source/_integrations/panel_iframe.markdown @home-assistant/frontend +source/_integrations/pcal9535a.markdown @Shulyaka +source/_integrations/persistent_notification.markdown @home-assistant/core +source/_integrations/philips_js.markdown @elupus +source/_integrations/pi_hole.markdown @fabaff @johnluetke +source/_integrations/plaato.markdown @JohNan +source/_integrations/plant.markdown @ChristianKuehnel +source/_integrations/plex.markdown @jjlawren +source/_integrations/plugwise.markdown @laetificat @CoMPaTech @bouwew +source/_integrations/point.markdown @fredrike +source/_integrations/proxmoxve.markdown @k4ds3 +source/_integrations/ps4.markdown @ktnrg45 +source/_integrations/ptvsd.markdown @swamp-ig +source/_integrations/push.markdown @dgomes +source/_integrations/pvoutput.markdown @fabaff +source/_integrations/qld_bushfire.markdown @exxamalte +source/_integrations/qnap.markdown @colinodell +source/_integrations/quantum_gateway.markdown @cisasteelersfan +source/_integrations/qwikswitch.markdown @kellerza +source/_integrations/rainbird.markdown @konikvranik +source/_integrations/raincloud.markdown @vanstinator +source/_integrations/rainforest_eagle.markdown @gtdiehl +source/_integrations/rainmachine.markdown @bachya +source/_integrations/random.markdown @fabaff +source/_integrations/repetier.markdown @MTrab +source/_integrations/rfxtrx.markdown @danielhiversen +source/_integrations/rmvtransport.markdown @cgtobi +source/_integrations/roomba.markdown @pschmitt +source/_integrations/saj.markdown @fredericvl +source/_integrations/samsungtv.markdown @escoand +source/_integrations/scene.markdown @home-assistant/core +source/_integrations/scrape.markdown @fabaff +source/_integrations/script.markdown @home-assistant/core +source/_integrations/sense.markdown @kbickar +source/_integrations/sensibo.markdown @andrey-git +source/_integrations/serial.markdown @fabaff +source/_integrations/seventeentrack.markdown @bachya +source/_integrations/shell_command.markdown @home-assistant/core +source/_integrations/shiftr.markdown @fabaff +source/_integrations/shodan.markdown @fabaff +source/_integrations/simplisafe.markdown @bachya +source/_integrations/sinch.markdown @bendikrb +source/_integrations/slide.markdown @ualex73 +source/_integrations/sma.markdown @kellerza +source/_integrations/smarthab.markdown @outadoc +source/_integrations/smartthings.markdown @andrewsayre +source/_integrations/smarty.markdown @z0mbieprocess +source/_integrations/smtp.markdown @fabaff +source/_integrations/solaredge_local.markdown @drobtravels @scheric +source/_integrations/solarlog.markdown @Ernst79 +source/_integrations/solax.markdown @squishykid +source/_integrations/soma.markdown @ratsept +source/_integrations/somfy.markdown @tetienne +source/_integrations/songpal.markdown @rytilahti +source/_integrations/spaceapi.markdown @fabaff +source/_integrations/speedtestdotnet.markdown @rohankapoorcom +source/_integrations/spider.markdown @peternijssen +source/_integrations/sql.markdown @dgomes +source/_integrations/starline.markdown @anonym-tsk +source/_integrations/statistics.markdown @fabaff +source/_integrations/stiebel_eltron.markdown @fucm +source/_integrations/stream.markdown @hunterjm +source/_integrations/stt.markdown @pvizeli +source/_integrations/suez_water.markdown @ooii +source/_integrations/sun.markdown @Swamp-Ig +source/_integrations/supla.markdown @mwegrzynek +source/_integrations/swiss_hydrological_data.markdown @fabaff +source/_integrations/swiss_public_transport.markdown @fabaff +source/_integrations/switchbot.markdown @danielhiversen +source/_integrations/switcher_kis.markdown @tomerfi +source/_integrations/switchmate.markdown @danielhiversen +source/_integrations/syncthru.markdown @nielstron +source/_integrations/synology_srm.markdown @aerialls +source/_integrations/syslog.markdown @fabaff +source/_integrations/tado.markdown @michaelarnauts +source/_integrations/tahoma.markdown @philklei +source/_integrations/tautulli.markdown @ludeeus +source/_integrations/tellduslive.markdown @fredrike +source/_integrations/template.markdown @PhracturedBlue +source/_integrations/tesla.markdown @zabuldon +source/_integrations/tfiac.markdown @fredrike @mellado +source/_integrations/thethingsnetwork.markdown @fabaff +source/_integrations/threshold.markdown @fabaff +source/_integrations/tibber.markdown @danielhiversen +source/_integrations/tile.markdown @bachya +source/_integrations/time_date.markdown @fabaff +source/_integrations/todoist.markdown @boralyl +source/_integrations/toon.markdown @frenck +source/_integrations/tplink.markdown @rytilahti +source/_integrations/traccar.markdown @ludeeus +source/_integrations/tradfri.markdown @ggravlingen +source/_integrations/trafikverket_train.markdown @endor-force +source/_integrations/transmission.markdown @engrbm87 @JPHutchins +source/_integrations/tts.markdown @robbiet480 +source/_integrations/twentemilieu.markdown @frenck +source/_integrations/twilio_call.markdown @robbiet480 +source/_integrations/twilio_sms.markdown @robbiet480 +source/_integrations/unifi.markdown @kane610 +source/_integrations/unifiled.markdown @florisvdk +source/_integrations/upc_connect.markdown @pvizeli +source/_integrations/upcloud.markdown @scop +source/_integrations/updater.markdown @home-assistant/core +source/_integrations/upnp.markdown @robbiet480 +source/_integrations/uptimerobot.markdown @ludeeus +source/_integrations/usgs_earthquakes_feed.markdown @exxamalte +source/_integrations/utility_meter.markdown @dgomes +source/_integrations/velbus.markdown @cereal2nd +source/_integrations/velux.markdown @Julius2342 +source/_integrations/versasense.markdown @flamm3blemuff1n +source/_integrations/version.markdown @fabaff +source/_integrations/vesync.markdown @markperdue @webdjoe +source/_integrations/vicare.markdown @oischinger +source/_integrations/vivotek.markdown @HarlemSquirrel +source/_integrations/vizio.markdown @raman325 +source/_integrations/vlc_telnet.markdown @rodripf +source/_integrations/waqi.markdown @andrey-git +source/_integrations/watson_tts.markdown @rutkai +source/_integrations/weather.markdown @fabaff +source/_integrations/weblink.markdown @home-assistant/core +source/_integrations/websocket_api.markdown @home-assistant/core +source/_integrations/wemo.markdown @sqldiablo +source/_integrations/withings.markdown @vangorra +source/_integrations/wled.markdown @frenck +source/_integrations/worldclock.markdown @fabaff +source/_integrations/wwlln.markdown @bachya +source/_integrations/xbox_live.markdown @MartinHjelmare +source/_integrations/xfinity.markdown @cisasteelersfan +source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi +source/_integrations/xiaomi_miio.markdown @rytilahti @syssi +source/_integrations/xiaomi_tv.markdown @simse +source/_integrations/xmpp.markdown @fabaff @flowolf +source/_integrations/yamaha_musiccast.markdown @jalmeroth +source/_integrations/yandex_transport.markdown @rishatik92 +source/_integrations/yeelight.markdown @rytilahti @zewelor +source/_integrations/yeelightsunflower.markdown @lindsaymarkward +source/_integrations/yessssms.markdown @flowolf +source/_integrations/yi.markdown @bachya +source/_integrations/yr.markdown @danielhiversen +source/_integrations/zeroconf.markdown @robbiet480 @Kane610 +source/_integrations/zha.markdown @dmulcahey @adminiuga +source/_integrations/zone.markdown @home-assistant/core +source/_integrations/zoneminder.markdown @rohankapoorcom +source/_integrations/zwave.markdown @home-assistant/z-wave diff --git a/source/_integrations/abode.markdown b/source/_integrations/abode.markdown index 289fdbf36ea..b295b28d6a1 100644 --- a/source/_integrations/abode.markdown +++ b/source/_integrations/abode.markdown @@ -15,6 +15,8 @@ ha_category: ha_release: 0.52 ha_iot_class: Cloud Push ha_config_flow: true +ha_codeowners: + - '@shred86' --- The `abode` integration will allow users to integrate their Abode Home Security systems into Home Assistant and use its alarm system and sensors to automate their homes. diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown index a600245422f..5b5a4bc66a4 100644 --- a/source/_integrations/adguard.markdown +++ b/source/_integrations/adguard.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.95 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@frenck' --- AdGuard Home is a network-wide ad- and tracker-blocking DNS server with parental diff --git a/source/_integrations/airly.markdown b/source/_integrations/airly.markdown index 490af408079..c386f7d2e27 100644 --- a/source/_integrations/airly.markdown +++ b/source/_integrations/airly.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.101 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bieniu' --- The `airly` integration uses the [Airly](https://airly.eu/) web service as a source for air quality data for your location. diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index fa4b0f077d2..da875049a17 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_release: 0.53 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' --- 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](https://www.clm.com/publication.cfm?ID=366) can be created. diff --git a/source/_integrations/alexa.markdown b/source/_integrations/alexa.markdown index abbb94f0c2e..e293f349124 100644 --- a/source/_integrations/alexa.markdown +++ b/source/_integrations/alexa.markdown @@ -6,6 +6,9 @@ ha_category: - Voice featured: true ha_release: '0.10' +ha_codeowners: + - '@home-assistant/cloud' + - '@ochlocracy' --- ## Automatic setup via Home Assistant Cloud diff --git a/source/_integrations/almond.markdown b/source/_integrations/almond.markdown index 5c8e39c0d15..8f400f6c978 100644 --- a/source/_integrations/almond.markdown +++ b/source/_integrations/almond.markdown @@ -7,6 +7,9 @@ ha_category: ha_iot_class: Local Polling ha_release: '0.102' ha_config_flow: true +ha_codeowners: + - '@gcampax' + - '@balloob' --- [Almond](https://almond.stanford.edu/) is an open, privacy-preserving virtual assistant by [Stanford Open Virtual Assistant Lab](https://oval.cs.stanford.edu/). It allows you, among other things, to control Home Assistant using natural language. Once installed, it will be available on Lovelace via the microphone icon in the top right. diff --git a/source/_integrations/alpha_vantage.markdown b/source/_integrations/alpha_vantage.markdown index b9493cc6961..69348b874b0 100644 --- a/source/_integrations/alpha_vantage.markdown +++ b/source/_integrations/alpha_vantage.markdown @@ -6,6 +6,8 @@ ha_category: - Finance ha_iot_class: Cloud Polling ha_release: '0.60' +ha_codeowners: + - '@fabaff' --- 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/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown index 9dfb93f01f8..46c4f65e3f4 100644 --- a/source/_integrations/amazon_polly.markdown +++ b/source/_integrations/amazon_polly.markdown @@ -5,6 +5,8 @@ logo: polly.png ha_category: - Text-to-speech ha_release: 0.37 +ha_codeowners: + - '@robbiet480' --- 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/_integrations/ambiclimate.markdown b/source/_integrations/ambiclimate.markdown index 04bf151d468..807e1739ba7 100644 --- a/source/_integrations/ambiclimate.markdown +++ b/source/_integrations/ambiclimate.markdown @@ -6,6 +6,8 @@ ha_category: Climate ha_release: 0.93 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@danielhiversen' --- Integrates [Ambiclimate](https://ambiclimate.com/) Air Conditioning controller into Home Assistant. diff --git a/source/_integrations/ambient_station.markdown b/source/_integrations/ambient_station.markdown index 029c6e1efa0..c2c3c9eb364 100644 --- a/source/_integrations/ambient_station.markdown +++ b/source/_integrations/ambient_station.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.85 ha_iot_class: Cloud Push ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `Ambient Weather Station` integration retrieves local weather information diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 15480e95709..9d742936b99 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.7.6 ha_iot_class: Local Polling +ha_codeowners: + - '@JeffLIrion' --- The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device. diff --git a/source/_integrations/apache_kafka.markdown b/source/_integrations/apache_kafka.markdown index 40821d862ae..51e3325b3b6 100644 --- a/source/_integrations/apache_kafka.markdown +++ b/source/_integrations/apache_kafka.markdown @@ -5,6 +5,8 @@ logo: apache_kafka.png ha_category: - History ha_release: 0.97 +ha_codeowners: + - '@bachya' --- The `apache_kafka` integration sends all state changes to a diff --git a/source/_integrations/api.markdown b/source/_integrations/api.markdown index 0ce98884949..178ed30aded 100644 --- a/source/_integrations/api.markdown +++ b/source/_integrations/api.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `api` integration exposes a RESTful API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` integration](/integrations/http/). diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index f9e543c9382..e30a954ee75 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -5,6 +5,8 @@ logo: apprise.png ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@caronc' --- The [Apprise service](https://github.com/caronc/apprise/) is an all-in-one solution to open up Home Assistant to _just about_ every Notification platform (such as Amazon SNS, Discord, Telegram, Slack, MSTeams, Twilio, etc.) diff --git a/source/_integrations/aprs.markdown b/source/_integrations/aprs.markdown index 83ed1056387..896c3fc9a97 100644 --- a/source/_integrations/aprs.markdown +++ b/source/_integrations/aprs.markdown @@ -5,6 +5,8 @@ logo: aprs.png ha_release: 0.95 ha_category: Presence Detection ha_iot_class: Cloud Push +ha_codeowners: + - '@PhilRW' --- The `aprs` [(Automatic Packet Reporting System)](https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System) device tracker integration connects to the [APRS-IS](http://aprs-is.net/) network for tracking amateur radio devices. diff --git a/source/_integrations/arcam_fmj.markdown b/source/_integrations/arcam_fmj.markdown index d985da8e134..cbbceb53066 100644 --- a/source/_integrations/arcam_fmj.markdown +++ b/source/_integrations/arcam_fmj.markdown @@ -5,6 +5,8 @@ logo: arcam.svg ha_category: Media Player ha_release: 0.96 ha_iot_class: Local Polling +ha_codeowners: + - '@elupus' --- The `arcam_fmj` integration allows you to control [Arcam FMJ Receveivers](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant. diff --git a/source/_integrations/arduino.markdown b/source/_integrations/arduino.markdown index 08558e17bcd..f6fb0d18b35 100644 --- a/source/_integrations/arduino.markdown +++ b/source/_integrations/arduino.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection. diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown index 9c57b5afae3..1d1aab15510 100644 --- a/source/_integrations/arest.markdown +++ b/source/_integrations/arest.markdown @@ -9,6 +9,8 @@ ha_category: - Switch ha_iot_class: Local Polling ha_release: 0.9 +ha_codeowners: + - '@fabaff' --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/asuswrt.markdown b/source/_integrations/asuswrt.markdown index 670d66b241e..088f4f4e1cb 100644 --- a/source/_integrations/asuswrt.markdown +++ b/source/_integrations/asuswrt.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_release: 0.83 ha_iot_class: Local Polling +ha_codeowners: + - '@kennedyshead' --- The `asuswrt` integration is the main integration to connect to a [ASUSWRT](https://event.asus.com/2013/nw/ASUSWRT/) based router. diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown index b2ba4541597..7f4a0f7f42f 100644 --- a/source/_integrations/aten_pe.markdown +++ b/source/_integrations/aten_pe.markdown @@ -5,6 +5,8 @@ logo: aten.png ha_category: - Switch ha_release: 0.103 +ha_codeowners: + - '@mtdcr' --- The `aten_pe` integration lets you control [ATEN Rack PDUs](https://www.aten.com/eu/en/products/energy-intelligence-pduupsracks/rack-pdu/) from Home Assistant. diff --git a/source/_integrations/atome.markdown b/source/_integrations/atome.markdown index b2f521af0f2..d29470a73fd 100644 --- a/source/_integrations/atome.markdown +++ b/source/_integrations/atome.markdown @@ -7,6 +7,8 @@ ha_category: - Energy - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@baqs' --- The `atome` sensor platform is retrieving the consumption of your home from the [Direct Energy Atome electric meter](https://total.direct-energie.com/particuliers/electricite/compteur-linky/atome). diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown index de64e474927..bddef96f725 100644 --- a/source/_integrations/aurora_abb_powerone.markdown +++ b/source/_integrations/aurora_abb_powerone.markdown @@ -7,6 +7,8 @@ ha_category: - Energy ha_release: 0.96 ha_iot_class: Local Polling +ha_codeowners: + - '@davet2001' --- This implements a direct RS485 connection to a solar inverter in the diff --git a/source/_integrations/auth.markdown b/source/_integrations/auth.markdown index 4a3fd31df96..76b5397744f 100644 --- a/source/_integrations/auth.markdown +++ b/source/_integrations/auth.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.73 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- This integration creates the endpoints for the [authentication system](/docs/authentication/) that is built into Home Assistant. diff --git a/source/_integrations/automatic.markdown b/source/_integrations/automatic.markdown index 68441f1617e..5aed9921cdf 100644 --- a/source/_integrations/automatic.markdown +++ b/source/_integrations/automatic.markdown @@ -6,6 +6,8 @@ ha_category: - Car ha_release: 0.28 ha_iot_class: Cloud Push +ha_codeowners: + - '@armills' --- The `automatic` device tracker platform offers presence detection by retrieving your car's information from the [Automatic](https://automatic.com/) cloud service. diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index 7edf31adca3..7531ccd9b14 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- Please see the [docs section](/docs/automation/) for in-depth diff --git a/source/_integrations/avea.markdown b/source/_integrations/avea.markdown index 8187d2142f5..91e303a981a 100644 --- a/source/_integrations/avea.markdown +++ b/source/_integrations/avea.markdown @@ -6,6 +6,8 @@ ha_category: - Light ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@pattyland' --- [Elgato Avea](https://www.elgato.com/en/news/elgato-avea-transform-your-home) is a Bluetooth light bulb that is no longer supported by the manufacturer. The `avea` integration allows you to control all your Avea bulbs with Home Assistant. diff --git a/source/_integrations/awair.markdown b/source/_integrations/awair.markdown index 4838a34f723..7d075fcb5b5 100644 --- a/source/_integrations/awair.markdown +++ b/source/_integrations/awair.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_release: 0.84 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielsjf' --- The `awair` sensor platform will fetch data from your [Awair device(s)](https://getawair.com). diff --git a/source/_integrations/aws.markdown b/source/_integrations/aws.markdown index 120ea12bf54..526da0b321c 100644 --- a/source/_integrations/aws.markdown +++ b/source/_integrations/aws.markdown @@ -5,6 +5,9 @@ logo: aws.png ha_category: - Notifications ha_release: '0.91' +ha_codeowners: + - '@awarecan' + - '@robbiet480' --- The `aws` integration provides a single place to interact with [Amazon Web Services](https://aws.amazon.com/). Currently it provides a notification platform that 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. diff --git a/source/_integrations/axis.markdown b/source/_integrations/axis.markdown index 336c9ae253f..6e1c2954c03 100644 --- a/source/_integrations/axis.markdown +++ b/source/_integrations/axis.markdown @@ -9,6 +9,8 @@ ha_category: ha_config_flow: true ha_release: 0.45 ha_iot_class: Local Push +ha_codeowners: + - '@kane610' --- [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. diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index e1c5ba88f1a..b8994ad77c9 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -5,6 +5,8 @@ logo: azure_event_hub.svg ha_category: - History ha_release: 0.94 +ha_codeowners: + - '@eavanvalkenburg' --- The `Azure Event Hub` integration allows you to hook into the Home Assistant event bus and send events to [Azure Event Hub](https://azure.microsoft.com/en-us/services/event-hubs/) or to a [Azure IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-messages-read-builtin). diff --git a/source/_integrations/azure_service_bus.markdown b/source/_integrations/azure_service_bus.markdown index db5865dec64..5c8d23d6dc7 100644 --- a/source/_integrations/azure_service_bus.markdown +++ b/source/_integrations/azure_service_bus.markdown @@ -5,6 +5,8 @@ logo: azure_service_bus.svg ha_category: - Notifications ha_release: 0.102 +ha_codeowners: + - '@hfurubotten' --- The `Azure Service Bus` integration allows you to send messages to [Azure Service Bus](https://azure.microsoft.com/en-us/services/service-bus/) from within Home Assistant. diff --git a/source/_integrations/beewi_smartclim.markdown b/source/_integrations/beewi_smartclim.markdown index e152f029c34..b83c9908929 100644 --- a/source/_integrations/beewi_smartclim.markdown +++ b/source/_integrations/beewi_smartclim.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: 0.99 ha_iot_class: Local Polling +ha_codeowners: + - '@alemuro' --- The `beewi_smartclim` sensor platform allows one to monitor room or external temperature and humidity. The [BeeWi SmartClim BLE](http://www.bee-wi.com/produits/capteurs/capteur-de-temperature/) is a Bluetooth Low Energy sensor device that monitors temperature from a room or a garden from your smartphone by using an APP. Use this integration to track these metrics from any location thanks to Home Assistant, as well as to create some automation scripts based on your room's temperature. diff --git a/source/_integrations/bitcoin.markdown b/source/_integrations/bitcoin.markdown index 62f718f9931..b6a4eb282f0 100644 --- a/source/_integrations/bitcoin.markdown +++ b/source/_integrations/bitcoin.markdown @@ -6,6 +6,8 @@ ha_category: - Finance ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- The `bitcoin` sensor platform displays various details about the [Bitcoin](https://bitcoin.org) network. diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown index 57e4327f8a8..8dd4814dcb2 100644 --- a/source/_integrations/bizkaibus.markdown +++ b/source/_integrations/bizkaibus.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.93 +ha_codeowners: + - '@UgaitzEtxebarria' --- The `bizkaibus` sensor will give you the time until the next bus in the selected stop. diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown index 7c890221b28..98f58f37979 100644 --- a/source/_integrations/blink.markdown +++ b/source/_integrations/blink.markdown @@ -10,6 +10,8 @@ ha_category: - Sensor ha_release: '0.40' ha_iot_class: Cloud Polling +ha_codeowners: + - '@fronzbot' --- The `blink` integration lets you view camera images and motion events from [Blink](https://blinkforhome.com/) camera and security systems. diff --git a/source/_integrations/bmw_connected_drive.markdown b/source/_integrations/bmw_connected_drive.markdown index c41c7afa4a4..e063e7ff1ef 100644 --- a/source/_integrations/bmw_connected_drive.markdown +++ b/source/_integrations/bmw_connected_drive.markdown @@ -10,6 +10,8 @@ ha_category: - Sensor ha_release: 0.64 ha_iot_class: Cloud Polling +ha_codeowners: + - '@gerard33' --- The `bmw_connected_drive` integration lets you retrieve data of your BMW vehicle from the BMW Connected Drive portal. You need to have a working BMW Connected Drive account, and a Connected Drive enabled vehicle for this to work. diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index e1fbadcf9f0..0e870319745 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.23 ha_iot_class: Local Polling +ha_codeowners: + - '@robbiet480' --- The `braviatv` platform allows you to control a [Sony Bravia TV](https://www.sony.com/). diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown index edc1324a621..359d32d0c68 100644 --- a/source/_integrations/broadlink.markdown +++ b/source/_integrations/broadlink.markdown @@ -8,6 +8,9 @@ ha_category: - Sensor ha_release: 0.35 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' + - '@felipediel' --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/brunt.markdown b/source/_integrations/brunt.markdown index 17db694edc5..ff93f5b165e 100644 --- a/source/_integrations/brunt.markdown +++ b/source/_integrations/brunt.markdown @@ -6,6 +6,8 @@ ha_category: - Cover ha_release: 0.75 ha_iot_class: Cloud Polling +ha_codeowners: + - '@eavanvalkenburg' --- 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/_integrations/bt_smarthub.markdown b/source/_integrations/bt_smarthub.markdown index 18404c133e4..466ed6a5cd2 100644 --- a/source/_integrations/bt_smarthub.markdown +++ b/source/_integrations/bt_smarthub.markdown @@ -6,6 +6,8 @@ ha_category: - Presence Detection ha_release: 0.82 ha_iot_class: Local Polling +ha_codeowners: + - '@jxwolstenholme' --- 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/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown index ccb45a591fa..27d0a14e108 100644 --- a/source/_integrations/buienradar.markdown +++ b/source/_integrations/buienradar.markdown @@ -7,6 +7,9 @@ ha_category: - Weather ha_release: 0.47 ha_iot_class: Cloud Polling +ha_codeowners: + - '@mjj4791' + - '@ties' --- The `buienradar` platform uses [buienradar.nl](https://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/_integrations/cert_expiry.markdown b/source/_integrations/cert_expiry.markdown index 4771f17107f..5402235e89b 100644 --- a/source/_integrations/cert_expiry.markdown +++ b/source/_integrations/cert_expiry.markdown @@ -7,6 +7,9 @@ ha_category: ha_release: 0.44 ha_iot_class: Configurable ha_config_flow: true +ha_codeowners: + - '@Cereal2nd' + - '@jjlawren' --- The `cert_expiry` sensor fetches information from a configured URL and displays the certificate expiry in days. diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index 4a2572d47be..d1827e4041e 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -5,6 +5,8 @@ logo: cisco.png ha_category: - Presence Detection ha_release: 0.33 +ha_codeowners: + - '@fbradyirl' --- This is a presence detection scanner for [Cisco](https://www.cisco.com/) IOS devices. diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown index 35ec28c4a23..901828c5a5a 100644 --- a/source/_integrations/cisco_mobility_express.markdown +++ b/source/_integrations/cisco_mobility_express.markdown @@ -5,6 +5,8 @@ logo: cisco.png ha_category: - Presence Detection ha_release: '0.90' +ha_codeowners: + - '@fbradyirl' --- This is a presence detection scanner for [Cisco](https://www.cisco.com) Mobility Express wireless controllers. diff --git a/source/_integrations/cisco_webex_teams.markdown b/source/_integrations/cisco_webex_teams.markdown index c27d605a14f..1b2bce65a11 100644 --- a/source/_integrations/cisco_webex_teams.markdown +++ b/source/_integrations/cisco_webex_teams.markdown @@ -5,6 +5,8 @@ logo: cisco_webex_teams.png ha_category: - Notifications ha_release: '0.40' +ha_codeowners: + - '@fbradyirl' --- The `cisco_webex_teams` notification platform allows you to deliver rich notifications from Home Assistant to [Cisco Webex Teams](https://www.webex.com/team-collaboration.html) (formerly known as Cisco Spark). diff --git a/source/_integrations/ciscospark.markdown b/source/_integrations/ciscospark.markdown index 16ff30b67d2..1250f9300f7 100644 --- a/source/_integrations/ciscospark.markdown +++ b/source/_integrations/ciscospark.markdown @@ -5,6 +5,8 @@ logo: ciscospark.png ha_category: - Notifications ha_release: '0.40' +ha_codeowners: + - '@fbradyirl' --- The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). diff --git a/source/_integrations/cloud.markdown b/source/_integrations/cloud.markdown index ae39bfa9cd4..89959da111f 100644 --- a/source/_integrations/cloud.markdown +++ b/source/_integrations/cloud.markdown @@ -6,6 +6,8 @@ ha_release: '0.60' ha_category: - Voice ha_iot_class: Cloud Push +ha_codeowners: + - '@home-assistant/cloud' --- The Home Assistant Cloud allows you to quickly integrate your local Home Assistant with various cloud services like Amazon Alexa and Google Assistant. [Learn more.](/cloud) diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index a3ab64e61f7..3fc65ff1f81 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -5,6 +5,8 @@ logo: cloudflare.png ha_category: - Network ha_release: 0.74 +ha_codeowners: + - '@ludeeus' --- With the `cloudflare` integration, you can keep your Cloudflare records up to date. diff --git a/source/_integrations/comfoconnect.markdown b/source/_integrations/comfoconnect.markdown index eb01f63adf6..fbe7434a140 100644 --- a/source/_integrations/comfoconnect.markdown +++ b/source/_integrations/comfoconnect.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.48 ha_iot_class: Local Push +ha_codeowners: + - '@michaelarnauts' --- The `comfoconnect` integration lets you control Zehnder ComfoAir [Q350](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-tr)/[Q450](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-tr)/[Q600](https://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index c57f9c9d0ac..23e626dd151 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -6,6 +6,8 @@ ha_category: - Front End ha_release: 0.39 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `config` integration is designed to display panels in the frontend to configure and manage parts of Home Assistant. diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index ba2b9af53fd..0ba4152338e 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' ---

    diff --git a/source/_integrations/conversation.markdown b/source/_integrations/conversation.markdown index 138dff4486e..d7b4a3efcc3 100644 --- a/source/_integrations/conversation.markdown +++ b/source/_integrations/conversation.markdown @@ -6,6 +6,8 @@ ha_category: - Voice ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The conversation integration allows you to converse with Home Assistant. You can either converse by pressing the microphone in the frontend (supported browsers only (no iOS)) or by calling the `conversation/process` service with the transcribed text. diff --git a/source/_integrations/coolmaster.markdown b/source/_integrations/coolmaster.markdown index e4dbb85725a..29723010ca3 100644 --- a/source/_integrations/coolmaster.markdown +++ b/source/_integrations/coolmaster.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.88 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@OnFreund' --- The `coolmaster` climate platform lets you control HVAC through [CoolMasterNet](https://coolautomation.com/products/coolmasternet/). diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index d78fd4b7b0d..0d6b5148b19 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.53 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `counter` integration allows one to count occurrences fired by automations. diff --git a/source/_integrations/cover.markdown b/source/_integrations/cover.markdown index 4f44d989472..a38a7cf21c1 100644 --- a/source/_integrations/cover.markdown +++ b/source/_integrations/cover.markdown @@ -6,6 +6,8 @@ ha_category: - Cover ha_release: 0.27 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- Home Assistant can give you an interface to control covers such as rollershutters, blinds, and garage doors. diff --git a/source/_integrations/cpuspeed.markdown b/source/_integrations/cpuspeed.markdown index dfead8a0ba1..1ea3b6f3eba 100644 --- a/source/_integrations/cpuspeed.markdown +++ b/source/_integrations/cpuspeed.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@fabaff' --- The `cpuspeed` sensor platform to allow you to monitor the current CPU speed. diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index 5ee69d9eb79..6fc1d2efe10 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.32 +ha_codeowners: + - '@fabaff' --- The `cups` sensor platform is using the open source printing system [CUPS](https://www.cups.org/) to show details about your printers, including the ink levels. It can obtain the informations using a CUPS server or communicating directly with the printer with the Internet Printing Protocol. diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown index d2e3a1c49ca..aa70c271d66 100644 --- a/source/_integrations/daikin.markdown +++ b/source/_integrations/daikin.markdown @@ -10,6 +10,9 @@ ha_release: 0.59 ha_iot_class: Local Polling ha_config_flow: true ha_quality_scale: platinum +ha_codeowners: + - '@fredrike' + - '@rofrantz' --- The `daikin` integration integrates Daikin air conditioning systems into Home Assistant. diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index 98193c58c79..3b191b5553b 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -6,6 +6,8 @@ ha_category: - Weather ha_release: '0.30' ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- 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](https://www.openstreetmap.org/). diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown index 5164b927666..2864d5a7163 100644 --- a/source/_integrations/deconz.markdown +++ b/source/_integrations/deconz.markdown @@ -14,6 +14,8 @@ ha_release: 0.61 ha_iot_class: Local Push ha_config_flow: true ha_quality_scale: platinum +ha_codeowners: + - '@kane610' --- [deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) by [dresden elektronik](https://www.dresden-elektronik.de) is a software that communicates with ConBee/RaspBee Zigbee gateways and exposes Zigbee devices that are connected to the gateway. diff --git a/source/_integrations/delijn.markdown b/source/_integrations/delijn.markdown index 412514c1506..041d33ec49b 100644 --- a/source/_integrations/delijn.markdown +++ b/source/_integrations/delijn.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling logo: delijn.svg +ha_codeowners: + - '@bollewolle' --- The `delijn` sensor will give you the departure time of the next bus, tram or subway at a specific stop of the De Lijn public transport network in Flanders (Belgium). diff --git a/source/_integrations/demo.markdown b/source/_integrations/demo.markdown index 0cd29718c0e..571b2598e2a 100644 --- a/source/_integrations/demo.markdown +++ b/source/_integrations/demo.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `demo` platform allows you to use integrations which are providing a demo of their implementation. The demo entities are dummies but show you how the actual platform looks like. This way you can run own demonstration instance like the online [Home Assistant demo](/demo/) or `hass --demo-mode` but combined with your own real/functional platforms. diff --git a/source/_integrations/device_automation.markdown b/source/_integrations/device_automation.markdown index 74b45ce493a..fe45a9d56b5 100644 --- a/source/_integrations/device_automation.markdown +++ b/source/_integrations/device_automation.markdown @@ -5,6 +5,8 @@ ha_category: - Automation ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- Device Automations is a plugin for the automation integration to allow other integrations to provide device specific triggers, conditions and actions. diff --git a/source/_integrations/digital_ocean.markdown b/source/_integrations/digital_ocean.markdown index 7b6a0f21d30..1cd0e761993 100644 --- a/source/_integrations/digital_ocean.markdown +++ b/source/_integrations/digital_ocean.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: '0.30' logo: digital_ocean.png ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The `digital_ocean` integration allows you to access the information about your [Digital Ocean](https://www.digitalocean.com/) droplets from Home Assistant. diff --git a/source/_integrations/discogs.markdown b/source/_integrations/discogs.markdown index 25d35a30c6a..5bbb4fd3d42 100644 --- a/source/_integrations/discogs.markdown +++ b/source/_integrations/discogs.markdown @@ -6,6 +6,8 @@ ha_category: ha_release: 0.61 logo: discogs.png ha_iot_class: Cloud Polling +ha_codeowners: + - '@thibmaek' --- The `discogs` platform allows you to see the current amount of records in your [Discogs](https://www.discogs.com) collection. diff --git a/source/_integrations/doorbird.markdown b/source/_integrations/doorbird.markdown index 58ea6ec0d7d..99bbf641af9 100644 --- a/source/_integrations/doorbird.markdown +++ b/source/_integrations/doorbird.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: 0.54 ha_iot_class: Local Push +ha_codeowners: + - '@oblogic7' --- The `doorbird` implementation allows you to integrate your [DoorBird](https://www.doorbird.com/) device in Home Assistant. diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index d6d86310b32..26383c4880c 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -5,6 +5,8 @@ ha_category: - Energy ha_iot_class: Cloud Polling ha_release: 0.103 +ha_codeowners: + - '@depl0y' --- The `dsmr_reader` sensor platform allows you to easily add all sensors that [DSMR Reader](https://dsmr-reader.readthedocs.io/en/latest/) exposes to MQTT. It adds a separate sensor for every field in the MQTT topics. diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index fccba41994d..fd2799d7ac4 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.19 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- The `dweet` integration makes it possible to transfer details collected with Home Assistant to [Dweet.io](https://dweet.io/) and visualize them with [freeboard.io](https://freeboard.io). Keep in mind that your information will be public! diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 7d9831ebe26..a5daca81752 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -12,6 +12,8 @@ featured: true ha_release: 0.9 ha_iot_class: Cloud Poll ha_config_flow: true +ha_codeowners: + - '@marthoc' --- The `ecobee` integration lets you control and view sensor data from [ecobee](https://ecobee.com) thermostats. diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index 3cd3227dc55..239c55c8c0a 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -7,6 +7,8 @@ ha_category: - Vacuum ha_iot_class: Cloud Push ha_release: 0.77 +ha_codeowners: + - '@OverloadUT' --- The `ecovacs` integration is the main integration to integrate all [Ecovacs](https://www.ecovacs.com) (Deebot) vacuums. You will need your Ecovacs account information (username, password) to discover and control vacuums in your account. diff --git a/source/_integrations/egardia.markdown b/source/_integrations/egardia.markdown index fb3cde04bd3..512a6ca0728 100644 --- a/source/_integrations/egardia.markdown +++ b/source/_integrations/egardia.markdown @@ -8,6 +8,8 @@ ha_category: - Binary Sensor ha_release: 0.65 ha_iot_class: Local Polling +ha_codeowners: + - '@jeroenterheerdt' --- The `egardia` platform enables the ability to control an [Egardia](https://egardia.com/)/[Woonveilig](https://woonveilig.nl) control panel. These alarm panels are known under different brand names across the world, including Woonveilig in the Netherlands. This was tested on the WL-1716, GATE-01, GATE-02 and GATE-03 versions of the Egardia/Woonveilig platform. Not only will you integrate your alarm control panel, supported sensors (door contacts at this moment) will be added automatically (hidden by default). diff --git a/source/_integrations/eight_sleep.markdown b/source/_integrations/eight_sleep.markdown index 9030d63af2c..51773ca235f 100644 --- a/source/_integrations/eight_sleep.markdown +++ b/source/_integrations/eight_sleep.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_release: 0.44 ha_iot_class: Cloud Polling +ha_codeowners: + - '@mezz64' --- The `eight_sleep` integration allows Home Assistant to fetch data from your [Eight Sleep](https://eightsleep.com/) smart cover or mattress. diff --git a/source/_integrations/elv.markdown b/source/_integrations/elv.markdown index 22dacd7f090..e69a0c7b45e 100644 --- a/source/_integrations/elv.markdown +++ b/source/_integrations/elv.markdown @@ -5,6 +5,8 @@ logo: elv.png ha_category: Switch ha_iot_class: Local Polling ha_release: 0.95 +ha_codeowners: + - '@majuss' --- The `pca` switch platform allows you to control the state of your [ELV PCA 301 smart switch](https://www.elv.de/funkschaltsteckdose-fuer-energiekostenmonitor-pca-301.html). You need an 868 MHz interface like the [JeeLink](https://www.digitalsmarties.net/products/jeelink) flashed with the [pca-hex firmware](https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/firmware/JeeLink_PCA301.hex). diff --git a/source/_integrations/emby.markdown b/source/_integrations/emby.markdown index f81a38d587b..1c0f4490447 100644 --- a/source/_integrations/emby.markdown +++ b/source/_integrations/emby.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.32 ha_iot_class: Local Push +ha_codeowners: + - '@mezz64' --- The `emby` platform allows you to control a [Emby](https://emby.media/) multimedia system from Home Assistant. diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown index 9f8635f9942..9ec775d83dd 100644 --- a/source/_integrations/emulated_hue.markdown +++ b/source/_integrations/emulated_hue.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.27 ha_iot_class: Local Push ha_quality_scale: internal +ha_codeowners: + - '@NobleKangaroo' ---
    diff --git a/source/_integrations/enigma2.markdown b/source/_integrations/enigma2.markdown index 014fa43fb77..0666c829220 100644 --- a/source/_integrations/enigma2.markdown +++ b/source/_integrations/enigma2.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: '0.90' ha_iot_class: Local Polling +ha_codeowners: + - '@fbradyirl' --- The `enigma2` platform allows you to control a Linux based set-top box which is running [Enigma2](https://github.com/oe-alliance/oe-alliance-enigma2) with the OpenWebif plugin installed. diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown index 55ff5dabbf4..69d7e983df5 100644 --- a/source/_integrations/enocean.markdown +++ b/source/_integrations/enocean.markdown @@ -10,6 +10,8 @@ ha_category: - Switch ha_release: 0.21 ha_iot_class: Local Push +ha_codeowners: + - '@bdurrer' --- The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary. diff --git a/source/_integrations/entur_public_transport.markdown b/source/_integrations/entur_public_transport.markdown index 669994a0264..32ee43e2615 100644 --- a/source/_integrations/entur_public_transport.markdown +++ b/source/_integrations/entur_public_transport.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_release: 0.84 ha_iot_class: Cloud Polling +ha_codeowners: + - '@hfurubotten' --- The `entur_public_transport` sensor gives real-time departure information for the next departures from any bus stop, car ferry quay, train station, airport and person ferries quay in Norway. diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown index 01fe5b818b4..8e8686c39ed 100644 --- a/source/_integrations/environment_canada.markdown +++ b/source/_integrations/environment_canada.markdown @@ -8,6 +8,8 @@ ha_category: - Camera ha_release: 0.95 ha_iot_class: Cloud Polling +ha_codeowners: + - '@michaeldavie' --- The `environment_canada` weather platforms provide meteorological data for Canadian locations from [Environment Canada](https://weather.gc.ca/index_e.html). diff --git a/source/_integrations/ephember.markdown b/source/_integrations/ephember.markdown index 0f3832a0d3b..ee53dd5a6ba 100644 --- a/source/_integrations/ephember.markdown +++ b/source/_integrations/ephember.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: 0.57 ha_iot_class: Local Polling +ha_codeowners: + - '@ttroy50' --- The `ephember` climate platform lets you control [EPH Controls](https://emberapp.ephcontrols.com/) thermostats. The module only works if you have a WiFi gateway to control your EPH system and an account on the EMBER app. diff --git a/source/_integrations/epsonworkforce.markdown b/source/_integrations/epsonworkforce.markdown index 0ba55747e57..a2dc7766bbc 100644 --- a/source/_integrations/epsonworkforce.markdown +++ b/source/_integrations/epsonworkforce.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@ThaStealth' --- The `epson workforce` platform allows you to monitor the ink levels of a Epson Workforce printer from Home diff --git a/source/_integrations/eq3btsmart.markdown b/source/_integrations/eq3btsmart.markdown index d8f770e7316..d0aeff56923 100644 --- a/source/_integrations/eq3btsmart.markdown +++ b/source/_integrations/eq3btsmart.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_iot_class: Local Polling ha_release: 0.18 +ha_codeowners: + - '@rytilahti' --- The `eq3btsmart` climate platform allows you to integrate EQ3 Bluetooth Smart Thermostats. diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index cb037d3caa9..a1f5df856f3 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.85 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@OttoWinter' --- This integration allows you to connect your [ESPHome](https://esphome.io) devices directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html). diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown index 7bce2dcda2b..d1c37a3d9ed 100644 --- a/source/_integrations/essent.markdown +++ b/source/_integrations/essent.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.93 ha_iot_class: Cloud Polling +ha_codeowners: + - '@TheLastProject' --- The `essent` platform uses [PyEssent](https://github.com/TheLastProject/PyEssent/) to communicate with the (undocumented) API of Dutch energy provider Essent. It provides sensors for each of your meters and tariffs, updated daily. diff --git a/source/_integrations/evohome.markdown b/source/_integrations/evohome.markdown index 329c0fadb57..398059a86aa 100644 --- a/source/_integrations/evohome.markdown +++ b/source/_integrations/evohome.markdown @@ -7,6 +7,8 @@ ha_category: - Climate ha_release: 0.8 ha_iot_class: Cloud Polling +ha_codeowners: + - '@zxdavb' --- The `evohome` integration links Home Assistant with all _non-US_ [Honeywell Total Connect Comfort (TCC)](https://international.mytotalconnectcomfort.com/Account/Login) CH/DHW systems, such as: diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index c23a699c8d0..c59a327bef9 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.88 ha_iot_class: Cloud Polling +ha_codeowners: + - '@rohankapoorcom' --- The `fastdotcom` integration uses the [Fast.com](https://fast.com/) web service to measure network bandwidth performance. diff --git a/source/_integrations/file.markdown b/source/_integrations/file.markdown index 0fb7f23afe7..77d39890408 100644 --- a/source/_integrations/file.markdown +++ b/source/_integrations/file.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- There is currently support for the following device types within Home Assistant: diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index 31c9e703a8e..4d35aa95a52 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -7,6 +7,8 @@ ha_release: 0.65 ha_iot_class: Local Push logo: home-assistant.png ha_quality_scale: internal +ha_codeowners: + - '@dgomes' --- The `filter` platform enables sensors that process the states of other entities. diff --git a/source/_integrations/fitbit.markdown b/source/_integrations/fitbit.markdown index fa0fd72110c..db81c98aab0 100644 --- a/source/_integrations/fitbit.markdown +++ b/source/_integrations/fitbit.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.19 +ha_codeowners: + - '@robbiet480' --- The Fitbit sensor allows you to expose data from [Fitbit](https://fitbit.com/) to Home Assistant. diff --git a/source/_integrations/fixer.markdown b/source/_integrations/fixer.markdown index 63f98164deb..4062ff6c630 100644 --- a/source/_integrations/fixer.markdown +++ b/source/_integrations/fixer.markdown @@ -6,6 +6,8 @@ ha_category: logo: fixer-io.png ha_iot_class: Cloud Polling ha_release: 0.23 +ha_codeowners: + - '@fabaff' --- The `fixer` sensor will show you the current exchange rate from [Fixer.io](https://fixer.io/) which is using data from the [European Central Bank (ECB)](https://www.ecb.europa.eu). diff --git a/source/_integrations/flock.markdown b/source/_integrations/flock.markdown index d2c86b9c2e0..129383a277d 100644 --- a/source/_integrations/flock.markdown +++ b/source/_integrations/flock.markdown @@ -5,6 +5,8 @@ logo: flock.png ha_category: - Notifications ha_release: 0.71 +ha_codeowners: + - '@fabaff' --- The `flock` platform uses [Flock.com](https://flock.com) to deliver notifications from Home Assistant. diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index c6fac7d4c9c..cf5d8aae048 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.103 +ha_codeowners: + - '@ChrisMandich' --- The `flume` sensor will show you the current [flume](https://portal.flumetech.com/) status for the given Device ID. diff --git a/source/_integrations/flunearyou.markdown b/source/_integrations/flunearyou.markdown index c0f10887ab5..f3b2ab49a17 100644 --- a/source/_integrations/flunearyou.markdown +++ b/source/_integrations/flunearyou.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_release: 0.83 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' --- The `flunearyou` sensor platform allows users in the United States and its diff --git a/source/_integrations/fortigate.markdown b/source/_integrations/fortigate.markdown index a70157500cf..541fcfca958 100644 --- a/source/_integrations/fortigate.markdown +++ b/source/_integrations/fortigate.markdown @@ -6,6 +6,8 @@ ha_category: - Presence Detection ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@kifeo' --- This is a FortiGate presence sensor based on device detection of the FortiGate API diff --git a/source/_integrations/fortios.markdown b/source/_integrations/fortios.markdown index 69e15be0b5d..2cf29b52dcd 100644 --- a/source/_integrations/fortios.markdown +++ b/source/_integrations/fortios.markdown @@ -6,6 +6,8 @@ ha_category: - Presence Detection ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@kimfrellsen' --- This integration enables Home Assistant to do device tracking of devices with a MAC address connected to a FortiGate from [Fortinet](https://www.fortinet.com). diff --git a/source/_integrations/foscam.markdown b/source/_integrations/foscam.markdown index aebedebbd82..a85e62b9a61 100644 --- a/source/_integrations/foscam.markdown +++ b/source/_integrations/foscam.markdown @@ -6,6 +6,8 @@ ha_category: - Camera ha_iot_class: Local Polling ha_release: 0.7.3 +ha_codeowners: + - '@skgsergio' --- The `foscam` platform allows you to watch the live stream of your [Foscam](https://www.foscam.com) IP camera in Home Assistant. diff --git a/source/_integrations/foursquare.markdown b/source/_integrations/foursquare.markdown index 937deb6c0fa..0a8c8b863d2 100644 --- a/source/_integrations/foursquare.markdown +++ b/source/_integrations/foursquare.markdown @@ -6,6 +6,8 @@ ha_category: - Social ha_release: 0.26 ha_iot_class: Cloud Polling and Cloud Push +ha_codeowners: + - '@robbiet480' --- The `foursquare` integration accepts pushes from the Foursquare [Real-Time API](https://developer.foursquare.com/overview/realtime) and a service to check users in on Swarm. diff --git a/source/_integrations/freebox.markdown b/source/_integrations/freebox.markdown index 601d7419a07..b4048abd319 100644 --- a/source/_integrations/freebox.markdown +++ b/source/_integrations/freebox.markdown @@ -9,6 +9,8 @@ ha_category: - Switch ha_release: 0.85 ha_iot_class: Local Polling +ha_codeowners: + - '@snoof85' --- The `freebox` integration allows you to observe and control [Freebox router](https://www.free.fr/). diff --git a/source/_integrations/fronius.markdown b/source/_integrations/fronius.markdown index c0d0002d402..d4e0ff7f2c3 100644 --- a/source/_integrations/fronius.markdown +++ b/source/_integrations/fronius.markdown @@ -7,6 +7,8 @@ ha_category: logo: fronius.png ha_iot_class: Local Polling ha_release: 0.96 +ha_codeowners: + - '@nielstron' --- The `fronius` sensor polls a [Fronius](https://www.fronius.com/) solar inverter, battery system or smart meter and present the values as sensors in Home Assistant. diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index deede712de2..28cf66bb6a4 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' --- This offers the official frontend to control Home Assistant. This integration is by default enabled, unless you've disabled or removed the [`default_config:`](https://www.home-assistant.io/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually: diff --git a/source/_integrations/gearbest.markdown b/source/_integrations/gearbest.markdown index de50d3cc32f..4ce076ed841 100644 --- a/source/_integrations/gearbest.markdown +++ b/source/_integrations/gearbest.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: '0.60' +ha_codeowners: + - '@HerrHofrat' --- The `gearbest` sensor will track the price of a product from [Gearbest](https://www.gearbest.com). This information can be used in, e.g., automations to notify you when a price drops. The update interval for every item is currently set to 2 hours. diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown index a0ce9adcf29..2e1987488c1 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -10,6 +10,8 @@ ha_category: - Switch ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@zxdavb' --- The `geniushub` integration links Home Assistant with your Genius Hub CH/DHW system, including its zones, devices, and issues. diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index 39436023864..2c6e5af74a0 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.55 +ha_codeowners: + - '@exxamalte' --- 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/_integrations/geonetnz_quakes.markdown b/source/_integrations/geonetnz_quakes.markdown index 773976eb90f..2e8a7e156cd 100644 --- a/source/_integrations/geonetnz_quakes.markdown +++ b/source/_integrations/geonetnz_quakes.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.98 ha_config_flow: true +ha_codeowners: + - '@exxamalte' --- The `geonetnz_quakes` integration lets you use a GeoJSON feed provided by diff --git a/source/_integrations/geonetnz_volcano.markdown b/source/_integrations/geonetnz_volcano.markdown index fb855de4473..3dfe4b2cddc 100644 --- a/source/_integrations/geonetnz_volcano.markdown +++ b/source/_integrations/geonetnz_volcano.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.103 ha_config_flow: true +ha_codeowners: + - '@exxamalte' --- The `geonetnz_volcano` integration lets you use a GeoJSON feed provided by diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index 3e5988aae0c..442f56a7874 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -5,6 +5,8 @@ logo: gitter.png ha_category: - Sensor ha_release: 0.47 +ha_codeowners: + - '@fabaff' --- This `gitter` sensor allows one to monitor a [Gitter.im](https://gitter.im) chatroom for unread messages. diff --git a/source/_integrations/glances.markdown b/source/_integrations/glances.markdown index 65697b651d0..3e8db64e1c5 100644 --- a/source/_integrations/glances.markdown +++ b/source/_integrations/glances.markdown @@ -7,6 +7,9 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.7.3 ha_config_flow: true +ha_codeowners: + - '@fabaff' + - '@engrbm87' --- The `glances` integration allows you to monitor the system information provided by the [Glances](https://github.com/nicolargo/glances) API. This enables one to track remote host and display their stats in Home Assistant. diff --git a/source/_integrations/gntp.markdown b/source/_integrations/gntp.markdown index 9a87a3a3871..7ea76d6ed64 100644 --- a/source/_integrations/gntp.markdown +++ b/source/_integrations/gntp.markdown @@ -5,6 +5,8 @@ logo: gntp.png ha_category: - Notifications ha_release: 0.16 +ha_codeowners: + - '@robbiet480' --- [GNTP](http://growl.info/documentation/developer/gntp.php) 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/). diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 900a8171c96..28e1881152f 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -6,6 +6,8 @@ ha_category: - Voice featured: true ha_release: 0.56 +ha_codeowners: + - '@home-assistant/cloud' --- The `google_assistant` integration allows you to control things via Google Assistant on your mobile, tablet or Google Home device. diff --git a/source/_integrations/google_cloud.markdown b/source/_integrations/google_cloud.markdown index 97334697aca..84cab1a9a1b 100644 --- a/source/_integrations/google_cloud.markdown +++ b/source/_integrations/google_cloud.markdown @@ -4,6 +4,8 @@ description: Google Cloud Platform integration. logo: google_cloud.png ha_category: Text-to-speech ha_release: 0.95 +ha_codeowners: + - '@lufton' --- The `google_cloud` platform allows you to use [Google Cloud Platform](https://cloud.google.com/) API and integrate them into Home Assistant. diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown index 3964626ff14..aef6a211386 100644 --- a/source/_integrations/google_translate.markdown +++ b/source/_integrations/google_translate.markdown @@ -5,6 +5,8 @@ logo: google.png ha_category: - Text-to-speech ha_release: 0.35 +ha_codeowners: + - '@awarecan' --- The `google_translate` text-to-speech platform uses the unofficial [Google Translate Text-to-Speech engine](https://translate.google.com/) to read a text with natural sounding voices. diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown index f81d11be400..d316716acd4 100644 --- a/source/_integrations/google_travel_time.markdown +++ b/source/_integrations/google_travel_time.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.19 +ha_codeowners: + - '@robbiet480' --- 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/_integrations/gpsd.markdown b/source/_integrations/gpsd.markdown index a92fb586857..f319131c95c 100644 --- a/source/_integrations/gpsd.markdown +++ b/source/_integrations/gpsd.markdown @@ -6,6 +6,8 @@ ha_category: - Utility ha_release: 0.26 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The `gpsd` integration is using the GPS information collected by [gpsd](http://catb.org/gpsd/) and a GPS receiver. diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index 5f411317736..0e555479749 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -6,6 +6,8 @@ ha_category: - Organization ha_release: pre 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- Groups allow the user to combine multiple entities into one. diff --git a/source/_integrations/growatt_server.markdown b/source/_integrations/growatt_server.markdown index 2646b5ce7fe..dbd701cb16e 100644 --- a/source/_integrations/growatt_server.markdown +++ b/source/_integrations/growatt_server.markdown @@ -7,6 +7,8 @@ ha_category: - Energy ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@indykoning' --- This is a sensor to collect information from your Growatt inverters using [Growatt server](https://server.growatt.com/). diff --git a/source/_integrations/gtfs.markdown b/source/_integrations/gtfs.markdown index 4d4493cdb02..6380f8a16c7 100644 --- a/source/_integrations/gtfs.markdown +++ b/source/_integrations/gtfs.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_iot_class: Local Polling ha_release: 0.17 +ha_codeowners: + - '@robbiet480' --- 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/_integrations/harmony.markdown b/source/_integrations/harmony.markdown index 33ba658d9c3..dc9f6f0c8eb 100644 --- a/source/_integrations/harmony.markdown +++ b/source/_integrations/harmony.markdown @@ -6,6 +6,8 @@ ha_category: - Remote ha_iot_class: Local Push ha_release: 0.34 +ha_codeowners: + - '@ehendrix23' --- The `harmony` remote platform allows you to control the state of your [Harmony Hub Device](https://www.logitech.com/en-us/product/harmony-hub). diff --git a/source/_integrations/heatmiser.markdown b/source/_integrations/heatmiser.markdown index b759715596d..0064cb994b0 100644 --- a/source/_integrations/heatmiser.markdown +++ b/source/_integrations/heatmiser.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: '0.10' ha_iot_class: Local Polling +ha_codeowners: + - '@andylockran' --- The `heatmiser` climate platform let you control [Heatmiser DT/DT-E/PRT/PRT-E](https://www.heatmisershop.co.uk/room-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/_integrations/heos.markdown b/source/_integrations/heos.markdown index e73640139dc..0f99bbbc15d 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.92 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@andrewsayre' --- The HEOS integration adds support for [HEOS](http://heosbydenon.denon.com) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown index 20f0859785a..5fc2b413701 100644 --- a/source/_integrations/here_travel_time.markdown +++ b/source/_integrations/here_travel_time.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: '0.100' +ha_codeowners: + - '@eifinger' --- The `here_travel_time` sensor provides travel time from the [HERE Routing API](https://developer.here.com/documentation/routing/topics/introduction.html). diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown index 05449207e25..5fa2002b247 100644 --- a/source/_integrations/hikvision.markdown +++ b/source/_integrations/hikvision.markdown @@ -6,6 +6,8 @@ ha_category: - Binary Sensor ha_release: 0.35 ha_iot_class: Local Push +ha_codeowners: + - '@mezz64' --- The Hikvision Binary Sensor is a platform that parses the event stream of a diff --git a/source/_integrations/hikvisioncam.markdown b/source/_integrations/hikvisioncam.markdown index eb3d7a30ffa..996f7850fd5 100644 --- a/source/_integrations/hikvisioncam.markdown +++ b/source/_integrations/hikvisioncam.markdown @@ -5,6 +5,8 @@ logo: hikvision.png ha_category: - Switch ha_release: pre 0.7 +ha_codeowners: + - '@fbradyirl' --- This `hikvisioncam` switch platform allows you to control your motion detection setting on your [Hikvision](https://www.hikvision.com/) camera. diff --git a/source/_integrations/hisense_aehw4a1.markdown b/source/_integrations/hisense_aehw4a1.markdown index cb65629e93d..e99a0f8b9b0 100644 --- a/source/_integrations/hisense_aehw4a1.markdown +++ b/source/_integrations/hisense_aehw4a1.markdown @@ -7,6 +7,8 @@ ha_category: - Climate ha_iot_class: Local Poll ha_config_flow: true +ha_codeowners: + - '@bannhead' --- The Hisense AEH-W4A1 is a WiFi module used to give WiFi connectivity to some Hisense ACs and rebranded models (Smart Cool, Beko and others). diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index f277e6af483..4153c68c9b2 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -6,6 +6,8 @@ ha_category: - History ha_release: pre 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `history` integration will track everything that is going on within Home diff --git a/source/_integrations/history_graph.markdown b/source/_integrations/history_graph.markdown index c13728d92a3..eebed5ca11a 100644 --- a/source/_integrations/history_graph.markdown +++ b/source/_integrations/history_graph.markdown @@ -6,6 +6,8 @@ ha_category: logo: home-assistant.png ha_release: 0.55 ha_quality_scale: internal +ha_codeowners: + - '@andrey-git' ---

    diff --git a/source/_integrations/hive.markdown b/source/_integrations/hive.markdown index bf9e3ed8106..70d97ea25ae 100644 --- a/source/_integrations/hive.markdown +++ b/source/_integrations/hive.markdown @@ -12,6 +12,9 @@ ha_category: - Water Heater ha_release: 0.59 ha_iot_class: Cloud Polling +ha_codeowners: + - '@Rendili' + - '@KJonline' --- The `hive` integration is the main integration to set up and integrate all supported Hive devices. Once configured with the minimum required details it will detect and add all Hive devices into Home Assistant, including support for multi-zone heating. diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 6293167b7df..9c728c8c7f6 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -4,6 +4,8 @@ description: Description of the homeassistant integration. logo: home-assistant.png ha_release: 0.0 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The Home Assistant integration provides generic implementations like the generic `homeassistant.turn_on`. diff --git a/source/_integrations/homekit_controller.markdown b/source/_integrations/homekit_controller.markdown index 81d7bf40072..b4f6058b6e7 100644 --- a/source/_integrations/homekit_controller.markdown +++ b/source/_integrations/homekit_controller.markdown @@ -15,6 +15,8 @@ ha_category: ha_release: 0.68 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@Jc2k' --- The [HomeKit](https://developer.apple.com/homekit/) controller integration allows you to connect accessories with the "Works with HomeKit" logo to Home Assistant. This integration should not be confused with the [HomeKit](/integrations/homekit/) integration, which allows you to control Home Assistant devices via HomeKit. diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown index cfbe2fd88bf..06073bf32c8 100644 --- a/source/_integrations/homematic.markdown +++ b/source/_integrations/homematic.markdown @@ -14,6 +14,9 @@ ha_category: - Switch ha_iot_class: Local Push ha_release: 0.23 +ha_codeowners: + - '@pvizeli' + - '@danielperna84' --- The [Homematic](https://www.homematic.com/) integration provides bi-directional communication with your CCU/Homegear. It uses a XML-RPC connection to set values on devices and subscribes to receive events the devices and the CCU emit. diff --git a/source/_integrations/homematicip_cloud.markdown b/source/_integrations/homematicip_cloud.markdown index db11934c145..d8fc91df9c3 100644 --- a/source/_integrations/homematicip_cloud.markdown +++ b/source/_integrations/homematicip_cloud.markdown @@ -14,6 +14,8 @@ ha_category: ha_iot_class: Cloud Push ha_release: 0.66 ha_config_flow: true +ha_codeowners: + - '@SukramJ' --- The [HomematicIP](https://www.homematic-ip.com/) integration platform is used as an interface to the cloud server. Since there is no official documentation about this API, everything was done via reverse engineering. The [homematicip-rest-api](https://github.com/coreGreenberet/homematicip-rest-api) is used for communicating. Use at your own risk. diff --git a/source/_integrations/honeywell.markdown b/source/_integrations/honeywell.markdown index 5f766392a69..39180a40a5b 100644 --- a/source/_integrations/honeywell.markdown +++ b/source/_integrations/honeywell.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: pre 0.7 ha_iot_class: Cloud Polling +ha_codeowners: + - '@zxdavb' --- The `honeywell` climate platform integrates Home Assistant with _US-based_ [Honeywell Total Connect Comfort (TCC)](https://mytotalconnectcomfort.com/portal/) climate systems. diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index d8da56630e4..e628ba8932d 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -5,6 +5,8 @@ logo: html5.png ha_category: - Notifications ha_release: 0.27 +ha_codeowners: + - '@robbiet480' --- 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/_integrations/http.markdown b/source/_integrations/http.markdown index e905b9013d8..55f4b1f0559 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: pre 0.7 ha_iot_class: Local Push ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `http` integration serves all files and data required for the Home Assistant frontend. You only need to add this to your configuration file if you want to change any of the default settings. diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 8b08289514c..024d884837a 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -12,6 +12,8 @@ ha_category: ha_release: 0.79 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@scop' --- The Huawei LTE router and modem integration for Home Assistant allows you to observe and control [Huawei LTE devices](https://consumer.huawei.com/en/smart-home/). diff --git a/source/_integrations/huawei_router.markdown b/source/_integrations/huawei_router.markdown index c6f0ed37e5b..c8aaa0ff666 100644 --- a/source/_integrations/huawei_router.markdown +++ b/source/_integrations/huawei_router.markdown @@ -5,6 +5,8 @@ logo: huawei.svg ha_category: - Presence Detection ha_release: 0.51 +ha_codeowners: + - '@abmantis' --- 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/_integrations/hue.markdown b/source/_integrations/hue.markdown index d0c48268ae1..8a4274fe3b6 100644 --- a/source/_integrations/hue.markdown +++ b/source/_integrations/hue.markdown @@ -10,6 +10,8 @@ featured: true ha_release: '0.60' ha_config_flow: true ha_quality_scale: platinum +ha_codeowners: + - '@balloob' --- Philips Hue support is integrated into Home Assistant as a hub that can drive the light and sensor platforms. The preferred way to set up the Philips Hue platform is by enabling the [discovery component](/integrations/discovery/). diff --git a/source/_integrations/iaqualink.markdown b/source/_integrations/iaqualink.markdown index c0e880680aa..30a8411515d 100644 --- a/source/_integrations/iaqualink.markdown +++ b/source/_integrations/iaqualink.markdown @@ -11,6 +11,8 @@ ha_category: ha_release: 0.99 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@flz' --- [iAqualink](https://www.iaqualink.com/) by [Jandy](https://www.jandy.com/) allows you to control your pool anytime, anywhere. diff --git a/source/_integrations/ign_sismologia.markdown b/source/_integrations/ign_sismologia.markdown index 80a60575862..30ac27c9be1 100644 --- a/source/_integrations/ign_sismologia.markdown +++ b/source/_integrations/ign_sismologia.markdown @@ -6,6 +6,8 @@ ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.92 +ha_codeowners: + - '@exxamalte' --- The `ign_sismologia` platform lets you integrate a GeoRSS feed provided by the diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown index fa41cecaf8b..2ea0bef5eb9 100644 --- a/source/_integrations/incomfort.markdown +++ b/source/_integrations/incomfort.markdown @@ -9,6 +9,8 @@ ha_category: - Binary Sensor ha_release: 0.93 ha_iot_class: Local Polling +ha_codeowners: + - '@zxdavb' --- The `incomfort` integration links Home Assistant with your Intergas Lan2RF gateway, including the boiler and any room thermostats attached to it. diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown index 6c6289d1b9d..77d0d1e579e 100644 --- a/source/_integrations/influxdb.markdown +++ b/source/_integrations/influxdb.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.9 ha_iot_class: Configurable +ha_codeowners: + - '@fabaff' --- The `influxdb` integration makes it possible to transfer all state changes to an external [InfluxDB](https://influxdb.com/) database. See the [official installation documentation](https://docs.influxdata.com/influxdb/v1.7/introduction/installation/) for how to set up an InfluxDB database, or if you're using Hass.io, [there is a community add-on](https://community.home-assistant.io/t/community-hass-io-add-on-influxdb/54491) available. diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index ff7faac63a7..5d481e4c18e 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.11 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `input_boolean` integration allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 5348cf2dd64..a857135c556 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.55 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `input_datetime` integration allows the user to define date and time values diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 2dcf533fa96..0c8b7ed65b7 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.55 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well. diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index 2f6e4773bc3..30992a9fa98 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.13 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `input_select` integration allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index 09c789b0e96..93c3c765cfa 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.53 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `input_text` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. It can also be configured in password mode (obscured text). diff --git a/source/_integrations/integration.markdown b/source/_integrations/integration.markdown index ea2e7f2b55d..585f83b52d3 100644 --- a/source/_integrations/integration.markdown +++ b/source/_integrations/integration.markdown @@ -8,6 +8,8 @@ ha_release: 0.87 ha_iot_class: Local Push logo: integral.png ha_quality_scale: internal +ha_codeowners: + - '@dgomes' --- 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. The integration sensors is updated upon changes of the **source**. Fast sampling source sensors provide better results. In this implementation, the default is the Trapezoidal method, but Left and Right methods can optionally be used. diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 64594d90b7a..c1edb27575b 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.31 ha_iot_class: Configurable ha_config_flow: true +ha_codeowners: + - '@robbiet480' --- The `ios` integration is the Home Assistant part for using the iOS companion app. For further details please check the [iOS section](/docs/ecosystem/ios/) in the documentation for further details. diff --git a/source/_integrations/iperf3.markdown b/source/_integrations/iperf3.markdown index 20956a24be0..19daab71d12 100644 --- a/source/_integrations/iperf3.markdown +++ b/source/_integrations/iperf3.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.71 ha_iot_class: Local Polling +ha_codeowners: + - '@rohankapoorcom' --- The `iperf3` sensor integration allows you to measure network bandwidth performance against a private or public [Iperf3](https://software.es.net/iperf/index.html) server. diff --git a/source/_integrations/ipma.markdown b/source/_integrations/ipma.markdown index 081f419db1e..d067a858a37 100644 --- a/source/_integrations/ipma.markdown +++ b/source/_integrations/ipma.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.72 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@dgomes' --- The `ipma` weather platform uses the [Instituto Português do Mar e Atmosfera](https://www.ipma.pt/) as a source for current and forecast meteorological data. diff --git a/source/_integrations/iqvia.markdown b/source/_integrations/iqvia.markdown index fd4baf48608..fca24f1c3c5 100644 --- a/source/_integrations/iqvia.markdown +++ b/source/_integrations/iqvia.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.63 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `iqvia` sensor platform collects and displays allergy, asthma and disease diff --git a/source/_integrations/irish_rail_transport.markdown b/source/_integrations/irish_rail_transport.markdown index a4f39244e68..f61d4e61ef3 100644 --- a/source/_integrations/irish_rail_transport.markdown +++ b/source/_integrations/irish_rail_transport.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.57 +ha_codeowners: + - '@ttroy50' --- 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/_integrations/izone.markdown b/source/_integrations/izone.markdown index fb053bc7eac..6975626885b 100644 --- a/source/_integrations/izone.markdown +++ b/source/_integrations/izone.markdown @@ -6,6 +6,8 @@ ha_category: ha_release: '0.100' ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@Swamp-Ig' --- The `iZone` integration allows access of control of a local [iZone](https://izone.com.au/) ducted reverse-cycle climate control devices. These are largely available in Australia. diff --git a/source/_integrations/jewish_calendar.markdown b/source/_integrations/jewish_calendar.markdown index 558d67e9813..bf43f8e8622 100644 --- a/source/_integrations/jewish_calendar.markdown +++ b/source/_integrations/jewish_calendar.markdown @@ -5,6 +5,8 @@ ha_category: - Calendar ha_iot_class: Local Polling ha_release: 0.79 +ha_codeowners: + - '@tsvi' --- 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/_integrations/juicenet.markdown b/source/_integrations/juicenet.markdown index 4cc956733de..9ae1709b0c7 100644 --- a/source/_integrations/juicenet.markdown +++ b/source/_integrations/juicenet.markdown @@ -9,6 +9,8 @@ ha_category: - Switch ha_iot_class: Cloud Polling ha_release: 0.47 +ha_codeowners: + - '@jesserockz' --- The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account. It also exposes a switch allowing you to charge your car now instead of waiting for the pre-set schedule. diff --git a/source/_integrations/kaiterra.markdown b/source/_integrations/kaiterra.markdown index 6ac053c1e85..ffc56575f6d 100644 --- a/source/_integrations/kaiterra.markdown +++ b/source/_integrations/kaiterra.markdown @@ -6,6 +6,8 @@ ha_iot_class: Cloud Polling ha_category: - Health ha_release: '0.100' +ha_codeowners: + - '@Michsior14' --- The `kaiterra` integration allows you to view the readings from your Laser Egg or Sensedge device using the [Kaiterra REST API](https://www.kaiterra.com/dev/). diff --git a/source/_integrations/keba.markdown b/source/_integrations/keba.markdown index 01abb5d82c3..80e7a9e06a3 100644 --- a/source/_integrations/keba.markdown +++ b/source/_integrations/keba.markdown @@ -7,6 +7,8 @@ ha_category: - Lock - Sensor ha_release: 0.98 +ha_codeowners: + - '@dannerph' --- The `keba` integrates your Keba charging station (wallbox) into your Home Assistant instance. It was tested with a BMW Wallbox but should also work with a Keba P20/P30 according to the developers [manual](https://www.keba.com/web/downloads/e-mobility/KeContact_P20_P30_UDP_ProgrGuide_en.pdf). The fetching interval to the charging station is set to 5 seconds, same as in the official mobile app. diff --git a/source/_integrations/keenetic_ndms2.markdown b/source/_integrations/keenetic_ndms2.markdown index 674a705ea48..113b0d97fe1 100644 --- a/source/_integrations/keenetic_ndms2.markdown +++ b/source/_integrations/keenetic_ndms2.markdown @@ -5,6 +5,8 @@ logo: keenetic.png ha_category: - Presence Detection ha_release: 0.54 +ha_codeowners: + - '@foxel' --- This integration offers presence detection by examining devices connected to a [Keenetic](https://keenetic.net/) diff --git a/source/_integrations/keyboard_remote.markdown b/source/_integrations/keyboard_remote.markdown index 156af58d678..4c58c8d2531 100644 --- a/source/_integrations/keyboard_remote.markdown +++ b/source/_integrations/keyboard_remote.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.29 ha_iot_class: Local Push +ha_codeowners: + - '@bendavid' --- Receive signals from a keyboard and use it as a remote control. diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 22cc7e35bae..056ad86f69b 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -6,6 +6,8 @@ ha_category: - Hub ha_release: 0.24 ha_iot_class: Local Push +ha_codeowners: + - '@Julius2342' --- The [KNX](https://www.knx.org) integration for Home Assistant allows you to connect to a KNX/IP devices. diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown index a126d29be3a..870979b3f4a 100644 --- a/source/_integrations/kodi.markdown +++ b/source/_integrations/kodi.markdown @@ -7,6 +7,8 @@ ha_category: - Media Player ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@armills' --- The `kodi` platform allows you to control a [Kodi](https://kodi.tv/) multimedia system from Home Assistant. diff --git a/source/_integrations/konnected.markdown b/source/_integrations/konnected.markdown index 11587b534ad..876f2913231 100644 --- a/source/_integrations/konnected.markdown +++ b/source/_integrations/konnected.markdown @@ -8,6 +8,8 @@ ha_category: - Switch - Sensor ha_release: '0.70' +ha_codeowners: + - '@heythisisnate' --- The `konnected` integration lets you connect wired sensors and switches to a NodeMCU ESP8226 based device running the [open source Konnected software](https://github.com/konnected-io/konnected-security). Reuse the wired sensors and siren from an old or pre-wired alarm system installation and integrate them directly into Home Assistant. diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown index 96be54019d7..fbb78b631f0 100644 --- a/source/_integrations/lametric.markdown +++ b/source/_integrations/lametric.markdown @@ -6,6 +6,8 @@ ha_category: - Hub - Notifications ha_release: 0.49 +ha_codeowners: + - '@robbiet480' --- [LaMetric Time](https://lametric.com/) is a smart clock that can be used to access applications, listen to web radio and display notifications. diff --git a/source/_integrations/launch_library.markdown b/source/_integrations/launch_library.markdown index 9ca4c2f93f0..aa94baab894 100644 --- a/source/_integrations/launch_library.markdown +++ b/source/_integrations/launch_library.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.83 +ha_codeowners: + - '@ludeeus' --- The `launch_library` sensor will provide you with information about the next planned space launch. diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown index f40ac157811..f31bf090cf1 100644 --- a/source/_integrations/lcn.markdown +++ b/source/_integrations/lcn.markdown @@ -13,6 +13,8 @@ ha_category: - Switch ha_release: 0.85 ha_iot_class: Local Push +ha_codeowners: + - '@alengwenus' --- The `lcn` integration for Home Assistant allows you to connect to [LCN](https://www.lcn.eu/) hardware devices. diff --git a/source/_integrations/life360.markdown b/source/_integrations/life360.markdown index 131b8d3d70f..55bdcee2609 100644 --- a/source/_integrations/life360.markdown +++ b/source/_integrations/life360.markdown @@ -7,6 +7,8 @@ ha_config_flow: true ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_codeowners: + - '@pnbruckner' --- The `life360` integration allows you to detect presence using the [unofficial API](#disclaimer) of [Life360](https://www.life360.com/). diff --git a/source/_integrations/linky.markdown b/source/_integrations/linky.markdown index 6c0bfa3c1f4..913563e68eb 100644 --- a/source/_integrations/linky.markdown +++ b/source/_integrations/linky.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@Quentame' --- The `linky` sensor platform is retrieving the consumption of your home from the [Linky electric meter](https://www.enedis.fr/linky-compteur-communicant). diff --git a/source/_integrations/linux_battery.markdown b/source/_integrations/linux_battery.markdown index 8b242932bce..2fe86fbe4a5 100644 --- a/source/_integrations/linux_battery.markdown +++ b/source/_integrations/linux_battery.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_release: 0.28 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- 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/_integrations/liveboxplaytv.markdown b/source/_integrations/liveboxplaytv.markdown index 6310ef89ffe..3c481370564 100644 --- a/source/_integrations/liveboxplaytv.markdown +++ b/source/_integrations/liveboxplaytv.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.38 ha_iot_class: Local Polling +ha_codeowners: + - '@pschmitt' --- The `liveboxplaytv` platform allows you to control [Orange Livebox Play TV appliances](https://boutique.orange.fr/internet/decodeur-tv-livebox). diff --git a/source/_integrations/logger.markdown b/source/_integrations/logger.markdown index 7e4e293e331..3c997ae6ed0 100644 --- a/source/_integrations/logger.markdown +++ b/source/_integrations/logger.markdown @@ -6,6 +6,8 @@ ha_category: - Utility ha_release: 0.8 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `logger` integration lets you define the level of logging activities in Home diff --git a/source/_integrations/logi_circle.markdown b/source/_integrations/logi_circle.markdown index eceb38f2a78..50343dc88a9 100644 --- a/source/_integrations/logi_circle.markdown +++ b/source/_integrations/logi_circle.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.79 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@evanjd' --- The `logi_circle` implementation allows you to integrate your [Logi Circle](https://circle.logi.com/) cameras in Home Assistant. To connect Logi Circle, you will have to [sign up for API access](#requesting-api-access) and get a `client_id`, `client_secret` and `api_key`. diff --git a/source/_integrations/luci.markdown b/source/_integrations/luci.markdown index b89764bb979..bc47df1d97b 100644 --- a/source/_integrations/luci.markdown +++ b/source/_integrations/luci.markdown @@ -5,6 +5,9 @@ logo: openwrt.png ha_category: - Presence Detection ha_release: pre 0.7 +ha_codeowners: + - '@fbradyirl' + - '@mzdrale' --- _This is one of multiple ways we support OpenWRT. For an overview, see [openwrt](/integrations/openwrt/)._ diff --git a/source/_integrations/luftdaten.markdown b/source/_integrations/luftdaten.markdown index cdef44e2c51..b6f46f8cb81 100644 --- a/source/_integrations/luftdaten.markdown +++ b/source/_integrations/luftdaten.markdown @@ -9,6 +9,8 @@ ha_release: 0.82 ha_iot_class: Cloud Polling ha_config_flow: true ha_quality_scale: gold +ha_codeowners: + - '@fabaff' --- The `luftdaten` integration will query the open data API of [luftdaten.info](https://luftdaten.info/) to monitor air quality and other weather data from a specific (self build) sensor station. diff --git a/source/_integrations/lupusec.markdown b/source/_integrations/lupusec.markdown index 3bef553dc17..fecabb37fce 100644 --- a/source/_integrations/lupusec.markdown +++ b/source/_integrations/lupusec.markdown @@ -9,6 +9,8 @@ ha_category: - Switch ha_release: 0.83 ha_iot_class: Local Polling +ha_codeowners: + - '@majuss' --- The `lupusec` integration allows the user to integrate their Lupusec alarm control panel and ultimately all connected sensors and other devices. For more information about the LUPUS-Electronics security system please visit their [website](https://www.lupus-electronics.de). diff --git a/source/_integrations/lutron.markdown b/source/_integrations/lutron.markdown index 71db1abe85d..ae9988f9570 100644 --- a/source/_integrations/lutron.markdown +++ b/source/_integrations/lutron.markdown @@ -10,6 +10,8 @@ ha_category: - Switch ha_release: 0.37 ha_iot_class: Local Polling +ha_codeowners: + - '@JonGilmore' --- [Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron` integration in Home Assistant is responsible for communicating with the main hub for these systems. diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index 575c7066058..ab0336fd893 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -5,6 +5,8 @@ logo: mastodon.png ha_category: - Notifications ha_release: 0.67 +ha_codeowners: + - '@fabaff' --- The `mastodon` platform uses [Mastodon](https://joinmastodon.org/) to deliver notifications from Home Assistant. diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown index d0abc606304..d676ea53061 100644 --- a/source/_integrations/matrix.markdown +++ b/source/_integrations/matrix.markdown @@ -6,6 +6,8 @@ ha_category: - Hub - Notifications ha_release: 0.69 +ha_codeowners: + - '@tinloaf' --- This integration allows you to send messages to matrix rooms, as well as to react to messages in matrix rooms. Reacting to commands is accomplished by firing an event when one of the configured commands is triggered. diff --git a/source/_integrations/mcp23017.markdown b/source/_integrations/mcp23017.markdown index 6cc92cff501..08bd69a0593 100644 --- a/source/_integrations/mcp23017.markdown +++ b/source/_integrations/mcp23017.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@jardiamj' --- The `mcp23017` integration is the base for all related mcp23017 platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms please check their corresponding sections. diff --git a/source/_integrations/mediaroom.markdown b/source/_integrations/mediaroom.markdown index f5a5ca44bd3..d6ebf946b46 100644 --- a/source/_integrations/mediaroom.markdown +++ b/source/_integrations/mediaroom.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.63 +ha_codeowners: + - '@dgomes' --- The `mediaroom` integration allows you to control a [Mediaroom](https://en.wikipedia.org/wiki/Ericsson_Mediaroom) Set-Top Box (STB) from Home Assistant. diff --git a/source/_integrations/melissa.markdown b/source/_integrations/melissa.markdown index cd850d9421b..1ac03359ddd 100644 --- a/source/_integrations/melissa.markdown +++ b/source/_integrations/melissa.markdown @@ -7,6 +7,8 @@ ha_category: - Climate ha_release: 0.63 ha_iot_class: Cloud Polling +ha_codeowners: + - '@kennedyshead' --- The `melissa` integration is the main integration to connect to a [Melissa Climate](https://seemelissa.com/) A/C control. diff --git a/source/_integrations/met.markdown b/source/_integrations/met.markdown index fcd4519e3ed..0ba8d0c4a78 100644 --- a/source/_integrations/met.markdown +++ b/source/_integrations/met.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.79 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@danielhiversen' --- 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/_integrations/meteo_france.markdown b/source/_integrations/meteo_france.markdown index 6979a314974..a9a491f4c4c 100644 --- a/source/_integrations/meteo_france.markdown +++ b/source/_integrations/meteo_france.markdown @@ -8,6 +8,9 @@ ha_category: - Hub - Sensor - Weather +ha_codeowners: + - '@victorcerutti' + - '@oncleben31' --- The `meteo_france` integration uses the [Météo-France](http://www.meteofrance.com/) web service as a source for meteorological data for your location. The location is based on the `city` configured in your `configuration.yaml` file. diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown index 10736129440..058e6d3cc5b 100644 --- a/source/_integrations/meteoalarm.markdown +++ b/source/_integrations/meteoalarm.markdown @@ -5,6 +5,8 @@ logo: meteoalarm.png ha_category: Binary Sensor ha_release: 0.93 ha_iot_class: Local Polling +ha_codeowners: + - '@rolfberkenbosch' --- The `MeteoAlarm` platform allows one to watch for weather alerts in europe from [MeteoAlarm](https://www.meteoalarm.eu) (EUMETNET). To use this binary sensor, you need the two digits of your country and the province name from [MeteoAlarm](https://www.meteoalarm.eu). Please note that you need to write the exact details from the website with capitals. diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown index d6f3d6b8ef5..390adfaa6d5 100644 --- a/source/_integrations/miflora.markdown +++ b/source/_integrations/miflora.markdown @@ -6,6 +6,9 @@ ha_category: - Environment ha_release: 0.29 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' + - '@ChristianKuehnel' --- The `miflora` sensor platform allows one to monitor plant soil and air conditions. The [Mi Flora plant sensor](https://gadget-freakz.com/product/xiaomi-mi-flora-plant-sensor/) 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/_integrations/mill.markdown b/source/_integrations/mill.markdown index 361ec8a3f77..72b5b96beb8 100644 --- a/source/_integrations/mill.markdown +++ b/source/_integrations/mill.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: 0.81 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielhiversen' --- Integrates Mill heater into Home Assistant. diff --git a/source/_integrations/min_max.markdown b/source/_integrations/min_max.markdown index 0852f08d381..4bc00b42ee8 100644 --- a/source/_integrations/min_max.markdown +++ b/source/_integrations/min_max.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.31 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- 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](/integrations/statistics) first. diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown index 6f645e8b3f1..ed9a5d835c0 100644 --- a/source/_integrations/minio.markdown +++ b/source/_integrations/minio.markdown @@ -5,6 +5,8 @@ logo: minio.png ha_category: Utility ha_iot_class: Cloud Push ha_release: 0.98 +ha_codeowners: + - '@tkislan' --- This integration adds interaction with [Minio](https://min.io). diff --git a/source/_integrations/mobile_app.markdown b/source/_integrations/mobile_app.markdown index 855e4c5b5c2..cb4e824df40 100644 --- a/source/_integrations/mobile_app.markdown +++ b/source/_integrations/mobile_app.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.89 ha_config_flow: true ha_quality_scale: internal +ha_codeowners: + - '@robbiet480' --- The Mobile App integration allows Home Assistant mobile apps to easily integrate with Home Assistant. diff --git a/source/_integrations/modbus.markdown b/source/_integrations/modbus.markdown index 78ce4162bfb..36fdf80aacc 100644 --- a/source/_integrations/modbus.markdown +++ b/source/_integrations/modbus.markdown @@ -6,6 +6,8 @@ ha_category: - Hub ha_release: pre 0.7 ha_iot_class: Local Push +ha_codeowners: + - '@adamchengtkc' --- [Modbus](http://www.modbus.org/) is a serial communication protocol to control PLCs (Programmable logic controller). diff --git a/source/_integrations/monoprice.markdown b/source/_integrations/monoprice.markdown index 52a0325d928..a780bb4b9a8 100644 --- a/source/_integrations/monoprice.markdown +++ b/source/_integrations/monoprice.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.56 ha_iot_class: Local Polling +ha_codeowners: + - '@etsinko' --- 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/_integrations/moon.markdown b/source/_integrations/moon.markdown index 2953eee8d85..c93ffb3738c 100644 --- a/source/_integrations/moon.markdown +++ b/source/_integrations/moon.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.38 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `moon` integration tracks the phases of the moon. diff --git a/source/_integrations/mpd.markdown b/source/_integrations/mpd.markdown index 159fea1a597..ee82fbb7391 100644 --- a/source/_integrations/mpd.markdown +++ b/source/_integrations/mpd.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: pre 0.7 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The `mpd` platform allows you to control a [Music Player Daemon](https://www.musicpd.org/) from Home Assistant. Unfortunately you will not be able to manipulate the playlist (add or delete songs) or add transitions between the songs. diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 9dffe1b8582..29a5034dd2c 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -8,6 +8,8 @@ featured: true ha_release: pre 0.7 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@home-assistant/core' --- MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things" connectivity protocol on top of TCP/IP. It allows extremely lightweight publish/subscribe messaging transport. diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index e21e7ed7ba0..6b989097562 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -5,6 +5,8 @@ logo: msteams.jpg ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@peroyvind' --- The `Microsoft Teams` platform allows you to send notifications from Home Assistant to a team channel in [Microsoft Teams](https://products.office.com/en-us/microsoft-teams/group-chat-software). diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown index 38ff09885a1..8cc7bc5cbcf 100644 --- a/source/_integrations/mysensors.markdown +++ b/source/_integrations/mysensors.markdown @@ -6,6 +6,8 @@ ha_category: - DIY ha_iot_class: Local Push ha_release: 0.73 +ha_codeowners: + - '@MartinHjelmare' --- The [MySensors](https://www.mysensors.org) project combines devices like Arduino, ESP8266, Raspberry Pi, NRF24L01+ and RFM69 to build affordable sensor networks. This integration will automatically add all available devices to Home Assistant, after [presentation](#presentation) is done. That is, you do not need to add anything to your configuration for the devices for them to be added. Go to the **states** section of the developer tools to find the devices that have been identified. diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index cb5168db425..c284299d48a 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: 0.43 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The `mystrom` light platform allows you to control your [myStrom](https://mystrom.ch/en/) WiFi Bulbs. diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index af7b11513e2..1623255ec73 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -10,6 +10,9 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.33 ha_config_flow: true +ha_codeowners: + - '@dshokouhi' + - '@Santobert' --- The `neato` integration allows you to control your [Neato Botvac Connected Robots](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). diff --git a/source/_integrations/nello.markdown b/source/_integrations/nello.markdown index 0daee023667..d2112f39426 100644 --- a/source/_integrations/nello.markdown +++ b/source/_integrations/nello.markdown @@ -6,6 +6,8 @@ ha_category: - Lock ha_release: 0.52 ha_iot_class: Cloud Polling +ha_codeowners: + - '@pschmitt' --- The `nello` platform allows you to control [Nello](https://www.nello.io) intercoms. diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown index 494d9c20550..c86b738f584 100644 --- a/source/_integrations/ness_alarm.markdown +++ b/source/_integrations/ness_alarm.markdown @@ -7,6 +7,8 @@ ha_category: - Binary Sensor ha_release: 0.85 ha_iot_class: Local Push +ha_codeowners: + - '@nickw444' --- The `ness_alarm` integration will allow Home Assistant users who own a Ness D8x/D16x alarm system to leverage their alarm system and its sensors to provide Home Assistant with information about their homes. Connectivity between Home Assistant and the alarm is accomplished through a IP232 module that must be connected to the alarm. diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 96299a41716..28549686d42 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -11,6 +11,8 @@ ha_category: ha_iot_class: Cloud Push ha_release: 0.7 ha_config_flow: true +ha_codeowners: + - '@awarecan' --- The Nest integration is the main integration to integrate all [Nest](https://nest.com/) related platforms. To connect Nest, you will have to [sign up for a developer account](https://developers.nest.com/products) and get a `client_id` and `client_secret`. diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index c28b7864344..ae746df86d8 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_release: 0.35 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- The `netdata` sensor platform allows you to display information collected by [Netdata](https://my-netdata.io/). diff --git a/source/_integrations/nextbus.markdown b/source/_integrations/nextbus.markdown index 475dcf2260a..b566cc6432b 100644 --- a/source/_integrations/nextbus.markdown +++ b/source/_integrations/nextbus.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_iot_class: Local Polling ha_release: 0.93 +ha_codeowners: + - '@vividboarder' --- The `nextbus` sensor will give you the next departure time and associated data from your public transit station/stop. The data comes from [NextBus](https://www.nextbus.com), which provides real time transit data for a number of transit authorities. diff --git a/source/_integrations/nilu.markdown b/source/_integrations/nilu.markdown index 0b38d1431dd..f93dbb238df 100644 --- a/source/_integrations/nilu.markdown +++ b/source/_integrations/nilu.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_iot_class: Cloud Polling ha_release: 0.87 +ha_codeowners: + - '@hfurubotten' --- 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/_integrations/nissan_leaf.markdown b/source/_integrations/nissan_leaf.markdown index d9e581eb295..17570ddd14f 100644 --- a/source/_integrations/nissan_leaf.markdown +++ b/source/_integrations/nissan_leaf.markdown @@ -6,6 +6,8 @@ ha_category: - Car ha_release: 0.89 ha_iot_class: Cloud Polling +ha_codeowners: + - '@filcole' --- The `nissan_leaf` integration offers integration with the [NissanConnect EV](https://youplus.nissan.co.uk/GB/en/YouPlus/ConnectedServices.html) cloud service. NissanConnect EV was previously known as Nissan Carwings. It offers: diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index d1ccd6f2073..44bd236d168 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: 0.85 +ha_codeowners: + - '@thibmaek' --- The `nmbs` platform will create sensors for monitoring travel time and information between 2 stations. diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index dcbe5719292..249e6c0d81b 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -5,6 +5,8 @@ logo: noip.png ha_category: - Network ha_release: 0.57 +ha_codeowners: + - '@fabaff' --- With the `no_ip` integration you can keep your current IP address in sync with your [NO-IP.com](https://www.noip.com) hostname or domain. diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown index 45357d0afd9..a698217140f 100644 --- a/source/_integrations/notify.markdown +++ b/source/_integrations/notify.markdown @@ -6,6 +6,8 @@ ha_category: - Notifications ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `notify` integration makes it possible to send notifications to a wide variety of platforms. To use it you have to setup at least one notification target (notifier), check the [integrations list](/integrations/#notifications) for one that fits your use case. diff --git a/source/_integrations/notion.markdown b/source/_integrations/notion.markdown index f89afc5261f..10e7bf5b8ac 100644 --- a/source/_integrations/notion.markdown +++ b/source/_integrations/notion.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.96 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `Notion` component retrieves data from [Notion](https://getnotion.com) wireless diff --git a/source/_integrations/nsw_fuel_station.markdown b/source/_integrations/nsw_fuel_station.markdown index 0e0524079e2..187e32b5bf8 100644 --- a/source/_integrations/nsw_fuel_station.markdown +++ b/source/_integrations/nsw_fuel_station.markdown @@ -6,6 +6,8 @@ ha_category: - Car ha_release: 0.72 ha_iot_class: Cloud Polling +ha_codeowners: + - '@nickw444' --- 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/_integrations/nsw_rural_fire_service_feed.markdown b/source/_integrations/nsw_rural_fire_service_feed.markdown index 79db9ec9000..3cb81cea930 100644 --- a/source/_integrations/nsw_rural_fire_service_feed.markdown +++ b/source/_integrations/nsw_rural_fire_service_feed.markdown @@ -6,6 +6,8 @@ ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.81 +ha_codeowners: + - '@exxamalte' --- 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/_integrations/nuki.markdown b/source/_integrations/nuki.markdown index bedc44cd9fa..b032b57b6b1 100644 --- a/source/_integrations/nuki.markdown +++ b/source/_integrations/nuki.markdown @@ -6,6 +6,8 @@ ha_category: - Lock ha_release: 0.38 ha_iot_class: Local Polling +ha_codeowners: + - '@pvizeli' --- 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/_integrations/nws.markdown b/source/_integrations/nws.markdown index dededa571e8..dce83748050 100644 --- a/source/_integrations/nws.markdown +++ b/source/_integrations/nws.markdown @@ -5,6 +5,8 @@ logo: nws.png ha_category: Weather ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@MatthewFlamm' --- The `nws` platform uses the [National Weather Service](https://www.weather.gov) web API as a source for meteorological data for your location. diff --git a/source/_integrations/nzbget.markdown b/source/_integrations/nzbget.markdown index f28cf8789b2..73227fcca4f 100644 --- a/source/_integrations/nzbget.markdown +++ b/source/_integrations/nzbget.markdown @@ -6,6 +6,8 @@ ha_category: logo: nzbget.png ha_iot_class: Local Polling ha_release: 0.17 +ha_codeowners: + - '@chriscla' --- The `nzbget` platform will allow you to monitor and control your downloads with [NZBGet](https://nzbget.net/) from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/obihai.markdown b/source/_integrations/obihai.markdown index c52cc5622ac..5ce241dac60 100644 --- a/source/_integrations/obihai.markdown +++ b/source/_integrations/obihai.markdown @@ -6,6 +6,8 @@ ha_iot_class: Local Polling ha_category: - Sensor ha_release: 0.99 +ha_codeowners: + - '@dshokouhi' --- The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section). diff --git a/source/_integrations/ohmconnect.markdown b/source/_integrations/ohmconnect.markdown index 68cb71aa4e2..49318b7cc66 100644 --- a/source/_integrations/ohmconnect.markdown +++ b/source/_integrations/ohmconnect.markdown @@ -6,6 +6,8 @@ ha_category: - Energy ha_iot_class: Cloud Polling ha_release: 0.26 +ha_codeowners: + - '@robbiet480' --- The `ohmconnect` sensor will show you the current [OhmConnect](https://www.ohmconnect.com/) status for the given OhmConnect ID. diff --git a/source/_integrations/ombi.markdown b/source/_integrations/ombi.markdown index be895a0d281..97e8dc7c888 100644 --- a/source/_integrations/ombi.markdown +++ b/source/_integrations/ombi.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: '0.100' ha_iot_class: Local Polling +ha_codeowners: + - '@larssont' --- The `Ombi` integration monitors data from your [Ombi](https://ombi.io) instance. diff --git a/source/_integrations/onboarding.markdown b/source/_integrations/onboarding.markdown index 70123cb48d4..0b388c10b1f 100644 --- a/source/_integrations/onboarding.markdown +++ b/source/_integrations/onboarding.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.73 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- This integration creates the endpoints for the onboarding that is built into Home Assistant. There are no configuration options for this integration directly. diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index cf5a1707a71..2af80d9b91c 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -10,6 +10,8 @@ ha_category: ha_release: 0.81 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@mvn23' --- The `opentherm_gw` integration is used to control the [OpenTherm Gateway](http://otgw.tclcode.com/) from Home Assistant. diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown index 3c55fbb161a..67a465e3fd5 100644 --- a/source/_integrations/openuv.markdown +++ b/source/_integrations/openuv.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.76 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `openuv` integration displays UV and Ozone data from [openuv.io](https://www.openuv.io/). diff --git a/source/_integrations/openweathermap.markdown b/source/_integrations/openweathermap.markdown index 5f3939d1c07..89a59a0a943 100644 --- a/source/_integrations/openweathermap.markdown +++ b/source/_integrations/openweathermap.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.32 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- The `openweathermap` weather platform uses [OpenWeatherMap](https://openweathermap.org/) as a source for current meteorological data for your location. diff --git a/source/_integrations/orangepi_gpio.markdown b/source/_integrations/orangepi_gpio.markdown index 7f62be175a1..fa8fee4ba6b 100644 --- a/source/_integrations/orangepi_gpio.markdown +++ b/source/_integrations/orangepi_gpio.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.93 ha_iot_class: Local Push logo: orange-pi.png +ha_codeowners: + - '@pascallj' --- The `orangepi_gpio` integration is the base for all related GPIO platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms please check their corresponding pages. diff --git a/source/_integrations/oru.markdown b/source/_integrations/oru.markdown index 1ae62482c48..05188fb9e14 100644 --- a/source/_integrations/oru.markdown +++ b/source/_integrations/oru.markdown @@ -6,6 +6,8 @@ ha_release: 0.101 ha_category: - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@bvlaicu' --- [Orange and Rockland Utility](https://oru.com) is an energy provider in NY and NJ, USA. diff --git a/source/_integrations/owlet.markdown b/source/_integrations/owlet.markdown index d02004fb1b0..ed2343c6557 100644 --- a/source/_integrations/owlet.markdown +++ b/source/_integrations/owlet.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_release: 0.89 ha_iot_class: Cloud Polling +ha_codeowners: + - '@oblogic7' --- [Owlet Care](https://owletcare.com/) baby monitors check your baby's oxygen level and heart rate while sleeping. diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown index 5f839685351..83fd4ee8388 100644 --- a/source/_integrations/panel_custom.markdown +++ b/source/_integrations/panel_custom.markdown @@ -6,6 +6,8 @@ ha_category: - Front End ha_release: 0.26 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' --- The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/en/frontend_creating_custom_panels.html). diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown index 7ef82fe5e34..352d019e6cb 100644 --- a/source/_integrations/panel_iframe.markdown +++ b/source/_integrations/panel_iframe.markdown @@ -6,6 +6,8 @@ ha_category: - Front End ha_release: 0.25 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/frontend' --- The `panel_iframe` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar and can contain external resources like the web frontend of your router, your monitoring system, or your media server. diff --git a/source/_integrations/pcal9535a.markdown b/source/_integrations/pcal9535a.markdown index 9789360d4a5..e53dddbad8c 100644 --- a/source/_integrations/pcal9535a.markdown +++ b/source/_integrations/pcal9535a.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: 0.102 ha_iot_class: Local Polling +ha_codeowners: + - '@Shulyaka' --- The `pcal9535a` integration is the base for all related pcal9535a platforms in Home Assistant. There is no setup needed for the integration itself, for the platforms, please check their corresponding sections. diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown index d083d98a10f..d35450625a5 100644 --- a/source/_integrations/persistent_notification.markdown +++ b/source/_integrations/persistent_notification.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.23 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `persistent_notification` integration can be used to show a notification on the frontend that has to be dismissed by the user. diff --git a/source/_integrations/philips_js.markdown b/source/_integrations/philips_js.markdown index 9f58e01e981..a32946bd45a 100644 --- a/source/_integrations/philips_js.markdown +++ b/source/_integrations/philips_js.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_iot_class: Local Polling ha_release: 0.34 +ha_codeowners: + - '@elupus' --- 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/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown index 3657176c359..bc3cc350fa4 100644 --- a/source/_integrations/pi_hole.markdown +++ b/source/_integrations/pi_hole.markdown @@ -6,6 +6,9 @@ ha_category: ha_iot_class: Local Polling logo: pi_hole.png ha_release: 0.28 +ha_codeowners: + - '@fabaff' + - '@johnluetke' --- The `pi_hole` integration allows you to retrieve statistics and interact with a single [Pi-hole](https://pi-hole.net/) system. diff --git a/source/_integrations/plaato.markdown b/source/_integrations/plaato.markdown index d9059f303bf..16fdf4cdb68 100644 --- a/source/_integrations/plaato.markdown +++ b/source/_integrations/plaato.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_iot_class: Cloud Push ha_config_flow: true +ha_codeowners: + - '@JohNan' --- This integration sets up integration with [Plaato Airlock](https://www.plaato.io/). diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown index c9243a18e79..1f389173ee2 100644 --- a/source/_integrations/plant.markdown +++ b/source/_integrations/plant.markdown @@ -6,6 +6,8 @@ ha_category: - Environment ha_release: 0.44 ha_quality_scale: internal +ha_codeowners: + - '@ChristianKuehnel' --- This`plant`component lets you merge moisture, conductivity, light intensity, temperature and battery level for a plant into a single UI element. It also supports setting minimum and maximum values for each measurement and will change its state to "problem" if it is not within those limits. diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 2cb80a2279e..b9e255c9e5d 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -9,6 +9,8 @@ featured: true ha_release: 0.7.4 ha_iot_class: Local Push ha_config_flow: true +ha_codeowners: + - '@jjlawren' --- The `plex` integration allows you to connect to a [Plex Media Server](https://plex.tv). Once connected, [Plex Clients](https://www.plex.tv/apps-devices/) playing media from the connected Plex Media Server will show up as [Media Players](/integrations/media_player/) and report playback status via a [Sensor](/integrations/sensor/) in Home Assistant. The Media Players will allow you to control media playback and see the current playing item. diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown index 122b2b56bfa..6ac354c9555 100644 --- a/source/_integrations/plugwise.markdown +++ b/source/_integrations/plugwise.markdown @@ -5,6 +5,10 @@ logo: plugwise.png ha_category: Climate ha_iot_class: Local Polling ha_release: 0.98 +ha_codeowners: + - '@laetificat' + - '@CoMPaTech' + - '@bouwew' --- This enables [Plugwise](https://plugwise.com) [Anna](https://www.plugwise.com/en_US/products/anna) thermostats to be integrated. This integration talks locally to your **Smile** interface, and you will need its password and IP address. diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown index d63815b234a..56b3165f155 100644 --- a/source/_integrations/point.markdown +++ b/source/_integrations/point.markdown @@ -11,6 +11,8 @@ ha_release: 0.83 ha_config_flow: true ha_iot_class: Cloud Polling ha_quality_scale: gold +ha_codeowners: + - '@fredrike' --- The Point hub enables integration with the [Minut Point](https://minut.com/). To connect with Point, you will have to [sign up for a developer account](https://minut.com/community/developers/) and get a `client_id` and `client_secret` with the `callback url` configured as your Home Assistant `base_url` + `/api/minut`, e.g. `http://localhost:8123/api/minut`. The `client_id` and `client_secret` should be used as below. diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown index d3c26b8afff..e41486f4221 100644 --- a/source/_integrations/proxmoxve.markdown +++ b/source/_integrations/proxmoxve.markdown @@ -6,6 +6,8 @@ ha_category: - Binary Sensor ha_release: 0.103 ha_iot_class: Local Polling +ha_codeowners: + - '@k4ds3' --- [Proxmox VE](https://www.proxmox.com/en/) is an open-source server virtualization environment. This integration allows you to poll various data from your instance. diff --git a/source/_integrations/ps4.markdown b/source/_integrations/ps4.markdown index cf46b6ef2c9..00d8ba8f3aa 100644 --- a/source/_integrations/ps4.markdown +++ b/source/_integrations/ps4.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.89 ha_config_flow: true ha_iot_class: Local Polling +ha_codeowners: + - '@ktnrg45' --- The `ps4` integration allows you to control a diff --git a/source/_integrations/ptvsd.markdown b/source/_integrations/ptvsd.markdown index 65690666604..ee4984f8485 100644 --- a/source/_integrations/ptvsd.markdown +++ b/source/_integrations/ptvsd.markdown @@ -5,6 +5,8 @@ logo: visual-studio.png ha_category: - Utility ha_release: 0.93 +ha_codeowners: + - '@swamp-ig' --- The `ptvsd` integration allows you to use the Visual Studio Code PTVSD debugger with Home Assistant. diff --git a/source/_integrations/push.markdown b/source/_integrations/push.markdown index 41c04faad00..e0b4b8f64dc 100644 --- a/source/_integrations/push.markdown +++ b/source/_integrations/push.markdown @@ -6,6 +6,8 @@ ha_category: - Camera ha_iot_class: Local Push ha_release: 0.74 +ha_codeowners: + - '@dgomes' --- 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/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown index cdab70e066e..132c332dc70 100644 --- a/source/_integrations/pvoutput.markdown +++ b/source/_integrations/pvoutput.markdown @@ -6,6 +6,8 @@ ha_category: - Energy ha_release: 0.33 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- The `pvoutput` sensor platform consumes information from [PVOutput](https://pvoutput.org/) which were uploaded by your solar photovoltaic (PV) system. diff --git a/source/_integrations/qld_bushfire.markdown b/source/_integrations/qld_bushfire.markdown index 01326c14500..1eb7c0835db 100644 --- a/source/_integrations/qld_bushfire.markdown +++ b/source/_integrations/qld_bushfire.markdown @@ -5,6 +5,8 @@ logo: geo_location.png ha_category: Geolocation ha_iot_class: Cloud Polling ha_release: 0.95 +ha_codeowners: + - '@exxamalte' --- The `qld_bushfire` platform lets you integrate a diff --git a/source/_integrations/qnap.markdown b/source/_integrations/qnap.markdown index fccb37311e1..9710c342fce 100644 --- a/source/_integrations/qnap.markdown +++ b/source/_integrations/qnap.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_release: 0.38 ha_iot_class: Local Polling +ha_codeowners: + - '@colinodell' --- This `qnap` sensor allows getting various statistics from your [QNAP NAS](https://www.qnap.com/en-us/). diff --git a/source/_integrations/quantum_gateway.markdown b/source/_integrations/quantum_gateway.markdown index 698f9a9fbfc..45e0502ce14 100644 --- a/source/_integrations/quantum_gateway.markdown +++ b/source/_integrations/quantum_gateway.markdown @@ -5,6 +5,8 @@ ha_category: - Presence Detection logo: fios.svg ha_release: 0.81 +ha_codeowners: + - '@cisasteelersfan' --- The `quantum_gateway` device tracker platform offers presence detection by looking at connected devices to a Verizon Fios gateway. diff --git a/source/_integrations/qwikswitch.markdown b/source/_integrations/qwikswitch.markdown index 1ff7eabed6f..ebceff31cd5 100644 --- a/source/_integrations/qwikswitch.markdown +++ b/source/_integrations/qwikswitch.markdown @@ -9,6 +9,8 @@ ha_category: - Sensor - Switch ha_release: '0.20' +ha_codeowners: + - '@kellerza' --- The `qwikswitch` integration is the main integration to integrate various [QwikSwitch](https://www.qwikswitch.co.za/) devices with Home Assistant. The integration requires the QSUSB Modem device and connects to the QS Mobile application. diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown index 2324b8201dc..3bcda2c5109 100644 --- a/source/_integrations/rainbird.markdown +++ b/source/_integrations/rainbird.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_release: 0.61 ha_iot_class: Local Polling +ha_codeowners: + - '@konikvranik' --- This `rainbird` integration allows interacting with [LNK WiFi](https://www.rainbird.com/products/lnk-wifi-module) module of the Rain Bird Irrigation system in Home Assistant. diff --git a/source/_integrations/raincloud.markdown b/source/_integrations/raincloud.markdown index 117e486aeb6..03be231d021 100644 --- a/source/_integrations/raincloud.markdown +++ b/source/_integrations/raincloud.markdown @@ -9,6 +9,8 @@ ha_category: - Switch ha_release: 0.55 ha_iot_class: Cloud Polling +ha_codeowners: + - '@vanstinator' --- The `raincloud` integration allows you to integrate your [Melnor RainCloud](https://wifiaquatimer.com) sprinkler system in Home Assistant. diff --git a/source/_integrations/rainforest_eagle.markdown b/source/_integrations/rainforest_eagle.markdown index 99fb073d605..91d608cbef6 100644 --- a/source/_integrations/rainforest_eagle.markdown +++ b/source/_integrations/rainforest_eagle.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.97 ha_iot_class: Local Polling +ha_codeowners: + - '@gtdiehl' --- A `sensor` platform for the [Rainforest Eagle-200](https://rainforestautomation.com/rfa-z114-eagle-200/) energy gateway. diff --git a/source/_integrations/rainmachine.markdown b/source/_integrations/rainmachine.markdown index 8099fd10019..4953a626e0a 100644 --- a/source/_integrations/rainmachine.markdown +++ b/source/_integrations/rainmachine.markdown @@ -10,6 +10,8 @@ ha_category: ha_release: 0.69 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `rainmachine` integration is the main integration to integrate all platforms related to [RainMachine smart Wi-Fi sprinkler controllers](https://www.rainmachine.com/). diff --git a/source/_integrations/random.markdown b/source/_integrations/random.markdown index 1a2b31c2426..ca2ab90c4e1 100644 --- a/source/_integrations/random.markdown +++ b/source/_integrations/random.markdown @@ -9,6 +9,8 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.32 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `random` integration simply creates random values or state. This can be useful if you want to test automation rules or run an interactive demo. It generates a new state every time it is polled. diff --git a/source/_integrations/repetier.markdown b/source/_integrations/repetier.markdown index 383195f370b..e0bb5eaed4c 100644 --- a/source/_integrations/repetier.markdown +++ b/source/_integrations/repetier.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@MTrab' --- [Repetier-Server](https://www.repetier-server.com/) is a 3D printer/CNC server, able to control multiple devices on the same server. diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 7f4a9bc7025..451b990f442 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -5,6 +5,8 @@ logo: rfxtrx.png ha_category: - Hub ha_release: pre 0.7 +ha_codeowners: + - '@danielhiversen' --- The `rfxtrx` integration supports RFXtrx devices by [RFXCOM](http://www.rfxcom.com), which communicate in the frequency range of 433.92 MHz. diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown index 14aae2329e1..fb479608d39 100644 --- a/source/_integrations/rmvtransport.markdown +++ b/source/_integrations/rmvtransport.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_release: 0.76 ha_iot_class: Cloud Polling +ha_codeowners: + - '@cgtobi' --- 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/_integrations/roomba.markdown b/source/_integrations/roomba.markdown index faf32d2ca13..2b926c97d94 100644 --- a/source/_integrations/roomba.markdown +++ b/source/_integrations/roomba.markdown @@ -5,6 +5,8 @@ logo: irobot_roomba.png ha_category: - Vacuum ha_release: 0.51 +ha_codeowners: + - '@pschmitt' --- The `roomba` integration allows you to control your [iRobot Roomba](https://www.irobot.com/For-the-Home/Vacuuming/Roomba.aspx) vacuum. diff --git a/source/_integrations/saj.markdown b/source/_integrations/saj.markdown index c82d374de06..ed26f24005b 100644 --- a/source/_integrations/saj.markdown +++ b/source/_integrations/saj.markdown @@ -6,6 +6,8 @@ ha_category: logo: saj.png ha_iot_class: Local Polling ha_release: '0.100' +ha_codeowners: + - '@fredericvl' --- The `saj` sensor will poll a [SAJ](https://www.saj-electric.com/) solar inverter and present the values as sensors in Home Assistant. diff --git a/source/_integrations/samsungtv.markdown b/source/_integrations/samsungtv.markdown index 24e1da05fcd..f694e0aa0e4 100644 --- a/source/_integrations/samsungtv.markdown +++ b/source/_integrations/samsungtv.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.13 ha_iot_class: Local Polling +ha_codeowners: + - '@escoand' --- The `samsungtv` platform allows you to control a [Samsung Smart TV](https://www.samsung.com/uk/tvs/all-tvs/). diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 7ee5009b04f..fcc4604ea1b 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -6,6 +6,8 @@ ha_category: - Organization ha_release: 0.15 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- You can create scenes that capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red. diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown index 31ae99af61a..5364b178c11 100644 --- a/source/_integrations/scrape.markdown +++ b/source/_integrations/scrape.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: 0.31 ha_iot_class: Cloud Polling +ha_codeowners: + - '@fabaff' --- 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/_integrations/script.markdown b/source/_integrations/script.markdown index 082bca9f227..0e16ecc7c40 100644 --- a/source/_integrations/script.markdown +++ b/source/_integrations/script.markdown @@ -6,6 +6,8 @@ ha_category: - Automation ha_release: 0.7 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `script` integration allows users to specify a sequence of actions to be executed by Home Assistant. These are run when you turn the script on. The script integration will create an entity for each script and allow them to be controlled via services. diff --git a/source/_integrations/sense.markdown b/source/_integrations/sense.markdown index 9b8483130c3..7b547e153f4 100644 --- a/source/_integrations/sense.markdown +++ b/source/_integrations/sense.markdown @@ -8,6 +8,8 @@ ha_category: - Sensor ha_iot_class: Cloud Polling ha_release: 0.82 +ha_codeowners: + - '@kbickar' --- Integrate your [Sense](https://sense.com) meter information into Home Assistant. diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown index 7f2e8cf3d0c..35627385e29 100644 --- a/source/_integrations/sensibo.markdown +++ b/source/_integrations/sensibo.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: 0.44 ha_iot_class: Cloud Polling +ha_codeowners: + - '@andrey-git' --- Integrates [Sensibo](https://sensibo.com) Air Conditioning controller into Home Assistant. diff --git a/source/_integrations/serial.markdown b/source/_integrations/serial.markdown index 44c40ad9a3c..e405e87b5ac 100644 --- a/source/_integrations/serial.markdown +++ b/source/_integrations/serial.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: 0.56 ha_iot_class: Local Polling +ha_codeowners: + - '@fabaff' --- 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/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown index ad0be6bc2b1..21a56a4ff76 100644 --- a/source/_integrations/seventeentrack.markdown +++ b/source/_integrations/seventeentrack.markdown @@ -6,6 +6,8 @@ ha_category: - Postal Service ha_release: 0.83 ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' --- 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/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index ca449b39155..8ba7d934d54 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -6,6 +6,8 @@ ha_category: logo: home-assistant.png ha_release: 0.7.6 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- This integration can expose regular shell commands as services. Services can be called from a [script] or in [automation]. diff --git a/source/_integrations/shiftr.markdown b/source/_integrations/shiftr.markdown index 23fd4d88bc1..cbb91afefb2 100644 --- a/source/_integrations/shiftr.markdown +++ b/source/_integrations/shiftr.markdown @@ -5,6 +5,8 @@ logo: shiftr.png ha_category: - History ha_release: 0.48 +ha_codeowners: + - '@fabaff' --- The `shiftr` integration makes it possible to transfer details collected with Home Assistant to [Shiftr.io](https://shiftr.io) and visualize the flow of the information. Keep in mind that your details will be public! diff --git a/source/_integrations/shodan.markdown b/source/_integrations/shodan.markdown index abbe49c239e..3032528dff8 100644 --- a/source/_integrations/shodan.markdown +++ b/source/_integrations/shodan.markdown @@ -6,6 +6,8 @@ ha_category: ha_iot_class: Cloud Polling logo: shodan.png ha_release: 0.51 +ha_codeowners: + - '@fabaff' --- The `shodan` sensor platform is displaying the total of result of a diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown index 5d9364004ea..fab3604c3e5 100644 --- a/source/_integrations/simplisafe.markdown +++ b/source/_integrations/simplisafe.markdown @@ -7,6 +7,8 @@ ha_category: - Alarm - Lock ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `simplisafe` integration integrates [SimpliSafe home security](https://simplisafe.com) (V2 and V3) systems into Home Assistant. Multiple SimpliSafe accounts can be accommodated. diff --git a/source/_integrations/sinch.markdown b/source/_integrations/sinch.markdown index 67af31b37b1..ab425eb9c00 100644 --- a/source/_integrations/sinch.markdown +++ b/source/_integrations/sinch.markdown @@ -5,6 +5,8 @@ logo: sinch.png ha_category: - Notifications ha_release: 0.101 +ha_codeowners: + - '@bendikrb' --- The `sinch` platform uses [Sinch](https://www.sinch.com/products/messaging/sms/) to deliver notifications from Home Assistant. diff --git a/source/_integrations/slide.markdown b/source/_integrations/slide.markdown index 5d2a0057573..d14afc1436f 100644 --- a/source/_integrations/slide.markdown +++ b/source/_integrations/slide.markdown @@ -7,6 +7,8 @@ ha_category: - Cover ha_iot_class: Cloud Polling ha_release: 0.99 +ha_codeowners: + - '@ualex73' --- The `slide` implementation allows you to integrate your [slide.store](https://slide.store/) devices in Home Assistant using the [official API](https://documenter.getpostman.com/view/6223391/S1Lu2pSf?version=latest). diff --git a/source/_integrations/sma.markdown b/source/_integrations/sma.markdown index 0ee8835bd0f..07c708eeabe 100644 --- a/source/_integrations/sma.markdown +++ b/source/_integrations/sma.markdown @@ -6,6 +6,8 @@ ha_category: logo: sma.png ha_iot_class: Local Polling ha_release: 0.36 +ha_codeowners: + - '@kellerza' --- The `sma` sensor will poll a [SMA](http://www.sma-solar.com/) [(US)](https://www.sma-america.com/) solar inverter and present the values as sensors (or attributes of sensors) in Home Assistant. diff --git a/source/_integrations/smarthab.markdown b/source/_integrations/smarthab.markdown index e15f339778e..5cf38554f1f 100644 --- a/source/_integrations/smarthab.markdown +++ b/source/_integrations/smarthab.markdown @@ -8,6 +8,8 @@ ha_category: - Cover - Light ha_iot_class: Cloud Polling +ha_codeowners: + - '@outadoc' --- If your home is fitted with [SmartHab](https://www.smarthab.fr/en/home/)'s diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown index b6e1d9caaab..e956be88351 100644 --- a/source/_integrations/smartthings.markdown +++ b/source/_integrations/smartthings.markdown @@ -17,6 +17,8 @@ ha_category: ha_release: 0.87 ha_iot_class: Cloud Push ha_config_flow: true +ha_codeowners: + - '@andrewsayre' --- Samsung SmartThings is integrated into Home Assistant through the SmartThings Cloud API. The SmartThings integration is the main integration to integrate all SmartThings related platforms. The basic features of this integration include: diff --git a/source/_integrations/smarty.markdown b/source/_integrations/smarty.markdown index 4cdeab028aa..9057156506d 100644 --- a/source/_integrations/smarty.markdown +++ b/source/_integrations/smarty.markdown @@ -7,6 +7,8 @@ ha_category: - Fan - Sensor ha_release: 0.95 +ha_codeowners: + - '@z0mbieprocess' --- The `smarty` integration lets you control Salda [Smarty](http://www.salda.lt/en/products/category/compact-counter-flow-units) ventilation units from Home Assistant. You need a [MB-GATEWAY](http://www.salda.lt/en/products/item/5637227077) or something similar to connect to your local network. diff --git a/source/_integrations/smtp.markdown b/source/_integrations/smtp.markdown index f1cfaa70b59..ee22f40b293 100644 --- a/source/_integrations/smtp.markdown +++ b/source/_integrations/smtp.markdown @@ -5,6 +5,8 @@ logo: smtp.png ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' --- The `smtp` platform allows you to deliver notifications from Home Assistant to an e-mail recipient. diff --git a/source/_integrations/solaredge_local.markdown b/source/_integrations/solaredge_local.markdown index d4662f6cb1a..560ff4e51a1 100644 --- a/source/_integrations/solaredge_local.markdown +++ b/source/_integrations/solaredge_local.markdown @@ -7,6 +7,9 @@ ha_category: - Energy ha_release: 0.95 ha_iot_class: Local Polling +ha_codeowners: + - '@drobtravels' + - '@scheric' --- The `solaredge_local` platform uses the local API available on some SolarEdge Inverters to allow you to get details from your SolarEdge solar power setup and integrate these into your Home Assistant installation. diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown index c9b0400dd4f..7e6ea1a1176 100644 --- a/source/_integrations/solarlog.markdown +++ b/source/_integrations/solarlog.markdown @@ -6,6 +6,8 @@ ha_category: Sensor ha_release: 0.101 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@Ernst79' --- The `solarlog` integration uses the open JSON interface on [Solar-Log PV monitoring systems](https://www.solar-log.com/) to allow you to get details from your Solar-Log device and integrate these into your Home Assistant installation. diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown index 2911be8f704..7e75822cfef 100644 --- a/source/_integrations/solax.markdown +++ b/source/_integrations/solax.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.94 ha_iot_class: Local Polling +ha_codeowners: + - '@squishykid' --- The `solax` integration connects home-assistant to Solax solar power inverters. Solax inverters may be connected to a home Wi-Fi network and expose a REST API. This integration retrieves information such as photovoltaic power production, battery levels and power, and how much power is being fed back into the grid. diff --git a/source/_integrations/soma.markdown b/source/_integrations/soma.markdown index 0caf1bd4017..4e8353a9288 100644 --- a/source/_integrations/soma.markdown +++ b/source/_integrations/soma.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Polling ha_config_flow: true ha_release: '0.100' +ha_codeowners: + - '@ratsept' --- The Soma integration will allow users to integrate their Soma Smarthome devices into Home Assistant using the Soma Connect hub. diff --git a/source/_integrations/somfy.markdown b/source/_integrations/somfy.markdown index d24b63a45ba..d83c0da0274 100644 --- a/source/_integrations/somfy.markdown +++ b/source/_integrations/somfy.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Cloud Polling ha_release: 0.95 ha_config_flow: true +ha_codeowners: + - '@tetienne' --- The Somfy integration will allow users to integrate their Somfy devices into Home Assistant using the [official API](https://developer.somfy.com/somfy-open-api/apis), unlike the [tahoma](/integrations/tahoma/) component. diff --git a/source/_integrations/songpal.markdown b/source/_integrations/songpal.markdown index 791a0437791..6ec8ebc69a0 100644 --- a/source/_integrations/songpal.markdown +++ b/source/_integrations/songpal.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_iot_class: Local Push ha_release: 0.65 +ha_codeowners: + - '@rytilahti' --- 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/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 54d762f29da..6d9cef1d863 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -5,6 +5,8 @@ logo: spaceapi.png ha_category: - Social ha_release: '0.70' +ha_codeowners: + - '@fabaff' --- The `spaceapi` integration allow Hackerspaces to expose information to web apps or any other application with the [SpaceAPI](http://spaceapi.net/). diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown index dc36955ae90..2832e271426 100644 --- a/source/_integrations/speedtestdotnet.markdown +++ b/source/_integrations/speedtestdotnet.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.13 ha_iot_class: Cloud Polling +ha_codeowners: + - '@rohankapoorcom' --- The `speedtestdotnet` integration uses the [Speedtest.net](https://speedtest.net/) web service to measure network bandwidth performance. diff --git a/source/_integrations/spider.markdown b/source/_integrations/spider.markdown index 4d52b9e2b05..19c9502dad9 100644 --- a/source/_integrations/spider.markdown +++ b/source/_integrations/spider.markdown @@ -8,6 +8,8 @@ ha_category: - Switch ha_iot_class: Cloud Polling ha_release: 0.75 +ha_codeowners: + - '@peternijssen' --- The `spider` integration is the main integration to integrate all [Itho Daalderop Spider](https://www.ithodaalderop.nl/spider-thermostaat) related platforms. You will need your Spider account information (username, password) to discover and control devices which are related to your account. diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index b0b83ddacf8..09ecabb4a61 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -5,6 +5,8 @@ logo: sql.png ha_category: - Utility ha_release: 0.63 +ha_codeowners: + - '@dgomes' --- 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/_integrations/starline.markdown b/source/_integrations/starline.markdown index 1efe9214c7e..3473d10880e 100644 --- a/source/_integrations/starline.markdown +++ b/source/_integrations/starline.markdown @@ -12,6 +12,8 @@ ha_category: ha_release: 0.103 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@anonym-tsk' --- The `starline` integration lets you retrieve data of your StarLine security system from the StarLine portal. You will need a working StarLine account. diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index f0d2103bb53..5db21438799 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Polling ha_release: '0.30' ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- 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_value`, `max_value`, `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/_integrations/stiebel_eltron.markdown b/source/_integrations/stiebel_eltron.markdown index 50adf5ddc9d..e8113c27878 100644 --- a/source/_integrations/stiebel_eltron.markdown +++ b/source/_integrations/stiebel_eltron.markdown @@ -6,6 +6,8 @@ ha_category: - Climate ha_release: 0.92 ha_iot_class: Local Polling +ha_codeowners: + - '@fucm' --- The `stiebel_eltron` integration lets you control integral ventilation or heat pump units of [STIEBEL ELTRON](https://www.stiebel-eltron.com). diff --git a/source/_integrations/stream.markdown b/source/_integrations/stream.markdown index 321bb160c31..93ad40bb06b 100644 --- a/source/_integrations/stream.markdown +++ b/source/_integrations/stream.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: '0.90' ha_iot_class: Local Push ha_quality_scale: internal +ha_codeowners: + - '@hunterjm' --- The `stream` integration provides a way to proxy live streams through Home Assistant. The integration currently only supports proxying H.264 source streams to the HLS format and requires at least FFmpeg >= 3.2. diff --git a/source/_integrations/stt.markdown b/source/_integrations/stt.markdown index 28004d35421..07b871f51cc 100644 --- a/source/_integrations/stt.markdown +++ b/source/_integrations/stt.markdown @@ -2,6 +2,8 @@ title: Speech-to-Text (STT) description: Instructions on how to set up Speech-to-Text (STT) with Home Assistant. ha_release: '0.102' +ha_codeowners: + - '@pvizeli' --- Speech-to-Text (SST) allows you to stream speech data to the SST API and get text back. diff --git a/source/_integrations/suez_water.markdown b/source/_integrations/suez_water.markdown index 79eac8e9e8b..dd49bd37d8f 100644 --- a/source/_integrations/suez_water.markdown +++ b/source/_integrations/suez_water.markdown @@ -6,6 +6,8 @@ ha_release: 0.97 ha_category: - Sensor ha_iot_class: Cloud Polling +ha_codeowners: + - '@ooii' --- The `suez_water` sensor platform fetches your last day consumption of water from the French water provider [Tout Sur Mon Eau](https://www.toutsurmoneau.fr) website. diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 6896382fcf9..19a7165cffe 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -6,6 +6,8 @@ ha_category: - Environment ha_release: pre 0.7 ha_quality_scale: internal +ha_codeowners: + - '@Swamp-Ig' --- The sun integration will use your current location to track if the sun is above or diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown index 15d8448af01..eb2597bbf34 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -7,6 +7,8 @@ ha_category: - Hub - Cover ha_iot_class: Cloud Polling +ha_codeowners: + - '@mwegrzynek' --- The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, it's own firmware and commercially available devices (produced for example by [Zamel](https://supla.zamel.pl/)) diff --git a/source/_integrations/swiss_hydrological_data.markdown b/source/_integrations/swiss_hydrological_data.markdown index c8e0464d6bf..ddbbefd241a 100644 --- a/source/_integrations/swiss_hydrological_data.markdown +++ b/source/_integrations/swiss_hydrological_data.markdown @@ -6,6 +6,8 @@ ha_category: - Environment ha_iot_class: Cloud Polling ha_release: 0.22 +ha_codeowners: + - '@fabaff' --- The `swiss_hydrological_data` sensor will show you details (temperature, level, and discharge) of rivers and lakes in Switzerland. diff --git a/source/_integrations/swiss_public_transport.markdown b/source/_integrations/swiss_public_transport.markdown index 33d6a0b97c7..d98ce930e2b 100644 --- a/source/_integrations/swiss_public_transport.markdown +++ b/source/_integrations/swiss_public_transport.markdown @@ -6,6 +6,8 @@ ha_category: - Transport ha_iot_class: Cloud Polling ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' --- 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/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown index 45f7e1f3ce5..3a8a86debf8 100644 --- a/source/_integrations/switchbot.markdown +++ b/source/_integrations/switchbot.markdown @@ -6,6 +6,8 @@ ha_category: - Switch ha_release: 0.78 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' --- The `switchbot` switch platform allows you to control Switchbot [devices](https://www.switch-bot.com/). diff --git a/source/_integrations/switcher_kis.markdown b/source/_integrations/switcher_kis.markdown index 4e0131d0f56..57af9f7ec7f 100644 --- a/source/_integrations/switcher_kis.markdown +++ b/source/_integrations/switcher_kis.markdown @@ -6,6 +6,8 @@ ha_category: - Switch ha_release: 0.93 ha_iot_class: Local Push +ha_codeowners: + - '@tomerfi' --- This `Switcher` integration allows you to control the [Switcher V2 Water Heater](https://www.switcher.co.il/). diff --git a/source/_integrations/switchmate.markdown b/source/_integrations/switchmate.markdown index dae2699403f..cdbe3d98aff 100644 --- a/source/_integrations/switchmate.markdown +++ b/source/_integrations/switchmate.markdown @@ -6,6 +6,8 @@ ha_category: - Switch ha_release: 0.78 ha_iot_class: Local Polling +ha_codeowners: + - '@danielhiversen' --- This `Switchmate` switch platform allows you to control Switchmate [devices]( https://www.mysimplysmarthome.com/products/switchmate-switches/). diff --git a/source/_integrations/syncthru.markdown b/source/_integrations/syncthru.markdown index 7617e1685b5..ac76359d81a 100644 --- a/source/_integrations/syncthru.markdown +++ b/source/_integrations/syncthru.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_iot_class: Local Polling ha_release: 0.66 +ha_codeowners: + - '@nielstron' --- The Samsung SyncThru Printer platform allows you to read current data from your local Samsung printer. diff --git a/source/_integrations/synology_srm.markdown b/source/_integrations/synology_srm.markdown index ba7296cd1fc..926da5dac91 100644 --- a/source/_integrations/synology_srm.markdown +++ b/source/_integrations/synology_srm.markdown @@ -5,6 +5,8 @@ logo: synology.png ha_category: - Presence Detection ha_release: 0.87 +ha_codeowners: + - '@aerialls' --- 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/_integrations/syslog.markdown b/source/_integrations/syslog.markdown index 512d6a8a9a2..3a396fc66c3 100644 --- a/source/_integrations/syslog.markdown +++ b/source/_integrations/syslog.markdown @@ -5,6 +5,8 @@ logo: syslog.png ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' --- The `syslog` platform allows you to deliver notifications from Home Assistant to the local syslog. diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown index 15533cd7326..068eb94c1cc 100644 --- a/source/_integrations/tado.markdown +++ b/source/_integrations/tado.markdown @@ -9,6 +9,8 @@ ha_category: - Sensor ha_release: 0.41 ha_iot_class: Cloud Polling +ha_codeowners: + - '@michaelarnauts' --- The `tado` integration platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. diff --git a/source/_integrations/tahoma.markdown b/source/_integrations/tahoma.markdown index e6b7498d6c4..8d84fbcec8d 100644 --- a/source/_integrations/tahoma.markdown +++ b/source/_integrations/tahoma.markdown @@ -11,6 +11,8 @@ ha_category: - Sensor ha_release: 0.59 ha_iot_class: Cloud Polling +ha_codeowners: + - '@philklei' --- The `Tahoma` integration platform is used as an interface to the [tahomalink.com](https://www.tahomalink.com) website. It adds covers, scenes and a sun sensor from the Tahoma platform. diff --git a/source/_integrations/tautulli.markdown b/source/_integrations/tautulli.markdown index 184dac2dd44..2859c84d12b 100644 --- a/source/_integrations/tautulli.markdown +++ b/source/_integrations/tautulli.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor ha_release: 0.82 ha_iot_class: Local Polling +ha_codeowners: + - '@ludeeus' --- 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/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index 799f24724dc..fe46884c340 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -13,6 +13,8 @@ ha_release: 0.11 ha_config_flow: true ha_iot_class: Cloud Polling ha_quality_scale: gold +ha_codeowners: + - '@fredrike' --- The `tellduslive` integration let you connect to [Telldus Live](https://live.telldus.com). It's cloud platform that connects to your Tellstick Net or Tellstick ZNet connected gear at home. diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 4b30a28cac1..59d388a82df 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -7,6 +7,8 @@ ha_release: 0.12 ha_iot_class: Local Push logo: home-assistant.png ha_quality_scale: internal +ha_codeowners: + - '@PhracturedBlue' --- The `template` platform supports sensors which get their values from other entities. diff --git a/source/_integrations/tesla.markdown b/source/_integrations/tesla.markdown index 8b50d9781de..d9814a6f778 100644 --- a/source/_integrations/tesla.markdown +++ b/source/_integrations/tesla.markdown @@ -12,6 +12,8 @@ ha_category: - Switch ha_release: 0.53 ha_iot_class: Cloud Polling +ha_codeowners: + - '@zabuldon' --- The `Tesla` integration offers integration with the [Tesla](https://auth.tesla.com/login) cloud service and provides presence detection as well as sensors such as charger state and temperature. diff --git a/source/_integrations/tfiac.markdown b/source/_integrations/tfiac.markdown index cc3897dd4d6..3bf4d9590db 100644 --- a/source/_integrations/tfiac.markdown +++ b/source/_integrations/tfiac.markdown @@ -6,6 +6,9 @@ ha_category: - Climate ha_release: 0.91 ha_iot_class: Local Polling +ha_codeowners: + - '@fredrike' + - '@mellado' --- The `tfiac` integration 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/_integrations/thethingsnetwork.markdown b/source/_integrations/thethingsnetwork.markdown index c12bfb55931..5f6b24d94b2 100644 --- a/source/_integrations/thethingsnetwork.markdown +++ b/source/_integrations/thethingsnetwork.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.55 ha_iot_class: Configurable +ha_codeowners: + - '@fabaff' --- The `thethingsnetwork` integration allows one to interact with the [The Things Network](https://www.thethingsnetwork.org). This community-driven and open network supports [LoRaWAN](https://www.lora-alliance.org/) for long range (~5 to 15km) communication with a low bandwidth (51 bytes/message). [Gateways](https://www.thethingsnetwork.org/docs/gateways/) transfers the received data from the sensors to the The Things Network. diff --git a/source/_integrations/threshold.markdown b/source/_integrations/threshold.markdown index 5f43d99e05e..378432b7294 100644 --- a/source/_integrations/threshold.markdown +++ b/source/_integrations/threshold.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Polling ha_release: 0.34 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- 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/_integrations/tibber.markdown b/source/_integrations/tibber.markdown index 57347258916..d1fd2602576 100644 --- a/source/_integrations/tibber.markdown +++ b/source/_integrations/tibber.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.8 ha_iot_class: Cloud Polling ha_quality_scale: silver +ha_codeowners: + - '@danielhiversen' --- The `tibber` integration provides a sensor with the current electricity price if you are a [Tibber](https://tibber.com/) customer. diff --git a/source/_integrations/tile.markdown b/source/_integrations/tile.markdown index 6f44232c879..9946c45f511 100644 --- a/source/_integrations/tile.markdown +++ b/source/_integrations/tile.markdown @@ -6,6 +6,8 @@ ha_release: 0.58 ha_category: - Presence Detection ha_iot_class: Cloud Polling +ha_codeowners: + - '@bachya' --- The `tile` platform allows Home Assistant to utilize [Tile® Bluetooth trackers](https://www.thetileapp.com). diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 82c6bde0729..84d09bc01e2 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Push ha_release: pre 0.7 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The time and date (`time_date`) sensor platform adds one or more sensors to your Home Assistant state machine. diff --git a/source/_integrations/todoist.markdown b/source/_integrations/todoist.markdown index e0dad321063..3caaddd898e 100644 --- a/source/_integrations/todoist.markdown +++ b/source/_integrations/todoist.markdown @@ -6,6 +6,8 @@ ha_category: - Calendar ha_iot_class: Cloud Polling ha_release: 0.54 +ha_codeowners: + - '@boralyl' --- 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/_integrations/toon.markdown b/source/_integrations/toon.markdown index 009c2ae9a89..c7c6ab73b93 100644 --- a/source/_integrations/toon.markdown +++ b/source/_integrations/toon.markdown @@ -10,6 +10,8 @@ ha_release: 0.56 logo: toon.png ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@frenck' --- The `toon` integration platform can be used to control your Toon thermostat. This integration adds a climate device for your Toon thermostat, sensors for power and gas consumption, sensors for solar production and several binary sensors for things like boiler burner on/off, hot tap water and boiler health status. diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index f363cc78257..3b5fd130f95 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -9,6 +9,8 @@ ha_category: ha_release: 0.89 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@rytilahti' --- The `tplink` integration allows you to control your [TP-Link Smart Home Devices](https://www.tp-link.com/kasa-smart/) such as smart plugs and smart bulbs. diff --git a/source/_integrations/traccar.markdown b/source/_integrations/traccar.markdown index 8025db01256..1d9061f5fbf 100644 --- a/source/_integrations/traccar.markdown +++ b/source/_integrations/traccar.markdown @@ -7,6 +7,8 @@ ha_category: - Presence Detection ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@ludeeus' --- `Traccar` uses GPS for tracking and has support for over 1500 different types of devices. One option is to track the [Traccar Client](https://www.traccar.org/client/) app on a smartphone via `webhook`. The other option is to connect to an existing [Traccar Server](https://www.traccar.org/server/) installation which is also available as Hass.io addon. diff --git a/source/_integrations/tradfri.markdown b/source/_integrations/tradfri.markdown index 17056d52c6b..1602543048f 100644 --- a/source/_integrations/tradfri.markdown +++ b/source/_integrations/tradfri.markdown @@ -11,6 +11,8 @@ ha_category: - Light - Sensor - Switch +ha_codeowners: + - '@ggravlingen' --- The `tradfri` integration allows you to connect your IKEA Trådfri Gateway to Home Assistant. The gateway can control compatible Zigbee-based lights (certified Zigbee Light Link products) connected to it. Home Assistant will automatically discover the gateway's presence on your local network if `discovery:` is present in your `configuration.yaml` file. diff --git a/source/_integrations/trafikverket_train.markdown b/source/_integrations/trafikverket_train.markdown index 30d9f7bfd6a..ba783b7432d 100644 --- a/source/_integrations/trafikverket_train.markdown +++ b/source/_integrations/trafikverket_train.markdown @@ -7,6 +7,8 @@ ha_category: - Sensor ha_release: 0.96 ha_iot_class: Cloud Polling +ha_codeowners: + - '@endor-force' --- Retrieve train departure information from [Trafikverket](https://www.trafikverket.se/). diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index 4485a5e6b85..ccbb2b50e27 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -9,6 +9,9 @@ ha_category: ha_release: 0.87 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@engrbm87' + - '@JPHutchins' --- The `transmission` integration allows you to monitor your downloads with [Transmission](https://www.transmissionbt.com/) from within Home Assistant and setup automation based on the information. diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index 50ae4da862b..f2cc5b0f0a4 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -2,6 +2,8 @@ title: Text-to-Speech (TTS) description: Instructions on how to set up Text-to-Speech (TTS) with Home Assistant. ha_release: 0.35 +ha_codeowners: + - '@robbiet480' --- Text-to-Speech (TTS) enables Home Assistant to speak to you. diff --git a/source/_integrations/twentemilieu.markdown b/source/_integrations/twentemilieu.markdown index 4419f64ade1..2a7aac0451b 100644 --- a/source/_integrations/twentemilieu.markdown +++ b/source/_integrations/twentemilieu.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.97 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@frenck' --- The Twente Milieu integration allows you to track the next scheduled waste diff --git a/source/_integrations/twilio_call.markdown b/source/_integrations/twilio_call.markdown index ff119fa8220..ef47f677134 100644 --- a/source/_integrations/twilio_call.markdown +++ b/source/_integrations/twilio_call.markdown @@ -5,6 +5,8 @@ logo: twilio.png ha_category: - Notifications ha_release: 0.37 +ha_codeowners: + - '@robbiet480' --- The `twilio_call` notification platform enables sending notifications via Voice, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index 3714cdf8c00..f81b5eaa6c7 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -5,6 +5,8 @@ logo: twilio.png ha_category: - Notifications ha_release: '0.20' +ha_codeowners: + - '@robbiet480' --- The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown index 1bd67c8b596..78aca8b6b63 100644 --- a/source/_integrations/unifi.markdown +++ b/source/_integrations/unifi.markdown @@ -10,6 +10,8 @@ ha_release: 0.81 ha_iot_class: Local Polling ha_config_flow: true ha_quality_scale: platinum +ha_codeowners: + - '@kane610' --- [UniFi](https://unifi-sdn.ubnt.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a software that binds gateways, switches and wireless access points together with one graphical front end. diff --git a/source/_integrations/unifiled.markdown b/source/_integrations/unifiled.markdown index b15abe0bfa1..8aa27c5033c 100644 --- a/source/_integrations/unifiled.markdown +++ b/source/_integrations/unifiled.markdown @@ -6,6 +6,8 @@ ha_category: - Light ha_release: 0.102 ha_iot_class: Local Polling +ha_codeowners: + - '@florisvdk' --- [UniFi LED](https://unifi-led.ui.com/) by [Ubiquiti Networks, inc.](https://www.ubnt.com/) is a system of controller managed led light panels and dimmers. diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index 2489cba8cb8..7f0c928191e 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -5,6 +5,8 @@ logo: upc.png ha_category: - Presence Detection ha_release: 0.36 +ha_codeowners: + - '@pvizeli' --- The `upc_connect` platform offers presence detection by looking at connected devices to a [Connect Box](https://www.upc.ch/en/internet/learn-about-internet/) from [Liberty Global](https://www.libertyglobal.com) (also known as UPC Cablecom in Switzerland) which is an Internet provider in Switzerland, Austria and the Netherlands (under Ziggo). diff --git a/source/_integrations/upcloud.markdown b/source/_integrations/upcloud.markdown index 4147a2440d7..f4fb46245d5 100644 --- a/source/_integrations/upcloud.markdown +++ b/source/_integrations/upcloud.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.65 logo: upcloud.png ha_iot_class: Cloud Polling +ha_codeowners: + - '@scop' --- The `upcloud` integration allows you to access the information about your [UpCloud](https://upcloud.com/) servers from Home Assistant. diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index 0f2abf27bf9..1bf493780d8 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -6,6 +6,8 @@ ha_category: - Binary Sensor ha_release: 0.8 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `updater` binary sensor will check daily for new releases. The state will be "on" when an update is available. Otherwise, the state will be "off". The newer version, as well as the link to the release notes, are attributes of the updater. As [Hass.io](/hassio/) has its own schedule for release it doesn't make sense to use this binary sensor on Hass.io. diff --git a/source/_integrations/upnp.markdown b/source/_integrations/upnp.markdown index eaea478786d..902963751b1 100644 --- a/source/_integrations/upnp.markdown +++ b/source/_integrations/upnp.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.18 ha_iot_class: Local Polling ha_config_flow: true +ha_codeowners: + - '@robbiet480' --- The `upnp` integration enables you to collect network statistics from your router such as bytes in/out and packets in/out. This information is provided by the [UPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play)/[Internet Gateway Device (IGD) Protocol](https://en.wikipedia.org/wiki/Internet_Gateway_Device_Protocol) if enabled on your router. diff --git a/source/_integrations/uptimerobot.markdown b/source/_integrations/uptimerobot.markdown index 1621caec5ea..b36465b53fd 100644 --- a/source/_integrations/uptimerobot.markdown +++ b/source/_integrations/uptimerobot.markdown @@ -6,6 +6,8 @@ ha_category: - System Monitor ha_release: 0.72 ha_iot_class: Cloud Polling +ha_codeowners: + - '@ludeeus' --- 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/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index b9a0765afc9..7e7f878f357 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -6,6 +6,8 @@ ha_category: - Geolocation ha_iot_class: Cloud Polling ha_release: 0.84 +ha_codeowners: + - '@exxamalte' --- 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/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown index 82ac310b35e..d1e4af2fcf8 100644 --- a/source/_integrations/utility_meter.markdown +++ b/source/_integrations/utility_meter.markdown @@ -7,6 +7,8 @@ ha_release: 0.87 ha_iot_class: Local Push logo: energy_meter.png ha_quality_scale: internal +ha_codeowners: + - '@dgomes' --- The `utility meter` integration provides functionality to track consumptions of various utilities (e.g., energy, gas, water, heating). diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown index 3ddf5275545..0f673149d06 100644 --- a/source/_integrations/velbus.markdown +++ b/source/_integrations/velbus.markdown @@ -11,6 +11,8 @@ ha_category: ha_iot_class: Local Push ha_release: '0.50' ha_config_flow: true +ha_codeowners: + - '@cereal2nd' --- The `velbus` integration supports the Velbus USB, Velbus serial and a TCP/IP gateway. diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown index 66b0817991c..2a6946067ab 100644 --- a/source/_integrations/velux.markdown +++ b/source/_integrations/velux.markdown @@ -7,6 +7,8 @@ ha_category: - Cover ha_release: 0.49 ha_iot_class: Local Polling +ha_codeowners: + - '@Julius2342' --- [Velux](https://www.velux.com/) integration for Home Assistant allows you to connect to a Velux KLF 200 interface, to control [io-homecontrol](http://www.io-homecontrol.com) devices like windows and blinds. The module allows you to start scenes configured within KLF 200. diff --git a/source/_integrations/versasense.markdown b/source/_integrations/versasense.markdown index 07ccd103497..5ba9198c8ff 100644 --- a/source/_integrations/versasense.markdown +++ b/source/_integrations/versasense.markdown @@ -9,6 +9,8 @@ ha_category: - Sensor - Switch ha_iot_class: Local Polling +ha_codeowners: + - '@flamm3blemuff1n' --- The `VersaSense` integration supports the VersaSense Edge Gateway. The gateway is able to control hubs and their peripherals (sensors and actuators) in the mesh network. diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown index 2118d04aebd..533711be237 100644 --- a/source/_integrations/version.markdown +++ b/source/_integrations/version.markdown @@ -7,6 +7,8 @@ ha_iot_class: Local Push logo: home-assistant.png ha_release: 0.52 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `version` sensor platform that can display the current Home Assistant versions. diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index c5dbbf166b3..a6d9071b0aa 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -6,6 +6,9 @@ ha_category: - Switch ha_release: 0.66 ha_config_flow: true +ha_codeowners: + - '@markperdue' + - '@webdjoe' --- The `vesync` integration enables you to control Etekcity smart switches and outlets connected to the VeSync App. diff --git a/source/_integrations/vicare.markdown b/source/_integrations/vicare.markdown index df002748d79..4a43f2a6e06 100644 --- a/source/_integrations/vicare.markdown +++ b/source/_integrations/vicare.markdown @@ -5,6 +5,8 @@ logo: viessmann.png ha_category: Climate ha_release: 0.99 ha_iot_class: Cloud Polling +ha_codeowners: + - '@oischinger' --- The `ViCare` integration lets you control [Viessmann](https://www.viessmann.com) devices via the Viessmann ViCare (REST) API. diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown index f09b1cc936a..64bff28a801 100644 --- a/source/_integrations/vivotek.markdown +++ b/source/_integrations/vivotek.markdown @@ -6,6 +6,8 @@ ha_category: logo: vivotek.jpg ha_release: 0.99 ha_iot_class: Local Polling +ha_codeowners: + - '@HarlemSquirrel' --- The `vivotek` camera platform allows you to integrate a Vivotek IP camera into Home Assistant. diff --git a/source/_integrations/vizio.markdown b/source/_integrations/vizio.markdown index 2a150daeb85..c2ab4d0faf8 100644 --- a/source/_integrations/vizio.markdown +++ b/source/_integrations/vizio.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.49 ha_iot_class: Local Polling +ha_codeowners: + - '@raman325' --- The `vizio` integration allows you to control [SmartCast](https://www.vizio.com/smartcast-app)-compatible TVs and sound bars (2016+ models). diff --git a/source/_integrations/vlc_telnet.markdown b/source/_integrations/vlc_telnet.markdown index b24e846f8ac..896aa5f3ca7 100644 --- a/source/_integrations/vlc_telnet.markdown +++ b/source/_integrations/vlc_telnet.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.95 ha_iot_class: Local Polling +ha_codeowners: + - '@rodripf' --- The `vlc_telnet` platform allows you to control a [VLC media player](https://www.videolan.org/vlc/index.html) using the built in telnet interface. diff --git a/source/_integrations/waqi.markdown b/source/_integrations/waqi.markdown index f8410cc9298..705324b9ba0 100644 --- a/source/_integrations/waqi.markdown +++ b/source/_integrations/waqi.markdown @@ -6,6 +6,8 @@ ha_category: - Health ha_release: 0.34 ha_iot_class: Cloud Polling +ha_codeowners: + - '@andrey-git' --- The `waqi` sensor platform will query [World Air Quality Index](https://aqicn.org/city/beijing/) service to check AQI value for a specific set of locations. The resulting indexes will be added to the Home Assistant as sensor outputs. diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index 346152a89fd..674f937c0cd 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -5,6 +5,8 @@ logo: watson_tts.png ha_category: - Text-to-speech ha_release: 0.94 +ha_codeowners: + - '@rutkai' --- The `watson_tts` text-to-speech platform that works with [IBM Watson Cloud](https://www.ibm.com/watson/services/text-to-speech/) to create the spoken output. diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index e2377040782..95379a3e10a 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -6,6 +6,8 @@ ha_category: - Weather ha_release: 0.32 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `weather` platforms gather meteorological information from web services and display the conditions and other details about the weather at the given location. Read the integration documentation for your particular weather provider to learn how to set it up. diff --git a/source/_integrations/weblink.markdown b/source/_integrations/weblink.markdown index adca15c318b..d53f5bfe31b 100644 --- a/source/_integrations/weblink.markdown +++ b/source/_integrations/weblink.markdown @@ -6,6 +6,8 @@ ha_category: - Front End ha_release: 0.13 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `weblink` integration allows you to display links in the Home Assistant frontend. diff --git a/source/_integrations/websocket_api.markdown b/source/_integrations/websocket_api.markdown index bef6b4c5c83..0b94ef6a80c 100644 --- a/source/_integrations/websocket_api.markdown +++ b/source/_integrations/websocket_api.markdown @@ -6,6 +6,8 @@ ha_category: - Other ha_release: 0.34 ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- The `websocket_api` integration set up a WebSocket API and allows one to interact with a Home Assistant instance that is running headless. This integration depends on the [`http` component](/integrations/http/). diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index 214a1287daa..42edb2fa475 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -10,6 +10,8 @@ ha_category: - Switch ha_release: pre 0.7 ha_config_flow: true +ha_codeowners: + - '@sqldiablo' --- The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) devices with Home Assistant. diff --git a/source/_integrations/withings.markdown b/source/_integrations/withings.markdown index ad5de6d416f..290422352ee 100644 --- a/source/_integrations/withings.markdown +++ b/source/_integrations/withings.markdown @@ -8,6 +8,8 @@ ha_category: ha_release: 0.99 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@vangorra' --- The `withings` sensor platform consumes data from various health products produced by [Withings](https://www.withings.com). diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown index c11fad8be9f..ccf93c7c436 100644 --- a/source/_integrations/wled.markdown +++ b/source/_integrations/wled.markdown @@ -10,6 +10,8 @@ ha_release: 0.102 ha_iot_class: Local Polling ha_config_flow: true ha_quality_scale: platinum +ha_codeowners: + - '@frenck' --- [WLED](https://github.com/Aircoookie/WLED) is a fast and feature-rich diff --git a/source/_integrations/worldclock.markdown b/source/_integrations/worldclock.markdown index 0d35b44dbe4..5af1dadbf9a 100644 --- a/source/_integrations/worldclock.markdown +++ b/source/_integrations/worldclock.markdown @@ -7,6 +7,8 @@ ha_category: ha_iot_class: Local Push ha_release: pre 0.7 ha_quality_scale: internal +ha_codeowners: + - '@fabaff' --- The `worldclock` sensor platform simply displays the current time in a different time zone. diff --git a/source/_integrations/wwlln.markdown b/source/_integrations/wwlln.markdown index a9d61370f90..ea03b75dc06 100644 --- a/source/_integrations/wwlln.markdown +++ b/source/_integrations/wwlln.markdown @@ -6,6 +6,8 @@ ha_category: Geolocation ha_release: 0.96 ha_iot_class: Cloud Polling ha_config_flow: true +ha_codeowners: + - '@bachya' --- The `wwlln` integration displays lightning strike information from the diff --git a/source/_integrations/xbox_live.markdown b/source/_integrations/xbox_live.markdown index 84f1c105669..baca918f0ad 100644 --- a/source/_integrations/xbox_live.markdown +++ b/source/_integrations/xbox_live.markdown @@ -6,6 +6,8 @@ ha_category: - Social ha_iot_class: Cloud Polling ha_release: 0.28 +ha_codeowners: + - '@MartinHjelmare' --- The Xbox Live integration is able to track [Xbox](https://xbox.com/) profiles. diff --git a/source/_integrations/xfinity.markdown b/source/_integrations/xfinity.markdown index a86e842e040..8ddd1a64277 100644 --- a/source/_integrations/xfinity.markdown +++ b/source/_integrations/xfinity.markdown @@ -6,6 +6,8 @@ ha_category: logo: xfinity.svg ha_release: 0.9 ha_iot_class: Local Polling +ha_codeowners: + - '@cisasteelersfan' --- The `xfinity` device tracker platform offers presence detection by looking at connected devices to an Xfinity gateway. diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown index 374e347174c..6a962e321ff 100644 --- a/source/_integrations/xiaomi_aqara.markdown +++ b/source/_integrations/xiaomi_aqara.markdown @@ -6,6 +6,9 @@ ha_category: - Hub ha_release: 0.57 ha_iot_class: Local Push +ha_codeowners: + - '@danielhiversen' + - '@syssi' --- The `xiaomi_aqara` integration allows you to integrate [Xiaomi](https://www.mi.com/en/) Aqara-compatible devices into Home Assistant. diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 0dae8815a55..4f630c20309 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -6,6 +6,9 @@ ha_category: - Presence Detection ha_iot_class: Local Polling ha_release: 0.67 +ha_codeowners: + - '@rytilahti' + - '@syssi' --- The `xiaomi_miio` device tracker platform is observing your Xiaomi Mi WiFi Repeater 2 and reporting all associated WiFi clients. diff --git a/source/_integrations/xiaomi_tv.markdown b/source/_integrations/xiaomi_tv.markdown index 6cb1c9ce71e..aa178f09453 100644 --- a/source/_integrations/xiaomi_tv.markdown +++ b/source/_integrations/xiaomi_tv.markdown @@ -6,6 +6,8 @@ ha_category: - Media Player ha_release: 0.64 ha_iot_class: Assumed State +ha_codeowners: + - '@simse' --- The `xiaomi_tv` platform allows you to control a [Xiaomi TV](https://www.mi.com/en/mitv3s/65flat/). diff --git a/source/_integrations/xmpp.markdown b/source/_integrations/xmpp.markdown index 5cb9204ce1e..335f4d9aa02 100644 --- a/source/_integrations/xmpp.markdown +++ b/source/_integrations/xmpp.markdown @@ -5,6 +5,9 @@ logo: xmpp.png ha_category: - Notifications ha_release: pre 0.7 +ha_codeowners: + - '@fabaff' + - '@flowolf' --- The `xmpp` notification platform allows you to deliver notifications from Home Assistant to a [Jabber (XMPP)](https://xmpp.org/) account. diff --git a/source/_integrations/yamaha_musiccast.markdown b/source/_integrations/yamaha_musiccast.markdown index e1397e32cd5..8a6efb548a3 100644 --- a/source/_integrations/yamaha_musiccast.markdown +++ b/source/_integrations/yamaha_musiccast.markdown @@ -5,6 +5,8 @@ logo: yamaha.png ha_category: - Media Player ha_release: 0.53 +ha_codeowners: + - '@jalmeroth' --- 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/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index 17ea63dc19b..6381d1efd4e 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -6,6 +6,8 @@ ha_category: - Sensor - Transport ha_release: '0.100' +ha_codeowners: + - '@rishatik92' --- The `yandex_tranport` sensor platform uses [Yandex Maps](https://maps.yandex.ru/) it will give you the time until the next departure time from a bus/tramway/etc stop. diff --git a/source/_integrations/yeelight.markdown b/source/_integrations/yeelight.markdown index dc31c9e2163..0c3a97a4e76 100644 --- a/source/_integrations/yeelight.markdown +++ b/source/_integrations/yeelight.markdown @@ -6,6 +6,9 @@ ha_category: - Light ha_release: 0.32 ha_iot_class: Local Polling +ha_codeowners: + - '@rytilahti' + - '@zewelor' --- The `yeelight` integration allows you to control your Yeelight Wifi bulbs with Home Assistant. There are two possible methods for configuration of the Yeelight: Manual or Automatic. diff --git a/source/_integrations/yeelightsunflower.markdown b/source/_integrations/yeelightsunflower.markdown index a9c9f4d0f8e..0c7440df4fa 100644 --- a/source/_integrations/yeelightsunflower.markdown +++ b/source/_integrations/yeelightsunflower.markdown @@ -6,6 +6,8 @@ ha_category: - Light ha_release: 0.39 ha_iot_class: Local Polling +ha_codeowners: + - '@lindsaymarkward' --- The `yeelightsunflower` light platform allows you to control your Yeelight Sunflower light bulbs with Home Assistant. diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index b38753fdd35..fe7e1304200 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -5,6 +5,8 @@ logo: yesssat.png ha_category: - Notifications ha_release: 0.57 +ha_codeowners: + - '@flowolf' --- The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) and others to send SMS via their web-site. diff --git a/source/_integrations/yi.markdown b/source/_integrations/yi.markdown index 0140880c436..0a1e6a9fd74 100644 --- a/source/_integrations/yi.markdown +++ b/source/_integrations/yi.markdown @@ -6,6 +6,8 @@ ha_category: - Camera ha_release: 0.56 ha_iot_class: Local Polling +ha_codeowners: + - '@bachya' --- 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/_integrations/yr.markdown b/source/_integrations/yr.markdown index 7214dc57b9c..a3a8398d830 100644 --- a/source/_integrations/yr.markdown +++ b/source/_integrations/yr.markdown @@ -6,6 +6,8 @@ ha_category: - Weather ha_release: 0.11 ha_iot_class: Cloud Polling +ha_codeowners: + - '@danielhiversen' --- The `yr` platform uses [YR.no](https://www.yr.no/) as a source for current diff --git a/source/_integrations/zeroconf.markdown b/source/_integrations/zeroconf.markdown index 0ccf6e6bc65..506da99be4d 100644 --- a/source/_integrations/zeroconf.markdown +++ b/source/_integrations/zeroconf.markdown @@ -6,6 +6,9 @@ ha_category: ha_release: 0.18 logo: home-assistant.png ha_quality_scale: internal +ha_codeowners: + - '@robbiet480' + - '@Kane610' --- The `zeroconf` integration will scan the network for supported devices and services. Discovered integrations will show up in the discovered section on the integrations page in the config panel. It will also make Home Assistant discoverable for other services in the network. Zeroconf is also sometimes known as Bonjour, Rendezvous, and Avahi. diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index 6373e266a0b..8fd761393c5 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -14,6 +14,9 @@ ha_release: 0.44 ha_iot_class: Local Polling featured: true ha_config_flow: true +ha_codeowners: + - '@dmulcahey' + - '@adminiuga' --- [Zigbee Home Automation](https://zigbee.org/zigbee-for-developers/applicationstandards/zigbeehomeautomation/) diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index dc85f702e5d..06147c9a91f 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -7,6 +7,8 @@ ha_category: ha_release: 0.69 ha_config_flow: true ha_quality_scale: internal +ha_codeowners: + - '@home-assistant/core' --- Zones allow you to specify certain regions on earth (for now). When a device tracker sees a device to be within a zone, the state will take the name from the zone. Zones can also be used as a [trigger](/getting-started/automation-trigger/#zone-trigger) or [condition](/getting-started/automation-condition/#zone-condition) inside automation setups. diff --git a/source/_integrations/zoneminder.markdown b/source/_integrations/zoneminder.markdown index 435c3c7805d..6b5018d7cff 100644 --- a/source/_integrations/zoneminder.markdown +++ b/source/_integrations/zoneminder.markdown @@ -10,6 +10,8 @@ ha_category: - Switch ha_release: 0.31 ha_iot_class: Local Polling +ha_codeowners: + - '@rohankapoorcom' --- The `zoneminder` integration sets up Home Assistant with your [ZoneMinder](https://www.zoneminder.com) instance. diff --git a/source/_integrations/zwave.markdown b/source/_integrations/zwave.markdown index 7a47e009677..22d7a4d35ee 100644 --- a/source/_integrations/zwave.markdown +++ b/source/_integrations/zwave.markdown @@ -16,6 +16,8 @@ featured: true ha_iot_class: Local Push ha_release: 0.7 ha_config_flow: true +ha_codeowners: + - '@home-assistant/z-wave' --- The [Z-Wave](https://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Please see the [Z-Wave getting started section](/docs/z-wave/) for in-depth documentation on how to use and setup the Z-Wave component. From 617f684d04164c134515441449353cde5a6bc115 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Wed, 8 Jan 2020 17:25:00 +0100 Subject: [PATCH 234/236] Correct spelling of HDMI-CEC (#11674) * Correct spelling of HDMI-CEC * Empty commit to re-trigger build --- source/_addons/cec_scan.markdown | 4 ++-- source/_integrations/apple_tv.markdown | 10 +++++----- source/_integrations/hdmi_cec.markdown | 2 +- source/_posts/2017-01-28-face-coffee-wink.markdown | 6 +++--- source/_posts/2017-02-03-hassbian-toybox.markdown | 2 +- ...7-02-25-config-panel-and-state-restoration.markdown | 2 +- .../2017-04-30-hassbian-1.21-its-about-time.markdown | 2 +- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/source/_addons/cec_scan.markdown b/source/_addons/cec_scan.markdown index a7070819ba3..479236d6a74 100644 --- a/source/_addons/cec_scan.markdown +++ b/source/_addons/cec_scan.markdown @@ -1,6 +1,6 @@ --- title: "CEC Scanner" -description: "Scan HDMI CEC devices." +description: "Scan HDMI-CEC devices." --- -Help you to discover the HDMI CEC address. Start the add-on and look into the log to see all connected device on HDMI. +Help you to discover the HDMI-CEC address. Start the add-on and look into the log to see all connected device on HDMI. diff --git a/source/_integrations/apple_tv.markdown b/source/_integrations/apple_tv.markdown index 4f772fbac47..a06ec891a1d 100644 --- a/source/_integrations/apple_tv.markdown +++ b/source/_integrations/apple_tv.markdown @@ -134,12 +134,12 @@ Restart Home Assistant, and you should now be able to use `play_url` as before. ### My Apple TV turns on when I restart Home Assistant -The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. +The Apple TV will automatically turn on if a request is sent to it, e.g., if a button is pressed, something is streamed to it via AirPlay or if current state (currently playing) is accessed. This is how Apple has designed it, and it will cause problems if you are using HDMI-CEC. Every time Home Assistant is started, a new request is sent to the device to figure out what is currently playing. When using CEC, this will wake up your TV and other devices you have configured. So, if your TV is randomly turning on, this is probably the reason. As stated, this is by design, and there is no real fix for it. There's also no known way to turn off the Apple TV via the protocol used for communication. You have the following options: - Do not use this platform -- Disable HDMI CEC on your Apple TV +- Disable HDMI-CEC on your Apple TV - Use "fake standby" The first two points are quite obvious. Fake standby is a concept implemented in this platform that disables all requests to the device and makes it appear as being "off" in the web interface. This will make sure that the device is not woken up, but it will of course not show any information or allow you to control it. It is however easy to turn it on (or off) in the web interface or to use an automation with `turn_on`. To make it more useful, you can write automations that turn it on or off depending on some other device, like the input source on your receiver. @@ -156,9 +156,9 @@ Turning the device on/off in the user interface will *not* turn the physical dev To play media on an Apple TV with device authentication enabled (e.g., ATV4 with tvOS 10.2+), Home Assistant must be properly authenticated. This method starts the process and presents the credentials needed for playback as a persistent notification. Please see guide above for usage. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ------------------------------------------------------------------ | +| `entity_id` | yes | String or list of strings that point at `entity_id`s of Apple TVs. | ### Service `apple_tv_scan` diff --git a/source/_integrations/hdmi_cec.markdown b/source/_integrations/hdmi_cec.markdown index 59f0265820e..3d8d903f247 100644 --- a/source/_integrations/hdmi_cec.markdown +++ b/source/_integrations/hdmi_cec.markdown @@ -1,6 +1,6 @@ --- title: HDMI-CEC -description: Instructions on how to interact with HDMI CEC via Home Assistant. +description: Instructions on how to interact with HDMI-CEC via Home Assistant. ha_category: - Automation logo: hdmi.png diff --git a/source/_posts/2017-01-28-face-coffee-wink.markdown b/source/_posts/2017-01-28-face-coffee-wink.markdown index 6447f6396d7..437948e8d34 100644 --- a/source/_posts/2017-01-28-face-coffee-wink.markdown +++ b/source/_posts/2017-01-28-face-coffee-wink.markdown @@ -29,12 +29,12 @@ Although the old method is not insecure, the new method is a lot more secure. Up ### New customization options [@Andrey-git] has added some great new options to the customize functionality. It is now possible to specify customizations as a wildcard for entities or for a specific domain. -### Major Wink and HDMI CEC improvements +### Major Wink and HDMI-CEC improvements [@w1ll1am23] did an amazing job fixing a ton of bugs and issues with the Wink integration. Biggest improvement is that it now is able to automatically refresh the authentication tokens. This means that if you have your email address and password in your `configuration.yaml` file, no `client_id` and `client_secret` are needed, and token which was generated with the generator located in the [Wink][wink] documentation. The new Wink support will cause renaming of all the binary sensors and will also create new sensors for devices that weren't previously detected or supported in the older version. -Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI CEC and give you more control. +Thanks to [@konikvranik] the [HDMI-CEC][cec] integration got a huge update with a lot of improvements. This update should make it easier to work with HDMI-CEC and give you more control. ### First Coffee Maker supported [@stu-gott] has added support for the first coffee maker in Home Assistant: [Mr. Coffee Smart Optimal Brew][coffee]. Happy brewing! @@ -93,7 +93,7 @@ Thanks to [@konikvranik] the [HDMI CEC][cec] integration got a huge update with - Light - Zwave: Use only supported features for devices ([@turbokongen]) - Media player - Kodi: Support for volume stepping ([@armills]) - Media player- roku: Use `is_screensaver`, update IDLE state, and use device name ([@robbiet480], [@xhostplus]) -- Switch - HDMI CEC: Support for devices and commands ([@konikvranik]) +- Switch - HDMI-CEC: Support for devices and commands ([@konikvranik]) - Lock - Zwave: Improvements to Zwave lock platform ([@turbokongen]) - TTS: Invalidate broken file cache entries ([@stu-gott]) - Light - Hue: Improvements ([@robbiet480]) diff --git a/source/_posts/2017-02-03-hassbian-toybox.markdown b/source/_posts/2017-02-03-hassbian-toybox.markdown index 1dc2e7ceca5..ef918205df0 100644 --- a/source/_posts/2017-02-03-hassbian-toybox.markdown +++ b/source/_posts/2017-02-03-hassbian-toybox.markdown @@ -16,7 +16,7 @@ Changes from previous image are big and small but lets start with the interestin A set of script written to add extra functionality to your Raspberry Pi installation. This scripts are run as the `pi` user and installs a set of tools or packages. Currently includes: - - Install Libcec. Adds local [HDMI CEC support][cec]. + - Install Libcec. Adds local [HDMI-CEC support][cec]. - Install Mossquitto. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - Install OpenZWave. Installs OpenZWave and prepares for using a USB or GPIO ZWave controller. - Install Samba. Installs the Samba packages and shares your configuration over smb to be available to edit on any computer without the need for separate file transfer software. This share is unsecured and it's usage is not recommended if your installation is publicly available. diff --git a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown index b692820f1ad..3d890216fb2 100644 --- a/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown +++ b/source/_posts/2017-02-25-config-panel-and-state-restoration.markdown @@ -160,7 +160,7 @@ And a final shout out to [Pascal][@pvizeli]. He keeps improving the performance - Lock - Nuki: Reduce battery drain on Nuki Lock ([@pschmitt]) - Notify - Webostv: Only try to pair notify.webostv when not paired ([@andersonshatch]) - KNX: Fix slow status updates from the knx bus ([@keerts]) -- HDMI CEC: HDMI_CEC customization [Breaking change] ([@balloob], [@andrey-git]) +- HDMI-CEC: HDMI_CEC customization [Breaking change] ([@balloob], [@andrey-git]) - Sensor - Moon: Remove unit of measurement ([@fabaff]) - Z-Wave: Add initial Z-Wave config panel ([@balloob]) - History: Allow printing the number of states returned by history and time it took to extract and add day ([@andrey-git]) diff --git a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown index e735288d37c..90218818961 100644 --- a/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown +++ b/source/_posts/2017-04-30-hassbian-1.21-its-about-time.markdown @@ -21,7 +21,7 @@ To allow you to customize your installation further, we have included a tool cal - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component that's used with Amazon Echo, Google Home and Mycroft.ai. - Install Mosquitto MQTT server. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support. - - Install Libcec. Adds local [HDMI CEC support][cec]. + - Install Libcec. Adds local [HDMI-CEC support][cec]. - Install Open Z-Wave-pip. Installs Python Open Z-Wave from a pip package. This is the quickest and recommended way of installing Z-Wave support but does not OZWCP pre-installed. - Install Open Z-Wave. Installs Python Open Z-Wave and OZWCP from git. - Install Samba. Allows anyone on your network to edit your configuration from any computer. This share is unsecured and it's usage is not recommended if you share your network with others. From c285782983babafd3f78962ebdbb952d98a07081 Mon Sep 17 00:00:00 2001 From: Jeff Irion Date: Wed, 8 Jan 2020 09:38:39 -0800 Subject: [PATCH 235/236] Switch order of Python and ADB server instructions (#11658) * Switch order of Python and ADB server instructions * Fix internal links --- source/_integrations/androidtv.markdown | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown index 9d742936b99..29b1bf90f8c 100644 --- a/source/_integrations/androidtv.markdown +++ b/source/_integrations/androidtv.markdown @@ -63,7 +63,7 @@ adbkey: required: false type: string adb_server_ip: - description: The IP address of the ADB server. If this is provided, the integration will utilize an [ADB server](#1-adb-server) to communicate with the device. + description: The IP address of the ADB server. If this is provided, the integration will utilize an [ADB server](#2-adb-server) to communicate with the device. required: false type: string adb_server_port: @@ -161,18 +161,18 @@ This integration works by sending ADB commands to your Android TV / Fire TV devi When connecting to your device for the first time, a dialog will appear on your Android TV / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK.

    -### 1. ADB Server +### 1. Python ADB Implementation -You can use an ADB server to connect to your Android TV and Fire TV devices. - -For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) addon. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. - -### 2. Python ADB Implementation - -The second option is to connect to your device using the `adb-shell` Python package. As of Home Assistant 0.101, if a key is needed for authentication and it is not provided by the `adbkey` configuration option, then Home Assistant will generate a key for you. +The default approach is to connect to your device using the `adb-shell` Python package. As of Home Assistant 0.101, if a key is needed for authentication and it is not provided by the `adbkey` configuration option, then Home Assistant will generate a key for you. Prior to Home Assistant 0.101, this approach did not work well for newer devices. Efforts have been made to resolve these issues, but if you experience problems then you should use the ADB server option. +### 2. ADB Server + +The second option is to use an ADB server to connect to your Android TV and Fire TV devices. + +For Hass.io users, you can install the [Android Debug Bridge](https://github.com/hassio-addons/addon-adb/blob/master/README.md) addon. Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value. + ## ADB Troubleshooting If the setup for your Android TV or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes. @@ -189,7 +189,7 @@ If the setup for your Android TV or Fire TV device fails, then there is probably 6. If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock](https://github.com/d4rken/wakelock-revamp)) to prevent this from happening. Some users have reported this problem with Xiaomi Mi Box devices. -7. If you are using the [Python ADB implementation](#2-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#1-adb-server) approach instead. +7. If you are using the [Python ADB implementation](#1-python-adb-implementation) approach, as mentioned above, there may be some issues with newer devices. In this case, you should use the [ADB server](#2-adb-server) approach instead. ## Services From cfa0cc21724a16f7b327725bb9167259e6654220 Mon Sep 17 00:00:00 2001 From: fwestenberg <47930023+fwestenberg@users.noreply.github.com> Date: Wed, 8 Jan 2020 21:05:25 +0100 Subject: [PATCH 236/236] Add Stookalert integration (#11572) * Stookalert integration * Stookalert integration * Stookalert integration * Added Stookalert integration * Added Stookalert integration * Added Stookalert integration * Removed the scan interval * Changed release * Province formatting * Compress image --- source/_integrations/stookalert.markdown | 35 ++++++++++++++++++ source/images/supported_brands/stookalert.png | Bin 0 -> 7636 bytes 2 files changed, 35 insertions(+) create mode 100644 source/_integrations/stookalert.markdown create mode 100644 source/images/supported_brands/stookalert.png diff --git a/source/_integrations/stookalert.markdown b/source/_integrations/stookalert.markdown new file mode 100644 index 00000000000..ab60733e85f --- /dev/null +++ b/source/_integrations/stookalert.markdown @@ -0,0 +1,35 @@ +--- +title: "Stookalert" +description: "Instructions on how to use Stookalert data within Home Assistant" +logo: stookalert.png +ha_category: + - Binary Sensor + - Environment +ha_release: 0.104 +ha_iot_class: Cloud Polling +--- + +The `stookalert` sensor platform queries the [RIVM stookalert](https://www.rivm.nl/stookalert) API for unfavorable weather conditions or poor air quality. With a Stookalert, the RIVM calls on people not to burn wood. This can prevent health problems in people in the area. + + +## Configuration + +To enable the platform, add the following lines to your `configuration.yaml` file: + +```yaml +binary_sensor: + - platform: stookalert + province: YOUR_NL_PROVINCE +``` + +{% configuration %} +province: + description: a province to use for the binary sensor's state. Currently only provinces in the Netherlands are supported. Valid values are `Drenthe`, `Flevoland`, `Friesland`, `Gelderland`, `Groningen`, `Limburg`, `Noord-Brabant`, `Noord-Holland`, `Overijssel`, `Utrecht`, `Zeeland` or `Zuid-Holland`. + required: true + type: string +name: + description: The sensor name to use in the frontend. + required: false + default: "Stookalert" + type: string +{% endconfiguration %} diff --git a/source/images/supported_brands/stookalert.png b/source/images/supported_brands/stookalert.png new file mode 100644 index 0000000000000000000000000000000000000000..8f01864ca961f6c7aef396b5ede38137367e5a06 GIT binary patch literal 7636 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 literal 0 HcmV?d00001

    @ZYZon$KCyOaYdlu!1^+uR~{9p#IuH^W_U4 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 $KKcL9Z-M8=e%@nJ4qm%Rc)BQ1k<{mzA=<7a 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 z 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