diff --git a/Gemfile.lock b/Gemfile.lock
index 2e0f8a370dbf..ee80dc983aa0 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -19,7 +19,7 @@ GEM
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
- concurrent-ruby (1.1.7)
+ concurrent-ruby (1.1.8)
em-websocket (0.5.2)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
@@ -66,7 +66,7 @@ GEM
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.3)
- listen (3.4.0)
+ listen (3.4.1)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
@@ -94,7 +94,7 @@ GEM
rouge (3.26.0)
ruby-enum (0.8.0)
i18n
- ruby2_keywords (0.0.2)
+ ruby2_keywords (0.0.4)
safe_yaml (1.0.5)
sass (3.4.25)
sass-globbing (1.1.5)
diff --git a/_config.yml b/_config.yml
index 72a86c50e1bc..6cece625dac0 100644
--- a/_config.yml
+++ b/_config.yml
@@ -101,8 +101,8 @@ social:
# Home Assistant release details
current_major_version: 2021
current_minor_version: 1
-current_patch_version: 0
-date_released: 2021-01-06
+current_patch_version: 4
+date_released: 2021-01-16
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
diff --git a/package-lock.json b/package-lock.json
index b0546fca5ef8..2e7c0882d0d0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -98,9 +98,9 @@
}
},
"@textlint/ast-node-types": {
- "version": "4.2.5",
- "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.2.5.tgz",
- "integrity": "sha512-+rEx4jLOeZpUcdvll7jEg/7hNbwYvHWFy4IGW/tk2JdbyB3SJVyIP6arAwzTH/sp/pO9jftfyZnRj4//sLbLvQ==",
+ "version": "4.3.5",
+ "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-4.3.5.tgz",
+ "integrity": "sha512-syl8VE34DQDTV7+IADP1jYtGsxTC9MmCKLmpJX90G6nNv9CzgAZIukd7WMiJFZpFgcDAlibEaCKlJRxjfEmmPA==",
"dev": true
},
"@textlint/ast-tester": {
@@ -637,12 +637,12 @@
}
},
"@textlint/types": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.3.1.tgz",
- "integrity": "sha512-9MJ6PRPYWiFs2lfvp/Qhq72WrkZLL5ncBUXAVoj1Ug17ug8d7psmr/KJstMMocW3EWHSOuIDj7unh413c3jPqQ==",
+ "version": "1.4.6",
+ "resolved": "https://registry.npmjs.org/@textlint/types/-/types-1.4.6.tgz",
+ "integrity": "sha512-hoKPvIzNf+vI0goRk90HfsVUbXkAp4BfpvRxh51TGqVG27dlYrQJZkYheuUNUAwyj0Id09qzVwXno/xQPMYPcg==",
"dev": true,
"requires": {
- "@textlint/ast-node-types": "^4.2.5"
+ "@textlint/ast-node-types": "^4.3.5"
}
},
"@textlint/utils": {
@@ -2459,6 +2459,12 @@
"is-utf8": "^0.2.0"
}
},
+ "strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true
+ },
"structured-source": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/structured-source/-/structured-source-3.0.2.tgz",
@@ -2669,9 +2675,9 @@
}
},
"textlint-rule-terminology": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.4.tgz",
- "integrity": "sha512-kLw4qL8RwY2lCNqgKveHc5sjCDlS5Tdw2TXWOrHvSvQxqaVOwsv3+51oMIQLGfJzQrhFSMlSlw5MvfaOerBvPQ==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/textlint-rule-terminology/-/textlint-rule-terminology-2.1.5.tgz",
+ "integrity": "sha512-VW+ea4ByLPddSUqoFkVVJF8zWnO8kqKwvC681wGFAjI4CYz9WhjEQH1ikhoEHXnd5AFXNArcjyoa8hoihrXy0w==",
"dev": true,
"requires": {
"lodash": "^4.17.15",
@@ -2679,12 +2685,6 @@
"textlint-rule-helper": "^2.1.1"
},
"dependencies": {
- "strip-json-comments": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
- "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
- "dev": true
- },
"textlint-rule-helper": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/textlint-rule-helper/-/textlint-rule-helper-2.1.1.tgz",
diff --git a/package.json b/package.json
index 5c1b7c3345b2..18be9f7ad0fc 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
"remark-stringify": "^9.0.1",
"textlint": "^11.7.7",
"textlint-rule-common-misspellings": "^1.0.1",
- "textlint-rule-terminology": "^2.1.4"
+ "textlint-rule-terminology": "^2.1.5"
},
"resolutions": {
"minimist": ">=1.2.5"
diff --git a/sass/custom/_layout.scss b/sass/custom/_layout.scss
index 0d3a6f7a6820..dedacad4c759 100644
--- a/sass/custom/_layout.scss
+++ b/sass/custom/_layout.scss
@@ -29,7 +29,7 @@ html {
height: calc(100% - 68px);;
margin-top: 68px;
overflow-y: scroll;
- padding-top: 32px;
+ padding-top: 82px;
width: 100%;
}
@@ -43,6 +43,10 @@ html {
}
}
+.alert-banner {
+ height: 50px;
+ }
+
.site-header {
position: fixed;
width: 100%;
diff --git a/sass/oscailte/base/_navigation.scss b/sass/oscailte/base/_navigation.scss
index acbda0859ae6..fd48dc637177 100644
--- a/sass/oscailte/base/_navigation.scss
+++ b/sass/oscailte/base/_navigation.scss
@@ -69,7 +69,7 @@ header .grid {
.menu {
margin: 0;
- top: 68px;
+ top: 138px;
}
.menu li a{
@@ -116,9 +116,17 @@ header .grid {
padding: 15px 15px 15px 25px;
}
+ .alert-banner {
+ height: 70px !important;
+ }
+
+ .page-content {
+ padding-top: 102px;
+ }
+
.toggle {
position: absolute;
- top: 15px;
+ top: 85px;
right: 10px;
}
diff --git a/source/_docs/authentication/providers.markdown b/source/_docs/authentication/providers.markdown
index dc7ff68e8fb8..7d3f3df1943d 100644
--- a/source/_docs/authentication/providers.markdown
+++ b/source/_docs/authentication/providers.markdown
@@ -3,25 +3,19 @@ title: "Authentication Providers"
description: "Guide on configuring different auth providers."
---
-When you log in, an _auth provider_ checks your credentials to make sure you are an authorized user.
-
-
-
-The authentication system has been changed recently. Previously there was a single "_API password_" to log in, but you can now choose from several auth providers.
-
-To make the transition from API passwords easier, we've added a _Legacy API Password_ auth provider. This is enabled by default if you have an API password configured so you will still be able to log in.
-
-However, this feature is deprecated and will be removed in a future release so you should set up one of the newer authentication techniques.
-
+
+ This is an advanced feature.
+When you log in, an _auth provider_ checks your credentials to make sure you are an authorized user.
+
## Configuring auth providers
Home Assistant automatically configures the standard auth providers so you don't need to specify `auth_providers` in your `configuration.yaml` file unless you are configuring more than one. Specifying `auth_providers` will disable all auth providers that are not listed, so you could reduce your security or create difficulties logging in if it is not configured correctly.
-This means that if you decide to use `trusted_networks` as your `auth_provider` there won't be a way to authenticate for a device outside of your listed trusted network. To overcome this ensure you add the default `auth_provider``type: homeassistant` back in manually. This will then present you with the default auth login screen when trusted network authentication fails as expected from outside your LAN.
+If you decide to use `trusted_networks` as your `auth_provider` there won't be a way to authenticate for a device outside of your listed trusted network. To overcome this ensure you add the default `auth_provider``type: homeassistant` back in manually. This will then present you with the default auth login screen when trusted network authentication fails as expected from outside your LAN.
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 443349800f61..c6ace8ed6120 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -151,7 +151,8 @@ The `for` template(s) will be evaluated when an entity changes as specified.
### State trigger
-Fires when the state of any of given entities changes. If only `entity_id` is given trigger will fire for all state changes, even if only state attributes change.
+Fires when the state of any of given entities changes. If only `entity_id` is given, the trigger will fire for all state changes, even if only state attributes change.
+If only one of `from_state` or `to_state` are given, the trigger will fire on any matching state change, but not if only attributes change.
@@ -163,13 +164,28 @@ The values you see in your overview will often not be the same as the actual sta
automation:
trigger:
platform: state
- entity_id: device_tracker.paulus, device_tracker.anne_therese
+ entity_id:
+ - device_tracker.paulus
+ - device_tracker.anne_therese
# Optional
from: "not_home"
# Optional
to: "home"
```
+It's possible to give a list of from_states or to_states:
+
+```yaml
+automation:
+ trigger:
+ platform: state
+ entity_id: vacuum.test
+ from:
+ - "cleaning"
+ - "returning"
+ to: "error"
+```
+
#### Holding a state
You can use `for` to have the state trigger only fire if the state holds for some time.
diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown
index 63dc30ea144b..c285ea460e87 100644
--- a/source/_docs/blueprint/selectors.markdown
+++ b/source/_docs/blueprint/selectors.markdown
@@ -338,7 +338,7 @@ mode:
description: This can be either `box` or `slider` mode.
type: string
required: false
- default: box
+ default: slider
{% endconfiguration %}
### Example number selectors
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 669968480b2a..a9f94e3c5da9 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -164,7 +164,7 @@ The same thing can also be expressed as a filter:
{% raw %}
```text
-{{ ['device_tracker.paulus', 'group.child_trackers'] | expand
+{{ expand(['device_tracker.paulus', 'group.child_trackers'])
| selectattr("attributes.battery", 'defined')
| join(', ', attribute="attributes.battery") }}
```
diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown
index f35fa3606611..5f4e1ce56dc0 100644
--- a/source/_docs/mqtt/discovery.markdown
+++ b/source/_docs/mqtt/discovery.markdown
@@ -18,6 +18,7 @@ Supported by MQTT discovery:
- [HVACs](/integrations/climate.mqtt/)
- [Lights](/integrations/light.mqtt/)
- [Locks](/integrations/lock.mqtt/)
+- [Scenes](/integrations/scene.mqtt/)
- [Sensors](/integrations/sensor.mqtt/)
- [Switches](/integrations/switch.mqtt/)
- [Tag Scanners](/integrations/tag.mqtt/)
diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown
index b32a7c39881e..96f7dc9346e7 100644
--- a/source/_docs/scripts.markdown
+++ b/source/_docs/scripts.markdown
@@ -62,7 +62,7 @@ Scripts may also use a shortcut syntax for activating scenes instead of calling
## Variables
-The variable command allows you to set/override variables that will be accessible by templates in actions after it.
+The variables command allows you to set/override variables that will be accessible by templates in actions after it (see also [script variables] for how to define locally available variables).
{% raw %}
@@ -571,3 +571,4 @@ automation:
[service calls page]: /getting-started/scripts-service-calls/
[conditions page]: /getting-started/scripts-conditions/
[shorthand-template]: /docs/scripts/conditions/#template-condition-shorthand-notation
+[script variables]: /integrations/script/#-configuration-variables
diff --git a/source/_faq/unique_id.markdown b/source/_faq/unique_id.markdown
index 429e94322479..0e3f0d9c8ecb 100644
--- a/source/_faq/unique_id.markdown
+++ b/source/_faq/unique_id.markdown
@@ -4,10 +4,14 @@ description: "This entity does not have a unique ID?"
ha_category: Configuration
---
-When you see
+If you try to access the configuration dialog for an entity in your Home Assistant, you might end up seeing this message:
-```text
-This entity does not have a unique ID, therefore its settings cannot be managed from the UI
-```
+
+
+
-this simply means that you can't change the `entity_id` or the friendly name from the UI. You can still use the _Customizations_ menu to customize that entity. Typically you'll see this when you create entities using YAML.
+This simply means that this entity does not provide a unique identification (e.g., a serial number)\*. As a result, the normal editing process that allows you to change various settings such as the entity ID, icon, friendly name, etc. is not possible here. Typically, you'll see this when you create entities using YAML, but it can also appear if the integration that provides this entity simply cannot determine a unique ID.
+
+If your user profile has the "Advanced Mode" activated, you will also see the second paragraph in the popup with a link to the [customization user interface](https://www.home-assistant.io/docs/configuration/customizing-devices/#customization-using-the-ui) for this specific entity, which offers some customization options.
+
+\* In case you want to read about more about that, head over to this [developer documentation page](https://developers.home-assistant.io/docs/entity_registry_index/).
diff --git a/source/_includes/site/footer.html b/source/_includes/site/footer.html
index 0aae66130f20..c0b64c5cfd88 100644
--- a/source/_includes/site/footer.html
+++ b/source/_includes/site/footer.html
@@ -18,6 +18,7 @@
Home Assistant Alerts
Developers
Data Science
+
Community Forum
Contact (no support!)
Security Vulnerabilities
Privacy
diff --git a/source/_integrations/ads.markdown b/source/_integrations/ads.markdown
index 62d486cad447..9c896868d5be 100644
--- a/source/_integrations/ads.markdown
+++ b/source/_integrations/ads.markdown
@@ -1,7 +1,6 @@
---
title: ADS
description: Connect Home Assistant to TwinCAT devices via the ADS interface
-logo: beckhoff.png
ha_category:
- Hub
- Binary Sensor
diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown
index 37aa25bb34f0..e3d6dac09d3a 100644
--- a/source/_integrations/alexa.smart_home.markdown
+++ b/source/_integrations/alexa.smart_home.markdown
@@ -119,7 +119,7 @@ Next you need create a Lambda function.
- Scroll down a little bit, you will find `Environment variables`, you need add 1 environment variable and, if required, 3 optional variables. This is done by selecting `Manage environment variables` then adding the following:
- *(required)* Key = BASE_URL, Value = your Home Assistant instance's Internet accessible URL with port if needed. *Do not include the trailing `/`*.
- *(optional)* Key = NOT_VERIFY_SSL, Value = *True*. You can set this to *True* to ignore SSL issues, for example if you don't have a valid SSL certificate or you are using a self-signed certificate.
- - *(optional)* Key = DEBUG, Value = *True*. Set this variable to log the debug message.
+ - *(optional)* Key = DEBUG, Value = *True*. Set this variable to log the debug message and to allow the LONG_LIVED_ACCESS_TOKEN
- *(optional, not recommend)* Key = LONG_LIVED_ACCESS_TOKEN, Value = your Home Assistant Long-Lived Access Token. To avoid the use of a long-lived access token you will connect your Alexa Smart Home skill with your Home Assistant user account in the later steps, meaning you don't need to add it here. However, the access token you got from login flow is only valid for 30 minutes. It will be hard for you to test lambda function with the access token in test data. So for your convenience, you can remove the access token from the test data, [generate a long-lived access token][generate-long-lived-access-token] put here, then the function will fall back to read token from environment variables. (tips: You did not enable the security storage for your environment variables, so your token saved here is not that safe. You should only use it for debugging and testing purpose. You should remove and delete the long-lived access token after you finish the debugging.)
@@ -167,9 +167,9 @@ After your Home Assistant has restarted, go back to `AWS Lambda Console`, you ar
This test event is a `Discovery` directive, your Home Assistant instance will respond with a list of devices Alexa can interact with. This test data is lack of `token` in `payload.scope`, your Lambda function will read the `LONG_LIVED_ACCESS_TOKEN` from environment variable.
-Click the `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, you will get a `INVALID_AUTHORIZATION_CREDENTIAL` response as the execution result.
+Click the `Test` button. If you don't have `LONG_LIVED_ACCESS_TOKEN`, or you haven't enabled `DEBUG` you will get a `INVALID_AUTHORIZATION_CREDENTIAL` response as the execution result.
-Now, you can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you put your long-lived access token to the `Environment variable`, do not forget click `Save` button before you `Test` again.
+Now, you can login to your Home Assistant and [generate a long-lived access token][generate-long-lived-access-token]. After you put your long-lived access token to the `Environment variable` and set the `DEBUG` environment variable to `True`, do not forget to click the `Save` button before you `Test` again.
This time, you will get a list of your devices in the response. 🎉
diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown
index 988ccf7945ce..1b95cb1891b9 100644
--- a/source/_integrations/androidtv.markdown
+++ b/source/_integrations/androidtv.markdown
@@ -12,6 +12,12 @@ ha_domain: androidtv
The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device.
+
+
+When setting up this integration, it is recommended that you do NOT use an ADB server and instead use the built-in Python ADB implementation. This simplifies the setup and makes it easier to troubleshoot issues. If there are stability issues with this approach, then you may wish to try using an ADB server. See the [ADB Setup](#adb-setup) section for more information.
+
+
+
## Device preparation
To set up your device, you will need to find its IP address and enable ADB debugging. For Android TV devices, please consult the documentation for your device.
@@ -35,12 +41,6 @@ media_player:
- platform: androidtv
name: Android TV 1
host: 192.168.0.111
-
- # Use an ADB server for sending ADB commands
- - platform: androidtv
- name: Android TV 2
- host: 192.168.0.222
- adb_server_ip: 127.0.0.1
```
{% configuration %}
diff --git a/source/_integrations/aquostv.markdown b/source/_integrations/aquostv.markdown
index 401e4f3eb8a0..b90c4d732c06 100644
--- a/source/_integrations/aquostv.markdown
+++ b/source/_integrations/aquostv.markdown
@@ -74,5 +74,6 @@ Currently known supported models:
- LC-60SQ15U
- LC-50US40 (no volume control, not fully tested)
- LC-70LE650U
+- LC-70LE747E (no volume control)
If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io/blob/current/source/_integrations/aquostv.markdown).
diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown
index 96ddd61667dc..04d73c6c49af 100644
--- a/source/_integrations/calendar.google.markdown
+++ b/source/_integrations/calendar.google.markdown
@@ -221,8 +221,10 @@ For example, the actions following this condition will only be executed for even
```yaml
condition:
- condition: template
- value_template: "{{is_state_attr('calendar.calendar_name', 'message', 'vacation') }}"
+ - condition: state
+ entity_id: calendar.calendar_name
+ state: vacation
+ attribute: message
```
{% endraw %}
diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown
index 2fe9861df4f8..6ebdcab96cb3 100644
--- a/source/_integrations/cast.markdown
+++ b/source/_integrations/cast.markdown
@@ -124,7 +124,7 @@ media_player:
type: list
keys:
uuid:
- description: UUID of a Cast device to add to Home Assistant. Use only if you don't want to add all available devices. The device won't be added until discovered through mDNS. In order to find the UUID for your device use a mDNS browser or advanced users can use the following Python command (adjust friendly names as required) - python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=["Living Room TV", "Bedroom TV", "Office Chromecast"]))"
+ description: UUID of a Cast device to add to Home Assistant. Use only if you don't want to add all available devices. The device won't be added until discovered through mDNS. In order to find the UUID for your device use a mDNS browser or advanced users can use the following Python command (adjust friendly names as required) - `python3 -c "import pychromecast; print(pychromecast.get_listed_chromecasts(friendly_names=['Living Room TV', 'Bedroom TV', 'Office Chromecast']))"`
required: false
type: string
ignore_cec:
diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown
index 24b70971d61c..60daa03e7b50 100644
--- a/source/_integrations/daikin.markdown
+++ b/source/_integrations/daikin.markdown
@@ -27,6 +27,7 @@ There is currently support for the following device types within Home Assistant:
- The European versions of the Wifi Controller Unit (BRP069A41, 42, 43, 45), which is powered by the [Daikin Online Controller](https://play.google.com/store/apps/details?id=eu.daikin.remoapp) application. The new version of WiFi Controller Unit BRP069Bxx is also confirmed to work, tested and working devices are the BRP069B41 and BRP069B45.
- The Australian version of the Daikin Wifi Controller Unit BRP072A42, which is operated by the [Daikin Mobile Controller](https://itunes.apple.com/au/app/daikin-mobile-controller/id917168708?mt=8) ([Android version](https://play.google.com/store/apps/details?id=eu.daikin.remoapp)) application. Confirmed working on a Daikin Cora Series Reverse Cycle Split System Air Conditioner 2.5kW Cooling FTXM25QVMA with operation mode, temp, fan swing (3d, horizontal, vertical).
- BRP072Cxx based units (including Zena devices)*.
+- The United States version of the Wifi Controller Unit (BRP069A43), which is powered by the [Daikin Comfort Control](https://play.google.com/store/apps/details?id=us.daikin.wwapp) application. Confirmed working on a Daikin Wall Unit FTXS15LVJU and a Floor Unit FVXS15NVJU with operation mode, temp, fan swing (3d, horizontal, vertical).
- The Australian version of the Daikin Wifi Controller for **AirBase** units (BRP15B61), which is operated by the [Daikin Airbase](https://play.google.com/store/apps/details?id=au.com.daikin.airbase) application.
- **SKYFi** based units, which is operated by the SKYFi application*.
@@ -112,3 +113,16 @@ Zones with the name `-` will be ignored, just as the AirBase application is work
Additionally the Daikin Streamer (air purifier) function can be toggled on supported devices using a switch.
+
+## Region Changing
+
+The European and United States controllers (Most likely the Australian controllers too) have an HTTP API endpoint that allows you to change the controllers region so that other regional apps can be used. (Sometimes these controllers get exported to regions that can not download the app for the controllers region.)
+
+`http://Daikin-IP-Address/common/set_regioncode?reg=XX` Replace XX with your region code of choice.
+
+Currently known region codes:
+- AU
+- EU
+- JP
+- US
+- TH
diff --git a/source/_integrations/discovery.markdown b/source/_integrations/discovery.markdown
index 015c6cb122c9..41f37df0bc00 100644
--- a/source/_integrations/discovery.markdown
+++ b/source/_integrations/discovery.markdown
@@ -79,7 +79,6 @@ Valid values for ignore are:
* `netgear_router`: NETGEAR routers
* `octoprint`: Octoprint
* `openhome`: Linn / Openhome
- * `panasonic_viera`: Panasonic Viera
* `philips_hue`: Philips Hue
* `sabnzbd`: SABnzbd downloader
* `samsung_printer`: Samsung SyncThru Printer
diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown
index b376f705a62d..029094d66509 100644
--- a/source/_integrations/doods.markdown
+++ b/source/_integrations/doods.markdown
@@ -12,7 +12,10 @@ The `doods` image processing integration allows you to detect and recognize obje
## Setup
-You need to have DOODS running somewhere. It's easiest to run as a [Docker](https://hub.docker.com/r/snowzach/doods) container.
+The DOODS software needs to be running before this integration can be used. Options to run the DOODS software:
+
+- Run as [Home Assistant add-on](https://github.com/snowzach/hassio-addons)
+- Run as a [Docker container](https://hub.docker.com/r/snowzach/doods)
## Configuration
diff --git a/source/_integrations/egardia.markdown b/source/_integrations/egardia.markdown
index 4b5e3f823333..2a924b0b3129 100644
--- a/source/_integrations/egardia.markdown
+++ b/source/_integrations/egardia.markdown
@@ -98,7 +98,7 @@ There seem to be multiple versions of software running on GATE-02 devices; we ha
## Advanced configuration
1. Log in to your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password.
-2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'.
+2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. **If the system support XMPP, disable XMPP by invalidating the configuration in the XMPP menu (for example by changing the user name). This is required for recent firmwares of the GATE-03 system as it does not use the Reporting server at all in the case of a valid XMPP configuration.**
3. The Egardia integration relies on capturing the status codes that your alarm emits when something happens (status change or trigger). These codes will be unique for every situation - i.e., the code emitted by the alarm when a sensor is triggered is unique to that sensor. Also, if you have multiple users or remotes, each remote has unique codes that are emitted by the alarm when status is changed using that remote or by that user. For the Egardia integration to work correctly you will need to capture the codes. To do this, on your Home Assistant machine run `$ sudo python3 egardiaserver.py`. Refer to the [python-egardia repository](https://github.com/jeroenterheerdt/python-egardia) for detailed documentation on parameters. This will receive status codes from your alarm control panel and display them. Record the codes shown as well as the status they relate to (see step 4 below). Make sure to change the status of your alarm to all states (disarm, arm, home) by all means possible (all users, remotes, web login, app) as well as trigger the alarm in all ways possible to get 100% coverage of all the codes the alarm system generates. You will need to run this script once and stop it once you have captured all the possible codes. Also, if you ever add users, remotes or sensors to your alarm system, make sure to re-run the script to capture the extra codes so you can update your configuration (see step 4 below). **For comfort, before triggering the alarm it might be good to disable the siren temporarily (can be done in Panel Settings).**
4. Once you have the codes, update your `configuration.yaml`:
```yaml
diff --git a/source/_integrations/fan.template.markdown b/source/_integrations/fan.template.markdown
index 09aa1495c9ea..35bac403e6b3 100644
--- a/source/_integrations/fan.template.markdown
+++ b/source/_integrations/fan.template.markdown
@@ -10,8 +10,8 @@ ha_domain: template
---
The `template` platform creates fans that combine integrations and provides the
-ability to run scripts or invoke services for each of the turn_on, turn_off, set_speed,
-set_oscillating, and set_direction commands of a fan.
+ability to run scripts or invoke services for each of the `turn_on`, `turn_off`, `set_speed`,
+`set_oscillating`, and `set_direction` commands of a fan.
To enable Template Fans in your installation, add the following to your
`configuration.yaml` file:
@@ -68,7 +68,7 @@ fan:
required: false
type: string
value_template:
- description: "Defines a template to get the state of the fan. Valid value: 'on'/'off'"
+ description: "Defines a template to get the state of the fan. Valid values: `on`, `off`"
required: true
type: template
speed_template:
@@ -76,11 +76,11 @@ fan:
required: false
type: template
oscillating_template:
- description: "Defines a template to get the osc state of the fan. Valid value: true/false"
+ description: "Defines a template to get the osc state of the fan. Valid values: `true`, `false`"
required: false
type: template
direction_template:
- description: "Defines a template to get the direction of the fan. Valid value: 'forward'/'reverse'"
+ description: "Defines a template to get the direction of the fan. Valid values: `forward`, `reverse`"
required: false
type: template
availability_template:
diff --git a/source/_integrations/fritz.markdown b/source/_integrations/fritz.markdown
index ca963b614213..99d44eba9895 100644
--- a/source/_integrations/fritz.markdown
+++ b/source/_integrations/fritz.markdown
@@ -22,7 +22,7 @@ device_tracker:
{% configuration %}
host:
- description: The IP address of your router, e.g., `192.168.1.1`. It is optional since every FRITZ!Box is also reachable by using the IP address 169.254.1.1.
+ description: The IP address of your router, e.g., `192.168.178.1`. It is optional since every FRITZ!Box is also reachable by using the IP address 169.254.1.1.
required: false
type: string
default: 169.254.1.1
@@ -38,7 +38,7 @@ password:
{% endconfiguration %}
-It seems that it is not necessary to use the password in current generation FRITZ!Box routers because the necessary data can be retrieved anonymously.
+TR-064 needs to be enabled in the FRITZ!Box network settings for Home Assistant to login and read device info.
See the [device tracker integration page](/integrations/device_tracker/) for instructions how to configure the people to be tracked.
diff --git a/source/_integrations/gpslogger.markdown b/source/_integrations/gpslogger.markdown
index cbc508915222..50d3ba7cd4f5 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 from [GitHub](https://github.com/mendhak/gpslogger/releases) or [F-Droid](https://apt.izzysoft.de/fdroid/index/apk/com.mendhak.gpslogger) on your device.
+Install GPSLogger for Android from [GitHub](https://github.com/mendhak/gpslogger/releases) or [F-Droid](https://f-droid.org/en/packages/com.mendhak.gpslogger/) on your device.
After the launch, go to **General Options**. Enable **Start on bootup** and **Start on app launch**.
diff --git a/source/_integrations/hikvision.markdown b/source/_integrations/hikvision.markdown
index c24c53c3027f..a2fce04d834f 100644
--- a/source/_integrations/hikvision.markdown
+++ b/source/_integrations/hikvision.markdown
@@ -61,6 +61,10 @@ and has been confirmed to work with the following models:
- IPC-D140H(-M)
- DS-7616NI-K2 (NVR)
+This platform also was confirmed to work with the following Hikvison-based NVRS
+
+- N46PCK (Annke H800 4K NVR)
+
## Configuration
To enable this sensor,
diff --git a/source/_integrations/history.markdown b/source/_integrations/history.markdown
index 657a413b0ffb..f3b10ce5e9a5 100644
--- a/source/_integrations/history.markdown
+++ b/source/_integrations/history.markdown
@@ -77,7 +77,7 @@ Without any `include` or `exclude` configuration the history displays graphs for
`scenes` are never shown) on a given date. If you are only interested in some
of the entities you have several options:
-Define domains and entities to `exclude` (aka. blacklist). This is convenient
+Define domains and entities to `exclude` (aka. blocklist). This is convenient
when you are basically happy with the information displayed, but just want to
remove some entities or domains. Usually these are entities/domains which do not
change or rarely change (like `updater` or `automation`).
@@ -97,7 +97,7 @@ history:
```
Define domains and entities to display by using the `include` configuration
-(aka. whitelist). If you have a lot of entities in your system and your
+(aka. allowlist). If you have a lot of entities in your system and your
`exclude` list is getting too large, it might be better just to define the
entities or domains to `include`.
diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown
index b5768e51c32e..57d428ac8f27 100644
--- a/source/_integrations/homematic.markdown
+++ b/source/_integrations/homematic.markdown
@@ -203,14 +203,14 @@ This does *not* affect the entities in Home Assistant. They all use their own co
### Reading attributes of entities
-Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the [template sensor](/integrations/template) component. Here's an example of a template sensor that exposes the valve state of a thermostat.
+Most devices have, besides their state, additional attributes like their battery state or valve position. These can be accessed using templates in automations, or even as their own entities using the [template sensor](/integrations/template) component. Here's an example of a template sensor that exposes the valve position of a thermostat.
```yaml
sensor:
- platform: template
sensors:
bedroom_valve:
- value_template: "{% raw %}{{ state_attr('climate.leq123456', 'valve') }}{% endraw %}"
+ value_template: "{% raw %}{{ state_attr('climate.leq123456', 'level') }}{% endraw %}"
entity_id: climate.leq123456
friendly_name: 'Bedroom valve'
```
diff --git a/source/_integrations/http.markdown b/source/_integrations/http.markdown
index 567af1ef9220..84b109577a2f 100644
--- a/source/_integrations/http.markdown
+++ b/source/_integrations/http.markdown
@@ -107,7 +107,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](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/).
+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.
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.
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index ddb1100f1075..d14e51de0844 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -1098,7 +1098,7 @@ state_address:
required: false
type: string
invert:
- description: Invert the telegrams payload before processing or sending. This is applied before `reset_after` is evaluated so the reset will send "1" to the bus.
+ description: Invert the telegrams payload before processing or sending.
required: false
type: boolean
default: False
diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown
index 90b8db94f6af..756e213213db 100644
--- a/source/_integrations/meteoalarm.markdown
+++ b/source/_integrations/meteoalarm.markdown
@@ -40,7 +40,7 @@ province:
required: true
type: string
language:
- description: "The 2 letters of your language, please be aware that this is only possible in the current country. So 'ne' is only possible in Netherlands. Possible options are: bu, bs, ce, da, de, ee, en, es, ga, ca, su, fr, gr, he, hr, ma, is, it, li, la, sr, mk, ma, ne, no, po, ro, cp, sv, sl, eu."
+ description: "The 2 letters of your language, please be aware that this is only possible in the current country. So 'ne' is only possible in Netherlands. Possible options are: bu, bs, ce, da, de, ee, en, es, ga, ca, su, fr, gr, he, hr, ma, is, it, li, la, sr, mk, ma, ne, no, po, pt, ro, cp, sv, sl, eu."
required: false
type: string
default: 'en'
diff --git a/source/_integrations/mpd.markdown b/source/_integrations/mpd.markdown
index c39ef0254654..56599b910b33 100644
--- a/source/_integrations/mpd.markdown
+++ b/source/_integrations/mpd.markdown
@@ -61,4 +61,4 @@ relaxdeck:
volume_level: 0.60
```
-This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://mopidy.com/ext/mpd/) as used by [Pi MusicBox](https://www.pimusicbox.com/).
+This platform works with [Music Player Daemon](https://www.musicpd.org/) and [mopidy](https://www.mopidy.com/) with [Mopidy-MPD](https://mopidy.com/ext/mpd/) as used by [Pi MusicBox](https://www.pimusicbox.com/). While all of these rely on the common MPD protocol, not all implementations support all features, especially with regard to album artwork, embedded artwork and volume control. The platform will fall back gracefully if support isn't detected.
diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown
index 61c9b481d8ac..3857525a5c1b 100644
--- a/source/_integrations/nest.markdown
+++ b/source/_integrations/nest.markdown
@@ -40,6 +40,7 @@ Home Assistant is integrated with the following devices through the SDM API:
- Example devices: All Google Nest Thermostat models
- Display, Camera, and Doorbell Devices
- The camera live stream is available as a `camera` entity
+ - Device Triggers for use in automations such as Person detected, Motion detected and Doorbell pressed
- Example devices: All Google Nest Cam models, Google Nest Hello Video Doorbell, Google Nest Hub Max
You are in control of the information and capabilities exposed to Home Assistant. You can authorize a single device, multiple devices, or different levels of functionality such as motion events, live streams, for any particular device. The integration is flexible enough to adapt based on what you allow.
@@ -290,15 +291,49 @@ Given a thermostat named `Upstairs` then sensors are created with names such as
## Automation and Device Triggers
-All Google Nest Cam models and the Google Nest Hello Video Doorbell support [Device Triggers](/docs/automation/trigger/#device-triggers) that enable automation in Home Assistant:
+The Nest integration makes [device triggers](/docs/automation/trigger/#device-triggers) available to enable automation
+in Home Assistant. You should review the [Automating Home Assistant](/getting-started/automation/) getting started guide on automations or the [Automation](/docs/automation/) documentation for full details.
-- `camera_motion`: Motion detected, when a [CameraMotion](https://developers.google.com/nest/device-access/traits/device/camera-motion#events) event is received.
-- `camera_person`: Person detected, when a [CameraPerson](https://developers.google.com/nest/device-access/traits/device/camera-person#events) event is received.
-- `camera_sound`: Sound detected, when a [CameraSound](https://developers.google.com/nest/device-access/traits/device/camera-sound#events) event is received.
-- `doorbell_chime`: Doorbell pressed, when a [DoorbellChime](https://developers.google.com/nest/device-access/traits/device/doorbell-chime#events) event is received.
+
-See [Automating Home Assistant](/getting-started/automation/) for the getting started guide on automations or the [Automation](/docs/automation/) documentation for full details.
+All Google Nest Cam models and the Google Nest Hello Video Doorbell support device triggers:
+- **Motion detected**
+- **Person detected**
+- **Sound detected**
+- **Doorbell pressed** *for Google Nest Hello Video Doorbell only*
+
+The lower level Pub/Sub subscriber receives events in real time and internally fires `nest_event` events within Home Assistant:
+
+| Device Trigger | Pub/Sub Event | `nest_event` |
+| -------------- | ----- | ------------- |
+| Motion detected | [CameraMotion](https://developers.google.com/nest/device-access/traits/device/camera-motion#events) | `motion_detected` |
+| Person detected | [CameraPerson](https://developers.google.com/nest/device-access/traits/device/camera-person#events) | `person_detected` |
+| Sound detected | [CameraSound](https://developers.google.com/nest/device-access/traits/device/camera-sound#events) | `sound_detected` |
+| Doorbell pressed | [DoorbellChime](https://developers.google.com/nest/device-access/traits/device/doorbell-chime#events) | `doorbell_chime` |
+
+### Example
+
+This automation will trigger when a `nest_event` event type with a type of `camera_motion` is received from the specified `device_id`.
+
+```yaml
+alias: motion alert
+trigger:
+ - platform: event
+ event_type: nest_event
+ event_data:
+ device_id: YOUR_DEVICE_ID
+ type: camera_motion
+action:
+ - service: notify.mobile_app_pixel_2
+ data:
+ title: motion detected
+ message: front door motion detected
+ data:
+ image: /api/camera_proxy/camera.front_door
+```
+
+The action in this section uses the [Android Companion App](https://companion.home-assistant.io/docs/notifications/notifications-basic/) and the camera proxy to send an notification with a snapshot from the camera.
# Legacy Works With Nest API
diff --git a/source/_integrations/nuimo_controller.markdown b/source/_integrations/nuimo_controller.markdown
index 0d628bd7256c..d88b11af7c89 100644
--- a/source/_integrations/nuimo_controller.markdown
+++ b/source/_integrations/nuimo_controller.markdown
@@ -1,7 +1,6 @@
---
title: Nuimo controller
description: Instructions on how to setup and use a Nuimo device in Home Assistant.
-logo: nuimo.png
ha_category:
- Hub
ha_release: 0.29
diff --git a/source/_integrations/owntracks.markdown b/source/_integrations/owntracks.markdown
index d96ab5185a93..1d39406b0e1d 100644
--- a/source/_integrations/owntracks.markdown
+++ b/source/_integrations/owntracks.markdown
@@ -23,7 +23,7 @@ To configure OwnTracks, you must set it up via the integrations panel in the con
### Configuring the app - Android
-Install [OwnTracks](https://play.google.com/store/apps/details?id=org.owntracks.android) or [NextTracks](https://codeberg.org/nexttracks/android/releases) (Soon available from [F-Droid](https://gitlab.com/fdroid/fdroiddata/-/merge_requests/6831)) application for Android.
+Install [OwnTracks](https://play.google.com/store/apps/details?id=org.owntracks.android) or [NextTracks](https://codeberg.org/nexttracks/android/releases) (Available from [F-Droid](https://f-droid.org/packages/org.nexttracks.android)) application for Android.
In the app, open the sidebar and click on preferences, then on the connection. Change the following settings:
diff --git a/source/_integrations/panel_custom.markdown b/source/_integrations/panel_custom.markdown
index 928d2a2d40f9..cf023b58b0bc 100644
--- a/source/_integrations/panel_custom.markdown
+++ b/source/_integrations/panel_custom.markdown
@@ -11,7 +11,7 @@ ha_domain: panel_custom
ha_iot_class:
---
-The `panel_custom` support allows you to add additional panels to your Home Assistant frontend. The panels are listed in the sidebar if wished and can be highly customized. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/frontend/custom-ui/creating-custom-panels/).
+The `panel_custom` integration allows you to write your own panels in JavaScript and add them to Home Assistant. See the developer documentation on [instructions how to build your own panels](https://developers.home-assistant.io/docs/frontend/custom-ui/creating-custom-panels/).
To enable customized panels in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_integrations/pjlink.markdown b/source/_integrations/pjlink.markdown
index 415ed9f8d050..079a1ce3f8da 100644
--- a/source/_integrations/pjlink.markdown
+++ b/source/_integrations/pjlink.markdown
@@ -1,7 +1,6 @@
---
title: PJLink
description: Instructions on how to integrate PJLink enabled projectors into Home Assistant.
-logo: pjlink.png
ha_category:
- Media Player
ha_release: 0.76
diff --git a/source/_integrations/pushbullet.markdown b/source/_integrations/pushbullet.markdown
index 1d376eb6028f..d8858f77d93f 100644
--- a/source/_integrations/pushbullet.markdown
+++ b/source/_integrations/pushbullet.markdown
@@ -189,6 +189,6 @@ action:
-Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them.
+Don't forget to [allowlist external directories](/docs/configuration/basic/), so Home Assistant has access to them.
diff --git a/source/_integrations/qvr_pro.markdown b/source/_integrations/qvr_pro.markdown
index 9b6110a75293..76359e98272a 100644
--- a/source/_integrations/qvr_pro.markdown
+++ b/source/_integrations/qvr_pro.markdown
@@ -1,7 +1,6 @@
---
title: QVR Pro
description: Instructions on how to integrate QVR Pro within Home Assistant.
-logo: qvr_pro.png
ha_category:
- Camera
ha_iot_class: Local Polling
diff --git a/source/_integrations/raspyrfm.markdown b/source/_integrations/raspyrfm.markdown
index bd9e5dfb238e..0e18edd904f8 100644
--- a/source/_integrations/raspyrfm.markdown
+++ b/source/_integrations/raspyrfm.markdown
@@ -1,7 +1,6 @@
---
title: RaspyRFM
description: Instructions on how to integrate RaspyRFM switches into Home Assistant.
-logo: seegelsysteme.png
ha_category:
- Switch
ha_release: 0.85
diff --git a/source/_integrations/recorder.markdown b/source/_integrations/recorder.markdown
index 220cb4a466ac..b3f9be53691d 100644
--- a/source/_integrations/recorder.markdown
+++ b/source/_integrations/recorder.markdown
@@ -110,7 +110,7 @@ recorder:
## Configure Filter
-By default, no entity will be excluded. To limit which entities are being exposed to `Recorder`, you can use the `include` and `exclude` parameters.
+By default, no entity will be excluded. To limit which entities are being exposed to `recorder`, you can use the `include` and `exclude` parameters.
```yaml
# Example filter to include specified domains and exclude specified entities
@@ -148,7 +148,7 @@ If you only want to hide events from your history, take a look at the [`history`
### Common filtering examples
-Defining domains and entities to `exclude` (i.e. blacklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains.
+Defining domains and entities to `exclude` (i.e. blocklist) is convenient when you are basically happy with the information recorded, but just want to remove some entities or domains.
```yaml
# Example configuration.yaml entry with exclude
@@ -169,7 +169,7 @@ recorder:
- call_service # Don't record service calls
```
-Defining domains and entities to record by using the `include` configuration (i.e. whitelist) is convenient if you have a lot of entities in your system and your `exclude` lists possibly get very large, so it might be better just to define the entities or domains to record.
+Defining domains and entities to record by using the `include` configuration (i.e. allowlist) is convenient if you have a lot of entities in your system and your `exclude` lists possibly get very large, so it might be better just to define the entities or domains to record.
```yaml
# Example configuration.yaml entry with include
diff --git a/source/_integrations/scsgate.markdown b/source/_integrations/scsgate.markdown
index fd763b674cf2..3cc2120ee394 100644
--- a/source/_integrations/scsgate.markdown
+++ b/source/_integrations/scsgate.markdown
@@ -1,7 +1,6 @@
---
title: SCSGate
description: Instructions on how to integrate SCSGate into Home Assistant.
-logo: bus_scs.png
ha_category:
- Hub
- Cover
diff --git a/source/_integrations/sensor.command_line.markdown b/source/_integrations/sensor.command_line.markdown
index 9340514a3808..6629495ca39e 100644
--- a/source/_integrations/sensor.command_line.markdown
+++ b/source/_integrations/sensor.command_line.markdown
@@ -60,26 +60,6 @@ json_attributes:
In this section you find some real-life examples of how to use this sensor.
-### Hard drive temperature
-
-There are several ways to get the temperature of your hard drive. A simple solution is to use [hddtemp](https://savannah.nongnu.org/projects/hddtemp/).
-
-```bash
-hddtemp -n /dev/sda
-```
-
-To use this information, the entry for a command-line sensor in the `configuration.yaml` file will look like this.
-
-```yaml
-# Example configuration.yaml entry
-sensor:
- - platform: command_line
- name: HD Temperature
- command: "hddtemp -n /dev/sda"
- # If errors occur, make sure configuration file is encoded as UTF-8
- unit_of_measurement: "°C"
-```
-
### CPU temperature
Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your `configuration.yaml` file:
diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown
index df539f89c5e4..9e04f7c3db28 100644
--- a/source/_integrations/sensor.markdown
+++ b/source/_integrations/sensor.markdown
@@ -25,7 +25,7 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **temperature**: Temperature in °C or °F.
- **power**: Power in W or kW.
- **pressure**: Pressure in hPa or mbar.
-- **timestamp**: Datetime object or timestamp string.
+- **timestamp**: Datetime object or timestamp string (ISO 8601).
- **current**: Current in A.
- **energy**: Energy in Wh or kWh.
- **power_factor**: Power Factor in %.
diff --git a/source/_integrations/sensor.rflink.markdown b/source/_integrations/sensor.rflink.markdown
index b4b9c5f40b31..1e959d3bfdcb 100644
--- a/source/_integrations/sensor.rflink.markdown
+++ b/source/_integrations/sensor.rflink.markdown
@@ -93,6 +93,7 @@ Sensor type values:
- revision
- noise_level
- temperature
+- timestamp
- uv_intensity
- version
- voltage
diff --git a/source/_integrations/serial_pm.markdown b/source/_integrations/serial_pm.markdown
index f5848d33bba1..e26f94e34e81 100644
--- a/source/_integrations/serial_pm.markdown
+++ b/source/_integrations/serial_pm.markdown
@@ -1,7 +1,6 @@
---
title: Serial Particulate Matter
description: Instructions on how to integrate particulate matter (dust) sensors with Home Assistant.
-logo: serial_pm.png
ha_category:
- DIY
ha_release: 0.26
diff --git a/source/_integrations/signal_messenger.markdown b/source/_integrations/signal_messenger.markdown
index e2946faa972a..230351dbf248 100644
--- a/source/_integrations/signal_messenger.markdown
+++ b/source/_integrations/signal_messenger.markdown
@@ -64,7 +64,7 @@ recipients:
## Examples
-A few examples on how to use this integration.
+A few examples on how to use this integration as actions in automations.
### Text message
diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown
index 8d01a9bb0f45..1ed7da9f5de7 100644
--- a/source/_integrations/spotify.markdown
+++ b/source/_integrations/spotify.markdown
@@ -26,7 +26,7 @@ The Spotify media player integration allows you to control [Spotify](https://www
### Create a Spotify application
-- Login to [Spotify Developer](https://developer.spotify.com).
+- Login to [Spotify Developer](https://developer.spotify.com) via Dashboard.
- 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 below](#configuration).
diff --git a/source/_integrations/startca.markdown b/source/_integrations/startca.markdown
index 9b77092a6a84..43e249141759 100644
--- a/source/_integrations/startca.markdown
+++ b/source/_integrations/startca.markdown
@@ -73,7 +73,7 @@ monitored_conditions:
description: Total bandwidth (download and upload sum calculation) used during the unlimited period (gigabytes).
total_download:
description: Total bandwidth download (Grace + Used) (gigabytes).
- total_download:
+ total_upload:
description: Total bandwidth upload (Grace + Used) (gigabytes).
used_remaining:
description: Remaining bandwidth calculated from used and supplied total bandwidth (gigabytes).
diff --git a/source/_integrations/unifi.markdown b/source/_integrations/unifi.markdown
index 1099a1781908..eba691270395 100644
--- a/source/_integrations/unifi.markdown
+++ b/source/_integrations/unifi.markdown
@@ -31,7 +31,7 @@ The user needs administrator privileges in order to control switches.
### Extra configuration of the integration
-All configuration options are offered from the front end. Enter what UniFi integration you want to change options on and press the cog wheel.
+All configuration options are offered from the front end. Enter what UniFi integration you want to change options on and press the cog wheel. Some advanced options are available when "Advanced Mode" is enabled on your user profile page.
### Configuring Users
@@ -49,7 +49,7 @@ It is recommended that you run the UniFi controller in a dedicated virtual machi
## Presence detection
-This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](https://ui.com/) [UniFi](https://unifi-network.ui.com/) controller.
+This platform allows you to detect presence by looking at devices connected to a [Ubiquiti](https://ui.com/) [UniFi](https://unifi-network.ui.com/) controller. By default devices are marked as away 300 seconds after they were last seen.
### Troubleshooting and Time Synchronization
diff --git a/source/_integrations/version.markdown b/source/_integrations/version.markdown
index 8a19fc59dfaa..50bcc7be6df2 100644
--- a/source/_integrations/version.markdown
+++ b/source/_integrations/version.markdown
@@ -50,7 +50,7 @@ source:
### Supported images for Home Assistant
-`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `raspberrypi4`, `raspberrypi4-64`, `tinker`, `odroid-c2`, `odroid-xu`
+`default`, `qemux86`, `qemux86-64`, `qemuarm`, `qemuarm-64`, `intel-nuc`, `raspberrypi`, `raspberrypi2`, `raspberrypi3`, `raspberrypi3-64`, `raspberrypi4`, `raspberrypi4-64`, `tinker`, `odroid-c2`, `odroid-n2`, `odroid-xu`
## Alternatives for showing local version
diff --git a/source/_integrations/watson_iot.markdown b/source/_integrations/watson_iot.markdown
index 93b1fd68eaef..760091fdda42 100644
--- a/source/_integrations/watson_iot.markdown
+++ b/source/_integrations/watson_iot.markdown
@@ -66,7 +66,7 @@ exclude:
required: false
type: list
include:
- description: Configure which integrations should be included in recordings to Watson IoT Platform. If set, all other entities will not be recorded to Watson IoT Platform. Values set by the **blacklist** option will prevail.
+ description: Configure which integrations should be included in recordings to Watson IoT Platform. If set, all other entities will not be recorded to Watson IoT Platform. Values set by the **exclude** option will prevail.
required: false
type: map
keys:
diff --git a/source/_integrations/xbox.markdown b/source/_integrations/xbox.markdown
index 98261c627d20..f2568e11cbd8 100644
--- a/source/_integrations/xbox.markdown
+++ b/source/_integrations/xbox.markdown
@@ -16,7 +16,7 @@ ha_config_flow: true
The Xbox integration allows you to control Xbox One (or newer) consoles from Home Assistant.
-Home Assistant authenticates with Xbox Live through OAuth2 using the Home Assistant Cloud account linking service. Set up the integration through **Configuration -> Integrations -> Xbox**. Ensure you login using the Microsoft account that is linked to your Xbox consoles. Note that for the media player and remote entities to be added your Xbox will need to have remote features enabled via **Settings -> Devices & conections -> Remote Features** (you may need to uprade your controller firmware).
+Home Assistant authenticates with Xbox Live through OAuth2 using the Home Assistant Cloud account linking service. Set up the integration through **Configuration -> Integrations -> Xbox**. Ensure you login using the Microsoft account that is linked to your Xbox consoles. Note that for the media player and remote entities to be added your Xbox will need to have remote features enabled via **Settings -> Devices & connections -> Remote features** (you may need to upgrade your controller firmware).
@@ -42,13 +42,13 @@ The Xbox media player platform will create Media Player entities for each consol
Launches an application on the Xbox console using the application's product ID. Also supports "Home" and "TV" to navigate to the dashboard or Live TV respectively.
-You can find Product IDs by using the **Developer Tools -> Events** tab and listening to the `call_service` event. In a new browser tab, navigate to the media browser for your console and click on an App/Game to see the product ID in the event.
+You can find Product IDs using the **Developer Tools -> Events** tab and listening to the `call_service` event. In a new browser tab, navigate to the media browser for your console and click on an App/Game to see the product ID in the event.
| Service data attribute | Description |
| ---------------------- | --------------------------------------|
| `entity_id` | `entity_id` of the Xbox media player |
-| `media_content_id` | "Home"/"TV"/{product_id} |
-| `media_content_type` | Any Value |
+| `media_content_id` | "Home"/"TV"/{product_id} |
+| `media_content_type` | Any Value |
**Examples:**
@@ -243,9 +243,9 @@ elements:
## Binary Sensor
-The Xbox binary sensor platform automatically keeps track of your "**Favorite** friends". In your friends list, select **Change friendship -> Favorite** in order to have that person automatically pulled into Home Assistant.
+The Xbox binary sensor platform automatically keeps track of your "**Favorite** friends". In your friends list, select **Change friendship -> Favorite** to have that person automatically pulled into Home Assistant.
-There are 4 binary sensors that are added, 3 of which are disabled by default. They can be enabled in the "Xbox Live" service on the devices page.
+4 binary sensors are added, 3 of which are disabled by default. They can be enabled in the "Xbox Live" service on the devices page.
| Entity ID | Default | Description |
| ----------------------------------------- | -------- | ------------------------------------------------------------|
@@ -258,7 +258,7 @@ There are 4 binary sensors that are added, 3 of which are disabled by default. T
Just like the binary sensors, the Xbox sensor platform automatically keeps track of your "**Favorite** friends".
-There are 4 sensors that are added, **all** of which are disabled by default. They can be enabled in the "Xbox Live" service on the devices page.
+4 sensors are added, **all** of which are disabled by default. They can be enabled in the "Xbox Live" service on the devices page.
| Entity ID | Default | Description |
| ---------------------------------| -------- | -------------------------------------------------------------------------|
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index 87e2bb9fd160..8b9c211951b9 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -71,6 +71,10 @@ iOS: Most options are still in Chinese, you need the fourth item from the top.
Note: If you have multiple devices needing a token, e.g., Xiaomi Mi Robot Vacuum and a Xiaomi IR Remote, the above method may not work. The Xiaomi Home app will display a token, though it isn't the correct one. The alternative method using "Mi Home v5.4.49" will provide the correct token.
+### Windows or macOS
+
+If using an Windows or macOS device to retrieve the Access Token use the [Get MiHome devices token](https://github.com/Maxmudjon/Get_MiHome_devices_token) App.
+
### Alternative methods
@@ -179,6 +183,10 @@ The information output is:
- `Address` - The IP that the device has on the network.
- `Token` - The token of the device or `???` if it could not be automatically determined.
+### Xiaomi Cloud Tokens Extractor
+
+Alternate method to get all yours devices tokens in one run. Please follow this [instruction](https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor).
+
## Xiaomi Gateway
The `xiaomi_miio` gateway integration allows you to control the gateway and its connected subdevices.
diff --git a/source/_layouts/default.html b/source/_layouts/default.html
index 15d7d57be4ba..b929b9ffd039 100644
--- a/source/_layouts/default.html
+++ b/source/_layouts/default.html
@@ -2,6 +2,38 @@
diff --git a/source/_lovelace/entities.markdown b/source/_lovelace/entities.markdown
index 9f273dde59c3..28688842429d 100644
--- a/source/_lovelace/entities.markdown
+++ b/source/_lovelace/entities.markdown
@@ -4,9 +4,9 @@ sidebar_label: Entities
description: "The Entities card is the most common type of card. It groups items together into lists."
---
-The Entities card is the most common type of card. It groups items together into lists.
+The Entities card is the most common type of card. It groups items together into lists. It can be used to display an entity's state or attribute, but also contain buttons, web links, etc.
-To add the Entities card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the plus button in the bottom right corner and select **Entities** from the card picker.
+To add the Entities card to your user interface, click the Lovelace menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Entities** from the card picker.
{% configuration %}
type:
@@ -15,7 +15,7 @@ type:
type: string
entities:
required: true
- description: "A list of entity IDs or `entity` objects, see below."
+ description: "A list of entity IDs or `entity` objects or special row objects (see below)."
type: list
title:
required: false
@@ -56,7 +56,7 @@ If you define entities as objects instead of strings (by adding `entity:` before
{% configuration %}
entity:
required: true
- description: Home Assistant entity ID.
+ description: Entity ID.
type: string
type:
required: false
@@ -115,12 +115,14 @@ double_tap_action:
## Special Row Elements
+Rather than only displaying an entity's state as a text output, the Entities card supports multiple special rows for buttons, attributes, web links, dividers and sections, etc.
+
### Button
{% configuration %}
type:
required: true
- description: button
+ description: "`button`"
type: string
name:
required: true
@@ -156,7 +158,7 @@ Special row to start Home Assistant Cast.
{% configuration %}
type:
required: true
- description: cast
+ description: "`cast`"
type: string
dashboard:
required: false
@@ -190,7 +192,7 @@ Special row that displays based on entity states.
{% configuration %}
type:
required: true
- description: conditional
+ description: "`conditional`"
type: string
conditions:
required: true
@@ -199,7 +201,7 @@ conditions:
keys:
entity:
required: true
- description: HA entity ID.
+ description: Entity ID.
type: string
state:
required: false
@@ -211,7 +213,7 @@ conditions:
type: string
row:
required: true
- description: Row to display if all conditions match.
+ description: Row to display if all conditions match. Can be any of the various supported rows described on this page.
type: map
{% endconfiguration %}
@@ -224,7 +226,7 @@ Note: Conditions with more than one entity are treated as an 'and' condition. Th
{% configuration %}
type:
required: true
- description: divider
+ description: "`divider`"
type: string
style:
required: false
@@ -238,7 +240,7 @@ style:
{% configuration %}
type:
required: true
- description: section
+ description: "`section`"
type: string
label:
required: false
@@ -251,7 +253,7 @@ label:
{% configuration %}
type:
required: true
- description: weblink
+ description: "`weblink`"
type: string
url:
required: true
@@ -271,10 +273,12 @@ icon:
### Buttons
+Multiple buttons displayed in a single row next to each other. See examples further below.
+
{% configuration %}
type:
required: true
- description: buttons
+ description: "`buttons`"
type: string
entities:
required: true
@@ -283,7 +287,7 @@ entities:
keys:
entity:
required: true
- description: The entity to render.
+ description: Entity ID
type: string
icon:
required: false
@@ -304,11 +308,11 @@ entities:
{% configuration %}
type:
required: true
- description: attribute
+ description: "`attribute`"
type: string
entity:
required: true
- description: Home Assistant entity ID.
+ description: Entity ID
type: string
attribute:
required: true
@@ -328,9 +332,9 @@ name:
type: string
{% endconfiguration %}
-## Example
+## Examples
-Entity rows:
+### Entity rows
```yaml
type: entities
@@ -348,21 +352,69 @@ entities:
- group.all_locks
```
-Special rows:
+### Buttons row
+
+Above the divider are regular entity rows, below one of type `buttons`. Note that regular entity rows automatically show the entity name, whereas for buttons you have to explicitely specify a label / name.
+
+
+
+Screenshot of buttons row.
+
+
+```yaml
+type: entities
+entities:
+ - entity: light.office_ceiling
+ - entity: light.dining_ceiling
+ - type: divider
+ - type: buttons
+ entities:
+ - entity: light.office_ceiling
+ name: Office Ceiling
+ - entity: light.dining_ceiling
+ name: Dining Ceiling
+```
+
+### Other special rows
+
+
+
+Screenshot of other special rows.
+
```yaml
type: entities
title: Entities card sample
-show_header_toggle: true
entities:
- - type: call-service
+ - type: button
icon: mdi:power
- name: Bed light
+ name: Bed light transition
action_name: Toggle light
- service: light.toggle
- service_data:
- entity_id: light.bed_light
+ tap_action:
+ type: call-service
+ service: light.toggle
+ service_data:
+ entity_id: light.bed_light
+ transition: 10
- type: divider
+ - type: attribute
+ entity: sun.sun
+ attribute: elevation
+ name: Sun elevation
+ prefix: '~'
+ suffix: Units
+ - type: conditional
+ conditions:
+ - entity: sun.sun
+ state: above_horizon
+ row:
+ entity: sun.sun
+ type: attribute
+ attribute: azimuth
+ icon: mdi:angle-acute
+ name: Sun azimuth
+ - type: section
+ label: Section example
- type: weblink
name: Home Assistant
url: https://www.home-assistant.io/
diff --git a/source/_posts/2021-01-06-release-20211.markdown b/source/_posts/2021-01-06-release-20211.markdown
index c2c83872d158..19a90c2e5657 100644
--- a/source/_posts/2021-01-06-release-20211.markdown
+++ b/source/_posts/2021-01-06-release-20211.markdown
@@ -40,12 +40,16 @@ Enjoy the release!
../Frenck
-- [In memoriam of villhellm](#in-memoriam-of-villhellm)
+- [In memoriam of Villhellm](#in-memoriam-of-villhellm)
- [Home Assistant Conference Videos](#home-assistant-conference-videos)
- [Other noteworthy changes](#other-noteworthy-changes)
- [New Integrations](#new-integrations)
- [New Platforms](#new-platforms)
- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
+- [Release 2021.1.1 - January 9](#release-202111---january-9)
+- [Release 2021.1.2 - January 14](#release-202112---january-14)
+- [Release 2021.1.3 - January 15](#release-202113---january-15)
+- [Release 2021.1.4 - January 16](#release-202114---january-16)
- [If you need help...](#if-you-need-help)
- [Breaking Changes](#breaking-changes)
- [Farewell to the following](#farewell-to-the-following)
@@ -150,6 +154,89 @@ The following integrations are now available via the Home Assistant UI:
- [BMW Connected Drive][bmw_connected_drive docs], done by [@rikroe]
+## Release 2021.1.1 - January 9
+
+- Fix KNX cover state return open when unknown ([@farmio] - [#44926]) ([knx docs])
+- Fix wait_template incorrectly matching falsey values ([@bdraco] - [#44938])
+- Disambiguate Supervisor HTTPUnauthorized on user/password validation ([@zeehio] - [#44940]) ([hassio docs])
+- Fix parameters when toggling light ([@emontnemery] - [#44950]) ([light docs])
+- Bump pymyq to 2.0.13 ([@ehendrix23] - [#44961]) ([myq docs])
+
+[#44926]: https://github.com/home-assistant/core/pull/44926
+[#44938]: https://github.com/home-assistant/core/pull/44938
+[#44940]: https://github.com/home-assistant/core/pull/44940
+[#44950]: https://github.com/home-assistant/core/pull/44950
+[#44961]: https://github.com/home-assistant/core/pull/44961
+[@bdraco]: https://github.com/bdraco
+[@ehendrix23]: https://github.com/ehendrix23
+[@emontnemery]: https://github.com/emontnemery
+[@farmio]: https://github.com/farmio
+[@zeehio]: https://github.com/zeehio
+[hassio docs]: /integrations/hassio/
+[knx docs]: /integrations/knx/
+[light docs]: /integrations/light/
+[myq docs]: /integrations/myq/
+
+## Release 2021.1.2 - January 14
+
+- Update the Utility Meter sensor status on HA start ([@dgomes] - [#44765]) ([utility_meter docs])
+- Bump bimmer_connected to 0.7.14 ([@rikroe] - [#45086]) ([bmw_connected_drive docs])
+- Fix neato battery sensor not ready ([@Santobert] - [#44946]) ([neato docs])
+- Fallback to tag for any AfterShip tracking that have no checkpoints ([@ludeeus] - [#45053]) ([aftership docs])
+- Bump MyQ to 2.0.14 ([@ehendrix23] - [#45067]) ([myq docs])
+- Fix OpenWeatherMap forecast timestamp ([@spacegaier] - [#45124]) ([openweathermap docs])
+- Add filtering ([@frenck] - [commit](https://github.com/home-assistant/core/commit/0bd2c13e261c7b3d96ba451c50f81dd3e659c5c9))
+
+[#44765]: https://github.com/home-assistant/core/pull/44765
+[#44946]: https://github.com/home-assistant/core/pull/44946
+[#45053]: https://github.com/home-assistant/core/pull/45053
+[#45067]: https://github.com/home-assistant/core/pull/45067
+[#45086]: https://github.com/home-assistant/core/pull/45086
+[#45124]: https://github.com/home-assistant/core/pull/45124
+[@Santobert]: https://github.com/Santobert
+[@dgomes]: https://github.com/dgomes
+[@ehendrix23]: https://github.com/ehendrix23
+[@ludeeus]: https://github.com/ludeeus
+[@rikroe]: https://github.com/rikroe
+[@spacegaier]: https://github.com/spacegaier
+[aftership docs]: /integrations/aftership/
+[bmw_connected_drive docs]: /integrations/bmw_connected_drive/
+[myq docs]: /integrations/myq/
+[neato docs]: /integrations/neato/
+[openweathermap docs]: /integrations/openweathermap/
+[utility_meter docs]: /integrations/utility_meter/
+
+## Release 2021.1.3 - January 15
+
+- Extend filter and filter tests ([@frenck] - [#45179]) ([http docs])
+- Bump aioHTTP 3.7.3 - YARL 1.6.3 ([@pvizeli] - [#45180])
+
+[#45179]: https://github.com/home-assistant/core/pull/45179
+[#45180]: https://github.com/home-assistant/core/pull/45180
+[@frenck]: https://github.com/frenck
+[@pvizeli]: https://github.com/pvizeli
+[http docs]: /integrations/http/
+
+## Release 2021.1.4 - January 16
+
+- Fix Home Connect ambient color ([@Sjack-Sch] - [#45038]) ([home_connect docs])
+- Fix HomeKit climate integration for devices with a single set point in Heat_Cool mode. ([@thevoltagesource] - [#45065]) ([homekit_controller docs])
+- Fix all forecast datetime values in OpenWeatherMap ([@spacegaier] - [#45202]) ([openweathermap docs])
+- Bump up ZHA dependency ([@Adminiuga] - [#45230]) ([zha docs])
+
+[#45038]: https://github.com/home-assistant/core/pull/45038
+[#45065]: https://github.com/home-assistant/core/pull/45065
+[#45202]: https://github.com/home-assistant/core/pull/45202
+[#45230]: https://github.com/home-assistant/core/pull/45230
+[@Adminiuga]: https://github.com/Adminiuga
+[@Sjack-Sch]: https://github.com/Sjack-Sch
+[@spacegaier]: https://github.com/spacegaier
+[@thevoltagesource]: https://github.com/thevoltagesource
+[home_connect docs]: /integrations/home_connect/
+[homekit_controller docs]: /integrations/homekit_controller/
+[openweathermap docs]: /integrations/openweathermap/
+[zha docs]: /integrations/zha/
+
## If you need help...
...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e).
diff --git a/source/_posts/2021-01-14-security-bulletin.markdown b/source/_posts/2021-01-14-security-bulletin.markdown
new file mode 100644
index 000000000000..c82d8c9a169a
--- /dev/null
+++ b/source/_posts/2021-01-14-security-bulletin.markdown
@@ -0,0 +1,33 @@
+---
+layout: post
+title: "Security Bulletin"
+description: "Update your Home Assistant instance as soon as possible."
+date: 2021-01-14 00:00:00
+date_formatted: "January 14, 2021"
+author: Paulus Schoutsen
+author_twitter: balloob
+comments: true
+categories: Public-Service-Announcement
+og_image: /images/blog/2021-01-security-bulletin/social.png
+---
+
+
+
+It has come to our attention that certain custom integrations have security issues and could potentially leak sensitive information. Home Assistant is not responsible for custom integrations and you use custom integrations at your own risk.
+
+The latest version of Home Assistant Core has extra protection to help secure your instance.
+
+**Update your Home Assistant instance as soon as possible.**
+
+To update Home Assistant, click on the Supervisor menu item to see if an update to 2021.1.3 (or newer) is available. If you don’t have the Supervisor menu item, follow the [update instructions](/docs/installation/updating/). Home Assistant 2021.1.3 is still compatible with Python 3.7 and an upgrade is possible.
+
+**If you cannot update Home Assistant at this time, we strongly advise you to disable all custom integrations.** You can disable your custom integrations by renaming the `custom_components` folder inside your Home Assistant configuration folder to something else. Please be sure to restart Home Assistant after you’ve renamed it.
+
+If you need additional help with upgrading, we are happy to help you out on our [Discord chat](/join-chat/) server.
+
+We will provide more details about impacted custom integrations in the future.
+
+Paulus
+
+**Edit: 15 January 2021**: Blog post updated to state 2021.1.3, which added some additional checks.
+**Edit: 16 January 2021**: Blog post updated to remove supervisor reload instructions, as latest version is now generally available. Added note that Python 3.7 is still supported.
diff --git a/source/_redirects b/source/_redirects
index da56a0e89f6a..ad198cd130c4 100644
--- a/source/_redirects
+++ b/source/_redirects
@@ -2184,3 +2184,79 @@
# 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
+
+
+# Removed integrations
+/components/alarm_control_panel.alarmdotcom /more-info/removed-integration 301
+/components/alarm_control_panel.ialarm /more-info/removed-integration 301
+/components/device_tracker.ubee /more-info/removed-integration 301
+/components/device_tracker.xfinity /more-info/removed-integration 301
+/components/edp_redy /more-info/removed-integration 301
+/components/fedex /more-info/removed-integration 301
+/components/fortigate /more-info/removed-integration 301
+/components/history_graph /more-info/removed-integration 301
+/components/hydroquebec /more-info/removed-integration 301
+/components/linksys_ap /more-info/removed-integration 301
+/components/liveboxplaytv /more-info/removed-integration 301
+/components/lock.lockitron /more-info/removed-integration 301
+/components/lockitron /more-info/removed-integration 301
+/components/media_player.liveboxplaytv /more-info/removed-integration 301
+/components/media_player.liveboxplaytv /more-info/removed-integration 301
+/components/nma /more-info/removed-integration 301
+/components/notify.nma /more-info/removed-integration 301
+/components/notify.pushetta /more-info/removed-integration 301
+/components/notify.yessssms /more-info/removed-integration 301
+/components/postnl /more-info/removed-integration 301
+/components/pushetta /more-info/removed-integration 301
+/components/ruter /more-info/removed-integration 301
+/components/sensor.bom /more-info/removed-integration 301
+/components/sensor.duke_energy /more-info/removed-integration 301
+/components/sensor.gearbest /more-info/removed-integration 301
+/components/sensor.hydroquebec /more-info/removed-integration 301
+/components/sensor.linky /more-info/removed-integration 301
+/components/sensor.mopar /more-info/removed-integration 301
+/components/sensor.postnl /more-info/removed-integration 301
+/components/sensor.prezzibenzina /more-info/removed-integration 301
+/components/sensor.teksavvy /more-info/removed-integration 301
+/components/sensor.yweather /more-info/removed-integration 301
+/components/simple_alarm /more-info/removed-integration 301
+/components/srp_energy /more-info/removed-integration 301
+/components/switch.edp_redy /more-info/removed-integration 301
+/components/sytadin /more-info/removed-integration 301
+/components/teksavvy /more-info/removed-integration 301
+/components/uber /more-info/removed-integration 301
+/components/ups /more-info/removed-integration 301
+/components/usps /more-info/removed-integration 301
+/components/weather.bom /more-info/removed-integration 301
+/components/weather.yweather /more-info/removed-integration 301
+/components/weblink /more-info/removed-integration 301
+/components/yessssms /more-info/removed-integration 301
+/components/yweather /more-info/removed-integration 301
+/integrations/alarmdotcom /more-info/removed-integration 301
+/integrations/bom /more-info/removed-integration 301
+/integrations/ciscospark /more-info/removed-integration 301
+/integrations/duke_energy /more-info/removed-integration 301
+/integrations/edp_redy /more-info/removed-integration 301
+/integrations/fortigate /more-info/removed-integration 301
+/integrations/gearbest /more-info/removed-integration 301
+/integrations/history_graph /more-info/removed-integration 301
+/integrations/hydroquebec /more-info/removed-integration 301
+/integrations/ialarm /more-info/removed-integration 301
+/integrations/linky /more-info/removed-integration 301
+/integrations/liveboxplaytv /more-info/removed-integration 301
+/integrations/liveboxplaytv /more-info/removed-integration 301
+/integrations/lockitron /more-info/removed-integration 301
+/integrations/mopar /more-info/removed-integration 301
+/integrations/nma /more-info/removed-integration 301
+/integrations/postnl /more-info/removed-integration 301
+/integrations/prezzibenzina /more-info/removed-integration 301
+/integrations/pushetta /more-info/removed-integration 301
+/integrations/salt /more-info/removed-integration 301
+/integrations/simple_alarm /more-info/removed-integration 301
+/integrations/teksavvy /more-info/removed-integration 301
+/integrations/ubee /more-info/removed-integration 301
+/integrations/uber /more-info/removed-integration 301
+/integrations/weblink /more-info/removed-integration 301
+/integrations/xfinity /more-info/removed-integration 301
+/integrations/yessssms /more-info/removed-integration 301
+/integrations/yweather /more-info/removed-integration 301
\ No newline at end of file
diff --git a/source/conference/index.markdown b/source/conference/index.markdown
index ec7aa59bae9c..23e5b3e5dd24 100644
--- a/source/conference/index.markdown
+++ b/source/conference/index.markdown
@@ -20,10 +20,10 @@ After the talks, attendees will be able to join various sessions about different
## Watch it back
-The conference is over! The live stream of the main stage is available below. All other videos will come online when we have time.
+The conference is over! All talks have been [published online on YouTube](https://www.youtube.com/playlist?list=PLKsVm4cWHDQDGRXnybFUOLlcDWPsroGGB) and are also embedded below:
-
+
## Keynotes & Talks schedule
diff --git a/source/hassio/enable_i2c.markdown b/source/hassio/enable_i2c.markdown
index a4542745b08e..ed83a1571e2a 100644
--- a/source/hassio/enable_i2c.markdown
+++ b/source/hassio/enable_i2c.markdown
@@ -12,7 +12,7 @@ You will need:
- SD card reader
- SD card with Home Assistant Operating System flashed on it
-### Step 1 - Access the Home Assistant OS boot partition
+### Step 1 - Access the Home Assistant Operating System boot partition
Shutdown/turn-off your Home Assistant installation and unplug the SD card.
Plug the SD card into an SD card reader and find a drive/file system named
@@ -44,3 +44,24 @@ and make sure the first partition is available.
present at boot time.
The I2C devices should now be present under /dev.
+
+## From Home Assistant Operating System Terminal
+
+Alternatively, by attaching a keyboard and screen to your device, you can access the physical terminal to the Home Assistant Operating System.
+
+You can enabled i2c via this terminal:
+
+- Login as `root`.
+- Type `login` and press enter to access the shell.
+- Type the following to enable i2c, you may need to replace `sda1` with `sdb1` or `mmcblk0p1` depending on your platform:
+
+ ```shell
+ mkdir /tmp/mnt
+ mount /dev/sda1 /tmp/mnt
+ mkdir -p /tmp/mnt/CONFIG/modules
+ echo -ne i2c-dev>/tmp/mnt/CONFIG/modules/rpi-i2c.conf
+ echo dtparam=i2c_vc=on >> /tmp/mnt/CONFIG/config.txt
+ echo dtparam=i2c_arm=on >> /tmp/mnt/CONFIG/config.txt
+ sync
+ reboot
+ ```
diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown
index 02e47531a413..124276eb206b 100644
--- a/source/hassio/installation.markdown
+++ b/source/hassio/installation.markdown
@@ -105,21 +105,21 @@ If you would like to test next release before anyone else, you can install the b
[balenaEtcher]: https://www.balena.io/etcher
[hassos-network]: https://github.com/home-assistant/operating-system/blob/dev/Documentation/network.md
-[pi3-32]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_rpi3-5.9.img.xz
-[pi3-64]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_rpi3-64-5.9.img.xz
-[pi4-32]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_rpi4-5.9.img.xz
-[pi4-64]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_rpi4-64-5.9.img.xz
-[tinker]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_tinker-5.9.img.xz
-[odroid-c2]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_odroid-c2-5.9.img.xz
-[odroid-c4]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_odroid-c4-5.9.img.xz
-[odroid-n2]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_odroid-n2-5.9.img.xz
-[odroid-xu4]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_odroid-xu4-5.9.img.xz
-[intel-nuc]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_intel-nuc-5.9.img.xz
-[vmdk]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_ova-5.9.vmdk.xz
-[vhdx]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_ova-5.9.vhdx.xz
-[vdi]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_ova-5.9.vdi.xz
-[qcow2]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_ova-5.9.qcow2.xz
-[Virtual Appliance]: https://github.com/home-assistant/operating-system/releases/download/5.9/hassos_ova-5.9.ova
+[pi3-32]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_rpi3-5.10.img.xz
+[pi3-64]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_rpi3-64-5.10.img.xz
+[pi4-32]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_rpi4-5.10.img.xz
+[pi4-64]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_rpi4-64-5.10.img.xz
+[tinker]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_tinker-5.10.img.xz
+[odroid-c2]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_odroid-c2-5.10.img.xz
+[odroid-c4]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_odroid-c4-5.10.img.xz
+[odroid-n2]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_odroid-n2-5.10.img.xz
+[odroid-xu4]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_odroid-xu4-5.10.img.xz
+[intel-nuc]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_intel-nuc-5.10.img.xz
+[vmdk]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_ova-5.10.vmdk.xz
+[vhdx]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_ova-5.10.vhdx.xz
+[vdi]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_ova-5.10.vdi.xz
+[qcow2]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_ova-5.10.qcow2.xz
+[Virtual Appliance]: https://github.com/home-assistant/operating-system/releases/download/5.10/hassos_ova-5.10.ova
[local]: http://homeassistant.local:8123
[samba]: /addons/samba/
[ssh]: /addons/ssh/
diff --git a/source/images/blog/2021-01-security-bulletin/social.png b/source/images/blog/2021-01-security-bulletin/social.png
new file mode 100644
index 000000000000..199a11ee9f2a
Binary files /dev/null and b/source/images/blog/2021-01-security-bulletin/social.png differ
diff --git a/source/images/faq/faq_no_unique_id.jpg b/source/images/faq/faq_no_unique_id.jpg
new file mode 100644
index 000000000000..0acc7c0226f0
Binary files /dev/null and b/source/images/faq/faq_no_unique_id.jpg differ
diff --git a/source/images/integrations/nest/device_triggers.png b/source/images/integrations/nest/device_triggers.png
new file mode 100644
index 000000000000..8cb5868c4ef7
Binary files /dev/null and b/source/images/integrations/nest/device_triggers.png differ
diff --git a/source/images/lovelace/lovelace_entity_row_buttons.jpg b/source/images/lovelace/lovelace_entity_row_buttons.jpg
new file mode 100644
index 000000000000..638c9e702995
Binary files /dev/null and b/source/images/lovelace/lovelace_entity_row_buttons.jpg differ
diff --git a/source/images/lovelace/lovelace_entity_row_special.jpg b/source/images/lovelace/lovelace_entity_row_special.jpg
new file mode 100644
index 000000000000..fc9c3e643a5e
Binary files /dev/null and b/source/images/lovelace/lovelace_entity_row_special.jpg differ
diff --git a/source/lovelace/actions.markdown b/source/lovelace/actions.markdown
index c1987a35b9f7..bd5e9d3aa433 100644
--- a/source/lovelace/actions.markdown
+++ b/source/lovelace/actions.markdown
@@ -35,7 +35,7 @@ tap_action:
required: true
description: "Action to perform (`more-info`, `toggle`, `call-service`, `navigate`, `url`, `none`)"
type: string
- default: "`toggle`"
+ default: "`toggle` (some cards overwrite default to `more-info` if the provided entity cannot be toggled)"
navigation_path:
required: false
description: "Path to navigate to (e.g., `/lovelace/0/`) when `action` defined as `navigate`"
@@ -189,7 +189,7 @@ exemptions:
{% configuration exemptions %}
user:
required: true
- description: User id that can see the view tab. For each user´s id listed, the confirmation dialog will NOT be shown.
+ description: User ID for which the confirmation dialog will **not** be shown.
type: string
{% endconfiguration %}
diff --git a/source/lovelace/header-footer.markdown b/source/lovelace/header-footer.markdown
index e0dcd885f3ab..5e45a00c7b42 100644
--- a/source/lovelace/header-footer.markdown
+++ b/source/lovelace/header-footer.markdown
@@ -26,7 +26,7 @@ type:
type: string
image:
required: true
- description: The URL of an image.
+ description: The URL of an image
type: string
tap_action:
required: false
@@ -65,15 +65,15 @@ entities:
keys:
entity:
required: true
- description: The entity to render.
+ description: The entity to render
type: string
icon:
required: false
- description: Override the entity icon.
+ description: Override the entity icon
type: string
image:
required: false
- description: Override the entity image.
+ description: Override the entity image
type: string
name:
required: false
@@ -100,11 +100,11 @@ footer:
{% configuration header-footer %}
entity:
required: true
- description: Entity id of `sensor` domain
+ description: Entity ID of `sensor` domain
type: string
detail:
required: false
- description: Detail of the graph `1` or `2`, `1` equals one point/hour, `2` equals six points/hour
+ description: "Detail level of the graph: `1` or `2` (`1` = one point/hour, `2` = six points/hour)"
type: integer
default: 1
hours_to_show:
diff --git a/source/more-info/removed-integration.markdown b/source/more-info/removed-integration.markdown
new file mode 100644
index 000000000000..f05c114384ef
--- /dev/null
+++ b/source/more-info/removed-integration.markdown
@@ -0,0 +1,20 @@
+---
+title: Removed integration
+description: The integration you requested has been removed
+sidebar: false
+---
+
+The integration you requested has been removed.
+
+Possible reasons for the removal:
+
+- It's unmaintained.
+- It's no longer working.
+- It does not comply with the rules described in our [ADR's][architecture-repo].
+- It does not follow our [design guidelines][dev-docs] for integrations.
+
+For alternative integrations have a look at the list of our [integrations here][integrations].
+
+[architecture-repo]: https://github.com/home-assistant/architecture
+[dev-docs]: https://developers.home-assistant.io/docs/development_index
+[integrations]: /integrations