From eaa4164deb68569625c1c8ca6cef478a7698dda1 Mon Sep 17 00:00:00 2001 From: Nate <8377844+nateww@users.noreply.github.com> Date: Wed, 30 Sep 2020 14:34:52 -0600 Subject: [PATCH 001/231] Update system_health.markdown data location (#14667) The location isn't on the Info tab on version 0.115.6 on my PI --- source/_integrations/system_health.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/system_health.markdown b/source/_integrations/system_health.markdown index 53b55ab484f..549ea17b106 100644 --- a/source/_integrations/system_health.markdown +++ b/source/_integrations/system_health.markdown @@ -17,4 +17,4 @@ This integration is by default enabled, unless you've disabled or removed the [` system_health: ``` -System Health integration data can be viewed in Developer Tools on the "Info" tab. +System Health integration data can be viewed in Configuration -> General Configuration, on the "Info" tab. From 77d03a26b36531e9bdc1a5e8e42f0f28a649534c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20L=C3=B6vdahl?= Date: Wed, 30 Sep 2020 23:42:37 +0300 Subject: [PATCH 002/231] Fix Vallox state update automation to work (#14666) Co-authored-by: Franck Nijhof --- source/_integrations/vallox.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/vallox.markdown b/source/_integrations/vallox.markdown index b9826cb0361..977aa2f9fb5 100644 --- a/source/_integrations/vallox.markdown +++ b/source/_integrations/vallox.markdown @@ -78,10 +78,10 @@ automation: - entity_id: sensor.vallox_current_profile platform: state action: - - data_template: - entity_id: input_select.ventilation_profile - option: "{{ states('sensor.vallox_current_profile') }}" - service: input_select.select_option + - service: input_select.select_option + data: + entity_id: input_select.ventilation_profile + option: "{{ states('sensor.vallox_current_profile') }}" ``` {% endraw %} From e916b5c853b03ec06cf34e88d8308556c5388f9d Mon Sep 17 00:00:00 2001 From: Glen Buktenica Date: Thu, 1 Oct 2020 15:04:54 +0800 Subject: [PATCH 003/231] Add Denon AVR-X3700H (#14675) Co-authored-by: Glen Buktenica --- source/_integrations/denonavr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown index 856877760ce..ed24723bf80 100644 --- a/source/_integrations/denonavr.markdown +++ b/source/_integrations/denonavr.markdown @@ -30,6 +30,7 @@ Known supported devices: - Denon AVR-X3300W - Denon AVR-X3400H - Denon AVR-X3600H +- Denon AVR-X3700H - Denon AVR-X4100W - Denon AVR-X4300H - Denon AVR-X4500H From 4087038e083f5e3818f594feaa02c05ab679638a Mon Sep 17 00:00:00 2001 From: tomlut <10679300+tomlut@users.noreply.github.com> Date: Thu, 1 Oct 2020 17:05:23 +1000 Subject: [PATCH 004/231] Updated markdown (#14673) * Updated markdown Fixed visible {% raw %} tag * Update scripts.markdown --- source/_docs/scripts.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 036eef4e578..1658882c668 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -420,6 +420,7 @@ For example: sequence: - ... ``` +{% endraw %} ### Repeat Loop Variable From d2e1fd372f1656ab8c4ff3ef700fba2eb495a7a9 Mon Sep 17 00:00:00 2001 From: Roncoa Date: Thu, 1 Oct 2020 09:06:00 +0200 Subject: [PATCH 005/231] Update discovery.markdown (#14672) Add SmartHome firmware in the list of software that have built-in support for MQTT discovery --- source/_docs/mqtt/discovery.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index e71622c1953..1cc37f7357a 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -269,6 +269,7 @@ The following software has built-in support for MQTT discovery: - [Tasmota](https://github.com/arendst/Tasmota) (starting with 5.11.1e) - [ESPHome](https://esphome.io) - [ESPurna](https://github.com/xoseperez/espurna) +- [SmartHome](https://github.com/roncoa/SmartHome) - [Arilux AL-LC0X LED controllers](https://github.com/mertenats/Arilux_AL-LC0X) - [room-assistant](https://github.com/mKeRix/room-assistant) (starting with 1.1.0) - [Zigbee2mqtt](https://github.com/koenkk/zigbee2mqtt) From df7580a18a60d9737f90ad5a92d13ee0f9f0011e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Oct 2020 09:10:38 +0200 Subject: [PATCH 006/231] Bump actions/setup-ruby from v1.1.1 to v1.1.2 (#14676) Bumps [actions/setup-ruby](https://github.com/actions/setup-ruby) from v1.1.1 to v1.1.2. - [Release notes](https://github.com/actions/setup-ruby/releases) - [Commits](https://github.com/actions/setup-ruby/compare/v1.1.1...5f29a1cd8dfebf420691c4c9a0e832e2fae5a526) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d655d7aec3d..121bd9b83bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,7 +57,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v2 - name: Setting up Ruby 2.6 - uses: actions/setup-ruby@v1.1.1 + uses: actions/setup-ruby@v1.1.2 with: ruby-version: 2.6 - name: Setup Ruby Gems cache From 99c5b9ed177ded1d69d95c971987acb2679914ff Mon Sep 17 00:00:00 2001 From: Eliot Wong Date: Thu, 1 Oct 2020 03:12:32 -0400 Subject: [PATCH 007/231] Remove two broken links (#14674) - A video talk that has been removed from YouTube (Automating your Home with Home Assistant) - A removed docs page on MQTT processing JSON (https://www.home-assistant.io/docs/mqtt/processing_json/) --- source/_includes/asides/docs_navigation.html | 1 - source/help/index.markdown | 1 - 2 files changed, 2 deletions(-) diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index 9a9562b16f8..914388720af 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -186,7 +186,6 @@
  • {% active_link /docs/mqtt/testing/ Testing your setup %}
  • {% active_link /docs/mqtt/logging/ Logging %}
  • -
  • {% active_link /docs/mqtt/processing_json/ Processing JSON %}
  • diff --git a/source/help/index.markdown b/source/help/index.markdown index a08c481ea9e..6d79663742d 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -42,7 +42,6 @@ Have you found an issue in your Home Assistant installation? Please report it. R - [Building Online Communities: Home Assistant](https://medium.com/@gitter/building-online-communities-home-assistant-8818dff671ad#.och4x4rhx) - July 2016 - [Home Assistant Support 101 - Getting around in Home Assistant](https://www.youtube.com/watch?v=dRfk9JAlPJk) (Slides) - June 2016 - [Awaken your home: Python and the Internet of Things](https://www.youtube.com/watch?v=Cfasc9EgbMU&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=1) at PyCon 2016 - June 2016 -- [Automating your Home with Home Assistant](https://www.youtube.com/watch?v=4-6rTwKl6ww&list=PLKsVm4cWHDQB9JBcD7_ZfNcvC6xx47QHT&index=2) at OpenIoT 2016 - March 2016 Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? From 96ff6072e8d373cfde9dfd70a8255a1c1561ad9b Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Thu, 1 Oct 2020 09:15:26 +0200 Subject: [PATCH 008/231] Fix broken links on website (part 1) (#14669) --- source/_integrations/fail2ban.markdown | 6 +----- source/_posts/2017-08-26-release-0-52.markdown | 7 +++---- source/_posts/2019-10-30-release-101.markdown | 10 ++++------ source/_posts/2019-12-11-release-103.markdown | 3 +-- source/_posts/2020-01-15-release-104.markdown | 3 +-- source/_redirects | 2 +- 6 files changed, 11 insertions(+), 20 deletions(-) diff --git a/source/_integrations/fail2ban.markdown b/source/_integrations/fail2ban.markdown index a15b7525ee3..0d629097061 100644 --- a/source/_integrations/fail2ban.markdown +++ b/source/_integrations/fail2ban.markdown @@ -46,10 +46,6 @@ file_path: default: /var/log/fail2ban.log {% endconfiguration %} -### Set up Fail2Ban - -For most setups, you can follow [this tutorial](/cookbook/fail2ban/) to set up `fail2ban` on your system. It will walk you through creating jails and filters, allowing you to monitor IP addresses that have been banned for too many failed SSH login attempts, as well as too many failed Home Assistant login attempts. - ### Fail2Ban with Docker
    @@ -72,7 +68,7 @@ logger: #### Edit the `jail.local` file -Next, we need to edit the `jail.local` file that is included with the Let's Encrypt Docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail from the [previously linked tutorial](/cookbook/fail2ban/). +Next, we need to edit the `jail.local` file that is included with the Let's Encrypt Docker linked above. Note, for this tutorial, we'll only be implementing the `[hass-iptables]` jail. Edit `/mnt/user/appdata/letsencrypt/fail2ban/jail.local` and append the following to the end of the file: diff --git a/source/_posts/2017-08-26-release-0-52.markdown b/source/_posts/2017-08-26-release-0-52.markdown index 5b93e7207b9..2ed7e471711 100644 --- a/source/_posts/2017-08-26-release-0-52.markdown +++ b/source/_posts/2017-08-26-release-0-52.markdown @@ -39,7 +39,7 @@ script: !include scripts.yaml - Add version sensor ([@fabaff] - [#8912]) ([sensor.version docs]) (new-platform) - Nello.io lock support ([@pschmitt] - [#8957]) ([lock.nello docs]) (new-platform) -- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) ([notify.hipchat docs]) (new-platform) +- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) (new-platform) - Refactor USPS into component with Sensors+Camera ([@mezz64] - [#8679]) (breaking change) (new-platform) - Adds London_air component ([@robmarkcole] - [#9020]) ([sensor.london_air docs]) (new-platform) - Add Abode home security component ([@arsaboo] - [#9030]) ([abode docs]) ([alarm_control_panel.abode docs]) ([binary_sensor.abode docs]) (new-platform) @@ -117,7 +117,7 @@ usps: - Pushbullet, fix multiple messages sent when url param is set ([@karlkar] - [#9006]) ([notify.pushbullet docs]) - Update to pyenvisalink 2.2, and remove range validation on zonedump i… ([@Cinntax] - [#8981]) ([envisalink docs]) - Fix #9010 - Swiss Public Transportation shows departure time in the past ([@hertg] - [#9011]) ([sensor.swiss_public_transport docs]) -- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) ([notify.hipchat docs]) (new-platform) +- Add HipChat notify service. ([@BioSehnsucht] - [#8918]) (new-platform) - Update onkyo-eiscp to 1.2.3 ([@danieljkemp] - [#9019]) ([media_player.onkyo docs]) - Check if album image(s) exist in spotify ([@Tommatheussen] - [#9024]) ([media_player.spotify docs]) - Update ffmpeg to 1.7 to fix severals problems ([@pvizeli] - [#9029]) @@ -156,7 +156,7 @@ usps: - Remove dash ([@fabaff] - [#9089]) - Upgrade credstash to 1.13.3 ([@fabaff] - [#9088]) - 9043 Fixed error while running dev docker ([@MungoRae] - [#9044]) -- Don't redefine consts ([@fabaff] - [#9086]) ([notify.hipchat docs]) +- Don't redefine consts ([@fabaff] - [#9086]) - Fix octoprint errors when printer is off/disconnected ([@w1ll1am23] - [#8988]) ([octoprint docs]) ([sensor.octoprint docs]) - Pilight switch: restore last state after restart ([@janLo] - [#8580]) ([switch.pilight docs]) - Fix netdata system_load and add disk_free. ([@michaelarnauts] - [#9091]) ([sensor.netdata docs]) @@ -341,7 +341,6 @@ usps: [media_player.webostv docs]: /integrations/webostv#media-player [mysensors docs]: /integrations/mysensors/ [notify.discord docs]: /integrations/discord -[notify.hipchat docs]: /integrations/hipchat [notify.mysensors docs]: /integrations/notify.mysensors/ [notify.prowl docs]: /integrations/prowl [notify.pushbullet docs]: /integrations/pushbullet diff --git a/source/_posts/2019-10-30-release-101.markdown b/source/_posts/2019-10-30-release-101.markdown index 3001649441b..b24b0fd5d1e 100644 --- a/source/_posts/2019-10-30-release-101.markdown +++ b/source/_posts/2019-10-30-release-101.markdown @@ -223,8 +223,8 @@ Experiencing issues introduced by this release? Please report them in our [issue - __Removed__ - The following integrations have been removed: - __Direct authentication via trusted networks or API password__ - It is no longer possible to make authenticated requests using trusted networks or by appending ?api_password=X to the URL. You will now first need to get an authentication token and use that token to make requests. Auth providers for trusted networks and API passwords are still available. - ([@balloob] - [#27656]) ([auth docs]) ([http docs]) ([websocket_api docs]) - - __Stride__ - The Stride notification integration was discontinued in February 2019 due to a take over by Slack. - ([@hmmbob] - [#27934]) ([stride docs]) - - __Hipchat__ - The Hipchat notification integration was discontinued in February 2019, also due to a take over by Slack. - ([@fabaff] - [#27399]) ([hipchat docs]) + - __Stride__ - The Stride notification integration was discontinued in February 2019 due to a take over by Slack. - ([@hmmbob] - [#27934]) + - __Hipchat__ - The Hipchat notification integration was discontinued in February 2019, also due to a take over by Slack. - ([@fabaff] - [#27399]) - __Deprecated__ - Python 3.6 support is deprecated (to be removed completely by December 2019), as version 3.8.0 is now out - ([@scop] - [#27680]) - __Scene__ - Scenes have to be configured more strictly from now on. Each entity must be configured with a valid state. Furthermore, the attributes that can be used must be `device state attributes`. This means that they should be listed under _developer-tools -> states_. - ([scene docs]) - __Ecobee__ - Adds `turn_on` method to ecobee climate platform. Previously, calling `climate.turn_on` would cause the ecobee thermostat to turn on in heat mode, regardless of the mode when the thermostat was turned off. Now, the thermostat will turn on to the last "active" HVAC mode (i.e., "heat", "cool", or "auto") (or, if the thermostat was "off" when Home Assistant started, to "auto"). - ([@marthoc] - [#27103]) ([ecobee docs]) @@ -370,7 +370,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - move import to top-level ([@exxamalte] - [#27353]) ([onkyo docs]) - move import to top-level ([@exxamalte] - [#27352]) ([systemmonitor docs]) - Allow Google Assistant relative volume control ([@RyanEwen] - [#26585]) ([google_assistant docs]) -- Remove hipchat ([@fabaff] - [#27399]) ([hipchat docs]) (breaking change) +- Remove hipchat ([@fabaff] - [#27399]) (breaking change) - Move imports in waze_travel_time component ([@eifinger] - [#27384]) ([waze_travel_time docs]) - Move imports in wemo component ([@Quentame] - [#27393]) ([wemo docs]) - Move imports in wink component ([@Quentame] - [#27392]) ([wink docs]) @@ -672,7 +672,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - Bump abodepy version ([@shred86] - [#27931]) ([abode docs]) - Add support for AdGuard Home v0.99.0 ([@frenck] - [#27926]) ([adguard docs]) (breaking change) - remove duplicate unique_id, add unique_id for issues ([@zxdavb] - [#27916]) ([geniushub docs]) (breaking change) -- Remove stride ([@hmmbob] - [#27934]) ([stride docs]) (breaking change) +- Remove stride ([@hmmbob] - [#27934]) (breaking change) - Import shuffle ([@balloob] - [#27935]) ([http docs]) ([persistent_notification docs]) ([stream docs]) - Update pysonos to 0.0.24 ([@timmccor] - [#27937]) ([sonos docs]) - Bump pybotvac ([@Santobert] - [#27933]) ([neato docs]) @@ -1666,7 +1666,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [hassio docs]: /integrations/hassio/ [hikvision docs]: /integrations/hikvision/ [hikvisioncam docs]: /integrations/hikvisioncam/ -[hipchat docs]: /integrations/hipchat/ [hive docs]: /integrations/hive/ [homeassistant docs]: /integrations/homeassistant/ [homekit docs]: /integrations/homekit/ @@ -1833,7 +1832,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [statsd docs]: /integrations/statsd/ [steam_online docs]: /integrations/steam_online/ [stream docs]: /integrations/stream/ -[stride docs]: /integrations/stride/ [sun docs]: /integrations/sun/ [supla docs]: /integrations/supla/ [switch docs]: /integrations/switch/ diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index 45b3791a04a..c78563373d4 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -516,7 +516,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Move velux imports at top-level ([@Quentame] - [#29085]) ([velux docs]) - Move upnp imports at top-level ([@Quentame] - [#29083]) ([upnp docs]) - Move dlna_dmr imports at top-level ([@Quentame] - [#29082]) ([dlna_dmr docs]) -- Move imports to top for xfinity ([@springstan] - [#29077]) ([xfinity docs]) +- Move imports to top for xfinity ([@springstan] - [#29077]) - Move imports to top for xeoma ([@springstan] - [#29076]) ([xeoma docs]) - Move imports to top for version ([@springstan] - [#29075]) ([version docs]) - Move imports to top for yale_smart_alarm ([@springstan] - [#29074]) ([yale_smart_alarm docs]) @@ -1802,7 +1802,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [wled docs]: /integrations/wled/ [workday docs]: /integrations/workday/ [xeoma docs]: /integrations/xeoma/ -[xfinity docs]: /integrations/xfinity/ [xiaomi docs]: /integrations/xiaomi/ [xiaomi_aqara docs]: /integrations/xiaomi_aqara/ [xiaomi_miio docs]: /integrations/xiaomi_miio/ diff --git a/source/_posts/2020-01-15-release-104.markdown b/source/_posts/2020-01-15-release-104.markdown index f36ea8d92b9..b09976634eb 100644 --- a/source/_posts/2020-01-15-release-104.markdown +++ b/source/_posts/2020-01-15-release-104.markdown @@ -724,7 +724,7 @@ Make sure to fill in all fields of the issue template, that is helping us a lot! - Sort imports according to PEP8 for components starting with "W" ([@basnijholt] - [#29781]) - Sort imports according to PEP8 for components starting with "Q" ([@basnijholt] - [#29785]) - Sort imports according to PEP8 for components starting with "Y" ([@basnijholt] - [#29783]) ([yale_smart_alarm docs]) ([yamaha docs]) ([yamaha_musiccast docs]) ([yandex_transport docs]) ([yeelightsunflower docs]) ([yessssms docs]) -- Sort imports according to PEP8 for components starting with "X" ([@basnijholt] - [#29782]) ([x10 docs]) ([xbox_live docs]) ([xeoma docs]) ([xfinity docs]) ([xiaomi_tv docs]) ([xmpp docs]) ([xs1 docs]) +- Sort imports according to PEP8 for components starting with "X" ([@basnijholt] - [#29782]) ([x10 docs]) ([xbox_live docs]) ([xeoma docs]) ([xiaomi_tv docs]) ([xmpp docs]) ([xs1 docs]) - Move imports to top for homekit ([@springstan] - [#29560]) ([homekit docs]) - Cleanup removed component ([@pvizeli] - [#29788]) - Sort imports according to PEP8 for 'script' folder ([@basnijholt] - [#29790]) @@ -2073,7 +2073,6 @@ Make sure to fill in all fields of the issue template, that is helping us a lot! [x10 docs]: /integrations/x10/ [xbox_live docs]: /integrations/xbox_live/ [xeoma docs]: /integrations/xeoma/ -[xfinity docs]: /integrations/xfinity/ [xiaomi_miio docs]: /integrations/xiaomi_miio/ [xiaomi_tv docs]: /integrations/xiaomi_tv/ [xmpp docs]: /integrations/xmpp/ diff --git a/source/_redirects b/source/_redirects index a6706ec0a53..13d1ac7bbc2 100644 --- a/source/_redirects +++ b/source/_redirects @@ -1835,7 +1835,6 @@ /components/stiebel_eltron /integrations/stiebel_eltron /components/stream /integrations/stream /components/streamlabswater /integrations/streamlabswater -/components/stride /integrations/stride /components/suez_water /integrations/suez_water /components/sun /integrations/sun /components/supervisord /integrations/supervisord @@ -2066,6 +2065,7 @@ /integrations/sensor.knx /integrations/knx#sensor /integrations/switch.knx /integrations/knx#switch /integrations/weather.knx /integrations/knx#weather +/integrations/zigbee /integrations/xbee # Migrated Community Guides /cookbook/apache_configuration https://community.home-assistant.io/t/reverse-proxy-with-apache/196942 From d93ef838929a085d8ebf015d71e670308391b745 Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Thu, 1 Oct 2020 10:21:02 +0200 Subject: [PATCH 009/231] Remove broken url. (#14677) ifttt.manything integration does not exist anymore. --- source/_integrations/ifttt.markdown | 8 -------- 1 file changed, 8 deletions(-) diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown index 3f0b24cc1c9..988c1378ce2 100644 --- a/source/_integrations/ifttt.markdown +++ b/source/_integrations/ifttt.markdown @@ -166,11 +166,3 @@ ifttt_notify: data: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"} ``` {% endraw %} - -### Additional Channel Examples - -Additional examples of using IFTTT channels can be found below. - -Channel | Description ------ | ----- -[Manything](/integrations/ifttt.manything/) | Automates turning recording ON and OFF based on Home Assistant AWAY and HOME values. From 8530f19344afb1d9bd5ee3c2c279b3771fbd54e8 Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Thu, 1 Oct 2020 11:12:26 +0200 Subject: [PATCH 010/231] Update knx.markdown (#14680) Url to https://www.home-assistant.io/integrations/sensor.knx/ was automatically redirected to sensor anchor. The table that is referenced still exists, so the link still makes sense. --- source/_integrations/knx.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 3a0318c1250..3a3315b5f4f 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -167,7 +167,7 @@ payload: description: Payload to send to the bus. When `type` is not set, raw bytes are sent. Integers are then treated as DPT 1/2/3 payloads. For DPTs > 6 bits send a list. Each value represents 1 octet (0-255). Pad with 0 to DPT byte length. type: [integer, list] type: - description: If set, the payload will not be sent as raw bytes, but encoded as given DPT. KNX sensor types are valid values - see table in [KNX Sensor](/integrations/sensor.knx). + description: If set, the payload will not be sent as raw bytes, but encoded as given DPT. KNX sensor types are valid values - see table in [KNX Sensor](#sensor). type: [string, integer, float] {% endconfiguration %} @@ -207,7 +207,7 @@ knx: {% configuration %} type: - description: Type of the exposed value. Either 'binary', 'time', 'date', 'datetime' or any supported type of [KNX Sensor](/integrations/sensor.knx/) (e.g., "temperature" or "humidity"). + description: Type of the exposed value. Either 'binary', 'time', 'date', 'datetime' or any supported type of [KNX Sensor](#sensor) (e.g., "temperature" or "humidity"). type: string required: true entity_id: From 716f5bd56be70ca659bd88ef820dcb55448358db Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Thu, 1 Oct 2020 11:13:49 +0200 Subject: [PATCH 011/231] Update vacuum.markdown (#14681) Update broken link --- source/_integrations/vacuum.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/vacuum.markdown b/source/_integrations/vacuum.markdown index dcc4f981132..6d11b4c6705 100644 --- a/source/_integrations/vacuum.markdown +++ b/source/_integrations/vacuum.markdown @@ -9,7 +9,7 @@ The `vacuum` integration enables the ability to control home cleaning robots wit ## Configuration -To use this integration in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/integrations/vacuum.xiaomi_miio/). +To use this integration in your installation, add a `vacuum` platform to your `configuration.yaml` file, like the [Xiaomi](/integrations/xiaomi_miio#xiaomi-mi-robot-vacuum). ```yaml # Example configuration.yaml entry From 6591eadba6db66331b6349f27b2191a71ade756d Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Thu, 1 Oct 2020 14:43:29 +0200 Subject: [PATCH 012/231] Update braviatv.markdown (#14686) Some anchors to headings were not working. In Github markdown, when you create a link to a heading, use lower case for the anchor name. --- source/_integrations/braviatv.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown index 142f3e20b9f..5c307d143c0 100644 --- a/source/_integrations/braviatv.markdown +++ b/source/_integrations/braviatv.markdown @@ -13,7 +13,7 @@ ha_config_flow: true The `braviatv` platform allows you to control a [Sony Bravia TV](https://www.sony.com/). -Almost all [Sony Bravia TV 2013 and newer](https://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further [below](#For-TVs-older-than-2013). +Almost all [Sony Bravia TV 2013 and newer](https://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further [below](#for-tvs-older-than-2013). ## Configuration @@ -28,8 +28,8 @@ To ensure a clean re-configuration, please perform the following steps: - Ensure that all braviatv entries in `configuration.yaml` have been removed and `bravia.conf` does not exist in your `.homeassistant` folder. - Remove the entities you are reconfiguring from Home Assistant. - Restart Home Assistant. -- Perform the [TV does not generate new pin](#TV-does-not-generate-new-pin) steps. -- Retry [configuration](###Setup-via-the-User-Interface). +- Perform the [TV does not generate new pin](#tv-does-not-generate-new-pin) steps. +- Retry [configuration](#configuration). ### TV does not generate new pin: From 8ea39a2f81235172ee1289c48693828922b78219 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 1 Oct 2020 21:40:22 +0200 Subject: [PATCH 013/231] Blog: Hacktoberfest 2020 (#14695) Co-authored-by: Paulus Schoutsen --- .../2020-10-01-hacktoberfest-2020.markdown | 94 ++++++++++++++++++ .../2020-10-01-hacktoberfest-2020/social.png | Bin 0 -> 147605 bytes 2 files changed, 94 insertions(+) create mode 100644 source/_posts/2020-10-01-hacktoberfest-2020.markdown create mode 100644 source/images/blog/2020-10-01-hacktoberfest-2020/social.png diff --git a/source/_posts/2020-10-01-hacktoberfest-2020.markdown b/source/_posts/2020-10-01-hacktoberfest-2020.markdown new file mode 100644 index 00000000000..af61136979f --- /dev/null +++ b/source/_posts/2020-10-01-hacktoberfest-2020.markdown @@ -0,0 +1,94 @@ +--- +title: "Hacktoberfest 2020" +description: "It is October and Hacktoberfest started! Home Assistant participates again this year, and you?" +date: 2020-10-01 00:00:00 +date_formatted: "October 1, 2020" +author: Franck Nijhof +author_twitter: frenck +categories: Community +og_image: /images/blog/2020-10-01-hacktoberfest-2020/social.png +--- + + + +October has started, which means: [Hacktoberfest][hacktoberfest]! + +Hacktoberfest is a worldwide, month-long celebration of open source. An event +open to everyone. Whether you’re a developer, student learning to code, +documenter, designer, you can help drive the growth of open source projects, +like Home Assistant. + +By participating in Hacktoberfest, and by contributing four GitHub pull +requests, you will earn either a free t-shirt or, new this year, have a +tree planted. All backgrounds and skill levels are encouraged to complete the +Hacktoberfest challenge. + +Just like all other years, Home Assistant participates in Hacktoberfest. + +## What to work on? + +So, you’ve decided to earn yourself that free Hacktoberfest t-shirt? Great! +We've collected a bunch of tasks/suggestions/bugs that we'd love to get +some help on. You can find those by filtering/searching for issues with +the [`hacktoberfest` label][all]. + +- **[Core Hacktoberfest issues][core]** + + For example, help us migrate + [unittest tests to pytest style test][testcase] functions or lend a hand with + using as many references as possible + in the [configuration flow translations][translations]. + +- **[Frontend Hacktoberfest issues][frontend]** + + We could use some help with [moving all `paper-dialogs` to `ha-dialogs`][paper]. + +- **[Documentation Hacktoberfest issues][docs]** + + [Find and fix broken links][links] on our website or help to complete the + addition of the [right IoT Class to every integration][class]. + +Or view all our Hacktoberfest issues across [all Home Assistant projects][all]. + +Additionally, we recently held the [month of "What the heck?!"][wth-blog]. During +this month a lot of suggestions and annoyances got reported by our community. +While, those topic may not be approved as a change yet, it might be a great +source of inspiration to contribute something the community wants. Check out +the [WTH community forum posts][wth]. + +## But, I'm not a developer?! + +If you are not a developer, new to git, GitHub or open source in general, +documentation can be a great way to get started. A relatively easy way to +contribute, is by reviewing the documentation of integrations you use or are +familiar with, checking if everything is still up to date and if free of +spelling/grammar mistakes. + +Every single documentation page on our website has a "Edit this page on GitHub", +on the top right corner. Using that link, you can change the text on that page +and provide a suggestion for improvement. + +On our Community forum, there is a good, step-by-step, guide on how this works: +[Editing the Documentation and Creating a Pull Request on GitHub][docs-how-to]. + +So, what are you waiting for? Sign-up on the [Hacktoberfest][hacktoberfest] +website and start hacking! If you have any questions, please, drop by on our +[Discord chat server](/join-chat). We have dedicated developer channels and +are happy to assist you. + +Happy Hacktoberfest 🎉 + +[all]: https://github.com/search?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ahacktoberfest+org%3Ahome-assistant +[brands]: https://github.com/home-assistant/brands/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ahacktoberfest +[class]: https://github.com/home-assistant/home-assistant.io/issues/14661 +[core]: https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ahacktoberfest +[docs-how-to]: https://community.home-assistant.io/t/editing-the-documentation-and-creating-a-pull-request-on-github/9573 +[docs]: https://github.com/home-assistant/home-assistant.io/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ahacktoberfest +[frontend]: https://github.com/home-assistant/frontend/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Ahacktoberfest +[hacktoberfest]: https://hacktoberfest.digitalocean.com/ +[links]: https://github.com/home-assistant/home-assistant.io/issues/14663 +[paper]: https://github.com/home-assistant/frontend/issues/6138 +[testcase]: https://github.com/home-assistant/core/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3Aunittest.TestCase +[translations]: https://github.com/home-assistant/core/issues/40578 +[wth-blog]: https://www.home-assistant.io/blog/2020/08/18/the-month-of-what-the-heck/ +[wth]: https://community.home-assistant.io/c/what-the-heck/52/l/latest?order=votes diff --git a/source/images/blog/2020-10-01-hacktoberfest-2020/social.png b/source/images/blog/2020-10-01-hacktoberfest-2020/social.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6477aa3d92630a42fd2d997099a13e07eb72ea GIT binary patch literal 147605 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≥jg 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 literal 0 HcmV?d00001 From ecbf6ec059e410fcee238c694c1dddee4fd2b9cb Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Thu, 1 Oct 2020 22:43:39 +0200 Subject: [PATCH 014/231] Add Hacktoberfest to frontpage (#14708) --- source/images/frontpage/hacktoberfest.png | Bin 0 -> 129205 bytes source/index.html | 29 +++++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 source/images/frontpage/hacktoberfest.png diff --git a/source/images/frontpage/hacktoberfest.png b/source/images/frontpage/hacktoberfest.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bc641a3499875eb4deb0cfab587e323fa5f5c9 GIT binary patch literal 129205 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 @@ -35,6 +36,15 @@ description: Open source home automation that puts local control and privacy fir

    + +

    Alexa, turn on the lights

    Use Alexa to control Home Assistant. @@ -107,7 +117,8 @@ description: Open source home automation that puts local control and privacy fir href="/blog/2017/07/25/introducing-hassio/" > Learn how our OS can turn your Raspberry Pi into the ultimate home - automation hub + automation hub + Home Assistant is sponsored by Nabu Casa logoNabu Casa logo
    @@ -197,32 +208,32 @@ description: Open source home automation that puts local control and privacy fir ProductHunt.com logo Linux.com logoLinux.com logo Wired.com logoWired.com logo OpenSource.com logo Linux Magazine logoLinux Magazine logo Ct logoCt logo From 8f1ed2c56edd1276297e4c7da6e53d284b78fede Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Thu, 1 Oct 2020 17:20:25 -0400 Subject: [PATCH 015/231] Update spelling in Hacktoberfest Blog Post (#14701) --- source/_posts/2020-10-01-hacktoberfest-2020.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2020-10-01-hacktoberfest-2020.markdown b/source/_posts/2020-10-01-hacktoberfest-2020.markdown index af61136979f..bea7dbf57c6 100644 --- a/source/_posts/2020-10-01-hacktoberfest-2020.markdown +++ b/source/_posts/2020-10-01-hacktoberfest-2020.markdown @@ -61,7 +61,7 @@ the [WTH community forum posts][wth]. If you are not a developer, new to git, GitHub or open source in general, documentation can be a great way to get started. A relatively easy way to contribute, is by reviewing the documentation of integrations you use or are -familiar with, checking if everything is still up to date and if free of +familiar with, checking if everything is still up to date and is free of spelling/grammar mistakes. Every single documentation page on our website has a "Edit this page on GitHub", From 2492e668614dcaefa8e8e3651faf268bab358240 Mon Sep 17 00:00:00 2001 From: Rafhaan Shah Date: Fri, 2 Oct 2020 09:13:06 +0100 Subject: [PATCH 016/231] Fix link to GPSLogger (#14754) As it is no longer on the Google Play Store as discussed https://github.com/mendhak/gpslogger/issues/849 --- source/_integrations/gpslogger.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/gpslogger.markdown b/source/_integrations/gpslogger.markdown index a9e756e3bde..cbc50891522 100644 --- a/source/_integrations/gpslogger.markdown +++ b/source/_integrations/gpslogger.markdown @@ -17,7 +17,7 @@ To configure GPSLogger, you must set it up via the integrations panel in the con ## Setup on your smartphone -Install [GPSLogger for Android](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) on your device. +Install GPSLogger for Android from [GitHub](https://github.com/mendhak/gpslogger/releases) or [F-Droid](https://apt.izzysoft.de/fdroid/index/apk/com.mendhak.gpslogger) on your device. After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**. From 859b5cc8a41ed310b21b4c0395ca3ad6ec9c03ba Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Fri, 2 Oct 2020 10:30:12 +0200 Subject: [PATCH 017/231] Update mqtt.markdown (#14705) Removed broken link. The referenced page was removed in this pull request: https://github.com/home-assistant/home-assistant.io/pull/14647 --- source/_docs/mqtt.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_docs/mqtt.markdown b/source/_docs/mqtt.markdown index 9ef86f4038a..2a3f8002385 100644 --- a/source/_docs/mqtt.markdown +++ b/source/_docs/mqtt.markdown @@ -24,4 +24,3 @@ For detailed setup instructions, please refer to the [MQTT broker](/docs/mqtt/br - [Testing your setup](/docs/mqtt/testing/) - [Logging](/docs/mqtt/logging/) -See the [MQTT example component](/cookbook/python_component_mqtt_basic/) how to integrate your own component. From fd190430f217d8efa0453615a035024e187f1b1f Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Fri, 2 Oct 2020 04:35:49 -0400 Subject: [PATCH 018/231] Fix broken markdown link (#14733) * Fix broken markdown link * Remove link to deleted cookbook page Co-authored-by: Klaas Schoute --- source/_docs/mqtt.markdown | 1 - source/cookbook/index.markdown | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_docs/mqtt.markdown b/source/_docs/mqtt.markdown index 2a3f8002385..3f9f5145631 100644 --- a/source/_docs/mqtt.markdown +++ b/source/_docs/mqtt.markdown @@ -23,4 +23,3 @@ For detailed setup instructions, please refer to the [MQTT broker](/docs/mqtt/br - [Birth and last will messages](/docs/mqtt/birth_will/) - [Testing your setup](/docs/mqtt/testing/) - [Logging](/docs/mqtt/logging/) - diff --git a/source/cookbook/index.markdown b/source/cookbook/index.markdown index 0c34d0c036a..87a5bf0ac12 100644 --- a/source/cookbook/index.markdown +++ b/source/cookbook/index.markdown @@ -17,7 +17,7 @@ A great place to find popular configurations is on this -[automation]: /getting-started/automation/ +[automations]: /getting-started/automation/ [github-search]: https://github.com/search?q=topic%3Ahome-assistant-config&type=Repositories {% assign cookbook = site.cookbook | sort: 'title' %} From 241edac050ddcbe7cd42950bc0fee2ebde5079df Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Fri, 2 Oct 2020 10:39:40 +0200 Subject: [PATCH 019/231] Update opentherm_gw.markdown (#14688) anchors did not work. The 2 variables are listed under the Sensors heading. --- source/_integrations/opentherm_gw.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/opentherm_gw.markdown b/source/_integrations/opentherm_gw.markdown index c0cf858114c..fc91b43536c 100644 --- a/source/_integrations/opentherm_gw.markdown +++ b/source/_integrations/opentherm_gw.markdown @@ -112,7 +112,7 @@ Improper use of this service may continuously keep your central heating system a Set the central heating control setpoint override on the OpenTherm Gateway. -In a normal situation, the thermostat will calculate and control the central heating setpoint on the boiler. Setting this to any value other than 0 will enable the override and allow the OpenTherm Gateway to control this setting. While the override is active, the OpenTherm Gateway will also request your boiler to activate the central heating circuit. For your boiler's actual maximum and minimum supported setpoint value, please see the [`slave_ch_max_setp`](#slave_ch_max_setp) and [`slave_ch_min_setp`](#slave_ch_min_setp) variables. Due to the potential consequences of leaving this setting enabled for prolonged periods, the override will be disabled when Home Assistant is shut down or restarted. +In a normal situation, the thermostat will calculate and control the central heating setpoint on the boiler. Setting this to any value other than 0 will enable the override and allow the OpenTherm Gateway to control this setting. While the override is active, the OpenTherm Gateway will also request your boiler to activate the central heating circuit. For your boiler's actual maximum and minimum supported setpoint value, please see the `slave_ch_max_setp` and `slave_ch_min_setp` [sensors](#sensors). Due to the potential consequences of leaving this setting enabled for prolonged periods, the override will be disabled when Home Assistant is shut down or restarted. **You will only need this if you are writing your own software thermostat.** | Service data attribute | Optional | Description | From 2cbf74204a88ce31be427a27ecd7156e534ed332 Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Fri, 2 Oct 2020 10:43:32 +0200 Subject: [PATCH 020/231] Update templating.markdown (#14704) Fixed broken link --- source/_docs/automation/templating.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index 58d0aee93cf..aeb9c9f02d5 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -64,7 +64,7 @@ Remembering these simple rules will help save you from many headaches and endles ## Trigger State Object -Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity can be useful in automations. Here are a few ways to access the [`state`](#state), [`numeric_state`](#numeric_state) and [`template`](#template) triggers: +Knowing how to access the [state object](/docs/configuration/state_object/) of a trigger entity can be useful in automations. Here are a few ways to access the [`state`](#state), [`numeric state`](#numeric-state) and [`template`](#template) triggers: * `trigger.from_state` will return the **previous** [state object](/docs/configuration/state_object/) of the entity. * `trigger.to_state` will return the **new** [state object](/docs/configuration/state_object/) that triggered trigger. From 27ec550fbc34b18f517a5a159d4059e7f34b2355 Mon Sep 17 00:00:00 2001 From: pniewiadowski Date: Fri, 2 Oct 2020 10:54:32 +0200 Subject: [PATCH 021/231] Update dublin_bus_transport.markdown (#14755) --- source/_integrations/dublin_bus_transport.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown index 2cc18600f11..eb98e8869d0 100644 --- a/source/_integrations/dublin_bus_transport.markdown +++ b/source/_integrations/dublin_bus_transport.markdown @@ -39,4 +39,4 @@ name: type: string {% endconfiguration %} -The public RTPI information is coming from [Dub Linked](https://data.dublinked.ie/). +The public RTPI information is coming from [Dub Linked](https://data.smartdublin.ie/). From 8b4188ec9b4a96e22549dfa9408be44a0d2a332a Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Fri, 2 Oct 2020 04:56:05 -0400 Subject: [PATCH 022/231] Update SSDP URL on Huawei LTE integraion page (#14699) * Update SSDP URL on Huawei LTE integraion page * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/huawei_lte.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/huawei_lte.markdown b/source/_integrations/huawei_lte.markdown index 1c53727abec..5401426ba0d 100644 --- a/source/_integrations/huawei_lte.markdown +++ b/source/_integrations/huawei_lte.markdown @@ -30,7 +30,7 @@ There is currently support for the following platforms within Home Assistant: ## Configuration The integration can be enabled in two ways, either using the frontend -or using YAML. Additionally, if the [SSDP integration](../ssdp/) is +or using YAML. Additionally, if the [SSDP integration](/integrations/ssdp) is enabled in Home Assistant, automatically discovered Huawei LTE devices which support and have UPnP enabled are made available for further optional configuration in the frontend. From 131a435c3d7ddc52d91e430e040e08f663709b7f Mon Sep 17 00:00:00 2001 From: Jenny Date: Fri, 2 Oct 2020 09:58:15 +0100 Subject: [PATCH 023/231] move configuration redirects (#14744) * move configuration redirects from source files in source\_docs\configuration into the dedicated source\_redirects file * :pencil2: Tweak * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_docs/configuration/basic.markdown | 1 - .../configuration/customizing-devices.markdown | 1 - source/_docs/configuration/devices.markdown | 1 - source/_docs/configuration/events.markdown | 1 - source/_docs/configuration/packages.markdown | 1 - .../_docs/configuration/platform_options.markdown | 1 - source/_docs/configuration/secrets.markdown | 1 - source/_docs/configuration/securing.markdown | 1 - .../configuration/splitting_configuration.markdown | 1 - source/_docs/configuration/state_object.markdown | 1 - source/_docs/configuration/templating.markdown | 1 - source/_docs/configuration/troubleshooting.markdown | 1 - source/_docs/configuration/yaml.markdown | 1 - source/_redirects | 13 +++++++++++++ 14 files changed, 13 insertions(+), 13 deletions(-) diff --git a/source/_docs/configuration/basic.markdown b/source/_docs/configuration/basic.markdown index 0efdbf907e5..cbdc6029ef5 100644 --- a/source/_docs/configuration/basic.markdown +++ b/source/_docs/configuration/basic.markdown @@ -1,7 +1,6 @@ --- title: "Setup basic information" description: "Setting up the basic info of Home Assistant." -redirect_from: /getting-started/basic/ --- As part of the default onboarding process, Home Assistant can detect your location from IP address geolocation. Home Assistant will automatically select a temperature unit and time zone based on this location. You may adjust this during onboarding, or afterwards at Configuration -> General. diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 03f29a05b88..21f5ec32f87 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -1,7 +1,6 @@ --- title: "Customizing entities" description: "Simple customization for entities in the frontend." -redirect_from: /getting-started/customizing-devices/ --- ## Changing the entity_id diff --git a/source/_docs/configuration/devices.markdown b/source/_docs/configuration/devices.markdown index d49409db3e8..1fccecfa993 100644 --- a/source/_docs/configuration/devices.markdown +++ b/source/_docs/configuration/devices.markdown @@ -1,7 +1,6 @@ --- title: "Adding devices to Home Assistant" description: "Steps to help you get your devices in Home Assistant." -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). diff --git a/source/_docs/configuration/events.markdown b/source/_docs/configuration/events.markdown index 4113e4e48fe..856a7d55d97 100644 --- a/source/_docs/configuration/events.markdown +++ b/source/_docs/configuration/events.markdown @@ -1,7 +1,6 @@ --- title: "Events" description: "Describes all there is to know about events in Home Assistant." -redirect_from: /topics/events/ --- The core of Home Assistant is the event bus. The event bus allows any integration to fire or listen for events. It is the core of everything. For example, any state change will be announced on the event bus as a `state_changed` event containing the previous and the new state of an entity. diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown index d3b26d31339..717846a1421 100644 --- a/source/_docs/configuration/packages.markdown +++ b/source/_docs/configuration/packages.markdown @@ -1,7 +1,6 @@ --- title: "Packages" description: "Describes all there is to know about configuration packages in Home Assistant." -redirect_from: /topics/packages/ --- Packages in Home Assistant provide a way to bundle different component's configuration together. We already learned about the two configuration styles (specifying platforms entries together or individually) on the [adding devices](/docs/configuration/devices/) page. Both of these configuration methods require you to create the integration key in the main `configuration.yaml` file. With packages we have a way to include different components, or different configuration parts using any of the `!include` directives introduced in [splitting the configuration](/docs/configuration/splitting_configuration). diff --git a/source/_docs/configuration/platform_options.markdown b/source/_docs/configuration/platform_options.markdown index 376b14a3f67..af528461dc9 100644 --- a/source/_docs/configuration/platform_options.markdown +++ b/source/_docs/configuration/platform_options.markdown @@ -1,7 +1,6 @@ --- title: "Entity integration platform options" description: "Shows how to customize polling interval for any integration via configuration.yaml." -redirect_from: /topics/platform_options/ ---
    diff --git a/source/_docs/configuration/secrets.markdown b/source/_docs/configuration/secrets.markdown index b2510fcc9c2..23a68d3c837 100644 --- a/source/_docs/configuration/secrets.markdown +++ b/source/_docs/configuration/secrets.markdown @@ -1,7 +1,6 @@ --- title: "Storing secrets" description: "Storing secrets outside of your configuration.yaml." -redirect_from: /topics/secrets/ --- The `configuration.yaml` file is a plain-text file, thus it is readable by anyone who has access to the file. The file contains passwords and API tokens which need to be redacted if you want to share your configuration. By using `!secret` you can remove any private information from your configuration files. This separation can also help you to keep easier track of your passwords and API keys, as they are all stored at one place and no longer spread across the `configuration.yaml` file or even multiple YAML files if you [split up your configuration](/docs/configuration/splitting_configuration/). diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown index 2384a67696e..6e9911badee 100644 --- a/source/_docs/configuration/securing.markdown +++ b/source/_docs/configuration/securing.markdown @@ -1,7 +1,6 @@ --- title: "Securing" description: "Instructions on how to secure your Home Assistant installation." -redirect_from: /getting-started/securing/ --- One major advantage of Home Assistant is that it's not dependent on cloud services. Even if you're only using Home Assistant on a local network, you should take steps to secure your instance. diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 2c8774dcb50..9dbc5abe9a7 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -1,7 +1,6 @@ --- title: "Splitting up the configuration" description: "Splitting the configuration.yaml into several files." -redirect_from: /topics/splitting_configuration/ --- So you've been using Home Assistant for a while now and your `configuration.yaml` file brings people to tears or you simply want to start off with the distributed approach, here's how to split the `configuration.yaml` into more manageable (read: humanly readable) pieces. diff --git a/source/_docs/configuration/state_object.markdown b/source/_docs/configuration/state_object.markdown index a926437760e..309b62fd709 100644 --- a/source/_docs/configuration/state_object.markdown +++ b/source/_docs/configuration/state_object.markdown @@ -1,7 +1,6 @@ --- title: "State Objects" description: "Describes all there is to know about state objects in Home Assistant." -redirect_from: /topics/state_object/ --- Your devices are represented in Home Assistant as entities. The entities will write their current state to the state machine for other entities/templates/frontend to access. States are a current representation of the entity. diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown index cac2260d0cc..efc5a31a852 100644 --- a/source/_docs/configuration/templating.markdown +++ b/source/_docs/configuration/templating.markdown @@ -1,7 +1,6 @@ --- title: "Templating" description: "Instructions on how to use the templating feature of Home Assistant." -redirect_from: /topics/templating/ --- This is an advanced feature of Home Assistant. You'll need a basic understanding of: diff --git a/source/_docs/configuration/troubleshooting.markdown b/source/_docs/configuration/troubleshooting.markdown index 31061131b8c..34d3677582a 100644 --- a/source/_docs/configuration/troubleshooting.markdown +++ b/source/_docs/configuration/troubleshooting.markdown @@ -1,7 +1,6 @@ --- title: "Troubleshooting your configuration" description: "Common problems with tweaking your configuration and their solutions." -redirect_from: /getting-started/troubleshooting-configuration/ --- 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. diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 95438478e2f..03f57a1f839 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -1,7 +1,6 @@ --- title: "YAML" description: "Details about YAML to configure Home Assistant." -redirect_from: /getting-started/yaml/ --- Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. YAML might take a while to get used to but is really powerful in allowing you to express complex configurations. diff --git a/source/_redirects b/source/_redirects index 13d1ac7bbc2..e1401482760 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2066,6 +2066,19 @@ /integrations/switch.knx /integrations/knx#switch /integrations/weather.knx /integrations/knx#weather /integrations/zigbee /integrations/xbee +/getting-started/basic /docs/configuration/basic +/getting-started/customizing-devices /docs/configuration/customizing-devices +/getting-started/devices /docs/configuration/devices +/getting-started/securing /docs/configuration/securing +/getting-started/troubleshooting-configuration /docs/configuration/troubleshooting +/getting-started/yaml /docs/configuration/yaml +/topics/events /docs/configuration/events +/topics/packages /docs/configuration/packages +/topics/platform_options /docs/configuration/platform_options +/topics/secrets /docs/configuration/secrets +/topics/splitting_configuration /docs/configuration/splitting_configuration +/topics/state_object /docs/configuration/state_object +/topics/templating /docs/configuration/templating # Migrated Community Guides /cookbook/apache_configuration https://community.home-assistant.io/t/reverse-proxy-with-apache/196942 From 0a379b7fb5560ef4e1b355f5761f92c5c1ad7fcd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:01:42 +0200 Subject: [PATCH 024/231] Bump actions/setup-node from v2.1.1 to v2.1.2 (#14751) Bumps [actions/setup-node](https://github.com/actions/setup-node) from v2.1.1 to v2.1.2. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v2.1.1...c6fd00ceb9747fb23ffdf72987450a2664414867) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 121bd9b83bb..4b1d0083a57 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v2 - name: Setting up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.1.1 + uses: actions/setup-node@v2.1.2 with: node-version: 12.x - name: Setup NPM cache @@ -33,7 +33,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v2 - name: Setting up Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v2.1.1 + uses: actions/setup-node@v2.1.2 with: node-version: 12.x - name: Setup NPM cache From 07caa1d1eaaf9d568ada893face74d2362bf22aa Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:07:48 +0200 Subject: [PATCH 025/231] Update alexa.intent.markdown (#14684) Co-authored-by: Franck Nijhof --- source/_integrations/alexa.intent.markdown | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown index d751057c038..67c651913cb 100644 --- a/source/_integrations/alexa.intent.markdown +++ b/source/_integrations/alexa.intent.markdown @@ -23,7 +23,7 @@ The built-in Alexa integration allows you to integrate Home Assistant into Alexa ### Create Your Amazon Alexa Custom Skill -- Log in to [Amazon developer console][amazon-dev-console] +- Log in to the [Amazon developer console][amazon-dev-console] - Click the Alexa button at the top of the console - Click the yellow "Add a new skill" button in the top right - Skill Type: Custom Interaction Model (default) @@ -60,7 +60,7 @@ The first thing you need to do after you sign in to the [AWS console](https://co Next you need to create a Lambda function. - Click `Service` in top navigation bar, expand the menu to display all AWS services, click `Lambda` under `Compute` section to navigate to Lambda console. Or you may use this [link](https://console.aws.amazon.com/lambda/home) -- **IMPORTANT** Your current region will be displayed on the top right corner, make sure you select right region base on your Amazon account's country: +- **IMPORTANT** Your current region will be displayed in the top right corner. Make sure you select the right region based on your Amazon account's country: - **US East (N.Virginia)** region for English (US) or English (CA) skills - **EU (Ireland)** region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills - **US West (Oregon)** region for Japanese and English (AU) skills. @@ -70,9 +70,9 @@ Next you need to create a Lambda function. - Select *Use an existing role* as `Execution role`, then select the role you just created from the `Existing role` list. - Click `Create function`, then you can configuration detail of Lambda function. - Under `Configuration` tab, expand `Designer`, then click `Alexa Skills Kit` in the left part of the panel to add a Alexa Skills Kit trigger to your Lambda function. -- Scroll down little bit, you need to input the `Skill ID` from the skill you created in previous step. (You may need to switch back to the Alexa Developer Console to copy the `Skill ID`.) +- Scroll down a little bit, you need to input the `Skill ID` from the skill you created in the previous step. (You may need to switch back to the Alexa Developer Console to copy the `Skill ID`). - Click your Lambda Function icon in the middle of the diagram and scroll down, you will see a `Function code` window. -- Clear the example code and copy the Python script from: [https://gist.github.com/lpomfrey/97381cf4316553b03622c665ae3a47da](https://gist.github.com/lpomfrey/97381cf4316553b03622c665ae3a47da) +- Clear the example code and copy the Python script from this [GitHub Gist](https://gist.github.com/lpomfrey/97381cf4316553b03622c665ae3a47da). - Click the `Deploy` button of the `Function code` window. - Scroll down again and you will find `Environment variables`, click on `Edit` button and add the following environment variables as needed: - BASE_URL *(required)*: your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*. @@ -84,11 +84,12 @@ Next you need to create a Lambda function. ### Account Linking -Alexa can link your Amazon account to your Home Assistant account. Therefore Home Assistant can make sure only authenticated Alexa requests are actioned. In order to link the account, you have to make sure your Home Assistant can be accessed from Internet. +Alexa can link your Amazon account to your Home Assistant account. Therefore Home Assistant can make sure only authenticated Alexa requests are actioned. In order to link the account, you have to make sure your Home Assistant instance can be accessed from the Internet. -- Sign in to the [Alexa Developer Console][alexa-dev-console] and go to the `Alexa Skills` page. +- Log in to the [Amazon developer console][amazon-dev-console] +- Go to the `Alexa Skills` page. - Find the skill you just created and click `Edit` in the `Actions` column. -- Click `ACCOUNT LINKING` in the left navigation bar of build page +- Click `ACCOUNT LINKING` in the left navigation bar of the 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]/auth/authorize` - `Access Token URI`: `https://[YOUR HOME ASSISTANT URL]/auth/token` @@ -110,7 +111,7 @@ Alexa can link your Amazon account to your Home Assistant account. Therefore Hom

    - Click `Save` button in the top right corner. -- Next, you will use the Alexa Mobile App or [Alexa web-based app](#alexa-web-based-app) to link your account. +- Next, you will use the Alexa Mobile App or [Alexa web-based app](http://alexa.amazon.com/) to link your account. - Open the Alexa app, navigate to `Skills` -> `Your Skills` -> `Dev Skills` - Click the Custom skill you just created. - Click `Enable`. From dde44fd9920e21ce2687852c0aedc8c725ee36a6 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 10:08:46 +0100 Subject: [PATCH 026/231] Fix the link to Dwains Theme (#14756) The link to Dwains Theme had double brackets #14663 --- source/_posts/2020-02-07-community-highlights.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2020-02-07-community-highlights.markdown b/source/_posts/2020-02-07-community-highlights.markdown index 1f2adb85fbd..604d59f4477 100644 --- a/source/_posts/2020-02-07-community-highlights.markdown +++ b/source/_posts/2020-02-07-community-highlights.markdown @@ -46,7 +46,7 @@ _Thanks, [Robbie Trencheny](https://twitter.com/robbie) & [cgtobi](https://twitt ## An auto-generating Lovelace UI theme -Dwain Scheeren shared a preview of his Lovelace theme on the [Home Assistant Community Forum]((https://community.home-assistant.io/t/dwains-theme-an-auto-generating-lovelace-ui-theme/168593)). The cool think about this theme, is that it automatically generates itself! +Dwain Scheeren shared a preview of his Lovelace theme on the [Home Assistant Community Forum](https://community.home-assistant.io/t/dwains-theme-an-auto-generating-lovelace-ui-theme/168593). The cool think about this theme, is that it automatically generates itself!
    From 50c360c1af65659b4c3be471e142bf768c4d4fb2 Mon Sep 17 00:00:00 2001 From: pniewiadowski Date: Fri, 2 Oct 2020 11:17:06 +0200 Subject: [PATCH 027/231] Fixed broken link (#14757) --- 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 479a7a66947..4ae3d3d3f8b 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -297,7 +297,7 @@ automation: {% endraw %} -If you want to get more precise, start with the US Naval Observatory [tool](https://aa.usno.navy.mil/data/docs/AltAz.php) which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers. +If you want to get more precise, start with the US Naval Observatory [tool](http://jaxchessnews.tripod.com/astro/id124.html) which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers. Although the actual amount of light depends on weather, topography and land cover, they are defined as: From 78403539b1439937ef9c8875516b4cbb0d65ac90 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 11:20:04 +0200 Subject: [PATCH 028/231] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Move=20installatio?= =?UTF-8?q?n=20redirects=20to=20file=20(#14687)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_docs/installation.markdown | 1 - source/_docs/installation/docker.markdown | 1 - source/_docs/installation/raspberry-pi.markdown | 1 - source/_docs/installation/troubleshooting.markdown | 1 - source/_docs/installation/updating.markdown | 1 - source/_docs/installation/virtualenv.markdown | 1 - source/_redirects | 6 ++++++ 7 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 3f8878f7954..b378aeecb48 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -1,7 +1,6 @@ --- title: "Installation of Home Assistant" description: "Instructions on how to install Home Assistant to launch on start." -redirect_from: /getting-started/installation/ ---
    diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown index 82e639884cc..b943b08992f 100644 --- a/source/_docs/installation/docker.markdown +++ b/source/_docs/installation/docker.markdown @@ -1,7 +1,6 @@ --- title: "Installation on Docker" description: "Instructions to install Home Assistant on a Docker." -redirect_from: /getting-started/installation-docker/ ---
    diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index a3f28066ddc..62449e7f955 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -1,7 +1,6 @@ --- title: "Manual installation on a Raspberry Pi" description: "Instructions to install Home Assistant Core on a Raspberry Pi running Raspberry Pi OS Lite." -redirect_from: /getting-started/installation-raspberry-pi/ --- This installation of Home Assistant Core requires the Raspberry Pi to run [Raspberry Pi OS Lite](https://www.raspberrypi.org/downloads/raspberry-pi-os//). The installation will be installed in a [Virtual Environment](/docs/installation/virtualenv) with minimal overhead. Instructions assume this is a new installation of Raspberry Pi OS Lite. diff --git a/source/_docs/installation/troubleshooting.markdown b/source/_docs/installation/troubleshooting.markdown index 560cf59a28f..b52b171ced0 100644 --- a/source/_docs/installation/troubleshooting.markdown +++ b/source/_docs/installation/troubleshooting.markdown @@ -1,7 +1,6 @@ --- title: "Troubleshooting installation problems" description: "Common installation problems and their solutions." -redirect_from: /getting-started/troubleshooting/ --- It can happen that you run into trouble while installing Home Assistant. This page is here to help you solve the most common problems. diff --git a/source/_docs/installation/updating.markdown b/source/_docs/installation/updating.markdown index ec24437d0d1..5352fdbc3ea 100644 --- a/source/_docs/installation/updating.markdown +++ b/source/_docs/installation/updating.markdown @@ -1,7 +1,6 @@ --- title: "Updating Home Assistant" description: "Step to update Home Assistant." -redirect_from: /getting-started/updating/ ---
    diff --git a/source/_docs/installation/virtualenv.markdown b/source/_docs/installation/virtualenv.markdown index 8cfa304e052..1512598c527 100644 --- a/source/_docs/installation/virtualenv.markdown +++ b/source/_docs/installation/virtualenv.markdown @@ -1,7 +1,6 @@ --- title: "Installation in Python virtual environment" description: "How to install Home Assistant in a Python virtual environment." -redirect_from: /getting-started/installation-virtualenv/ --- If you already have Python 3.7 or later installed, you can easily give Home Assistant a spin. diff --git a/source/_redirects b/source/_redirects index e1401482760..89371917887 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2069,8 +2069,14 @@ /getting-started/basic /docs/configuration/basic /getting-started/customizing-devices /docs/configuration/customizing-devices /getting-started/devices /docs/configuration/devices +/getting-started/installation /docs/installation +/getting-started/installation-docker /docs/installation/docker +/getting-started/installation-virtualenv /docs/installation/virtualenv +/getting-started/installation-raspberry-pi /docs/installation/raspberry-pi /getting-started/securing /docs/configuration/securing +/getting-started/troubleshooting /docs/installation/troubleshooting /getting-started/troubleshooting-configuration /docs/configuration/troubleshooting +/getting-started/updating /docs/installation/updating /getting-started/yaml /docs/configuration/yaml /topics/events /docs/configuration/events /topics/packages /docs/configuration/packages From 8cb4c7bd0f163b83fcf5b60e9a24060f3b5c4201 Mon Sep 17 00:00:00 2001 From: Jonathan Tran Date: Fri, 2 Oct 2020 02:23:00 -0700 Subject: [PATCH 029/231] Updated GitHub URL in footer to home-assistant/core (#14748) --- source/_includes/site/footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html index 50f9d891890..0aae66130f2 100644 --- a/source/_includes/site/footer.html +++ b/source/_includes/site/footer.html @@ -9,7 +9,7 @@
    - +
    From dbfeb69e8944d8bfc825985465b5ac15e7b74dc5 Mon Sep 17 00:00:00 2001 From: pniewiadowski Date: Fri, 2 Oct 2020 11:27:19 +0200 Subject: [PATCH 030/231] Update coinmarketcap.markdown (#14758) --- source/_integrations/coinmarketcap.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/coinmarketcap.markdown b/source/_integrations/coinmarketcap.markdown index 62e0e833a19..b7e32c821b2 100644 --- a/source/_integrations/coinmarketcap.markdown +++ b/source/_integrations/coinmarketcap.markdown @@ -36,4 +36,4 @@ display_currency_decimals: default: 2 {% endconfiguration %} -All supported currencies can be found [here](https://coinmarketcap.com/api/documentation/v1/#section/Standards-and-Conventions), a list of currency IDs can be found [here](https://api.coinmarketcap.com/v2/ticker/). +All supported currencies can be found [here](https://coinmarketcap.com/api/documentation/v1/#section/Standards-and-Conventions), a list of currency IDs can be found [here](https://coinmarketcap.com/api/v1/#section/Standards-and-Conventions). From f2c3d757b62ebcad32c141cfbf974ecc7d60761f Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Fri, 2 Oct 2020 06:00:18 -0400 Subject: [PATCH 031/231] Add IoT Class to Belkin Wemo Integration (#14742) --- source/_integrations/wemo.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index 85aec666763..3cd171338e2 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -8,6 +8,7 @@ ha_category: - Light - Switch ha_release: pre 0.7 +ha_iot_class: Local Push ha_config_flow: true ha_domain: wemo --- From 610597eb832ee9682dcf2c1a4a17507a714eda4b Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 12:01:12 +0200 Subject: [PATCH 032/231] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Move=20automation?= =?UTF-8?q?=20and=20backend=20redirect=20to=20file=20(#14759)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_docs/automation/action.markdown | 1 - source/_docs/automation/condition.markdown | 1 - source/_docs/automation/examples.markdown | 1 - source/_docs/automation/templating.markdown | 1 - source/_docs/automation/trigger.markdown | 1 - source/_docs/automation/troubleshooting.markdown | 1 - source/_docs/backend/database.markdown | 1 - source/_docs/backend/updater.markdown | 1 - source/_redirects | 8 ++++++++ 9 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/_docs/automation/action.markdown b/source/_docs/automation/action.markdown index fab1df5d48f..ca7a364fcb6 100644 --- a/source/_docs/automation/action.markdown +++ b/source/_docs/automation/action.markdown @@ -1,7 +1,6 @@ --- title: "Automation Actions" description: "Automations result in action." -redirect_from: /getting-started/automation-action/ --- The action of an automation rule is what is being executed when a rule fires. The action part follows the [script syntax](/docs/scripts/) which can be used to interact with anything via services or events. For services you can specify the entity_id that it should apply to and optional service parameters (to specify for example the brightness). diff --git a/source/_docs/automation/condition.markdown b/source/_docs/automation/condition.markdown index 7811294340a..c98828db025 100644 --- a/source/_docs/automation/condition.markdown +++ b/source/_docs/automation/condition.markdown @@ -1,7 +1,6 @@ --- title: "Automation Conditions" description: "Automations can test conditions when invoked." -redirect_from: /getting-started/automation-condition/ --- Conditions are an optional part of an automation rule and can be used to prevent an action from happening when triggered. When a condition does not return true, the automation will stop executing. Conditions look very similar to triggers but are very different. A trigger will look at events happening in the system while a condition only looks at how the system looks right now. A trigger can observe that a switch is being turned on. A condition can only see if a switch is currently on or off. diff --git a/source/_docs/automation/examples.markdown b/source/_docs/automation/examples.markdown index 8dbe03730fb..2a9e33309b2 100644 --- a/source/_docs/automation/examples.markdown +++ b/source/_docs/automation/examples.markdown @@ -1,7 +1,6 @@ --- title: "Automation Examples" description: "Some automation examples to get you started." -redirect_from: /getting-started/automation-examples/ --- Just some sample automation rules to get you started. diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown index aeb9c9f02d5..c990014489a 100644 --- a/source/_docs/automation/templating.markdown +++ b/source/_docs/automation/templating.markdown @@ -1,7 +1,6 @@ --- title: "Automation Templating" description: "Advanced automation documentation using templating." -redirect_from: /getting-started/automation-templating/ --- In Home Assistant 0.19 we introduced a new powerful feature: variables in scripts and automations. This makes it possible to adjust your condition and action based on the information of the trigger. diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 4ae3d3d3f8b..7e85987601d 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -1,7 +1,6 @@ --- title: "Automation Trigger" description: "All the different ways how automations can be triggered." -redirect_from: /getting-started/automation-trigger/ --- ### What are triggers diff --git a/source/_docs/automation/troubleshooting.markdown b/source/_docs/automation/troubleshooting.markdown index 12354c708df..1181dbb4b60 100644 --- a/source/_docs/automation/troubleshooting.markdown +++ b/source/_docs/automation/troubleshooting.markdown @@ -1,7 +1,6 @@ --- title: "Troubleshooting Automations" description: "Tips on how to troubleshoot your automations." -redirect_from: /getting-started/automation-troubleshooting/ --- You can verify that your automation rules are being initialized correctly by watching both the realtime logs (`homeassistant.log` in the configuration directory) and also the [Logbook](/integrations/logbook/). The realtime logs will show the rules being initialized (once for each trigger), example: diff --git a/source/_docs/backend/database.markdown b/source/_docs/backend/database.markdown index 6c11693ceb6..fdc710bfca4 100644 --- a/source/_docs/backend/database.markdown +++ b/source/_docs/backend/database.markdown @@ -1,7 +1,6 @@ --- title: "Database" description: "Details about the database used by Home Assistant." -redirect_from: /details/database/ --- Database is used in by Home Assistant as history and tracker only, to store the events and its parameters. The default database used by Home Assistant is [SQLite](https://www.sqlite.org/), and the database file is stored in your [configuration directory](/getting-started/configuration/) (e.g., `/home-assistant_v2.db`). If you prefer to run a database server (e.g., PostgreSQL), use the [`recorder` component](/integrations/recorder/). diff --git a/source/_docs/backend/updater.markdown b/source/_docs/backend/updater.markdown index 3fb75020da2..e041a0e372d 100644 --- a/source/_docs/backend/updater.markdown +++ b/source/_docs/backend/updater.markdown @@ -1,7 +1,6 @@ --- title: "Updater" description: "Details what the updater integration is reporting about your Home Assistant instance." -redirect_from: /details/updater/ --- Starting with 0.31 the [updater component](/integrations/updater/) sends an optional report about Home Assistant instance. diff --git a/source/_redirects b/source/_redirects index 89371917887..acdd6d81099 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2028,6 +2028,8 @@ /integrations/telegram_chatbot /integrations/telegram_bot # Moved documentation +/details/database /docs/backend/database +/details/updater /docs/backend/updater /docs/ecosystem/ios/ https://companion.home-assistant.io/ /docs/ecosystem/ios/devices_file https://companion.home-assistant.io/ /docs/ecosystem/ios/integration https://companion.home-assistant.io/docs/integrations/integrations @@ -2066,6 +2068,12 @@ /integrations/switch.knx /integrations/knx#switch /integrations/weather.knx /integrations/knx#weather /integrations/zigbee /integrations/xbee +/getting-started/automation-action /docs/automation/action +/getting-started/automation-condition /docs/automation/condition +/getting-started/automation-examples /docs/automation/examples +/getting-started/automation-troubleshooting /docs/automation/troubleshooting +/getting-started/automation-trigger /docs/automation/trigger +/getting-started/automation-templating /docs/automation/templating /getting-started/basic /docs/configuration/basic /getting-started/customizing-devices /docs/configuration/customizing-devices /getting-started/devices /docs/configuration/devices From 7f20c4fa38b7bd460dee69a0777488fbda3ca8d0 Mon Sep 17 00:00:00 2001 From: Rafhaan Shah Date: Fri, 2 Oct 2020 11:37:33 +0100 Subject: [PATCH 033/231] Fix QVR Pro link (#14760) Old link to QVR Pro is broken --- source/_integrations/qvr_pro.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/qvr_pro.markdown b/source/_integrations/qvr_pro.markdown index 819217ad78f..9a957e762b4 100644 --- a/source/_integrations/qvr_pro.markdown +++ b/source/_integrations/qvr_pro.markdown @@ -10,7 +10,7 @@ ha_codeowners: - '@oblogic7' --- -[QVR Pro](https://www.qnap.com/solution/qvr-pro-official) allows you to create +[QVR Pro](https://www.qnap.com/en/software/qvr-pro) allows you to create an independent and expandable surveillance environment on your QNAP NAS. The `qvr_pro` component allows you to view your QVR Pro channels in Home Assistant. From d8d4dd312658d1d1fb6bafc1da1486ec1685e79d Mon Sep 17 00:00:00 2001 From: Rafhaan Shah Date: Fri, 2 Oct 2020 11:38:56 +0100 Subject: [PATCH 034/231] Fix Hyperion link (#14762) Replaced the old link with the correct link to the Hyperion docs --- source/_integrations/hyperion.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/hyperion.markdown b/source/_integrations/hyperion.markdown index 836366442a7..5a69db860ba 100644 --- a/source/_integrations/hyperion.markdown +++ b/source/_integrations/hyperion.markdown @@ -8,7 +8,7 @@ ha_iot_class: Local Polling ha_domain: hyperion --- -The `hyperion` platform allows you to integrate your [Hyperion](https://hyperion-project.org/wiki) into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms. +The `hyperion` platform allows you to integrate your [Hyperion](https://docs.hyperion-project.org/) into Home Assistant. Hyperion is an open source Ambilight implementation which runs on many platforms. ## Configuration From 94a10be6a6183b6f309d8fdddbdc6d7955be0301 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:44:45 +0100 Subject: [PATCH 035/231] Updating the Midori URL (#14764) https://www.midori-browser.org/ has been relocated to https://astian.org/midori-browser/ --- source/_docs/frontend/browsers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index dc389f662b8..716f93d1941 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -81,7 +81,7 @@ There are reports that devices running with iOS prior to iOS 10, especially old [Iridium]: https://iridiumbrowser.de/ [Konqueror]: https://konqueror.org/ [Lynx]: https://lynx.browser.org/ -[Midori]: https://www.midori-browser.org/ +[Midori]: https://astian.org/midori-browser/ [Opera]: https://www.opera.com/ [Safari]: https://www.apple.com/safari/ [surf]: https://surf.suckless.org/ From 2dab70c836e83284fbc1b33ac63f88485c15d280 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 11:53:48 +0100 Subject: [PATCH 036/231] Removing link to the Snips Forum (#14766) I've removed the link / section mentioning the Snips forum being active as it no longer exists. --- source/_integrations/snips.markdown | 4 ---- 1 file changed, 4 deletions(-) diff --git a/source/_integrations/snips.markdown b/source/_integrations/snips.markdown index 5039cdc8b7c..94d6824105a 100644 --- a/source/_integrations/snips.markdown +++ b/source/_integrations/snips.markdown @@ -207,10 +207,6 @@ You can send TTS notifications to Snips using the `snips.say` and `snips.say_act | `can_be_enqueued` | yes | If True, session waits for an open session to end, if False session is dropped if one is running. | | `intent_filter` | yes | Array of Strings - A list of intents names to restrict the NLU resolution to on the first query. | -### Snips Support - -There is an active [Forum](https://forum.snips.ai) for further support. - ### Configuration Examples #### Turn on a light From 236f068f2742380bd339a0b28a5b813f2377fdee Mon Sep 17 00:00:00 2001 From: pniewiadowski Date: Fri, 2 Oct 2020 12:56:57 +0200 Subject: [PATCH 037/231] Update heos.markdown (#14763) --- source/_integrations/heos.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown index 298501dc42b..e328a901036 100644 --- a/source/_integrations/heos.markdown +++ b/source/_integrations/heos.markdown @@ -11,7 +11,7 @@ ha_codeowners: ha_domain: heos --- -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: +The HEOS integration adds support for [HEOS](https://www.denon.com/en-gb/shop/amplifiersmrs/heosavr) capable products, such as speakers, amps, and receivers (Denon and Marantz) into Home Assistant. Features currently include: - Each device is represented as a media player entity - View the currently playing media From 902a6107dea670cc819c1c9dc7a4191f6ce06e32 Mon Sep 17 00:00:00 2001 From: pniewiadowski Date: Fri, 2 Oct 2020 12:57:40 +0200 Subject: [PATCH 038/231] Update fritzbox.markdown (#14761) --- source/_integrations/fritzbox.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/fritzbox.markdown b/source/_integrations/fritzbox.markdown index 4e012162ab6..31564825f5a 100644 --- a/source/_integrations/fritzbox.markdown +++ b/source/_integrations/fritzbox.markdown @@ -25,7 +25,7 @@ There is currently support for the following device types within Home Assistant: - [FRITZ!Box 6490 Cable](https://en.avm.de/products/fritzbox/fritzbox-6490-cable/) - [FRITZ!Box 7590](https://en.avm.de/products/fritzbox/fritzbox-7590/) -- [FRITZ!Box 7490](https://en.avm.de/products/fritzbox/fritzbox-7490/) +- [FRITZ!Box 7490](https://en.avm.de/service/fritzbox/fritzbox-7490/overview/) - [FRITZ!Box 7430](https://en.avm.de/products/fritzbox/fritzbox-7430/) - [FRITZ!DECT 200](https://en.avm.de/products/fritzdect/fritzdect-200/) - [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/) From bff91be75c26544d720b914422cea071e7284bb5 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 13:03:22 +0200 Subject: [PATCH 039/231] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Move=20scripts=20a?= =?UTF-8?q?nd=20auth=20redirect=20to=20file=20(#14765)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_docs/authentication.markdown | 2 -- source/_docs/authentication/multi-factor-auth.markdown | 1 - source/_docs/authentication/providers.markdown | 1 - source/_docs/scripts.markdown | 1 - source/_docs/scripts/conditions.markdown | 1 - source/_docs/scripts/editor.markdown | 1 - source/_docs/scripts/service-calls.markdown | 1 - source/_redirects | 5 +++++ 8 files changed, 5 insertions(+), 8 deletions(-) diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 11007d29d9e..c38d808f602 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -1,8 +1,6 @@ --- title: "Authentication" description: "Guide on authentication in Home Assistant." -redirect_from: - - /integrations/auth/ --- Our authentication system secures access to Home Assistant. diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown index d38b7f215b4..b70e098b7b4 100644 --- a/source/_docs/authentication/multi-factor-auth.markdown +++ b/source/_docs/authentication/multi-factor-auth.markdown @@ -1,7 +1,6 @@ --- title: "Multi-factor authentication" description: "Guide on configuring different multi-factor authentication modules." -redirect_from: /integrations/auth/ --- The Multi-factor Authentication (MFA) modules require you to solve a second challenge after you provide your password. diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown index b5c87c35541..dc7ff68e8fb 100644 --- a/source/_docs/authentication/providers.markdown +++ b/source/_docs/authentication/providers.markdown @@ -1,7 +1,6 @@ --- title: "Authentication Providers" description: "Guide on configuring different auth providers." -redirect_from: /integrations/auth/ --- When you log in, an _auth provider_ checks your credentials to make sure you are an authorized user. diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown index 1658882c668..f1c8043a63d 100644 --- a/source/_docs/scripts.markdown +++ b/source/_docs/scripts.markdown @@ -1,7 +1,6 @@ --- title: "Script Syntax" description: "Documentation for the Home Assistant Script Syntax." -redirect_from: /getting-started/scripts/ --- Scripts are a sequence of actions that Home Assistant will execute. Scripts are available as an entity through the standalone [Script component] but can also be embedded in [automations] and [Alexa/Amazon Echo] configurations. diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index 62d4910e608..6c173561719 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -1,7 +1,6 @@ --- title: "Conditions" 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 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. diff --git a/source/_docs/scripts/editor.markdown b/source/_docs/scripts/editor.markdown index a321fdd5497..752e6b541a0 100644 --- a/source/_docs/scripts/editor.markdown +++ b/source/_docs/scripts/editor.markdown @@ -1,7 +1,6 @@ --- title: "Script Editor" description: "Instructions on how to use the new script editor." -redirect_from: /docs/script/editor/ --- In Home Assistant 0.52 we introduced the first version of our script editor. If you just created a new configuration with Home Assistant then you're all set! Go to the UI and enjoy. diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index c8081054081..9559af19c81 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -1,7 +1,6 @@ --- title: "Service Calls" description: "Instructions on how to call services in Home Assistant." -redirect_from: /getting-started/scripts-service-calls/ --- Various integrations allow calling services when a certain event occurs. The most common one is calling a service when an automation trigger happens. But a service can also be called from a script or via the Amazon Echo. diff --git a/source/_redirects b/source/_redirects index acdd6d81099..ca6c8c0e598 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2050,6 +2050,7 @@ /docs/ecosystem/notebooks/installation https://data.home-assistant.io /docs/ecosystem/notebooks/stats https://data.home-assistant.io /docs/frontend/mobile https://companion.home-assistant.io +/docs/script/editor /docs/scripts/editor /ecosystem/ios/notifications https://companion.home-assistant.io/docs/notifications/notifications-basic /ecosystem/notebooks https://data.home-assistant.io /ecosystem/notebooks/api https://data.home-assistant.io @@ -2058,6 +2059,7 @@ /ecosystem/notebooks/installation https://data.home-assistant.io /ecosystem/notebooks/stats https://data.home-assistant.io /ios/whats-new https://companion.home-assistant.io/docs/getting_started/getting-started +/integrations/auth /docs/authentication /integrations/binary_sensor.knx /integrations/knx#binary-sensor /integrations/climate.knx /integrations/knx#climate /integrations/cover.knx /integrations/knx#cover @@ -2081,6 +2083,9 @@ /getting-started/installation-docker /docs/installation/docker /getting-started/installation-virtualenv /docs/installation/virtualenv /getting-started/installation-raspberry-pi /docs/installation/raspberry-pi +/getting-started/scripts /docs/scripts +/getting-started/scripts-service-calls /docs/scripts/service-calls +/getting-started/scripts-conditions /docs/scripts/conditions /getting-started/securing /docs/configuration/securing /getting-started/troubleshooting /docs/installation/troubleshooting /getting-started/troubleshooting-configuration /docs/configuration/troubleshooting From d9a7823407f77005d69ee84817c90f813c768f3d Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Fri, 2 Oct 2020 07:05:34 -0400 Subject: [PATCH 040/231] Add IoT Class to NOAA Tides Integration (#14740) --- source/_integrations/noaa_tides.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/noaa_tides.markdown b/source/_integrations/noaa_tides.markdown index e56081bb0c4..40b64c46a9d 100644 --- a/source/_integrations/noaa_tides.markdown +++ b/source/_integrations/noaa_tides.markdown @@ -4,6 +4,7 @@ description: Instructions to add NOAA Tide information to Home Assistant. ha_category: - Environment ha_release: 0.75 +ha_iot_class: Cloud Polling ha_domain: noaa_tides ha_codeowners: - '@jdelaney72' From c723e30341d49c3acc8d569c3508a8adb640e081 Mon Sep 17 00:00:00 2001 From: Vincent Palmer Date: Fri, 2 Oct 2020 13:07:33 +0200 Subject: [PATCH 041/231] Add IoT class to Shelly integration (#14736) As requested in #14661 this is to add the IoT class to the Shelly integration. --- source/_integrations/shelly.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown index fece0e1d7e8..ff621a416f0 100644 --- a/source/_integrations/shelly.markdown +++ b/source/_integrations/shelly.markdown @@ -7,6 +7,7 @@ ha_release: 0.115 ha_codeowners: - '@balloob' - '@bieniu' +ha_iot_class: Local Polling ha_domain: shelly featured: true ha_config_flow: true From a5fcf8cea0e07b7d14f9a989dffe9ac8c020829e Mon Sep 17 00:00:00 2001 From: Nathan Tilley Date: Fri, 2 Oct 2020 07:52:03 -0400 Subject: [PATCH 042/231] Add IoT Class to Actiontec Integration (#14735) --- source/_integrations/actiontec.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/actiontec.markdown b/source/_integrations/actiontec.markdown index be399fa49b5..5a142477fab 100644 --- a/source/_integrations/actiontec.markdown +++ b/source/_integrations/actiontec.markdown @@ -3,6 +3,7 @@ title: Actiontec description: Instructions on how to integrate Actiontec routers into Home Assistant. ha_category: - Presence Detection +ha_iot_class: Local Polling ha_release: 0.7 ha_domain: actiontec --- From a9ae9e56af252572b2627f707f4cbb7ac6d5c27f Mon Sep 17 00:00:00 2001 From: alex6480 Date: Fri, 2 Oct 2020 13:53:35 +0200 Subject: [PATCH 043/231] Add IOT class to Duck DNS integration (#14771) --- source/_integrations/duckdns.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown index 9acec85ae01..868924b22c0 100644 --- a/source/_integrations/duckdns.markdown +++ b/source/_integrations/duckdns.markdown @@ -3,6 +3,7 @@ title: Duck DNS description: Keep your computer registered with the DuckDNS dynamic DNS. ha_category: - Network +ha_iot_class: Cloud Polling ha_release: 0.55 ha_domain: duckdns --- From 3e73cb22dcec40fda501a2eaa5b7f121bf0c5285 Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:54:34 +0200 Subject: [PATCH 044/231] Add IoT Class for CityBikes integration (#14714) --- source/_integrations/citybikes.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/citybikes.markdown b/source/_integrations/citybikes.markdown index 380a8a9836b..103ea86e8a1 100644 --- a/source/_integrations/citybikes.markdown +++ b/source/_integrations/citybikes.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate data from the CityBikes API into H ha_category: - Transport ha_release: 0.49 +ha_iot_class: Cloud Polling ha_domain: citybikes --- From a296c4fd990a33bd85c854b5e961ff984bb4f5a9 Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:55:24 +0200 Subject: [PATCH 045/231] Add IoT class for Feedreader integration (#14715) --- source/_integrations/feedreader.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown index 61854bb9565..e7f3379d720 100644 --- a/source/_integrations/feedreader.markdown +++ b/source/_integrations/feedreader.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate RSS feeds into Home Assistant. ha_category: - Other ha_release: 0.18 +ha_iot_class: Cloud Polling ha_domain: feedreader --- From f36d4e9754ed9c315a9c77329b2a9e10862a07fb Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:57:11 +0200 Subject: [PATCH 046/231] Add IoT class for Aurora integration (#14716) --- source/_integrations/aurora.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/aurora.markdown b/source/_integrations/aurora.markdown index b3e78330352..a937af28a6a 100644 --- a/source/_integrations/aurora.markdown +++ b/source/_integrations/aurora.markdown @@ -3,6 +3,7 @@ title: Aurora description: Know when auroras might be visible at your location ha_category: - Environment +ha_iot_class: Cloud Polling ha_release: 0.39 ha_domain: aurora --- From 50ffb584710f5b9a256f4291d360767ae5174142 Mon Sep 17 00:00:00 2001 From: Daniel Martin Gonzalez Date: Fri, 2 Oct 2020 13:59:14 +0200 Subject: [PATCH 047/231] Add IoT class for HTML5 Push Notifications integration (#14717) --- source/_integrations/html5.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index c9a76e19e27..a713cb63e6b 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -4,6 +4,7 @@ description: Instructions on how to use the HTML5 push notifications platform fr ha_category: - Notifications ha_release: 0.27 +ha_iot_class: Cloud Push ha_domain: html5 --- From 4830528a7f9937ce59258e36787b2bce3765c674 Mon Sep 17 00:00:00 2001 From: Daniel Martin Gonzalez Date: Fri, 2 Oct 2020 14:01:28 +0200 Subject: [PATCH 048/231] Add IoT class for Shopping List integration (#14719) --- source/_integrations/shopping_list.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown index e959fde4780..95e71e2c26f 100644 --- a/source/_integrations/shopping_list.markdown +++ b/source/_integrations/shopping_list.markdown @@ -6,6 +6,7 @@ ha_category: ha_release: '0.50' ha_config_flow: true ha_quality_scale: internal +ha_iot_class: Local Push ha_domain: shopping_list --- From 4a93a01fbbb77f71349250311cbad155e418e587 Mon Sep 17 00:00:00 2001 From: Rafhaan Shah Date: Fri, 2 Oct 2020 13:08:13 +0100 Subject: [PATCH 049/231] Fix Voice RSS documentation link (#14773) --- source/_integrations/voicerss.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/voicerss.markdown b/source/_integrations/voicerss.markdown index 013a93f4bf7..8d059c7ef68 100644 --- a/source/_integrations/voicerss.markdown +++ b/source/_integrations/voicerss.markdown @@ -42,7 +42,7 @@ format: default: 8khz_8bit_mono {% endconfiguration %} -Check the [VoiceRSS API documentation](http://www.voicerss.org/api/documentation.aspx) for allowed values. +Check the [VoiceRSS API documentation](http://www.voicerss.org/api/) for allowed values. ## Full configuration example From 61ac7b9644a31a5bbee3988f61ac39ee9f272fb5 Mon Sep 17 00:00:00 2001 From: Ariana Hlavaty Date: Fri, 2 Oct 2020 13:20:13 +0100 Subject: [PATCH 050/231] Move redirects (#14772) --- source/_cookbook/notify.mqtt.markdown | 2 -- source/_docs/frontend/browsers.markdown | 1 - source/_docs/tools/scripts.markdown | 7 ------- source/_posts/2019-06-05-release-94.markdown | 1 - source/_posts/2019-11-22-state-of-the-union.markdown | 2 -- source/_redirects | 7 +++++++ source/lovelace/index.markdown | 2 -- 7 files changed, 7 insertions(+), 15 deletions(-) delete mode 100644 source/_docs/tools/scripts.markdown diff --git a/source/_cookbook/notify.mqtt.markdown b/source/_cookbook/notify.mqtt.markdown index 3485846b015..00e08139241 100644 --- a/source/_cookbook/notify.mqtt.markdown +++ b/source/_cookbook/notify.mqtt.markdown @@ -4,8 +4,6 @@ description: "Instructions on how to add MQTT notifications to Home Assistant." logo: mqtt.png ha_category: Notifications ha_iot_class: Configurable -redirect_from: - /integrations/notify.mqtt/ --- The MQTT notification support is different than the other [notification](/integrations/notify/) platforms. It is a service. This means that you don't have to create a configuration entry but you need to provide more details when calling the service. diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown index 716f93d1941..c24fb343c20 100644 --- a/source/_docs/frontend/browsers.markdown +++ b/source/_docs/frontend/browsers.markdown @@ -1,7 +1,6 @@ --- title: "Browsers" description: "Browser Compatibility List" -redirect_from: /getting-started/browsers/ --- Home Assistant requires a web browser to show the frontend and supports all major modern browsers. We don't test the web interface against all available browsers but this page tracks different browsers on various operating systems and should help you to pick a browser which works. The "Release" column contains the release number which was tested. This doesn't mean that older or newer releases will not work. diff --git a/source/_docs/tools/scripts.markdown b/source/_docs/tools/scripts.markdown deleted file mode 100644 index fba7e0af4d7..00000000000 --- a/source/_docs/tools/scripts.markdown +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Tools" -description: "Description of tools which helps when using Home Assistant." -redirect_from: /docs/tools/ ---- - - diff --git a/source/_posts/2019-06-05-release-94.markdown b/source/_posts/2019-06-05-release-94.markdown index d87370cb7af..6b88d49a624 100644 --- a/source/_posts/2019-06-05-release-94.markdown +++ b/source/_posts/2019-06-05-release-94.markdown @@ -7,7 +7,6 @@ author: Paulus Schoutsen author_twitter: balloob categories: Release-Notes og_image: /images/blog/2019-06-release-94/google-ui.png -redirect_from: /blog/2019/05/29/release-94/ --- diff --git a/source/_posts/2019-11-22-state-of-the-union.markdown b/source/_posts/2019-11-22-state-of-the-union.markdown index 4c2718372b3..ac9e89a7f37 100644 --- a/source/_posts/2019-11-22-state-of-the-union.markdown +++ b/source/_posts/2019-11-22-state-of-the-union.markdown @@ -8,8 +8,6 @@ author: Paulus Schoutsen author_twitter: balloob comments: true categories: Announcements -redirect_from: - - /state-of-the-union/ og_image: /images/blog/2019-11-state-of-the-union/social.jpeg --- diff --git a/source/_redirects b/source/_redirects index ca6c8c0e598..afd40609108 100644 --- a/source/_redirects +++ b/source/_redirects @@ -1086,6 +1086,7 @@ /integrations/sensor.xiaomi_miio /integrations/xiaomi_miio /integrations/switch.xiaomi_miio /integrations/xiaomi_miio /integrations/vacuum.xiaomi_miio /integrations/xiaomi_miio +/integrations/lovelace /lovelace # Renaming components to integrations /components /integrations @@ -2065,6 +2066,7 @@ /integrations/cover.knx /integrations/knx#cover /integrations/light.knx /integrations/knx#light /integrations/notify.knx /integrations/knx#notify +/integrations/notify.mqtt /cookbook/notify.mqtt /integrations/scene.knx /integrations/knx#scene /integrations/sensor.knx /integrations/knx#sensor /integrations/switch.knx /integrations/knx#switch @@ -2077,6 +2079,7 @@ /getting-started/automation-trigger /docs/automation/trigger /getting-started/automation-templating /docs/automation/templating /getting-started/basic /docs/configuration/basic +/getting-started/browsers /docs/frontend/browsers /getting-started/customizing-devices /docs/configuration/customizing-devices /getting-started/devices /docs/configuration/devices /getting-started/installation /docs/installation @@ -2174,3 +2177,7 @@ /docs/installation/raspberry-pi-all-in-one /getting-started /getting-started/hassbian /getting-started /getting-started/installation-raspberry-pi-all-in-one /getting-started + +# Blog +/blog/2019/05/29/release-94 /blog/2019/06/05/release-94 +/state-of-the-union /blog/2019/11/22/state-of-the-union diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index bb8c7fa1350..76e6ae33bd0 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -1,8 +1,6 @@ --- title: "Lovelace" description: "Lovelace is a powerful and configurable dashboard for Home Assistant." -redirect_from: - - /integrations/lovelace/ --- Lovelace is the Home Assistant dashboard. It's a fast, customizable and powerful way for users to manage their homes, working on mobile and desktop. From eb4cecab9e5ba1e48ea4c709db055ba388489d37 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:05:14 +0100 Subject: [PATCH 051/231] Change Material Design Icons URL (#14781) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It looks as though Material Design Icons don't use the www prefix for their URL as the certificate for that prefix ran out on "02‎ ‎June‎ ‎2017 ‎00‎:‎59‎:‎59". I've removed the "www." from their URL in this blog post to avoid confusion. --- source/_posts/2020-07-01-release-113.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2020-07-01-release-113.markdown b/source/_posts/2020-07-01-release-113.markdown index 61097dbb990..b688f43ce04 100644 --- a/source/_posts/2020-07-01-release-113.markdown +++ b/source/_posts/2020-07-01-release-113.markdown @@ -344,7 +344,7 @@ Please note: It is possible that custom integrations (also known as custom components) use deprecated icons. These can throw warnings that need to be addressed in the custom integration. -[mdi]: https://www.materialdesignicons.com +[mdi]: https://materialdesignicons.com [mdi-upgrade]: https://dev.materialdesignicons.com/upgrade#4.9.95-to-5.0.45 [simple-icons]: https://simpleicons.org/ [hass-simpleicons]: https://github.com/vigonotion/hass-simpleicons From af5271cbc0f0fd08390b5a9163a5d33c16392fd1 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 14:11:32 +0100 Subject: [PATCH 052/231] Remove link to OSS Metrics (#14779) Removed the link to https://ossmetrics.com/leaderboard as https://ossmetrics.com/ itself doesn't look to be active any more --- source/_posts/2017-01-18-numbers.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2017-01-18-numbers.markdown b/source/_posts/2017-01-18-numbers.markdown index 7285ce591fd..ebf6f86ed99 100644 --- a/source/_posts/2017-01-18-numbers.markdown +++ b/source/_posts/2017-01-18-numbers.markdown @@ -10,7 +10,7 @@ categories: Community It's week 3 of 2017 and great things did already happen. This is just a little recap. -- In the [OSS Metrics leaderboard](https://ossmetrics.com/leaderboard) we are on place 30. Within three months we moved from our starting place which was 66 in September 2016 up to the current one. +- In the OSS Metrics leaderboard we are on place 30. Within three months we moved from our starting place which was 66 in September 2016 up to the current one. - We were listed on [Github Trending](https://github.com/trending/python). Also, was [@balloob](https://github.com/balloob) mentioned as trending developer. - [@balloob](https://github.com/balloob)'s talk at the OpenIoT Summit 2016 was rated as one of the [Top 5 videos](https://www.linuxfoundation.org/blog/2017/01/top-5-videos-from-embedded-linux-conference-and-openiot-summit-2016/) of the conference. - We now ship over [500](/integrations/#all) components and platforms. From 450ab5c6e1f9d59eab7fc2092f366e456e626e73 Mon Sep 17 00:00:00 2001 From: Daniel Martin Gonzalez Date: Fri, 2 Oct 2020 15:13:28 +0200 Subject: [PATCH 053/231] Add IoT class for Automation integration (#14720) Co-authored-by: Franck Nijhof --- source/_integrations/automation.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index fe6a3decb3e..39b85f54209 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -7,6 +7,7 @@ ha_release: 0.7 ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' +ha_iot_class: ~ ha_domain: automation --- From 9bc71228c9a110228611ccab5717a3c04d0e9bd8 Mon Sep 17 00:00:00 2001 From: Jenny Date: Fri, 2 Oct 2020 14:14:26 +0100 Subject: [PATCH 054/231] Add IOT class for Google Assistant (#14778) --- source/_integrations/google_assistant.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/google_assistant.markdown b/source/_integrations/google_assistant.markdown index 12a10dd1175..47dd2a41866 100644 --- a/source/_integrations/google_assistant.markdown +++ b/source/_integrations/google_assistant.markdown @@ -5,6 +5,7 @@ ha_category: - Voice featured: true ha_release: 0.56 +ha_iot_class: Cloud Push ha_codeowners: - '@home-assistant/cloud' ha_domain: google_assistant From c4f6466dc21e23b41ffb9406ede5e62302ca6242 Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 15:19:53 +0200 Subject: [PATCH 055/231] Adding IoT Class for Yale Smart Living Integration (#14721) --- source/_integrations/yale_smart_alarm.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/yale_smart_alarm.markdown b/source/_integrations/yale_smart_alarm.markdown index 9f493012d93..63db9a507c6 100644 --- a/source/_integrations/yale_smart_alarm.markdown +++ b/source/_integrations/yale_smart_alarm.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Yale Smart Alarms into Home Assist ha_category: - Alarm ha_release: 0.78 +ha_iot_class: Cloud Polling ha_domain: yale_smart_alarm --- From f1a44c1e876186c647dfedae825dec308264556d Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 15:21:22 +0200 Subject: [PATCH 056/231] Adding IoT Class for Azure event hub Integration (#14718) --- source/_integrations/azure_event_hub.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/azure_event_hub.markdown b/source/_integrations/azure_event_hub.markdown index d928206d95d..e3324f32f3e 100644 --- a/source/_integrations/azure_event_hub.markdown +++ b/source/_integrations/azure_event_hub.markdown @@ -4,6 +4,7 @@ description: Setup for Azure Event Hub integration ha_category: - History ha_release: 0.94 +ha_iot_class: Cloud Push ha_codeowners: - '@eavanvalkenburg' ha_domain: azure_event_hub From 5fa5830645956341dc3283974393cea8cd58c1e1 Mon Sep 17 00:00:00 2001 From: Daniel Martin Gonzalez Date: Fri, 2 Oct 2020 15:32:36 +0200 Subject: [PATCH 057/231] Add IoT class for Calendar integration (#14723) Co-authored-by: Franck Nijhof --- source/_integrations/calendar.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index 3af6368dcd9..c42fb088fea 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -2,6 +2,7 @@ title: Calendar description: Instructions on how to integrate calendars within Home Assistant. ha_release: 0.33 +ha_iot_class: ~ ha_domain: calendar --- From 42fec552ccd9e63575f86ef6dd465c09398fc911 Mon Sep 17 00:00:00 2001 From: Ian Richardson Date: Fri, 2 Oct 2020 08:35:41 -0500 Subject: [PATCH 058/231] Remove Lovelace branding on page (#14783) --- source/docs/index.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/docs/index.markdown b/source/docs/index.markdown index 23a0488faf8..f074423ba76 100644 --- a/source/docs/index.markdown +++ b/source/docs/index.markdown @@ -34,7 +34,7 @@ The documentation covers beginner to advanced topics around the installation, se
    -
    Lovelace user interface
    +
    User Interface
    From d842e7af1ca63b49b7279b2485e84d54c620013b Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 16:08:18 +0200 Subject: [PATCH 059/231] Adding IoT Class for Vera Integration (#14724) --- source/_integrations/vera.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/vera.markdown b/source/_integrations/vera.markdown index 4ff7aa9cd98..5c7f94f139a 100644 --- a/source/_integrations/vera.markdown +++ b/source/_integrations/vera.markdown @@ -12,6 +12,7 @@ ha_category: - Switch - Climate ha_release: pre 0.7 +ha_iot_class: Local Polling ha_config_flow: true ha_domain: vera ha_codeowners: From fa62a5597e3a7aefade8dac2071f28538bfae1c8 Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Fri, 2 Oct 2020 16:09:18 +0200 Subject: [PATCH 060/231] Add IoT class for yandex transport integration (#14725) --- source/_integrations/yandex_transport.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/yandex_transport.markdown b/source/_integrations/yandex_transport.markdown index 3f3a81b585a..6d92d606572 100644 --- a/source/_integrations/yandex_transport.markdown +++ b/source/_integrations/yandex_transport.markdown @@ -4,6 +4,7 @@ description: Instructions on how to set up Yandex transport with Home Assistant. ha_category: - Sensor - Transport +ha_iot_class: Cloud Polling ha_release: '0.100' ha_codeowners: - '@rishatik92' From 2355eb33a0783782ada7f3a14ea49d06f12f8206 Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 16:10:29 +0200 Subject: [PATCH 061/231] Adding IoT Class for Ubee Router Integration (#14726) --- source/_integrations/ubee.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/ubee.markdown b/source/_integrations/ubee.markdown index d106181b596..6e355a24120 100644 --- a/source/_integrations/ubee.markdown +++ b/source/_integrations/ubee.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Ubee routers into Home Assistant. ha_category: - Presence Detection ha_release: 0.89 +ha_iot_class: Local Polling ha_codeowners: - '@mzdrale' ha_domain: ubee From 3b323e6b838a168b3dd0043ebcc418482ab8a903 Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 16:12:22 +0200 Subject: [PATCH 062/231] Adding IoT Class for VeSync Integration (#14727) --- source/_integrations/vesync.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown index ceab6227cc5..ff8d92449ca 100644 --- a/source/_integrations/vesync.markdown +++ b/source/_integrations/vesync.markdown @@ -5,6 +5,7 @@ ha_category: - Switch - Fan ha_release: 0.66 +ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@markperdue' From 9c13f9ac1c36fc5892f78b2087286a7c7f765f79 Mon Sep 17 00:00:00 2001 From: Jens Date: Fri, 2 Oct 2020 16:13:19 +0200 Subject: [PATCH 063/231] Adding IoT Class for World Tides Integration (#14728) --- source/_integrations/worldtidesinfo.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/worldtidesinfo.markdown b/source/_integrations/worldtidesinfo.markdown index 341af74e66e..a5fe41c135a 100644 --- a/source/_integrations/worldtidesinfo.markdown +++ b/source/_integrations/worldtidesinfo.markdown @@ -4,6 +4,7 @@ description: Instructions on how to add Tides information to Home Assistant. ha_category: - Environment ha_release: 0.52 +ha_iot_class: Cloud Polling ha_domain: worldtidesinfo --- From 4c8bb2f08b89a4cdf8e6213c16cf1f8a0a5b9164 Mon Sep 17 00:00:00 2001 From: Travis Carr Date: Fri, 2 Oct 2020 10:19:30 -0400 Subject: [PATCH 064/231] Add IoT Class to Discord Documentation (#14729) Adding an IoT class to Discord as per https://github.com/home-assistant/home-assistant.io/issues/14661 --- source/_integrations/discord.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index 9594f0a0c1c..4a54a2dc38c 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -3,6 +3,7 @@ title: Discord description: Instructions on how to add Discord notifications to Home Assistant. ha_category: - Notifications +ha_iot_class: Cloud Push ha_release: 0.37 ha_domain: discord --- From ccedddc5fba263d999ecedfea65fb6dd288af326 Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 2 Oct 2020 16:20:51 +0200 Subject: [PATCH 065/231] Plural typo and reorder (#14700) --- source/_integrations/rfxtrx.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown index 0e1d151b4f1..4b3d3122067 100644 --- a/source/_integrations/rfxtrx.markdown +++ b/source/_integrations/rfxtrx.markdown @@ -21,9 +21,9 @@ There is currently support for the following device types within Home Assistant: - [Cover](#covers) - [Light](#lights) +- [Switch](#switches) - [Sensor](#sensors) - [Binary Sensor](#binary-sensors) -- [Switch](#switch) To enable RFXtrx in your installation, something like the following to your `configuration.yaml` file. From ff05ca98ad61c9c762ca3cd90a63cde00d44416d Mon Sep 17 00:00:00 2001 From: Travis Carr Date: Fri, 2 Oct 2020 10:22:14 -0400 Subject: [PATCH 066/231] Add IoT class to Shell Integration (#14730) --- source/_integrations/shell_command.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown index 296903b2446..a5028bf72e3 100644 --- a/source/_integrations/shell_command.markdown +++ b/source/_integrations/shell_command.markdown @@ -3,6 +3,7 @@ title: Shell Command description: Instructions on how to integrate Shell commands into Home Assistant. ha_category: - Automation +ha_iot_class: Local Push ha_release: 0.7.6 ha_quality_scale: internal ha_codeowners: From 38a664ce30e3c0d87b66af133fdeb4eb8c6625fd Mon Sep 17 00:00:00 2001 From: Travis Carr Date: Fri, 2 Oct 2020 10:28:19 -0400 Subject: [PATCH 067/231] Add IoT class to Gitter sensor (#14731) --- source/_integrations/gitter.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/gitter.markdown b/source/_integrations/gitter.markdown index 0a76d463cce..9af9cbbc216 100644 --- a/source/_integrations/gitter.markdown +++ b/source/_integrations/gitter.markdown @@ -3,6 +3,7 @@ title: Gitter description: Instructions on how to integrate a Gitter room sensor with Home Assistant ha_category: - Sensor +ha_iot_class: Cloud Polling ha_release: 0.47 ha_codeowners: - '@fabaff' From 4ec857d4f4f5eba623f82006f8cd05a7c59d689b Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 15:35:57 +0100 Subject: [PATCH 068/231] Removing older Nest hyperlink (#14782) This post was originally updated with a different link at line 11. The website that the original link pointed to is now inactive so I have removed the hyperlink itself but left the stricken through text to keep the same effect. --- source/_posts/2019-01-24-nest-cannot-access-data.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2019-01-24-nest-cannot-access-data.markdown b/source/_posts/2019-01-24-nest-cannot-access-data.markdown index e83230261af..7c180a44a13 100644 --- a/source/_posts/2019-01-24-nest-cannot-access-data.markdown +++ b/source/_posts/2019-01-24-nest-cannot-access-data.markdown @@ -8,7 +8,7 @@ author_twitter: balloob categories: Public-Service-Announcement --- -**Update 1 (Jan 24):** We got some reports from people that they are still able to create accounts and generate the right keys. We just verified and this is the case. So for now you can still access your data, which is good. We're still puzzled on the response to our tweet. And thanks to Reddit user /u/lefos123 for [pointing out](https://www.reddit.com/r/homeassistant/comments/ajgiz2/nest_locks_users_out_of_their_own_data/eevh8on/) that they ~~[announced this](https://nestdevelopers.io/t/client-reviews-currently-suspended/1548)~~ [updated link](https://developers.nest.com/) on Nov 2018. +**Update 1 (Jan 24):** We got some reports from people that they are still able to create accounts and generate the right keys. We just verified and this is the case. So for now you can still access your data, which is good. We're still puzzled on the response to our tweet. And thanks to Reddit user /u/lefos123 for [pointing out](https://www.reddit.com/r/homeassistant/comments/ajgiz2/nest_locks_users_out_of_their_own_data/eevh8on/) that they ~~announced this~~ [updated link](https://developers.nest.com/) on Nov 2018. Although it's still working, we're still scared about the future of the Nest API. From 05b14910a008dd7f800a5cb3be022d7f10447c6e Mon Sep 17 00:00:00 2001 From: Vincent Palmer Date: Fri, 2 Oct 2020 16:44:20 +0200 Subject: [PATCH 069/231] Add IoT class to sun integration (#14737) Co-authored-by: Franck Nijhof --- source/_integrations/sun.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown index 56d34e62b23..1a62c7b5381 100644 --- a/source/_integrations/sun.markdown +++ b/source/_integrations/sun.markdown @@ -7,6 +7,7 @@ ha_release: pre 0.7 ha_quality_scale: internal ha_codeowners: - '@Swamp-Ig' +ha_iot_class: Calculated ha_domain: sun --- From 273fb7ef0931f0f1b4e9d6a99435d26e5b7773f3 Mon Sep 17 00:00:00 2001 From: Vincent Palmer Date: Fri, 2 Oct 2020 16:49:03 +0200 Subject: [PATCH 070/231] Add IoT class to zone integration (#14739) Co-authored-by: Franck Nijhof --- source/_integrations/zone.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/zone.markdown b/source/_integrations/zone.markdown index e2277ab15aa..17a983d882c 100644 --- a/source/_integrations/zone.markdown +++ b/source/_integrations/zone.markdown @@ -8,6 +8,7 @@ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' ha_domain: zone +ha_iot_class: ~ --- 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 cf529e4cc951c4ceaa3fd995aa9bb92bd4599032 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 15:50:11 +0100 Subject: [PATCH 071/231] Adding IoT Class for Radarr Integration (#14706) --- source/_integrations/radarr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/radarr.markdown b/source/_integrations/radarr.markdown index aca49c1bac8..bdbbee01d0e 100644 --- a/source/_integrations/radarr.markdown +++ b/source/_integrations/radarr.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Radarr sensors with Home Assistant ha_category: - Downloading ha_release: 0.47 +ha_iot_class: Local Polling ha_domain: radarr --- From 50b19f2cb305c7cc2a36175d15450a5e92c54853 Mon Sep 17 00:00:00 2001 From: Brian Rogers Date: Fri, 2 Oct 2020 10:51:20 -0400 Subject: [PATCH 072/231] Add note about remote access to Rachio docs (#14785) Co-authored-by: Fabian Affolter --- source/_integrations/rachio.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/rachio.markdown b/source/_integrations/rachio.markdown index 237cd276706..5cd8fa5b2e9 100644 --- a/source/_integrations/rachio.markdown +++ b/source/_integrations/rachio.markdown @@ -29,6 +29,12 @@ They will be automatically added if the Rachio integration integration is loaded 3. Click "Get API Key" 4. Copy the API key from the dialog that opens. +
    + +In order for Rachio switches and sensors to update, your Home Assistant instance must be accessible from the internet, either via Home Assistant Cloud or another method. See the [Remote Access documentation](/docs/configuration/remote/) for more information. + +
    + ## Configuration To add `Rachio` go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Rachio**. From cb4e2ef01b642e244bbf944348568ac2c6f4f862 Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 10:52:31 -0400 Subject: [PATCH 073/231] Updated Zamel link to Supla products (#14786) --- source/_integrations/supla.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/supla.markdown b/source/_integrations/supla.markdown index f6d33d0e142..289344661e5 100644 --- a/source/_integrations/supla.markdown +++ b/source/_integrations/supla.markdown @@ -11,7 +11,7 @@ ha_codeowners: ha_domain: supla --- -The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, its own firmware and commercially available devices (produced for example by [Zamel](https://supla.zamel.pl/)) +The [Supla](https://supla.org/) is an Open Source home automation system for ESP8266 based devices. It has its own set of protocols, its own firmware and commercially available devices (produced for example by [Zamel](https://zamel.pl/pl-PL/produkty/supla-sterowanie-wi-fi)) Currently only covers (shutters in Supla's lingo), gates and switches are supported, but, thanks to comprehensive and universal REST API, it's pretty easy to add more. From dac3185c76a3c88c0aa076435a65154f706b7811 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 16:54:04 +0200 Subject: [PATCH 074/231] Fix broken links on website (part 2) (#14683) --- source/_integrations/minecraft_server.markdown | 2 +- ...d-link-smart-plugs-and-neurio-energy-sensors.markdown | 2 +- source/_posts/2017-06-04-release-46.markdown | 4 ++-- source/_posts/2017-06-17-release-47.markdown | 4 ++-- source/_posts/2017-07-02-release-48.markdown | 2 +- source/_posts/2017-07-16-release-49.markdown | 2 +- source/_posts/2017-11-04-release-57.markdown | 2 +- source/_posts/2018-01-14-release-61.markdown | 6 +++--- source/_posts/2018-01-27-release-62.markdown | 6 +++--- source/_posts/2018-02-26-release-64.markdown | 4 ++-- source/_redirects | 9 ++++----- 11 files changed, 21 insertions(+), 22 deletions(-) diff --git a/source/_integrations/minecraft_server.markdown b/source/_integrations/minecraft_server.markdown index ddb57fc7b2a..a6c09df2029 100644 --- a/source/_integrations/minecraft_server.markdown +++ b/source/_integrations/minecraft_server.markdown @@ -13,7 +13,7 @@ ha_codeowners: ha_domain: minecraft_server --- -Minecraft servers allow players to play the sandbox video game [Minecraft](https://www.minecraft.net) by [Mojang AB](https://www.mojang.com) online or via a local area network with other players. The `Minecraft Server` integration lets you retrieve information from a Minecraft server (Java edition) within Home Assistant. +Minecraft servers allow players to play the sandbox video game [Minecraft](https://www.minecraft.net/en-us) by [Mojang AB](https://www.mojang.com) online or via a local area network with other players. The `Minecraft Server` integration lets you retrieve information from a Minecraft server (Java edition) within Home Assistant.
    The server must be version 1.7 or higher, since older versions don't expose any information. diff --git a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown index 1f263841b77..65104806e0c 100644 --- a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown +++ b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown @@ -48,7 +48,7 @@ It's been another two weeks which means it's time for release: 0.14! - Command line platforms for [switch][switch.cmd], [sensor][sensor.cmd] and [binary_sensor][binary_sensor.cmd] have been renamed to `command_line`. - The rfxtrx sensors entity ids will incur a one time change to move to a stable format. See [the docs][sensor.rfxtrx] for more details. -[sensor.rfxtrx]: /integrations/sensor.rfxtrx/ +[sensor.rfxtrx]: /integrations/rfxtrx#sensors [notify.command_line]: /integrations/notify.command_line/ [Verisure]: /integrations/verisure [binary_sensor.tcp]: /integrations/tcp#binary-sensor diff --git a/source/_posts/2017-06-04-release-46.markdown b/source/_posts/2017-06-04-release-46.markdown index 2f402e7a76b..995b853d442 100644 --- a/source/_posts/2017-06-04-release-46.markdown +++ b/source/_posts/2017-06-04-release-46.markdown @@ -27,7 +27,7 @@ It's time for 0.46! This release does not have too many new integrations, instea - Fix typos in Wunderground component (Percipitation -> Precipitation) ([@mje-nz] - [#7901]) ([sensor.wunderground docs]) - Mqtt cover: Making command topic optional and add ability to set up/down position including ability to template the value ([@cribbstechnologies] - [#7841]) ([cover.mqtt docs]) - Media Player - OpenHome: Fixed metadata issue ([@bazwilliams] - [#7932]) ([media_player.openhome docs]) -- Sensor - MetOffice: Fix last updated date ([@cyberjacob] - [#7965]) ([sensor.metoffice docs]) +- Sensor - MetOffice: Fix last updated date ([@cyberjacob] - [#7965]) ([metoffice docs]) - Prevent Roku doing I/O in event loop ([@balloob] - [#7969]) ([media_player.roku docs]) ## Breaking changes @@ -345,6 +345,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.sonos docs]: /integrations/sonos [media_player.spotify docs]: /integrations/spotify [media_player.volumio docs]: /integrations/volumio +[metoffice docs]: /integrations/metoffice/ [modbus docs]: /integrations/modbus/ [mqtt.discovery docs]: /docs/mqtt/discovery/ [notify.ios docs]: /docs/ecosystem/ios/notifications/basic/ @@ -388,7 +389,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@cyberjacob]: https://github.com/cyberjacob [@mje-nz]: https://github.com/mje-nz [cover.mqtt docs]: /integrations/cover.mqtt/ -[sensor.metoffice docs]: /integrations/sensor.metoffice/ [sensor.wunderground docs]: /integrations/wunderground [media_player.roku docs]: /integrations/roku#media-player [discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-06-17-release-47.markdown b/source/_posts/2017-06-17-release-47.markdown index 49406fc741f..dca11468bea 100644 --- a/source/_posts/2017-06-17-release-47.markdown +++ b/source/_posts/2017-06-17-release-47.markdown @@ -216,7 +216,7 @@ automation: - Add configuration check and use default var names ([@fabaff] - [#7963]) ([lutron docs]) ([light.lutron docs]) (breaking change) - lock.sesame: Update pysesame, add state attributes ([@trisk] - [#7953]) ([lock.sesame docs]) - Fixed metadata issue ([@bazwilliams] - [#7932]) ([media_player.openhome docs]) -- Create metoffice.py ([@cyberjacob] - [#7965]) ([sensor.metoffice docs]) +- Create metoffice.py ([@cyberjacob] - [#7965]) ([metoffice docs]) - Prevent Roku doing I/O in event loop ([@balloob] - [#7969]) ([media_player.roku docs]) - Fix platforms being able to block startup ([@balloob] - [#7970]) - New component: Python Script ([@balloob] - [#7950]) ([python_script docs]) (new-platform) @@ -495,6 +495,7 @@ automation: [media_player.sonos docs]: /integrations/sonos [media_player.spotify docs]: /integrations/spotify [media_player.squeezebox docs]: /integrations/squeezebox +[metoffice docs]: /integrations/metoffice/ [mqtt.__init__ docs]: /integrations/mqtt.__init__/ [nest docs]: /integrations/nest/ [netatmo docs]: /integrations/netatmo/ @@ -527,7 +528,6 @@ automation: [sensor.homematic docs]: /integrations/homematic [sensor.imap_email_content docs]: /integrations/imap_email_content/ [sensor.juicenet docs]: /integrations/juicenet#sensor -[sensor.metoffice docs]: /integrations/sensor.metoffice/ [sensor.mold_indicator docs]: /integrations/mold_indicator [sensor.netatmo docs]: /integrations/netatmo#sensor [sensor.openevse docs]: /integrations/openevse diff --git a/source/_posts/2017-07-02-release-48.markdown b/source/_posts/2017-07-02-release-48.markdown index 91a1dee7bc7..85070ec8ead 100644 --- a/source/_posts/2017-07-02-release-48.markdown +++ b/source/_posts/2017-07-02-release-48.markdown @@ -426,7 +426,7 @@ light: [binary_sensor.arest docs]: /integrations/arest#binary-sensor [binary_sensor.digital_ocean docs]: /integrations/digital_ocean#binary-sensor [binary_sensor.modbus docs]: /integrations/binary_sensor.modbus/ -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [binary_sensor.verisure docs]: /integrations/verisure [calendar.google docs]: /integrations/calendar.google/ [camera.arlo docs]: /integrations/arlo#camera diff --git a/source/_posts/2017-07-16-release-49.markdown b/source/_posts/2017-07-16-release-49.markdown index 00722f59865..cd459ab8e1c 100644 --- a/source/_posts/2017-07-16-release-49.markdown +++ b/source/_posts/2017-07-16-release-49.markdown @@ -486,7 +486,7 @@ amcrest: [@clkao]: https://github.com/clkao [@maikelwever]: https://github.com/maikelwever [@ypollart]: https://github.com/ypollart -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [telegram_bot docs]: /integrations/telegram_bot/ [#8545]: https://github.com/home-assistant/home-assistant/pull/8545 [#8571]: https://github.com/home-assistant/home-assistant/pull/8571 diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 0a33bc952ba..6a9bf723d85 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -530,7 +530,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.gc100 docs]: /integrations/gc100#binary-sensor [binary_sensor.linode docs]: /integrations/linode#binary-sensor [binary_sensor.random docs]: /integrations/random#binary-sensor -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [binary_sensor.ring docs]: /integrations/ring#binary-sensor [binary_sensor.tellduslive docs]: /integrations/tellduslive [binary_sensor.trend docs]: /integrations/trend diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown index 426ee0dca16..358f64b35ec 100644 --- a/source/_posts/2018-01-14-release-61.markdown +++ b/source/_posts/2018-01-14-release-61.markdown @@ -272,7 +272,7 @@ Note however, that this feature was replaced by a new ignore_string config optio - Add Touchline climate platform ([@abondoe] - [#10547]) ([climate.touchline docs]) (new-platform) - Upgrade pysnmp to 4.4.4 ([@fabaff] - [#11485]) ([device_tracker.snmp docs]) ([sensor.snmp docs]) ([switch.snmp docs]) - Add new iGlo component ([@jesserockz] - [#11171]) ([light.iglo docs]) (new-platform) -- Add missing configuration variables ([@fabaff] - [#11390]) ([sensor.metoffice docs]) +- Add missing configuration variables ([@fabaff] - [#11390]) ([metoffice docs]) - Clean up Alexa.intent and DialogFlow.intent ([@balloob] - [#11492]) ([alexa.intent docs]) - Fix time functions would throw errors in python scripts ([@tomwaters] - [#11414]) ([python_script docs]) - Upgrade pywebpush to 1.5.0 ([@Chris-V] - [#11497]) ([notify.html5 docs]) @@ -707,6 +707,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [media_player.plex docs]: /integrations/plex#media-player [media_player.squeezebox docs]: /integrations/squeezebox [media_player.yamaha docs]: /integrations/yamaha +[metoffice docs]: /integrations/metoffice/ [modbus docs]: /integrations/modbus/ [notify.html5 docs]: /integrations/html5 [notify.pushbullet docs]: /integrations/pushbullet @@ -730,7 +731,6 @@ Note however, that this feature was replaced by a new ignore_string config optio [sensor.isy994 docs]: /integrations/isy994#sensors [sensor.knx docs]: /integrations/sensor.knx/ [sensor.luftdaten docs]: /integrations/luftdaten#sensor -[sensor.metoffice docs]: /integrations/sensor.metoffice/ [sensor.miflora docs]: /integrations/miflora [sensor.mqtt docs]: /integrations/sensor.mqtt/ [sensor.openweathermap docs]: /integrations/openweathermap#sensor @@ -781,7 +781,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [@rcloran]: https://github.com/rcloran [@rwa]: https://github.com/rwa [@tinloaf]: https://github.com/tinloaf -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [calendar.todoist docs]: /integrations/todoist [history docs]: /integrations/history/ [light.zha docs]: /integrations/zha diff --git a/source/_posts/2018-01-27-release-62.markdown b/source/_posts/2018-01-27-release-62.markdown index 8c71a186f7e..0939a0b6f66 100644 --- a/source/_posts/2018-01-27-release-62.markdown +++ b/source/_posts/2018-01-27-release-62.markdown @@ -100,7 +100,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Round off exchange rate ([@arsaboo] - [#11765]) ([sensor.alpha_vantage docs]) - Update icon (fixes #11744) ([@fabaff] - [#11758]) ([sensor.fixer docs]) - Use localized forecast for openweathermap ([@brainexe] - [#11770]) ([sensor.openweathermap docs]) -- Unit should be mph as that is what the metoffices datapoint API returns ([@ioangogo] - [#11760]) ([sensor.metoffice docs]) +- Unit should be mph as that is what the metoffices datapoint API returns ([@ioangogo] - [#11760]) ([metoffice docs]) - Owntracks: Use bluetooth_le as source_type if beacon was used for location change. ([@cnrd] - [#11615]) ([device_tracker.owntracks docs]) - Add a 'last' mode and attribute to min_max sensor ([@markferry] - [#11037]) ([sensor.min_max docs]) - Update header and make it less verbose ([@fabaff] - [#11774]) ([asterisk_mbox docs]) @@ -389,7 +389,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.hive docs]: /integrations/hive#binary-sensor [binary_sensor.ihc docs]: /integrations/ihc#binary-sensor [binary_sensor.maxcube docs]: /integrations/maxcube -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [binary_sensor.wink docs]: /integrations/wink#binary-sensor [binary_sensor.workday docs]: /integrations/workday [binary_sensor.xiaomi_aqara docs]: /integrations/binary_sensor.xiaomi_aqara/ @@ -442,6 +442,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.samsungtv docs]: /integrations/samsungtv [media_player.sonos docs]: /integrations/sonos [media_player.yamaha docs]: /integrations/yamaha +[metoffice docs]: /integrations/metoffice/ [notify.clicksend docs]: /integrations/clicksend [notify.prowl docs]: /integrations/prowl [plant docs]: /integrations/plant/ @@ -456,7 +457,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.hive docs]: /integrations/hive#sensor [sensor.ihc docs]: /integrations/ihc#sensor [sensor.iota docs]: /integrations/iota#sensor -[sensor.metoffice docs]: /integrations/sensor.metoffice/ [sensor.miflora docs]: /integrations/miflora [sensor.min_max docs]: /integrations/min_max [sensor.mold_indicator docs]: /integrations/mold_indicator diff --git a/source/_posts/2018-02-26-release-64.markdown b/source/_posts/2018-02-26-release-64.markdown index 055e991ecaa..1d5765bf981 100644 --- a/source/_posts/2018-02-26-release-64.markdown +++ b/source/_posts/2018-02-26-release-64.markdown @@ -557,7 +557,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.folder docs]: /integrations/folder [sensor.knx docs]: /integrations/sensor.knx/ [sensor.pollen docs]: /integrations/iqvia -[sensor.rfxtrx docs]: /integrations/sensor.rfxtrx/ +[sensor.rfxtrx docs]: /integrations/rfxtrx#sensors [sensor.sabnzbd docs]: /integrations/sabnzbd [sensor.sma docs]: /integrations/sma#sensors [sensor.smappee docs]: /integrations/sma#sensorsppee/ @@ -634,7 +634,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [@happyleavesaoc]: https://github.com/happyleavesaoc [@ryanm101]: https://github.com/ryanm101 [@uchagani]: https://github.com/uchagani -[binary_sensor.rfxtrx docs]: /integrations/binary_sensor.rfxtrx/ +[binary_sensor.rfxtrx docs]: /integrations/rfxtrx#binary-sensors [bmw_connected_drive docs]: /integrations/bmw_connected_drive/ [logbook docs]: /integrations/logbook/ [media_player.plex docs]: /integrations/plex#media-player diff --git a/source/_redirects b/source/_redirects index afd40609108..476eef66121 100644 --- a/source/_redirects +++ b/source/_redirects @@ -174,7 +174,7 @@ /components/binary_sensor.rainmachine /integrations/rainmachine /components/binary_sensor.random /integrations/random#binary-sensor /components/binary_sensor.raspihats /integrations/raspihats#binary-sensor -/components/binary_sensor.rfxtrx /integrations/rfxtrx#binary-sensor +/components/binary_sensor.rfxtrx /integrations/rfxtrx#binary-sensors /components/binary_sensor.ring /integrations/ring#binary-sensor /components/binary_sensor.rpi_gpio /integrations/rpi_gpio#binary-sensor /components/binary_sensor.rpi_pfio /integrations/rpi_pfio#binary-sensor @@ -829,7 +829,7 @@ /components/sensor.reddit /integrations/reddit /components/sensor.rejseplanen /integrations/rejseplanen /components/sensor.rest /integrations/rest -/components/sensor.rfxtrx /integrations/rfxtrx#sensor +/components/sensor.rfxtrx /integrations/rfxtrx#sensors /components/sensor.ring /integrations/ring#sensor /components/sensor.ripple /integrations/ripple /components/sensor.rmvtransport /integrations/rmvtransport @@ -1160,7 +1160,6 @@ /components/binary_sensor.mysensors /integrations/binary_sensor.mysensors /components/binary_sensor.rest /integrations/binary_sensor.rest /components/binary_sensor.rflink /integrations/binary_sensor.rflink -/components/binary_sensor.rfxtrx /integrations/binary_sensor.rfxtrx /components/binary_sensor.template /integrations/binary_sensor.template /components/binary_sensor.xiaomi_aqara /integrations/binary_sensor.xiaomi_aqara /components/bitcoin /integrations/bitcoin @@ -1765,12 +1764,12 @@ /components/sensor.command_line /integrations/sensor.command_line /components/sensor.ios /integrations/sensor.ios /components/sensor.knx /integrations/sensor.knx -/components/sensor.metoffice /integrations/sensor.metoffice +/components/sensor.metoffice /integrations/metoffice /components/sensor.modbus /integrations/sensor.modbus /components/sensor.mqtt /integrations/sensor.mqtt /components/sensor.mysensors /integrations/sensor.mysensors /components/sensor.rflink /integrations/sensor.rflink -/components/sensor.rfxtrx /integrations/sensor.rfxtrx +/components/sensor.rfxtrx /integrations/rfxtrx#sensors /components/sensor.websocket_api /integrations/sensor.websocket_api /components/sensor.xiaomi_aqara /integrations/sensor.xiaomi_aqara /components/sensor.xiaomi_miio /integrations/sensor.xiaomi_miio From 14dd6f0c89fa4d1b37b9f723d90ecdb61e48e4a9 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 16:55:59 +0200 Subject: [PATCH 075/231] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Move=20z-wave=20re?= =?UTF-8?q?directs=20to=20file=20(#14767)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_docs/z-wave.markdown | 1 - source/_docs/z-wave/control-panel.markdown | 1 - source/_docs/z-wave/device-specific.markdown | 1 - source/_docs/z-wave/devices.markdown | 1 - source/_docs/z-wave/installation.markdown | 1 - source/_redirects | 5 +++++ 6 files changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_docs/z-wave.markdown b/source/_docs/z-wave.markdown index aa79ffb06cb..a76eed6860d 100644 --- a/source/_docs/z-wave.markdown +++ b/source/_docs/z-wave.markdown @@ -1,7 +1,6 @@ --- title: "Z-Wave" description: "Using Z-Wave with Home Assistant." -redirect_from: /getting-started/z-wave/ --- [Z-Wave](https://www.z-wave.com/) integration for Home Assistant allows you to observe and control connected Z-Wave devices. Z-Wave support requires a [supported Z-Wave USB stick or module](/docs/z-wave/controllers/) to be plugged into the host. diff --git a/source/_docs/z-wave/control-panel.markdown b/source/_docs/z-wave/control-panel.markdown index 8f82c1a1239..fd0d872c826 100644 --- a/source/_docs/z-wave/control-panel.markdown +++ b/source/_docs/z-wave/control-panel.markdown @@ -1,7 +1,6 @@ --- title: "Z-Wave Control Panel" description: "How to use the Z-Wave control panel." -redirect_from: /getting-started/z-wave-panel/ ---
    diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown index 796c90e3bde..f66cad11ba9 100644 --- a/source/_docs/z-wave/device-specific.markdown +++ b/source/_docs/z-wave/device-specific.markdown @@ -1,7 +1,6 @@ --- title: "Z-Wave Device Specific Settings" description: "Notes for specific Z-Wave devices." -redirect_from: /getting-started/z-wave-device-specific/ --- ## Device Categories diff --git a/source/_docs/z-wave/devices.markdown b/source/_docs/z-wave/devices.markdown index 94d36ff44ea..d982a2e6204 100644 --- a/source/_docs/z-wave/devices.markdown +++ b/source/_docs/z-wave/devices.markdown @@ -1,7 +1,6 @@ --- title: "Z-Wave Devices" description: "What you need to know about Z-Wave devices." -redirect_from: /getting-started/z-wave-devices/ --- ## Devices, Nodes, Entities diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index 9c61159416b..55a87a9cf1f 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -1,7 +1,6 @@ --- title: "Z-Wave" description: "Installation of the Z-Wave component." -redirect_from: /getting-started/z-wave-installation/ --- Z-Wave can be configured using the Z-Wave *Integration* in the *Configuration* menu, or manually using an entry in `configuration.yaml` diff --git a/source/_redirects b/source/_redirects index 476eef66121..2126d9c4d02 100644 --- a/source/_redirects +++ b/source/_redirects @@ -2093,6 +2093,11 @@ /getting-started/troubleshooting-configuration /docs/configuration/troubleshooting /getting-started/updating /docs/installation/updating /getting-started/yaml /docs/configuration/yaml +/getting-started/z-wave /docs/z-wave +/getting-started/z-wave-devices /docs/z-wave/devices +/getting-started/z-wave-installation /docs/z-wave/installation +/getting-started/z-wave-panel /docs/z-wave/control-panel +/getting-started/z-wave-device-specific /docs/z-wave/device-specific /topics/events /docs/configuration/events /topics/packages /docs/configuration/packages /topics/platform_options /docs/configuration/platform_options From 6b436e22beb1da14d726d558385dd997598f4987 Mon Sep 17 00:00:00 2001 From: alex6480 Date: Fri, 2 Oct 2020 16:57:24 +0200 Subject: [PATCH 076/231] Add IOT class to no-ip integration (#14770) --- source/_integrations/no_ip.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/no_ip.markdown b/source/_integrations/no_ip.markdown index 37b1f37f16e..9b6f9f404a4 100644 --- a/source/_integrations/no_ip.markdown +++ b/source/_integrations/no_ip.markdown @@ -3,6 +3,7 @@ title: No-IP.com description: Keep your computer registered with the NO-IP.com dynamic DNS. ha_category: - Network +ha_iot_class: Cloud Polling ha_release: 0.57 ha_codeowners: - '@fabaff' From 23b4be558445ce96d99eb5207b27f6361a9e9ed8 Mon Sep 17 00:00:00 2001 From: Tom Brien Date: Fri, 2 Oct 2020 16:17:15 +0100 Subject: [PATCH 077/231] Update ios integration to clarify what it does and when it is needed (#14685) --- source/_integrations/ios.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/ios.markdown b/source/_integrations/ios.markdown index 3d40fa53c33..65765b77d51 100644 --- a/source/_integrations/ios.markdown +++ b/source/_integrations/ios.markdown @@ -11,4 +11,6 @@ ha_codeowners: ha_domain: ios --- -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. +The `ios` integration is used by the Home Assistant Companion App for iOS to store and provide settings for [actionable notifications](https://companion.home-assistant.io/docs/notifications/actionable-notifications) and [actions](https://companion.home-assistant.io/docs/core/actions). Both of these can also be configured for a single device within the app, in which case the `ios` integration is not required. + +For further details please check the [Companion App Documentation Site](https://companion.home-assistant.io). From 2ba507b79aae959366314ec1aef7830ccc2850dd Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 11:33:28 -0400 Subject: [PATCH 078/231] Removed dead link to end of service page (#14789) --- source/_integrations/wunderground.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/wunderground.markdown b/source/_integrations/wunderground.markdown index 20df1435faa..b2d22baa0b1 100644 --- a/source/_integrations/wunderground.markdown +++ b/source/_integrations/wunderground.markdown @@ -12,7 +12,7 @@ The `wunderground` platform uses [Weather Underground](https://www.wunderground.
    -Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018, except you own a personal weather station and provide your data to WU (PWS Uploader). As of Sept 6, 2018 Weather Underground states they are declaring the [End of Service for the Weather Underground API](https://apicommunity.wunderground.com/weatherapi/topics/end-of-service-for-the-weather-underground-api). They say they will develop new plans for non-commercial users. No timeline for this has been announced. +Obtain a WUnderground API key [here](https://www.wunderground.com/weather/api). They no longer offer free API keys, and all keys must be paid for. At this time existing free keys will continue to work, but will be disabled Dec 31, 2018, except you own a personal weather station and provide your data to WU (PWS Uploader). As of Sept 6, 2018 Weather Underground states they are declaring the End of Service for the Weather Underground API. They say they will develop new plans for non-commercial users. No timeline for this has been announced. Please consider this when using the following information. From 789dba2315d1b605feb4ac509bae4c3d4490f0d5 Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 11:35:21 -0400 Subject: [PATCH 079/231] Changed the Lannouncer link to point to Playstore (#14788) The keybounce site appears to be down. I've contacted author to see if it's temporary or done. Will update the "more information here" link or remove it if it's just done, but at least this way if you click the Lannouncer link you can install and use the app. --- source/_integrations/lannouncer.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/lannouncer.markdown b/source/_integrations/lannouncer.markdown index 576f996bc66..464ee1d6e14 100644 --- a/source/_integrations/lannouncer.markdown +++ b/source/_integrations/lannouncer.markdown @@ -8,7 +8,7 @@ ha_release: 0.36 ha_domain: lannouncer --- -The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](https://www.keybounce.com/lannouncer/). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. +The `lannouncer` notification platform allows you to play spoken messages (TTS) or sounds on an Android device running [Lannouncer](https://play.google.com/store/apps/details?id=com.keybounce.lannouncer&hl=en_US). This can be useful when you have a wall mounted Android tablet, or an Android device that is permanently powered and turned on and want to use that to play notifications. To enable Lannouncer notifications in your installation, add the following to your `configuration.yaml` file: From df09e1e1b73cffc3739fc17ff5920183ff3ca4d8 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 18:30:52 +0200 Subject: [PATCH 080/231] Fix broken links on website (part 3) (#14774) --- source/_integrations/http.markdown | 6 +++--- ...end-panels--jupyter-notebooks--directv.markdown | 4 +--- source/_posts/2018-06-22-release-72.markdown | 2 +- source/_posts/2018-09-30-hacktoberfest.markdown | 8 ++++---- source/_posts/2019-03-13-release-89.markdown | 2 +- .../2020-08-05-mobile-apps-new-features.markdown | 2 +- source/_redirects | 14 +++++++------- 7 files changed, 18 insertions(+), 20 deletions(-) diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index 8d6e189aabe..a1517e93c77 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -117,7 +117,7 @@ The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-us ## APIs -On top of the `http` integration is a [REST API](/developers/rest_api/), [Python API](/developers/python_api/) and [WebSocket API](/developers/websocket_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/). +On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest), [Python API](/developers/python_api/) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket) available. There is also support for [Server-sent events](/developers/server_sent_events/). The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP. @@ -125,9 +125,9 @@ The `http` platforms are not real platforms within the meaning of the terminolog To use those kind of [sensors](#sensor) or [binary sensors](#binary-sensor) in your installation no configuration in Home Assistant is needed. All configuration is done on the devices themselves. This means that you must be able to edit the target URL or endpoint and the payload. The entity will be created after the first message has arrived. -Create a [Long-Lived Access Tokens](https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token) in the Home Assistant UI at the bottom of your profile if you want to use HTTP sensors. +Create a [Long-Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) in the Home Assistant UI at the bottom of your profile if you want to use HTTP sensors. -All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent to the endpoint of the device and must be **POST**. +All [requests](https://developers.home-assistant.io/docs/api/rest#post-apistatesentity_id) need to be sent to the endpoint of the device and must be **POST**. ## IP filtering and banning diff --git a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown b/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown index 9750eeaadb3..c38afccea8b 100644 --- a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown +++ b/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown @@ -24,7 +24,7 @@ I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] da - Frontend: Support for [iFrame panels][iframe_panel] to adding other sites to sidebar ([@balloob]) - Allow components to register [custom frontend panels][custom-panels] ([@balloob]) -- Add example custom_component [react_panel][react-panel] showing custom panels ([@balloob]) +- Add example custom_component react_panel showing custom panels ([@balloob]) - Light: [MagicLight/Flux WiFi Color LED Light][flux] support ([@Danielhiversen]) - Script: Specify a delay [using templates][script] ([@Teagan42]) - Media player: [Russound RNET][Russound] integration ([@laf]) @@ -102,7 +102,6 @@ I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] da [custom-panels]: /developers/frontend_creating_custom_panels/ [iframe_panel]: /integrations/panel_iframe/ -[custom]: /cookbook/custom_panel_using_react/ [flux]: /integrations/flux_led [script]: /getting-started/scripts/#delay [Russound]: /integrations/russound_rnet @@ -120,7 +119,6 @@ I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] da [PEP484]: https://www.python.org/dev/peps/pep-0484/ [MPC-HC]: /integrations/mpchc [Telegram]: /integrations/telegram -[react-panel]: /cookbook/custom_panel_using_react/ [KNX]: /integrations/climate.knx/ [Nest]: /integrations/nest/#climate [filters]: /topics/templating/#home-assistant-template-extensions diff --git a/source/_posts/2018-06-22-release-72.markdown b/source/_posts/2018-06-22-release-72.markdown index 7cc8b84d813..c3111a4c61c 100644 --- a/source/_posts/2018-06-22-release-72.markdown +++ b/source/_posts/2018-06-22-release-72.markdown @@ -11,7 +11,7 @@ og_image: /images/blog/2018-06-release-0.72/lovelace.png I am super excited about this release as it brings some great examples of how we are refining the system to become more customizable and, at the same time, user friendly. The first thing that I am really excited about is a new experimental user interface that we call Lovelace. Check [this awesome rundown](https://gist.github.com/ciotlosm/9508388876edf92c4c1f3579e740fbd5) of all the features by [@ciotlosm]. The TL;DR: a faster, more customizable and more extensible UI with the same look and feel as the old one. -Be aware, this _is_ experimental, so things will change. However, we felt like we didn't want to keep this away from you any longer. Check the [Lovelace UI docs](https://developers.home-assistant.io/docs/en/lovelace_index.html) on how to get started. Make sure to share your creations! +Be aware, this _is_ experimental, so things will change. However, we felt like we didn't want to keep this away from you any longer. Check the [Lovelace UI docs](/lovelace) on how to get started. Make sure to share your creations! Thanks to all the people that have been hanging out in the #beta channel on [Discord](https://discord.gg/c5DvZ4e) helping development, finding and squashing bugs and making suggestions. Especially thanks to [@c727] for all his development work and [@arsaboo] for being the first guinea pig. diff --git a/source/_posts/2018-09-30-hacktoberfest.markdown b/source/_posts/2018-09-30-hacktoberfest.markdown index 24b35a4c3c7..e0e845d6bad 100644 --- a/source/_posts/2018-09-30-hacktoberfest.markdown +++ b/source/_posts/2018-09-30-hacktoberfest.markdown @@ -47,11 +47,11 @@ Hacktoberfest will create a lot of work for us. In 2017 we processed 625 Pull Re ### Home Assistant Frontend - Take a look at the [Polymer documentation](https://www.polymer-project.org/). -- Read the [Home Assistant Frontend documentation](https://developers.home-assistant.io/docs/en/frontend_index.html). +- Read the [Home Assistant Frontend documentation](https://developers.home-assistant.io/docs/frontend). ### Home Assistant -- Get familiar with our [Style Guidelines](https://developers.home-assistant.io/docs/en/development_guidelines.html) and the existing code. +- Get familiar with our [Style Guidelines](https://developers.home-assistant.io/docs/development_guidelines) and the existing code. - Go through the [Developer documentation](https://developers.home-assistant.io). - Don’t forget the documentation. Changes often require an update of the documentation. Also, new integrations. You know how it works, but the users don’t. - [Architectural changes](https://github.com/home-assistant/architecture) need to be discussed before a change is proposed. Also, keep in mind that those kinds of Pull Request may not be reviewed during October. @@ -59,8 +59,8 @@ Hacktoberfest will create a lot of work for us. In 2017 we processed 625 Pull Re ### Home Assistant Documentation -- Make yourself familiar with [Markdown](https://developers.home-assistant.io/docs/en/documentation_index.html). -- Understand our [Standards and Guidelines](https://developers.home-assistant.io/docs/en/documentation_standards.html). +- Make yourself familiar with [Markdown](https://www.markdownguide.org/cheat-sheet). +- Understand our [Standards and Guidelines](https://developers.home-assistant.io/docs/documenting/standards). - For small changes like typos and clarifications, use the GitHub editor functionality. - For more significant changes, we highly recommended that you set up an environment to build the documentation locally before opening a Pull Request. - Keep an eye on the branches. `current` is for changes on the existing documentation, `next` for new features or integrations that will be available with the next release. diff --git a/source/_posts/2019-03-13-release-89.markdown b/source/_posts/2019-03-13-release-89.markdown index 9a7b3957357..501f2566429 100644 --- a/source/_posts/2019-03-13-release-89.markdown +++ b/source/_posts/2019-03-13-release-89.markdown @@ -13,7 +13,7 @@ og_image: /images/blog/2019-03-release-89/components.png It's time for release 0.89. It's another great new release with some cool new features, bug fixes and improvements. The first cool new feature is that yet another car is integrated into Home Assistant: the Nissan Leaf. Both deConz and SmartThings integrations keep expanding to cover more devices. -This release introduces a new mobile app component. [@robbiet480], who also works on the iOS app, has taken the best parts of the Home Assistant iOS app component and turned it into a standardized API that any mobile app can build upon. This will allow any mobile apps to integrate with Home Assistant with a great user experience. If you are a mobile app developer, please check the updated [app integration docs](https://developers.home-assistant.io/docs/en/app_integration_index.html). We will be fine tuning the API in upcoming releases. Feedback is welcome. +This release introduces a new mobile app component. [@robbiet480], who also works on the iOS app, has taken the best parts of the Home Assistant iOS app component and turned it into a standardized API that any mobile app can build upon. This will allow any mobile apps to integrate with Home Assistant with a great user experience. If you are a mobile app developer, please check the updated [app integration docs](https://developers.home-assistant.io/docs/api/native-app-integration/). We will be fine tuning the API in upcoming releases. Feedback is welcome. ## Noteworthy Breaking Changes diff --git a/source/_posts/2020-08-05-mobile-apps-new-features.markdown b/source/_posts/2020-08-05-mobile-apps-new-features.markdown index 495006c927a..cd87c0700bc 100644 --- a/source/_posts/2020-08-05-mobile-apps-new-features.markdown +++ b/source/_posts/2020-08-05-mobile-apps-new-features.markdown @@ -91,7 +91,7 @@ Screenshot of Biometric Unlock. We have also been hard at working making improvements in other areas of the app: -* There are now 2 [widgets](https://companion.home-assistant.io/docs/core/android-widgets) that you can set up, with Entity State being the latest addition. The Entity State widget will display the state and any attribute of the selected entity. It will update once every 30 minutes or when tapped. The Service Call widget was also enhanced to allow you to select from a list of valid and available services along with the ability to add additional data fields that the service may require. +* There are now 2 [widgets](https://companion.home-assistant.io/docs/integrations/android-widgets) that you can set up, with Entity State being the latest addition. The Entity State widget will display the state and any attribute of the selected entity. It will update once every 30 minutes or when tapped. The Service Call widget was also enhanced to allow you to select from a list of valid and available services along with the ability to add additional data fields that the service may require. * In App Configuration the Home Network WiFi SSID option now allows the user to select multiple SSIDs. * A Cookie Manager was added to our WebView that will allow you to save cookies from sites that you may use in the [webpage card](/lovelace/iframe/). * More descriptive SSL error messages were added to help users resolve local issues they may encounter while setting up the app. diff --git a/source/_redirects b/source/_redirects index 2126d9c4d02..62deaf8eea5 100644 --- a/source/_redirects +++ b/source/_redirects @@ -40,14 +40,14 @@ /developers/development_testing https://developers.home-assistant.io/docs/development_testing/ /developers/development_validation https://developers.home-assistant.io/docs/development_validation/ /developers/development https://developers.home-assistant.io/docs/development_index/ -/developers/documentation/create_page https://developers.home-assistant.io/docs/documenting/create-page/ -/developers/documentation https://developers.home-assistant.io/docs/documentation_index/ -/developers/documentation/standards https://developers.home-assistant.io/docs/documentation_standards/ -/developers/frontend_add_card https://developers.home-assistant.io/docs/frontend_add_card/ -/developers/frontend_add_more_info https://developers.home-assistant.io/docs/frontend_add_more_info/ -/developers/frontend_creating_custom_panels https://developers.home-assistant.io/docs/frontend_creating_custom_panels/ +/developers/documentation/create_page https://developers.home-assistant.io/docs/documenting/create-page +/developers/documentation https://developers.home-assistant.io/docs/documenting +/developers/documentation/standards https://developers.home-assistant.io/docs/documenting/standards +/developers/frontend_add_card https://developers.home-assistant.io/docs/frontend/extending/adding-state-card +/developers/frontend_add_more_info https://developers.home-assistant.io/docs/frontend/extending/adding-more-info-dialogs +/developers/frontend_creating_custom_panels https://developers.home-assistant.io/docs/frontend/custom-ui/creating-custom-panels /developers/frontend_creating_custom_ui https://developers.home-assistant.io/docs/frontend_creating_custom_ui/ -/developers/frontend https://developers.home-assistant.io/docs/frontend_index/ +/developers/frontend https://developers.home-assistant.io/docs/frontend /developers/hassio/addon_communication https://developers.home-assistant.io/docs/hassio_addon_communication/ /developers/hassio/addon_config https://developers.home-assistant.io/docs/hassio_addon_config/ /developers/hassio/addon_development https://developers.home-assistant.io/docs/hassio_addon_index/ From fa4ce33b367ebb1cd5b7aaaa3fa52ae9d00fceba Mon Sep 17 00:00:00 2001 From: Jeff Rescignano Date: Fri, 2 Oct 2020 12:31:55 -0400 Subject: [PATCH 081/231] Update Nginx URLs on HTML5 integration page (#14698) Co-authored-by: Franck Nijhof --- source/_integrations/html5.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown index a713cb63e6b..aa59b053941 100644 --- a/source/_integrations/html5.markdown +++ b/source/_integrations/html5.markdown @@ -84,7 +84,7 @@ The `html5` platform can only function if all of the following requirements are * 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). +* 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 in front of Home Assistant and this will still work. The certificate must be trustworthy (i.e., not self-signed). * You are willing to accept the notification permission in your browser. ### Configuring the platform @@ -312,7 +312,7 @@ You will receive an event named `html5_notification.closed` when the notificatio ### Making notifications work with NGINX proxy -If you use [NGINX](/ecosystem/nginx/) as a proxy with authentication in front of your Home Assistant instance, you may have trouble with receiving events back to Home Assistant. It's because of authentication token that cannot be passed through the proxy. +If you use NGINX as a proxy with authentication in front of your Home Assistant instance, you may have trouble with receiving events back to Home Assistant. It's because of an authentication token that cannot be passed through the proxy. To solve the issue put additional location into your NGINX site's configuration: From bd2939ae3a63bd99195b7a1ad46b95396f63cf31 Mon Sep 17 00:00:00 2001 From: Kyle Niewiada Date: Fri, 2 Oct 2020 12:33:42 -0400 Subject: [PATCH 082/231] Add IoT class to Dialogflow integration #14661 (#14787) --- source/_integrations/dialogflow.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown index 9c038bf8c08..5d363ae54eb 100644 --- a/source/_integrations/dialogflow.markdown +++ b/source/_integrations/dialogflow.markdown @@ -5,6 +5,7 @@ ha_category: - Voice ha_release: 0.56 ha_config_flow: true +ha_iot_class: Cloud Push ha_domain: dialogflow --- From d366f71f794187d118b431b4d18f762c4186bca6 Mon Sep 17 00:00:00 2001 From: Jenny Date: Fri, 2 Oct 2020 17:34:27 +0100 Subject: [PATCH 083/231] Add IOT class for SQL (#14775) --- source/_integrations/sql.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown index 8dbde56f5ca..8de5999f1e1 100644 --- a/source/_integrations/sql.markdown +++ b/source/_integrations/sql.markdown @@ -5,6 +5,7 @@ ha_category: - Utility - Sensor ha_release: 0.63 +ha_iot_class: Local Polling ha_codeowners: - '@dgomes' ha_domain: sql From 81fa0d5d36a2846de4db5ed03bf5d50bed43a68d Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Fri, 2 Oct 2020 17:35:32 +0100 Subject: [PATCH 084/231] Removing reference to the Z-Wave public SDK (#14768) Removing reference to the Sigma Designs Z-Wave public SDK. As Z-Wave has changed a lot since this blog post I've simply removed the hyperlink to the now non-existant "http://zwavepublic.com/" URL as any new links wouldn't be relevant in the context of this blog post now that the technology is owned by Silicon Labs and has moved on a lot since September 2018! --- source/_posts/2018-09-17-thinking-big.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-09-17-thinking-big.markdown b/source/_posts/2018-09-17-thinking-big.markdown index 1f3bc7b1b4f..31fe7e742b6 100644 --- a/source/_posts/2018-09-17-thinking-big.markdown +++ b/source/_posts/2018-09-17-thinking-big.markdown @@ -40,7 +40,7 @@ Many things! However, here is a list of things that I am most enthusiastic about - Accessibility. We want to make Hass.io run on as many devices as possible, making it very easy for people to get started with a private home. - Integrate Mozilla's [Web Things API] to make it easier to interact with other home automation platforms. The introduced device management makes it perfectly aligned with the Web Things data model. - Cloud Transparency. We want to make it visible what data is being shared with Amazon Alexa and Google Home clouds. - - Better Z-Wave. Our current integration has room for improvement. The owner of Z-Wave has announced a [public SDK](http://zwavepublic.com/), which we should explore to integrate with Home Assistant. + - Better Z-Wave. Our current integration has room for improvement. The owner of Z-Wave has announced a public SDK, which we should explore to integrate with Home Assistant. ## What we need to achieve this goal From 629b97098a42278f71382f5e84d67ca23a20e0d4 Mon Sep 17 00:00:00 2001 From: Vincent Palmer Date: Fri, 2 Oct 2020 18:37:46 +0200 Subject: [PATCH 085/231] Add IoT class to the Prometheus integration (#14734) As requested in #14661 this is to add the IoT class to the Prometheus integration. --- source/_integrations/prometheus.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown index 1df7c93ec88..28450367127 100644 --- a/source/_integrations/prometheus.markdown +++ b/source/_integrations/prometheus.markdown @@ -4,6 +4,7 @@ description: Record events in Prometheus. ha_category: - History ha_release: 0.49 +ha_iot_class: Assumed State ha_domain: prometheus ha_codeowners: - '@knyar' From 7490f4c52a25bbc8050fc4c19a069ec6bc078e0b Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 12:39:13 -0400 Subject: [PATCH 086/231] Rasplex link changed to github page. (#14791) rasplex.com is offline. --- source/_integrations/command_line.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown index 79984ea78f3..01da8be49f4 100644 --- a/source/_integrations/command_line.markdown +++ b/source/_integrations/command_line.markdown @@ -89,7 +89,7 @@ binary_sensor: ### Check RasPlex -Check if [RasPlex](https://www.rasplex.com/) is `online`. +Check if [RasPlex](https://github.com/RasPlex/RasPlex) is `online`. ```yaml binary_sensor: From c45a3f8239e850c7b605f68ad165b746af8252d0 Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 12:41:31 -0400 Subject: [PATCH 087/231] Updated link to plans (#14792) The plans site doesn't appear to be present anymore, but the benefits page includes information on the free plan. Also updated text to reflect the website for the amount of calls per month under the free plan. --- source/_integrations/uk_transport.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown index 10247ffe356..b8eacf5b8e5 100644 --- a/source/_integrations/uk_transport.markdown +++ b/source/_integrations/uk_transport.markdown @@ -8,7 +8,7 @@ ha_release: '0.50' ha_domain: uk_transport --- -The `uk_transport` sensor will display the time in minutes until the next departure in a specified direction from of a configured train station or bus stop. The sensor uses [transportAPI](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. +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/benefits/) allows 30,000 requests a month, which is sufficient for a single sensor refreshing every 87 seconds.
    From 445b49ff8df60b54289270578eb4047dbeff8d87 Mon Sep 17 00:00:00 2001 From: lizaoreo Date: Fri, 2 Oct 2020 12:42:50 -0400 Subject: [PATCH 088/231] Updated lift dev link (#14790) --- source/_integrations/lyft.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown index afd295bd80c..8e7259846d2 100644 --- a/source/_integrations/lyft.markdown +++ b/source/_integrations/lyft.markdown @@ -10,7 +10,7 @@ ha_domain: lyft The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/). -You must create an application [here](https://www.lyft.com/developers/manage) to obtain a `client_id` and `client_secret`. +You must create an application [here](https://www.lyft.com/developers/apps) to obtain a `client_id` and `client_secret`. To enable this sensor, add the following lines to your `configuration.yaml` file: From 543bb1d874b325c67f6fb7a8a2c583b45c62d24f Mon Sep 17 00:00:00 2001 From: Marco Kamner Date: Fri, 2 Oct 2020 18:50:52 +0200 Subject: [PATCH 089/231] Move frontmatter redirects to file (#14682) Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_redirects | 6 ++++++ source/cloud/alexa.markdown | 2 -- source/code_of_conduct/index.markdown | 23 +++++++++++----------- source/getting-started/automation.markdown | 3 --- source/hassio/index.markdown | 13 ++++++------ source/lovelace/index.markdown | 8 ++++---- 6 files changed, 27 insertions(+), 28 deletions(-) diff --git a/source/_redirects b/source/_redirects index 62deaf8eea5..2a62255183b 100644 --- a/source/_redirects +++ b/source/_redirects @@ -76,6 +76,7 @@ /developers/rest_api https://developers.home-assistant.io/docs/api/rest/ /developers/server_sent_events https://developers.home-assistant.io/docs/external_api_server_sent_events/ /developers/websocket_api https://developers.home-assistant.io/docs/api/websocket/ +/developers/code_of_conduct /code_of_conduct # Platform pages to integration pages migration /components/air_pollutants /integrations/air_quality @@ -2071,6 +2072,10 @@ /integrations/switch.knx /integrations/knx#switch /integrations/weather.knx /integrations/knx#weather /integrations/zigbee /integrations/xbee +/integrations/hassio /hassio +/integrations/cloud.alexa /cloud/alexa +/getting-started/automation-create-first /getting-started/automation +/getting-started/automation-2 /getting-started/automation /getting-started/automation-action /docs/automation/action /getting-started/automation-condition /docs/automation/condition /getting-started/automation-examples /docs/automation/examples @@ -2174,6 +2179,7 @@ /lovelace/views /lovelace/dashboards-and-views /lovelace/yaml-mode /lovelace/dashboards-and-views /lovelace/calendar-card /lovelace/calendar +/integrations/lovelace /lovelace # Removed documentation /docs/installation/hassbian /getting-started diff --git a/source/cloud/alexa.markdown b/source/cloud/alexa.markdown index 269b0cd56b6..77cfe7a691b 100644 --- a/source/cloud/alexa.markdown +++ b/source/cloud/alexa.markdown @@ -2,8 +2,6 @@ title: "Alexa via Home Assistant Cloud" description: "Enable the Alexa integration via Home Assistant Cloud integration." sidebar: false -redirect_from: - - /integrations/cloud.alexa/ --- Home Assistant Cloud is a subscription service provided by our partner Nabu Casa, Inc. Check out [the Nabu Casa website](https://www.nabucasa.com/config/amazon_alexa/) for help with the Amazon Alexa integration via Home Assistant Cloud. diff --git a/source/code_of_conduct/index.markdown b/source/code_of_conduct/index.markdown index 494e125502b..a4eaf2e2bc4 100644 --- a/source/code_of_conduct/index.markdown +++ b/source/code_of_conduct/index.markdown @@ -2,7 +2,6 @@ title: "Code of Conduct" description: "The Code of Conduct for Home Assistant projects." sidebar: false -redirect_from: /developers/code_of_conduct/ --- ## Our Pledge @@ -22,23 +21,23 @@ diverse, inclusive, and healthy community. Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or +- The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -112,7 +111,7 @@ Violating these terms may lead to a permanent ban. ### 4. Permanent Ban **Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an +standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. **Consequence**: A permanent ban from any sort of public interaction within diff --git a/source/getting-started/automation.markdown b/source/getting-started/automation.markdown index 3ccd5f801ff..67082f494f9 100644 --- a/source/getting-started/automation.markdown +++ b/source/getting-started/automation.markdown @@ -1,9 +1,6 @@ --- title: "Automating Home Assistant" description: "A quick intro on getting your first automation going." -redirect_from: - - /getting-started/automation-create-first/ - - /getting-started/automation-2/ --- 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**. diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index 5241e043899..298110c7a08 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -1,7 +1,6 @@ --- title: "Home Assistant" description: "Manage your Home Assistant and custom add-ons." -redirect_from: /integrations/hassio/ --- Home Assistant turns your Raspberry Pi (or another device) into the ultimate home automation hub. With Home Assistant, you can focus on integrating your devices and writing automations. @@ -32,14 +31,14 @@ Home Assistant users can update via the 'Supervisor' panel in the UI when a new Home Assistant dashboard with upgrade notification (under the hamburger menu -> Supervisor)

    -[Google Assistant]: /addons/google_assistant/ -[Snips.ai]: /addons/snips/ -[Let's Encrypt]: /addons/lets_encrypt/ -[Duck DNS]: /addons/duckdns/ +[google assistant]: /addons/google_assistant/ +[snips.ai]: /addons/snips/ +[let's encrypt]: /addons/lets_encrypt/ +[duck dns]: /addons/duckdns/ [forums]: https://community.home-assistant.io/c/hass-io [comm-add-ons]: https://community.home-assistant.io/tags/hassio-repository [all]: /addons/ [chat]: https://discord.gg/K3UVxJd -[Home Assistant Operating System]: https://github.com/home-assistant/operating-system -[Home Assistant Core]: https://www.home-assistant.io/docs/installation/ +[home assistant operating system]: https://github.com/home-assistant/operating-system +[home assistant core]: https://www.home-assistant.io/docs/installation/ [install]: /hassio/installation/ diff --git a/source/lovelace/index.markdown b/source/lovelace/index.markdown index 76e6ae33bd0..ef7ab61eeef 100644 --- a/source/lovelace/index.markdown +++ b/source/lovelace/index.markdown @@ -29,7 +29,7 @@ To try it yourself, check out [the demo](https://demo.home-assistant.io). ## Additional Lovelace Resources -* [Awesome HA](https://www.awesome-ha.com/#lovelace-ui) -* [Community Custom Cards](https://github.com/custom-cards) -* [Home Assistant Cards](https://home-assistant-cards.bessarabov.com/) -* [Material Design Icons](https://materialdesignicons.com/tag/community) +- [Awesome HA](https://www.awesome-ha.com/#lovelace-ui) +- [Community Custom Cards](https://github.com/custom-cards) +- [Home Assistant Cards](https://home-assistant-cards.bessarabov.com/) +- [Material Design Icons](https://materialdesignicons.com/tag/community) From f170b42a10db6d0010b443320383cde4d3831984 Mon Sep 17 00:00:00 2001 From: Stefan <37924749+stefanroelofs@users.noreply.github.com> Date: Fri, 2 Oct 2020 19:10:02 +0200 Subject: [PATCH 090/231] Update trigger.markdown (#14711) Co-authored-by: Franck Nijhof --- source/_docs/automation/trigger.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown index 7e85987601d..7c77bd094ce 100644 --- a/source/_docs/automation/trigger.markdown +++ b/source/_docs/automation/trigger.markdown @@ -286,7 +286,7 @@ automation: trigger: platform: numeric_state entity_id: sun.sun - value_template: "{{ state_attr('sun.sun', 'elevation') }}" + attribute: elevation # Can be a positive or negative number below: -4.0 action: @@ -296,7 +296,7 @@ automation: {% endraw %} -If you want to get more precise, start with the US Naval Observatory [tool](http://jaxchessnews.tripod.com/astro/id124.html) which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers. +If you want to get more precise, you can use this [solar calculator](https://www.esrl.noaa.gov/gmd/grad/solcalc/), which will help you estimate what the solar elevation will be at any specific time. Then from this, you can select from the defined twilight numbers. Although the actual amount of light depends on weather, topography and land cover, they are defined as: From 0717669ba779d410409d558d6d38f70fc255fc6b Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Fri, 2 Oct 2020 18:18:02 +0100 Subject: [PATCH 091/231] Add IoT class to Alexa integration (#14777) --- source/_integrations/alexa.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/alexa.markdown b/source/_integrations/alexa.markdown index 634767b3a31..1fcc3d6bc4d 100644 --- a/source/_integrations/alexa.markdown +++ b/source/_integrations/alexa.markdown @@ -3,6 +3,7 @@ title: Amazon Alexa description: Instructions on how to connect Alexa/Amazon Echo to Home Assistant. ha_category: - Voice +ha_iot_class: Cloud Push featured: true ha_release: '0.10' ha_codeowners: From dd5f4e7b3d6e7713ac3fd64a6f88293919d41634 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 2 Oct 2020 20:26:01 +0200 Subject: [PATCH 092/231] Remove redirect-from Jekyll plugin (#14794) --- Gemfile | 1 - Gemfile.lock | 3 --- _config.yml | 1 - 3 files changed, 5 deletions(-) diff --git a/Gemfile b/Gemfile index e08d61455ce..591c4fc1b50 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,6 @@ end group :jekyll_plugins do gem 'jekyll-paginate', '1.1.0' - gem 'jekyll-redirect-from', '0.16.0' gem 'jekyll-sitemap', '1.4.0' gem 'jekyll-time-to-read', '0.1.2' gem 'jekyll-commonmark', '1.3.1' diff --git a/Gemfile.lock b/Gemfile.lock index 9e126d48eb0..eb6b6400e3b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -50,8 +50,6 @@ GEM commonmarker (~> 0.14) jekyll (>= 3.7, < 5.0) jekyll-paginate (1.1.0) - jekyll-redirect-from (0.16.0) - jekyll (>= 3.3, < 5.0) jekyll-sass-converter (2.1.0) sassc (> 2.0.1, < 3.0) jekyll-sitemap (1.4.0) @@ -124,7 +122,6 @@ DEPENDENCIES jekyll (= 4.1.1) jekyll-commonmark (= 1.3.1) jekyll-paginate (= 1.1.0) - jekyll-redirect-from (= 0.16.0) jekyll-sitemap (= 1.4.0) jekyll-time-to-read (= 0.1.2) nokogiri (= 1.10.10) diff --git a/_config.yml b/_config.yml index 9e18a725c17..00b16da8cc7 100644 --- a/_config.yml +++ b/_config.yml @@ -45,7 +45,6 @@ commonmark: highlighter: none plugins: - - jekyll-redirect-from - jekyll-time-to-read paginate: 10 # Posts per page on the blog index From 09fa5b03a190c424974fd9ff26877e3365ac6a71 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Fri, 2 Oct 2020 22:07:43 +0200 Subject: [PATCH 093/231] Fix broken links on website (part 4) (#14799) --- source/_integrations/neato.markdown | 26 +++++++------------ ...fxtrx-blinkstick-and-snmp-support.markdown | 4 +-- ...9-insteon-lifx-twitter-and-zigbee.markdown | 2 +- ...02-11-alert-appletv-mqtt-yeelight.markdown | 4 +-- source/_posts/2017-09-09-release-53.markdown | 6 ++--- source/_posts/2018-03-30-release-66.markdown | 6 ++--- .../_posts/2019-04-15-hassio-ingress.markdown | 2 +- source/_posts/2019-10-30-release-101.markdown | 3 +-- source/_redirects | 4 +-- 9 files changed, 24 insertions(+), 33 deletions(-) diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown index d8e768795c2..bb193ef5437 100644 --- a/source/_integrations/neato.markdown +++ b/source/_integrations/neato.markdown @@ -15,7 +15,14 @@ ha_codeowners: ha_domain: neato --- -The `neato` integration allows you to control your [Neato Botvac Connected Robots](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). +The `neato` integration allows you to control your [Neato Botvac Connected Robots][botvac-connected]. + +There is support for the following platform types within Home Assistant: + +- **Camera** - allows you to view the latest cleaning map. +- **Sensor** - allows you to view the battery level. +- **Switch** - allows you to enable or disable the schedule. +- [**Vacuum**](#vacuum) To activate `neato` in your installation, you can set it up from the integration screen or add it to your `configuration.yaml` file. @@ -61,7 +68,7 @@ After the update to firmware 4.0 (which adds cleaning maps) there is also suppor ## Vacuum -The `neato` vacuum platform allows you to control your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/). +The `neato` vacuum platform allows you to control your [Neato Botvac Connected][botvac-connected]. The status will contain attributes on the robots last clean session.
    @@ -104,17 +111,4 @@ Some information about the capabilities might be found on the [Neato Developer P | `category` | yes | Whether to use a persistent map or not for cleaning (i.e., No go lines): 2 for no map, 4 for map. Default to using map if not set (and fallback to no map if no map is found). | | `zone` | yes | Only supported on the Botvac D7. Name of the zone to clean from the Neato app. Use unique names for the zones to avoid the wrong zone from running. Defaults to no zone i.e., complete house cleanup. | - -## Camera - -The `neato` camera platform allows you to view the latest cleaning map of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -## Sensor - -The `neato` sensor platform allows you to view the battery level for your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -## Switch - -The `neato` switch platform allows you to enable or disable the schedule of your [Neato Botvac Connected](https://www.neatorobotics.com/robot-vacuum/botvac-connected-series/botvac-connected/). - -To add `neato` switch, camera and vacuum to your installation, follow instructions above. +[botvac-connected]: https://neatorobotics.com/products \ No newline at end of file diff --git a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown index 4fa16538b3d..c86fe872ab9 100644 --- a/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown +++ b/source/_posts/2015-10-11-rfxtrx-blinkstick-and-snmp-support.markdown @@ -19,8 +19,8 @@ This release also includes some new platforms (because they keep coming!): - Light: [blinkstick platform](/integrations/blinksticklight) added ([@alanbowman](https://github.com/alanbowman)) - Device Tracker: [SNMP platform](/integrations/snmp) added ([@tomduijf](https://github.com/tomduijf)) - - Light: [rfxtrx platform](/integrations/light.rfxtrx/) added ([@badele](https://github.com/badele)) - - Switch: [rfxtrx platform](/integrations/switch.rfxtrx/) added ([@badele](https://github.com/badele)) + - Light: [rfxtrx platform](/integrations/rfxtrx#lights) added ([@badele](https://github.com/badele)) + - Switch: [rfxtrx platform](/integrations/rfxtrx#switches) added ([@badele](https://github.com/badele)) - Notify: [telegram platform](/integrations/telegram) added ([@fabaff](https://github.com/fabaff)) Also, the media player was extended by [@maddox](https://github.com/maddox) to support the play media command. This has been implemented for the [iTunes platform](/integrations/itunes). diff --git a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown index a51912801d5..d55ab615381 100644 --- a/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown +++ b/source/_posts/2016-01-29-insteon-lifx-twitter-and-zigbee.markdown @@ -49,7 +49,7 @@ Example of the new views in the frontend. Learn m [Nest]: /integrations/nest/ [onewire]: /integrations/onewire [OwnTracks]: /integrations/owntracks -[Rfxtrx]: /integrations/light.rfxtrx/ +[Rfxtrx]: /integrations/rfxtrx#lights [Statsd]: /integrations/statsd/ [Template]: /integrations/template [Thermostat]: /integrations/climate/ diff --git a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown index b2ecfa575e7..6b65b125c02 100644 --- a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown +++ b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown @@ -20,7 +20,7 @@ Another Saturday, another release! The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new [WebSockets API][websocket-api] instead of the [EventStream API][event-stream-api]. ### Custom state card UI -A nice new feature is the possibility to create [custom state cards][custom-ui] in the frontend. Go ahead and write your own state card for [lights][light], sensors, locks, etc. +A nice new feature is the possibility to create [custom state cards][custom-ui-cards] in the frontend. Go ahead and write your own state card for [lights][light], sensors, locks, etc. ### MQTT discovery MQTT now has [discovery][mqtt-discovery] support which is different than our [`discovery`][discovery] component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant. @@ -197,7 +197,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [apiai]: /integrations/dialogflow [apple-tv]: /integrations/apple_tv [arwn]: /integrations/arwn -[custom-ui]: /developers/frontend_creating_custom_ui/ +[custom-ui-cards]: /developers/frontend_creating_custom_ui [discovery]: /integrations/discovery/ [face-detect]: /integrations/microsoft_face_detect [ffmpeg-bin]: /integrations/ffmpeg_motion diff --git a/source/_posts/2017-09-09-release-53.markdown b/source/_posts/2017-09-09-release-53.markdown index 00b001a17c5..3ac467737d9 100644 --- a/source/_posts/2017-09-09-release-53.markdown +++ b/source/_posts/2017-09-09-release-53.markdown @@ -372,7 +372,7 @@ frontend: [cover.abode docs]: /integrations/abode [cover.homematic docs]: /integrations/homematic [cover.lutron_caseta docs]: /integrations/lutron_caseta/ -[cover.rfxtrx docs]: /integrations/cover.rfxtrx/ +[cover.rfxtrx docs]: /integrations/rfxtrx#covers [cover.xiaomi docs]: /integrations/cover.xiaomi_aqara/ [cover.knx docs]: /integrations/cover.knx/ [device_tracker.geofency docs]: /integrations/geofency @@ -389,7 +389,7 @@ frontend: [light.lutron_caseta docs]: /integrations/lutron_caseta/ [light.mqtt docs]: /integrations/light.mqtt/ [light.xiaomi_philipslight docs]: /integrations/light.xiaomi_miio/ -[light.rfxtrx docs]: /integrations/light.rfxtrx/ +[light.rfxtrx docs]: /integrations/rfxtrx#lights [light.tradfri docs]: /integrations/tradfri [light.knx docs]: /integrations/light.knx/ [light.zha docs]: /integrations/zha @@ -435,7 +435,7 @@ frontend: [switch.homematic docs]: /integrations/homematic [switch.lutron_caseta docs]: /integrations/lutron_caseta/ [switch.rest docs]: /integrations/switch.rest/ -[switch.rfxtrx docs]: /integrations/switch.rfxtrx/ +[switch.rfxtrx docs]: /integrations/rfxtrx#switches [switch.knx docs]: /integrations/switch.knx/ [telegram_bot docs]: /integrations/telegram_bot/ [tesla docs]: /integrations/tesla/ diff --git a/source/_posts/2018-03-30-release-66.markdown b/source/_posts/2018-03-30-release-66.markdown index 939ae2a063f..a56a7cc1905 100644 --- a/source/_posts/2018-03-30-release-66.markdown +++ b/source/_posts/2018-03-30-release-66.markdown @@ -27,7 +27,7 @@ A quick note if you are using Philips Hue and a Hue custom component: it will no - Adding Foobot device sensor ([@reefab] - [#12417]) ([sensor.foobot docs]) (new-platform) - Added Stride notification component ([@BioSehnsucht] - [#13221]) ([notify docs]) (new-platform) - Xiaomi MiIO Sensor: Xiaomi Air Quality Monitor (PM2.5) integration ([@syssi] - [#13264]) ([sensor.xiaomi_miio docs]) (new-platform) -- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) ([homematicip docs]) ([sensor.homematicip docs]) (new-platform) +- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) (new-platform) - Support for security systems controlled by IFTTT ([@maxclaey] - [#12975]) ([alarm_control_panel.ifttt docs]) (new-platform) - Zigbee fan ([@igorbernstein2] - [#12289]) ([zha docs]) ([fan.zha docs]) (new-platform) - Adding a discoverable Samsung Syncthru Printer sensor platform ([@nielstron] - [#13134]) ([sensor.syncthru docs]) (new-platform) @@ -149,7 +149,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Delete .gitmodules ([@pvizeli] - [#13295]) - Update to latest python-nest ([@cburgess] - [#12590]) ([nest docs]) - Upgrade async_timeout to 2.0.1 ([@fabaff] - [#13290]) -- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) ([homematicip docs]) ([sensor.homematicip docs]) (new-platform) +- Add initial support fo HomematicIP components ([@mxworm] - [#12761]) (new-platform) - Added Time based SMA to Filter Sensor ([@dgomes] - [#13104]) ([sensor.filter docs]) - Support for security systems controlled by IFTTT ([@maxclaey] - [#12975]) ([alarm_control_panel.ifttt docs]) (new-platform) - Add ecobee fan mode ([@uchagani] - [#12732]) ([ecobee docs]) ([climate.ecobee docs]) @@ -476,7 +476,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [history docs]: /integrations/history/ [homekit docs]: /integrations/homekit/ [homematic docs]: /integrations/homematic/ -[homematicip docs]: /integrations/homematicip/ [homematicip_cloud docs]: /integrations/homematicip_cloud/ [http docs]: /integrations/http/ [hue docs]: /integrations/hue/ @@ -526,7 +525,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.foobot docs]: /integrations/foobot [sensor.glances docs]: /integrations/glances [sensor.homematic docs]: /integrations/homematic -[sensor.homematicip docs]: /integrations/homematicip/ [sensor.homematicip_cloud docs]: /integrations/homematicip_cloud/ [sensor.lacrosse docs]: /integrations/lacrosse [sensor.mqtt docs]: /integrations/sensor.mqtt/ diff --git a/source/_posts/2019-04-15-hassio-ingress.markdown b/source/_posts/2019-04-15-hassio-ingress.markdown index 296e9945619..b64b04e4169 100644 --- a/source/_posts/2019-04-15-hassio-ingress.markdown +++ b/source/_posts/2019-04-15-hassio-ingress.markdown @@ -83,4 +83,4 @@ We found a last minute issue impacting Firefox based browsers (including the Tor [InfluxDB]: https://github.com/hassio-addons/addon-influxdb#readme [SSH & Web Terminal]: https://github.com/hassio-addons/addon-ssh#readme [AdGuard Home]: https://github.com/hassio-addons/addon-adguard-home#readme -[dev-docs]: https://developers.home-assistant.io/docs/en/next/hassio_addon_presentation.html#ingress +[dev-docs]: https://developers.home-assistant.io/docs/add-ons/presentation/#ingress diff --git a/source/_posts/2019-10-30-release-101.markdown b/source/_posts/2019-10-30-release-101.markdown index b24b0fd5d1e..c0d6b9ff1c3 100644 --- a/source/_posts/2019-10-30-release-101.markdown +++ b/source/_posts/2019-10-30-release-101.markdown @@ -385,7 +385,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] - Move imports in github component ([@mnigbur] - [#27406]) ([github docs]) - Move imports in eufy component ([@mnigbur] - [#27405]) ([eufy docs]) - Move imports in apple_tv component ([@Quentame] - [#27356]) ([apple_tv docs]) -- Remove hydroquebec integration (ADR-0004) ([@frenck] - [#27407]) ([hydroquebec docs]) +- Remove hydroquebec integration (ADR-0004) ([@frenck] - [#27407]) - Standardize times in time sensors Jewish calendar ([@tsvi] - [#26940]) ([jewish_calendar docs]) (breaking change) - Revert "Allow Google Assistant relative volume control (#26585)" ([@balloob] - [#27416]) ([google_assistant docs]) - Bump aiohttp to 3.6.2 ([@frenck] - [#27409]) @@ -1676,7 +1676,6 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [http docs]: /integrations/http/ [htu21d docs]: /integrations/htu21d/ [hue docs]: /integrations/hue/ -[hydroquebec docs]: /integrations/hydroquebec/ [ifttt docs]: /integrations/ifttt/ [ign_sismologia docs]: /integrations/ign_sismologia/ [image_processing docs]: /integrations/image_processing/ diff --git a/source/_redirects b/source/_redirects index 2a62255183b..675d96acec5 100644 --- a/source/_redirects +++ b/source/_redirects @@ -46,12 +46,12 @@ /developers/frontend_add_card https://developers.home-assistant.io/docs/frontend/extending/adding-state-card /developers/frontend_add_more_info https://developers.home-assistant.io/docs/frontend/extending/adding-more-info-dialogs /developers/frontend_creating_custom_panels https://developers.home-assistant.io/docs/frontend/custom-ui/creating-custom-panels -/developers/frontend_creating_custom_ui https://developers.home-assistant.io/docs/frontend_creating_custom_ui/ +/developers/frontend_creating_custom_ui https://developers.home-assistant.io/docs/frontend/custom-ui/lovelace-custom-card /developers/frontend https://developers.home-assistant.io/docs/frontend /developers/hassio/addon_communication https://developers.home-assistant.io/docs/hassio_addon_communication/ /developers/hassio/addon_config https://developers.home-assistant.io/docs/hassio_addon_config/ /developers/hassio/addon_development https://developers.home-assistant.io/docs/hassio_addon_index/ -/developers/hassio/addon_presentation https://developers.home-assistant.io/docs/hassio_addon_presentation/ +/developers/hassio/addon_presentation https://developers.home-assistant.io/docs/add-ons/presentation/ /developers/hassio/addon_publishing https://developers.home-assistant.io/docs/hassio_addon_publishing/ /developers/hassio/addon_repository https://developers.home-assistant.io/docs/hassio_addon_repository/ /developers/hassio/addon_testing https://developers.home-assistant.io/docs/hassio_addon_testing/ From 7556d56b45498b5b48b508e8bca6cac291264850 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Sat, 3 Oct 2020 00:00:41 +0200 Subject: [PATCH 094/231] Fix broken links on website (part 5) (#14802) --- source/_integrations/knx.markdown | 2 +- .../2016-08-27-notifications-hue-fake-unification.markdown | 2 +- source/_posts/2019-01-09-release-85.markdown | 3 +-- source/_posts/2019-01-23-release-86.markdown | 6 ++---- source/_posts/2019-10-10-release-100.markdown | 1 - source/_posts/2019-10-30-release-101.markdown | 2 +- source/_posts/2019-11-20-release-102.markdown | 1 - source/_posts/2019-12-11-release-103.markdown | 7 +++---- source/_posts/2020-02-05-release-105.markdown | 2 +- 9 files changed, 10 insertions(+), 16 deletions(-) diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 3a3315b5f4f..8a43ab8e383 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -7,7 +7,7 @@ ha_category: - Climate - Cover - Light - - Notify + - Notifications - Scene - Sensor - Switch diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown index fb66486a0df..54dd80b5bd7 100644 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown @@ -268,7 +268,7 @@ Talk to you soon on Discord and in your pull request comments! [forecast]: /integrations/darksky [Bluetooth]: /integrations/bluetooth_le_tracker [Slack]: /integrations/slack -[template]: /integrations/generic +[template]: /integrations/generic_ip_camera [Bug]: /integrations/wink/ [support]: /integrations/homematic/ [node]: /integrations/zwave/ diff --git a/source/_posts/2019-01-09-release-85.markdown b/source/_posts/2019-01-09-release-85.markdown index 3347db6f216..a4c2b2bd4da 100644 --- a/source/_posts/2019-01-09-release-85.markdown +++ b/source/_posts/2019-01-09-release-85.markdown @@ -205,7 +205,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add native ESPHome API service call feature ([@OttoWinter] - [#19401]) ([esphome docs]) - Upgade colorlog to 4.0.2 ([@fabaff] - [#19390]) - Provide charging indicator for mychevy ([@sdague] - [#19348]) ([mychevy docs]) ([sensor.mychevy docs]) -- Add GTT Sensor ([@eliseomartelli] - [#18449]) ([sensor.gtt docs]) (new-platform) +- Add GTT Sensor ([@eliseomartelli] - [#18449]) (new-platform) - Upgrade volvooncall to 0.8.7 ([@molobrakos] - [#19398]) ([volvooncall docs]) - Cast lametric cycles parameter to int ([@deftdawg] - [#19370]) ([notify docs]) - Satel integra monitor outputs ([@c-soft] - [#19149]) ([satel_integra docs]) ([binary_sensor.satel_integra docs]) @@ -846,7 +846,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.geo_rss_events docs]: /integrations/geo_rss_events [sensor.glances docs]: /integrations/glances [sensor.gtfs docs]: /integrations/gtfs -[sensor.gtt docs]: /integrations/gtt [sensor.homematic docs]: /integrations/homematic [sensor.homematicip_cloud docs]: /integrations/homematicip_cloud/ [sensor.huawei_lte docs]: /integrations/huawei_lte#sensor diff --git a/source/_posts/2019-01-23-release-86.markdown b/source/_posts/2019-01-23-release-86.markdown index e5dfc93a7a3..e77c94e565a 100644 --- a/source/_posts/2019-01-23-release-86.markdown +++ b/source/_posts/2019-01-23-release-86.markdown @@ -61,7 +61,7 @@ Another noteworthy breaking change (sorry!), is that the automation `time` trigg ## Release 0.86.1 - January 23 - Hotfix for blink initialization failure. Fixes #20335 ([@fronzbot] - [#20351]) ([blink docs]) -- [FIX] Time reporting incorrect in sensor.gtt ([@eliseomartelli] - [#20362]) ([sensor.gtt docs]) +- [FIX] Time reporting incorrect in sensor.gtt ([@eliseomartelli] - [#20362]) - Fix error when API doesn't return a forecast. ([@dgomes] - [#20365]) - Fix restore state crashing invalid entity ID ([@balloob] - [#20367]) - Calling save before load would crash Lovelace storage ([@balloob] - [#20368]) @@ -76,7 +76,6 @@ Another noteworthy breaking change (sorry!), is that the automation `time` trigg [@eliseomartelli]: https://github.com/eliseomartelli [@fronzbot]: https://github.com/fronzbot [blink docs]: /integrations/blink/ -[sensor.gtt docs]: /integrations/gtt ## Release 0.86.2 - January 24 @@ -290,7 +289,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Added partial detection to async_add_job ([@andrewsayre] - [#20119]) - Fix tellduslive discovery and auth issues ([@fredrike] - [#20023]) ([tellduslive docs]) - Use voluptuous to perform validation for the geofency webhook ([@rohankapoorcom] - [#20067]) ([geofency docs]) -- fixed gtt to report isotime ([@eliseomartelli] - [#20128]) ([sensor.gtt docs]) +- fixed gtt to report isotime ([@eliseomartelli] - [#20128]) - Move MQTT platforms under the component ([@emontnemery] - [#20050]) ([mqtt docs]) - Split time_pattern triggers from time trigger ([@armills] - [#19825]) ([automation.interval docs]) ([automation.time docs]) (breaking change) - Change deCONZ to embedded platforms ([@Kane610] - [#20113]) ([deconz docs]) @@ -676,7 +675,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [sensor.fibaro docs]: /integrations/fibaro [sensor.flunearyou docs]: /integrations/flunearyou [sensor.freebox docs]: /integrations/freebox#sensor -[sensor.gtt docs]: /integrations/gtt [sensor.hive docs]: /integrations/hive#sensor [sensor.imap_email_content docs]: /integrations/imap_email_content/ [sensor.influxdb docs]: /integrations/influxdb#sensor diff --git a/source/_posts/2019-10-10-release-100.markdown b/source/_posts/2019-10-10-release-100.markdown index 7c386062eae..f50b8720265 100644 --- a/source/_posts/2019-10-10-release-100.markdown +++ b/source/_posts/2019-10-10-release-100.markdown @@ -908,7 +908,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [evohome docs]: /integrations/evohome/ [fedex docs]: /integrations/fedex/ [frontend docs]: /integrations/frontend/ -[generic docs]: /integrations/generic/ [geniushub docs]: /integrations/geniushub/ [geonetnz_quakes docs]: /integrations/geonetnz_quakes/ [glances docs]: /integrations/glances/ diff --git a/source/_posts/2019-10-30-release-101.markdown b/source/_posts/2019-10-30-release-101.markdown index c0d6b9ff1c3..d47bfca302a 100644 --- a/source/_posts/2019-10-30-release-101.markdown +++ b/source/_posts/2019-10-30-release-101.markdown @@ -1654,7 +1654,7 @@ The **holiday name** sensor has been renamed to **holiday**. ([@tsvi] - [#27654] [glances docs]: /integrations/glances/ [gntp docs]: /integrations/gntp/ [goalfeed docs]: /integrations/goalfeed/ -[google docs]: /integrations/google/ +[google docs]: /integrations/calendar.google/ [google_assistant docs]: /integrations/google_assistant/ [google_travel_time docs]: /integrations/google_travel_time/ [gpsd docs]: /integrations/gpsd/ diff --git a/source/_posts/2019-11-20-release-102.markdown b/source/_posts/2019-11-20-release-102.markdown index c430b62fbaa..95e272e9402 100644 --- a/source/_posts/2019-11-20-release-102.markdown +++ b/source/_posts/2019-11-20-release-102.markdown @@ -887,7 +887,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [geonetnz_quakes docs]: /integrations/geonetnz_quakes/ [google_assistant docs]: /integrations/google_assistant/ [greeneye_monitor docs]: /integrations/greeneye_monitor/ -[gtt docs]: /integrations/gtt/ [hangouts docs]: /integrations/hangouts/ [hassio docs]: /integrations/hassio/ [here_travel_time docs]: /integrations/here_travel_time/ diff --git a/source/_posts/2019-12-11-release-103.markdown b/source/_posts/2019-12-11-release-103.markdown index c78563373d4..04ccdf2b4bf 100644 --- a/source/_posts/2019-12-11-release-103.markdown +++ b/source/_posts/2019-12-11-release-103.markdown @@ -224,7 +224,7 @@ All services for use in Home Assistant are moved to their integration naming spa - **Z-Wave** - This changes the primary command class for z-wave thermostats in discovery schemas from `COMMAND_CLASS_THERMOSTAT_SETPOINT` to `COMMAND_CLASS_THERMOSTAT_MODE`. This will cause a typical dual setpoint thermostat to be correctly represented as a single entity. - ([@oandrew] - [#27040]) ([zwave docs]) - **Transmission** - Added host field to `add_torrent` service in order to support multiple Transmission instances. ([@engrbm87] - [#28653]) ([transmission docs]) - **Opentherm Gateway** - Adds device support. This change breaks enabled `sensor` and `binary_sensor` entities, which are now disabled by default and can be re-enabled through the Devices panel. It also breaks `entity_id` of the climate entity in some configurations. The `entity_id` is now based on the `gateway_id` rather than the configured `name` to guarantee uniqueness. - ([@mvn23] - [#28722]) ([opentherm_gw docs]) -- **Intent** - If you use the built-in intents for shopping list, cover or light, you need to add `intent:` to your `configuration.yaml`. - ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([intent docs]) ([light docs]) ([shopping_list docs]) +- **Intent** - If you use the built-in intents for shopping list, cover or light, you need to add `intent:` to your `configuration.yaml`. - ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([light docs]) ([shopping_list docs]) - **Emulated Hue** - As previous `entityid` were not Hue compliant, `emulated_hue_ids.json` will need to be cleared out and devices re-discovered and configured in Alexa / Google Home. This is a necessary growing pain to move the integration forward in a Hue-compliant fashion. - ([@NobleKangaroo] - [#28317]) ([emulated_hue docs]) - **Miflora** - Values for an unresponsive device aren't reported any more as if they were valid, so it's possible to send an alert. - ([@ferbar] - [#29276]) ([miflora docs]) @@ -601,7 +601,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - move wink service definitions from lock to wink domain ([@raman325] - [#29137]) ([wink docs]) (breaking change) - Update service domain for lifx from 'light' to 'lifx' ([@raman325] - [#29136]) ([lifx docs]) (breaking change) - move service constants to const.py and move channels services to channels domain ([@raman325] - [#29139]) ([channels docs]) (breaking change) -- 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) - Update service domain for todoist from 'calendar' to 'todoist' ([@raman325] - [#29131]) ([todoist docs]) (breaking change) - update envisalink service domain ([@raman325] - [#29126]) ([envisalink docs]) (breaking change) - Update service domain for mysensors from 'switch' to 'mysensor… ([@raman325] - [#29147]) ([mysensors docs]) @@ -705,7 +705,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Move imports to top for seventeentrack ([@springstan] - [#29264]) ([seventeentrack docs]) - Improve naming and attrs of hostnameless Huawei LTE device tracker entities ([@scop] - [#29281]) ([huawei_lte docs]) - Limit parallel requests to Philips Hue ([@bramkragten] - [#29189]) ([hue docs]) -- Move intent registration to own integration ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([intent docs]) ([light docs]) ([shopping_list docs]) (breaking change) +- Move intent registration to own integration ([@balloob] - [#29280]) ([conversation docs]) ([cover docs]) ([light docs]) ([shopping_list docs]) (breaking change) - Overhaul Emulated Hue ([@NobleKangaroo] - [#28317]) ([emulated_hue docs]) (breaking change) - Add name option to season sensor ([@springstan] - [#29302]) ([season docs]) - Add capability-attributes ([@balloob] - [#29306]) ([light docs]) @@ -1581,7 +1581,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [iglo docs]: /integrations/iglo/ [ihc docs]: /integrations/ihc/ [input_datetime docs]: /integrations/input_datetime/ -[intent docs]: /integrations/intent/ [intent_script docs]: /integrations/intent_script/ [ios docs]: /integrations/ios/ [iota docs]: /integrations/iota/ diff --git a/source/_posts/2020-02-05-release-105.markdown b/source/_posts/2020-02-05-release-105.markdown index bbdcc333b51..1101061275d 100644 --- a/source/_posts/2020-02-05-release-105.markdown +++ b/source/_posts/2020-02-05-release-105.markdown @@ -1448,7 +1448,7 @@ Hats over your heart for these shuttered integrations. Pour one out for: [fritzbox_netmonitor docs]: /integrations/fritzbox_netmonitor/ [frontend docs]: /integrations/frontend/ [garmin_connect docs]: /integrations/garmin_connect/ -[generic docs]: /integrations/generic/ +[generic docs]: /integrations/generic_ip_camera/ [generic_thermostat docs]: /integrations/generic_thermostat/ [geniushub docs]: /integrations/geniushub/ [geonetnz_volcano docs]: /integrations/geonetnz_volcano/ From cdfc57c4751f9ecc963c1bf5ecb2b593b99c73db Mon Sep 17 00:00:00 2001 From: Aidan Timson Date: Fri, 2 Oct 2020 23:30:48 +0100 Subject: [PATCH 095/231] Remove dead link (#14803) --- source/_integrations/kef.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/kef.markdown b/source/_integrations/kef.markdown index 01f3c1348e6..03ed4f1384b 100644 --- a/source/_integrations/kef.markdown +++ b/source/_integrations/kef.markdown @@ -10,7 +10,7 @@ ha_codeowners: ha_domain: kef --- -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. +The `kef` platform allows you to control the KEF LS50 Wireless and [KEF LSX](https://international.kef.com/products/lsx) speakers from Home Assistant. Supported devices: From 77a099ebd1d79e11c0ee0da6215c9186c130d20d Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 08:49:06 +0200 Subject: [PATCH 096/231] Add IoT class for Alert (#14810) --- source/_integrations/alert.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown index a8f75b5db61..6675feff744 100644 --- a/source/_integrations/alert.markdown +++ b/source/_integrations/alert.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup automatic alerts within Home Assistant ha_category: - Automation ha_release: 0.38 +ha_iot_class: Local Push ha_quality_scale: internal ha_domain: alert --- From b7787c16bdd73f34e9e6378727239f83c2af614a Mon Sep 17 00:00:00 2001 From: boc-the-git <3479092+boc-the-git@users.noreply.github.com> Date: Sat, 3 Oct 2020 16:50:54 +1000 Subject: [PATCH 097/231] Fix Typo input_dateteime (#14807) --- source/_integrations/input_datetime.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index 30618331ae9..f3acecc86fd 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -104,7 +104,7 @@ To set both the date and time in the same call, use `date` and `time` together, #### input_datetime.reload -`input_dateteime.reload` service allows one to reload `input_datetime`'s configuration without restarting Home Assistant itself. +`input_datetime.reload` service allows one to reload `input_datetime`'s configuration without restarting Home Assistant itself. ## Examples From bcbda7a5df77c5842074d403a5e999b05e791d98 Mon Sep 17 00:00:00 2001 From: Chase <43818313+ab3lson@users.noreply.github.com> Date: Sat, 3 Oct 2020 00:54:14 -0600 Subject: [PATCH 098/231] Styling changes (#14745) --- source/_integrations/esphome.markdown | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/source/_integrations/esphome.markdown b/source/_integrations/esphome.markdown index e8d01bc80d7..6b3842e919e 100644 --- a/source/_integrations/esphome.markdown +++ b/source/_integrations/esphome.markdown @@ -12,14 +12,15 @@ ha_codeowners: ha_domain: esphome --- -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). +This integration allows [ESPHome](https://esphome.io) devices to connect directly to Home Assistant with the [native ESPHome API](https://esphome.io/components/api.html). -## Set up the integration via the integrations screen +## Configuration -Menu: *Configuration* > *Integrations* +An ESPHome device can be set up via the **Integrations** menu: **Configuration** > **Integrations**: -Press on **ESPHome** and configure the integration: +* Click the orange `+` on the lower-right of the screen and select **ESPHome** -* Enter the address and port of your node. For example, if the node is called `livingroom`, the address would be `livingroom.local` and the port number would be `6053` (default). - -Home Assistant will then try to connect to the device. If you have a password set, Home Assistant will also ask you for it. After that, all the entities you have configured on your ESPHome node will automatically appear in Home Assistant. +* Complete the dialog box and click `SUBMIT`. + * **Host**: If the device is called `livingroom` in ESPHome, the hostname would be `livingroom.local` + * **Port**: The default port is `6053` + * If the node has a password set, Home Assistant prompt for it. From a4f965ea42d97a6dd0956c36de9d482bf4939ffe Mon Sep 17 00:00:00 2001 From: Chase <43818313+ab3lson@users.noreply.github.com> Date: Sat, 3 Oct 2020 00:55:05 -0600 Subject: [PATCH 099/231] Styling and grammar fixes (#14747) Co-authored-by: Franck Nijhof --- source/_integrations/spotify.markdown | 31 +++++++++++++-------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index 5cba5f98a95..4e4e6cb5752 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -12,25 +12,25 @@ ha_codeowners: ha_domain: spotify --- -The `spotify` media player integration allows you to control [Spotify](https://www.spotify.com/) playback from Home Assistant. +The Spotify media player integration allows you to control [Spotify](https://www.spotify.com/) playback from Home Assistant. ## Prerequisites - Spotify account -- Spotify application, properly configured (see below). +- Spotify application configured for Home Assistant (see [below](#create-a-spotify-application))
    - Controlling the Spotify integration (pause, play, next, etc.) requires a Premium account. - If you do not have a Premium account, the integration in the frontend will not show the controls. + Spotify integrated media controls (pause, play, next, etc.) requires a Premium account. + If you do not have a Premium account, the integration's frontend will not show the controls.
    -To create the required Spotify application: +### Create a Spotify application - Login to [Spotify Developer](https://developer.spotify.com). - Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page. - Select **Create An App**. Enter any name and description. - Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. -- On the Spotify page, enter the **Edit Settings** dialog of your newly created application and add a **Redirect URI**: +- On the Spotify page, enter the **Edit Settings** dialog of your newly created application and add a *Redirect URI*: - If you are not using SSL: `http://:/auth/external/callback` - If you are using SSL: `https://:/auth/external/callback` - Click **Save** after adding the URI. @@ -41,7 +41,7 @@ To create the required Spotify application: ## Configuration -To add Spotify to your installation, add the following to your `configuration.yaml` file: +To add Spotify to Home Assistant, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -63,12 +63,11 @@ client_secret: ## Activating the Spotify integration -After you have set up the above: - - Go to the **Configurations** page in the Home Assistant frontend. -- Go to **Integrations**. -- Add a new **Spotify** integration. -- Follow the steps shown to authenticate Home Assistant with your Spotify account. +- Click on **Integrations**. +- Click the orange **+** on the bottom-right. +- Click on "Spotify". +- Once the new Spotify tab opens, enter your Spotify credentials and allow Home Assistant to access your Spotify account.
    @@ -82,18 +81,18 @@ After you have set up the above: ## Using multiple Spotify accounts The integration support multiple Spotify accounts at once. You don't need to -create another Spotify Application in the Spotify Developer portal and no +create another Spotify application in the Spotify Developer Portal and no modification to the `configuration.yaml` file is needed. Multiple Spotify -accounts can be linked on a _single_ Spotify application. +accounts can be linked to a _single_ Spotify application. To add an additional Spotify account to Home Assistant, repeat _only_ the steps in the [Activating the Spotify integration](#activating-the-spotify-integration) -chapter. However, make sure you go to the Spotify website and log out before +section. However, make sure you go to the Spotify website and log out before you do so. ## URI Links for Playlists -You can send playlists to Spotify using the `"media_content_type": "playlist"`, which are part of the +You can send playlists to Spotify using the `"media_content_type": "playlist"`, which is part of the [media_player.play_media](/integrations/media_player/#service-media_playerplay_media) service. The `media_content_id` can be obtained from the Spotify desktop-app by clicking on the more options ("...") next to the album art picture, selecting "share" and then "Copy Spotify URI" or "Copy Playlist Link" (also available in the Spotify phone and web app). From ec0af892f0c8c92e614969eadac5d11fd5d97046 Mon Sep 17 00:00:00 2001 From: Chase <43818313+ab3lson@users.noreply.github.com> Date: Sat, 3 Oct 2020 01:47:02 -0600 Subject: [PATCH 100/231] Grammar, spelling and styling edits (#14741) Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/plex.markdown | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown index 8fd9bd94b10..837dae45417 100644 --- a/source/_integrations/plex.markdown +++ b/source/_integrations/plex.markdown @@ -13,19 +13,20 @@ ha_codeowners: ha_domain: plex --- -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. +The Plex integration allows you to connect Home Assistant to a [Plex Media Server](https://plex.tv). Once configured, actively streaming [Plex Clients](https://www.plex.tv/apps-devices/) show up as [Media Players](/integrations/media_player/) and report playback status via a [Sensor](/integrations/sensor/) in Home Assistant. Media Players will allow you to control media playback and see the current playing item. -Support for playing music directly on linked [Sonos](/integrations/sonos/) speakers is also available for users with an active [Plex Pass](https://www.plex.tv/plex-pass/) subscription. More information [here](#sonos-playback). +Support for playing music directly on linked [Sonos](/integrations/sonos/) speakers is available for users with an active [Plex Pass](https://www.plex.tv/plex-pass/) subscription. More information [here](#sonos-playback). There is currently support for the following device types within Home Assistant: - [Sensor](#sensor) - [Media Player](#media-player) -If your Plex server has been claimed by a Plex account via the [claim interface](https://plex.tv/claim), Home Assistant will require authentication to connect. +If a Plex server has been claimed by a Plex account via the [claim interface](https://plex.tv/claim), Home Assistant will require authentication to connect. -The Plex integration is set up via **Configuration** -> **Integrations**. You will be redirected to the [Plex](https://plex.tv) website to sign in with your Plex account. Once access is granted, Home Assistant will connect to the server linked to the associated account. If multiple Plex servers are available on the account, you will be prompted to complete the configuration by selecting the desired server on the Integrations page. Home Assistant will show as an authorized device on the [Plex Web](https://app.plex.tv/web/app) interface under **Settings** -> **Authorized Devices**. +### Configuration +The Plex integration is set up via **Configuration** -> **Integrations**. During the configuration, you will be redirected to the [Plex](https://plex.tv) website to sign in with your Plex account. Once access is granted, Home Assistant will connect to the Plex server linked to the provided account. If multiple Plex servers are available on the account, you will be prompted to complete the configuration by selecting the desired server on the **Integrations** page. Upon completeion, Home Assistant will be displayed as an authorized device on the [Plex Web](https://app.plex.tv/web/app) interface under **Settings** -> **Authorized Devices**. ### Integration Options @@ -39,7 +40,6 @@ Several options are provided to adjust the behavior of `media_player` entities. **Ignore Plex Web clients**: Do not create `media_player` entities for Plex Web clients. - ### Manual Configuration Alternatively, you can manually configure a Plex server connection by selecting the "Configure Plex server manually" when configuring a Plex integration. This option is only available to users in "Advanced Mode". This will allow you to specify the server connection options which will be validated before setup is completed. The available options are described below: @@ -54,17 +54,15 @@ Alternatively, you can manually configure a Plex server connection by selecting **Token**: A valid authorization token for your Plex server. If provided without 'Host', a connection URL will be retreived from Plex. - ## Sensor -The `plex` sensor platform will monitor activity on a given Plex Media Server. It will create a sensor that shows the number of currently watching users as the state. If you click the sensor for more details, it will show you who is watching what. - +The Plex sensor platform monitors activity on a given Plex Media Server. The sensor state provides the a count of users currently watching media from the Plex server. Clicking the sensor shows who is watching what media. ## Media Player -The `plex` media_player platform will create Media Player entities for each connected client device. These entities will display media information, playback progress, and playback controls if supported by the device. +The Plex media player platform will create Media Player entities for each connected client device. These entities will display media information, playback progress, and playback controls (if supported by the streaming device). -By default the Plex integration will create Media Player entities for all local, managed, and shared users on the Plex server. To customize which users or client types to monitor, adjust the "*Monitored users*", "*Ignore new managed/shared users*", and "*Ignore Plex Web clients*" options described under [Integration Options](#integration-options). +By default, the Plex integration will create Media Player entities for all local, managed, and shared users on the Plex server. To customize which users or client types to monitor, adjust the "*Monitored users*", "*Ignore new managed/shared users*", and "*Ignore Plex Web clients*" options described under [Integration Options](#integration-options). ### Service `play_media` @@ -81,6 +79,7 @@ Required fields within the `media_content_id` payloads are marked as such, other | `media_content_type` | `MUSIC` | ##### Examples: + ```yaml entity_id: media_player.plex_player media_content_type: MUSIC @@ -116,6 +115,7 @@ media_content_id: '{ "playlist_name": "The Best of Disco", "shuffle": "1" }' | `media_content_type` | `EPISODE` | ##### Examples: + ```yaml entity_id: media_player.plex_player media_content_type: EPISODE @@ -149,6 +149,7 @@ For movies it's usually sufficient to provide the title. However, if the title y * `year`: Restrict search to a specific year ##### Examples: + ```yaml entity_id: media_player.plex_player media_content_type: movie @@ -170,7 +171,6 @@ media_content_id: '{ "library_name": "Adult Movies", "title": "die hard", year=1 # Would find the sequel, "Die Hard: With a Vengeance" ``` - ### Compatibility | Client | Limitations | @@ -183,7 +183,6 @@ media_content_id: '{ "library_name": "Adult Movies", "title": "die hard", year=1 | NVidia Shield | Controlling playback when the Shield is both a client and a server will work but with error logging | | Plex Web | None | - ## Sonos Playback To play Plex music directly to Sonos speakers, the following requirements must be met: @@ -254,5 +253,5 @@ play_plex_on_tv: ## Notes -* The `plex` integration supports multiple Plex servers. Additional connections can be configured under **Configuration** > **Integrations**. -* Movies must be located under 'Movies' section in the Plex library to properly get 'playing' state. +- The Plex integration supports multiple Plex servers. Additional connections can be configured under **Configuration** > **Integrations**. +- Movies must be located under the 'Movies' section in a Plex library to properly view the 'playing' state. From 78028d4d33cee0b90c9613a2a2b996b49c2080a5 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sat, 3 Oct 2020 04:23:04 -0400 Subject: [PATCH 101/231] Updated menu item naming in Lovelace dashboards docs (#14812) * Updated menu item names: Configure UI was renamed Edit Dashboard, and Raw config editor was renamed Raw configuration editor. * Clarified the first step - Overview is a sidebar item (dashboard), not a tab. * Added styling to text to make it more consistent with other pages --- source/lovelace/dashboards-and-views.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/lovelace/dashboards-and-views.markdown b/source/lovelace/dashboards-and-views.markdown index 49fb469c22b..1baafdb87be 100644 --- a/source/lovelace/dashboards-and-views.markdown +++ b/source/lovelace/dashboards-and-views.markdown @@ -5,7 +5,7 @@ description: "The Lovelace UI is a powerful and configurable interface for Home You can define multiple dashboards in Lovelace. Each dashboard can be added to the sidebar. This makes it possible to create separate control dashboards for each individual part of your house. -You can manage your dashboards via the user interface. Go to configuration -> Lovelace Dashboards. Here you can see all defined dashboards and create new ones. +You can manage your dashboards via the user interface. Go to **Configuration** -> **Lovelace Dashboards**. Here you can see all defined dashboards and create new ones. ### Using YAML for the default dashboard @@ -18,9 +18,9 @@ lovelace: A good way to start this file is to copy and paste the "Raw configuration" 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`. +- Click `Overview` in your sidebar. +- Click the three dots menu (top-right) and click on `Edit Dashboard`. +- Click the three dots menu again and click on `Raw configuration editor`. - There you see the configuration 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. From fa7608b89c6b755b8f459609c44043f9317ed151 Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 10:58:22 +0200 Subject: [PATCH 102/231] Add IoT class to Group (#14813) Co-authored-by: Franck Nijhof --- source/_integrations/group.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index 1c26b598ef5..44cd7f63ea2 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup groups within Home Assistant. ha_category: - Organization ha_release: pre 0.7 +ha_iot_class: Calculated ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 151fddead5bef531725d40c6327807a84bf684a9 Mon Sep 17 00:00:00 2001 From: Greg Barker Date: Sat, 3 Oct 2020 02:01:50 -0700 Subject: [PATCH 103/231] Added details for how to obtain the Access Token (#14806) --- source/_integrations/bond.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/bond.markdown b/source/_integrations/bond.markdown index 2910e38e871..a39a19b0a15 100644 --- a/source/_integrations/bond.markdown +++ b/source/_integrations/bond.markdown @@ -26,7 +26,7 @@ Supported devices (see Requirements section below): ## Configuration -To use Bond controlled devices in your installation, add your Bond hub host and access token from the integrations page. +To use Bond controlled devices in your installation, add your Bond hub host and access token from the integrations page. Instructions for how to obtain an access token can be found on the [Bond Local API](http://docs-local.appbond.com/#section/Getting-Started/Get-Device-Information) documentation, which includes a section for how to obtain the [IP address of the device](http://docs-local.appbond.com/#section/Getting-Started/Finding-the-Bond-IP) which you will need to obtain the access token. Menu: **Configuration** -> **Integrations**. From 6f9164264f731f3d34030d21a10691bc21324bd6 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sat, 3 Oct 2020 05:04:43 -0400 Subject: [PATCH 104/231] Remove outdated Developer Tools icon reference (#14804) Removed outdated reference to developer tools icon (was changed in 0.96), added correct name of tab. It's States, not Set State. --- 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 1fccecfa993..a170014870a 100644 --- a/source/_docs/configuration/devices.markdown +++ b/source/_docs/configuration/devices.markdown @@ -62,7 +62,7 @@ switch 2: ## Grouping devices Once you have several devices set up, it is time to organize them into groups. -Each group consists of a name and a list of entity IDs. Entity IDs can be retrieved from the web interface by using the Set State page in the Developer Tools (service developer tool icon). +Each group consists of a name and a list of entity IDs. Entity IDs can be retrieved from the web interface by using the “States” page in the Developer Tools. ```yaml # Example configuration.yaml entry showing two styles From ebb6add0ee367a845b8df5bf9bc6478f467651e8 Mon Sep 17 00:00:00 2001 From: Chase <43818313+ab3lson@users.noreply.github.com> Date: Sat, 3 Oct 2020 03:06:23 -0600 Subject: [PATCH 105/231] Grammar fixes (#14746) Co-authored-by: Franck Nijhof --- source/_integrations/ecobee.markdown | 37 +++++++++++++--------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index 906b06d0b52..d3abc40e686 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -18,7 +18,7 @@ ha_domain: ecobee The `ecobee` integration lets you control and view sensor data from [ecobee](https://ecobee.com) thermostats. -## Preliminary Step +## Preliminary Steps You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this integration. To get the key, your thermostat must be registered on ecobee's website (which you likely would have already done while installing your thermostat). Once you have done that, perform the following steps. @@ -28,31 +28,28 @@ You will need to obtain an API key from ecobee's [developer site](https://www.ec 4. Fill in the fields. 5. Click **save**. -Log in to the regular consumer portal, and click the overflow menu button in the upper right. You will see a new option named **Developer**. Now we can create the Application to hook up to Home Assistant. +Log in to the regular consumer portal and click the overflow menu button in the upper right. You will see a new option named **Developer**. Now an application can be created to integrate with Home Assistant. -1. Select the **Developer** option from the hamburger menu. +1. Select the **Developer** option from the hamburger menu on the top-right. 2. Select **Create New**. -3. Give your App a name (it must be unique across all ecobee users; try your-name-or-alias-home-assistant) and a summary (which need not be unique). Neither of these are important as they are not used anywhere in Home Assistant. -4. For authorization method select **ecobee PIN**. -5. You don't need an Application Icon or Detailed Description. -6. Click **Create**. +3. Complete the form on the right. (Neither of the fields are referenced by Home Assistant) + * Name: Must be unique across all ecobee users. + * Summary: Does not need to be unique. +4. Click *Authorization method* and select **ecobee PIN**. +5. Click **Create**. -Under the Name and Summary Section, you will now have an API key. Copy this key and use it in your configuration section below. Click the **X** to close the Developer section. +Your new application will now appear on the left. Upon clicking on the application, API key will appear on the right. Copy this key and use it in the configuration section below. Click **X** to close the Developer section. -## Configuring the Integration +## Configuration -To configure the ecobee integration in Home Assistant, you can either use the **Configuration** > **Integrations** menu, or add an entry to `configuration.yaml`. +1. In the **Configuration** > **Integrations** menu, click **+** and then select "ecobee" from the pop-up menu. +2. In the pop-up box, enter the API key you obtained from ecobee's [developer portal](https://ecobee.com/developers). +3. In the next pop-up box, you will be presented with a unique four-character PIN code which you will need to authorize in the [ecobee consumer portal].(https://www.ecobee.com/consumerportal/index.html). You can do this by logging in, selecting **My Apps** from the hamburger menu, clicking **Add Application** on the left, entering the PIN code from Home Assistant, clicking **Validate** and then **Add Application** in the bottom right. +4. After authorizing the app with ecobee, return to Home Assistant and click **Submit**. If the authorization was successful, a configuration entry will be created and your thermostats and sensors will be available in Home Assistant. -### Setup via the Integrations menu +## Manual Configuration -1. In the **Configuration** > **Integrations** menu, click **+** and then select `ecobee` from the pop-up menu. -2. In the pop-up box, enter the API key you obtained from ecobee.com. -3. In the next pop-up box, you will be presented with a unique four-character PIN code which you will need to authorize in the [ecobee consumer portal](https://www.ecobee.com/consumerportal/index.html). You can do this by logging in, selecting **My Apps** from the hamburger menu, clicking **Add Application** on the left, entering the PIN code from Home Assistant, and clicking **Validate** and then **Add Application** in the bottom right. -4. After authorizing the App on ecobee.com, return to Home Assistant and hit **Submit**. If the authorization was successful, a configuration entry will be created and your thermostats and sensors will be available in Home Assistant. - -### Setup via `configuration.yaml` - -If you prefer to initially set up this integration in [`configuration.yaml`](/docs/configuration/), you may do so by adding your API key (and optional parameters) as follows (however, you must still complete authorization via the **Integrations** menu): +If you prefer to set up the integration in [`configuration.yaml`](/docs/configuration/), add your API key (and optional parameters) as follows (however, you must still complete authorization via the **Integrations** menu): ```yaml # Example configuration.yaml entry @@ -72,7 +69,7 @@ api_key:

    -[Restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. In the **Configuration** > **Integrations** menu, hit **Configure** next to the discovered `ecobee` entry, and continue to authorize the App per the Integration menu instructions above, starting at step 2. +You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, navigate to the **Configuration** > **Integrations** menu, hit **Configure** next to the discovered `ecobee` entry, and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. ## Notifications From ada2addbfdf41a39ba2c04fb8958a21c465e3e3c Mon Sep 17 00:00:00 2001 From: dasadi <55808280+dasadi@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:14:32 +0200 Subject: [PATCH 106/231] Add IoT class to Aruba integration (#14796) --- source/_integrations/aruba.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/aruba.markdown b/source/_integrations/aruba.markdown index 27fb1a46eba..2710ddfe2df 100644 --- a/source/_integrations/aruba.markdown +++ b/source/_integrations/aruba.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Aruba routers into Home Assistant. ha_category: - Presence Detection ha_release: 0.7 +ha_iot_class: Local Polling ha_domain: aruba --- From 0477ecfa4edde25dfbfde32763623c3133d231c5 Mon Sep 17 00:00:00 2001 From: dasadi <55808280+dasadi@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:16:55 +0200 Subject: [PATCH 107/231] Add IoT class to Honeyw. Total Connect integration (#14798) --- source/_integrations/totalconnect.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/totalconnect.markdown b/source/_integrations/totalconnect.markdown index c30007ac8de..9727736c885 100644 --- a/source/_integrations/totalconnect.markdown +++ b/source/_integrations/totalconnect.markdown @@ -5,6 +5,7 @@ ha_category: - Alarm - Binary Sensor ha_release: 0.42 +ha_iot_class: Cloud Polling ha_config_flow: true ha_codeowners: - '@austinmroczek' From 81063fa707d13c7757f83c461d7f4db7c733c925 Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:18:53 +0200 Subject: [PATCH 108/231] Add IoT class for Input Datetime (#14809) Co-authored-by: Franck Nijhof --- source/_integrations/input_datetime.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown index f3acecc86fd..3a4b9c8898d 100644 --- a/source/_integrations/input_datetime.markdown +++ b/source/_integrations/input_datetime.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Input Datetime integration int ha_category: - Automation ha_release: 0.55 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 8cedd2a0292c7bd47738db424f2b332b9d8b0e35 Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:19:45 +0200 Subject: [PATCH 109/231] Add IoT class for Input Number (#14808) Co-authored-by: Franck Nijhof --- source/_integrations/input_number.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown index 30410c1553a..34a64c9bd3b 100644 --- a/source/_integrations/input_number.markdown +++ b/source/_integrations/input_number.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Input Number integration into ha_category: - Automation ha_release: 0.55 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 43c24738ad0437c4c6d5e65f444a1e8b17726b16 Mon Sep 17 00:00:00 2001 From: scheric <38077357+scheric@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:26:16 +0200 Subject: [PATCH 110/231] Adding scan_interval and name to configuration documentation (#14703) --- source/_integrations/ping.markdown | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 245b9c15be4..78a924c5526 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -34,7 +34,7 @@ host: required: true type: string count: - description: Number of packets to send. + description: Number of packages to be sent up to a maximum of 100. required: false type: integer default: 5 @@ -42,7 +42,7 @@ name: description: Let you overwrite the name of the device. required: false type: string - default: Ping Binary sensor + default: Binary sensor Ping [hostname] {% endconfiguration %} The sensor exposes the different round trip times values measured by `ping` as attributes: @@ -52,13 +52,14 @@ The sensor exposes the different round trip times values measured by `ping` as a - `round trip time min` - `round trip time max` -The default polling interval is 5 minutes. As many integrations [based on the entity class](/docs/configuration/platform_options), it is possible to overwrite this scan interval by specifying a `scan_interval` configuration key (value in seconds). In the example below we setup the `ping` binary sensor to poll the devices every 30 seconds. +The default polling interval is 5 minutes. As many integrations [based on the entity class](/docs/configuration/platform_options), it is possible to overwrite this scan interval by specifying a `scan_interval` configuration key (value in seconds). In the example below we setup the `ping` binary sensor to poll the device every 30 seconds. ```yaml # Example configuration.yaml entry to ping host 192.168.0.1 with 2 packets every 30 seconds. binary_sensor: - platform: ping host: 192.168.0.1 + name: "device name" count: 2 scan_interval: 30 ``` @@ -84,7 +85,7 @@ To use this presence detection in your installation, add the following to your ` device_tracker: - platform: ping hosts: - hostone: 192.168.2.10 + hostname: 192.168.2.10 ``` {% configuration %} From 455220b1e9a68e1a8eeef254772cc2412bd740ed Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:49:17 +0200 Subject: [PATCH 111/231] Add IoT class to Input Select (#14815) --- source/_integrations/input_select.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown index af2213676f8..185401ad7e3 100644 --- a/source/_integrations/input_select.markdown +++ b/source/_integrations/input_select.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Input Select integration into ha_category: - Automation ha_release: 0.13 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 0a270b2729546f0d8da0cb7bf39f45aa4818568a Mon Sep 17 00:00:00 2001 From: zmarties Date: Sat, 3 Oct 2020 10:52:13 +0100 Subject: [PATCH 112/231] Update yaml.markdown (#14818) Component is an old terminology - be consistent in using integration now. Make the inline warning about duplicate value more prominent. --- source/_docs/configuration/yaml.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_docs/configuration/yaml.markdown b/source/_docs/configuration/yaml.markdown index 03f57a1f839..9acbe1125e9 100644 --- a/source/_docs/configuration/yaml.markdown +++ b/source/_docs/configuration/yaml.markdown @@ -7,7 +7,7 @@ Home Assistant uses the [YAML](https://yaml.org/) syntax for configuration. YAML For integrations that you want to use in Home Assistant, you add code in your `configuration.yaml` file to specify its settings. This especially applies to integrations that are not yet available to configure through the UI. -The following example entry assumes that you would like to set up the [notify component](/integrations/notify) with the [pushbullet platform](/integrations/pushbullet). +The following example entry assumes that you would like to set up the [notify integration](/integrations/notify) with the [pushbullet platform](/integrations/pushbullet). ```yaml notify: @@ -16,12 +16,12 @@ notify: name: pushbullet ``` -- A **component** provides the core logic for some functionality (like `notify` provides sending notifications). +- An **integration** provides the core logic for some functionality (like `notify` provides sending notifications). - A **platform** makes the connection to a specific software or hardware platform (like `pushbullet` works with the service from pushbullet.com). -The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. If you specify duplicate keys, the last value for a key is used. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. +The basics of YAML syntax are block collections and mappings containing key-value pairs. Each item in a collection starts with a `-` while mappings have the format `key: value`. This is somewhat similar to a Hash table or more specifically a dictionary in Python. These can be nested as well. **Beware that if you specify duplicate keys, the last value for a key is used**. -Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` component. +Note that indentation is an important part of specifying relationships using YAML. Things that are indented are nested "inside" things that are one level higher. So in the above example, `platform: pushbullet` is a property of (nested inside) the `notify` integration. Getting the right indentation can be tricky if you're not using an editor with a fixed width font. Tabs are not allowed to be used for indentation. Convention is to use 2 spaces for each level of indentation. @@ -63,7 +63,7 @@ sensor: ## Including values -### Environmental variables +### Environment variables On Home Assistant Core installations, you can include values from your system's environment variables with `!env_var`. Note that this will only work for Home Assistant Core installations, in a scenario where it is possible to specify these. From eee43b348de49b1dde7e836f2c62bb2b219090b4 Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 12:02:32 +0200 Subject: [PATCH 113/231] Add IoT class to Input Text (#14819) --- source/_integrations/input_text.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown index eb0c13fcc1f..0a39b287c95 100644 --- a/source/_integrations/input_text.markdown +++ b/source/_integrations/input_text.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Input Text integration into Ho ha_category: - Automation ha_release: 0.53 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 8321fbc33b4b1cdd1ceb372a538a3fb561da77f7 Mon Sep 17 00:00:00 2001 From: zmarties Date: Sat, 3 Oct 2020 11:04:23 +0100 Subject: [PATCH 114/231] Update glossary.yml (#14817) --- source/_data/glossary.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/_data/glossary.yml b/source/_data/glossary.yml index 1bd1ac80b6d..b86a243c334 100644 --- a/source/_data/glossary.yml +++ b/source/_data/glossary.yml @@ -13,9 +13,9 @@ - topic: Cookbook description: "The [Cookbook](/cookbook/) contains a set of configuration examples of Home Assistant from the community." - topic: Cover - description: "[Covers](/integrations/cover) are devices such as blinds, garage doors, etc than can be opened and closed and optionally set to a specific position." + description: "[Covers](/integrations/cover) are devices such as blinds, garage doors, etc that can be opened and closed and optionally set to a specific position." - topic: Customize - description: "[Customization](/docs/configuration/customizing-devices/) allows you to overwrite the default parameter of your devices in the configuration." + description: "[Customization](/docs/configuration/customizing-devices/) allows you to overwrite the default parameters of your devices in the configuration." - topic: Device description: "A device is usually a physical unit which can do or observe something." - topic: Device tracker @@ -23,21 +23,23 @@ - topic: Discovery description: "[Discovery](/integrations/discovery/) is the automatic setup of zeroconf/mDNS and uPnP devices after they are discovered." - topic: Entity - description: "An [entity](/docs/configuration/platform_options/) is the representation of function a single device, unit, or web service. There may be multiple entities for a single device, unit, or web service, or there may be only one." + description: "An [entity](/docs/configuration/platform_options/) is the representation of a function of a single device, unit, or web service. There may be multiple entities for a single device, unit, or web service, or there may be only one." - topic: Event description: "An [event](/docs/configuration/events/) is when something happens." - topic: Frontend description: "The [frontend](/integrations/frontend/) is a necessary component for the UI, it is also where you can define your themes." - topic: Group description: "[Groups](/integrations/group/) are a way to organize your entities into a single unit." -- topic: hass +- 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: HassOS + description: "Another name for Home Assistant Operating System" - topic: Home Assistant Core description: Home Assistant Core is a Python program. It can be run on various operating systems and is the basis for Home Assistant. When people are talking about Home Assistant Core they usually refer to a standalone installation method that can be installed using a Virtual Environment or Docker. Home Assistant Core does not use the Home Assistant Supervisor. - topic: Home Assistant Supervised (Previously Hass.io) description: "[Home Assistant](/hassio/) is a full UI managed home automation ecosystem that runs Home Assistant, the Home Assistant Supervisor and add-ons. It comes pre-installed on Home Assistant OS, but can be installed on any Linux system. It leverages Docker, which is managed by the Home Assistant Supervisor." - topic: Home Assistant Supervisor - description: "The Home Assistant Supervisor is a program that manages a Home Assistant installation, taking care of installing and updating Home Assistant, add-ons, itself and, if used, updating the HassOS operating system." + description: "The Home Assistant Supervisor is a program that manages a Home Assistant installation, taking care of installing and updating Home Assistant, add-ons, itself and, if used, updating the Home Assistant Operating System." - topic: Home Assistant Operating System description: "Home Assistant OS, the Home Assistant Operating System, is an embedded, minimalistic, operating system designed to run the Home Assistant ecosystem on single board computers (like the Raspberry Pi) or Virtual Machines. The Home Assistant Supervisor can keep it up to date, removing the need for you to manage an operating system." - topic: Integration From 224b48a03cbaee170903395738a571d4beaca09d Mon Sep 17 00:00:00 2001 From: Baptiste Candellier Date: Sat, 3 Oct 2020 12:14:23 +0200 Subject: [PATCH 115/231] Add IoT class to Pushover integration (#14816) Co-authored-by: Franck Nijhof --- source/_integrations/pushover.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/pushover.markdown b/source/_integrations/pushover.markdown index 8634267dc27..5e160d053c0 100644 --- a/source/_integrations/pushover.markdown +++ b/source/_integrations/pushover.markdown @@ -4,6 +4,7 @@ description: Instructions on how to add Pushover notifications to Home Assistant ha_category: - Notifications ha_release: pre 0.7 +ha_iot_class: Cloud Push ha_domain: pushover --- From c057813dc8911a3e682fcd8ac0c93dfc3bccc717 Mon Sep 17 00:00:00 2001 From: Baptiste Candellier Date: Sat, 3 Oct 2020 12:15:27 +0200 Subject: [PATCH 116/231] Add IoT class to Cloudflare integration (#14814) Co-authored-by: Franck Nijhof --- source/_integrations/cloudflare.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/cloudflare.markdown b/source/_integrations/cloudflare.markdown index ff72fa3c730..f8637173d6f 100644 --- a/source/_integrations/cloudflare.markdown +++ b/source/_integrations/cloudflare.markdown @@ -4,6 +4,7 @@ description: Automatically update your Cloudflare DNS records. ha_category: - Network ha_release: 0.74 +ha_iot_class: Cloud Push ha_codeowners: - '@ludeeus' ha_domain: cloudflare From ace723c8b9c9f15f194b76211e3fcf3c5f239784 Mon Sep 17 00:00:00 2001 From: javicalle <31999997+javicalle@users.noreply.github.com> Date: Sat, 3 Oct 2020 13:39:21 +0200 Subject: [PATCH 117/231] Add IoT class to RFLink integration (#14797) --- source/_integrations/rflink.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/rflink.markdown b/source/_integrations/rflink.markdown index 825a03a0778..806a96c5173 100644 --- a/source/_integrations/rflink.markdown +++ b/source/_integrations/rflink.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate RFLink gateway into Home Assistant logo: rflink.png ha_category: - Hub +ha_iot_class: Assumed State ha_release: 0.38 ha_domain: rflink --- From 57e4f7b97dc6993e8155272e764a4cd06b393f19 Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 3 Oct 2020 14:06:18 +0200 Subject: [PATCH 118/231] Add missing IoT classes to integration Counter (#14828) --- source/_integrations/counter.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown index f2f89aba230..2aafbf0812c 100644 --- a/source/_integrations/counter.markdown +++ b/source/_integrations/counter.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate counters into Home Assistant. ha_category: - Automation ha_release: 0.53 +ha_iot_class: Calculated ha_quality_scale: internal ha_codeowners: - '@fabaff' From fdf02bbe43ed9626c5979a6b0b910416768ac457 Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 3 Oct 2020 14:07:22 +0200 Subject: [PATCH 119/231] Adding IoT Class for Ping (ICMP) Integration (#14824) --- source/_integrations/ping.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 78a924c5526..b8fe3a0d489 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -6,6 +6,7 @@ ha_category: - Binary Sensor - Presence Detection ha_release: 0.43 +ha_iot_class: Local Polling ha_quality_scale: internal ha_domain: ping --- From 93babb179267a890bcc6b73c90497c48dfecacc8 Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 14:16:34 +0200 Subject: [PATCH 120/231] Add IoT class to Input Boolean (#14822) --- source/_integrations/input_boolean.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown index 8a3a9ef191d..bd0989073d4 100644 --- a/source/_integrations/input_boolean.markdown +++ b/source/_integrations/input_boolean.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the Input Boolean integration into ha_category: - Automation ha_release: 0.11 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 86929ceca33f0f8017cda52f8e076603505fa991 Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 3 Oct 2020 14:20:24 +0200 Subject: [PATCH 121/231] Adding IoT Class for Cisco IOS Integration (#14821) --- source/_integrations/cisco_ios.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown index b8e435ab9e3..1b80139a197 100644 --- a/source/_integrations/cisco_ios.markdown +++ b/source/_integrations/cisco_ios.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Cisco IOS routers into Home Assist ha_category: - Presence Detection ha_release: 0.33 +ha_iot_class: Local Polling ha_codeowners: - '@fbradyirl' ha_domain: cisco_ios From 78312dbe8b2dc9c31b5f39baff403be02142833f Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Sat, 3 Oct 2020 14:21:45 +0200 Subject: [PATCH 122/231] Add IoT class to Edimax integration (#14823) --- source/_integrations/edimax.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/edimax.markdown b/source/_integrations/edimax.markdown index 25e584dadd2..f53fdd8e93e 100644 --- a/source/_integrations/edimax.markdown +++ b/source/_integrations/edimax.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Edimax switches into Home Assistan ha_category: - Switch ha_release: pre 0.7 +ha_iot_class: Local Polling ha_domain: edimax --- From c66bff7df3f0b12f385314c4df8189798c53accf Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 14:29:03 +0200 Subject: [PATCH 123/231] Add IoT class to Binary Sensor (#14827) * Add IoT class to Binary Sensor * Update source/_integrations/binary_sensor.markdown Got it ;) Thanks Co-authored-by: Franck Nijhof Co-authored-by: Franck Nijhof --- source/_integrations/binary_sensor.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/binary_sensor.markdown b/source/_integrations/binary_sensor.markdown index c47e39903b8..37b87e2e08b 100644 --- a/source/_integrations/binary_sensor.markdown +++ b/source/_integrations/binary_sensor.markdown @@ -4,6 +4,7 @@ description: Instructions on how-to setup binary sensors with Home Assistant. ha_category: - Binary Sensor ha_release: 0.9 +ha_iot_class: ~ ha_quality_scale: internal ha_domain: binary_sensor --- From c66b2a89d890128d53dd53f3d6b4ab6c000ac8d9 Mon Sep 17 00:00:00 2001 From: javicalle <31999997+javicalle@users.noreply.github.com> Date: Sat, 3 Oct 2020 14:30:30 +0200 Subject: [PATCH 124/231] Add IoT class to RFLink devices (#14829) --- source/_integrations/cover.rflink.markdown | 1 + source/_integrations/light.rflink.markdown | 2 +- source/_integrations/sensor.rflink.markdown | 2 +- source/_integrations/switch.rflink.markdown | 1 + 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/source/_integrations/cover.rflink.markdown b/source/_integrations/cover.rflink.markdown index b83284d6b26..34db7bfdebe 100644 --- a/source/_integrations/cover.rflink.markdown +++ b/source/_integrations/cover.rflink.markdown @@ -4,6 +4,7 @@ description: "Instructions on how to integrate RFLink Somfy RTS and KAKU ASUN-65 logo: rflink.png ha_category: - Cover +ha_iot_class: Assumed State ha_release: 0.55 ha_domain: rflink --- diff --git a/source/_integrations/light.rflink.markdown b/source/_integrations/light.rflink.markdown index cfc2a0891c7..4a003e3b1ac 100644 --- a/source/_integrations/light.rflink.markdown +++ b/source/_integrations/light.rflink.markdown @@ -4,8 +4,8 @@ description: "Instructions on how to integrate RFLink lights into Home Assistant logo: rflink.png ha_category: - Light -ha_release: 0.38 ha_iot_class: Assumed State +ha_release: 0.38 ha_domain: rflink --- diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown index 213c182631d..b4b9c5f40b3 100644 --- a/source/_integrations/sensor.rflink.markdown +++ b/source/_integrations/sensor.rflink.markdown @@ -4,8 +4,8 @@ description: "Instructions on how to integrate RFLink sensors into Home Assistan logo: rflink.png ha_category: - Sensor +ha_iot_class: Local Push ha_release: 0.38 -ha_iot_class: Local Polling ha_domain: rflink --- diff --git a/source/_integrations/switch.rflink.markdown b/source/_integrations/switch.rflink.markdown index 2d9279e58d0..798c446bf11 100644 --- a/source/_integrations/switch.rflink.markdown +++ b/source/_integrations/switch.rflink.markdown @@ -4,6 +4,7 @@ description: "Instructions on how to integrate RFLink switches into Home Assista logo: rflink.png ha_category: - Switch +ha_iot_class: Assumed State ha_release: 0.38 ha_domain: rflink --- From 1fe47568d4aaab9a914c60acf06c7761cbf6e8a5 Mon Sep 17 00:00:00 2001 From: springstan <46536646+springstan@users.noreply.github.com> Date: Sat, 3 Oct 2020 16:32:20 +0200 Subject: [PATCH 125/231] Remove logo from ecovacs documentation (#14831) --- source/_integrations/ecovacs.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown index 743e5e0680d..c36ffe3e167 100644 --- a/source/_integrations/ecovacs.markdown +++ b/source/_integrations/ecovacs.markdown @@ -1,7 +1,6 @@ --- title: Ecovacs description: Instructions on how to integrate Ecovacs vacuums within Home Assistant. -logo: ecovacs.png ha_category: - Hub - Vacuum From a50f2bdb9a977364ed7ad324cb5cea1cc0a4c7e5 Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Sat, 3 Oct 2020 20:02:09 +0200 Subject: [PATCH 126/231] Add IoT class to Syslog Integration (#14820) Co-authored-by: Franck Nijhof --- source/_integrations/syslog.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/syslog.markdown b/source/_integrations/syslog.markdown index 9f9c716ffb4..80d68cbb861 100644 --- a/source/_integrations/syslog.markdown +++ b/source/_integrations/syslog.markdown @@ -4,6 +4,7 @@ description: Instructions on how to add syslog notifications to Home Assistant. ha_category: - Notifications ha_release: pre 0.7 +ha_iot_class: Local Push ha_codeowners: - '@fabaff' ha_domain: syslog From 3b64d6c0fbc8d2859c79cbd4c3a1f9993cc0075b Mon Sep 17 00:00:00 2001 From: Jens Date: Sat, 3 Oct 2020 20:02:51 +0200 Subject: [PATCH 127/231] Adding IoT Class for Cisco Mobility Express Integration (#14825) --- source/_integrations/cisco_mobility_express.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown index 44233d12831..4c3c6e99f09 100644 --- a/source/_integrations/cisco_mobility_express.markdown +++ b/source/_integrations/cisco_mobility_express.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Cisco Mobility Express wireless co ha_category: - Presence Detection ha_release: '0.90' +ha_iot_class: Local Polling ha_codeowners: - '@fbradyirl' ha_domain: cisco_mobility_express From e6302fd7bc2a746294a9fde0ca5d1d743f638c61 Mon Sep 17 00:00:00 2001 From: dmonego Date: Sat, 3 Oct 2020 14:03:44 -0400 Subject: [PATCH 128/231] add ha_iot_class to dd_wrt (#14832) --- source/_integrations/ddwrt.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown index f0f3a639cba..46e1084f1a8 100644 --- a/source/_integrations/ddwrt.markdown +++ b/source/_integrations/ddwrt.markdown @@ -3,6 +3,7 @@ title: DD-WRT description: Instructions on how to integrate DD-WRT based routers into Home Assistant. ha_category: - Presence Detection +ha_iot_class: Local Polling ha_release: pre 0.7 ha_domain: ddwrt --- From 6ea01135c0ca2970b7ad7ad2d2f1bd3ca638c2fd Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Sat, 3 Oct 2020 20:05:05 +0200 Subject: [PATCH 129/231] Fix broken links on website (part 6) (#14833) --- .../_integrations/image_processing.markdown | 2 ++ ...10-notify-group-reload-api-pihole.markdown | 3 +-- ...automation-editor-zwave-panel-ocr.markdown | 26 +++++++++---------- source/_posts/2017-10-21-release-56.markdown | 4 +-- source/_posts/2017-11-04-release-57.markdown | 3 +-- source/_posts/2018-01-14-release-61.markdown | 4 +-- source/_posts/2020-05-20-release-110.markdown | 3 +-- 7 files changed, 22 insertions(+), 23 deletions(-) diff --git a/source/_integrations/image_processing.markdown b/source/_integrations/image_processing.markdown index bd4049998de..2ed2b3679a1 100644 --- a/source/_integrations/image_processing.markdown +++ b/source/_integrations/image_processing.markdown @@ -1,6 +1,8 @@ --- title: Image Processing description: Instructions on how to setup image processing with Home Assistant. +ha_category: + - Image Processing ha_release: 0.36 ha_domain: image_processing --- diff --git a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown index 97979b9f10c..ab4fe4fe15d 100644 --- a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown +++ b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown @@ -43,7 +43,7 @@ The validation of the configuration is still on-going. Approximately 80 % is don - Device tracker: Allow 'None' MAC addresses to be loaded from `known_devices` file ([@kellerza]) - Cover: Bugfixes ([@turbokongen], [@danielperna84]) - Sensor: Support for displaying details about [crypto currencies][Coinmarketcap] ([@fabaff]) -- Device tracker: Support for [automatic] to track your vehicles ([@Teagan42]) +- Device tracker: Support for automatic to track your vehicles ([@Teagan42]) - Devie tracker: Add exclude option to [Nmap] device tracker ([@danieljkemp]) - Device tracker: Improved login errors for Asus device tracker ([@kellerza]) - Sensor: Support for displaying the status of [Xbox] Live accounts ([@mKerix]) @@ -146,7 +146,6 @@ The validation of the configuration is still on-going. Approximately 80 % is don [mqtt-fan]: /integrations/fan.mqtt/ [Xbox]: /integrations/xbox_live [Nmap]: /integrations/nmap_tracker -[automatic]: /integrations/automatic [Owntracks]: /integrations/owntracks [OpenweatherMap]: /integrations/openweathermap#sensor [OctoPrint]: /integrations/octoprint/ diff --git a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown index 415250c56bf..eeb26207335 100644 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown @@ -72,7 +72,7 @@ If you are using our [experimental Hass.io image][hass.io], we made a breaking c ## Release 0.45.1 - May 22 -- Fix telegram chats ([@azogue] - [#7689]) ([notify.telegram docs]) ([telegram_bot.__init__ docs]) +- Fix telegram chats ([@azogue] - [#7689]) ([notify.telegram docs]) ([telegram_bot docs]) - Fix playback control of web streams ([@cgtobi] - [#7683]) ([media_player.volumio docs]) - device_tracker.ubus: Handle empty results ([@tobygray] - [#7673]) ([device_tracker.ubus docs]) - Allow fetching hass.io panel without auth ([@balloob] - [#7714]) ([hassio docs]) @@ -122,7 +122,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - new source only forces "play" if the current state is "playing" ([@abmantis] - [#7506]) ([media_player.spotify docs]) - Correct retrieval of spotify shuffle state ([@andersonshatch] - [#7505]) ([media_player.spotify docs]) - Fix sonos sleep timer ([@frog32] - [#7503]) ([media_player.sonos docs]) -- Add support for automation config panel ([@balloob] - [#7509]) ([automation.__init__ docs]) ([config.automation docs]) ([config.__init__ docs]) (new-platform) +- Add support for automation config panel ([@balloob] - [#7509]) ([automation docs]) ([config.automation docs]) ([config docs]) (new-platform) - Zwave panel api ([@turbokongen] - [#7456]) ([zwave docs]) ([zwave.api docs]) (new-platform) - Update docker dev environment to python3.6 ([@frog32] - [#7520]) - Switch basicmodem and python-roku to pypi ([@andrey-git] - [#7514]) ([media_player.roku docs]) ([sensor.modem_callerid docs]) @@ -174,12 +174,12 @@ Experiencing issues introduced by this release? Please report them in our [issue - Fix handling of single user ([@mezz64] - [#7587]) ([eight_sleep docs]) - File sensor ([@fabaff] - [#7569]) ([sensor.file docs]) (new-platform) - Make miflora monitored_conditions parameter optional ([@frog32] - [#7598]) ([sensor.miflora docs]) -- Force automation ids to always be a string ([@balloob] - [#7612]) ([automation.__init__ docs]) +- Force automation ids to always be a string ([@balloob] - [#7612]) ([automation docs]) - Update Docker base image to python 3.6 ([@pschmitt] - [#7613]) -- Add Content-type: image/jpeg for camera proxy ([@olekenneth] - [#7581]) ([camera.__init__ docs]) +- Add Content-type: image/jpeg for camera proxy ([@olekenneth] - [#7581]) ([camera docs]) - Fix typo and update style to match the other platforms ([@fabaff] - [#7621]) ([image_processing.opencv docs]) - Bump pyvera - fixes issue with % in brightness levels. ([@pavoni] - [#7622]) ([vera docs]) -- Add kelvin/brightness_pct alternatives to light.turn_on ([@amelchio] - [#7596]) ([light.lifx docs]) ([light.__init__ docs]) +- Add kelvin/brightness_pct alternatives to light.turn_on ([@amelchio] - [#7596]) ([light.lifx docs]) ([light docs]) - Add support for disabling tradfri groups ([@cnrd] - [#7593]) ([tradfri docs]) ([light.tradfri docs]) - Update docstrings and comments ([@fabaff] - [#7626]) ([image_processing.openalpr_cloud docs]) ([image_processing.openalpr_local docs]) - Upgrade Sphinx to 1.6.1 ([@fabaff] - [#7624]) @@ -188,10 +188,10 @@ Experiencing issues introduced by this release? Please report them in our [issue - Updated limitlessled requirement to v1.0.8 ([@corneyl] - [#7629]) - Osram lightify Removed wrong assignment ([@commento] - [#7615]) ([light.osramlightify docs]) - Updated dependency ([@danielperna84] - [#7638]) ([homematic docs]) -- Seven segments OCR image processing ([@fabaff] - [#7632]) ([image_processing.seven_segments docs]) ([image_processing.__init__ docs]) (new-platform) +- Seven segments OCR image processing ([@fabaff] - [#7632]) ([image_processing.seven_segments docs]) ([image_processing docs]) (new-platform) - Abort tests when instances leaked ([@balloob] - [#7623]) -- Coerce color_temp to int even when passed in as kelvin ([@amelchio] - [#7640]) ([light.__init__ docs]) -- Fix automation failing to setup if no automations specified ([@balloob] - [#7647]) ([automation.__init__ docs]) +- Coerce color_temp to int even when passed in as kelvin ([@amelchio] - [#7640]) ([light docs]) +- Fix automation failing to setup if no automations specified ([@balloob] - [#7647]) ([automation docs]) [#6844]: https://github.com/home-assistant/home-assistant/pull/6844 [#7062]: https://github.com/home-assistant/home-assistant/pull/7062 @@ -345,11 +345,11 @@ Experiencing issues introduced by this release? Please report them in our [issue [binary_sensor.raspihats docs]: /integrations/raspihats#binary-sensor [binary_sensor.rpi_pfio docs]: /integrations/rpi_pfio#binary-sensor [blink docs]: /integrations/blink/ -[camera.__init__ docs]: /integrations/camera.__init__/ +[camera docs]: /integrations/camera [camera.uvc docs]: /integrations/uvc [camera.zoneminder docs]: /integrations/zoneminder#camera [climate.sensibo docs]: /integrations/sensibo -[config.__init__ docs]: /integrations/config.__init__/ +[config docs]: /integrations/config [configurator docs]: /integrations/configurator/ [cover.lutron_caseta docs]: /integrations/lutron_caseta/ [datadog docs]: /integrations/datadog/ @@ -357,7 +357,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [dweet docs]: /integrations/dweet/ [eight_sleep docs]: /integrations/eight_sleep/ [homematic docs]: /integrations/homematic/ -[image_processing.__init__ docs]: /integrations/image_processing.__init__/ +[image_processing docs]: /integrations/image_processing [image_processing.demo docs]: /integrations/image_processing.demo/ [image_processing.dlib_face_detect docs]: /integrations/dlib_face_detect [image_processing.dlib_face_identify docs]: /integrations/dlib_face_identify @@ -368,7 +368,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [image_processing.opencv docs]: /integrations/opencv [image_processing.seven_segments docs]: /integrations/seven_segments [kira docs]: /integrations/kira/ -[light.__init__ docs]: /integrations/light.__init__/ +[light docs]: /integrations/light [light.blinksticklight docs]: /integrations/blinksticklight [light.enocean docs]: /integrations/enocean#light [light.flux_led docs]: /integrations/flux_led @@ -433,5 +433,5 @@ Experiencing issues introduced by this release? Please report them in our [issue [device_tracker.ubus docs]: /integrations/ubus [hassio docs]: /integrations/hassio/ [media_player.volumio docs]: /integrations/volumio -[telegram_bot.__init__ docs]: /integrations/telegram_bot/ +[telegram_bot docs]: /integrations/telegram_bot/ [discord]: https://discord.gg/c5DvZ4e diff --git a/source/_posts/2017-10-21-release-56.markdown b/source/_posts/2017-10-21-release-56.markdown index b25ba71446f..39ae7454336 100644 --- a/source/_posts/2017-10-21-release-56.markdown +++ b/source/_posts/2017-10-21-release-56.markdown @@ -147,7 +147,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Update CODEOWNERS */axis.py ([@Kane610] - [#9823]) - fix climate services (missing indentation, wrongly formatted example) ([@rytilahti] - [#9805]) - Run initial generation for development mode ([@armills] - [#9826]) -- Add service descriptions ([@cgarwood] - [#9806]) ([__init__ docs]) +- Add service descriptions ([@cgarwood] - [#9806]) ([homeassistant docs]) - Bugfix: Include MQTT schema ([@tinloaf] - [#9802]) ([climate.mqtt docs]) - Bugfix/9811 jinja autoescape ([@GenericStudent] - [#9842]) - Changed yaml.load into yaml.safe_load ([@GenericStudent] - [#9841]) @@ -414,7 +414,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [@webworxshop]: https://github.com/webworxshop [@zabuldon]: https://github.com/zabuldon [@ziotibia81]: https://github.com/ziotibia81 -[__init__ docs]: /integrations/__init__/ [abode docs]: /integrations/abode/ [alarm_control_panel.arlo docs]: /integrations/arlo [alarm_control_panel.egardia docs]: /integrations/egardia @@ -455,6 +454,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [ffmpeg docs]: /integrations/ffmpeg/ [google_assistant docs]: /integrations/google_assistant/ [hassio docs]: /integrations/hassio/ +[homeassistant docs]: /integrations/homeassistant [homematic docs]: /integrations/homematic/ [http docs]: /integrations/http/ [knx docs]: /integrations/knx/ diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 6a9bf723d85..e8f786460d8 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -253,7 +253,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Avoid Sonos error during startup ([@amelchio] - [#10146]) ([media_player.sonos docs]) - Update netdisco to 1.2.3 ([@balloob] - [#10266]) - Extracted json saving and loading ([@molobrakos] - [#10216]) ([media_player.plex docs]) -- Change introduction card to use persistent notification ([@balloob] - [#10265]) ([introduction docs]) +- Change introduction card to use persistent notification ([@balloob] - [#10265]) - Add unit test for wake on lan component. ([@cgtobi] - [#10262]) - Add link to docs ([@fabaff] - [#10272]) - Add xy support to Alexa HomeAPI v3 ([@pvizeli] - [#10268]) @@ -564,7 +564,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [image_processing.openalpr_local docs]: /integrations/openalpr_local/ [input_number docs]: /integrations/input_number/ [input_text docs]: /integrations/input_text/ -[introduction docs]: /integrations/introduction/ [light.hue docs]: /integrations/hue [light.hyperion docs]: /integrations/hyperion [light.mqtt docs]: /integrations/light.mqtt/ diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown index 358f64b35ec..5a5ccf108d6 100644 --- a/source/_posts/2018-01-14-release-61.markdown +++ b/source/_posts/2018-01-14-release-61.markdown @@ -329,7 +329,7 @@ Note however, that this feature was replaced by a new ignore_string config optio - add velux roller shutter to tahoma ([@thijsdejong] - [#11586]) ([tahoma docs]) - Added support for enable/disable motion detection ([@abjorshammar] - [#11583]) ([camera.uvc docs]) - Avoid returning empty media_image_url string ([@JackWindows] - [#11557]) ([media_player.cast docs]) -- Core support for hass.io calls & Bugfix check_config ([@pvizeli] - [#11571]) ([__init__ docs]) ([hassio docs]) ([updater docs]) +- Core support for hass.io calls & Bugfix check_config ([@pvizeli] - [#11571]) ([homeassistant docs]) ([hassio docs]) ([updater docs]) - Fix Tahoma stop command for 2 types of shutters ([@thijsdejong] - [#11588]) ([cover.tahoma docs]) - Pushbullet email support (fix) ([@tschmidty69] - [#11590]) ([notify.pushbullet docs]) - Fix state for trigger with forced updates ([@armills] - [#11595]) ([automation.state docs]) @@ -610,7 +610,6 @@ Note however, that this feature was replaced by a new ignore_string config optio [@veleek]: https://github.com/veleek [@w1ll1am23]: https://github.com/w1ll1am23 [@yienxu]: https://github.com/yienxu -[__init__ docs]: /integrations/__init__/ [alarm_control_panel.alarmdecoder docs]: /integrations/alarmdecoder#alarm-control-panel [alarm_control_panel.concord232 docs]: /integrations/concord232#alarm-control-panel [alarm_control_panel.egardia docs]: /integrations/egardia @@ -673,6 +672,7 @@ Note however, that this feature was replaced by a new ignore_string config optio [google_assistant.http docs]: /integrations/google_assistant/ [google_assistant.smart_home docs]: /integrations/google_assistant [group docs]: /integrations/group/ +[homeassistant docs]: /integrations/homeassistant [hassio docs]: /integrations/hassio/ [history docs]: /integrations/history/ [hive docs]: /integrations/hive/ diff --git a/source/_posts/2020-05-20-release-110.markdown b/source/_posts/2020-05-20-release-110.markdown index 825eee440c1..52eac734a40 100644 --- a/source/_posts/2020-05-20-release-110.markdown +++ b/source/_posts/2020-05-20-release-110.markdown @@ -1052,7 +1052,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Bump plexwebsocket to 0.0.8 ([@jjlawren] - [#35351]) ([plex docs]) - Enable async_update for entities in NWS ([@MatthewFlamm] - [#35048]) ([nws docs]) - Migrate ISY994 to PyISY v2 ([@shbatm] - [#35338]) ([isy994 docs]) (breaking-change) -- Delete flapping automatic tests ([@bdraco] - [#35356]) ([automatic docs]) +- Delete flapping automatic tests ([@bdraco] - [#35356]) - Rewrite JuiceNet for async and config flow ([@jesserockz] - [#34365]) ([juicenet docs]) - Add modbus sensor string data_type ([@bradkeifer] - [#35269]) ([modbus docs]) - Capitalize kane610 in codeowners since scripts are case sensitive ([@Kane610] - [#35375]) ([axis docs]) ([deconz docs]) ([unifi docs]) @@ -1731,7 +1731,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [arest docs]: /integrations/arest/ [atag docs]: /integrations/atag/ [august docs]: /integrations/august/ -[automatic docs]: /integrations/automatic/ [automation docs]: /integrations/automation/ [axis docs]: /integrations/axis/ [basic config docs]: /docs/configuration/basic/ From a011572c75ad623c615310ef834b1f953597ffcd Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Sat, 3 Oct 2020 20:05:57 +0200 Subject: [PATCH 130/231] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Add=20missing=20ha?= =?UTF-8?q?=5Fcategory=20(#14834)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/_integrations/geo_location.markdown | 2 ++ source/_integrations/homeassistant.markdown | 2 ++ source/_integrations/spotcrime.markdown | 2 ++ source/_integrations/tts.markdown | 2 ++ 4 files changed, 8 insertions(+) diff --git a/source/_integrations/geo_location.markdown b/source/_integrations/geo_location.markdown index 976afa5e2b4..9ac2f85b2d3 100644 --- a/source/_integrations/geo_location.markdown +++ b/source/_integrations/geo_location.markdown @@ -1,6 +1,8 @@ --- title: Geolocation description: Instructions on how to integrate geolocation aware platforms into Home Assistant. +ha_category: + - Geolocation logo: geo_location.png ha_release: 0.78 ha_domain: geo_location diff --git a/source/_integrations/homeassistant.markdown b/source/_integrations/homeassistant.markdown index 0f82403e070..8a026e4dfda 100644 --- a/source/_integrations/homeassistant.markdown +++ b/source/_integrations/homeassistant.markdown @@ -2,6 +2,8 @@ title: Home Assistant Core Integration description: Description of the homeassistant integration. ha_release: 0.0 +ha_category: + - Other ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' diff --git a/source/_integrations/spotcrime.markdown b/source/_integrations/spotcrime.markdown index 1d3734f60a4..de4e5ef21d1 100644 --- a/source/_integrations/spotcrime.markdown +++ b/source/_integrations/spotcrime.markdown @@ -2,6 +2,8 @@ title: Spot Crime description: Instructions on how to integrate spotcrime.com into Home Assistant. ha_release: 0.65 +ha_category: + - Sensor ha_iot_class: Cloud Polling ha_domain: spotcrime --- diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index aa24da0370c..a8bdbbaf1be 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -1,6 +1,8 @@ --- title: Text-to-Speech (TTS) description: Instructions on how to set up Text-to-Speech (TTS) with Home Assistant. +ha_category: + - Text-to-speech ha_release: 0.35 ha_codeowners: - '@pvizeli' From 8f2701363f4c61634024508c46e538d75d171bdb Mon Sep 17 00:00:00 2001 From: jordibsk10 <62246724+jordibsk10@users.noreply.github.com> Date: Sat, 3 Oct 2020 20:06:56 +0200 Subject: [PATCH 131/231] Add IoT class to Configurator (#14835) --- source/_integrations/configurator.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/configurator.markdown b/source/_integrations/configurator.markdown index 679a8bc13ac..4f1bca64b1f 100644 --- a/source/_integrations/configurator.markdown +++ b/source/_integrations/configurator.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate the configurator in your component ha_category: - Other ha_release: 0.7 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 3dcd1f89d4ba521b5bf4dc65d4dc2694bca58925 Mon Sep 17 00:00:00 2001 From: bestlibre Date: Sat, 3 Oct 2020 20:07:59 +0200 Subject: [PATCH 132/231] missing parameter description for free mobile (#14836) --- source/_integrations/free_mobile.markdown | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/source/_integrations/free_mobile.markdown b/source/_integrations/free_mobile.markdown index 0d5af30f4d1..47a3e4b786f 100644 --- a/source/_integrations/free_mobile.markdown +++ b/source/_integrations/free_mobile.markdown @@ -33,6 +33,11 @@ notify: ``` {% configuration %} +name: + description: "The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME." + required: false + type: string + default: notify username: description: This is the id given by FreeMobile to access to your online account. required: true From 3a22bc75d62a5d5f4104564e9c483b1f3de7a8f3 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sat, 3 Oct 2020 14:09:14 -0400 Subject: [PATCH 133/231] Developer Tools page updates (#14837) * This page was named "Development" Tools yet literally everywhere else in both Home Assistant itself and the documentation (sidebar, screenshots, content of this page) it's called "Developer" Tools. Changed the title to be consistent and correct. This won't break anything because the actual url hasn't changed. * Rewrote the Template Editor section to reflect the new changes in Home Assistant 0.115. The sample code no longer reverts back on a page refresh, you have to manually reset it via button press. * Other minor spelling/grammar tweaks --- source/_docs/tools/dev-tools.markdown | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/source/_docs/tools/dev-tools.markdown b/source/_docs/tools/dev-tools.markdown index d4c36924736..3e874923cb1 100644 --- a/source/_docs/tools/dev-tools.markdown +++ b/source/_docs/tools/dev-tools.markdown @@ -1,5 +1,5 @@ --- -title: "Development Tools" +title: "Developer Tools" description: "Description of the Developer Tools." --- @@ -19,24 +19,24 @@ Screenshot of Home Assistant's Developer Tools. ## What can I do with Developer Tools? -The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, update states, raising events, and publish messages in mqtt…etc.). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the section in detail. +The Developer Tools is meant for **all** (not just for the developers) to quickly try out things - like calling services, updating states, raising events, and publishing messages in MQTT). It is also a necessary tool for those who write custom automations and scripts by hand. The following describes each of the sections in detail. ## Services This section is used to call Services that are available in the ServiceRegistry. -The list of services in the “Service” drop down are automatically populated based on the integrations that are found in the configuration, automation and script files. If a desired service does not exist, it means either the integration is not configured properly or not defined in the configuration, automation or script files. +The list of services in the “Service” dropdown are automatically populated based on the integrations that are found in the configuration, automation and script files. If a desired service does not exist, it means either the integration is not configured properly or not defined in the configuration, automation or script files. -When a Service is selected, and if that service requires an `entity_id` to be passed, the “Entity” drop down will automatically be populated with corresponding entities. +When a Service is selected, and if that service requires an `entity_id` to be passed, the “Entity” dropdown will automatically be populated with corresponding entities. A Service may also require additional input to be passed. It is commonly referred to as “service data”. The service data is accepted in YAML format, and it may be optional depending on the service. -When an entity is selected from the Entity drop down, it automatically populates service data with the corresponding `entity_id`. The service data YAML can then be modified to pass additional \[optional\] parameters. The following is an illustration on how to call a `light.turn_on` service. +When an entity is selected from the Entity dropdown, it automatically populates service data with the corresponding `entity_id`. The service data YAML can then be modified to pass additional \[optional\] parameters. The following is an illustration on how to call a `light.turn_on` service. To turn on a light bulb, use the following steps: -1. Select `light.turn_on` from the Service drop down -2. Select the entity (typically the light bulb) from the Entity drop down (if no entity_id is selected, it turns on ALL lights) -3. If an entity is selected, the service data is populated with basic JSON that will be passed to the service. An additional data can also be passed by updating the JSON as below. +1. Select `light.turn_on` from the Service dropdown +2. Select the entity (typically the light bulb) from the Entity dropdown (if no entity_id is selected, it turns on ALL lights) +3. If an entity is selected, the service data is populated with basic YAML that will be passed to the service. Additional data can also be passed by updating the YAML as below. ```yaml entity_id: light.bedroom @@ -50,7 +50,7 @@ This section shows all the available entities, their corresponding state and the Note that this is the state representation of a device within Home Assistant. That means, it is what Home Assistant sees, and it does not communicate with the actual device in any manner. The updated information can still be used to trigger events, and state changes. To communicate with the actual device, it is recommended to call services in the services section above, instead of updating state. -For ex: Changing the `light.bedroom` state from `off` to `on` does not turn on the light. If there is an automation that triggers on the `state` change of the `light.bedroom`, it will be triggered – even though the actual bulb has not turned on. Also, when the bulb state changes – the state information will be overridden. In other words, the changes that are made through the “States” section are temporary, and is recommended to use for testing purposes only. +For example, changing the `light.bedroom` state from `off` to `on` does not turn on the light. If there is an automation that triggers on the `state` change of the `light.bedroom`, it will be triggered – even though the actual bulb has not turned on. Also, when the bulb state changes – the state information will be overridden. In other words, the changes that are made through the “States” section are temporary, and is recommended to use for testing purposes only. ## Events @@ -77,10 +77,8 @@ If there is an automation that handles that event, it will be automatically trig ## Template Editor -The Template Editor provides a way to test the template code quickly. When the Template Editor page is loaded, it comes with a sample template code that illustrates how the code can be written and tested. +The Template Editor provides a way to quickly test templates prior to placing them into automations and scripts. A code editor is on the left side and your real-time output is displayed in the preview on the right side. -It has two sections, code goes on the left hand side, and the output is shown on the right hand side. The code can be removed and replaced, and when the page is loaded/refreshed, the default sample code will be loaded back. +By default this will contain sample code that illustrates how templates can be written and tested. This sample code can be removed and replaced with your own. You can restore the default example by pressing the "Reset to Demo Template" button beneath the code editor. -It is a good practice to test the template code in the template editor prior to putting it in automations and scripts. - -For more information about jinja2, visit [jinja2 documentation](http://jinja.pocoo.org/docs/dev/templates/), and also read templating document [here](/topics/templating/) +For more information about Jinja2, visit [Jinja2 documentation](http://jinja.pocoo.org/docs/dev/templates/), and also read templating document [here](/topics/templating/). From a635fb884d9cbba992b61478f3adc92cc0460fe1 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sat, 3 Oct 2020 14:10:13 -0400 Subject: [PATCH 134/231] Media Extractor page updates (#14839) 1. Changed JSON codeblock example to YAML 2. Rewrote the service call instructions, including removing an old reference to Developer Tools icon that hasn't existed for a year 3. Updated format selection URL to new youtube-dl repo --- source/_integrations/media_extractor.markdown | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/source/_integrations/media_extractor.markdown b/source/_integrations/media_extractor.markdown index 3c5bf906962..223b517f2ab 100644 --- a/source/_integrations/media_extractor.markdown +++ b/source/_integrations/media_extractor.markdown @@ -45,12 +45,10 @@ media_extractor: This configuration sets query for all service calls like to 'bestaudio' with the mp3 extension: -```json -{ - "entity_id": "media_player.my_sonos", - "media_content_id": "https://soundcloud.com/bruttoband/brutto-11", - "media_content_type": "music" -} +```yaml +entity_id: media_player.my_sonos +media_content_id: https://soundcloud.com/bruttoband/brutto-11 +media_content_type: music ``` Query examples with explanations: @@ -61,11 +59,11 @@ Query examples with explanations: * **worst**: Worst video + audio stream * **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio -More info about queries [here](https://github.com/rg3/youtube-dl#format-selection) +More info about queries can be found [here](https://github.com/ytdl-org/youtube-dl#format-selection). ### Use the service -Use service developer tool icon **Services** from the **Developer Tools**. Choose `media_extractor` from the dropdown menu **Domain** and `play_media` from **Service**, enter something like the JSON sample from above into the **Service Data** field, and hit **CALL SERVICE**. +Navigate to the **Services** tab inside **Developer Tools**. From the "Service" dropdown menu select `media_extractor.play_media` and then press the "Fill Example Data" button at the bottom of the page. Use the "Entity ID" dropdown to select your media player and then press the **Call Service** button. This will download the file from the given URL. From 0f2471dbb473c1e8238bd62440f7600c9e6a2fcb Mon Sep 17 00:00:00 2001 From: Chase <43818313+ab3lson@users.noreply.github.com> Date: Sat, 3 Oct 2020 12:18:00 -0600 Subject: [PATCH 135/231] Update ecobee.markdown (#14845) Fixed broken link markdown --- source/_integrations/ecobee.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/ecobee.markdown b/source/_integrations/ecobee.markdown index d3abc40e686..09a9b5cb62b 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -44,7 +44,7 @@ Your new application will now appear on the left. Upon clicking on the applicati 1. In the **Configuration** > **Integrations** menu, click **+** and then select "ecobee" from the pop-up menu. 2. In the pop-up box, enter the API key you obtained from ecobee's [developer portal](https://ecobee.com/developers). -3. In the next pop-up box, you will be presented with a unique four-character PIN code which you will need to authorize in the [ecobee consumer portal].(https://www.ecobee.com/consumerportal/index.html). You can do this by logging in, selecting **My Apps** from the hamburger menu, clicking **Add Application** on the left, entering the PIN code from Home Assistant, clicking **Validate** and then **Add Application** in the bottom right. +3. In the next pop-up box, you will be presented with a unique four-character PIN code which you will need to authorize in the [ecobee consumer portal](https://www.ecobee.com/consumerportal/index.html). You can do this by logging in, selecting **My Apps** from the hamburger menu, clicking **Add Application** on the left, entering the PIN code from Home Assistant, clicking **Validate** and then **Add Application** in the bottom right. 4. After authorizing the app with ecobee, return to Home Assistant and click **Submit**. If the authorization was successful, a configuration entry will be created and your thermostats and sensors will be available in Home Assistant. ## Manual Configuration From c89369a73efb7395449e9ee4f7e5f51c426fa464 Mon Sep 17 00:00:00 2001 From: JamesT44 Date: Sat, 3 Oct 2020 19:18:39 +0100 Subject: [PATCH 136/231] Add IoT class for Keenetic NDMS2 Routers integration (#14844) --- source/_integrations/keenetic_ndms2.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/keenetic_ndms2.markdown b/source/_integrations/keenetic_ndms2.markdown index 08e076692a2..39b4f446fe5 100644 --- a/source/_integrations/keenetic_ndms2.markdown +++ b/source/_integrations/keenetic_ndms2.markdown @@ -3,6 +3,7 @@ title: Keenetic NDMS2 Routers description: Instructions on how to integrate Keenetic NDMS2 Routers into Home Assistant. ha_category: - Presence Detection +ha_iot_class: Local Polling ha_release: 0.54 ha_codeowners: - '@foxel' From 5735eb16bd4fbdbb4aa51779d208c9f651486cc3 Mon Sep 17 00:00:00 2001 From: JamesT44 Date: Sat, 3 Oct 2020 19:19:37 +0100 Subject: [PATCH 137/231] Add IoT class for Huawei Router integration (#14843) --- source/_integrations/huawei_router.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/huawei_router.markdown b/source/_integrations/huawei_router.markdown index e869c312e0d..b3860dd84dc 100644 --- a/source/_integrations/huawei_router.markdown +++ b/source/_integrations/huawei_router.markdown @@ -3,6 +3,7 @@ title: Huawei Router description: Instructions on how to integrate Huawei Routers into Home Assistant. ha_category: - Presence Detection +ha_iot_class: Local Polling ha_release: 0.51 ha_codeowners: - '@abmantis' From b08463d45ee56274edd387180b0736fa448974ee Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 09:48:19 +0100 Subject: [PATCH 138/231] Add IOT Class to Arris TG2492LG (#14865) --- source/_integrations/arris_tg2492lg.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/arris_tg2492lg.markdown b/source/_integrations/arris_tg2492lg.markdown index e25c68c1f42..b8f822ed1b6 100644 --- a/source/_integrations/arris_tg2492lg.markdown +++ b/source/_integrations/arris_tg2492lg.markdown @@ -8,6 +8,7 @@ ha_release: 0.109 ha_domain: arris_tg2492lg ha_codeowners: - '@vanbalken' +ha_iot_class: Local Polling --- This platform allows you to detect presence by looking at connected devices to an Arris TG2492LG router. From 8675cbbf267a72173b9a781245d4293983b22660 Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 09:49:10 +0100 Subject: [PATCH 139/231] Add IOT class for BT Home Hub 5 (#14864) --- source/_integrations/bt_home_hub_5.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/bt_home_hub_5.markdown b/source/_integrations/bt_home_hub_5.markdown index bd63cd48695..8a55f174236 100644 --- a/source/_integrations/bt_home_hub_5.markdown +++ b/source/_integrations/bt_home_hub_5.markdown @@ -5,6 +5,7 @@ ha_category: - Presence Detection ha_release: 0.22 ha_domain: bt_home_hub_5 +ha_iot_class: Local Polling --- This platform offers presence detection by looking at connected devices to a [BT Home Hub 5](https://en.wikipedia.org/wiki/BT_Home_Hub) based router. From 3cac2878c2b643c4c70b7e8140a7a4d383b4ddad Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 09:49:50 +0100 Subject: [PATCH 140/231] Adding IoT Class for Mikrotik (#14863) --- source/_integrations/mikrotik.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/mikrotik.markdown b/source/_integrations/mikrotik.markdown index 9bbd4868aaf..514416ec689 100644 --- a/source/_integrations/mikrotik.markdown +++ b/source/_integrations/mikrotik.markdown @@ -9,6 +9,7 @@ ha_codeowners: - '@engrbm87' ha_config_flow: true ha_domain: mikrotik +ha_iot_class: Local Polling --- The `mikrotik` platform offers presence detection by looking at connected devices to a [MikroTik RouterOS](https://mikrotik.com) based router. From 11764bdb49feb3b5ad532ed9aac46f2688b8868a Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sun, 4 Oct 2020 04:51:14 -0400 Subject: [PATCH 141/231] Remove unused Dev Tools icon from Fan integration (#14861) The icon this is referencing was removed over a year ago in Home Assistant 0.96 when the sidebar was redesigned. Trying to get rid of all remaining references to these. --- source/_integrations/fan.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown index 648ffb98b66..6d2bd738cfc 100644 --- a/source/_integrations/fan.markdown +++ b/source/_integrations/fan.markdown @@ -19,13 +19,13 @@ Available services:
    -Not all fan services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon **Services**. +Not all fan services may be available for your platform. You can check which services are available for your fan(s) under **Developer Tools** -> **Services**.
    ### Service `fan.set_speed` -Sets the speed for fan device +Sets the speed for fan device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -48,7 +48,7 @@ automation: ### Service `fan.set_direction` -Sets the rotation for fan device +Sets the rotation for fan device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | @@ -71,7 +71,7 @@ automation: ### Service `fan.oscillate` -Sets the oscillation for fan device +Sets the oscillation for fan device. | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | From 0654eb8f796e4a45a9da870d7c33b00af5f45a77 Mon Sep 17 00:00:00 2001 From: sverleysen Date: Sun, 4 Oct 2020 11:02:52 +0200 Subject: [PATCH 142/231] Removed deprecated entity_id option (#14847) Removed the deprecated entity_id option for the binary_sensor template --- source/_integrations/binary_sensor.template.markdown | 6 ------ 1 file changed, 6 deletions(-) diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown index 9635fc1af12..bb6a3051560 100644 --- a/source/_integrations/binary_sensor.template.markdown +++ b/source/_integrations/binary_sensor.template.markdown @@ -47,10 +47,6 @@ sensors: description: Name to use in the frontend. required: false type: string - entity_id: - description: A list of entity IDs so the sensor only reacts to state changes of these entities. This can be used if the automatic analysis fails to find all relevant entities. - required: false - type: [string, list] unique_id: description: An ID that uniquely identifies this binary sensor. Set this to an unique value to allow customisation through the UI. required: false @@ -280,8 +276,6 @@ binary_sensor: - platform: template sensors: sun_up: - entity_id: - - sun.sun value_template: >- {{ is_state("sun.sun", "above_horizon") }} icon_template: >- From 811e7f68377430398745fac7cd50208a7b71dfe0 Mon Sep 17 00:00:00 2001 From: JamesT44 Date: Sun, 4 Oct 2020 10:04:07 +0100 Subject: [PATCH 143/231] Add IoT class for Weather integration (#14840) Co-authored-by: Franck Nijhof --- source/_integrations/weather.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 3c74ca7b68a..74a007397f1 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup your Weather platforms with Home Assis ha_category: - Weather ha_release: 0.32 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@fabaff' From b6b718a1a966d2e08be406677119831b7d95d7c1 Mon Sep 17 00:00:00 2001 From: springstan <46536646+springstan@users.noreply.github.com> Date: Sun, 4 Oct 2020 11:06:11 +0200 Subject: [PATCH 144/231] Remove logo from geizhals documentation (#14848) --- source/_integrations/geizhals.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_integrations/geizhals.markdown b/source/_integrations/geizhals.markdown index fd725ccbf52..415449d6159 100644 --- a/source/_integrations/geizhals.markdown +++ b/source/_integrations/geizhals.markdown @@ -1,7 +1,6 @@ --- title: Geizhals description: Instructions on how to integrate a Geizhals sensor into Home Assistant. -logo: geizhals.png ha_category: - Sensor ha_iot_class: Cloud Polling From ce13ef1a3d2483db3e64a9c434382f8f6f48b8fd Mon Sep 17 00:00:00 2001 From: bestlibre Date: Sun, 4 Oct 2020 11:09:19 +0200 Subject: [PATCH 145/231] add missing param description in various docs (#14849) --- source/_integrations/mailgun.markdown | 14 +++----------- source/_integrations/mastodon.markdown | 5 +++++ source/_integrations/yessssms.markdown | 5 +++++ 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/source/_integrations/mailgun.markdown b/source/_integrations/mailgun.markdown index c146ad8c0a1..f2ec994c4ea 100644 --- a/source/_integrations/mailgun.markdown +++ b/source/_integrations/mailgun.markdown @@ -74,19 +74,11 @@ notify: ``` {% configuration %} -domain: - description: This is the domain name to be used when sending out mail. - required: true - type: string -sandbox: - description: "(**Deprecated**) If a sandboxed domain is used, specify it in `domain`." +name: + description: "The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME." required: false - default: false - type: boolean -api_key: - description: This is the API Key that has been generated in your Mailgun account. - required: true type: string + default: notify recipient: description: The email address of the recipient. required: true diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown index 54af064ebe9..78f20c7ba38 100644 --- a/source/_integrations/mastodon.markdown +++ b/source/_integrations/mastodon.markdown @@ -30,6 +30,11 @@ notify: ``` {% configuration %} +name: + description: "The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME." + required: false + type: string + default: notify access_token: description: Your Mastodon access token. required: true diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index a41bac51895..164db6ee235 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -50,6 +50,11 @@ notify: ``` {% configuration %} +name: + description: "The optional parameter name allows multiple notifiers to be created. The notifier will bind to the service notify.NOTIFIER_NAME." + required: false + type: string + default: notify username: description: This is your login name (usually your phone number). Veryfy that you can use your credentials on the Yesss.at website. required: true From 8e608d740110c97ffdca6e86a5345a745ae1b007 Mon Sep 17 00:00:00 2001 From: Clayton O'Neill <27088+claytono@users.noreply.github.com> Date: Sun, 4 Oct 2020 05:10:50 -0400 Subject: [PATCH 146/231] Fix mistake in Caseta docs (#14850) Looks like the Fan section was cut and pasted from the light section, but one reference was missed. This fixes that. --- source/_integrations/lutron_caseta.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/lutron_caseta.markdown b/source/_integrations/lutron_caseta.markdown index 76fc7134653..f435be8dd41 100644 --- a/source/_integrations/lutron_caseta.markdown +++ b/source/_integrations/lutron_caseta.markdown @@ -119,7 +119,7 @@ Available services: `switch.turn_on` and `switch.turn_off`. ## Fan -After setup, fans will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light switch called 'Master Bathroom Vanity' will appear in Home Assistant as `fan.master_bedroom_ceiling_fan`. +After setup, fans will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light switch called 'Master Bedroom Ceiling Fan' will appear in Home Assistant as `fan.master_bedroom_ceiling_fan`. For more information on working with fans in Home Assistant, see the [Fans component](/components/fan/). From c8844f488fadd7dd337f58f92583df7cf41d33b1 Mon Sep 17 00:00:00 2001 From: Chris Date: Sun, 4 Oct 2020 02:13:46 -0700 Subject: [PATCH 147/231] Add IoT class to Microsoft Teams integration (#14852) --- source/_integrations/msteams.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/msteams.markdown b/source/_integrations/msteams.markdown index aa9694e235b..5e1cb30b1fc 100644 --- a/source/_integrations/msteams.markdown +++ b/source/_integrations/msteams.markdown @@ -3,6 +3,7 @@ title: Microsoft Teams description: Instructions on how to send a notification to a Microsoft Teams channel. ha_category: - Notifications +ha_iot_class: Cloud Push ha_release: 0.101 ha_codeowners: - '@peroyvind' From ac5d6fdd1231907c1ed0d9e948f4b3b18a47a696 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sun, 4 Oct 2020 05:28:27 -0400 Subject: [PATCH 148/231] Remove unused Dev Tools icon from Climate page (#14857) Removed reference to an old/unused Developer Tools icon. This was changed in the sidebar redesign in Home Assistant 0.96. --- source/_integrations/climate.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index 5956c1b6c3f..e22cb5993b7 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -18,7 +18,7 @@ Available services: `climate.set_aux_heat`, `climate.set_preset_mode`, `climate.
    -Not all climate services may be available for your platform. Be sure to check the available services Home Assistant has enabled by checking service developer tool icon **Services**. +Not all climate services may be available for your platform. You can check which climate services are available under **Developer Tools** -> **Services**.
    From 2cd69da915aad6702839686703d8ab1d0f049eb9 Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:35:41 +0100 Subject: [PATCH 149/231] Add IoT Class to UPC Connect Box (#14866) --- source/_integrations/upc_connect.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/upc_connect.markdown b/source/_integrations/upc_connect.markdown index 18921c03faf..3aff1a1b7b3 100644 --- a/source/_integrations/upc_connect.markdown +++ b/source/_integrations/upc_connect.markdown @@ -8,6 +8,7 @@ ha_codeowners: - '@pvizeli' - '@fabaff' ha_domain: upc_connect +ha_iot_class: Local Polling --- 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). From 034764ffaa9cef957fa20520220edb4d35dcc88e Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:36:16 +0100 Subject: [PATCH 150/231] Add IoT Class to AVM Fritz!Box (#14867) --- source/_integrations/fritz.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown index 19741dfe9b6..e38f2e955da 100644 --- a/source/_integrations/fritz.markdown +++ b/source/_integrations/fritz.markdown @@ -5,6 +5,7 @@ ha_category: - Presence Detection ha_release: '0.10' ha_domain: fritz +ha_iot_class: Local Polling --- The `fritz` platform offers presence detection by looking at connected devices to a [AVM FRITZ!Box](https://avm.de/produkte/fritzbox/) based router. From 6e8549a9484ff19a661ed42effce0aa8154d1f26 Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:36:59 +0100 Subject: [PATCH 151/231] Add IOT Class to Swisscom Internet Box (#14868) --- source/_integrations/swisscom.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/swisscom.markdown b/source/_integrations/swisscom.markdown index dc6c370a64a..4df355257a4 100644 --- a/source/_integrations/swisscom.markdown +++ b/source/_integrations/swisscom.markdown @@ -5,6 +5,7 @@ ha_category: - Presence Detection ha_release: 0.32 ha_domain: swisscom +ha_iot_class: Local Polling --- 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. From a502d09d5e72d92fffd8f3b34d7bd48169abb88f Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:37:50 +0100 Subject: [PATCH 152/231] Add IOT class to Sky Hub (#14869) --- source/_integrations/sky_hub.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/sky_hub.markdown b/source/_integrations/sky_hub.markdown index aafb2e22efb..078b9f0f26b 100644 --- a/source/_integrations/sky_hub.markdown +++ b/source/_integrations/sky_hub.markdown @@ -7,6 +7,7 @@ ha_release: 0.37 ha_domain: sky_hub ha_codeowners: - '@rogerselwyn' +ha_iot_class: Local Polling --- 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. From 5f9a73cd8b64d883a01a234d4458d5ec1324131f Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:38:58 +0100 Subject: [PATCH 153/231] Add IoT Class to Hitron Coda (#14870) --- source/_integrations/hitron_coda.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/hitron_coda.markdown b/source/_integrations/hitron_coda.markdown index 48d1e5aac4a..488b886afb3 100644 --- a/source/_integrations/hitron_coda.markdown +++ b/source/_integrations/hitron_coda.markdown @@ -5,6 +5,7 @@ ha_category: - Presence Detection ha_release: 0.58 ha_domain: hitron_coda +ha_iot_class: Local Polling --- This integration offers presence detection by examining devices connected to a [Rogers Hitron CODA](https://www.rogers.com/customer/support/article/wi-fi-password-hitron-coda4582-cgn3amr-cgnm3552-cgn3acr-cgn3) From d034b2d86aafd17a1db75b8502ee20d12db675c4 Mon Sep 17 00:00:00 2001 From: Welby McRoberts Date: Sun, 4 Oct 2020 10:39:43 +0100 Subject: [PATCH 154/231] Add IoT Class to Thomson (#14871) --- source/_integrations/thomson.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/thomson.markdown b/source/_integrations/thomson.markdown index 2b445ad7f38..d1427b20ee8 100644 --- a/source/_integrations/thomson.markdown +++ b/source/_integrations/thomson.markdown @@ -5,6 +5,7 @@ ha_category: - Presence Detection ha_release: 0.7 ha_domain: thomson +ha_iot_class: Local Polling --- Thomson produced networking equipment (under the brand name SpeedTouch) till 2010 and was then renamed to Technicolor. From 9247c84a50ca0acca3edcfc431e6282b7f8fbe0a Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Sun, 4 Oct 2020 05:48:37 -0400 Subject: [PATCH 155/231] Rewrote Sonarr integration page (#14872) Co-authored-by: Franck Nijhof --- source/_integrations/sonarr.markdown | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/source/_integrations/sonarr.markdown b/source/_integrations/sonarr.markdown index 99fac8d3655..d661a240d11 100644 --- a/source/_integrations/sonarr.markdown +++ b/source/_integrations/sonarr.markdown @@ -16,4 +16,20 @@ The `Sonarr` integration pulls data from a given [Sonarr](https://sonarr.tv/) in ## Configuration -Go to the integrations page in your configuration and click on new integration -> Sonarr. +To add Sonarr to Home Assistant, go to **Configuration** -> **Integrations** and click the + button in the bottom right corner. Search for Sonarr and follow the on-screen instructions to complete the setup. + +To retrieve your API key, open your Sonarr web interface and navigate to Settings then General tab. Your Sonarr API Key will be listed on this page under the Security section. + +## Sensors + +The Sonarr integration will add the following sensors: + +`sensor.sonarr_upcoming`: The number of upcoming episodes. + +The remaining five sensors are disabled by default and can be enabled on the device page. + +- `sensor.sonarr_commands`: The number of commands being run. +- `sensor.sonarr_disk_space`: Available disk space. +- `sensor.sonarr_queue`: The number of episodes in the queue. +- `sensor.sonarr_shows`: The number of series in Sonarr. +- `sensor.sonarr_wanted`: The number of episodes still wanted. From c7b6673cc86fdcffea031e0b479de1dab5f13f32 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Sun, 4 Oct 2020 12:47:06 +0200 Subject: [PATCH 156/231] Removed all {{site_root}} entries from links (#14873) --- source/_docs/automation/editor.markdown | 6 +++--- source/_docs/frontend.markdown | 2 +- source/_integrations/automation.markdown | 2 +- source/_integrations/config.markdown | 2 +- source/_integrations/cups.markdown | 2 +- source/_integrations/datadog.markdown | 4 ++-- source/_integrations/discord.markdown | 6 +++--- source/_integrations/dweet.markdown | 2 +- source/_integrations/ecobee.markdown | 4 ++-- source/_integrations/filter.markdown | 2 +- source/_integrations/flock.markdown | 4 ++-- source/_integrations/garadget.markdown | 2 +- source/_integrations/geo_rss_events.markdown | 2 +- source/_integrations/geonetnz_volcano.markdown | 4 ++-- source/_integrations/history.markdown | 4 ++-- source/_integrations/hp_ilo.markdown | 4 ++-- source/_integrations/ign_sismologia.markdown | 2 +- source/_integrations/isy994.markdown | 6 +++--- source/_integrations/lifx.markdown | 4 ++-- source/_integrations/light.markdown | 2 +- source/_integrations/limitlessled.markdown | 2 +- source/_integrations/locative.md | 2 +- source/_integrations/mpchc.markdown | 2 +- source/_integrations/mystrom.markdown | 2 +- source/_integrations/nest.markdown | 2 +- source/_integrations/netdata.markdown | 2 +- source/_integrations/nmbs.markdown | 2 +- source/_integrations/nsw_rural_fire_service_feed.markdown | 4 ++-- source/_integrations/opengarage.markdown | 2 +- source/_integrations/pyload.markdown | 2 +- source/_integrations/qld_bushfire.markdown | 2 +- source/_integrations/sabnzbd.markdown | 2 +- source/_integrations/seven_segments.markdown | 2 +- source/_integrations/statistics.markdown | 2 +- source/_integrations/supervisord.markdown | 2 +- source/_integrations/tellduslive.markdown | 2 +- source/_integrations/time_date.markdown | 2 +- source/_integrations/trafikverket_weatherstation.markdown | 2 +- source/_integrations/transmission.markdown | 4 ++-- source/_integrations/usgs_earthquakes_feed.markdown | 4 ++-- source/_integrations/watson_tts.markdown | 2 +- source/_integrations/wsdot.markdown | 2 +- ...me-control-home-automation-and-the-smart-home.markdown | 8 ++++---- ...2015-01-04-hey-pushbullet-nice-talking-to-you.markdown | 2 +- ...01-11-bootstrapping-your-setup-with-discovery.markdown | 2 +- source/_posts/2015-01-13-nest-in-da-house.markdown | 2 +- source/_posts/2015-02-07-looking-at-the-past.markdown | 4 ++-- source/_posts/2015-03-08-new-logo.markdown | 2 +- ...2016-08-27-notifications-hue-fake-unification.markdown | 4 ++-- .../2016-09-10-notify-group-reload-api-pihole.markdown | 2 +- .../2016-10-08-hassbian-rest-digital-ocean.markdown | 4 ++-- .../2017-05-20-automation-editor-zwave-panel-ocr.markdown | 6 +++--- 52 files changed, 76 insertions(+), 76 deletions(-) diff --git a/source/_docs/automation/editor.markdown b/source/_docs/automation/editor.markdown index 37f4886676d..a1ad5f128a3 100644 --- a/source/_docs/automation/editor.markdown +++ b/source/_docs/automation/editor.markdown @@ -10,19 +10,19 @@ From the UI choose **Configuration** which is located in the sidebar, then click Choose a meaningful name for your automation rules.

    - +

    If the value of the sensor is greater than 10, then the automation rule should apply.

    - +

    Firing a [persistent notification](/integrations/persistent_notification/) is the result.

    - +

    As "Service Data" we want a simple text that is shown as part of the notification. diff --git a/source/_docs/frontend.markdown b/source/_docs/frontend.markdown index d8edee51223..c743b25912b 100644 --- a/source/_docs/frontend.markdown +++ b/source/_docs/frontend.markdown @@ -6,7 +6,7 @@ description: "Frontend of Home Assistant." The frontend of Home Assistant is built with [Polymer](https://www.polymer-project.org/).

    - +

    The [User Interface section](/cookbook/#user-interface) can give you some starting points to expand the frontend. diff --git a/source/_integrations/automation.markdown b/source/_integrations/automation.markdown index 39b85f54209..dfd6a7de19c 100644 --- a/source/_integrations/automation.markdown +++ b/source/_integrations/automation.markdown @@ -15,7 +15,7 @@ Please see [Automating Home Assistant](/docs/automation/) for in-depth documentation on how to use the automation integration.

    - +

    ## Configuration diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 7d563b166e0..5cba33bb937 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -36,7 +36,7 @@ This section enables you to manage the name, location, and unit system of your H This section enables you to control Home Assistant from within Home Assistant. Check your configuration, reload the core, groups, scripts, automations, and the Home Assistant process itself with a single mouse click.

    - +

    ### Persons diff --git a/source/_integrations/cups.markdown b/source/_integrations/cups.markdown index 0023de15fad..1dca647a95f 100644 --- a/source/_integrations/cups.markdown +++ b/source/_integrations/cups.markdown @@ -19,7 +19,7 @@ You will need to install the `python3-dev` or `python3-devel` package and the de To set up the sensor the "Queue Name" of the printer is needed. The fastest way to get it, is to visit the CUPS web interface at "http://[IP ADDRESS PRINT SERVER]:631" and go to "Printers".

    - +

    ## Configuration diff --git a/source/_integrations/datadog.markdown b/source/_integrations/datadog.markdown index 634a5d8038f..c961445c118 100644 --- a/source/_integrations/datadog.markdown +++ b/source/_integrations/datadog.markdown @@ -12,13 +12,13 @@ The `datadog` integration sends all state changes to [Datadog](https://www.datad Datadog allows you to analyze, monitor, cross-reference and alert upon your data. You can use it to detect statistical anomalies, see graphs across multiple sources in real-time, send critical alerts to Slack, etc.

    - +

    The integration also sends events from the logbook into Datadog, allowing you to correlate these events with your data.

    - +

    To use the `datadog` integration in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index 4a54a2dc38c..5e11cea70ef 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -42,7 +42,7 @@ token: Bots can send messages to servers and users or attach local available images. To add the bot to a server you are an admin on, get the details of the bot from the [Discord My Apps page](https://discordapp.com/developers/applications/me).

    - +

    Now use the Discord Authorization page with the **Client ID** of your [bot](https://discordapp.com/developers/docs/topics/oauth2#bots). @@ -50,7 +50,7 @@ Now use the Discord Authorization page with the **Client ID** of your [bot](http `https://discordapp.com/api/oauth2/authorize?client_id=[CLIENT_ID]&scope=bot&permissions=0`

    - +

    Wait for the confirmation which should say "Authorized". @@ -58,7 +58,7 @@ Wait for the confirmation which should say "Authorized". Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. In The Discord application go to **Settings** > **Appearance** > **Check developer mode**.

    - +

    Right click channel name and copy the channel ID (**Copy ID**). diff --git a/source/_integrations/dweet.markdown b/source/_integrations/dweet.markdown index 377126fce0a..5191378e924 100644 --- a/source/_integrations/dweet.markdown +++ b/source/_integrations/dweet.markdown @@ -14,7 +14,7 @@ ha_domain: dweet 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 09a9b5cb62b..f51ffb4efa5 100644 --- a/source/_integrations/ecobee.markdown +++ b/source/_integrations/ecobee.markdown @@ -65,8 +65,8 @@ api_key: {% endconfiguration %}

    - - + +

    You must [restart Home Assistant](/docs/configuration/#reloading-changes) for the changes to take effect. After restarting, navigate to the **Configuration** > **Integrations** menu, hit **Configure** next to the discovered `ecobee` entry, and continue to authorize the app according to the above **Automatic Configuration**, starting at step 2. diff --git a/source/_integrations/filter.markdown b/source/_integrations/filter.markdown index dfb8eb17227..80d5469f727 100644 --- a/source/_integrations/filter.markdown +++ b/source/_integrations/filter.markdown @@ -17,7 +17,7 @@ The `filter` platform enables sensors that process the states of other entities. `filter` applies a signal processing algorithm to a sensor, previous and current states, and generates a `new state` given the chosen algorithm. The next image depicts an original sensor and the filter sensor of that same sensor using the [History Graph](/lovelace/history-graph/) component.

    - +

    ## Configuration diff --git a/source/_integrations/flock.markdown b/source/_integrations/flock.markdown index 7c9b9c3e799..07978084b99 100644 --- a/source/_integrations/flock.markdown +++ b/source/_integrations/flock.markdown @@ -16,13 +16,13 @@ The `flock` platform uses [Flock.com](https://flock.com) to deliver notification Go to the [Flock.com Admin website](https://admin.flock.com/#!/webhooks) and create a new "Incoming Webhooks". Choose a channel to send the notifications from Home Assistant to, specify a name and press *Save and Generate URL*.

    - +

    You will need the last part of the URL which is the `access_token` for your room.

    - +

    ## Configuration diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown index 0b60db49f8b..d9bfcaef045 100644 --- a/source/_integrations/garadget.markdown +++ b/source/_integrations/garadget.markdown @@ -67,7 +67,7 @@ If provided, the **access_token** will be used, otherwise the **username** and * ## Example

    - +

    {% raw %} diff --git a/source/_integrations/geo_rss_events.markdown b/source/_integrations/geo_rss_events.markdown index fabb67fa044..9e512cd9b1f 100644 --- a/source/_integrations/geo_rss_events.markdown +++ b/source/_integrations/geo_rss_events.markdown @@ -15,7 +15,7 @@ The `geo_rss_events` sensor retrieves events from a GeoRSS feed and shows inform This sensor is particularly useful if events occur unexpectedly in the vicinity of the home while the GeoRSS feed also contains many events representing distant unrelated entries. Typical examples are bush fires alerts or earthquakes.

    - +

    The reference point for comparing the distance is by default defined by `latitude` and `longitude` in the basic configuration. diff --git a/source/_integrations/geonetnz_volcano.markdown b/source/_integrations/geonetnz_volcano.markdown index 209839d4d89..ead5d2fd47c 100644 --- a/source/_integrations/geonetnz_volcano.markdown +++ b/source/_integrations/geonetnz_volcano.markdown @@ -25,11 +25,11 @@ to show on the default map automatically. The data is updated every 5 minutes.

    - +

    - +

    diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown index 49a7f935ac4..f6d75028d20 100644 --- a/source/_integrations/history.markdown +++ b/source/_integrations/history.markdown @@ -24,8 +24,8 @@ history: ```

    - - + +

    diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown index 263334aa4c8..9da5cce69a7 100644 --- a/source/_integrations/hp_ilo.markdown +++ b/source/_integrations/hp_ilo.markdown @@ -15,7 +15,7 @@ If the ILO or specified jsonpath query returns only a single value (e.g., a temp Some more details about what can be retrieved from these sensors is available in the [python-hpilo documentation](https://seveas.github.io/python-hpilo/).

    - +

    ## Configuration @@ -114,7 +114,7 @@ sensor: ```

    - +

    ## Hardware specifics diff --git a/source/_integrations/ign_sismologia.markdown b/source/_integrations/ign_sismologia.markdown index 2c976e21462..d2b0daeb1e7 100644 --- a/source/_integrations/ign_sismologia.markdown +++ b/source/_integrations/ign_sismologia.markdown @@ -23,7 +23,7 @@ on the default map automatically, or on a map card by defining the source of each entity.

    - +

    The data is updated every 5 minutes. diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index bfae5b8bcae..d9230e4763d 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -292,7 +292,7 @@ A device is created by creating a directory, with the name for the device, under A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. The *status* program requires that you create a variable with the name of your choice. This variable will store the actual status of the new device and will be updated by the *action* program.

    - +

    The *status* program in this directory is what indicates the state of the device: @@ -304,7 +304,7 @@ The *status* program in this directory is what indicates the state of the device - *switch* on if the clause returns true, otherwise off.

    - +

    The *actions* program indicates what should be performed for the following device services: @@ -315,7 +315,7 @@ The *actions* program indicates what should be performed for the following devic - *switch* the THEN clause is evaluated for the turn_on service, the ELSE clause is evaluated for the turn_off service.

    - +

    The example program above shows how to control a legacy X10 device from Home Assistant using an ISY controller. diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown index 184939259c7..63240ee0ed1 100644 --- a/source/_integrations/lifx.markdown +++ b/source/_integrations/lifx.markdown @@ -32,11 +32,11 @@ Change the light to a new state. | `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). | `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). | `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. -| `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/integrations/light/#service-lightturn_on) to specify the new state. +| `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`](/integrations/light/#service-lightturn_on) to specify the new state. ## Light effects -The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`]({{site_root}}/integrations/light/#service-lightturn_on) service, for example like this: +The LIFX platform supports several light effects. You can start these effects with default options by using the `effect` attribute of the normal [`light.turn_on`](/integrations/light/#service-lightturn_on) service, for example like this: ```yaml automation: - alias: ... diff --git a/source/_integrations/light.markdown b/source/_integrations/light.markdown index 71ede78fe02..bc739ce0243 100644 --- a/source/_integrations/light.markdown +++ b/source/_integrations/light.markdown @@ -18,7 +18,7 @@ The `.default` suffix should be added to the entity identifier of each light to ### Service `light.turn_on` -Turns one light on or multiple lights on using [groups]({{site_root}}/integrations/group/). +Turns one light on or multiple lights on using [groups](/integrations/group/). Most lights do not support all attributes. You can check the integration documentation of your particular light for hints, but in general, you will have to try things out and see what works. diff --git a/source/_integrations/limitlessled.markdown b/source/_integrations/limitlessled.markdown index d94d5800f9d..98b22a1098e 100644 --- a/source/_integrations/limitlessled.markdown +++ b/source/_integrations/limitlessled.markdown @@ -116,7 +116,7 @@ automation: ### Properties -Refer to the [light]({{site_root}}/integrations/light/) documentation for general property usage, but keep in mind the following notes specific to LimitlessLED. +Refer to the [light](/integrations/light/) documentation for general property usage, but keep in mind the following notes specific to LimitlessLED. - **RGBWW** (Only supported on v6 bridges) - *Color*: There are 25,856 color possibilities along the LimitlessLED color spectrum. For colors, hue and saturation can be used, but not lightness. If you select a color with lightness, Home Assistant will calculate the nearest valid LimitlessLED color. In white mode, the temperature can be set. diff --git a/source/_integrations/locative.md b/source/_integrations/locative.md index e07784c7914..732414d24b5 100644 --- a/source/_integrations/locative.md +++ b/source/_integrations/locative.md @@ -18,7 +18,7 @@ Install on your smartphone: To configure Locative, you must set it up via the integrations panel in the configuration screen. You must set up the app to send a POST request to your Home Assistant server at the webhook URL provided by the integration during setup. When you enter or exit a geofence, Locative will send the appropriate request to that URL, updating Home Assistant. You are not able to specify a device name in Locative. Instead, you will need to look in your `dev-state` menu for a new device that Locative will have created on it's first `GET`. If you had been or are using Owntracks as well, you will need to update the device name used in the Owntracks setup with the name that Locative generated.

    - +

    When you enter a geofence, your location name in Home Assistant will be set to the name of the geofence in Locative. When you exit a geofence, your location name in Home Assistant will be set to "not home". diff --git a/source/_integrations/mpchc.markdown b/source/_integrations/mpchc.markdown index b0e105ec25c..c78fb3a6a03 100644 --- a/source/_integrations/mpchc.markdown +++ b/source/_integrations/mpchc.markdown @@ -13,7 +13,7 @@ The `mpchc` platform allows you to connect a [Media Player Classic Home Cinema]( For this integration to function, you will need to enable the Web Interface in the MPC-HC options dialog.

    - +

    If the server running Home Assistant is not the same device that is running MPC-HC, you will need to ensure that the *allow access from localhost only* option is not set. diff --git a/source/_integrations/mystrom.markdown b/source/_integrations/mystrom.markdown index b21b5db3d45..ffc9ddfb776 100644 --- a/source/_integrations/mystrom.markdown +++ b/source/_integrations/mystrom.markdown @@ -160,7 +160,7 @@ The `mystrom` switch platform allows you to control the state of your [myStrom]( Make sure that you have enabled the REST API under **Advanced** in the web frontend of the switch.

    - +

    To use your myStrom switch in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown index 3df50afe5f7..b4babfd61d4 100644 --- a/source/_integrations/nest.markdown +++ b/source/_integrations/nest.markdown @@ -272,7 +272,7 @@ Please note due to limitations with the European Nest Thermostat E, integration

    - +

    ## Sensor diff --git a/source/_integrations/netdata.markdown b/source/_integrations/netdata.markdown index a687df52991..71b2b112e43 100644 --- a/source/_integrations/netdata.markdown +++ b/source/_integrations/netdata.markdown @@ -17,7 +17,7 @@ The `netdata` sensor platform allows you to display information collected by [Ne Getting the details to configure the sensors is a bit tricky as Netdata uses different name for the `element:` value that is required. To get the value for the `data_group:` use Netdata's web interface. `1.` marks the name for the `data_group:`. `2.` are the names for the element to show in Home Assistant. The name that is shown can be different than the name under which the metrics are available.

    - +

    To check if the `element:` name matches the name in the Netdata frontend, use `curl` with the IP address of your Netdata instance, its port and the `data_group`: diff --git a/source/_integrations/nmbs.markdown b/source/_integrations/nmbs.markdown index b353dabe94c..e84712cbe7b 100644 --- a/source/_integrations/nmbs.markdown +++ b/source/_integrations/nmbs.markdown @@ -59,6 +59,6 @@ show_on_map: {% endconfiguration %}

    - +

    Example using the Lovelace Attributes custom card

    diff --git a/source/_integrations/nsw_rural_fire_service_feed.markdown b/source/_integrations/nsw_rural_fire_service_feed.markdown index 594c787cdba..7b226e43979 100644 --- a/source/_integrations/nsw_rural_fire_service_feed.markdown +++ b/source/_integrations/nsw_rural_fire_service_feed.markdown @@ -13,13 +13,13 @@ ha_domain: nsw_rural_fire_service_feed The `nsw_rural_fire_service_feed` platform lets you integrate a GeoJSON feed provided by the [NSW Rural Fire Service](https://www.rfs.nsw.gov.au/fire-information/fires-near-me) with information about bush fires, grass fires, hazard reductions and more. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location.

    - +

    Entities are generated, updated and removed automatically with each update from the feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity.

    - +

    The entity's information can be used for example if a bush fire that produces smoke or embers is reported close to your home, and you want to automatically close windows, turn on a sprinkler system or simply send yourself a reminder to clean the gutters from dry leaves. diff --git a/source/_integrations/opengarage.markdown b/source/_integrations/opengarage.markdown index 8ce7357c01f..cf8ca7d16f1 100644 --- a/source/_integrations/opengarage.markdown +++ b/source/_integrations/opengarage.markdown @@ -76,7 +76,7 @@ covers: **Example with more detail:**

    - +

    {% raw %} diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown index 26a954af583..c9056b7c116 100644 --- a/source/_integrations/pyload.markdown +++ b/source/_integrations/pyload.markdown @@ -52,5 +52,5 @@ ssl: If everything is setup correctly, the download speed will show up in the frontend.

    - +

    diff --git a/source/_integrations/qld_bushfire.markdown b/source/_integrations/qld_bushfire.markdown index 801ce5629fd..785c1870184 100644 --- a/source/_integrations/qld_bushfire.markdown +++ b/source/_integrations/qld_bushfire.markdown @@ -23,7 +23,7 @@ on the default map automatically, or on a map card by defining the source of each entity.

    - +

    The data is updated every 5 minutes. diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown index fa3e9db076a..6e957974efc 100644 --- a/source/_integrations/sabnzbd.markdown +++ b/source/_integrations/sabnzbd.markdown @@ -14,7 +14,7 @@ The `sabnzbd` integration will allow you to monitor and control your downloads w If SABnzbd is discovered on your network, you can enter your API Key in the Configurator. Press "CONFIGURE" to do it.

    - +

    This will create services for interacting with SABnzbd in scripts and automations, but no sensors will be created. diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown index 8f5bce76965..c081034c085 100644 --- a/source/_integrations/seven_segments.markdown +++ b/source/_integrations/seven_segments.markdown @@ -130,7 +130,7 @@ image_processing: ```

    - +

    With the help of a [template sensor](/integrations/template), the value can be shown as badge. diff --git a/source/_integrations/statistics.markdown b/source/_integrations/statistics.markdown index eef4cb23b10..e2948782569 100644 --- a/source/_integrations/statistics.markdown +++ b/source/_integrations/statistics.markdown @@ -62,5 +62,5 @@ precision: {% endconfiguration %}

    - +

    diff --git a/source/_integrations/supervisord.markdown b/source/_integrations/supervisord.markdown index 7ece0e19100..656012cc364 100644 --- a/source/_integrations/supervisord.markdown +++ b/source/_integrations/supervisord.markdown @@ -20,7 +20,7 @@ port=127.0.0.1:9001 After a restart of `supervisord` you should be able to access the web interface. If needed then this could be added as an [iFrame panel](/integrations/panel_iframe/).

    - +

    To use this sensor in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_integrations/tellduslive.markdown b/source/_integrations/tellduslive.markdown index fc99d063d2a..e34389cbd8c 100644 --- a/source/_integrations/tellduslive.markdown +++ b/source/_integrations/tellduslive.markdown @@ -19,7 +19,7 @@ ha_domain: tellduslive 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. -Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery]({{site_root}}/integrations/discovery/) integration is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. +Home Assistant will automatically discover the presence of a Tellstick Net or Tellstick ZNet on your local network if the [discovery](/integrations/discovery/) integration is enabled. When discovery and the key exchange with Telldus Live have been completed, you will be presented with an option to integrate with the cloud or local API for direct communication with your hardware in your LAN. Local API supports only one device at this stage. Local API is only supported with the Znet Lite products, the older hardware (such as Tellstick Net) does not support local API. ## Configuration diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown index 2be41354a75..656078cd769 100644 --- a/source/_integrations/time_date.markdown +++ b/source/_integrations/time_date.markdown @@ -32,5 +32,5 @@ sensor: - **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).

    - +

    diff --git a/source/_integrations/trafikverket_weatherstation.markdown b/source/_integrations/trafikverket_weatherstation.markdown index dbf0467d8dc..b57991c0b0e 100644 --- a/source/_integrations/trafikverket_weatherstation.markdown +++ b/source/_integrations/trafikverket_weatherstation.markdown @@ -91,7 +91,7 @@ Please click [here](https://api.trafikinfo.trafikverket.se/) and register to obt Click [here](https://www.trafikverket.se/trafikinformation/vag/?TrafficType=personalTraffic&map=1/606442.17/6886316.22/&Layers=RoadWeather%2b) to get a map of valid weather stations. Once a station is found, copy the name according to the below picture and paste it in your `configuration.yaml` file as the `station` variable.

    - +

    ## Examples diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index 1079880051b..d9eff6bd5ff 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -21,13 +21,13 @@ The `transmission` integration allows you to monitor your downloads with [Transm To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed.

    - +

    If everything is set up correctly, the details will show up in the frontend.

    - +

    ## Configuration diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown index 3ce7e4b9dcf..2a24463e2f9 100644 --- a/source/_integrations/usgs_earthquakes_feed.markdown +++ b/source/_integrations/usgs_earthquakes_feed.markdown @@ -13,13 +13,13 @@ ha_domain: usgs_earthquakes_feed The `usgs_earthquakes_feed` platform lets you integrate a GeoJSON feed provided by the [U.S. Geological Survey](https://earthquake.usgs.gov/) with information about seismic events like earthquakes. It retrieves incidents from a feed and shows information of those incidents filtered by distance to Home Assistant's location.

    - +

    Entities are generated, updated and removed automatically with each update from the feed. Each entity defines latitude and longitude and will be shown on the map automatically. The distance in kilometers is available as the state of each entity.

    - +

    The data is updated every 5 minutes. diff --git a/source/_integrations/watson_tts.markdown b/source/_integrations/watson_tts.markdown index f2dc28c131b..f0235ebd945 100644 --- a/source/_integrations/watson_tts.markdown +++ b/source/_integrations/watson_tts.markdown @@ -32,7 +32,7 @@ tts: You can get these tokens after you generated the credentials on the IBM Cloud console:

    - +

    {% configuration %} diff --git a/source/_integrations/wsdot.markdown b/source/_integrations/wsdot.markdown index cba9c7cee98..d6263dbf6e4 100644 --- a/source/_integrations/wsdot.markdown +++ b/source/_integrations/wsdot.markdown @@ -87,5 +87,5 @@ WSDOT does provide information about ferry schedules, mountain passes, tolls, et Here's an example of the sensor in use:

    - +

    diff --git a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown index 57c89c7b547..aef14d092d6 100644 --- a/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown +++ b/source/_posts/2014-12-26-home-control-home-automation-and-the-smart-home.markdown @@ -18,9 +18,9 @@ There is no widely adopted open standard for smart device communication. This pr As a bare minimum a hub has to keep track of the state of each device and should be able to control them if possible. For example, it has to know which lights are on or off and offer a way to control the lights. For a sensor it only has to know the value. A hub with these capabilities offers **home control**.

    - + Hub dashboard example + src='/images/screenshots/nexus_7_dashboard.png' /> Example of a hub's dashboard. Showing the state of 2 persons, 4 lights and the sun.

    @@ -38,9 +38,9 @@ A glimpse today at how the future can look is the [Nest thermostat](https://nest All this results in the following overview of Home Automation.

    - + Home Automation landscape + src='/images/architecture/home_automation_landscape.png' /> Overview of the home automation landscape.

    diff --git a/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown b/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown index 2e6acf5183f..2cb35ceb7f1 100644 --- a/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown +++ b/source/_posts/2015-01-04-hey-pushbullet-nice-talking-to-you.markdown @@ -13,7 +13,7 @@ One of the things that was missing in Home Assistant for a while was a way to co The new notify component will take in messages and tells them to the user. For now this will be powered by the very awesome [PushBullet](https://www.pushbullet.com/) but any other messaging platform can be easily added.

    - + A message triggered by the simple_alarm component is shown by PushBullet on the Moto360.

    diff --git a/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown b/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown index c91d1f9296e..b594c8269ff 100644 --- a/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown +++ b/source/_posts/2015-01-11-bootstrapping-your-setup-with-discovery.markdown @@ -20,4 +20,4 @@ To enable the discovery component, add the following to your `home-assistant.con [discovery] ``` -A new [discovery section]({{site_root}}/developers/add_new_platform/#discovery) has been added to the Adding a new platform page with instructions how to make your platform discoverable. +A new [discovery section](/developers/add_new_platform/#discovery) has been added to the Adding a new platform page with instructions how to make your platform discoverable. diff --git a/source/_posts/2015-01-13-nest-in-da-house.markdown b/source/_posts/2015-01-13-nest-in-da-house.markdown index 9de412752d8..4642af07161 100644 --- a/source/_posts/2015-01-13-nest-in-da-house.markdown +++ b/source/_posts/2015-01-13-nest-in-da-house.markdown @@ -11,7 +11,7 @@ categories: Release-Notes For thet majority of its existence, Home Assistant primary focus was on presence detection, lights and switches. But not anymore as we're expanding the supported devices. Today, we're proud to introduce Nest Thermostat integration for Home Assistant contributed by [Stefano Fiorini](https://github.com/sfiorini)!

    - +

    The new integration exists out of two parts: a generic thermostat component and a Nest platform implementation. The initial version implements provides a read-only card and services to control it. The plan is in the future to add temperature and away mode controls from the thermostat card and more info dialog. Internally, we are using the Python package [python-nest by jkoelker](https://github.com/jkoelker/python-nest) to talk to the Nest. diff --git a/source/_posts/2015-02-07-looking-at-the-past.markdown b/source/_posts/2015-02-07-looking-at-the-past.markdown index 08b4db93801..16ec71f5d71 100644 --- a/source/_posts/2015-02-07-looking-at-the-past.markdown +++ b/source/_posts/2015-02-07-looking-at-the-past.markdown @@ -20,8 +20,8 @@ Adding history to the UI was a challenge on itself because the old UI did not su The history component will be enabled for new users by default. For current users, run `scripts/update` to upgrade to the latest version and add `[history]` to your `home-assistant.conf` file.

    - - + +

    diff --git a/source/_posts/2015-03-08-new-logo.markdown b/source/_posts/2015-03-08-new-logo.markdown index 753e0d06791..da5e6ed1fb5 100644 --- a/source/_posts/2015-03-08-new-logo.markdown +++ b/source/_posts/2015-03-08-new-logo.markdown @@ -13,6 +13,6 @@ It is well known that you are either a good programmer or a good designer. It's The new logo follows Googles material design spec. It uses the blue color that Home Assistant uses in the interface and it comes in two versions: a high detailed version (for homescreen icon etc) and a simple version (for favicon etc).

    - + The old logo, the new detailed logo and the new simple logo.

    diff --git a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown index 54dd80b5bd7..3e99a62ed72 100644 --- a/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown +++ b/source/_posts/2016-08-27-notifications-hue-fake-unification.markdown @@ -59,7 +59,7 @@ We have some excellent upgrades to the notification system coming to you in 0.27 This release adds support for [HTML5] push notifications on Chrome/Firefox/Opera on both desktop and Android devices. This means that you can send a notification to your phone even when your Home Assistant is not open in your mobile browser. When using Chrome you can even include 2 action buttons so that you can control your Home Assistant from your phone's lock screen, allowing you to do things like sound alarms or unlock your front door, all without leaving the notification. Thanks again to me ([@robbiet480]) and Paulus ([@balloob]) for all the hard work on this!

    - +

    #### Notification Groups @@ -83,7 +83,7 @@ hass --script check_config This release includes a big push on making sure all platforms contain proper configuration validation. This should help in getting your configuration right. Thanks to [@fabaff], [@pavoni], [@pvizeli], [@nkgilley] for all the hard work on this, you all rock!

    - +

    ### FFMpeg motion/noise sensing diff --git a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown index ab4fe4fe15d..8481d2f683a 100644 --- a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown +++ b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown @@ -15,7 +15,7 @@ It's already time for 0.28 thanks to our super short release cycles. Now, it' of This release brings you a huge improvement of the [automation] and [group] handling. Both can be reloaded without a Home Assistant restart by calling their new reload services. The automations can be controlled directly from the frontend.

    - +

    ### Raspberry Pi installation guide diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown index c7079ba0997..d49233c9e4c 100644 --- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown +++ b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown @@ -21,7 +21,7 @@ To reduce the run-time of your tests, [@balloob] did a lot of tweaking. For now All configuration sample entries are now minimized. This should help to avoid problem for starters and newbies as they only get what's needed and not a full sample with all optional entries. If there is an issue with an entry in your `configuration.yaml` file the error message will provide you an URL that point to the documentation.

    - +

    As soon as the [Hacktoberfest] started there were a lot of incoming Pull Requests for the documentation. A huge "Thank you" to all participants. Especially, we would like to give a cookie to [@hillaryfraley]. She created around a dozen Pull Requests so far and didn't only fix typos but complete sections. The [Hacktoberfest] is still on-going and we are looking forward to get more Pull Requests. @@ -31,7 +31,7 @@ As soon as the [Hacktoberfest] started there were a lot of incoming Pull Request With the [statistics sensor][stats-sensor] we would like to introduce a new sensor that is similar to the [template sensor][template-sensor] or the [trend sensor][trend-sensor]. This sensor is consuming values from another sensor and is doing some statistical analysis of the data. Over a group of samples is the average/mean, the min/max, the total, the standard deviation, and the variance calculated which can be used in your automation rules. If the source is a binary sensor then the state changes are counted.

    - +

    As the results are processed on-the-fly you still need to use the data from your database for an in-depth analysis of your stored information. Check the latest [notebook] for doing statistics with your Home Assistant database. diff --git a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown index eeb26207335..a5b4e53133f 100644 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown @@ -16,7 +16,7 @@ Welcome to another great release of Home Assistant! While some of contributors a First thing for this release is a feature that has been requested a lot: an automation editor! It's still experimental - and many things are still in progress - but it works! You can create new automations and edit existing ones. If you start a new config, you're all good to go. Otherwise check [these instructions](/docs/automation/editor/) to get your automations ready for editing in the UI.

    - +

    Check this [video](https://youtu.be/0j_hWdCTip4) by [Ben](https://twitter.com/BRUHautomation) from [BRUHautomation](http://www.bruhautomation.com/) to see the new release in action. @@ -30,7 +30,7 @@ As the editor is experimental, there are some limitations. These include that Ch On the Z-Wave front a lot has happened. The biggest one is that we have a major extension of the Z-Wave panel thanks to [@turbokongen]! You will now be able to change config parameters and manage your devices.

    - +

    Thanks to the work by the Python Open Z-Wave team we are now able to install it on demand from PyPi! There is no longer a need to pre-compile it yourself. This should give us the guarantee that we work with the Python Open Z-Wave version that the code expects. @@ -45,7 +45,7 @@ Next to that [@armills] has lead the charge and managed to get full test coverag This release also contains two integrations which could help you to make non-smart devices a little smarter. The [`file` sensor][sensor.file docs] and the [`seven_segments` OCR image processing platform][image_processing.seven_segments docs]. The first simply reads a plain-text file which was created by a logger or alike. The latter one extracts the value from a captured image that shows a seven-segments display.

    - +

    And last, but not least, our Docker image is now based off Python 3.6. This version is faster and uses less memory than Python 3.5. Win! From 412a555fdc7f02d01e8bdf83da5df21356f00acf Mon Sep 17 00:00:00 2001 From: JamesT44 Date: Sun, 4 Oct 2020 11:56:41 +0100 Subject: [PATCH 157/231] Add IoT class for Air Quality integration (#14842) Co-authored-by: Franck Nijhof --- source/_integrations/air_quality.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/air_quality.markdown b/source/_integrations/air_quality.markdown index b88225b8258..f1c2f6a8fde 100644 --- a/source/_integrations/air_quality.markdown +++ b/source/_integrations/air_quality.markdown @@ -2,6 +2,7 @@ title: Air Quality description: Instructions on how to add air quality sensors with Home Assistant ha_release: 0.85 +ha_iot_class: ~ ha_domain: air_quality --- From e41c060098a2c6515974cd1d3c8b59253f585878 Mon Sep 17 00:00:00 2001 From: johanf85 <43075793+johanf85@users.noreply.github.com> Date: Sun, 4 Oct 2020 13:04:53 +0200 Subject: [PATCH 158/231] Added states (#14874) Co-authored-by: Franck Nijhof --- source/_integrations/climate.markdown | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index e22cb5993b7..5994b88bf60 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -220,3 +220,14 @@ 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. To target all climate devices, use `all`. + +## Attributes + +The climate entity has extra attributes to represent the state of the thermostat. + +| Name | Description | +| ---- | ----------- | +| `hvac_action` | Current state: `heat` / `cool` / `idle`. +| `fan` | If the fan is currently on or off: `on` / `off`. + +It depends on the thermostat you are using which states are available. From 906969ff9cb094e87421fd9f65a1e2660259cd68 Mon Sep 17 00:00:00 2001 From: Ketil Moland Olsen Date: Sun, 4 Oct 2020 20:11:32 +0200 Subject: [PATCH 159/231] Fixed dead link to MAX! Cube (#14884) The link MAX! Cube was dead (404), and has been updated to the device's new page. --- source/_integrations/maxcube.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index f76aa4ab07a..f2b91d5d1c6 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -10,7 +10,7 @@ ha_iot_class: Local Polling ha_domain: maxcube --- -[eQ-3 MAX!](https://www.eq-3.com/products/max.html) integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported integrations available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names. +[eQ-3 MAX!](https://www.eq-3.com/products/homematic/detail/max-cube-lan-gateway.html) integration for Home Assistant allows you to connect eQ-3 MAX! components via the eQ-3 MAX! Cube. The components connects to the eQ-3 MAX! Cube via TCP and automatically makes all supported integrations available in Home Assistant. The name for each device is created by concatenating the MAX! room and device names. There is currently support for the following device types within Home Assistant: From 5647cbe8deef6725e056d0073ed851daa93fe18e Mon Sep 17 00:00:00 2001 From: Evan Morse <32440312+RowdyDog12@users.noreply.github.com> Date: Sun, 4 Oct 2020 13:13:32 -0500 Subject: [PATCH 160/231] Fix Belkin Wemo URL Link (#14883) Replaced the broken Wemo product link with an updated current version. --- source/_integrations/wemo.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/wemo.markdown b/source/_integrations/wemo.markdown index 3cd171338e2..64e2f69435c 100644 --- a/source/_integrations/wemo.markdown +++ b/source/_integrations/wemo.markdown @@ -13,7 +13,7 @@ ha_config_flow: true ha_domain: wemo --- -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. +The `wemo` integration is the main integration to integrate various [Belkin WeMo](https://www.belkin.com/us/c/wemo/) devices with Home Assistant. There is currently support for the following device types within Home Assistant: From 5f3df15d345e1076d8ac829d89a15dec6b315f60 Mon Sep 17 00:00:00 2001 From: Mauricio Bonani Date: Sun, 4 Oct 2020 15:03:53 -0400 Subject: [PATCH 161/231] Fix NodeMCU GPIO documentation link (#14880) --- source/_integrations/konnected.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/konnected.markdown b/source/_integrations/konnected.markdown index 38ac557fb1b..ff429c1d3fb 100644 --- a/source/_integrations/konnected.markdown +++ b/source/_integrations/konnected.markdown @@ -244,7 +244,7 @@ devices: ### Configuration Notes - Either `pin` or `zone` is required for each actuator or sensor. Do not use both in the same definition. -- `pin` represents the number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are `1`, `2`, `5`, `6`, `7`, `8`, and `9`. Pin based configuration is only allowed with ESP8266 based devices. +- `pin` represents the number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/release/modules/gpio/) for more details. Valid values are `1`, `2`, `5`, `6`, `7`, `8`, and `9`. Pin based configuration is only allowed with ESP8266 based devices. - Pin `D8` or the `out` zone will only work when activation is set to high (the default). - `zone` represents the value corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) boards. Valid zone values are `1`, `2`, `3`, `4`, `5`, `6`, and `out` for the Konnected Alarm Panel (`out` represents the dedicated ALARM/OUT terminal) and `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`, `11`, `12`, `out1`, `alarm1`, and `alarm2_out2` for the Konnected Alarm Panel Pro. - **The Konnected Alarm Panel Pro does not support configuration via `pin`.** From c8d35b4250cbf5eb066faaf8d02aeb8a9b3ef03a Mon Sep 17 00:00:00 2001 From: Ketil Moland Olsen Date: Sun, 4 Oct 2020 21:27:10 +0200 Subject: [PATCH 162/231] Fixed broken link in Denon Network Receivers docs (#14888) Fixed broken link in Denon Network Receivers docs --- source/_integrations/denon.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/denon.markdown b/source/_integrations/denon.markdown index c2cf804bece..c53287c8408 100644 --- a/source/_integrations/denon.markdown +++ b/source/_integrations/denon.markdown @@ -8,7 +8,7 @@ ha_release: 0.7.2 ha_domain: denon --- -The `denon` platform allows you to control a [Denon Network Receivers](https://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. +The `denon` platform allows you to control a [Denon Network Receiver](https://www.denon.com/category/homecinema/avreceiver) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. Supported devices: From 2fb566fb38274662a2a21ee098996597aa4a91e1 Mon Sep 17 00:00:00 2001 From: EgonMarmol <56889319+EgonMarmol@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:14:25 +0200 Subject: [PATCH 163/231] Twitch integration: Fixed old URL reference (#14903) --- source/_integrations/twitch.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/twitch.markdown b/source/_integrations/twitch.markdown index 12927722335..26f019be52f 100644 --- a/source/_integrations/twitch.markdown +++ b/source/_integrations/twitch.markdown @@ -12,7 +12,7 @@ The `twitch` platform will allow you to monitor [Twitch](https://www.twitch.tv/) ## Setup Client ID -Create a new app at "Register Your Application" in the [Twitch developer portal](https://glass.twitch.tv/console/apps). Then get the __Client ID__ for the new application. +Create a new app at "Register Your Application" in the [Twitch developer portal](https://dev.twitch.tv/console/apps). Then get the __Client ID__ for the new application. ## Setup OAuth Token From 2e3a629e34ff8a77b43ceda2ad46efc3dcc3e1f5 Mon Sep 17 00:00:00 2001 From: EgonMarmol <56889319+EgonMarmol@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:35:38 +0200 Subject: [PATCH 164/231] SoChain: Updated docs URLs (#14902) * SoChain: Updated docs URL * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/sochain.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/sochain.markdown b/source/_integrations/sochain.markdown index ad8d84fdac6..efcc1dca87d 100644 --- a/source/_integrations/sochain.markdown +++ b/source/_integrations/sochain.markdown @@ -9,7 +9,7 @@ ha_iot_class: Cloud Polling ha_domain: sochain --- -The `SoChain` sensor platform displays supported cryptocurrency wallet balances from [SoChain](https://chain.so). +The `SoChain` sensor platform displays supported cryptocurrency wallet balances from [SoChain](https://sochain.com). To add the SoChain sensor to your installation, specify a network and address to watch in the `configuration.yaml` file: @@ -37,7 +37,7 @@ name: default: Crypto Balance {% endconfiguration %} -Supported networks (which can also be found [here](https://chain.so/api#networks-supported)) are: +Supported networks (which can also be found [here](https://sochain.com/api#networks-supported)) are: * BTC * LTC From b0911a63fe47b5bb16126dc0b6b4229cd0b883cc Mon Sep 17 00:00:00 2001 From: EgonMarmol <56889319+EgonMarmol@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:36:13 +0200 Subject: [PATCH 165/231] Onkyo Integration: Update doc URLs (#14901) * Onkyo Integration: Update doc URLs * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/onkyo.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/onkyo.markdown b/source/_integrations/onkyo.markdown index c4846053c00..a62daeaae88 100644 --- a/source/_integrations/onkyo.markdown +++ b/source/_integrations/onkyo.markdown @@ -8,8 +8,8 @@ ha_iot_class: Local Polling ha_domain: onkyo --- -The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/), [Integra](http://www.integrahometheater.com/) -and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. +The `onkyo` platform allows you to control a [Onkyo](https://www.onkyo.com), [Integra](http://www.integrahometheater.com) +and some recent [Pioneer](https://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this integration to work in your Hardware. ## Configuration From e6c0d5a429b463b718b52eb4b78c15af84b48d7b Mon Sep 17 00:00:00 2001 From: EgonMarmol <56889319+EgonMarmol@users.noreply.github.com> Date: Sun, 4 Oct 2020 23:37:19 +0200 Subject: [PATCH 166/231] Airvisual Integration: Updated doc URL to iqair.com (#14900) * Airvisual Integration: Updated doc URL to iqair.com The service domain has changed. These PRs reflect the changes. * :pencil2: Tweak Co-authored-by: Klaas Schoute --- source/_integrations/airvisual.markdown | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/_integrations/airvisual.markdown b/source/_integrations/airvisual.markdown index 8e660b99c2c..b3dd73d38fe 100644 --- a/source/_integrations/airvisual.markdown +++ b/source/_integrations/airvisual.markdown @@ -11,11 +11,11 @@ ha_domain: airvisual ha_config_flow: true --- -The `airvisual` sensor platform queries the [AirVisual](https://airvisual.com/) cloud API for air quality data. Data can be collected via latitude/longitude, by city/state/country, or from an [AirVisual Node/Pro unit](https://www.airvisual.com/air-quality-monitor). +The `airvisual` sensor platform queries the [AirVisual](https://www.iqair.com) cloud API for air quality data. Data can be collected via latitude/longitude, by city/state/country, or from an [AirVisual Node/Pro unit](https://www.iqair.com/air-quality-monitors/airvisual-pro). ## Using the AirVisual Cloud API -AirVisual API keys can be obtained [here](https://airvisual.com/api). Note that the platform was designed using the "Community" package; the "Startup" and "Enterprise" package keys should continue to function, but actual results may vary (or not work at all). +AirVisual API keys can be obtained [here](https://www.iqair.com/air-pollution-data-api). Note that the platform was designed using the "Community" package; the "Startup" and "Enterprise" package keys should continue to function, but actual results may vary (or not work at all). The Community API key is valid for 12 months after which it will expire. You must then go back to the AirVisual website, delete your old key, create a new one following the same steps and update your configuration with the new key. @@ -33,7 +33,7 @@ For example: ## Using an AirVisual Node/Pro Unit -The integration can communicate to Node/Pro units over the local network. You will need the IP address/hostname of the unit and its Samba password (which can be found on the unit; instructions here: https://support.airvisual.com/en/articles/3029331-download-the-airvisual-node-pro-s-data-using-samba). +The integration can communicate to Node/Pro units over the local network. You will need the IP address/hostname of the unit and its Samba password (which can be found on the unit; instructions here: https://support.iqair.com/en/articles/3029331-download-the-airvisual-node-pro-s-data-using-samba). ## Configuration @@ -125,7 +125,7 @@ airvisual: ## Determining the City/State/Country -To easily determine the proper values for a particular location, use the [AirVisual region directory](https://airvisual.com/world). Once you browse to the particular city you want, take note of the breadcrumb title, which is of the form `country > state/region > city`. Use this information to fill out `configuration.yaml`. +To easily determine the proper values for a particular location, use the [AirVisual region directory](https://www.iqair.com/world-air-quality). Once you browse to the particular city you want, take note of the breadcrumb title, which is of the form `country > state/region > city`. Use this information to fill out `configuration.yaml`. For example, Sao Paulo, Brazil shows a breadcrumb title of `Brazil > Sao Paulo > Sao Paulo`. Thus, the proper configuration would look like this: From ce0fe77c9e4cde8a76a38295e6b4c44807b2b08d Mon Sep 17 00:00:00 2001 From: Guus Hutschemaekers Date: Mon, 5 Oct 2020 02:17:11 +0200 Subject: [PATCH 167/231] Added note on issues due to gateway connection limit (#14875) Co-authored-by: Franck Nijhof --- source/_integrations/maxcube.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/source/_integrations/maxcube.markdown b/source/_integrations/maxcube.markdown index f2b91d5d1c6..b70f46cb030 100644 --- a/source/_integrations/maxcube.markdown +++ b/source/_integrations/maxcube.markdown @@ -68,3 +68,9 @@ maxcube: type: integer default: 300 {% endconfiguration %} + +### Problems connecting or setting up + +Due to the connection limits of the eQ-3 MAX! Cube, Home Assistant will not be able to connect to the gateway if another application is still connected. It may result in timeout errors like _Error: timed out You will need to restart Home Assistant after fixing._ and _The following integrations and platforms could not be set up: maxcube Please check your configuration._ + +To prevent these issues, ensure all other applications connecting to the gateway are closed, e.g., the mobile app or the MAX! desktop app (On Windows machines, close from the status bar, it keeps running when you close the browser window). From d7847d16827bd8e73e8fe1e5034408c3a96bae02 Mon Sep 17 00:00:00 2001 From: johanf85 <43075793+johanf85@users.noreply.github.com> Date: Mon, 5 Oct 2020 02:18:09 +0200 Subject: [PATCH 168/231] changed state for hvac_action from heat to heating (#14878) --- source/_integrations/climate.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/climate.markdown b/source/_integrations/climate.markdown index 5994b88bf60..439665258d9 100644 --- a/source/_integrations/climate.markdown +++ b/source/_integrations/climate.markdown @@ -227,7 +227,7 @@ The climate entity has extra attributes to represent the state of the thermostat | Name | Description | | ---- | ----------- | -| `hvac_action` | Current state: `heat` / `cool` / `idle`. +| `hvac_action` | Current state: `heating` / `cooling` / `idle`. | `fan` | If the fan is currently on or off: `on` / `off`. It depends on the thermostat you are using which states are available. From c2ed1b991a9d4cf0ea01d7a11319028219dd79f0 Mon Sep 17 00:00:00 2001 From: Evan Morse <32440312+RowdyDog12@users.noreply.github.com> Date: Sun, 4 Oct 2020 19:21:25 -0500 Subject: [PATCH 169/231] Fixed Broken Links (#14885) I am not the most proficient with reading python code, but after searching through the Home Assistant Website for a while, I think that I found the Python API article that replaces the broken link. The server-sent events link is also broken, but there is something weird happening with the link. I think that I will open an issue for it and then submit a PR with the fix once it is fixed. --- source/_integrations/http.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown index a1517e93c77..e433e7fa1f2 100644 --- a/source/_integrations/http.markdown +++ b/source/_integrations/http.markdown @@ -117,7 +117,7 @@ The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-us ## APIs -On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest), [Python API](/developers/python_api/) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket) available. There is also support for [Server-sent events](/developers/server_sent_events/). +On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest), [Python API](https://developers.home-assistant.io/docs/api_lib_index) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket) available. There is also support for [Server-sent events](/developers/server_sent_events/). The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP. From 4d8d98e560ff6096692d15ca5efcbabda764b120 Mon Sep 17 00:00:00 2001 From: Ketil Moland Olsen Date: Mon, 5 Oct 2020 02:22:15 +0200 Subject: [PATCH 170/231] Fixed dead link to Elgato Avea (#14886) Fixed dead link to Elgato Avea product page. --- source/_integrations/avea.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/avea.markdown b/source/_integrations/avea.markdown index 64f88c510e0..51362a1b66a 100644 --- a/source/_integrations/avea.markdown +++ b/source/_integrations/avea.markdown @@ -10,7 +10,7 @@ ha_codeowners: ha_domain: avea --- -[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. +[Elgato Avea](https://www.evehome.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. ### Configuration From 3f93939298a68af98ccff7758cac4d260d19af8f Mon Sep 17 00:00:00 2001 From: Ketil Moland Olsen Date: Mon, 5 Oct 2020 02:23:27 +0200 Subject: [PATCH 171/231] Fixed dead link in Discovery documentation (#14889) The Bitbucket project containing the necessary information has been deleted. The information is still available at archive.org, so I have updated the link to point there instead. --- 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 9fccca2824c..d68e3ba223b 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -115,7 +115,7 @@ mDNS forwarding is a configurable option in some routers. It can also be called ### Windows #### 64-bit Python -There is currently a known issue with running this integration on a 64-bit version of Python and Windows. +There is currently a known issue with running this integration on a 64-bit version of Python and Windows. ### Could not install dependency netdisco From b94ab0633ba1e41409c229e0ad006ba3ec8f8b8d Mon Sep 17 00:00:00 2001 From: Evan Morse <32440312+RowdyDog12@users.noreply.github.com> Date: Sun, 4 Oct 2020 19:25:11 -0500 Subject: [PATCH 172/231] Fix Link (#14891) The link was broken for this page so just a simple fix. There were a few API documentation on the Pilight website, but after reading the Home Assistant documentation, I was under the impression that the Socket API link was the proper fit. However, I could be mistaken, so any feedback would be appreciated. --- source/_integrations/pilight.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index 6218a4b0a1f..949348f9d44 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -42,7 +42,7 @@ host: default: 127.0.0.1 type: string port: - description: "The network port to connect to, see also: (https://manual.pilight.org/development/api.html)." + description: "The network port to connect to, see also: (https://manual.pilight.org/development/socket/index.html)." required: false default: 5001 type: integer From bffd6c646787a43669167c3059d84360f5fb1330 Mon Sep 17 00:00:00 2001 From: Evan Morse <32440312+RowdyDog12@users.noreply.github.com> Date: Mon, 5 Oct 2020 02:08:21 -0500 Subject: [PATCH 173/231] Update Alarm Control Panel With IOT Class (#14879) Co-authored-by: Franck Nijhof --- source/_integrations/alarm_control_panel.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/alarm_control_panel.markdown b/source/_integrations/alarm_control_panel.markdown index b748794943b..35e32ffd6b7 100644 --- a/source/_integrations/alarm_control_panel.markdown +++ b/source/_integrations/alarm_control_panel.markdown @@ -6,6 +6,7 @@ ha_category: ha_release: 0.7.3 ha_quality_scale: internal ha_domain: alarm_control_panel +ha_iot_class: ~ --- Home Assistant can give you an interface which is similar to a classic alarm system. From 4e41bb6d8b967df781ef8b05b77ce9a75ecf6725 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Oct 2020 09:46:17 +0200 Subject: [PATCH 174/231] Bump remark-frontmatter from 2.0.0 to 3.0.0 (#14913) Bumps [remark-frontmatter](https://github.com/remarkjs/remark-frontmatter) from 2.0.0 to 3.0.0. - [Release notes](https://github.com/remarkjs/remark-frontmatter/releases) - [Commits](https://github.com/remarkjs/remark-frontmatter/compare/2.0.0...3.0.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package-lock.json | 27 +++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 65551325e07..4f49740717a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1633,6 +1633,24 @@ } } }, + "mdast-util-frontmatter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-0.2.0.tgz", + "integrity": "sha512-FHKL4w4S5fdt1KjJCwB0178WJ0evnyyQr5kXTM3wrOVpytD0hrkvd+AOOjU9Td8onOejCkmZ+HQRT3CZ3coHHQ==", + "dev": true, + "requires": { + "micromark-extension-frontmatter": "^0.2.0" + } + }, + "micromark-extension-frontmatter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-0.2.2.tgz", + "integrity": "sha512-q6nPLFCMTLtfsctAuS0Xh4vaolxSFUWUWR6PZSrXXiRy+SANGllpcqdXFv2z07l0Xz/6Hl40hK0ffNCJPH2n1A==", + "dev": true, + "requires": { + "fault": "^1.0.0" + } + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -2019,12 +2037,13 @@ } }, "remark-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-2.0.0.tgz", - "integrity": "sha512-uNOQt4tO14qBFWXenF0MLC4cqo3dv8qiHPGyjCl1rwOT0LomSHpcElbjjVh5CwzElInB38HD8aSRVugKQjeyHA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-3.0.0.tgz", + "integrity": "sha512-mSuDd3svCHs+2PyO29h7iijIZx4plX0fheacJcAoYAASfgzgVIcXGYSq9GFyYocFLftQs8IOmmkgtOovs6d4oA==", "dev": true, "requires": { - "fault": "^1.0.1" + "mdast-util-frontmatter": "^0.2.0", + "micromark-extension-frontmatter": "^0.2.0" } }, "remark-lint": { diff --git a/package.json b/package.json index b0cf74e440d..f261532d4bd 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "dependencies": {}, "devDependencies": { "remark-cli": "^8.0.1", - "remark-frontmatter": "^2.0.0", + "remark-frontmatter": "^3.0.0", "remark-lint": "^7.0.1", "remark-lint-fenced-code-flag": "^2.0.1", "remark-lint-no-shell-dollars": "^2.0.2", From fb481cd2f0fd97e906daf1e1af3ea3b94c9677a5 Mon Sep 17 00:00:00 2001 From: Gerard Date: Mon, 5 Oct 2020 09:56:18 +0200 Subject: [PATCH 175/231] Update DSMR Reader documentation (#14912) Add some additional information and steps how to setup up the MQTT topics. --- source/_integrations/dsmr_reader.markdown | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/source/_integrations/dsmr_reader.markdown b/source/_integrations/dsmr_reader.markdown index e27100c403d..f249a103673 100644 --- a/source/_integrations/dsmr_reader.markdown +++ b/source/_integrations/dsmr_reader.markdown @@ -3,6 +3,7 @@ title: DSMR Reader description: Instructions on how to integrate DSMR Reader. ha_category: - Energy + - Sensor ha_iot_class: Cloud Polling ha_release: 0.103 ha_codeowners: @@ -10,15 +11,25 @@ ha_codeowners: ha_domain: dsmr_reader --- -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. +The `dsmr_reader` sensor integration allows you to easily add all sensors that [DSMR Reader](https://dsmr-reader.readthedocs.io/en/latest/) (Dutch Smart Meter Requirements Reader) exposes to MQTT. It adds a separate sensor for every field in the MQTT topics which is named `sensor_dsmr_`. + +## Prerequisites + +- DSMR Reader +- MQTT broker ## Setup -To use this component, you will need DSMR Reader to be set up to publish to the MQTT server, that Home Assistant also uses. It is important that you setup DSMR Reader to publish to MQTT using "Split Topic" and that you use the default mappings. +1. Configure the MQTT broker in DSMR Reader which Home Assistant also connects to +2. Enable the following data sources in DSMR Reader with the default mapping: + - Day consumption: Split topic + - Gas consumption: Split topic + - Meter Statistics: Split topic + - Telegram: Split topic ## Configuration -To use this sensor in your installation, add the following to your `configuration.yaml` file: +To use this integration in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry From 0fbb3611b61b986d0d95c2aad1471d5133d1b210 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Mon, 5 Oct 2020 04:01:10 -0400 Subject: [PATCH 176/231] Add note about alternative weather integrations to Dark Sky docs (#14908) Co-authored-by: Fabian Affolter --- source/_integrations/darksky.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/darksky.markdown b/source/_integrations/darksky.markdown index a1d0f24d363..e8be2b47ac0 100644 --- a/source/_integrations/darksky.markdown +++ b/source/_integrations/darksky.markdown @@ -16,7 +16,7 @@ The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as
    -On March 31, 2020 Dark Sky was [acquired by Apple](https://blog.darksky.net/dark-sky-has-a-new-home/) and is no longer allowing new API registrations. The Dark Sky API will continue to function for existing users through the end of 2021, but it is no longer possible to obtain an API key for new users. +On March 31, 2020 Dark Sky was [acquired by Apple](https://blog.darksky.net/dark-sky-has-a-new-home/) and is no longer allowing new API registrations. The Dark Sky API will continue to function for existing users through the end of 2021, but it is no longer possible to obtain an API key for new users. Home Assistant supports many alternative [weather integrations](/integrations/#weather).
    From f13bba09f99761e27710d4b6195a801f667ac11a Mon Sep 17 00:00:00 2001 From: Andreas Setterlind Date: Mon, 5 Oct 2020 10:02:30 +0200 Subject: [PATCH 177/231] Update zha.markdown introduction for spelling and grammar + readability (#14689) Co-authored-by: Franck Nijhof --- source/_integrations/zha.markdown | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown index f43056ce273..9680e9d2e04 100644 --- a/source/_integrations/zha.markdown +++ b/source/_integrations/zha.markdown @@ -21,8 +21,9 @@ ha_codeowners: ha_domain: zha --- -[Zigbee Home Automation](https://zigbeealliance.org) (ZHA) -integration for Home Assistant allows you to connect many off-the-shelf Zigbee based devices to Home Assistant, using one of the available Zigbee radio modules that is compatible with [zigpy](https://github.com/zigpy/zigpy) (an open source Python library implementing a Zigbee stack, which in turn relies on separate libraries which can each interface a with Zigbee radio module a different manufacturer). +The ZHA (Zigbee Home Automation) integration allows you to connect many off-the-shelf [Zigbee based devices](https://zigbeealliance.org) directly to Home Assistant, using one of the many available Zigbee coordinators. + +ZHA uses an open-source Python library implementing a hardware-independent Zigbee stack called [zigpy](https://github.com/zigpy/zigpy). All coordinators compatible with zigpy can be used with ZHA. There is currently support for the following device types within Home Assistant: From 43b3470a05f60cd6a0ae8c19d7bc2dee9ec9bbeb Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Mon, 5 Oct 2020 10:05:05 +0200 Subject: [PATCH 178/231] Add IOT Class for SendGrid (#14906) --- source/_integrations/sendgrid.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/sendgrid.markdown b/source/_integrations/sendgrid.markdown index 24e498e2e16..c2b3d2d9afc 100644 --- a/source/_integrations/sendgrid.markdown +++ b/source/_integrations/sendgrid.markdown @@ -5,6 +5,7 @@ ha_category: - Notifications ha_release: 0.14 ha_domain: sendgrid +ha_iot_class: Cloud Push --- The `sendgrid` notification platform sends email notifications via [SendGrid](https://sendgrid.com/), a proven cloud-based email platform. From f2d2c7ed13483a3464c5044b11253d20589e5c99 Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Mon, 5 Oct 2020 10:07:22 +0200 Subject: [PATCH 179/231] Add IOT Class to Facebook (#14905) --- source/_integrations/facebook.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/facebook.markdown b/source/_integrations/facebook.markdown index 396f927e8da..36533b944ad 100644 --- a/source/_integrations/facebook.markdown +++ b/source/_integrations/facebook.markdown @@ -5,6 +5,7 @@ ha_category: - Notifications ha_release: 0.36 ha_domain: facebook +ha_iot_class: Cloud Push --- The `facebook` notification platform enables sending notifications via Facebook Messenger, powered by [Facebook](https://facebook.com). From e83c6dc4b042b57979995213b044d9e5b8c4a0fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Brey?= Date: Mon, 5 Oct 2020 10:08:34 +0200 Subject: [PATCH 180/231] xiaomi_miio: Fix wrong model in device table (#14899) --- source/_integrations/xiaomi_miio.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown index 973e47c6917..802d64c365d 100644 --- a/source/_integrations/xiaomi_miio.markdown +++ b/source/_integrations/xiaomi_miio.markdown @@ -321,7 +321,7 @@ Supported devices: | Air Purifier 2 (mini) | zhimi.airpurifier.m1 | | | Air Purifier (mini) | zhimi.airpurifier.m2 | | | Air Purifier MA1 | zhimi.airpurifier.ma1 | | -| Air Purifier 2S | zhimi.airpurifier.ma2 | | +| Air Purifier MA2 | zhimi.airpurifier.ma2 | | | Air Purifier 2S | zhimi.airpurifier.mc1 | | | Air Purifier Super | zhimi.airpurifier.sa1 | | | Air Purifier Super 2 | zhimi.airpurifier.sa2 | | From eaf98a37f5d1302148d68ae0b066cdef59a420ec Mon Sep 17 00:00:00 2001 From: EgonMarmol <56889319+EgonMarmol@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:09:30 +0200 Subject: [PATCH 181/231] Flume integration: Updated bad URLs in doc (#14898) --- source/_integrations/flume.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown index 5c4811e5585..33ed0e10750 100644 --- a/source/_integrations/flume.markdown +++ b/source/_integrations/flume.markdown @@ -12,13 +12,13 @@ ha_codeowners: ha_domain: flume --- -The `flume` sensor will show you the current [flume](https://portal.flumetech.com/) status for the given Device ID. +The `flume` sensor will show you the current [flume](https://portal.flumewater.com) status for the given Device ID. Flume monitors the real-time status of your home water meter. Allowing the end-user to detect small leaks, gain real-time information on household water consumption, set water goals and budgets, and receive push notifications when suspicious water activities occur. ## Configuration -You can find your Client ID and Client Secret under "API Access" on the [settings page](https://portal.flumetech.com/#settings). +You can find your Client ID and Client Secret under "API Access" on the [settings page](https://portal.flumewater.com/#settings). To add `Flume` to your installation, go to **Configuration** >> **Integrations** in the UI, click the button with `+` sign and from the list of integrations select **Flume**. From 808d5020879ef36be4b776eacfbcb6a316581740 Mon Sep 17 00:00:00 2001 From: N1c093 <59510296+N1c093@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:19:20 +0200 Subject: [PATCH 182/231] Add IoT class for International Space Station (ISS) integration (#14896) --- source/_integrations/iss.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/iss.markdown b/source/_integrations/iss.markdown index 10cebe55c57..5b16be2a82b 100644 --- a/source/_integrations/iss.markdown +++ b/source/_integrations/iss.markdown @@ -3,6 +3,7 @@ title: International Space Station (ISS) description: Know if or when ISS will be above your home location ha_category: - Binary Sensor +ha_iot_class: Cloud Polling ha_release: 0.36 ha_domain: iss --- From aa0dd74c781cdcaf0546c2863fc426f3e7c47b8e Mon Sep 17 00:00:00 2001 From: erlendmoland <56839803+erlendmoland@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:26:43 +0200 Subject: [PATCH 183/231] Rocketchat docs: Update broken URLs to API reference (#14895) --- source/_integrations/rocketchat.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/rocketchat.markdown b/source/_integrations/rocketchat.markdown index 6fec23d8cfc..f035e9ceb78 100644 --- a/source/_integrations/rocketchat.markdown +++ b/source/_integrations/rocketchat.markdown @@ -45,6 +45,6 @@ rocketchat_notification: #### Message variables - **message** (*Required*): Message to be displayed. -- **data** (*Optional*): Dictionary containing any of the variables defined in the [Rocket.Chat documentation](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) +- **data** (*Optional*): Dictionary containing any of the variables defined in the [Rocket.Chat documentation](https://docs.rocket.chat/api/rest-api/methods/chat/postmessage) To use notifications, please see the [getting started with automation page](/getting-started/automation/). From 5a825443044899bb45e840230181d9e59dc51208 Mon Sep 17 00:00:00 2001 From: erlendmoland <56839803+erlendmoland@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:29:04 +0200 Subject: [PATCH 184/231] IntesisHome Integration Docs: Fixed broken URLs (#14890) Co-authored-by: Klaas Schoute Co-authored-by: Franck Nijhof --- source/_integrations/intesishome.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/intesishome.markdown b/source/_integrations/intesishome.markdown index 22152b91f95..0779baa37de 100644 --- a/source/_integrations/intesishome.markdown +++ b/source/_integrations/intesishome.markdown @@ -10,7 +10,7 @@ ha_codeowners: ha_domain: intesishome --- -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. +The `IntesisHome` climate platform lets you control [IntesisHome](https://www.intesishome.com) and [Airconwithme](https://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). @@ -27,7 +27,7 @@ climate: {% configuration %} username: - description: "Your username for [IntesisHome.com](https://user.intesishome.com) / [Airconwithme](https://user.airconwithme.com)" + description: "Your username for [IntesisHome.com](https://accloud.intesis.com) / [Airconwithme](https://airconwithme.com)" required: true type: string password: From a14066f232d8285bf7561fecfe19519f50da02cb Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Mon, 5 Oct 2020 10:30:37 +0200 Subject: [PATCH 185/231] Fix broken links on website (part 7) (#14894) --- ...eam-d-link-smart-plugs-and-neurio-energy-sensors.markdown | 3 +-- .../2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown | 2 +- source/_posts/2016-12-03-remote-websockets-sonarr.markdown | 2 +- .../_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown | 3 +-- .../2017-05-20-automation-editor-zwave-panel-ocr.markdown | 3 +-- source/_posts/2017-11-12-tor.markdown | 2 +- source/_posts/2017-12-17-release-60.markdown | 4 ++-- source/_posts/2018-03-09-release-65.markdown | 5 +---- 8 files changed, 9 insertions(+), 15 deletions(-) diff --git a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown index 65104806e0c..25cc77213bd 100644 --- a/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown +++ b/source/_posts/2016-02-28-steam-d-link-smart-plugs-and-neurio-energy-sensors.markdown @@ -42,7 +42,7 @@ It's been another two weeks which means it's time for release: 0.14!

    ### Backwards incompatible changes - - Component: Simple Alarm has been removed. Still available in [the cookbook]. + - Component: Simple Alarm has been removed. Still available in the cookbook. - Script: Turning on a [script] that is already on is now a no-op instead of skipping current delay. - Wemo switches now have to be set up via the main [Wemo component] - Command line platforms for [switch][switch.cmd], [sensor][sensor.cmd] and [binary_sensor][binary_sensor.cmd] have been renamed to `command_line`. @@ -66,7 +66,6 @@ It's been another two weeks which means it's time for release: 0.14! [Wemo]: /integrations/wemo [Steam]: /integrations/steam_online [Wink]: /integrations/wink#binary-sensor -[the cookbook]: /cookbook/python_component_simple_alarm/ [script]: /integrations/script/ [Wemo component]: /integrations/wemo/ [switch.cmd]: /integrations/switch.command_line/ diff --git a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown b/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown index 47d40348a43..392a9d5674e 100644 --- a/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown +++ b/source/_posts/2016-08-13-foursquare-fast-com-ffmpeg-gpsd.markdown @@ -106,7 +106,7 @@ homeassistant: [Fast.com]: /integrations/fastdotcom [pilight]: /integrations/pilight/ [GPSD]: /integrations/gpsd -[heat control]: /integrations/thermostat.heat_control/ +[heat control]: /integrations/generic_thermostat [Proximity]: /integrations/proximity/ [Flux]: /integrations/flux [Proliphix]: /integrations/proliphix/ diff --git a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown index 03fba69d3c7..774ab908024 100644 --- a/source/_posts/2016-12-03-remote-websockets-sonarr.markdown +++ b/source/_posts/2016-12-03-remote-websockets-sonarr.markdown @@ -13,7 +13,7 @@ Here we go... 0.34. Let's call it the "Santa Claus" release. Rudolph was faster ### GPSLogger -The work of [@dainok] let's you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the [GPSLogger](https://play.google.com/store/apps/details?id=com.mendhak.gpslogger) app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks. +The work of [@dainok] let's you use your Android device, with the Geolocation feature enabled, to track itself using GPS or WiFi networks with the [GPSLogger](https://github.com/mendhak/gpslogger/releases) app. GPSLogger can use multiple sources: the passive one just get the latest Android known location, without activating GPS sensors or scanning for WiFi networks. ### Remote component diff --git a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown index 6b65b125c02..cc46f9d26f1 100644 --- a/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown +++ b/source/_posts/2017-02-11-alert-appletv-mqtt-yeelight.markdown @@ -20,7 +20,7 @@ Another Saturday, another release! The frontend has been completely been rewritten, optimizing for speed and lost connection recovery. Even on the slowest phones it should fly now. The frontend also now uses the new [WebSockets API][websocket-api] instead of the [EventStream API][event-stream-api]. ### Custom state card UI -A nice new feature is the possibility to create [custom state cards][custom-ui-cards] in the frontend. Go ahead and write your own state card for [lights][light], sensors, locks, etc. +A nice new feature is the possibility to create [custom state cards][custom-ui-cards] in the frontend. Go ahead and write your own state card for lights, sensors, locks, etc. ### MQTT discovery MQTT now has [discovery][mqtt-discovery] support which is different than our [`discovery`][discovery] component. Similar to the HTTP sensor and HTTP binary sensor, MQTT discovery removes the need for configuration by allowing devices to make their presence known to Home Assistant. @@ -204,7 +204,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [ffmpeg]: /integrations/ffmpeg/ [filters]: /topics/templating/#home-assistant-template-extensions [hue]: /integrations/hue -[light]: /cookbook/custom_ui_by_andrey-git [mailgun]: /integrations/mailgun [media-player]: /integrations/media_player/ [moon]: /integrations/moon diff --git a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown index a5b4e53133f..5ca55b00049 100644 --- a/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown +++ b/source/_posts/2017-05-20-automation-editor-zwave-panel-ocr.markdown @@ -183,7 +183,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Add support for disabling tradfri groups ([@cnrd] - [#7593]) ([tradfri docs]) ([light.tradfri docs]) - Update docstrings and comments ([@fabaff] - [#7626]) ([image_processing.openalpr_cloud docs]) ([image_processing.openalpr_local docs]) - Upgrade Sphinx to 1.6.1 ([@fabaff] - [#7624]) -- Update docstrings ([@fabaff] - [#7630]) ([image_processing.demo docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) ([image_processing.opencv docs]) +- Update docstrings ([@fabaff] - [#7630]) ([image_processing docs]) ([image_processing.dlib_face_detect docs]) ([image_processing.dlib_face_identify docs]) ([image_processing.microsoft_face_detect docs]) ([image_processing.microsoft_face_identify docs]) ([image_processing.opencv docs]) - Kodi specific service to call Kodi API methods ([@azogue] - [#7603]) ([media_player.kodi docs]) - Updated limitlessled requirement to v1.0.8 ([@corneyl] - [#7629]) - Osram lightify Removed wrong assignment ([@commento] - [#7615]) ([light.osramlightify docs]) @@ -358,7 +358,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [eight_sleep docs]: /integrations/eight_sleep/ [homematic docs]: /integrations/homematic/ [image_processing docs]: /integrations/image_processing -[image_processing.demo docs]: /integrations/image_processing.demo/ [image_processing.dlib_face_detect docs]: /integrations/dlib_face_detect [image_processing.dlib_face_identify docs]: /integrations/dlib_face_identify [image_processing.microsoft_face_detect docs]: /integrations/microsoft_face_detect diff --git a/source/_posts/2017-11-12-tor.markdown b/source/_posts/2017-11-12-tor.markdown index 4ce34c7339f..e3e980bbb8b 100644 --- a/source/_posts/2017-11-12-tor.markdown +++ b/source/_posts/2017-11-12-tor.markdown @@ -88,7 +88,7 @@ Simply download and install the [Tor Browser](https://www.torproject.org/project Some other clients: - [Orbot](https://guardianproject.info/apps/orbot/) for Android -- ~~[Orfox](https://play.google.com/store/apps/details?id=info.guardianproject.orfox&hl=nl) for Android~~ Orfox for Android has been deprecated. Please use [Tor Browser for Android](https://www.torproject.org/download/#android). More information about the deprecation [here](https://trac.torproject.org/projects/tor/ticket/29955). +- Orfox for Android has been deprecated. Please use [Tor Browser for Android](https://www.torproject.org/download/#android). More information about the deprecation [here](https://trac.torproject.org/projects/tor/ticket/29955). - [Onion Browser](https://mike.tig.as/onionbrowser/) for iOS ## Cranking up security diff --git a/source/_posts/2017-12-17-release-60.markdown b/source/_posts/2017-12-17-release-60.markdown index 14e655aabfe..a3f929436a4 100644 --- a/source/_posts/2017-12-17-release-60.markdown +++ b/source/_posts/2017-12-17-release-60.markdown @@ -141,7 +141,7 @@ Experiencing issues introduced by this release? Please report them in our [issue - Report availability for TP-Link smart bulbs ([@DanNixon] - [#10976]) ([light.tplink docs]) - Fix incorrect comment. ([@emosenkis] - [#11111]) - Update Warrant ([@balloob] - [#11101]) ([cloud docs]) -- Fixed typo in automation.py ([@ryanm101] - [#11116]) ([config.automation docs]) +- Fixed typo in automation.py ([@ryanm101] - [#11116]) ([config docs]) - Add media position properties ([@pschmitt] - [#10076]) - update pyripple ([@nkgilley] - [#11122]) ([sensor.ripple docs]) - Skip HASS emulated Hue bridges from detection. ([@andreacampi] - [#11128]) ([hue docs]) @@ -316,7 +316,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [climate.tado docs]: /integrations/tado [cloud docs]: /integrations/cloud/ [cloud.const docs]: /integrations/cloud/ -[config.automation docs]: /integrations/config.automation/ +[config docs]: /integrations/config [cover.tellstick docs]: /integrations/tellstick#cover [device_tracker docs]: /integrations/device_tracker/ [device_tracker.meraki docs]: /integrations/meraki diff --git a/source/_posts/2018-03-09-release-65.markdown b/source/_posts/2018-03-09-release-65.markdown index 244df69467d..742f898507a 100644 --- a/source/_posts/2018-03-09-release-65.markdown +++ b/source/_posts/2018-03-09-release-65.markdown @@ -165,7 +165,7 @@ intent_script: - Tado: don't reference unset hass var ([@balloob] - [#13237]) ([device_tracker docs]) - Fix Sonos join/unjoin in scripts ([@amelchio] - [#13248]) ([media_player.sonos docs]) - Fix Sonos radio stations with ampersand ([@amelchio] - [#13293]) ([media_player.sonos docs]) -- Do not include unavailable entities in Google Assistant SYNC ([@balloob] - [#13358]) ([google_assistant docs]) ([light.demo docs]) +- Do not include unavailable entities in Google Assistant SYNC ([@balloob] - [#13358]) ([google_assistant docs]) ([light docs]) ## If you need help... @@ -584,8 +584,6 @@ Experiencing issues introduced by this release? Please report them in our [issue [insteon_plm docs]: /integrations/insteon/ [knx docs]: /integrations/knx/ [light docs]: /integrations/light/ -[light.demo docs]: /integrations/light.demo/ -[light.group docs]: /integrations/light.group/ [light.group docs]: /integrations/light.group/ [light.hue docs]: /integrations/hue [light.hyperion docs]: /integrations/hyperion @@ -750,5 +748,4 @@ Experiencing issues introduced by this release? Please report them in our [issue [camera.proxy docs]: /integrations/proxy [device_tracker docs]: /integrations/device_tracker/ [google_assistant docs]: /integrations/google_assistant/ -[light.demo docs]: /integrations/light.demo/ [media_player.sonos docs]: /integrations/sonos From 72d395a5e2455d486042dae8989059ad6cc3f87f Mon Sep 17 00:00:00 2001 From: erlendmoland <56839803+erlendmoland@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:31:38 +0200 Subject: [PATCH 186/231] Lyft docs: Updated URLs to developer portal (#14893) --- source/_integrations/lyft.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_integrations/lyft.markdown b/source/_integrations/lyft.markdown index 8e7259846d2..92ec4142d1c 100644 --- a/source/_integrations/lyft.markdown +++ b/source/_integrations/lyft.markdown @@ -8,7 +8,7 @@ ha_release: 0.41 ha_domain: lyft --- -The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/reference/). +The `lyft` sensor will give you time and price estimates for all available [Lyft](https://lyft.com) products at the given `start_latitude` and `start_longitude`.The `ATTRIBUTES` are used to provide extra information about products, such as vehicle capacity and fare rates. If an `end_latitude` and `end_longitude` are specified, a price estimate will also be provided. One sensor will be created for each product at the given `start` location, for pickup time. A second sensor for each product, for estimated price, will be created if a destination is specified. The sensor is powered by the official Lyft [API](https://developer.lyft.com/docs). You must create an application [here](https://www.lyft.com/developers/apps) to obtain a `client_id` and `client_secret`. @@ -24,11 +24,11 @@ sensor: {% configuration %} client_id: - description: "A client id obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage)." + description: "A client id obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/apps)." required: true type: string client_secret: - description: "A client secret obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/manage)." + description: "A client secret obtained from [developer.lyft.com](https://developer.lyft.com) after [creating an app](https://www.lyft.com/developers/apps)." required: true type: string start_latitude: From 1b3bac8824fe448b185d8cbb1928d6ac98a5ac5f Mon Sep 17 00:00:00 2001 From: erlendmoland <56839803+erlendmoland@users.noreply.github.com> Date: Mon, 5 Oct 2020 10:32:52 +0200 Subject: [PATCH 187/231] GeniusHub docs: Fixed broken URL to token generator (#14892) --- source/_integrations/geniushub.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown index 035fcb20f4e..eac41e90fae 100644 --- a/source/_integrations/geniushub.markdown +++ b/source/_integrations/geniushub.markdown @@ -180,7 +180,7 @@ The hub does not have to be in the same subnet as your Home Assistant server. This option is recommended only if Option 1 does not work. The MAC address should match that written on the back of the Hub. -- Requires a **hub token** obtained from [my.geniushub.co.uk/tokens](https://my.geniushub.co.uk/tokens). +- Requires a **hub token** obtained from [my.geniushub.co.uk](https://my.geniushub.co.uk/). - Uses the v1 API - which is well-documented. - Polls Heat Genius' own servers (so is slower, say ~5-10s response time). - You should use the Hub's MAC address (although any valid MAC will do). From f489119b874b5f347e716da2b48a003f63d8537f Mon Sep 17 00:00:00 2001 From: Evan Morse <32440312+RowdyDog12@users.noreply.github.com> Date: Mon, 5 Oct 2020 03:33:35 -0500 Subject: [PATCH 188/231] Update OPNSense Documentation With IOT Class (#14881) I have added Local Polling because it polls the router for state changes. Here is also a tag for issue #14661 --- source/_integrations/opnsense.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/opnsense.markdown b/source/_integrations/opnsense.markdown index 991bb74d550..6012e9df88d 100644 --- a/source/_integrations/opnsense.markdown +++ b/source/_integrations/opnsense.markdown @@ -8,6 +8,7 @@ ha_release: 0.105 ha_codeowners: - '@mtreinish' ha_domain: opnsense +ha_iot_class: Local Polling --- [OPNsense](https://opnsense.org/) is an open source HardenedBSD based firewall From 464bc308f7eb3eaa53cb8558397c1ca1a48a6fb8 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Mon, 5 Oct 2020 09:50:12 +0100 Subject: [PATCH 189/231] Fix Raspberry Pi OS Lite URL (#14914) Removed an extra forward slash from the Raspberry Pi OS Lite URL --- source/_docs/installation/raspberry-pi.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index 62449e7f955..953681088aa 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -3,7 +3,7 @@ title: "Manual installation on a Raspberry Pi" description: "Instructions to install Home Assistant Core on a Raspberry Pi running Raspberry Pi OS Lite." --- -This installation of Home Assistant Core requires the Raspberry Pi to run [Raspberry Pi OS Lite](https://www.raspberrypi.org/downloads/raspberry-pi-os//). The installation will be installed in a [Virtual Environment](/docs/installation/virtualenv) with minimal overhead. Instructions assume this is a new installation of Raspberry Pi OS Lite. +This installation of Home Assistant Core requires the Raspberry Pi to run [Raspberry Pi OS Lite](https://www.raspberrypi.org/downloads/raspberry-pi-os/). The installation will be installed in a [Virtual Environment](/docs/installation/virtualenv) with minimal overhead. Instructions assume this is a new installation of Raspberry Pi OS Lite. You must have Python 3.7 or later installed (including the package `python3-dev`) which is *not* the case for Raspberry Pi OS Stretch. From cb00e9e680ef3c2c98fb075907ceda8bca892c1f Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Mon, 5 Oct 2020 12:29:17 +0200 Subject: [PATCH 190/231] Add IOT Class for Twilio SMS (#14917) --- source/_integrations/twilio_sms.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/twilio_sms.markdown b/source/_integrations/twilio_sms.markdown index b240d36d14f..db1cad1683a 100644 --- a/source/_integrations/twilio_sms.markdown +++ b/source/_integrations/twilio_sms.markdown @@ -5,6 +5,7 @@ ha_category: - Notifications ha_release: '0.20' ha_domain: twilio_sms +ha_iot_class: Cloud Push --- The `twilio` notification platform enables sending notifications via SMS, powered by [Twilio](https://twilio.com). From 80a8ddf69ae6760feaa685a306c67fafda3c9ff2 Mon Sep 17 00:00:00 2001 From: ZuluWhiskey <35011199+ZuluWhiskey@users.noreply.github.com> Date: Mon, 5 Oct 2020 11:45:43 +0100 Subject: [PATCH 191/231] Remove reference to old Hue FAQ link (#14916) Co-authored-by: Franck Nijhof --- .../2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown b/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown index d94741df9c5..07ca7f69c90 100644 --- a/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown +++ b/source/_posts/2015-12-12-philips-hue-blocks-3rd-party-bulbs.markdown @@ -19,7 +19,7 @@ Philips Hue FAQ entries regarding reversing the decision. Philips Hue was one of the first to get smart lights accepted by the mainstream. Their Zigbee-based hub is rock solid, never crashes, great API and worked with other Zigbee light bulbs too. They are a bit expensive but the platform was worth every penny, till now. -Yesterday a thread on [/r/homeautomation][reddit-hue] published that Philips Hue now blocks all but their own bulbs and those of "friends of Hue". I have been able to confirm this in the [Philips Hue FAQ][philips-hue-faq] (Update Dec 14: they have removed the entries - [mirror here][philips-hue-faq-mirror]): +Yesterday a thread on [/r/homeautomation][reddit-hue] published that Philips Hue now blocks all but their own bulbs and those of "friends of Hue". I have been able to confirm this in the Philips Hue FAQ (Update Dec 14: they have removed the entries - [mirror here][philips-hue-faq-mirror]):

    @@ -41,5 +41,4 @@ I will no longer suggest people to buy into the Philips Hue ecosystem. [philips-reverse]: http://www.developers.meethue.com/documentation/friends-hue-update [reddit-hue]: https://www.reddit.com/r/homeautomation/comments/3wet8h/fyi_the_hue_hub_is_now_blocking_third_party/ -[philips-hue-faq]: http://www2.meethue.com/en-us/support/search/?q=Another+brand [philips-hue-faq-mirror]: /images/blog/2015-12-philips-hue-3rd-party/mirror.png From 47311cdb7adffbac693d60aa0832a79ab6d90046 Mon Sep 17 00:00:00 2001 From: curlydingo <39084026+curlydingo@users.noreply.github.com> Date: Tue, 6 Oct 2020 04:23:21 +1030 Subject: [PATCH 192/231] Fix sensor description in Powerwall Documentation (#14918) Removed the 'binary' descriptor for the sensors that are not binary. --- source/_integrations/powerwall.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/powerwall.markdown b/source/_integrations/powerwall.markdown index e5adce900c0..59605cdf9cd 100644 --- a/source/_integrations/powerwall.markdown +++ b/source/_integrations/powerwall.markdown @@ -51,7 +51,7 @@ The following binary sensors are added for each Powerwall: ### Sensor -The following binary sensors are added for each Powerwall: +The following sensors are added for each Powerwall: - Powerwall Charge - Powerwall Site Now From 36a36017f7acbaf750ffd5d89fcaf170d9e6ed05 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Mon, 5 Oct 2020 19:54:30 +0200 Subject: [PATCH 193/231] Adding IoT Class for Tank Utility Integration (#14919) --- source/_integrations/tank_utility.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/tank_utility.markdown b/source/_integrations/tank_utility.markdown index ea2f0cf9a84..aaf30f633b5 100644 --- a/source/_integrations/tank_utility.markdown +++ b/source/_integrations/tank_utility.markdown @@ -3,6 +3,7 @@ title: Tank Utility description: How to integrate Tank Utility sensors within Home Assistant. ha_category: - Energy +ha_iot_class: Cloud Polling ha_release: 0.53 ha_domain: tank_utility --- From 55141f2d3de70e10996cfbc57c079086024a3a98 Mon Sep 17 00:00:00 2001 From: JeeCee1 <35496112+JeeCee1@users.noreply.github.com> Date: Mon, 5 Oct 2020 19:55:23 +0200 Subject: [PATCH 194/231] Update discovery.markdown (#14921) json_attributes is depricated (since 0.85?) --- source/_docs/mqtt/discovery.markdown | 1 - 1 file changed, 1 deletion(-) diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown index 1cc37f7357a..6a18a5e39dd 100644 --- a/source/_docs/mqtt/discovery.markdown +++ b/source/_docs/mqtt/discovery.markdown @@ -133,7 +133,6 @@ Supported abbreviations: 'hs_val_tpl': 'hs_value_template', 'ic': 'icon', 'init': 'initial', - 'json_attr': 'json_attributes', 'json_attr_t': 'json_attributes_topic', 'json_attr_tpl': 'json_attributes_template', 'max_mirs': 'max_mireds', From 403bceec091f648e0f65d684f674c6d98233bde1 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Mon, 5 Oct 2020 20:43:28 +0200 Subject: [PATCH 195/231] Add IoT class to the SpaceAPI integration (#14922) --- source/_integrations/spaceapi.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/spaceapi.markdown b/source/_integrations/spaceapi.markdown index 9ca772520ad..35410ae776b 100644 --- a/source/_integrations/spaceapi.markdown +++ b/source/_integrations/spaceapi.markdown @@ -3,6 +3,7 @@ title: Space API description: Instructions on how to configure the SpaceAPI for Home Assistant. ha_category: - Social +ha_iot_class: Cloud Polling ha_release: '0.70' ha_codeowners: - '@fabaff' From 4357b4f3f83a94538ebf7d3fcc5e02fe6ce2dadb Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Mon, 5 Oct 2020 20:44:59 +0200 Subject: [PATCH 196/231] Add IoT class to the SimplePush integration (#14923) --- source/_integrations/simplepush.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/simplepush.markdown b/source/_integrations/simplepush.markdown index bc00dccb2c3..9e032af170a 100644 --- a/source/_integrations/simplepush.markdown +++ b/source/_integrations/simplepush.markdown @@ -3,6 +3,7 @@ title: Simplepush description: Instructions on how to add Simplepush notifications to Home Assistant. ha_category: - Notifications +ha_iot_class: Cloud Polling ha_release: 0.29 ha_domain: simplepush --- From 56722a2e2989865ef6fef0b521b78b281a9b5ad5 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Tue, 6 Oct 2020 10:08:50 +0200 Subject: [PATCH 197/231] Add IoT class to the mochad integration (#14924) --- source/_integrations/mochad.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/mochad.markdown b/source/_integrations/mochad.markdown index f0a9f561c19..af47f803a8d 100644 --- a/source/_integrations/mochad.markdown +++ b/source/_integrations/mochad.markdown @@ -5,6 +5,7 @@ ha_category: - Hub - Light - Switch +ha_iot_class: Local Polling ha_release: 0.32 ha_domain: mochad --- From 4c1734cfb924037de792263e8d7d62bb691bc1f0 Mon Sep 17 00:00:00 2001 From: Caleb Mah Date: Tue, 6 Oct 2020 16:15:11 +0800 Subject: [PATCH 198/231] Add IoT class to Updater (#14925) --- source/_integrations/updater.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/updater.markdown b/source/_integrations/updater.markdown index a9459387da2..5488a931e04 100644 --- a/source/_integrations/updater.markdown +++ b/source/_integrations/updater.markdown @@ -4,6 +4,7 @@ description: Detecting when Home Assistant updates are available. ha_category: - Binary Sensor ha_release: 0.8 +ha_iot_class: Cloud Polling ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 7fb6b76b241c04931acf3f5e719f341355cb17ad Mon Sep 17 00:00:00 2001 From: Caleb Mah Date: Tue, 6 Oct 2020 16:16:02 +0800 Subject: [PATCH 199/231] Add IoT class to Frontend (#14926) --- source/_integrations/frontend.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/frontend.markdown b/source/_integrations/frontend.markdown index d62267162bb..17c11e774ad 100644 --- a/source/_integrations/frontend.markdown +++ b/source/_integrations/frontend.markdown @@ -4,6 +4,7 @@ description: Offers a frontend to Home Assistant. ha_category: - Other ha_release: 0.7 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/frontend' From 8e93ece430ab9aae0679544407f9d8e266248518 Mon Sep 17 00:00:00 2001 From: Caleb Mah Date: Tue, 6 Oct 2020 16:17:05 +0800 Subject: [PATCH 200/231] Add IoT class to Osramlightify (#14927) --- source/_integrations/osramlightify.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/osramlightify.markdown b/source/_integrations/osramlightify.markdown index 921cccf1f38..bb9332f834a 100644 --- a/source/_integrations/osramlightify.markdown +++ b/source/_integrations/osramlightify.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Osram Lightify into Home Assistant ha_category: - Light ha_release: 0.21 +ha_iot_class: Local Polling ha_domain: osramlightify --- From 0bfdca7e2f1825c31075ca0c75bedc4aeeed1db9 Mon Sep 17 00:00:00 2001 From: Juri Calleri Date: Tue, 6 Oct 2020 10:18:10 +0200 Subject: [PATCH 201/231] English code and fixes (#14929) Not everybody speak Spanish, also, better names for sensor and scene --- source/_docs/automation/action.markdown | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source/_docs/automation/action.markdown b/source/_docs/automation/action.markdown index ca7a364fcb6..c995f842c3d 100644 --- a/source/_docs/automation/action.markdown +++ b/source/_docs/automation/action.markdown @@ -45,11 +45,11 @@ Conditions can also be part of an action. You can combine multiple service calls ```yaml automation: -- alias: 'Enciende Despacho' +- alias: 'Office at evening' trigger: platform: state - entity_id: sensor.mini_despacho - to: 'ON' + entity_id: sensor.office_occupancy + to: 'on' action: - service: notify.notify data: @@ -59,7 +59,7 @@ automation: - condition: template value_template: '{% raw %}{{ state_attr('sun.sun', 'elevation') < 4 }}{% endraw %}' - condition: template - value_template: '{% raw %}{{ states('sensor.sensorluz_7_0') < 10 }}{% endraw %}' + value_template: '{% raw %}{{ states('sensor.office_illuminance') < 10 }}{% endraw %}' - service: scene.turn_on - entity_id: scene.DespiertaDespacho + entity_id: scene.office_at_evening ``` From ddac749acd0bc2dfb0d67af2fb331368b40c1042 Mon Sep 17 00:00:00 2001 From: Caleb Mah Date: Tue, 6 Oct 2020 16:28:08 +0800 Subject: [PATCH 202/231] Add IoT class to Kira (#14930) --- source/_integrations/kira.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/kira.markdown b/source/_integrations/kira.markdown index 345296f7a62..c0f0499d346 100644 --- a/source/_integrations/kira.markdown +++ b/source/_integrations/kira.markdown @@ -6,6 +6,7 @@ ha_category: - Remote - Sensor ha_release: 0.45 +ha_iot_class: Local Push ha_domain: kira --- From 1f9fb312a709bca40c3b934167a66056788473c4 Mon Sep 17 00:00:00 2001 From: "M.J. Wydra (Jay)" Date: Tue, 6 Oct 2020 04:30:54 -0400 Subject: [PATCH 203/231] Update index.markdown (#14931) This guide suggested a 2.5A power supply for the raspberry pi 4 (probably as a carryover from when it used to reference a raspberry pi 3B+). However, the official documentation suggests at least a 3A PSU for the pi 4 (https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/README.md) Also added clarification that the raspberry pi itself does not show a user interface if plugging in a display after seeing multiple posts on discord/the forum with confusion surrounding this. --- source/getting-started/index.markdown | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index 40ee02b5aac..0c1860ba2bf 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -35,7 +35,7 @@ Follow this guide if you want to get started with Home Assistant easily or if yo 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) +- [Raspberry Pi 4 Model B (2GB)](https://amzn.to/2XULT2z) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 3A) - [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. - SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest. - Ethernet cable. Home Assistant can work with Wi-Fi, but an Ethernet connection would be more reliable. @@ -52,7 +52,7 @@ We will need a few things to get started with installing Home Assistant. The Ras 1. Put the SD card in your card reader. 2. Open balenaEtcher, select the Home Assistant image and flash it to the SD card. 3. Unmount the SD card and remove it from your card reader. -4. The most reliable networking setup for your Raspberry Pi is to connect it using an Ethernet cable, however, if you want to configure Wi-Fi or a static IP address (this step requires a USB stick) you can try this: +4. The most reliable networking setup for your Raspberry Pi is to connect it using an Ethernet cable; however, if you want to configure Wi-Fi or a static IP address (this step requires a USB stick) you can try this: - Format a USB stick to FAT32 with the volume name `CONFIG`. - Create a folder named `network` in the root of the newly-formatted USB stick. - Within that folder, create a file named `my-network` without a file extension. @@ -62,11 +62,17 @@ We will need a few things to get started with installing Home Assistant. The Ras 5. Insert the SD card into your Raspberry Pi. If you are going to use an Ethernet cable, connect that too. 6. Connect your power supply to the Raspberry Pi. 7. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes. -8. Home Assistant will be available at `http://homeassistant.local:8123`. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at `http://homeassistant:8123` or `http://X.X.X.X:8123` (replace `X.X.X.X` with your Pi's IP address). +8. On another computer, navigate to `http://homeassistant.local:8123` to access Home Assistant. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at `http://homeassistant:8123` or `http://X.X.X.X:8123` (replace `X.X.X.X` with your Pi's IP address). 9. If you used a USB stick for configuring the network, you can now remove it. [the examples]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md +

    + + The Raspberry Pi will not show a user interface for Home Assistant if you connect a display. You need to use another computer to access Home Assistant. + +
    + ### [Next step: Onboarding »][next-step] [next-step]: /getting-started/onboarding/ From 53db1754798b7bcb8f7d45f3b6b5fe0965ddfd0c Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 10:31:36 +0200 Subject: [PATCH 204/231] Add IOT value Status for Twitter Direct Messaging (#14932) --- source/_integrations/twitter.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/twitter.markdown b/source/_integrations/twitter.markdown index e63d4287f46..eae0d8dec16 100644 --- a/source/_integrations/twitter.markdown +++ b/source/_integrations/twitter.markdown @@ -5,6 +5,7 @@ ha_category: - Notifications ha_release: 0.12 ha_domain: twitter +ha_iot_class: Cloud Push --- The `twitter` notification platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. From dbcd3ba30c8096d84f72cbcb6b6ad3bc798071dd Mon Sep 17 00:00:00 2001 From: Milan Meulemans Date: Tue, 6 Oct 2020 10:33:14 +0200 Subject: [PATCH 205/231] Add IoT Class to Telegram Integration (#14910) --- source/_integrations/telegram.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/telegram.markdown b/source/_integrations/telegram.markdown index 4717fa11b75..3d945dcf3fd 100644 --- a/source/_integrations/telegram.markdown +++ b/source/_integrations/telegram.markdown @@ -4,6 +4,7 @@ description: Instructions on how to add Telegram notifications to Home Assistant ha_category: - Notifications ha_release: 0.7.5 +ha_iot_class: Cloud Polling ha_domain: telegram --- From e8b90eb58bee06f5e6545c014362706d7c7ec17f Mon Sep 17 00:00:00 2001 From: TopdRob Date: Tue, 6 Oct 2020 10:39:21 +0200 Subject: [PATCH 206/231] Fix broken link 404 (#14933) NKDZCK username was changed to zsarnett Issue 14663 --- source/_posts/2020-09-17-release-115.markdown | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/source/_posts/2020-09-17-release-115.markdown b/source/_posts/2020-09-17-release-115.markdown index b6af59d4854..27b4f89de74 100644 --- a/source/_posts/2020-09-17-release-115.markdown +++ b/source/_posts/2020-09-17-release-115.markdown @@ -130,10 +130,10 @@ Thanks to [@jjlawren] for the initial implementation and to [@cgtobi], integrations and backend refining. But a media browser isn't just backend, it also needs to look good. Thankfully, -we had [@NKDZCK] on the case, with the help of [@bramkragten]. They came up with +we had [@zsarnett] on the case, with the help of [@bramkragten]. They came up with a beautiful design so you can browse your media in style. -[@nkdzck]: https://github.com/NKDZCK +[@zsarnett]: https://github.com/zsarnett
    @@ -173,7 +173,7 @@ If you click its media browser button, you will be presented with the available local sources. Sometimes you just want to play your media without having to turn on the TV. To -cover that case, [@NKDZCK] added a new media browser to the Home Assistant +cover that case, [@zsarnett] added a new media browser to the Home Assistant interface, which can be used to play your media. That way, you can quickly see what that motion event that you just received was about. From 7c995ca11a74fe5572cbf941429a3da802f6ce5a Mon Sep 17 00:00:00 2001 From: TopdRob Date: Tue, 6 Oct 2020 10:58:26 +0200 Subject: [PATCH 207/231] Fix broken links 404 (#14934) #14663 --- source/_integrations/pilight.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown index 949348f9d44..69df34025b7 100644 --- a/source/_integrations/pilight.markdown +++ b/source/_integrations/pilight.markdown @@ -57,7 +57,7 @@ whitelist: type: string {% endconfiguration %} -In this example only received RF codes using a daycom or Intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://manual.pilight.org/development/api.html). +In this example only received RF codes using a daycom or Intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://manual.pilight.org/development/index.html). A full configuration sample could look like the sample below: @@ -268,7 +268,7 @@ Variables for the different codes (`on_code` and `off_code`): - **'off'** (*Optional*): `1` or `0` - **'on'** (*Optional*): `1` or `0` -For possible code entries, look at the [pilight API](https://manual.pilight.org/development/api.html). All commands allowed by [pilight-send](https://manual.pilight.org/programs/send.html) can be used. Which means that if, for a certain protocol, there are different parameters used, you should be able to replace the variables above by the proper ones required by the specific protocol. When using the `elro_800_switch` or `mumbi` protocol, for example, you will have to replace the variable `unit` with `unitcode` or there will be errors occurring. +For possible code entries, look at the [pilight API](https://manual.pilight.org/development/index.html). All commands allowed by [pilight-send](https://manual.pilight.org/programs/send.html) can be used. Which means that if, for a certain protocol, there are different parameters used, you should be able to replace the variables above by the proper ones required by the specific protocol. When using the `elro_800_switch` or `mumbi` protocol, for example, you will have to replace the variable `unit` with `unitcode` or there will be errors occurring. Variables for the different receive codes (`on_code_receive` and `off_code_receive`): From 82d5a8b02cd09c51c9fb323ee9b9d01de5777888 Mon Sep 17 00:00:00 2001 From: TopdRob Date: Tue, 6 Oct 2020 11:11:34 +0200 Subject: [PATCH 208/231] Fix link to community (#14935) #14663 --- source/_posts/2020-08-05-mobile-apps-new-features.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2020-08-05-mobile-apps-new-features.markdown b/source/_posts/2020-08-05-mobile-apps-new-features.markdown index cd87c0700bc..299ee6ff657 100644 --- a/source/_posts/2020-08-05-mobile-apps-new-features.markdown +++ b/source/_posts/2020-08-05-mobile-apps-new-features.markdown @@ -130,7 +130,7 @@ Another avenue of improvement is making things a bit easier. You’ll now find e #### A look ahead at iOS 14 -Coming to iOS 14 is Widgets, and no doubt there’s some huge potential here. A good analogy for what they can do is to think of them as Apple Watch complications; relatively static displays that can be updated with a multitude of data. One thing we’d love is to get an idea of the information and displays you’re interested in seeing here as Widgets get built out over the next few months. Please let us know any ideas you have on [this thread](https://community.home-assistant.io/t/what-kind-of-ios-14-widgets-would-you-like-to-see). +Coming to iOS 14 is Widgets, and no doubt there’s some huge potential here. A good analogy for what they can do is to think of them as Apple Watch complications; relatively static displays that can be updated with a multitude of data. One thing we’d love is to get an idea of the information and displays you’re interested in seeing here as Widgets get built out over the next few months. Please let us know any ideas you have on [this thread](https://community.home-assistant.io/t/what-kind-of-ios-14-big-sur-widgets-would-you-like-to-see). iOS 14 is also introducing [Local Push Connectivity](https://developer.apple.com/documentation/networkextension/local_push_connectivity), which adds support for push notifications on your local network that do not require a trip to the cloud. This, like Critical Alerts, requires explicit approval from Apple, but we’re hopeful about improving the experience with your boats and RVs! From 7e242f0d4e634650a21733d3f847deb60f9185a8 Mon Sep 17 00:00:00 2001 From: TopdRob Date: Tue, 6 Oct 2020 11:12:24 +0200 Subject: [PATCH 209/231] Fix GPIO link in blog post (#14936) #14663 --- source/_posts/2018-06-04-esphomelib.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_posts/2018-06-04-esphomelib.markdown b/source/_posts/2018-06-04-esphomelib.markdown index 53c53ccbb39..3c68102ea4a 100644 --- a/source/_posts/2018-06-04-esphomelib.markdown +++ b/source/_posts/2018-06-04-esphomelib.markdown @@ -59,7 +59,7 @@ At this point, you can already flash the firmware. To do this, first plug in the ## Adding some basic functionality -Above configuration is, let’s face it, pretty dull. It really only connects to WiFi and MQTT and sits idle. So let’s add a basic [GPIO switch](https://esphomelib.com/esphomeyaml/integrations/switch/gpio.html)! The GPIO switch component in esphomelib allows you to control the ON/OFF state of any of the pins on your ESP. For example, if you add this configuration to the bottom of your YAML file, you’re setting up the pin `GPIO5` to be controlled as a switch with the name "Living Room Dehumidifer". +Above configuration is, let’s face it, pretty dull. It really only connects to WiFi and MQTT and sits idle. So let’s add a basic [GPIO switch](https://esphome.io/components/switch/gpio.html)! The GPIO switch component in esphomelib allows you to control the ON/OFF state of any of the pins on your ESP. For example, if you add this configuration to the bottom of your YAML file, you’re setting up the pin `GPIO5` to be controlled as a switch with the name "Living Room Dehumidifer". ```yaml switch: From c879b70a20441112d253950253963c5990ecb603 Mon Sep 17 00:00:00 2001 From: Bo Date: Tue, 6 Oct 2020 12:35:34 +0200 Subject: [PATCH 210/231] Update documentation for Entites card - special row button and confirmation (#14937) Co-authored-by: Daniel Bohman --- source/_lovelace/entities.markdown | 12 ++++++++++++ source/lovelace/actions.markdown | 17 ++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown index c514ddc5534..63540c99193 100644 --- a/source/_lovelace/entities.markdown +++ b/source/_lovelace/entities.markdown @@ -124,6 +124,10 @@ name: required: true description: Main Label. type: string +icon: + required: false + description: An icon to display to the left of the label. + type: string action_name: required: false description: Button label. @@ -361,6 +365,14 @@ entities: name: Home Assistant url: https://www.home-assistant.io/ icon: mdi:home-assistant + - type: button + name: Power cycle LibreELEC + icon: mdi:power-cycle + tap_action: + action: call-service + confirmation: + text: Are you sure you want to restart? + service: script.libreelec_power_cycle ```
    diff --git a/source/lovelace/actions.markdown b/source/lovelace/actions.markdown index fafba26b913..34592a1ac43 100644 --- a/source/lovelace/actions.markdown +++ b/source/lovelace/actions.markdown @@ -167,6 +167,10 @@ double_tap_action: confirmation: text: Are you sure you want to restart? service: script.restart +hold_action: + action: call-service + confirmation: true + service: script.do_other_thing ``` {% configuration confirmation%} @@ -185,10 +189,21 @@ exemptions: {% configuration exemptions %} user: required: true - description: User id that can see the view tab. + description: User id that can see the view tab. For each user´s id listed, the confirmation dialog will NOT be shown. type: string {% endconfiguration %} +```yaml +double_tap_action: + action: call-service + confirmation: + text: Are you sure you want to restart? + exemptions: + - x9405b8c64ee49bb88c42000e0a9dfa8 + - 88bcfbdc39155d16c3b2d09cbf8b0367 + service: script.restart +``` + ## Examples Tap action implemented on an entity button card: From 5678e95ad2e69653f45d2ccdca7de4db7b687fe5 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Tue, 6 Oct 2020 06:38:00 -0400 Subject: [PATCH 211/231] Update transmission.markdown (#14907) --- source/_integrations/transmission.markdown | 52 +++++++++------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown index d9eff6bd5ff..66e36b71661 100644 --- a/source/_integrations/transmission.markdown +++ b/source/_integrations/transmission.markdown @@ -14,27 +14,17 @@ ha_codeowners: ha_domain: transmission --- -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. +The Transmission integration allows you to monitor your [Transmission](https://www.transmissionbt.com/) BitTorrent downloads from within Home Assistant and set up automations based on that information. ## Setup -To use the monitoring, your transmission client needs to allow remote access. If you are running the graphical transmission client (transmission-gtk) go to **Edit** -> **Preferences** and choose the tab **Remote**. Check **Allow remote access**, enter your username and your password, and uncheck the network restriction as needed. - -

    - -

    - -If everything is set up correctly, the details will show up in the frontend. - -

    - -

    +Your Transmission client must first be configured to allow remote access. In your Transmission client navigate to **Preferences** -> **Remote** tab and then click the **Allow remote access** checkbox. ## Configuration -Set up the integration through **Configuration** -> **Integrations** -> **Transmission**. For legacy support old transmission configuration is imported and set up as new integration. Make sure to remove `monitored_condiditions` as they are now automatically added to Home Assistant +In Home Assistant, navigate to **Configuration** -> **Integrations** and click the plus button to add a new integration and search for **Transmission**. For legacy support old Transmission configuration is imported and set up as a new integration. Make sure to remove `monitored_conditions` as they are now automatically added to Home Assistant. -To enable this sensor, add the following lines to your `configuration.yaml`: +Alternatively, the integration can be set up via YAML by adding the following lines to your `configuration.yaml`: ```yaml transmission: @@ -71,21 +61,21 @@ scan_interval: ## Integration Entities -The Transmission Integration will add the following sensors and switches. +The Transmission integration will add the following sensors and switches. -Sensors: -- 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) +**Sensors**: +- `sensor.transmission_current_status`: The status of your Transmission daemon. +- `sensor.transmission_download_speed`: The current download speed [MB/s]. +- `sensor.transmission_upload_speed`: The current upload speed [MB/s]. +- `sensor.transmission_active_torrents`: The current number of active torrents. +- `sensor.transmission_paused_torrents`: The current number of paused torrents. +- `sensor.transmission_total_torrents`: The total number of torrents present in the client. +- `sensor.transmission_started_torrents`: The current number of started torrents (downloading). +- `sensor.transmission_completed_torrents`: The current number of completed torrents (seeding). -Switches: -- transmission_switch: A switch to start/stop all torrents -- transmission_turtle_mode: A switch to enable turtle mode. +**Switches**: +- `switch.transmission_switch`: A switch to start/stop all torrents. +- `switch.transmission_turtle_mode`: A switch to enable turtle mode (a.k.a. alternative speed limits). ## Event Automation @@ -94,9 +84,9 @@ The Transmission integration is continuously monitoring the status of torrents i Possible events are: -- transmission_downloaded_torrent -- transmission_started_torrent -- transmission_removed_torrent +- `transmission_downloaded_torrent` +- `transmission_started_torrent` +- `transmission_removed_torrent` Inside of the event, there is the name of the torrent that is started or completed, as it is seen in the Transmission User Interface. @@ -142,7 +132,7 @@ Removes a torrent from the client. ### Attribute `torrent_info` -All `*_torrents` sensors e.g. `sensor.transmission_total_torrents` or `sensor.transmission_started_torrents` have a state attribute `torrent_info` that contains information about the torrents that are currently in a corresponding state. You can see this information in **Developer Tools** -> **States** -> `sensor.transmission_total_torrents` -> **Attributes**, or by adding a Markdown Card to Lovelace. +All `*_torrents` sensors e.g. `sensor.transmission_total_torrents` or `sensor.transmission_started_torrents` have a state attribute `torrent_info` that contains information about the torrents that are currently in a corresponding state. You can see this information in **Developer Tools** -> **States** -> `sensor.transmission_total_torrents` -> **Attributes**, or by adding a [Markdown card](/lovelace/markdown/) to Lovelace with the following code: {% raw %} ```yaml From 635b388e2827cb5253a0fb8f8f17f34206abf112 Mon Sep 17 00:00:00 2001 From: Klaas Schoute Date: Tue, 6 Oct 2020 12:39:47 +0200 Subject: [PATCH 212/231] Fix broken links on website (part 8) (#14938) --- source/_integrations/smarthab.markdown | 2 +- source/_integrations/velux.markdown | 6 +++--- source/_posts/2016-05-21-release-020.markdown | 2 +- ...tom-frontend-panels--jupyter-notebooks--directv.markdown | 2 +- .../2016-09-10-notify-group-reload-api-pihole.markdown | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/source/_integrations/smarthab.markdown b/source/_integrations/smarthab.markdown index 382f1014c6e..aa317d8b391 100644 --- a/source/_integrations/smarthab.markdown +++ b/source/_integrations/smarthab.markdown @@ -13,7 +13,7 @@ ha_codeowners: ha_domain: smarthab --- -If your home is fitted with [SmartHab](https://www.smarthab.fr/en/home/)'s +If your home is fitted with [SmartHab](https://smarthab.fr/index.php/home-en)'s devices and you have access to their app-based services, you will be able to control your lights and shutters with the SmartHab integration for Home Assistant. diff --git a/source/_integrations/velux.markdown b/source/_integrations/velux.markdown index 6aeca027e3c..4272304154d 100644 --- a/source/_integrations/velux.markdown +++ b/source/_integrations/velux.markdown @@ -13,7 +13,7 @@ ha_domain: velux [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. -At least firmware version > 2.0.0.0 is required on the KLF 200 device. The firmware images may be obtained [here](https://www.velux.com/api/klf200) and may be imported via the webinterface of your KLF 200. +At least firmware version > 2.0.0.0 is required on the KLF 200 device. The firmware images may be obtained [here](https://www.velux.com/klf200) and may be imported via the webinterface of your KLF 200. There is currently support for the following device types within Home Assistant: @@ -27,8 +27,8 @@ A `velux` section must be present in the `configuration.yaml` file and contain t ```yaml # Example configuration.yaml entry velux: - host: "192.168.1.23" - password: "VELUX_PASSWORD" + host: IP_ADDRESS + password: VELUX_PASSWORD ``` {% configuration %} diff --git a/source/_posts/2016-05-21-release-020.markdown b/source/_posts/2016-05-21-release-020.markdown index 355de586afa..c2ad7797887 100644 --- a/source/_posts/2016-05-21-release-020.markdown +++ b/source/_posts/2016-05-21-release-020.markdown @@ -8,7 +8,7 @@ author_twitter: balloob categories: Release-Notes --- - + Tons of new supported things in 0.20. diff --git a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown b/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown index c38afccea8b..ab81d5afd8e 100644 --- a/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown +++ b/source/_posts/2016-07-30-custom-frontend-panels--jupyter-notebooks--directv.markdown @@ -20,7 +20,7 @@ The brand-new [iFrame panel component][iframe_panel] allows you to add other web I would like to do a shoutout to [@fabianhjr]. He has started adding [typing] data ([PEP484]) to the Home Assistant core. This will help us identify issues before they are released. - + - Frontend: Support for [iFrame panels][iframe_panel] to adding other sites to sidebar ([@balloob]) - Allow components to register [custom frontend panels][custom-panels] ([@balloob]) diff --git a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown index 8481d2f683a..d6ca4e749ed 100644 --- a/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown +++ b/source/_posts/2016-09-10-notify-group-reload-api-pihole.markdown @@ -32,7 +32,7 @@ The validation of the configuration is still on-going. Approximately 80 % is don ### All changes - + - Light: Added bitfield to Flux LED since we are supporting effects ([@tchellomello]) - Device tracker: [Owntracks] waypoint import ([@pavoni]) From a438c64c86b86f0e3ae27d9cbe334b4e0c422578 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Tue, 6 Oct 2020 06:41:02 -0400 Subject: [PATCH 213/231] Remove unused States icon reference from Automation page (#14940) The states icon in the sidebar no longer exists as of Home Assistant 0.96 --- source/_docs/automation.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_docs/automation.markdown b/source/_docs/automation.markdown index b1589a70e91..81844501ffd 100644 --- a/source/_docs/automation.markdown +++ b/source/_docs/automation.markdown @@ -31,7 +31,7 @@ The difference between a condition and a trigger can be confusing as they are ve ### Exploring the internal state -Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. The icon will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts: +Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. **Developer Tools** -> **States** will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts: | Name | Description | Example | | ---- | ----- | ---- | From fca20463a5804f8c78c245ef02b9f100b7e51a9c Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Tue, 6 Oct 2020 06:41:37 -0400 Subject: [PATCH 214/231] Remove unused States icon from Group page (#14941) States icon was removed from sidebar in Home Assistant 0.96, removing the image from here. --- source/_integrations/group.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown index 44cd7f63ea2..d4dd2c6cf8f 100644 --- a/source/_integrations/group.markdown +++ b/source/_integrations/group.markdown @@ -13,7 +13,7 @@ ha_domain: group Groups allow the user to combine multiple entities into one. -Check the **States** page from the **Developer Tools** and browse the **Current entities:** listing for all available entities. +Check **Developer Tools** -> **States** and browse the **Current entities:** listing for all available entities. ```yaml # Example configuration.yaml entry From 9c080c2acc310ea2cfe07adb87f82d2f4b3f605c Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Tue, 6 Oct 2020 06:43:26 -0400 Subject: [PATCH 215/231] Remove unused Services icon from Timer page (#14942) Removed outdated reference to Services sidebar icon, no longer used as of Home Assistant 0.96. Also tweaked the call service instruction as they were outdated too, there's no longer a domain dropdown just Service dropdown. --- source/_integrations/timer.markdown | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/source/_integrations/timer.markdown b/source/_integrations/timer.markdown index 2595218159a..8fb0f2f93ff 100644 --- a/source/_integrations/timer.markdown +++ b/source/_integrations/timer.markdown @@ -110,13 +110,7 @@ Reload `timer`'s configuration without restarting Home Assistant itself. This se ### 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**. - -```json -{ - "entity_id": "timer.timer0" -} -``` +Navigate to **Developer Tools** -> **Services** and select the `timer.start` service, then click the **Fill Example Data** button. Now change the `entity_id` and `duration` and click **Call Service** button. ## Examples From 9422e101d070e1553210d3cf79fe27f8e942e242 Mon Sep 17 00:00:00 2001 From: Sean Mooney Date: Tue, 6 Oct 2020 06:44:18 -0400 Subject: [PATCH 216/231] Mention Scene Editor on Scenes page (#14944) Add link to Scene Editor on Scenes page, to point out that this can be done in GUI now --- source/_integrations/scene.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown index 990247788e5..0d3d9e8f969 100644 --- a/source/_integrations/scene.markdown +++ b/source/_integrations/scene.markdown @@ -12,6 +12,8 @@ ha_domain: scene 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. +Scenes can be created and managed via the user interface using the [Scene Editor](/docs/scene/editor/). They can also be configured via `configuration.yaml`: + ```yaml # Example configuration.yaml entry scene: From 69363a9791572da37aac734b5b72b86c62b9c1f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Tue, 6 Oct 2020 18:53:14 +0200 Subject: [PATCH 217/231] Add IoT class for Nmap Tracker integration (#14945) Add IoT class for Nmap Tracker integration --- source/_integrations/nmap_tracker.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/nmap_tracker.markdown b/source/_integrations/nmap_tracker.markdown index 12b252d2cf7..4ac83d1b2ef 100644 --- a/source/_integrations/nmap_tracker.markdown +++ b/source/_integrations/nmap_tracker.markdown @@ -4,6 +4,7 @@ description: Instructions on how to integrate Nmap into Home Assistant. ha_category: - Presence Detection ha_release: 0.7 +ha_iot_class: Local Polling ha_domain: nmap_tracker --- From 580c58b6e3956f969b48a3fc7851a7c586cd1d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Tue, 6 Oct 2020 18:54:04 +0200 Subject: [PATCH 218/231] Add IoT class to Discovery integration (#14946) Add IoT class to Discovery integration --- source/_integrations/discovery.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown index d68e3ba223b..cc62aacde26 100644 --- a/source/_integrations/discovery.markdown +++ b/source/_integrations/discovery.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup Home Assistant to discover new devices ha_category: - Other ha_release: 0.7 +ha_iot_class: ~ ha_quality_scale: internal ha_domain: discovery --- From 3e40eb69bf1dd01f81e7c0d3c0444008215984a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Tue, 6 Oct 2020 18:54:50 +0200 Subject: [PATCH 219/231] Add IoT class to device_tracker (#14947) Add IoT class to device_tracker --- source/_integrations/device_tracker.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown index a1a532794d7..4c5fafc0160 100644 --- a/source/_integrations/device_tracker.markdown +++ b/source/_integrations/device_tracker.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup device tracking within Home Assistant. ha_category: - Presence Detection ha_release: 0.7 +ha_iot_class: ~ ha_quality_scale: internal ha_domain: device_tracker --- From eab23dab1f0b8c8b7c3dcc8ba3af086ebecd89f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Tue, 6 Oct 2020 18:56:04 +0200 Subject: [PATCH 220/231] Add IoT class to Fan (#14948) Add IoT class to Fan --- source/_integrations/fan.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/fan.markdown b/source/_integrations/fan.markdown index 6d2bd738cfc..4ab86e1aa1e 100644 --- a/source/_integrations/fan.markdown +++ b/source/_integrations/fan.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup Fan devices within Home Assistant. ha_category: - Fan ha_release: 0.27 +ha_iot_class: ~ ha_quality_scale: internal ha_domain: fan --- From 6a899b88d5d188b197d4f578106f3f28c0a6fda4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Isabella=20Gross=20Alstr=C3=B6m?= Date: Tue, 6 Oct 2020 18:57:10 +0200 Subject: [PATCH 221/231] Add IoT class to config (#14949) Add IoT class to config --- source/_integrations/config.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/config.markdown b/source/_integrations/config.markdown index 5cba33bb937..26f1f8a16f0 100644 --- a/source/_integrations/config.markdown +++ b/source/_integrations/config.markdown @@ -4,6 +4,7 @@ description: Instructions on how to setup the configuration panel for Home Assis ha_category: - Front End ha_release: 0.39 +ha_iot_class: ~ ha_quality_scale: internal ha_codeowners: - '@home-assistant/core' From 4c5a364e7f2df791388a5a78cb1bb2e35dcadff6 Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 18:58:10 +0200 Subject: [PATCH 222/231] IOT Class for ClickSend (#14951) --- source/_integrations/clicksend.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/clicksend.markdown b/source/_integrations/clicksend.markdown index fe4e6b8290b..4e7de523b20 100644 --- a/source/_integrations/clicksend.markdown +++ b/source/_integrations/clicksend.markdown @@ -5,6 +5,7 @@ ha_category: - Notifications ha_release: 0.48 ha_domain: clicksend +ha_iot_class: Cloud Push --- The `clicksend` platform uses [ClickSend](https://clicksend.com) to deliver notifications from Home Assistant. From a22be4060b71bda988a23e34e065d98d9da14417 Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 22:57:47 +0200 Subject: [PATCH 223/231] Add IOT Class for Google Domains (#14952) --- source/_integrations/google_domains.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/google_domains.markdown b/source/_integrations/google_domains.markdown index 34d2e7bc35b..bb9ea6df8a1 100644 --- a/source/_integrations/google_domains.markdown +++ b/source/_integrations/google_domains.markdown @@ -5,6 +5,7 @@ ha_category: - Network ha_release: 0.57 ha_domain: google_domains +ha_iot_class: Cloud Polling --- With the Google Domains integration you can keep your Google Domains record up to date. From 91804cd1470023e809fcf2871e139048f54b60cb Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 22:59:32 +0200 Subject: [PATCH 224/231] Google Hangouts now has an IOT class (#14953) --- source/_integrations/hangouts.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/hangouts.markdown b/source/_integrations/hangouts.markdown index 789a71b0143..b550738840b 100644 --- a/source/_integrations/hangouts.markdown +++ b/source/_integrations/hangouts.markdown @@ -7,6 +7,7 @@ ha_category: ha_release: 0.77 ha_config_flow: true ha_domain: hangouts +ha_iot_class: Cloud Push --- 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. From 60c76922abe327ba859fce55b72b5fb8be6ff232 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Tue, 6 Oct 2020 23:01:50 +0200 Subject: [PATCH 225/231] Add IoT class to the apprise integration (#14964) --- source/_integrations/apprise.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index 0a1b2cad284..0bfdca65bb9 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -3,6 +3,7 @@ title: Apprise description: Instructions on how to add Apprise notifications to Home Assistant. ha_category: - Notifications +ha_iot_class: Cloud Polling ha_release: 0.101 ha_codeowners: - '@caronc' From f7a1a6ada8e58e6888ae86718c737ea57c2a3c8b Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Tue, 6 Oct 2020 23:04:13 +0200 Subject: [PATCH 226/231] Add IoT class to the asterisk_cdr integration (#14965) --- source/_integrations/asterisk_cdr.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/asterisk_cdr.markdown b/source/_integrations/asterisk_cdr.markdown index 185561d2c2c..a8286d63334 100644 --- a/source/_integrations/asterisk_cdr.markdown +++ b/source/_integrations/asterisk_cdr.markdown @@ -3,6 +3,7 @@ title: Asterisk Call Detail Records description: Instructions on how to integrate an Asterisk CDR within Home Assistant. ha_category: - Mailbox +ha_iot_class: Local Polling ha_release: 0.79 ha_domain: asterisk_cdr --- From 2c77ebfff708e4835489aaa61ce6428ac8721a6e Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Tue, 6 Oct 2020 23:05:32 +0200 Subject: [PATCH 227/231] Add IoT class to the Aten_PE integration (#14967) --- source/_integrations/aten_pe.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/aten_pe.markdown b/source/_integrations/aten_pe.markdown index 1a0a40b0eb3..fe01d075248 100644 --- a/source/_integrations/aten_pe.markdown +++ b/source/_integrations/aten_pe.markdown @@ -3,6 +3,7 @@ title: ATEN Rack PDU description: Instructions on how to integrate ATEN Rack PDUs into Home Assistant. ha_category: - Switch +ha_iot_class: Local Polling ha_release: 0.103 ha_codeowners: - '@mtdcr' From 1986e753b2022413b389c47df8d9119f97d07304 Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 23:22:32 +0200 Subject: [PATCH 228/231] IOT Class for yessssms! (#15002) --- source/_integrations/yessssms.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/yessssms.markdown b/source/_integrations/yessssms.markdown index 164db6ee235..c77f4dbc594 100644 --- a/source/_integrations/yessssms.markdown +++ b/source/_integrations/yessssms.markdown @@ -7,6 +7,7 @@ ha_release: 0.57 ha_codeowners: - '@flowolf' ha_domain: yessssms +ha_iot_class: Cloud Push --- The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) and others to send SMS via their web-site. From ba4c7069ebca46962d52d6d2cdd735f47dd42556 Mon Sep 17 00:00:00 2001 From: Matej Plavevski Date: Tue, 6 Oct 2020 23:49:29 +0200 Subject: [PATCH 229/231] Fix IOT Classification for Apprise (#15007) --- source/_integrations/apprise.markdown | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/_integrations/apprise.markdown b/source/_integrations/apprise.markdown index 0bfdca65bb9..eb250b4612b 100644 --- a/source/_integrations/apprise.markdown +++ b/source/_integrations/apprise.markdown @@ -3,7 +3,7 @@ title: Apprise description: Instructions on how to add Apprise notifications to Home Assistant. ha_category: - Notifications -ha_iot_class: Cloud Polling +ha_iot_class: Cloud Push ha_release: 0.101 ha_codeowners: - '@caronc' From 18befc202e672c66bf17db489ba9e408b2a67f2d Mon Sep 17 00:00:00 2001 From: Dubh Ad Date: Tue, 6 Oct 2020 22:50:26 +0100 Subject: [PATCH 230/231] Clarity edit (#14588) Co-authored-by: Franck Nijhof --- source/_integrations/tts.markdown | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown index a8bdbbaf1be..9c679491bda 100644 --- a/source/_integrations/tts.markdown +++ b/source/_integrations/tts.markdown @@ -94,7 +94,9 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr * They [reject self-signed certificates](#self-signed-certificates). -* 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 internal 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. +* 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). If you are _not_ using SSL then setting a internal 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. + +* If you are using an SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `base_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection. ## Service say From b7db5d969441625a66670cfe7cd7ff1e21429828 Mon Sep 17 00:00:00 2001 From: Ron Klinkien Date: Wed, 7 Oct 2020 12:01:48 +0200 Subject: [PATCH 231/231] Add IoT class to the Baidu integration (#14969) Co-authored-by: Franck Nijhof --- source/_integrations/baidu.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/source/_integrations/baidu.markdown b/source/_integrations/baidu.markdown index 41722a61f61..b78449bc72b 100644 --- a/source/_integrations/baidu.markdown +++ b/source/_integrations/baidu.markdown @@ -3,6 +3,7 @@ title: Baidu description: Instructions on how to setup Baidu TTS with Home Assistant. ha_category: - Text-to-speech +ha_iot_class: Cloud Push ha_release: 0.59 ha_domain: baidu ---