diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown
index 4be5a89adcf..29c92d64752 100644
--- a/source/_docs/authentication.markdown
+++ b/source/_docs/authentication.markdown
@@ -5,7 +5,7 @@ description: "Guide on authentication in Home Assistant."
Our authentication system secures access to Home Assistant.
-If you are starting Home Assistant for the first time, or you have logged out, you will be asked for credentials before you can log in.
+If you are starting Home Assistant for the first time, or you have logged out, you will be asked for credentials before you can log in.
@@ -21,29 +21,28 @@ For the moment, other user accounts will have the same access as the owner accou
-If you want to manage users and you're an owner but you do not see "Users" in your main configuration menu, make sure that "Advanced Mode" is enabled for your user in your profile.
+If you want to manage users and you're an owner but you do not see "Users" in your main configuration menu, make sure that "Advanced Mode" is enabled for your user in your profile.
### Your Account Profile
-Once you're logged in, you can see the details of your account at the _Profile_ page by clicking on the circular at the very bottom of the sidebar.
+Once you're logged in, you can see the details of your account at the _Profile_ page by clicking on the circular at the very bottom of the sidebar.
You can:
-* Change your password.
-* Enable or disable [multi-factor authentication](/docs/authentication/multi-factor-auth/).
-* Delete _Refresh Tokens_. These are created when you log in from a device. Delete them if you want to force the device to log out.
-* Create [Long Lived Access Tokens](https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token) so scripts can securely interact with Home Assistant.
-* Log out of Home Assistant.
+- Change your password.
+- Enable or disable [multi-factor authentication](/docs/authentication/multi-factor-auth/).
+- Delete _Refresh Tokens_. These are created when you log in from a device. Delete them if you want to force the device to log out.
+- Create [Long Lived Access Tokens](https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token) so scripts can securely interact with Home Assistant.
+- Log out of Home Assistant.
### Securing your login
-_Make sure to choose a secure password!_ At some time in the future, you will probably want to access Home Assistant from outside your local network. This means you are also exposed to random black-hats trying to do the same. Treat the password like the key to your house.
+_Make sure to choose a secure password!_ At some time in the future, you will probably want to access Home Assistant from outside your local network. This means you are also exposed to random black-hats trying to do the same. Treat the password like the key to your house.
-
-As an extra level of security, you can turn on [multi-factor authentication](/docs/authentication/multi-factor-auth/).
+As an extra level of security, you can turn on [multi-factor authentication](/docs/authentication/multi-factor-auth/).
## Other authentication techniques
@@ -77,7 +76,7 @@ INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer
Before using the procedure below, make sure you explore options provided [here](/docs/locked_out).
-While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete *all* the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/):
+While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete _all_ the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/):
- `auth`
- `auth_provider.homeassistant`
diff --git a/source/_docs/blueprint/schema.markdown b/source/_docs/blueprint/schema.markdown
index 0f4477c1812..93dd66a86fa 100644
--- a/source/_docs/blueprint/schema.markdown
+++ b/source/_docs/blueprint/schema.markdown
@@ -63,7 +63,7 @@ homeassistant:
keys:
min_version:
description: >
- Minimum required version of Home Assistant to use the blueprint (e.g.
+ Minimum required version of Home Assistant to use the blueprint (e.g.
`2022.4.0`. It is important to set this if the blueprint uses any features
introduced in recent releases to head off issues.
type: string
@@ -135,7 +135,7 @@ A blueprint can have as many inputs as you like.
The inputs are available as custom YAML tags, but not as template variables.
To use a blueprint input in a template, it first needs to be exposed as either
-a [script level variable](/integrations/script/#configuration-variables) or in
+a [script level variable](/integrations/script/#configuration-variables) or in
a [variable script step](/docs/scripts/#variables).
```yaml
diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown
index aff21e5a3f2..b9d228dd904 100644
--- a/source/_docs/blueprint/selectors.markdown
+++ b/source/_docs/blueprint/selectors.markdown
@@ -304,7 +304,7 @@ The output of this selector is the entry ID of the config entry, for example, `6
## Date selector
-The date selector shows a date input that allows the user to specify a date.
+The date selector shows a date input that allows the user to specify a date.

@@ -320,7 +320,7 @@ The output of this selector is will contain the date in Year-Month-Day
## Date & time selector
The date selector shows a date and time input that allows the user to specify a
-date with a specific time.
+date with a specific time.

@@ -775,7 +775,7 @@ select:
{% configuration select %}
options:
- description: >
+ description: >
List of options that the user can choose from. Small lists (5 items or less), are displayed as radio buttons. When more items are added, a dropdown list is used.
type: list
required: true
@@ -820,7 +820,7 @@ select:
{% configuration select_map %}
options:
- description: >
+ description: >
List of options that the user can choose from. Small lists (5 items or less), are displayed as radio buttons. When more items are added, a dropdown list is used.
type: map
required: true
@@ -1012,7 +1012,7 @@ suffix:
type: string
required: false
type:
- description: >
+ description: >
The type of input. This is a browser hint, which can improve
the client-side validation of the input. The value isn't validated
by the backend. Possible types are:
@@ -1042,7 +1042,7 @@ The output of this selector is will contain the selected theme, for example:
## Time selector
The time selector shows a time input that allows the user to specify a time
-of the day.
+of the day.

diff --git a/source/_docs/configuration/securing.markdown b/source/_docs/configuration/securing.markdown
index 77e49f4600f..db6c9729a5a 100644
--- a/source/_docs/configuration/securing.markdown
+++ b/source/_docs/configuration/securing.markdown
@@ -3,7 +3,7 @@ title: "Securing"
description: "Instructions on how to secure your Home Assistant installation."
---
-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.
+One major advantage of Home Assistant is that it is not dependent on cloud services. Even if you are only using Home Assistant on a local network, you should take steps to secure your instance.
## Checklist
@@ -14,17 +14,17 @@ Here's the summary of what you *must* do to secure your Home Assistant system:
## Remote Access
-If you want secure remote access, the easiest option is to use [Home Assistant cloud](/cloud/) by which you also [support](https://www.nabucasa.com/about) the founders of Home Assistant.
+If you want secure remote access, the easiest option is to use [Home Assistant cloud](/cloud/) by which you also [support](https://www.nabucasa.com/about/) the founders of Home Assistant.
Another option is to use TLS/SSL via the add-on [Duck DNS](/integrations/duckdns/) integrating Let's Encrypt.
-To expose your instance to the internet, use a [VPN](https://pivpn.io), or an [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/). Make sure to expose the used port in your router.
+To expose your instance to the internet, use a [VPN](https://pivpn.io), or an [SSH tunnel](/blog/2017/11/02/secure-shell-tunnel/). Make sure to expose the used port in your router.
### Extras for manual installations
-As well as the above we advise that you consider the following to improve security:
+Besides the above we advise that you consider the following to improve security:
- For systems that use SSH set `PermitRootLogin no` in your sshd configuration (usually `/etc/ssh/sshd_config`) and to use SSH keys for authentication instead of passwords. This is particularly important if you enable remote access to your SSH services.
- Lock down the host following good practice guidance, for example:
- * [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html) (this also applies to Raspberry Pi OS)
- * [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index), [CIS Red Hat Enterprise Linux 7 Benchmark](https://www.cisecurity.org/cis-benchmarks/)
+ - [Securing Debian Manual](https://www.debian.org/doc/manuals/securing-debian-manual/index.en.html) (this also applies to Raspberry Pi OS)
+ - [Red Hat Enterprise Linux 7 Security Guide](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/security_guide/index), [CIS Red Hat Enterprise Linux 7 Benchmark](https://www.cisecurity.org/cis-benchmarks/)
diff --git a/source/_docs/configuration/templating.markdown b/source/_docs/configuration/templating.markdown
index 6175a146fc6..b42e9a884cc 100644
--- a/source/_docs/configuration/templating.markdown
+++ b/source/_docs/configuration/templating.markdown
@@ -72,10 +72,11 @@ Not supported in [limited templates](#limited-templates).
- Iterating `states` will yield each state sorted alphabetically by entity ID.
- Iterating `states.domain` will yield each state of that domain sorted alphabetically by entity ID.
- `states.sensor.temperature` returns the state object for `sensor.temperature` (avoid when possible, see note below).
-- `states('device_tracker.paulus')` will return the state string (not the object) of the given entity, `unknown` if it doesn't exist, `unavailable` if the object exists but is not yet available.
+- `states('device_tracker.paulus')` will return the state string (not the object) of the given entity, `unknown` if it doesn't exist, `unavailable` if the object exists but is not yet available.
- `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state.
- `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist.
-- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions).
+- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions).
+
Avoid using `states.sensor.temperature.state`, instead use `states('sensor.temperature')`. It is strongly advised to use the `states()`, `is_state()`, `state_attr()` and `is_state_attr()` as much as possible, to avoid errors and error message when the entity isn't ready yet (e.g., during Home Assistant startup).
@@ -386,7 +387,6 @@ For example, if you wanted to select a field from `trigger` in an automation bas
{% endraw %}
-
### Time
`now()` and `utcnow()` are not supported in [limited templates](#limited-templates).
@@ -485,7 +485,7 @@ The `from_json` filter operates similarly, but in the other direction, de-serial
In this example, the special character '°' will be automatically escaped in order to produce valid JSON. The difference between the stringified object and the actual JSON is evident.
-*Template*
+#### Template
{% raw %}
@@ -497,7 +497,7 @@ object|to_json: {{ temp|to_json(ensure_ascii=False) }}
{% endraw %}
-*Output*
+#### Output
{% raw %}
@@ -510,7 +510,7 @@ object|to_json: {"temperature": 25, "unit": "\u00b0C"}
Conversely, `from_json` can be used to de-serialize a JSON string back into an object to make it possible to easily extract usable data.
-*Template*
+#### Template
{% raw %}
@@ -521,7 +521,7 @@ The temperature is {{ temp.temperature }}{{ temp.unit }}
{% endraw %}
-*Output*
+#### Output
{% raw %}
@@ -573,12 +573,12 @@ Not supported in [limited templates](#limited-templates).
- `distance()` will measure the distance in kilometers between home, entity, coordinates.
- `closest()` will find the closest entity.
-
#### Distance examples
If only one location is passed in, Home Assistant will measure the distance from home.
{% raw %}
+
```text
Using Lat Lng coordinates: {{ distance(123.45, 123.45) }}
@@ -703,7 +703,7 @@ Like `float` and `int`, `bool` has a filter form. Using `none` as the default va
- `e` mathematical constant, approximately 2.71828.
- `pi` mathematical constant, approximately 3.14159.
- `tau` mathematical constant, approximately 6.28318.
-- Filter `round(precision, method, default)` will convert the input to a number and round it to `precision` decimals. Round has four modes and the default mode (with no mode specified) will [round-to-even](https://en.wikipedia.org/wiki/Rounding#Roundhalfto_even). If the input value can't be converted to a `float`, returns the `default` value, or if omitted raises an error.
+- Filter `round(precision, method, default)` will convert the input to a number and round it to `precision` decimals. Round has four modes and the default mode (with no mode specified) will [round-to-even](https://en.wikipedia.org/wiki/Rounding#Roundhalfto_even). If the input value can't be converted to a `float`, returns the `default` value, or if omitted raises an error.
- `round(precision, "floor", default)` will always round down to `precision` decimals
- `round(precision, "ceil", default)` will always round up to `precision` decimals
- `round(1, "half", default)` will always round to the nearest .5 value. `precision` should be 1 for this mode
diff --git a/source/_docs/energy/electricity-grid.markdown b/source/_docs/energy/electricity-grid.markdown
index 11fe57ee271..187d683b10b 100644
--- a/source/_docs/energy/electricity-grid.markdown
+++ b/source/_docs/energy/electricity-grid.markdown
@@ -59,7 +59,7 @@ _Attention! Installing CT clamp sensor devices requires opening your electrical
Some energy providers will provide you real-time information about your usage and have this data integrated into Home Assistant.
-### Troubleshooting ###
+### Troubleshooting
If you are unable to select your energy sensor in the grid consumption drop-down, make sure that its value is being recorded in the Recorder settings.
diff --git a/source/_docs/energy/faq.markdown b/source/_docs/energy/faq.markdown
index 3d597eeac50..a7979376b48 100644
--- a/source/_docs/energy/faq.markdown
+++ b/source/_docs/energy/faq.markdown
@@ -32,4 +32,3 @@ To accomplish such, you can use [the utility_meter integration](/integrations/ut
## The Energy panel is not visible
If you do not see the Energy panel in the sidebar, make sure you have not removed [`default_config:`](/integrations/default_config/) from your `configuration.yaml`. If you have, you will need to add the `energy:` integration manually.
-
diff --git a/source/_docs/energy/gas.markdown b/source/_docs/energy/gas.markdown
index 3abe5cf7877..5633946ac20 100644
--- a/source/_docs/energy/gas.markdown
+++ b/source/_docs/energy/gas.markdown
@@ -22,4 +22,3 @@ The P1 port is a standardized port on electricity meters in the Netherlands, Bel
We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to develop [SlimmeLezer+](https://www.zuidwijk.com/product/slimmelezer-plus/). It's an affordable P1 reader powered by [ESPHome](https://esphome.io) that will seamlessly integrate this information in Home Assistant. It is being sold on [his website](https://www.zuidwijk.com/product/slimmelezer-plus/) and the firmware is open source [on GitHub](https://github.com/zuidwijk/dsmr).

-
diff --git a/source/_docs/frontend.markdown b/source/_docs/frontend.markdown
index a5780afaf89..e9c6173a870 100644
--- a/source/_docs/frontend.markdown
+++ b/source/_docs/frontend.markdown
@@ -12,4 +12,3 @@ The frontend of Home Assistant is built with [Polymer](https://www.polymer-proje
The [User Interface section](/examples/#user-interface) can give you some starting points to expand the frontend.
If you want to work on the frontend, please refer to the [Frontend Development documentation](/developers/frontend/).
-
diff --git a/source/_docs/frontend/browsers.markdown b/source/_docs/frontend/browsers.markdown
index c24fb343c20..6af9a2b70c1 100644
--- a/source/_docs/frontend/browsers.markdown
+++ b/source/_docs/frontend/browsers.markdown
@@ -72,7 +72,7 @@ There are reports that devices running with iOS prior to iOS 10, especially old
[Chrome]: https://www.google.com/chrome/
[Chromium]: https://www.chromium.org/
[Conkeror]: http://conkeror.org/
-[Edge]: https://www.microsoft.com/en-us/windows/microsoft-edge
+[Edge]: https://www.microsoft.com/en-us/edge
[elinks]: http://elinks.or.cz/
[Epiphany]: https://wiki.gnome.org/Apps/Web
[Firefox]: https://www.mozilla.org/en-US/firefox/
@@ -80,12 +80,12 @@ 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://astian.org/midori-browser/
+[Midori]: https://astian.org/en/midori-browser/
[Opera]: https://www.opera.com/
[Safari]: https://www.apple.com/safari/
[surf]: https://surf.suckless.org/
[Tor Browser]: https://www.torproject.org/
[Uzbl]: https://www.uzbl.org/
-[w3m]: http://w3m.sourceforge.net/
-[Waterfox]: https://www.waterfoxproject.org
+[w3m]: https://w3m.sourceforge.net/
+[Waterfox]: https://www.waterfox.net
[LG webOS TV Built-In]: https://www.lg.com/uk/support/help-library/details-on-enjoying-internet-browsing-on-your-lg-webos-tv-CT00008334-1435838149474
diff --git a/source/_docs/mqtt/discovery.markdown b/source/_docs/mqtt/discovery.markdown
index 6fa07ef00e7..01bef85409e 100644
--- a/source/_docs/mqtt/discovery.markdown
+++ b/source/_docs/mqtt/discovery.markdown
@@ -30,6 +30,7 @@ Supported by MQTT discovery:
- [Vacuums](/integrations/vacuum.mqtt/)
## Configuration
+
MQTT discovery is enabled by default, but can be disabled. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next".
### Advanced discovery configuration
@@ -432,7 +433,6 @@ Setting up a [light that takes JSON payloads](/integrations/light.mqtt/#json-sch
### Use object_id to influence the entity id
-
The entity id is automatically generated from the entity's name. All MQTT entity components optionally support providing an `object_id` which will be used instead if provided.
- Configuration topic: `homeassistant/sensor/device1/config`
@@ -443,8 +443,7 @@ The entity id is automatically generated from the entity's name. All MQTT entity
"name":"My Super Device",
"object_id":"my_super_device",
"state_topic": "homeassistant/sensor/device1/state"
- }
+}
```
In the example above, the entity_id will be `sensor.my_super_device` instead of `sensor.device1`.
-
diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown
index 9cb02c5ff6f..0fedaf2a496 100644
--- a/source/_integrations/alexa.intent.markdown
+++ b/source/_integrations/alexa.intent.markdown
@@ -395,4 +395,4 @@ Alexa will now respond with a random phrase each time. You can use the include f
[large-icon]: /images/integrations/alexa/alexa-512x512.png
[small-icon]: /images/integrations/alexa/alexa-108x108.png
[templates]: /topics/templating/
-[generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token
+[generate-long-lived-access-token]: https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token
diff --git a/source/_integrations/alexa.smart_home.markdown b/source/_integrations/alexa.smart_home.markdown
index ab46cec4001..19d56801f4d 100644
--- a/source/_integrations/alexa.smart_home.markdown
+++ b/source/_integrations/alexa.smart_home.markdown
@@ -1095,6 +1095,6 @@ logger:
[alexa-dev-console]: https://developer.amazon.com/alexa/console/ask
[emulated-hue-component]: /integrations/emulated_hue/
-[generate-long-lived-access-token]: https://developers.home-assistant.io/docs/en/auth_api.html#long-lived-access-token
+[generate-long-lived-access-token]: https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token
[alexa-display-categories]: https://developer.amazon.com/docs/alexa/device-apis/alexa-discovery.html#display-categories
[alexa-supported-locales]: https://developer.amazon.com/docs/alexa/device-apis/list-of-interfaces.html