"
+
+ if v[:output_content] && !v[:output_content].empty?
+ inner.concat(render_output(v[:output_content], v[:result_type], true, context))
+ end
+
+ "
#{inner.join("\n")}
"
+ end
+
+ # Tab switching script (once per page)
+ script = ""
+ unless context['tfu_script_included']
+ context['tfu_script_included'] = true
+ script = <<~SCRIPT
+
+ SCRIPT
+ end
+
+ html = []
+ html << script unless script.empty?
+ html << '
'
+ html << '
'
+ html << "
#{tab_labels.join}
"
+ html << " #{tab_contents.join("\n ")}"
+ html << '
'
+ html << '
'
+ html.join("\n")
+ end
+ end
+end
+
+Liquid::Template.register_tag('template_function_usage', Jekyll::TemplateFunctionUsageBlock)
diff --git a/plugins/template_functions_data.rb b/plugins/template_functions_data.rb
new file mode 100644
index 000000000000..b74d5d351e24
--- /dev/null
+++ b/plugins/template_functions_data.rb
@@ -0,0 +1,74 @@
+require 'json'
+require 'safe_yaml'
+
+# Generate a JSON lookup of all template functions and their parameters
+# for use by prism-template-links.js (hover tooltips and clickable links)
+module Jekyll
+ class TemplateFunctionsDataGenerator < Generator
+ safe true
+ priority :low
+
+ # Aliases must be word-only names (no operators like ==, >=, <)
+ # and lowercase to match how they appear in template code.
+ WORD_ALIAS_PATTERN = /\A[a-z_]\w*\z/
+ FUNCTION_PARAMETERS_PATTERN = /\{%\s*function_parameters\s*%\}(.*?)\{%\s*endfunction_parameters\s*%\}/m
+ MAX_PARAM_DESCRIPTION_LENGTH = 120
+
+ def generate(site)
+ funcs = {}
+
+ site.collections['template_functions']&.docs&.each do |doc|
+ func_name = doc.data['function_name']
+ next unless func_name
+
+ entry = {
+ 'd' => doc.data['description'].to_s,
+ 'u' => doc.url
+ }
+
+ params = extract_parameters(doc, func_name)
+ entry['p'] = params if params && !params.empty?
+
+ funcs[func_name] = entry
+
+ register_aliases(funcs, doc.data['aliases'], entry)
+ end
+
+ # Escape to prevent breaking out of
+
+
+
+
+
+
+{%- elsif page_type == "tutorial" -%}
+
+{%- elsif page_type == "faq" -%}
+
+{%- elsif page_type == "templating_doc" -%}
+
+{%- endif -%}
+{%- endif -%}
diff --git a/source/_includes/site/vertical_nav.html b/source/_includes/site/vertical_nav.html
index 78bedf9bae62..ad749ce668fa 100644
--- a/source/_includes/site/vertical_nav.html
+++ b/source/_includes/site/vertical_nav.html
@@ -2,7 +2,12 @@
{% assign root = url_parts[1] %}
{% assign doc = url_parts[2] %}
-{% if root == 'integrations' %}
+{% if root == 'template-functions' %}
+ {% unless page.function_name %}
+ {% include asides/docs_navigation.html %}
+ {% include asides/template_functions_navigation.html %}
+ {% endunless %}
+{% elsif root == 'integrations' %}
{% include asides/component_navigation.html %}
{% elsif root == 'getting-started' %}
diff --git a/source/_includes/template_functions/available_type.html b/source/_includes/template_functions/available_type.html
new file mode 100644
index 000000000000..6811c44d8ff6
--- /dev/null
+++ b/source/_includes/template_functions/available_type.html
@@ -0,0 +1,5 @@
+{%- if include.type == "function" -%}{% icon "mdi:function" %} {% term function %}
+{%- elsif include.type == "filter" -%}{% icon "mdi:filter-outline" %} {% term filter %}
+{%- elsif include.type == "test" -%}{% icon "mdi:test-tube" %} {% term test %}
+{%- else -%}{{ include.type }}
+{%- endif -%}
\ No newline at end of file
diff --git a/source/_includes/template_functions/more_examples.md b/source/_includes/template_functions/more_examples.md
new file mode 100644
index 000000000000..839b0209099a
--- /dev/null
+++ b/source/_includes/template_functions/more_examples.md
@@ -0,0 +1,3 @@
+## More examples
+
+Real scenarios where this function comes up in automations and templates. Copy any example and adapt it to your setup.
diff --git a/source/_includes/template_functions/related.md b/source/_includes/template_functions/related.md
new file mode 100644
index 000000000000..6fb4a26c76a2
--- /dev/null
+++ b/source/_includes/template_functions/related.md
@@ -0,0 +1,20 @@
+{% if page.related_functions %}
+{% assign all_functions = site.template_functions %}
+{% assign has_related = false %}
+{% for func_name in page.related_functions %}
+ {% assign func = all_functions | where: "function_name", func_name | first %}
+ {% if func %}{% assign has_related = true %}{% endif %}
+{% endfor %}
+{% if has_related %}
+## Related template functions
+
+These functions work well alongside this one:
+
+{% for func_name in page.related_functions %}
+ {% assign func = all_functions | where: "function_name", func_name | first %}
+ {% if func %}
+- [{{ func.title }}]({{ func.url }}) - {{ func.description }}
+ {% endif %}
+{% endfor %}
+{% endif %}
+{% endif %}
diff --git a/source/_includes/template_functions/return_type.html b/source/_includes/template_functions/return_type.html
new file mode 100644
index 000000000000..9b83299d35d2
--- /dev/null
+++ b/source/_includes/template_functions/return_type.html
@@ -0,0 +1,11 @@
+{%- if include.type == "boolean" -%}{% term boolean %}
+{%- elsif include.type == "float" -%}{% term float %}
+{%- elsif include.type == "integer" -%}{% term integer %}
+{%- elsif include.type == "string" -%}{% term string %}
+{%- elsif include.type == "list" -%}{% term list %}
+{%- elsif include.type == "iterable" -%}{% term iterable %}
+{%- elsif include.type == "datetime" -%}{% term datetime %}
+{%- elsif include.type == "any" -%}{% term any %}
+{%- elsif include.type == "list of strings" -%}{% term list %} of {% term string strings %}
+{%- else -%}{{ include.type }}
+{%- endif -%}
\ No newline at end of file
diff --git a/source/_includes/template_functions/signatures.md b/source/_includes/template_functions/signatures.md
new file mode 100644
index 000000000000..06af60406259
--- /dev/null
+++ b/source/_includes/template_functions/signatures.md
@@ -0,0 +1,5 @@
+## Function signature
+
+The signature is a technical summary of this template function. It shows the name of the function, the values (called parameters) it accepts, and what type of data each parameter expects (for example, a piece of text or a number).
+
+Function parameters that have a `=` with a value after them are optional. If you leave them out, the default value shown is used automatically. Function parameters without a default are required.
diff --git a/source/_includes/template_functions/stuck.md b/source/_includes/template_functions/stuck.md
new file mode 100644
index 000000000000..5b654cb67e45
--- /dev/null
+++ b/source/_includes/template_functions/stuck.md
@@ -0,0 +1,7 @@
+## Still stuck?
+
+The Home Assistant community is quick to help: join [Discord](https://discord.gg/home-assistant) for real-time chat, post on the [community forum](https://community.home-assistant.io) with your template and expected result, or share on [our subreddit /r/homeassistant](https://reddit.com/r/homeassistant).
+
+{% tip %}
+AI assistants like ChatGPT or Claude can also explain or fix templates when you describe what you want in plain language.
+{% endtip %}
diff --git a/source/_includes/template_functions/try_it.md b/source/_includes/template_functions/try_it.md
new file mode 100644
index 000000000000..d1a086507812
--- /dev/null
+++ b/source/_includes/template_functions/try_it.md
@@ -0,0 +1,3 @@
+## Try it yourself
+
+Ready to test this? Open {% my developer_template title="**Developer tools** > **Template**" %}, paste the example into the **Template editor**, and watch the result update on the right. Edit the values to see how the function adapts to your own {% term entities %}.
diff --git a/source/_includes/template_functions/usage.md b/source/_includes/template_functions/usage.md
new file mode 100644
index 000000000000..cc69b8f33a07
--- /dev/null
+++ b/source/_includes/template_functions/usage.md
@@ -0,0 +1,3 @@
+## Usage
+
+Here's how to use this template function. Copy any example and adjust it to your setup.
diff --git a/source/_integrations/acaia.markdown b/source/_integrations/acaia.markdown
index 6c312e92670c..82d81cdc3624 100644
--- a/source/_integrations/acaia.markdown
+++ b/source/_integrations/acaia.markdown
@@ -76,7 +76,6 @@ Get started with these automation examples.
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
alias: "Start timer on scale"
@@ -101,7 +100,6 @@ actions:
- button.lunar_start_stop_timer
```
-{% endraw %}
{% enddetails %}
## Known limitations
diff --git a/source/_integrations/adguard.markdown b/source/_integrations/adguard.markdown
index bf02a67c9fec..adfad7970485 100644
--- a/source/_integrations/adguard.markdown
+++ b/source/_integrations/adguard.markdown
@@ -195,7 +195,6 @@ automation:
Send a notification if DNS response time exceeds threshold:
-{% raw %}
```yaml
automation:
@@ -211,8 +210,6 @@ automation:
message: "AdGuard DNS response time is {{ states('sensor.adguard_average_processing_speed') }}ms"
```
-{% endraw %}
-
## Data updates
diff --git a/source/_integrations/ai_task.markdown b/source/_integrations/ai_task.markdown
index f8e68f23d483..0ef42f36d8f3 100644
--- a/source/_integrations/ai_task.markdown
+++ b/source/_integrations/ai_task.markdown
@@ -70,7 +70,6 @@ File Naming Convention:
### Template entity counting items on a camera
-{% raw %}
```yaml
template:
@@ -100,13 +99,11 @@ template:
state_class: total
```
-{% endraw %}
Alternative ideas: detect number of parking spots available, count people in a room, or detect if a door is open.
### Structured output example
-{% raw %}
```yaml
# Example: Generate weather and indoor comfort report
@@ -147,11 +144,9 @@ script:
{{ comfort_report.data.indoor_comfort }}
```
-{% endraw %}
### Simple text generation example
-{% raw %}
```yaml
# Example: Generate a notification when garage door is left open
@@ -174,11 +169,9 @@ automation:
message: "{{ generated_text.data }}"
```
-{% endraw %}
### Weather visualization example
-{% raw %}
```yaml
# Example: Up-to date weather image
@@ -211,4 +204,3 @@ template:
url: "http://localhost:8123{{ trigger.event.data.url }}"
```
-{% endraw %}
diff --git a/source/_integrations/airgradient.markdown b/source/_integrations/airgradient.markdown
index 22d1d9a8acac..3a6222dd204b 100644
--- a/source/_integrations/airgradient.markdown
+++ b/source/_integrations/airgradient.markdown
@@ -130,7 +130,6 @@ use them as inspiration to create your own automations.
The following example sends a notification to your mobile device when the CO2 level exceeds 1000 ppm.
-{% raw %}
```yaml
automation:
@@ -149,7 +148,6 @@ automation:
Please consider ventilating the room.
```
-{% endraw %}
## Known limitations
diff --git a/source/_integrations/airobot.markdown b/source/_integrations/airobot.markdown
index 0a01aed924a7..3f6fe1503bf6 100644
--- a/source/_integrations/airobot.markdown
+++ b/source/_integrations/airobot.markdown
@@ -183,7 +183,6 @@ Send a notification when the air quality exceeds a specified threshold.
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
alias: "Airobot Air Quality Alert"
@@ -213,7 +212,6 @@ actions:
```
-{% endraw %}
{% enddetails %}
diff --git a/source/_integrations/aladdin_connect.markdown b/source/_integrations/aladdin_connect.markdown
index 2aadd173e17b..8947427683d1 100644
--- a/source/_integrations/aladdin_connect.markdown
+++ b/source/_integrations/aladdin_connect.markdown
@@ -65,7 +65,6 @@ If someone leaves the garage door open for more than 10 minutes, this automation
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
alias: "Notify when garage left open"
@@ -85,7 +84,6 @@ actions:
message: "The garage door has been open for 10 minutes."
```
-{% endraw %}
{% enddetails %}
### Close the garage door at night
@@ -94,7 +92,6 @@ This automation closes the garage door automatically at 10 PM if it happens to b
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
alias: "Close garage door at night"
@@ -113,7 +110,6 @@ actions:
entity_id: cover.garage_door
```
-{% endraw %}
{% enddetails %}
## Data updates
diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown
index 64cad9af0606..5857533919c7 100644
--- a/source/_integrations/alarm_control_panel.mqtt.markdown
+++ b/source/_integrations/alarm_control_panel.mqtt.markdown
@@ -64,7 +64,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -73,7 +73,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -100,7 +100,7 @@ code_trigger_required:
type: boolean
default: true
command_template:
- description: "The [template](/docs/configuration/templating/#using-command-templates-with-mqtt) used for the command payload. Available variables: `action` and `code`."
+ description: "The [template](/docs/templating/where-to-use/#mqtt) used for the command payload. Available variables: `action` and `code`."
required: false
type: template
default: action
@@ -188,7 +188,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -273,7 +273,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value."
required: false
type: template
{% endconfiguration %}
@@ -286,7 +286,6 @@ In this section you find some real-life examples of how to use this alarm contro
The example below shows a full configuration with an alarm panel that only supports the `arm_home` and `arm_away` features.
-{% raw %}
```yaml
# Example with partial feature support
@@ -300,13 +299,11 @@ mqtt:
command_topic: "alarmdecoder/panel/set"
```
-{% endraw %}
### Configuration with local code validation
The example below shows a full configuration with local code validation.
-{% raw %}
```yaml
# Example using text based code with local validation configuration.yaml
@@ -319,13 +316,11 @@ mqtt:
code: mys3cretc0de
```
-{% endraw %}
### Configurations with remote code validation
The example below shows a full configuration with remote code validation and `command_template`.
-{% raw %}
```yaml
# Example using text code with remote validation configuration.yaml
@@ -353,7 +348,6 @@ mqtt:
{ "action": "{{ action }}", "code": "{{ code }}" }
```
-{% endraw %}
{% caution %}
When your MQTT connection is not secured, this will send your secret code over the network unprotected!
diff --git a/source/_integrations/alarmdecoder.markdown b/source/_integrations/alarmdecoder.markdown
index 8d9cd96f9e24..f7509c1c3bfd 100644
--- a/source/_integrations/alarmdecoder.markdown
+++ b/source/_integrations/alarmdecoder.markdown
@@ -119,7 +119,6 @@ Using a combination of the available {% term actions %} and attributes, you can
### Chime status and control
-{% raw %}
```yaml
- platform: template
@@ -155,7 +154,6 @@ Using a combination of the available {% term actions %} and attributes, you can
{% endif %}
```
-{% endraw %}
## Arming key sequences
diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown
index 6422e658a5eb..088c3b363d6a 100644
--- a/source/_integrations/alert.markdown
+++ b/source/_integrations/alert.markdown
@@ -67,7 +67,7 @@ entity_id:
title:
description: >
A title to be used for the notification if the notifier supports it
- with [template](/docs/configuration/templating/) support.
+ with [template](/docs/templating/) support.
required: false
type: template
state:
@@ -96,13 +96,13 @@ skip_first:
message:
description: >
A message to be sent after an alert transitions from `idle` to `on`
- with [template](/docs/configuration/templating/) support.
+ with [template](/docs/templating/) support.
required: false
type: template
done_message:
description: >
A message sent after an alert transitions from `on` or `off` to `idle` with
- [template](/docs/configuration/templating/) support. Is only sent if an alert notification
+ [template](/docs/templating/) support. Is only sent if an alert notification
was sent for transitioning from `idle` to `on`.
required: false
type: template
@@ -163,7 +163,6 @@ disable the alert on certain days. Maybe the alert firing should depend on more
than one input. For all of these situations, it is best to use the alert in
conjunction with a `Template Binary Sensor`. The following example does that.
-{% raw %}
```yaml
template:
@@ -182,7 +181,6 @@ alert:
- kristens_phone
```
-{% endraw %}
This example will begin firing as soon as the entity `sensor.motion`'s `battery`
attribute falls below 15. It will continue to fire until the battery attribute
@@ -227,7 +225,6 @@ can be used in the message or name of the alert to make it more relevant.
The following will show for a plant how to include the problem `attribute`
of the entity.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -246,7 +243,6 @@ alert:
- kristens_phone
```
-{% endraw %}
The resulting message could be `Plant Officeplant needs help (moisture low)`.
@@ -315,4 +311,4 @@ alert:
tag: garage-door
```
-[template]: /docs/configuration/templating/
+[template]: /docs/templating/
diff --git a/source/_integrations/alexa.flash_briefings.markdown b/source/_integrations/alexa.flash_briefings.markdown
index dae4a252575d..2abb2e8e53ea 100644
--- a/source/_integrations/alexa.flash_briefings.markdown
+++ b/source/_integrations/alexa.flash_briefings.markdown
@@ -29,7 +29,6 @@ You can use [templates] for the `title`, `audio`, `text` and `display_url` confi
Here's an example configuration of a Flash briefing skill that will tell you who is at home:
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -48,7 +47,6 @@ alexa:
{% endif %}
```
-{% endraw %}
You can add multiple items for a feed if you want. The Amazon required UID and timestamp will be randomly generated at startup and change at every restart of Home Assistant.
@@ -84,7 +82,7 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf
[flash-briefing-api-docs]: https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/flash-briefing-skill-api-feed-reference
[large-icon]: /images/integrations/alexa/alexa-512x512.png
[small-icon]: /images/integrations/alexa/alexa-108x108.png
-[templates]: /docs/configuration/templating/
+[templates]: /docs/templating/
[zero-three-one]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/
[alexa-settings-site]: https://alexa.amazon.com/
[emulated-hue-integration]: /integrations/emulated_hue/
diff --git a/source/_integrations/alexa.intent.markdown b/source/_integrations/alexa.intent.markdown
index 49ad4fe2817f..3b30eb73fe9f 100644
--- a/source/_integrations/alexa.intent.markdown
+++ b/source/_integrations/alexa.intent.markdown
@@ -214,7 +214,6 @@ ActivateSceneIntent activate {Scene}
Then add the intent to your `intent_script` section in your HA configuration file:
-{% raw %}
```yaml
intent_script:
@@ -230,7 +229,6 @@ intent_script:
text: OK
```
-{% endraw %}
Here we are using [templates] to take the name we gave to Alexa e.g., `downstairs on` and replace the space with an underscore so it becomes `downstairs_on` as Home Assistant expects.
@@ -268,7 +266,6 @@ RunScriptIntent run {Script}
Then add the intent to your intent_script section in your HA configuration file:
-{% raw %}
```yaml
intent_script:
@@ -282,7 +279,6 @@ intent_script:
text: OK
```
-{% endraw %}
Now say `Alexa ask Home Assistant to run ` and Alexa will run that script for you.
@@ -360,7 +356,6 @@ In the examples above, we told Alexa to say `OK` when she successfully completed
First create a file called `alexa_confirm.yaml` with something like the following in it (go on, be creative!):
-{% raw %}
```text
>
@@ -383,7 +378,6 @@ First create a file called `alexa_confirm.yaml` with something like the followin
] | random }}
```
-{% endraw %}
Then, wherever you would put some simple text for a response like `OK`, replace it with a reference to the file so that:
@@ -412,5 +406,5 @@ You can do this by using Alexa routines.
[amazon-dev-console]: https://developer.amazon.com
[large-icon]: /images/integrations/alexa/alexa-512x512.png
[small-icon]: /images/integrations/alexa/alexa-108x108.png
-[templates]: /docs/configuration/templating/
+[templates]: /docs/templating/
[generate-long-lived-access-token]: https://developers.home-assistant.io/docs/auth_api/#long-lived-access-token
diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown
index 00da1aaffc3f..a768535fdea6 100644
--- a/source/_integrations/androidtv.markdown
+++ b/source/_integrations/androidtv.markdown
@@ -136,7 +136,7 @@ stop_netflix:
### `androidtv.adb_command`
-The `androidtv.adb_command` action allows you to send either keys or ADB shell commands to your Android / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute (i.e., `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level.
+The `androidtv.adb_command` action allows you to send either keys or ADB shell commands to your Android / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute, which you can read with the [`state_attr`](/template-functions/state_attr/) function (for example, `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level.
| Data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
diff --git a/source/_integrations/anthropic.markdown b/source/_integrations/anthropic.markdown
index d51a9471c9f3..cf7af4fcc30c 100644
--- a/source/_integrations/anthropic.markdown
+++ b/source/_integrations/anthropic.markdown
@@ -62,7 +62,7 @@ The integration provides the following types of subentries:
{% configuration_basic %}
Instructions:
- description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/templating/).
Control Home Assistant:
description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings:
@@ -168,7 +168,6 @@ You can set the Claude AI Task entity as the default AI Task entity. To do this,
You can use `conversation.process` and `ai_task.generate_data` actions in your scripts and automations.
Here is a simple automation that implements a Claude Telegram chatbot using [Telegram bot integration](/integrations/telegram_bot):
-{% raw %}
```yaml
triggers:
@@ -191,7 +190,6 @@ actions:
config_entry_id: "{{ trigger.to_state.attributes.bot.config_entry_id }}"
```
-{% endraw %}
## Troubleshooting
diff --git a/source/_integrations/apcupsd.markdown b/source/_integrations/apcupsd.markdown
index e22a101831b4..5087f75b6fa8 100644
--- a/source/_integrations/apcupsd.markdown
+++ b/source/_integrations/apcupsd.markdown
@@ -367,7 +367,6 @@ Some sensors are disabled by default, since they provide information that is onl
### Send me a push notification when UPS load is high
-{% raw %}
```yaml
alias: "APC UPS Load High Notification"
@@ -385,7 +384,6 @@ actions:
message: "APC UPS load is high: {{ states('sensor.apc_ups_load') }}%"
```
-{% endraw %}
## Data updates
diff --git a/source/_integrations/arest.markdown b/source/_integrations/arest.markdown
index e3c69d04678d..82330ca44b11 100644
--- a/source/_integrations/arest.markdown
+++ b/source/_integrations/arest.markdown
@@ -126,7 +126,7 @@ pins:
required: false
type: string
value_template:
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload.
required: false
type: template
monitored_variables:
@@ -148,7 +148,7 @@ monitored_variables:
required: false
type: string
value_template:
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload.
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/assist_satellite.markdown b/source/_integrations/assist_satellite.markdown
index 8f2b94a59ee9..de3152ffb1e0 100644
--- a/source/_integrations/assist_satellite.markdown
+++ b/source/_integrations/assist_satellite.markdown
@@ -139,7 +139,6 @@ The matched answer will be stored in a `response_variable` with the structure:
Examples in YAML:
-{% raw %}
```yaml
actions:
@@ -181,9 +180,6 @@ actions:
entity_id: assist_satellite.my_entity
```
-{%endraw %}
-
-
Instead of text, the question can also be a media ID:
```yaml
@@ -223,7 +219,6 @@ If `answers` is omitted, the response text from the user will be available in th
Examples in YAML:
-{% raw %}
```yaml
actions:
@@ -239,4 +234,3 @@ actions:
entity_id: assist_satellite.my_entity
```
-{% endraw %}
diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown
index d790dd22cbd9..159be53147e9 100644
--- a/source/_integrations/august.markdown
+++ b/source/_integrations/august.markdown
@@ -141,7 +141,6 @@ For locks that support the Yale Access system, the August integration can keep y
Using the lock operation sensors, you can detect when a user operates a lock and is physically present (not remote). The below automation example (added to `automations.yaml`) will trigger when the user named “John Doe” in August locks or unlocks the door from the keypad (if present), via Bluetooth from their phone, or by auto-unlock. The state of the sensor will be the name of the party operating the lock as returned by August.
-{% raw %}
```yaml
- id: "1583706446906"
@@ -160,4 +159,3 @@ Using the lock operation sensors, you can detect when a user operates a lock and
```
-{% endraw %}
diff --git a/source/_integrations/backup.markdown b/source/_integrations/backup.markdown
index f6f64c3ad5bf..a6b6f5357182 100644
--- a/source/_integrations/backup.markdown
+++ b/source/_integrations/backup.markdown
@@ -1,6 +1,6 @@
---
title: Backup
-description: Allow creating backups of container and core installations.
+description: Create and restore backups of your Home Assistant installation.
ha_category:
- Event
- Other
@@ -24,19 +24,18 @@ related:
- docs: /getting-started/onboarding/
title: Recover from backup during onboarding
- docs: /more-info/backup-emergency-kit/
- title: backup emergency kit
+ title: Backup emergency kit
---
-The **Backup** {% term integration %} is used by all [installation types](/installation/#about-installation-methods) to create and restore backups.
+The **Backup** {% term integration %} creates and restores backups across all [installation types](/installation/#about-installation-methods).
To learn how to create and restore a backup, refer to the backup section under [common tasks](/common-tasks/general/#backups).
## Actions
-The **Backup** integration exposes actions that can be used to automate the backup
-process.
+The **Backup** integration exposes actions you can use to automate the backup process.
-However, it is no longer needed to create your own automation. Follow these steps to [set up an automatic backup from the UI](/common-tasks/general/#setting-up-an-automatic-backup-process).
+However, you no longer need to create your own automation. You can [set up an automatic backup from the UI](/common-tasks/general/#setting-up-an-automatic-backup-process) instead.
### Action: Create automatic
@@ -44,8 +43,7 @@ The `backup.create_automatic` action allows you to create a backup of your Home
The automation editor does not show a UI editor because the action uses the same settings you defined under {% my backup title="**Settings** > **System** > **Backups**" %}, under **Backup settings**. For a more detailed description, refer to the documentation on [automatic backups](/common-tasks/general/#setting-up-an-automatic-backup-process).
-This action can be called to create backups with pre-defined settings at a more flexible
-schedule than the schedule which can be configured for automatic backups.
+Use this action to create backups with predefined settings on a more flexible schedule than the built-in automatic backup schedule.
The action has no additional options or parameters.
@@ -61,9 +59,9 @@ The `backup.create` action allows you to create a backup of your Home Assistant
- This action is only available in [core and container installations](/installation/#about-installation-methods).
- The action has no additional options or parameters.
-- The backup will only be saved on the local storage.
+- The backup is only saved to local storage.
- The backup created with `backup.create` always includes the database.
-- The backup will be created without a password.
+- The backup is created without a password.
Example action:
@@ -73,10 +71,7 @@ action: backup.create
### Example: Backing up every night at 3:00 AM
-This is a YAML example for an automation that initiate a backup every night
-at 3 AM:
-
-{% raw %}
+Here's a YAML example of an automation that creates a backup every night at 3 AM:
```yaml
automation:
@@ -89,30 +84,26 @@ automation:
action: backup.create
```
-{% endraw %}
-
## Restoring a backup
To restore a backup, follow the steps described in [Restoring a backup](/common-tasks/general/#restoring-a-backup).
## Event entity
-The **Backup** {% term integration %} provides an {% term "Event entity" %} which represents the state of the last automatic backup (_completed, in progress, failed_). It also provides several event attributes which can be used in automations.
+The **Backup** {% term integration %} provides an {% term "Event entity" %} that represents the state of the last automatic backup (_completed_, _in progress_, or _failed_). It also provides several event attributes you can use in automations.
| Attribute | Description |
| --- | --- |
-| `event_type` | The translated state of the last automatic backup task (_possible states: completed, in progress, failed_)
-| `backup_stage` | The current automatic backup stage (_is `None` when `event_type` is not in progress_) |
-| `failed_reason` | The reason for a failed automatic backup (_is `None` when `event_type` is completed or in progress_) |
+| `event_type` | The translated state of the last automatic backup task (_possible states: completed, in progress, failed_). |
+| `backup_stage` | The current automatic backup stage (_is `None` when `event_type` is not in progress_). |
+| `failed_reason` | The reason for a failed automatic backup (_is `None` when `event_type` is completed or in progress_). |
### Usage examples
-Send notification to mobile app, when an automatic backup failed.
-
-{% raw %}
+Send a notification to the mobile app when an automatic backup fails:
```yaml
-alias: Backup failed
+alias: "Backup failed"
triggers:
- trigger: state
entity_id:
@@ -123,20 +114,20 @@ conditions:
attribute: event_type
state: failed
actions:
- - data:
- title: Automatic backup failed
- message: The last automatic backup failed due to {{ state_attr('event.backup_automatic_backup', 'failed_reason') }}
- action: notify.mobile-app
-mode: single
+ - action: notify.mobile_app_your_phone
+ data:
+ title: "Automatic backup failed"
+ message: >-
+ The last automatic backup failed due to
+ {{ state_attr('event.backup_automatic_backup', 'failed_reason') }}
```
-{% endraw %}
## Sensors
The **Backup** {% term integration %} provides several sensors.
-### Backup Manager State
+### Backup manager state
The current state of the backup system. Possible states are:
diff --git a/source/_integrations/balboa.markdown b/source/_integrations/balboa.markdown
index b908d0b34365..d2ee94d01654 100644
--- a/source/_integrations/balboa.markdown
+++ b/source/_integrations/balboa.markdown
@@ -50,7 +50,7 @@ Balboa Spa Client integration is not compatible with ControlMySpa™ cloud API u
{% configuration_basic %}
host:
- description: "Hostname or IP address of your Balboa Spa Wifi Device, e.g., `192.168.1.58`."
+ description: "Hostname or IP address of your Balboa Spa Wifi Device, for example `192.168.1.58`."
{% endconfiguration_basic %}
{% include integrations/option_flow.md %}
diff --git a/source/_integrations/bang_olufsen.markdown b/source/_integrations/bang_olufsen.markdown
index f98cf2ea17fb..dc2dfc411bec 100644
--- a/source/_integrations/bang_olufsen.markdown
+++ b/source/_integrations/bang_olufsen.markdown
@@ -54,7 +54,7 @@ Device model:
## Data updates
-The **Bang & Olufsen** integration uses the [Mozart API](https://bang-olufsen.github.io/mozart-open-api), which is a local REST API with a WebSocket notification channel for immediate state information for media metadata, playback progress, volume etc. The only exception to this is the repeat and shuffle controls which are polled every 30 seconds.
+The **Bang & Olufsen** integration uses the [Mozart API](https://bang-olufsen.github.io/mozart-open-api), which is a local REST API with a WebSocket notification channel for immediate state information such as media metadata, playback progress, and volume. The only exception is that the repeat and shuffle controls are polled every 30 seconds.
## Supported features
@@ -64,7 +64,7 @@ Currently, for each added physical device, a single device is created that inclu
A number of features are available through the media player entity:
-- See current metadata, progress, volume, etc.
+- See current metadata, progress, volume, and more.
- Control next/previous, play/pause, shuffle/repeat settings, volume, sound mode, audio and video sources, and more.
- Play various media through [play_media actions](#play_media-actions).
- Control multiroom audio through [Beolink](https://support.bang-olufsen.com/hc/en-us/articles/4411572883089-What-is-Beolink-Multiroom):
diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown
index 36085da711a8..6f0b8070cb07 100644
--- a/source/_integrations/bayesian.markdown
+++ b/source/_integrations/bayesian.markdown
@@ -117,9 +117,9 @@ observations:
A fundamental concept in Bayes' Rule is the distinction between the probability of an *event given an observation* and the probability of an *observation given an event*. These two probabilities are not interchangeable and must be considered separately. While they may be similar in some cases — for example, when motion sensors are accurate, the probability that someone is in the room *given* that motion is detected is often close to the probability that motion is detected *given* someone is in the room.
-Now consider the above, but in a home that has cats. The probability that the room is human-occupied *given* that motion detected may be quite low (e.g. 20%, p=0.2) if the room is popular with the cats. However, the probability that motion is detected *given* that it is occupied by a human is high (e.g 95%, p = 0.95) if our motion sensor is accurate. Said succinctly, not all motion is human, but all humans move.
+Now consider the above, but in a home that has cats. The probability that the room is human-occupied *given* that motion detected may be quite low (for example, 20%, p=0.2) if the room is popular with the cats. However, the probability that motion is detected *given* that it is occupied by a human is high (for example, 95%, p = 0.95) if our motion sensor is accurate. Said succinctly, not all motion is human, but all humans move.
-When configuring these conditional probabilities, define the probability of the sensor observation (e.g motion detected) *given* the thing you are trying to estimate (e.g human-occupancy of the room).
+When configuring these conditional probabilities, define the probability of the sensor observation (for example, motion detected) *given* the thing you are trying to estimate (for example, human-occupancy of the room).
## Estimating probabilities
@@ -200,7 +200,6 @@ binary_sensor:
Here's an example for `template` observations, as seen in the configuration it requires `value_template`. This template will evaluate to true if the device tracker `device_tracker.paulus` has not been seen in the last 5 minutes.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -218,7 +217,6 @@ binary_sensor:
prob_given_false: 0.99
```
-{% endraw %}
### Multiple state and numeric entries per entity
diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown
index 99a44a42a390..226b0823cba4 100644
--- a/source/_integrations/binary_sensor.mqtt.markdown
+++ b/source/_integrations/binary_sensor.mqtt.markdown
@@ -14,11 +14,11 @@ The state will be updated only after a new message is published on `state_topic`
the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup.
Otherwise, the initial state displayed in Home Assistant will be `unknown`.
-Stateless devices such as buttons, remote controls etc are better represented by [MQTT device triggers](/integrations/device_trigger.mqtt/) than by binary sensors.
+Stateless devices, like buttons, remote controls, and similar stateless devices, are better represented by [MQTT device triggers](/integrations/device_trigger.mqtt/) than by binary sensors.
## Configuration
-The `mqtt` binary sensor platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (i.e., publishes `payload_not_available` to an `availability` topic), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability` topic is defined, Home Assistant will consider the MQTT device to be `available` and will display its state.
+The `mqtt` binary sensor platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (that is, publishes `payload_not_available` to an `availability` topic), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability` topic is defined, Home Assistant will consider the MQTT device to be `available` and will display its state.
To use an MQTT binary sensor in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
@@ -53,7 +53,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -62,7 +62,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -166,7 +166,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -220,7 +220,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that returns a string to be compared to `payload_on`/`payload_off` or an empty string, in which case the MQTT message will be removed. Remove this option when `payload_on` and `payload_off` are sufficient to match your payloads (i.e no preprocessing of original message is required)."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that returns a string to be compared to `payload_on`/`payload_off` or an empty string, in which case the MQTT message will be removed. Remove this option when `payload_on` and `payload_off` are sufficient to match your payloads (that is, no preprocessing of the original message is required)."
required: false
type: template
{% endconfiguration %}
@@ -244,7 +244,6 @@ mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m '{"state":"OFF"}'
The example below shows a full configuration for a binary sensor:
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -262,11 +261,9 @@ mqtt:
value_template: "{{ value_json.state }}"
```
-{% endraw %}
### Toggle the binary sensor each time a message is received on state_topic
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -276,7 +273,6 @@ mqtt:
value_template: "{%if is_state(entity_id,\"on\")-%}OFF{%-else-%}ON{%-endif%}"
```
-{% endraw %}
### Get the state of a device with ESPEasy
diff --git a/source/_integrations/binary_sensor.rest.markdown b/source/_integrations/binary_sensor.rest.markdown
index 2b092cd3638e..f7ad613bf1a5 100644
--- a/source/_integrations/binary_sensor.rest.markdown
+++ b/source/_integrations/binary_sensor.rest.markdown
@@ -19,7 +19,7 @@ _Tip:_ If you want to create multiple `sensors` using the same endpoint, use the
If the endpoint returns one of the values of these pairs: `0`/`1`,
`"0"`/`"1"`, `FALSE`/`TRUE`, `false`/`true`, `off`/`on` or `closed`/`open`
it can be used as-is. If the return value differs, use a
-[template](/docs/configuration/templating/#processing-incoming-data).
+[template](/docs/templating/where-to-use/#processing-incoming-data).
If the endpoint returns XML with the `text/xml`, `application/xml`, or
`application/xhtml+xml` content type, it will automatically be converted
to JSON according to this [specification](https://www.xml.com/pub/a/2006/05/31/converting-between-xml-and-json.html).
@@ -58,7 +58,6 @@ binary_sensor:
or a template based request:
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -67,7 +66,6 @@ binary_sensor:
resource_template: "http://IP_ADDRESS/{{ now().strftime('%Y-%m-%d') }}"
```
-{% endraw %}
{% configuration %}
resource:
@@ -107,7 +105,7 @@ device_class:
type: string
value_template:
description: >
- Defines a [template](/docs/configuration/templating/#processing-incoming-data)
+ Defines a [template](/docs/templating/where-to-use/#processing-incoming-data)
to extract the value.
required: false
type: template
@@ -163,7 +161,6 @@ Instead of using an [aREST](/integrations/arest#binary-sensor) binary sensor,
you could retrieve the value of a device supporting
aREST directly with a REST binary sensor.
-{% raw %}
```yaml
binary_sensor:
@@ -175,13 +172,11 @@ binary_sensor:
value_template: '{{ value_json.return_value }}'
```
-{% endraw %}
### Accessing an HTTP authentication protected endpoint
The REST sensor supports HTTP authentication and template-enabled customized headers.
-{% raw %}
```yaml
binary_sensor:
@@ -196,8 +191,6 @@ binary_sensor:
X-Custom-Header: '{{ states("input_text.the_custom_header") }}'
```
-{% endraw %}
-
The headers will contain all relevant details. This will also give
you the ability to access endpoints that are protected by tokens.
diff --git a/source/_integrations/bitcoin.markdown b/source/_integrations/bitcoin.markdown
index d06885548501..7da52cb76867 100644
--- a/source/_integrations/bitcoin.markdown
+++ b/source/_integrations/bitcoin.markdown
@@ -31,7 +31,7 @@ sensor:
{% configuration %}
currency:
- description: The currency to exchange to, e.g., CHF, USD, EUR, etc.
+ description: The currency to exchange to, such as CHF, USD, or EUR.
required: false
type: string
default: USD
diff --git a/source/_integrations/bizkaibus.markdown b/source/_integrations/bizkaibus.markdown
index e8d7656951e7..a8a18c1c773e 100644
--- a/source/_integrations/bizkaibus.markdown
+++ b/source/_integrations/bizkaibus.markdown
@@ -41,7 +41,7 @@ stopid:
required: true
type: string
route:
- description: The ID of the bus route to get information for. This is the same as the bus number, e.g., `A3641`.
+ description: The ID of the bus route to get information for. This is the same as the bus number, for example, `A3641`.
required: true
type: string
name:
diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown
index 6e7ed8c1b078..08e1054684cb 100644
--- a/source/_integrations/blink.markdown
+++ b/source/_integrations/blink.markdown
@@ -165,9 +165,8 @@ Similar to the previous example, this automation will disarm blink when arriving
When motion is detected, you can use the Blink Home Assistant integration to save the last recorded video locally, rather than relying on Blink's servers to save your data.
-The following example assumes your camera's name (in the Blink app) is `My Camera` and your sync module name is `My Sync Module`. The file will be saved to `/tmp/videos/blink_video_{YYYMMDD_HHmmSS}.mp4` where `{YYYYMMDD_HHmmSS}` will be a timestamp create via the use of [templating](/docs/configuration/templating/).
+The following example assumes your camera's name (in the Blink app) is `My Camera` and your sync module name is `My Sync Module`. The file will be saved to `/tmp/videos/blink_video_{YYYMMDD_HHmmSS}.mp4` where `{YYYYMMDD_HHmmSS}` will be a timestamp create via the use of [templating](/docs/templating/).
-{% raw %}
```yaml
- alias: "Save Blink Video on Motion"
@@ -183,7 +182,6 @@ The following example assumes your camera's name (in the Blink app) is `My Camer
filename: "/tmp/videos/blink_video_{{ now().strftime('%Y%m%d_%H%M%S') }}.mp4"
```
-{% endraw %}
### Save all recent clips locally on a schedule
diff --git a/source/_integrations/bluetooth_le_tracker.markdown b/source/_integrations/bluetooth_le_tracker.markdown
index fef2c5a63454..fe3400fbdacb 100644
--- a/source/_integrations/bluetooth_le_tracker.markdown
+++ b/source/_integrations/bluetooth_le_tracker.markdown
@@ -58,7 +58,7 @@ interval_seconds:
{% endconfiguration %}
As some BT LE devices change their MAC address regularly, a new device is only discovered when it has been seen 5 times.
-Some BTLE devices (e.g., fitness trackers) are only visible to the devices that they are paired with. In this case, the BTLE tracker won't see this device.
+Some BTLE devices, such as fitness trackers, are only visible to the devices that they are paired with. In this case, the BTLE tracker won't see this device.
Enabling the battery tracking might slightly decrease the duration of the battery, but since this is only done at most once a day, this shouldn't be noticeable. Not all devices offer battery status information; if the information is not available, the integration will only try once at startup.
diff --git a/source/_integrations/bosch_alarm.markdown b/source/_integrations/bosch_alarm.markdown
index eb62d33aa451..f2bb12cc9b55 100644
--- a/source/_integrations/bosch_alarm.markdown
+++ b/source/_integrations/bosch_alarm.markdown
@@ -68,7 +68,7 @@ The following {% term entities %} are provided:
### Alarm Control Panel
This integration adds an Alarm Control Panel device for each configured area, with the ability to issue arm/disarm commands.
-This entity reports state (_disarmed_, _armed_away_, etc.).
+This entity reports state, such as _disarmed_ or _armed_away_.
### Binary Sensor
@@ -123,7 +123,6 @@ The `bosch_alarm.set_date_time` action is used to update the date and time on th
- **Description**: The date and time to set. Defaults to the current date and time if it is not set.
- **Optional**: Yes
-{% raw %}
```yaml
# Example: Update the panel’s date and time
@@ -133,7 +132,6 @@ data:
datetime: "2025-05-01T12:00:00"
```
-{% endraw %}
## Authentication
@@ -163,7 +161,6 @@ At startup, the integration checks whether your panel supports push data updates
### Turning on lights when walking into a room
-{% raw %}
```yaml
automation:
@@ -181,7 +178,6 @@ automation:
```
-{% endraw %}
## Reconfiguration
diff --git a/source/_integrations/braviatv.markdown b/source/_integrations/braviatv.markdown
index bc99f987955d..e163c2a63c31 100644
--- a/source/_integrations/braviatv.markdown
+++ b/source/_integrations/braviatv.markdown
@@ -42,13 +42,12 @@ Using the media browser, you can view a list of all installed applications and T
## Using with Google Cast
-The Bravia TV {% term integration %} provides information about the power status of the device, current source, and volume. It gives you the ability to control playback, run applications, and send remote control commands. Unfortunately, due to limitations of the Bravia REST API, it does not provide information about the currently playing content in applications (app name, media title, duration, play/pause state, etc.). In turn, the [Google Cast](/integrations/cast/) integration does not provide reliable information about the power status of the device (for example on Home Screen) and does not allow you to control playback in Android apps without [MediaSession](https://developer.android.com/reference/android/media/session/MediaSession) support. However, it can display full information about the content being played in supported apps. If your TV runs on Android or Google TV, you can use the Google Cast integration together with the Bravia TV integration. For convenience, you can combine two media players into one using [Universal Media Player](/integrations/universal/). Universal Media Player will automatically select the appropriate active media player entity.
+The Bravia TV {% term integration %} provides information about the power status of the device, current source, and volume. It gives you the ability to control playback, run applications, and send remote control commands. Unfortunately, due to limitations of the Bravia REST API, it does not provide information about the currently playing content in applications (app name, media title, duration, play/pause state, and more). In turn, the [Google Cast](/integrations/cast/) integration does not provide reliable information about the power status of the device (for example, on Home Screen) and does not allow you to control playback in Android apps without [MediaSession](https://developer.android.com/reference/android/media/session/MediaSession) support. However, it can display full information about the content being played in supported apps. If your TV runs on Android or Google TV, you can use the Google Cast integration together with the Bravia TV integration. For convenience, you can combine two media players into one using [Universal Media Player](/integrations/universal/). Universal Media Player will automatically select the appropriate active media player entity.
{% details "Example YAML configuration" %}
Replace `media_player.sony_tv_native` with your Bravia TV integration media player {% term entity %} ID. Replace `media_player.sony_tv_cast` with your Google Cast integration media player {% term entity %} ID.
-{% raw %}
```yaml
media_player:
@@ -103,7 +102,6 @@ media_player:
entity_id: media_player.sony_tv_native
```
-{% endraw %}
{% enddetails %}
@@ -111,10 +109,10 @@ media_player:
The `play_media` {% term action %} can be used in an {% term automation %} or {% term script %} to switch to a specified application or TV channel. It selects the best matching application or channel according to the `media_content_id`:
- 1. Channel number *(i.e., '1' or '6')*
- 2. Exact app or channel name *(i.e., 'Google Play' or 'CNN')*
- 3. Substring in app or channel name *(i.e., 'BFM' in 'BFM TV')*
- 4. URI-string of app or channel *(i.e., 'tv:dvbt?trip=9999.441.41104&srvName=BBC HD')*
+ 1. Channel number *(for example, '1' or '6')*
+ 2. Exact app or channel name *(for example, 'Google Play' or 'CNN')*
+ 3. Substring in app or channel name *(for example, 'BFM' in 'BFM TV')*
+ 4. URI-string of app or channel *(for example, 'tv:dvbt?trip=9999.441.41104&srvName=BBC HD')*
**Example to open YouTube app:**
@@ -153,7 +151,7 @@ data:
The {% term integration %} supports `remote` {% term platform %}. It allows you to send remote control commands to your TV with the `remote.send_command` action.
-The commands that can be sent to the TV depend on the model of your TV. To display a list of supported commands for your TV, call the {% term action %} `remote.send_command` with non-valid command (e.g. `Test`). A list of available commands will be displayed in [Home Assistant System Logs](https://my.home-assistant.io/redirect/logs). The list of commands can also be displayed by downloading the {% term diagnostics %} from the device info in the [Integration Settings](https://my.home-assistant.io/redirect/integration/?domain=braviatv).
+The commands that can be sent to the TV depend on the model of your TV. To display a list of supported commands for your TV, call the {% term action %} `remote.send_command` with an invalid command, for example, `Test`. A list of available commands will be displayed in [Home Assistant System Logs](https://my.home-assistant.io/redirect/logs). The list of commands can also be displayed by downloading the {% term diagnostics %} from the device info in the [Integration Settings](https://my.home-assistant.io/redirect/integration/?domain=braviatv).
**Example to send `Down` key command:**
diff --git a/source/_integrations/bring.markdown b/source/_integrations/bring.markdown
index 88a471dc4c64..9eaa16eb63d6 100644
--- a/source/_integrations/bring.markdown
+++ b/source/_integrations/bring.markdown
@@ -192,7 +192,6 @@ Get notified when it's time to go grocery shopping. A notification is sent when
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
triggers:
@@ -233,7 +232,6 @@ alias: "Bring!: Grocery shopping reminder 🛒"
description: "Get notified when it's time to go grocery shopping. A notification is sent when your shopping list reaches a set threshold or when urgent items are added."
```
-{% endraw %}
{% enddetails %}
diff --git a/source/_integrations/broadlink.markdown b/source/_integrations/broadlink.markdown
index f9333c3bbf66..a81ca70d09f3 100644
--- a/source/_integrations/broadlink.markdown
+++ b/source/_integrations/broadlink.markdown
@@ -426,7 +426,7 @@ switch:
The above example creates `switch.philips_tv` and `switch.lg_tv`, which are related to the same universal remote.
-__IMPORTANT__: Always use unique names for your switches. A good choice is to prefix the name with the area in which the device is located, e.g. Bedroom TV.
+__IMPORTANT__: Always use unique names for your switches. A good choice is to prefix the name with the area in which the device is located, for example, Bedroom TV.
## Managing codes for remotes
### Using e-Control remotes
@@ -492,7 +492,7 @@ First get or learn all the remotes you want to add to Home Assistant in e-Contro
4. Open iBackup viewer then select the iOS backup that you created. Navigate to the App icon and then scroll until you find e-control.app, select this. Select and extract the files jsonButton, jsonIrCode and jsonSublr; they will be located in the Documents/SharedData section. Put these in the same location as the getBroadlinkSharedData.py.
-5. Now open a Command Prompt and navigate to the directory where the aforementioned files are located e.g., `C:\Python27`. Now run the command `python getBroadlinkSharedData.py`, you should see something like this:
+5. Now open a Command Prompt and navigate to the directory where the aforementioned files are located, for example `C:\Python27`. Now run the command `python getBroadlinkSharedData.py`, you should see something like this:
```bash
C:\Python27>python getBroadlinkSharedData.py
@@ -552,7 +552,6 @@ First get or learn all the remotes you want to add to Home Assistant in e-Contro
7. Drag a Template node on the Flow to the right of the RM node and link it to the RM node.
8. Double click the Template node to edit it, select:
- {% raw %}
```bash
Property: msg.payload
@@ -561,7 +560,6 @@ First get or learn all the remotes you want to add to Home Assistant in e-Contro
Output as: Plain text
```
- {% endraw %}
9. Drag a Debug node to the right of the Template node and link them.
10. Show the debug messages, deploy the flow and click on the inject button.
diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown
index f2d74f5f6c72..d61003d92d49 100644
--- a/source/_integrations/brother.markdown
+++ b/source/_integrations/brother.markdown
@@ -146,7 +146,6 @@ By default, the integration {% term polling polls %} data from the device every
You can configure Home Assistant to alert you when the printer jams or runs out of paper as follows. First, add the following to {% term "`configuration.yaml`" %} under the `template:` section.
Replace `sensor.hl_l2340d_status` with the actual name of your sensor.
-{% raw %}
```yaml
template:
@@ -161,7 +160,6 @@ template:
{{ is_state('sensor.hl_l2340d_status', 'paper jam') }}
```
-{% endraw %}
Then, add this under the `alert:` section:
diff --git a/source/_integrations/brottsplatskartan.markdown b/source/_integrations/brottsplatskartan.markdown
index be6ecc46d8fc..6067b610ac4e 100644
--- a/source/_integrations/brottsplatskartan.markdown
+++ b/source/_integrations/brottsplatskartan.markdown
@@ -23,7 +23,7 @@ The **Brottsplatskartan** {% term integration %} allows one to track reported in
### Area
-Brottsplatskartan captures all incidents in a region, e.g Stockholms län. If area parameter is defined, any latitude and longitude parameters are ignored.
+Brottsplatskartan captures all incidents in a region, for example, Stockholms län. If the area parameter is defined, any latitude and longitude parameters are ignored.
### Latitude and Longitude
diff --git a/source/_integrations/bsblan.markdown b/source/_integrations/bsblan.markdown
index e0e9f87ff003..6439406c1223 100644
--- a/source/_integrations/bsblan.markdown
+++ b/source/_integrations/bsblan.markdown
@@ -181,7 +181,6 @@ data:
This example automatically adjusts the hot water schedule based on the season.
-{% raw %}
```yaml
automation:
@@ -270,7 +269,6 @@ automation:
end_time: "21:00:00"
```
-{% endraw %}
For more documentation of the BSBLan device, check the [manual](https://docs.bsb-lan.de).
diff --git a/source/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown
index a20e6abfceff..b0191817d5b2 100644
--- a/source/_integrations/buienradar.markdown
+++ b/source/_integrations/buienradar.markdown
@@ -47,7 +47,7 @@ The following {% term entities %} will be created:
- **Station name**: The name of the selected meteo-station
- **Barometer forecast**: A numeric barometric forecast (1 to 7)
-- **Barometer forecast name**: A textual representation of the barometer forecast (eg: Thunderstorms, Stable, etc.)
+- **Barometer forecast name**: A textual representation of the barometer forecast, such as Thunderstorms or Stable
- **Condition code**: A symbol and a unique code identifying the current weather condition
- `a`: sunny/clear
- `b`: Mix of clear and medium or low clouds
@@ -77,7 +77,7 @@ The following {% term entities %} will be created:
- **Ground temperature**: The current ground temperature (in [°C](https://en.wikipedia.org/wiki/Celsius))
- **Wind speed**: The wind speed (in [km/h](https://en.wikipedia.org/wiki/Kilometres_per_hour))
- **Wind force**: The wind speed/force (in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale))
-- **Wind direction**: Where the wind is coming from: N (North), Z (south), NO (North-East), etc.
+- **Wind direction**: Where the wind is coming from, such as N (North), Z (South), or NO (North-East)
- **Wind azimuth**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise
- **Pressure**: The sea-level air pressure (in [hPa](https://en.wikipedia.org/wiki/Hectopascal))
- **Visibility**: Visibility (in [m](https://en.wikipedia.org/wiki/Metre))
@@ -96,7 +96,7 @@ The following {% term entities %} will be created:
- **Minimum rain n days ahead**: The minimum forecasted amount of rain (in [mm](https://en.wikipedia.org/wiki/Millimeter)) n days ahead
- **Maximum rain n days ahead**: The maximum forecasted amount of rain (in [mm](https://en.wikipedia.org/wiki/Millimeter)) n days ahead
- **Wind azimuth n days ahead**: Where the wind is coming from in degrees, with true north at 0° and progressing clockwise for n days ahead (derived from `Wind direction n days ahead`)
-- **Wind direction n days ahead**: Where the wind will be coming from n days ahead: N (North), Z (south), NO (North-East), etc.
+- **Wind direction n days ahead**: Where the wind will be coming from n days ahead. For example, N (North), Z (South), or NO (North-East).
- **Wind force n days ahead**: The expected wind force (in [Bft](https://en.wikipedia.org/wiki/Beaufort_scale)) n days ahead
- **Wind speed n days ahead**: The expected wind speed (in [m/s](https://en.wikipedia.org/wiki/M/s)) n days ahead (derived from `Wind force n days ahead`)
- **Condition code n days ahead**: Symbol and condition code of the expected condition n days ahead
diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown
index 97daa233483b..0431e2d962a5 100644
--- a/source/_integrations/button.mqtt.markdown
+++ b/source/_integrations/button.mqtt.markdown
@@ -45,7 +45,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -54,7 +54,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -62,7 +62,7 @@ availability_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -153,7 +153,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown
index 25d292e8cae4..0b113dbea485 100644
--- a/source/_integrations/caldav.markdown
+++ b/source/_integrations/caldav.markdown
@@ -129,7 +129,7 @@ password:
type: string
calendars:
required: false
- description: List of the calendars to filter. Empty or absent means no filtering, i.e., all calendars will be added. It cannot be used if `custom_calender` option is used.
+ description: List of the calendars to filter. Empty or absent means no filtering; that is, all calendars will be added. It cannot be used if the `custom_calendars` option is used.
type: list
custom_calendars:
required: false
diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown
index 7a22a3f4d709..22d63c0a1d16 100644
--- a/source/_integrations/calendar.markdown
+++ b/source/_integrations/calendar.markdown
@@ -93,8 +93,8 @@ automation:
```
Calendar triggers should not generally use automation mode `single` to ensure
-the trigger can fire when multiple events start at the same time (e.g., use
-`queued` or `parallel` instead). Note that calendars are read once every 15
+the trigger can fire when multiple events start at the same time. For example,
+use `queued` or `parallel` instead. Note that calendars are read once every 15
minutes. When testing, make sure you do not plan events less than 15 minutes
away from the current time, or your {% term trigger %} might not fire.
@@ -114,7 +114,6 @@ This example automation consists of:
- Send a notification with the title and start time of the event.
- Allowing multiple events starting at the same time.
-{% raw %}
```yaml
automation:
- alias: "Calendar notification"
@@ -129,7 +128,6 @@ automation:
Event {{ trigger.calendar_event.summary }} @
{{ trigger.calendar_event.start }}
```
-{% endraw %}
{% enddetails %}
@@ -141,7 +139,6 @@ This example consists of:
- When event summary contains `Front Lights`.
- Turn on and off light named `light.front` when the event starts and ends.
-{% raw %}
```yaml
automation:
- alias: "Front Light Schedule"
@@ -167,7 +164,6 @@ automation:
target:
entity_id: light.front
```
-{% endraw %}
{% enddetails %}
@@ -210,7 +206,6 @@ data:
Home Assistant Calendars do not allow zero duration Calendar events. The following would create a one minute long event starting "now". This could be used to record an external event in a Calendar.
-{% raw %}
```yaml
action: calendar.create_event
target:
@@ -220,7 +215,6 @@ data:
start_date_time: "{{ now() }}"
end_date_time: "{{ now() + timedelta(minutes=1) }}"
```
-{% endraw %}
### Action: Get events
@@ -249,7 +243,7 @@ data:
response_variable: agenda
```
-The response data contains a field for every calendar entity (e.g. `calendar.school` and `calendar.work` in this case).
+The response data contains a field for every calendar entity, for example, `calendar.school` and `calendar.work` in this case.
Every calendar entity has a field `events` containing a list of events with these fields:
| Response data | Description | Example |
@@ -262,7 +256,6 @@ Every calendar entity has a field `events` containing a list of events with thes
This example uses a template with response data in another action:
-{% raw %}
```yaml
action: notify.nina
data:
@@ -277,4 +270,3 @@ data:
{{ event.start}}: {{ event.summary }}
{% endfor %}
```
-{% endraw %}
diff --git a/source/_integrations/camera.ffmpeg.markdown b/source/_integrations/camera.ffmpeg.markdown
index b838daa0bd59..fe5cb77c57ce 100644
--- a/source/_integrations/camera.ffmpeg.markdown
+++ b/source/_integrations/camera.ffmpeg.markdown
@@ -31,7 +31,7 @@ name:
required: false
type: string
extra_arguments:
- description: Extra options to pass to `ffmpeg`, e.g., image quality or video filter options.
+ description: Extra options to pass to `ffmpeg`, such as image quality or video filter options.
required: false
type: string
default: "-pred 1"
diff --git a/source/_integrations/camera.markdown b/source/_integrations/camera.markdown
index 27b42283bace..d69ed2513997 100644
--- a/source/_integrations/camera.markdown
+++ b/source/_integrations/camera.markdown
@@ -51,7 +51,7 @@ The `camera.enable_motion_detection` action allows you to enable the motion dete
| Data attribute | Optional | Description |
| -------------- | -------- | ---------------------------------------------------------------------------------- |
-| `entity_id` | yes | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. |
+| `entity_id` | yes | Name(s) of entities to enable motion detection, for example, `camera.living_room_camera`. |
### Action: Disable motion detection
@@ -59,7 +59,7 @@ The `camera.disable_motion_detection` action allows you to disable the motion de
| Data attribute | Optional | Description |
| -------------- | -------- | ----------------------------------------------------------------------------------- |
-| `entity_id` | yes | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. |
+| `entity_id` | yes | Name(s) of entities to disable motion detection, for example, `camera.living_room_camera`. |
### Action: Play stream
@@ -67,8 +67,8 @@ The `camera.play_stream` action allows you to play a live stream from a camera t
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------------------------------------------------------------- |
-| `entity_id` | no | Name of entity to fetch stream from, e.g., `camera.living_room_camera`. |
-| `media_player` | no | Name of media player to play stream on, e.g., `media_player.living_room_tv`. |
+| `entity_id` | no | Name of entity to fetch stream from, for example, `camera.living_room_camera`. |
+| `media_player` | no | Name of media player to play stream on, for example, `media_player.living_room_tv`. |
| `format` | yes | Stream format supported by `stream` integration and selected `media_player`. Default: `hls` |
For example, the following action in an automation would send an `hls` live stream to your chromecast.
@@ -90,7 +90,7 @@ Both `duration` and `lookback` options are suggestions, but should be consistent
| Data attribute | Optional | Description |
| -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
-| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
+| `entity_id` | no | Name(s) of entities to create a snapshot from, for example, `camera.living_room_camera`. |
| `filename` | no | Recording file name. |
| `duration` | yes | Target recording length (in seconds). Default: 30 |
| `lookback` | yes | Target lookback period (in seconds) to include in addition to duration. Only available if there is currently an active HLS stream. Default: 0 |
@@ -99,7 +99,6 @@ The path part of `filename` must be an entry in the `allowlist_external_dirs` in
For example, the following action in an automation would take a recording from "yourcamera" and save it to /tmp with a timestamped filename.
-{% raw %}
```yaml
actions:
@@ -112,7 +111,6 @@ actions:
filename: '/tmp/{{ my_camera_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.mp4'
```
-{% endraw %}
### Action: Snapshot
@@ -120,14 +118,13 @@ The `camera.snapshot` action allows you to take a snapshot from a camera.
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------------------------------------------------------------------------------------ |
-| `entity_id` | no | Name(s) of entities to create a snapshot from, e.g., `camera.living_room_camera`. |
+| `entity_id` | no | Name(s) of entities to create a snapshot from, for example, `camera.living_room_camera`. |
| `filename` | no | Snapshot file name. |
The path part of `filename` must be an entry in the `allowlist_external_dirs` in your [`homeassistant:`](/integrations/homeassistant/) section of your {% term "`configuration.yaml`" %} file.
For example, the following action in an automation would take a snapshot from "yourcamera" and save it to /tmp with a timestamped filename.
-{% raw %}
```yaml
actions:
@@ -140,7 +137,6 @@ actions:
filename: '/tmp/{{ my_camera_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
```
-{% endraw %}
### Action: Turn off
@@ -148,7 +144,7 @@ The `camera.turn_off` action allows you to turn off a camera. Not all camera mod
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------------------------------------- |
-| `entity_id` | yes | Name(s) of entities to turn off, e.g., `camera.living_room_camera`. |
+| `entity_id` | yes | Name(s) of entities to turn off, for example, `camera.living_room_camera`. |
### Action: Turn on
@@ -156,7 +152,7 @@ The `camera.turn_on` action allows you to turn on a camera. Not all camera model
| Data attribute | Optional | Description |
| -------------- | -------- | ------------------------------------------------------------------ |
-| `entity_id` | yes | Name(s) of entities to turn on, e.g., `camera.living_room_camera`. |
+| `entity_id` | yes | Name(s) of entities to turn on, for example, `camera.living_room_camera`. |
### Test if it works
diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown
index bcdd5a5afe18..9b01e15b2707 100644
--- a/source/_integrations/camera.mqtt.markdown
+++ b/source/_integrations/camera.mqtt.markdown
@@ -53,7 +53,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -62,7 +62,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -153,7 +153,7 @@ image_encoding:
required: false
type: string
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
diff --git a/source/_integrations/cast.markdown b/source/_integrations/cast.markdown
index 8011e97ca44d..0668f82f1fef 100644
--- a/source/_integrations/cast.markdown
+++ b/source/_integrations/cast.markdown
@@ -56,7 +56,7 @@ Home Assistant Cast requires your Home Assistant installation to be accessible v
Chromecasts generally don't resolve hosts through mDNS and also ignore DNS servers from DHCP, they instead use Google's public DNS servers, 8.8.8.8 and 8.8.4.4.
-This means media URLs must either be specifying the IP-address of the server directly, e.g. `http://192.168.1.1:8123/movie.mp4`, or be publicly resolvable, e.g. `http://homeassistant.internal.mydomain.com:8123/movie.mp4` where `homeassistant.internal.mydomain.com` resolves to `192.168.1.1` using Google's DNS servers. A hostname which can't be publicly resolved, e.g. `http://homeassistant.local:8123/movie.mp4` will fail to play.
+This means media URLs must either specify the IP address of the server directly, for example, `http://192.168.1.1:8123/movie.mp4`, or be publicly resolvable, for example, `http://homeassistant.internal.mydomain.com:8123/movie.mp4` where `homeassistant.internal.mydomain.com` resolves to `192.168.1.1` using Google's DNS servers. A hostname that can't be publicly resolved, for example, `http://homeassistant.local:8123/movie.mp4`, will fail to play.
This is important when casting TTS or local media sources; the cast integration will cast such media from the local Home Assistant URL, which can be configured by navigating to **{% my network title="Settings > System > Network" %}** or by configuring an [`internal_url`](/integrations/homeassistant/#editing-the-general-settings-in-yaml).
@@ -236,7 +236,7 @@ Mandatory:
Optional:
-- `media_type`: Media type, e.g. `video/mp4`, `audio/mp3`, `image/jpeg`, defaults to `video/mp4`.
+- `media_type`: Media type, for example, `video/mp4`, `audio/mp3`, or `image/jpeg`. Defaults to `video/mp4`.
#### Example
@@ -261,7 +261,7 @@ Optional:
#### Finding Media IDs
-Media ID can be found in the URL, e.g:
+You can find the media ID in the URL. For example:
- Live channel: , media ID is `p1`
- Podcast: , media ID is `l_8457deb0-4f2c-4ef3-97de-b04f2c6ef314`
- On-demand program: , media ID is `MDUP01004510`
@@ -295,8 +295,8 @@ Example values to cast the item at , the media ID is `nrk1`
- - On-demand programs: ID is found by clicking share button, e.g. for the share link is `https://tv.nrk.no/se?v=OUHA43000207` and the media ID is `OUHA43000207`
+ - Live programs: the media ID is in the URL. For example, for , the media ID is `nrk1`
+ - On-demand programs: find the media ID by selecting the share button. For example, for the share link is `https://tv.nrk.no/se?v=OUHA43000207` and the media ID is `OUHA43000207`
#### Media parameters
diff --git a/source/_integrations/channels.markdown b/source/_integrations/channels.markdown
index c01e1d0f7489..5f761d641cf1 100644
--- a/source/_integrations/channels.markdown
+++ b/source/_integrations/channels.markdown
@@ -34,7 +34,7 @@ media_player:
{% configuration %}
host:
- description: The IP address of the device running Channels, e.g., 192.168.1.50.
+ description: The IP address of the device running Channels, for example, `192.168.1.50`.
required: true
type: string
port:
@@ -43,7 +43,7 @@ port:
default: 57000
type: integer
name:
- description: The name of the Channels instance in Home Assistant, e.g., Family Room Channels.
+ description: The name of the Channels instance in Home Assistant, for example, `Family Room Channels`.
required: false
default: Channels
type: string
diff --git a/source/_integrations/cisco_ios.markdown b/source/_integrations/cisco_ios.markdown
index c9d23e996ec0..d7dfbd468af1 100644
--- a/source/_integrations/cisco_ios.markdown
+++ b/source/_integrations/cisco_ios.markdown
@@ -67,7 +67,7 @@ device_tracker:
{% configuration %}
host:
- description: The IP address of your router, e.g., 192.168.1.1.
+ description: The IP address of your router, for example, `192.168.1.1`.
required: true
type: string
username:
diff --git a/source/_integrations/cisco_mobility_express.markdown b/source/_integrations/cisco_mobility_express.markdown
index 1744d4d59e62..3d3a3f7d8f8d 100644
--- a/source/_integrations/cisco_mobility_express.markdown
+++ b/source/_integrations/cisco_mobility_express.markdown
@@ -33,7 +33,7 @@ device_tracker:
{% configuration %}
host:
- description: The IP address of your controller, e.g., 192.168.10.150.
+ description: The IP address of your controller, for example, `192.168.10.150`.
required: true
type: string
username:
diff --git a/source/_integrations/clementine.markdown b/source/_integrations/clementine.markdown
index 9a6fa85556f1..73e075747497 100644
--- a/source/_integrations/clementine.markdown
+++ b/source/_integrations/clementine.markdown
@@ -29,7 +29,7 @@ media_player:
{% configuration %}
host:
- description: The IP address of the Clementine Player e.g., 192.168.0.20.
+ description: The IP address of the Clementine Player, for example, `192.168.0.20`.
required: true
type: string
port:
diff --git a/source/_integrations/clickatell.markdown b/source/_integrations/clickatell.markdown
index d9c332274cbc..e209a10c959d 100644
--- a/source/_integrations/clickatell.markdown
+++ b/source/_integrations/clickatell.markdown
@@ -53,7 +53,7 @@ api_key:
required: true
type: string
recipient:
- description: Your phone number. This is where you want to send your notification SMS messages. e.g., `61444333444`.
+ description: Your phone number. This is where you want to send your notification SMS messages, for example, `61444333444`.
required: true
type: string
{% endconfiguration %}
diff --git a/source/_integrations/clicksend.markdown b/source/_integrations/clicksend.markdown
index bc729cb817df..d265e5b7ff52 100644
--- a/source/_integrations/clicksend.markdown
+++ b/source/_integrations/clicksend.markdown
@@ -58,7 +58,7 @@ api_key:
required: true
type: string
recipient:
- description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages, e.g., `09171234567` or `[09171234567, 09177654321]`."
+ description: "A single or multiple phone numbers. This is where you want to send your SMS notification messages, for example, `09171234567` or `[09171234567, 09177654321]`."
required: true
type: [string, list]
sender:
diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown
index 6544a629eb3a..01122095f68f 100644
--- a/source/_integrations/climate.mqtt.markdown
+++ b/source/_integrations/climate.mqtt.markdown
@@ -56,7 +56,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -65,7 +65,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -197,7 +197,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -287,7 +287,7 @@ precision:
type: float
default: 0.1 for Celsius and 1.0 for Fahrenheit.
preset_mode_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `preset_mode_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `preset_mode_command_topic`.
required: false
type: template
preset_mode_command_topic:
@@ -299,7 +299,7 @@ preset_mode_state_topic:
required: false
type: string
preset_mode_value_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
required: false
type: template
preset_modes:
@@ -360,7 +360,7 @@ swing_modes:
default: ['on', 'off']
type: list
target_humidity_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `target_humidity_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `target_humidity_command_topic`.
required: false
type: template
target_humidity_command_topic:
@@ -372,7 +372,7 @@ target_humidity_state_topic:
required: false
type: string
target_humidity_state_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value for the climate `target_humidity` state.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value for the climate `target_humidity` state.
required: false
type: template
temperature_command_template:
@@ -448,11 +448,10 @@ If a property works in *optimistic mode* (when the corresponding state topic is
## Using templates
-For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topics can be specified as `value_template`. This can be useful if you received payloads are e.g., in JSON format. Since in JSON, a quoted string (e.g., `"foo"`) is just a string, this can also be used for unquoting.
+For all `*_state_topic`s, a template can be specified that will be used to render the incoming payloads on these topics. Also, a default template that applies to all state topics can be specified as `value_template`. This can be useful if the payloads you receive are, for example, in JSON format. Since in JSON, a quoted string (for example, `"foo"`) is just a string, this can also be used for unquoting.
Say you receive the operation mode `"auto"` via your `mode_state_topic`, but the mode is actually called just `auto`, here's what you could do:
-{% raw %}
```yaml
mqtt:
@@ -467,9 +466,8 @@ mqtt:
mode_state_template: "{{ value_json }}"
```
-{% endraw %}
-This will parse the incoming `"auto"` as JSON, resulting in `auto`. Obviously, in this case you could also just set `value_template: {% raw %}"{{ value_json }}"{% endraw %}`.
+This will parse the incoming `"auto"` as JSON, resulting in `auto`. Obviously, in this case you could also just set `value_template: "{{ value_json }}"`.
Similarly for `*_command_topic`s, a template can be specified to render the outgoing payloads on these topics.
@@ -477,7 +475,6 @@ Similarly for `*_command_topic`s, a template can be specified to render the outg
A full configuration example looks like the one below.
-{% raw %}
```yaml
# Full example configuration.yaml entry
@@ -513,4 +510,3 @@ mqtt:
precision: 1.0
```
-{% endraw %}
diff --git a/source/_integrations/cloudflare_r2.markdown b/source/_integrations/cloudflare_r2.markdown
index 628d74ee301a..fffcd29a7aab 100644
--- a/source/_integrations/cloudflare_r2.markdown
+++ b/source/_integrations/cloudflare_r2.markdown
@@ -24,7 +24,7 @@ This integration requires an existing R2 bucket and admin access to the bucket s
1. Log in to your [Cloudflare Dashboard](https://dash.cloudflare.com/).
2. On the sidebar, go to **Storage & databases**, click on **R2 object storage** and then **Overview**.
3. Select **+ Create bucket**.
-4. Choose a unique **Bucket name** (e.g., `home-assistant-backups-123456`).
+4. Choose a unique **Bucket name**, for example, `home-assistant-backups-123456`.
5. Select your preferred [location](https://developers.cloudflare.com/r2/reference/data-location/).
6. Select your preferred [storage class](https://developers.cloudflare.com/r2/buckets/storage-classes/#set-default-storage-class-for-buckets) (Standard is fine, as Infrequent Access is still in beta)
7. Select **Create bucket**.
@@ -42,7 +42,7 @@ To create a new Secret Key that can access the R2 bucket:
3. Click **Create User API token**.
4. Give it a name like `Home Assistant Backup`.
5. Check **Object Read & Write**.
-6. Click **Apply to specific buckets only** and chose the bucket you created previously (e.g., `home-assistant-backups-123456`).
+6. Select **Apply to specific buckets only** and choose the bucket you created previously, for example, `home-assistant-backups-123456`.
7. Do not touch the other options and click **Create User API Token**.
8. Save the **Access Key ID**, the **Secret Access Key** and also the **S3 endpoint** — you'll need these when setting up the Cloudflare R2 integration in Home Assistant.
diff --git a/source/_integrations/co2signal.markdown b/source/_integrations/co2signal.markdown
index 79c8816bf8b4..a0f74836e884 100644
--- a/source/_integrations/co2signal.markdown
+++ b/source/_integrations/co2signal.markdown
@@ -86,7 +86,6 @@ The integration creates two sensors for each configured location:
You can create a gauge card to visualize the carbon intensity of your electricity:
-{% raw %}
```yaml
type: gauge
entity: sensor.electricity_maps_carbon_intensity
@@ -98,13 +97,11 @@ severity:
yellow: 150
red: 300
```
-{% endraw %}
### Automation example: Run appliances when carbon intensity is low
This automation starts your dishwasher when the carbon intensity drops below a specific threshold:
-{% raw %}
```yaml
alias: "Run Dishwasher at Low Carbon Intensity"
description: "Starts the dishwasher when carbon intensity is low"
@@ -130,13 +127,11 @@ actions:
message: "Dishwasher started during low carbon intensity period ({{ states('sensor.electricity_maps_carbon_intensity') }} gCO2eq/kWh)"
```
-{% endraw %}
### Creating a history graph to track changes
Add this to your dashboard to track how carbon intensity changes throughout the day:
-{% raw %}
```yaml
type: history-graph
entities:
@@ -145,7 +140,6 @@ entities:
hours_to_show: 24
refresh_interval: 60
```
-{% endraw %}
### Energy Dashboard integration
diff --git a/source/_integrations/color_extractor.markdown b/source/_integrations/color_extractor.markdown
index dcfd5c1de82a..46942c862d66 100644
--- a/source/_integrations/color_extractor.markdown
+++ b/source/_integrations/color_extractor.markdown
@@ -48,7 +48,6 @@ This {% term action %} is very similar to the URL action above, except it proces
Example usage in an {% term automation %}, taking the album art present on a Chromecast and supplying it to `light.shelf_leds` whenever it changes:
-{% raw %}
```yaml
#automation.yaml
@@ -84,4 +83,3 @@ With a nicer transition period of 5 seconds and setting brightness to 100% each
transition: 5
```
-{% endraw %}
diff --git a/source/_integrations/command_line.markdown b/source/_integrations/command_line.markdown
index a6a12b49302e..707565e37a9c 100644
--- a/source/_integrations/command_line.markdown
+++ b/source/_integrations/command_line.markdown
@@ -79,7 +79,7 @@ command_line:
type: string
default: 'OFF'
value_template:
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload.
required: false
type: string
availability:
@@ -210,7 +210,7 @@ command_line:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload."
+ description: "Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload."
required: false
type: string
availability:
@@ -301,7 +301,6 @@ As **Command line** {% term integration %} is a yaml only integration, turning o
Entering this example in your configuration sets the default logging to info, and for `command_line` to debug. Once done, restart Home Assistant to enable.
-{% raw %}
```yaml
# Set logging
logger:
@@ -309,7 +308,6 @@ logger:
logs:
homeassistant.components.command_line: debug
```
-{% endraw%}
{% note %}
@@ -323,7 +321,6 @@ While `command` is accepting a template for `sensor` and `binary_sensor`, it's o
To use your Command binary sensor in your installation, add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -336,7 +333,6 @@ command_line:
payload_on: "1"
payload_off: "0"
```
-{% endraw%}
## Cover
@@ -344,7 +340,6 @@ A `command_line`cover platform that issues specific commands when it is moved up
To enable a command line cover in your installation, add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -354,7 +349,6 @@ command_line:
command_stop: move_command stop garage
name: Garage
```
-{% endraw%}
## Notify
@@ -362,14 +356,12 @@ The `command_line` platform allows you to use external tools for notifications f
To enable those notifications in your installation, add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
- notify:
command: "espeak -vmb/mb-us1"
```
-{% endraw%}
To use notifications, please see the [getting started with automation page](/getting-started/automation/).
@@ -377,7 +369,6 @@ To use notifications, please see the [getting started with automation page](/get
To enable it, add the following lines to your {% term "`configuration.yaml`" %}:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -386,7 +377,6 @@ command_line:
- sensor:
command: SENSOR_COMMAND_2
```
-{% endraw%}
## Switch
@@ -397,7 +387,6 @@ controlled from the command line, including calling other scripts!
To enable it, add the following lines to your {% term "`configuration.yaml`" %}:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -406,7 +395,6 @@ command_line:
command_on: switch_command on kitchen
command_off: switch_command off kitchen
```
-{% endraw%}
{% note %}
@@ -438,7 +426,6 @@ In this section you find some real-life examples of how to use the command_line
Check the state of an [SickRage](https://github.com/sickragetv/sickrage) instance.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -449,13 +436,11 @@ command_line:
payload_on: "Running"
payload_off: "Not running"
```
-{% endraw%}
### Check RasPlex
Check if [RasPlex](https://github.com/RasPlex/RasPlex) is `online`.
-{% raw %}
```yaml
command_line:
- binary_sensor:
@@ -465,11 +450,9 @@ command_line:
payload_on: 1
payload_off: 0
```
-{% endraw%}
An alternative solution could look like this:
-{% raw %}
```yaml
command_line:
- binary_sensor:
@@ -479,7 +462,6 @@ command_line:
payload_on: "success"
payload_off: "fail"
```
-{% endraw%}
Consider to use the [ping sensor](/integrations/ping#binary-sensor) as an alternative to the samples above.
@@ -487,7 +469,6 @@ Consider to use the [ping sensor](/integrations/ping#binary-sensor) as an altern
The services running is listed in `/etc/systemd/system` and can be checked with the `systemctl` command:
-{% raw %}
```bash
$ systemctl is-active home-assistant@rock64.service
active
@@ -495,11 +476,10 @@ $ sudo service home-assistant@rock64.service stop
$ systemctl is-active home-assistant@rock64.service
inactive
```
-{% endraw%}
+
A binary command line sensor can check this:
-{% raw %}
```yaml
command_line:
- binary_sensor:
@@ -507,11 +487,10 @@ command_line:
payload_on: "active"
payload_off: "inactive"
```
-{% endraw%}
+
## Example cover platform
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -528,7 +507,7 @@ command_line:
0
{% endif %}
```
-{% endraw%}
+
## Examples sensor platform
@@ -538,7 +517,6 @@ In this section you find some real-life examples of how to use this sensor.
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 {% term "`configuration.yaml`" %} file:
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -549,33 +527,31 @@ command_line:
unit_of_measurement: "°C"
value_template: "{{ value | multiply(0.001) | round(1) }}"
```
-{% endraw%}
+
### Details about the upstream Home Assistant release
You can see directly in the frontend (**Developer tools** -> **About**) what release of Home Assistant you are running. The Home Assistant releases are available on the [Python Package Index](https://pypi.python.org/pypi). This makes it possible to get the current release.
-{% raw %}
```yaml
command_line:
- sensor:
command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
name: HA release
```
-{% endraw%}
+
### Read value out of a remote text file
If you own devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value.
-{% raw %}
```yaml
command_line:
- sensor:
command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)"
name: File value
```
-{% endraw%}
+
### Use an external script
@@ -583,15 +559,13 @@ The example is doing the same as the [aREST sensor](/integrations/arest#sensor)
The one-line script to retrieve a value is shown below. Of course it would be possible to use this directly in the {% term "`configuration.yaml`" %} file but need extra care about the quotation marks.
-{% raw %}
```bash
python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
```
-{% endraw%}
+
The script (saved as `arest-value.py`) that is used looks like the example below.
-{% raw %}
```python
#!/usr/bin/python3
from requests import get
@@ -599,11 +573,10 @@ from requests import get
response = get("http://10.0.0.48/analog/2")
print(response.json()["return_value"])
```
-{% endraw%}
+
To use the script you need to add something like the following to your {% term "`configuration.yaml`" %} file.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -611,13 +584,12 @@ command_line:
name: Brightness
command: "python3 /path/to/script/arest-value.py"
```
-{% endraw%}
+
### Usage of templating in `command:`
-[Templates](/docs/configuration/templating/) are supported in the `command` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script.
+[Templates](/docs/templating/) are supported in the `command` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -626,13 +598,12 @@ command_line:
command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}"
unit_of_measurement: "Direction"
```
-{% endraw%}
+
### Usage of JSON attributes in command output
The example shows how you can retrieve multiple values with one sensor (where the additional values are attributes) by using `value_json` and `json_attributes`.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -644,11 +615,10 @@ command_line:
command: "python3 /home/pi/.homeassistant/scripts/datetime.py"
value_template: "{{ value_json.time }}"
```
-{% endraw%}
+
[JSONPlaceholder](https://jsonplaceholder.typicode.com/) provides sample JSON data for testing. In the below example, JSONPath locates the attributes in the JSON document. [JSONPath Online Evaluator](https://jsonpath.com/) provides a tool to test your JSONPath.
-{% raw %}
```yaml
command_line:
@@ -664,7 +634,6 @@ command_line:
value_template: "{{ value_json[0].name }}"
```
-{% endraw %}
## Example switch platform
@@ -672,7 +641,6 @@ command_line:
This example demonstrates how to use template to change the icon as its state changes. This icon is referencing its own state.
-{% raw %}
```yaml
command_line:
- switch:
@@ -689,7 +657,7 @@ command_line:
{% else %} mdi:toggle-switch-off
{% endif %}
```
-{% endraw%}
+
### aREST device
@@ -698,7 +666,6 @@ The example below is doing the same as the
The command line tool [`curl`](https://curl.haxx.se/) is used to toggle a pin
which is controllable through REST.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -709,7 +676,7 @@ command_line:
value_template: '{{ value == "1" }}'
name: Kitchen Lightswitch
```
-{% endraw%}
+
Given this example, in the UI one would see the `friendly_name` of
"Kitchen Light". However, the `identifier` is `arest_pin_four`, making the
@@ -724,7 +691,6 @@ This switch will shutdown your system that is hosting Home Assistant.
This switch will shutdown your host immediately, there will be no confirmation.
{% endwarning %}
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -732,14 +698,13 @@ command_line:
name: Home Assistant System Shutdown
command_off: "/usr/sbin/poweroff"
```
-{% endraw%}
+
### Control your VLC player
This switch will control a local VLC media player
([Source](https://community.home-assistant.io/t/106)).
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -748,7 +713,7 @@ command_line:
command_on: "cvlc 1.mp3 vlc://quit &"
command_off: "pkill vlc"
```
-{% endraw%}
+
### Control Foscam motion sensor
@@ -757,7 +722,6 @@ Commands ([Source](https://www.iltucci.com/blog/wp-content/uploads/2018/12/Fosca
This switch supports statecmd,
which checks the current state of motion detection.
-{% raw %}
```yaml
# Example configuration.yaml entry
command_line:
@@ -768,7 +732,7 @@ command_line:
command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=)"'
value_template: '{{ value == "1" }}'
```
-{% endraw%}
+
- Replace admin and password with an "Admin" privileged Foscam user
- Replace ipaddress with the local IP address of your Foscam
diff --git a/source/_integrations/compensation.markdown b/source/_integrations/compensation.markdown
index 28e3f9f53275..eeff85d8f72a 100644
--- a/source/_integrations/compensation.markdown
+++ b/source/_integrations/compensation.markdown
@@ -54,11 +54,11 @@ attribute:
required: false
type: string
data_points:
- description: "The collection of data point conversions with the format `[uncompensated_value, compensated_value]`. e.g., `[1.0, 2.1]`. The number of required data points is equal to the polynomial `degree` + 1. For example, a linear compensation (with `degree: 1`) requires at least 2 data points."
+ description: "The collection of data point conversions with the format `[uncompensated_value, compensated_value]`, for example, `[1.0, 2.1]`. The number of required data points is equal to the polynomial `degree` + 1. For example, a linear compensation (with `degree: 1`) requires at least 2 data points."
required: true
type: list
degree:
- description: "The degree of a polynomial. e.g., Linear compensation (y = x + 3) has 1 degree, Quadratic compensation (y = x2 + x + 3) has 2 degrees, etc."
+ description: "The degree of a polynomial. For example, a linear compensation (y = x + 3) has 1 degree and a quadratic compensation (y = x2 + x + 3) has 2 degrees."
required: false
default: 1
type: integer
diff --git a/source/_integrations/conversation.markdown b/source/_integrations/conversation.markdown
index 30d875aa8ae6..e1c768387402 100644
--- a/source/_integrations/conversation.markdown
+++ b/source/_integrations/conversation.markdown
@@ -39,7 +39,6 @@ To get started, create a `custom_sentences/` directory in your Home As
For an English example, create the file `config/custom_sentences/en/temperature.yaml` and add:
-{% raw %}
```yaml
# Example temperature.yaml entry
@@ -51,11 +50,9 @@ intents:
- "What is the humidity outside"
```
-{% endraw %}
To teach Home Assistant how to handle the custom `CustomOutsideHumidity` {% term intent %}, create an `intent_script` entry in your {% term "`configuration.yaml`" %} file:
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -65,7 +62,6 @@ intent_script:
text: "It is currently {{ states('sensor.outside_humidity') }} percent humidity outside."
```
-{% endraw %}
More complex [actions](/docs/scripts/) can be done in `intent_script`, such as performing actions and firing events.
@@ -75,7 +71,6 @@ Extending the built-in {% term intents %}, such as `HassTurnOn` and `HassTurnOff
For example, create the file `config/custom_sentences/en/on_off.yaml` and add:
-{% raw %}
```yaml
# Example on_off.yaml entry
@@ -95,7 +90,6 @@ intents:
name: "kitchen lights"
```
-{% endraw %}
Now when you say "engage the kitchen lights", it will turn on a light named "kitchen lights". Saying "disengage kitchen lights" will turn it off.
@@ -103,7 +97,6 @@ Let's generalize this to other entities. The built-in `{name}` and `{area}` list
Adding `{name}` to `config/custom_sentences/en/on_off.yaml`:
-{% raw %}
```yaml
# Example on_off.yaml entry
@@ -119,13 +112,11 @@ intents:
- "disengage [the] {name}"
```
-{% endraw %}
You can now "engage" or "disengage" any entity.
Lastly, let's add sentences for turning lights on and off in specific areas:
-{% raw %}
```yaml
# Example on_off.yaml entry
@@ -151,7 +142,6 @@ intents:
domain: "light"
```
-{% endraw %}
It's now possible to say "engage all lights in the bedroom", which will turn on every light in the area named "bedroom".
diff --git a/source/_integrations/cookidoo.markdown b/source/_integrations/cookidoo.markdown
index 1837fa0d6540..3a0e7ecffbfb 100644
--- a/source/_integrations/cookidoo.markdown
+++ b/source/_integrations/cookidoo.markdown
@@ -43,7 +43,7 @@ Email:
Password:
description: "Enter the password for your Cookidoo account."
Localization:
- description: "Select the language and country for your Cookidoo account (e.g., English - United States)."
+ description: "Select the language and country for your Cookidoo account, for example, English - United States."
{% endconfiguration_basic %}
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/counter.markdown b/source/_integrations/counter.markdown
index e866bb401c52..24833753ce08 100644
--- a/source/_integrations/counter.markdown
+++ b/source/_integrations/counter.markdown
@@ -93,7 +93,7 @@ The `counter.increment` action allows you to increment the counter with 1 or the
| Data attribute | Optional | Description |
| ---------------------- | -------- | --------------------------------------------------------------------- |
-| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
+| `entity_id` | no | Name of the entity to take action, for example, `counter.my_custom_counter`. |
### Action: Decrement
@@ -101,7 +101,7 @@ The `counter.decrement` action allows you to decrement the counter with 1 or the
| Data attribute | Optional | Description |
| ---------------------- | -------- | --------------------------------------------------------------------- |
-| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
+| `entity_id` | no | Name of the entity to take action, for example, `counter.my_custom_counter`. |
### Action: Reset
@@ -109,7 +109,7 @@ The `counter.reset` action allows you to reset the counter to its initial value.
| Data attribute | Optional | Description |
| ---------------------- | -------- | --------------------------------------------------------------------- |
-| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
+| `entity_id` | no | Name of the entity to take action, for example, `counter.my_custom_counter`. |
### Action: Set value
@@ -117,7 +117,7 @@ The `counter.set_value` action allows you to set the counter to a specific value
| Data attribute | Optional | Description |
| ---------------------- | -------- | --------------------------------------------------------------------- |
-| `entity_id` | no | Name of the entity to take action, e.g., `counter.my_custom_counter`. |
+| `entity_id` | no | Name of the entity to take action, for example, `counter.my_custom_counter`. |
| `value` | yes | Set the counter to the given value. |
### Use the action
diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown
index d44010bca959..ffc5b77ca917 100644
--- a/source/_integrations/cover.mqtt.markdown
+++ b/source/_integrations/cover.mqtt.markdown
@@ -23,9 +23,9 @@ If position topic and state topic are both defined, the device state (`open`, `o
If neither a state topic nor a position topic are defined, the cover will work in optimistic mode. In this mode, the cover will immediately change state (`open` or `closed`) after every command sent by Home Assistant. If a state topic/position topic is defined, the cover will wait for a message on `state_topic` or `position_topic`.
-Optimistic mode can be forced, even if a `state_topic` / `position_topic` is defined. Try to enable it if experiencing incorrect cover operation (Google Assistant gauge may need optimistic mode as it often send request to your Home Assistant immediately after send set_cover_position in which case MQTT could be too slow).
+Optimistic mode can be forced, even if a `state_topic` / `position_topic` is defined. Try to enable it if you experience incorrect cover operation (Google Assistant gauge may need optimistic mode, as it often sends requests to your Home Assistant immediately after sending `set_cover_position`, in which case MQTT could be too slow).
-The `mqtt` cover platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e., publishes a matching `payload_not_available` to any `availability` topic), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up.
+The `mqtt` cover platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (that is, publishes a matching `payload_not_available` to any `availability` topic), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up.
To use an MQTT cover in your installation, [add a MQTT device as a subentry](/integrations/mqtt/#configuration), or add the following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
@@ -60,7 +60,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -69,7 +69,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -168,7 +168,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -230,7 +230,7 @@ position_open:
type: integer
default: 100
position_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that can be used to extract the payload for the `position_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that can be used to extract the payload for the `position_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/templating/states/) template function;"
required: false
type: template
position_topic:
@@ -248,7 +248,7 @@ retain:
type: boolean
default: false
set_position_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{% raw %}{{ position }}{% endraw %}`. Within the template the following variables are available: `entity_id`, `position`, the target position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{{ position }}`. Within the template the following variables are available: `entity_id`, `position`, the target position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/templating/states/) template function;"
required: false
type: template
set_position_topic:
@@ -290,7 +290,7 @@ tilt_closed_value:
type: integer
default: 0
tilt_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) that can be used to extract the payload for the `tilt_command_topic` topic. Within the template the following variables are available: `entity_id`, `tilt_position`, the target tilt position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that can be used to extract the payload for the `tilt_command_topic` topic. Within the template the following variables are available: `entity_id`, `tilt_position`, the target tilt position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/templating/states/) template function;"
required: false
type: template
tilt_command_topic:
@@ -318,7 +318,7 @@ tilt_optimistic:
type: boolean
default: "`true` if `tilt_status_topic` is not defined, else `false`"
tilt_status_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that can be used to extract the payload for the `tilt_status_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that can be used to extract the payload for the `tilt_status_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/templating/states/) template function;"
required: false
type: template
tilt_status_topic:
@@ -330,7 +330,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that can be used to extract the payload for the `state_topic` topic."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that can be used to extract the payload for the `state_topic` topic."
required: false
type: template
{% endconfiguration %}
@@ -338,8 +338,8 @@ value_template:
{% note %}
MQTT cover expects position and tilt values to be in range of 0 to 100, where 0 indicates closed position and 100 indicates fully open position.
-If position `min` or `max` are set to a different range (e.g. 40 to 140), when sending command to the device the range will be adjusted to the device range (position 0 will send a value of 40 to device) and when position payload is received from the device it will be adjusted back to the 0 to 100 range (device value of 40 will report cover position 0).
-`min` and `max` can also be used to reverse the direction of the device, if `min` is set to 100 and `max` is set to `0` device operation will be inverted (e.g. when setting position to 40, a value of 60 will be sent to device).
+If position `min` or `max` are set to a different range, for example, 40 to 140, when sending command to the device the range will be adjusted to the device range (position 0 will send a value of 40 to device) and when position payload is received from the device it will be adjusted back to the 0 to 100 range (device value of 40 will report cover position 0).
+If `min` is set to 100 and `max` is set to `0`, `min` and `max` can also be used to reverse the direction of the device, and device operation will be inverted. For example, when setting position to 40, a value of 60 will be sent to the device.
{% endnote %}
## Examples
@@ -350,7 +350,6 @@ In this section you will find some real-life examples of how to use this platfor
The example below shows a full configuration for a cover without tilt with state topic only.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -376,13 +375,11 @@ mqtt:
value_template: "{{ value.x }}"
```
-{% endraw %}
### Full configuration position topic without tilt
The example below shows a full configuration for a cover without tilt with position topic.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -407,13 +404,11 @@ mqtt:
value_template: "{{ value.x }}"
```
-{% endraw %}
### Full configuration for position, state and tilt
The example below shows a full configuration for a cover with position, state & tilt.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -448,13 +443,11 @@ mqtt:
tilt_opened_value: 180
```
-{% endraw %}
### Full configuration using stopped state
The example below shows a full configuration for a cover using stopped state.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -481,14 +474,12 @@ mqtt:
position_template: "{{ value.y }}"
```
-{% endraw %}
### Configuration for disabling cover commands
The example below shows a configuration for a cover that does not have a close command.
Setting `payload_close` empty or to `null` disables the close command and will not show the close button.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -499,11 +490,9 @@ mqtt:
payload_stop: "on"
```
-{% endraw %}
The following commands can be disabled: `open`, `close`, `stop` by overriding their payloads: `payload_open`, `payload_close`, `payload_stop`
For auto discovery message the payload needs to be set to `null`, example for cover without close command:
-{% raw %}
```json
{
@@ -517,13 +506,11 @@ For auto discovery message the payload needs to be set to `null`, example for co
}
```
-{% endraw %}
### Full configuration using `entity_id`- variable in the template
The example below shows an example of how to correct the state of the blind depending if it moved up, or down.
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -553,7 +540,6 @@ mqtt:
{% endif %}
```
-{% endraw %}
### Full configuration using advanced templating
@@ -563,13 +549,12 @@ The example below shows a full example of how to set up a venetian blind which h
Following variable might be used in `position_template`, `set_position_template`, `tilt_command_template` and `tilt_status_template`, `json_attributes_template` (only `entity_id`).
-- `entity_id` - The ID of the entity itself. It can be used to reference its attributes with the help of the [states](/docs/configuration/templating/#states) template function.
+- `entity_id` - The ID of the entity itself. It can be used to reference its attributes with the help of the [states](/docs/templating/states/) template function.
- `position_open`
- `position_closed`
- `tilt_min`
- `tilt_max`
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -625,7 +610,6 @@ mqtt:
payload_stop: "on"
```
-{% endraw %}
### Testing your configuration
diff --git a/source/_integrations/cppm_tracker.markdown b/source/_integrations/cppm_tracker.markdown
index df6fbd6e34f0..1037eb2acb35 100644
--- a/source/_integrations/cppm_tracker.markdown
+++ b/source/_integrations/cppm_tracker.markdown
@@ -36,7 +36,7 @@ device_tracker:
{% configuration %}
host:
- description: "The IP address or hostname of the ClearPass server, e.g., `clearpass.server.com`."
+ description: "The IP address or hostname of the ClearPass server, for example, `clearpass.server.com`."
required: true
type: string
client_id:
diff --git a/source/_integrations/daikin.markdown b/source/_integrations/daikin.markdown
index c4ac8bcf2010..75ee883b2549 100644
--- a/source/_integrations/daikin.markdown
+++ b/source/_integrations/daikin.markdown
@@ -46,7 +46,7 @@ If your device is set up with password, use the password. If it has an API key,
{% note %}
-If your Daikin unit does not reside in the same network as your Home Assistant instance, i.e. your network is segmented, note that a couple of UDP connections are made during discovery:
+If your Daikin unit does not reside in the same network as your Home Assistant instance (that is, your network is segmented), note that a couple of UDP connections are made during discovery:
- From Home Assistant to the Daikin controller: `UDP:30000` => `30050`
- From the Daikin controller to Home Assistant: `UDP:` => `30000`
@@ -163,4 +163,4 @@ Currently known region codes:
- US
- TH
-If you experience problems with certain apps like the Daikin ONECTA try setting a lower-case region code (e.g. 'eu').
+If you experience problems with certain apps such as the Daikin ONECTA, try setting a lowercase region code (for example, `eu`).
diff --git a/source/_integrations/datadog.markdown b/source/_integrations/datadog.markdown
index 0ca1c3626d5b..eef8b2aeddb5 100644
--- a/source/_integrations/datadog.markdown
+++ b/source/_integrations/datadog.markdown
@@ -15,7 +15,7 @@ ha_config_flow: true
The **Datadog** {% term integration %} sends all state changes to [Datadog](https://www.datadoghq.com/) using a [Datadog Agent](https://docs.datadoghq.com/guides/basic_agent_usage/).
-Datadog allows you to analyze, monitor, cross-reference and alert upon your data. You can use it to detect statistical anomalies, see graphs across multiple sources in real-time, send critical alerts to Slack, etc.
+Datadog allows you to analyze, monitor, cross-reference, and alert on your data. You can use it to detect statistical anomalies, see graphs across multiple sources in real time, and send critical alerts to Slack.
@@ -39,7 +39,7 @@ In the [Datadog Agent configuration](https://github.com/DataDog/datadog-agent/bl
{% configuration_basic %}
host:
- description: The IP address or hostname of your Datadog host, e.g., 192.168.1.23.
+ description: The IP address or hostname of your Datadog host, for example, `192.168.1.23`.
port:
description: Port to use.
prefix:
diff --git a/source/_integrations/ddwrt.markdown b/source/_integrations/ddwrt.markdown
index fa4e933391c9..7a98cfaca535 100644
--- a/source/_integrations/ddwrt.markdown
+++ b/source/_integrations/ddwrt.markdown
@@ -31,7 +31,7 @@ device_tracker:
{% configuration %}
host:
- description: The IP address of your router, e.g., `192.168.1.1`.
+ description: The IP address of your router, for example, `192.168.1.1`.
required: true
type: string
username:
@@ -48,7 +48,7 @@ ssl:
type: boolean
default: false
verify_ssl:
- description: If SSL/TLS verification for HTTPS resources needs to be turned off (for self-signed certs, etc.)
+ description: Disables SSL/TLS verification for HTTPS resources, for example, for self-signed certificates.
required: false
type: boolean
default: true
diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown
index e6e94adc635f..e57d7bc9f3f1 100644
--- a/source/_integrations/deconz.markdown
+++ b/source/_integrations/deconz.markdown
@@ -162,7 +162,7 @@ Typical values for switches, the event codes are 4 numbers where the first and l
Where for example on a Philips Hue Dimmer, 2001 would be holding the dim up button.
-For the IKEA Tradfri remote the first digit equals, 1 for the middle button, 2 for up, 3 for down, 4 for left, and 5 for right (e.g., "event: 1002" for middle button short release).
+For the IKEA Tradfri remote, the first digit indicates the button: 1 for middle, 2 for up, 3 for down, 4 for left, and 5 for right (for example, `"event": 1002` is a middle button short release).
Specific gestures for the Aqara Magic Cube are:
@@ -188,7 +188,7 @@ To simplify using remote control devices in automations deCONZ integration expos
#### Requesting support for new device trigger
-If you have a Zigbee remote that is not yet supported you can request support for it by creating an issue on Home Assistant Core GitHub repository. This requires the device model (can be acquired from debug logs) together with a mapping of action and button event, e.g., Hue dimmer remote model "RWL021", Short press turn on 1000.
+If you have a Zigbee remote that is not yet supported, you can request support for it by creating an issue on the Home Assistant Core GitHub repository. This requires the device model (can be acquired from debug logs) together with a mapping of action and button event, for example, Hue dimmer remote model `RWL021`, Short press turn on 1000.
## Examples
@@ -196,7 +196,6 @@ If you have a Zigbee remote that is not yet supported you can request support fo
#### Step up and step down input number with wireless dimmer
-{% raw %}
```yaml
automation:
@@ -261,11 +260,9 @@ automation:
entity_id: light.lamp
```
-{% endraw %}
#### Changing color through the Müller Licht tint remote control
-{% raw %}
```yaml
automation:
@@ -286,7 +283,6 @@ automation:
mode: restart
```
-{% endraw %}
#### Colored Flashing - RGB Philips Hue bulb using deconz.configure
@@ -410,7 +406,7 @@ The deCONZ Daylight sensor is a special sensor built into the deCONZ software si
The sensor also has an attribute called "daylight" that has the value `true` when the sensor's state is `golden_hour_1`, `solar_noon`, or `golden_hour_2`, and `false` otherwise.
-These states can be used in automations as a trigger (e.g., trigger when a certain phase of daylight starts or ends) or condition (e.g., trigger only if in a certain phase of daylight).
+These states can be used in automations as a trigger (for example, trigger when a certain phase of daylight starts or ends) or condition (for example, trigger only if in a certain phase of daylight).
Please note that the deCONZ daylight sensor is disabled by default in Home Assistant. It can be enabled manually by going to your deCONZ controller device in the Home Assistant UI.
diff --git a/source/_integrations/default_config.markdown b/source/_integrations/default_config.markdown
index ac5081806ab0..6aab11d86c8b 100644
--- a/source/_integrations/default_config.markdown
+++ b/source/_integrations/default_config.markdown
@@ -1,6 +1,6 @@
---
title: Default Config
-description: The default configuration integration will initiate a default configuration for Home Assistant.
+description: The default configuration integration sets up a default set of integrations for Home Assistant.
ha_category:
- Other
ha_release: 0.88
@@ -11,7 +11,7 @@ ha_codeowners:
ha_integration_type: system
---
-This {% term integration %} is a meta-component and configures a default set of integrations for Home Assistant to load. The integrations that will be loaded are:
+This {% term integration %} is a meta integration that configures a default set of integrations for Home Assistant to load. The following integrations are loaded:
- [Assist pipeline](/integrations/assist_pipeline/) (`assist_pipeline`)
- [Backup](/integrations/backup/) (`backup`)
@@ -23,7 +23,7 @@ This {% term integration %} is a meta-component and configures a default set of
- [File](/integrations/file/) (`file`)
- [Go2rtc](/integrations/go2rtc/) (`go2rtc`)
- [History](/integrations/history/) (`history`)
-- [Home Assistant Alerts](/integrations/homeassistant_alerts) (`homeassistant_alerts`)
+- [Home Assistant Alerts](/integrations/homeassistant_alerts/) (`homeassistant_alerts`)
- [Home Assistant Cloud](/integrations/cloud/) (`cloud`)
- [Image upload](/integrations/image_upload/) (`image_upload`)
- [Activity](/integrations/logbook/) (`logbook`)
@@ -35,7 +35,7 @@ This {% term integration %} is a meta-component and configures a default set of
- [Sun](/integrations/sun/) (`sun`)
- [Usage Prediction](/integrations/usage_prediction/) (`usage_prediction`)
- [USB](/integrations/usb/) (`usb`)
-- [Webhooks](/integrations/webhook) (`webhook`)
+- [Webhooks](/integrations/webhook/) (`webhook`)
- [Zero-configuration networking (zeroconf)](/integrations/zeroconf/) (`zeroconf`)
## Configuration
diff --git a/source/_integrations/delijn.markdown b/source/_integrations/delijn.markdown
index 09ccd01f1a94..96b02b7f77db 100644
--- a/source/_integrations/delijn.markdown
+++ b/source/_integrations/delijn.markdown
@@ -51,7 +51,7 @@ next_departure:
type: list
keys:
stop_id:
- description: "ID of the stop, e.g., `200552`."
+ description: "ID of the stop, for example, `200552`."
required: true
type: string
number_of_departures:
diff --git a/source/_integrations/denonavr.markdown b/source/_integrations/denonavr.markdown
index 2f6d75cf3444..c9890d0f4c8c 100644
--- a/source/_integrations/denonavr.markdown
+++ b/source/_integrations/denonavr.markdown
@@ -134,7 +134,7 @@ If you have something else using the IP controller for your Denon AVR 3808CI, su
{% configuration_basic %}
host:
- description: IP address of the device, e.g., 192.168.1.32. If not set, auto-discovery is used.
+ description: IP address of the device, for example, `192.168.1.32`. If not set, auto-discovery is used.
show_all_sources:
description: If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed. Some receivers have a bug that marks all sources as deleted in the interface. In this case, this option could help.
zone2:
@@ -166,7 +166,7 @@ To use these commands, call the `denonavr.get_command` action and append the spe
| Data attribute | Optional | Description |
| ---------------------- | -------- | ---------------------------------------------------- |
| `entity_id` | no | Name of entity to send command to. For example `media_player.marantz`|
-| `command` | no | Command to send to device, e.g., `/goform/formiPhoneAppDirect.xml?VSMONI2`|
+| `command` | no | Command to send to device, for example, `/goform/formiPhoneAppDirect.xml?VSMONI2`|
So for example, the above command `/goform/formiPhoneAppDirect.xml?VSMONI2` will switch the HDMI to output 2 (if your receiver supports it). Sending an IR code works the same, so the command `/goform/formiPhoneAppDirect.xml?RCKSK0410370` will toggle muting.
diff --git a/source/_integrations/device_tracker.markdown b/source/_integrations/device_tracker.markdown
index 11705f3ffb14..3118d3186591 100644
--- a/source/_integrations/device_tracker.markdown
+++ b/source/_integrations/device_tracker.markdown
@@ -39,7 +39,7 @@ Device tracker will only look for the following global settings under the config
| Parameter | Default | Description |
| ------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `interval_seconds` | 12 | Seconds between each scan for new devices. This only applies to local device trackers, not applications that push updates. |
-| `consider_home` | 180 | Seconds to wait till marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones will occasionally drop off the network and then re-appear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations, (e.g., the following all represents 3 minutes: `180`, `0:03`, `0:03:00`) |
+| `consider_home` | 180 | Seconds to wait until marking someone as not home after not being seen. This parameter is most useful for households with Apple iOS devices that go into sleep mode while still at home to conserve battery life. iPhones occasionally drop off the network and then reappear. `consider_home` helps prevent false alarms in presence detection when using IP scanners such as Nmap. `consider_home` accepts various time representations. For example, the following all represent 3 minutes: `180`, `0:03`, `0:03:00`. |
{% note %}
diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown
index b369fb74ae12..10b062ca4897 100644
--- a/source/_integrations/device_tracker.mqtt.markdown
+++ b/source/_integrations/device_tracker.mqtt.markdown
@@ -53,7 +53,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -62,7 +62,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -131,7 +131,7 @@ group:
required: false
type: list
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -196,7 +196,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that returns a device tracker state."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that returns a device tracker state."
required: false
type: template
{% endconfiguration %}
@@ -227,7 +227,7 @@ To set the state of the device tracker to a named location:
mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/state -m 'location_name'
```
-If the device supports GPS coordinates then they can be sent to Home Assistant by specifying an attributes topic (i.e. "json_attributes_topic") in the configuration payload:
+If the device supports GPS coordinates then they can be sent to Home Assistant by specifying an attributes topic (that is, `json_attributes_topic`) in the configuration payload:
- Attributes topic: `homeassistant/device_tracker/a4567d663eaf/attributes`
- Example attributes payload:
@@ -265,7 +265,6 @@ mosquitto_pub -h 127.0.0.1 -t homeassistant/device_tracker/a4567d663eaf/attribut
The following example shows how to configure the same device tracker through configuration.yaml
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -277,4 +276,3 @@ mqtt:
payload_not_home: "not_home"
```
-{% endraw %}
diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown
index f088655cd411..51ba267e8f8f 100644
--- a/source/_integrations/device_trigger.mqtt.markdown
+++ b/source/_integrations/device_trigger.mqtt.markdown
@@ -10,7 +10,7 @@ ha_domain: mqtt
The **MQTT Device trigger** {% term integration %} uses an MQTT message payload to generate device trigger events.
-An MQTT device trigger is a better option than a [binary sensor](/integrations/binary_sensor.mqtt/) for buttons, remote controls etc.
+An MQTT device trigger is a better option than a [binary sensor](/integrations/binary_sensor.mqtt/) for buttons and remote controls.
## Configuration
@@ -40,11 +40,11 @@ topic:
required: true
type: string
type:
- description: "The type of the trigger, e.g. `button_short_press`. Entries supported by the frontend: `button_short_press`, `button_short_release`, `button_long_press`, `button_long_release`, `button_double_press`, `button_triple_press`, `button_quadruple_press`, `button_quintuple_press`. If set to an unsupported value, will render as `subtype type`, e.g. `button_1 spammed` with `type` set to `spammed` and `subtype` set to `button_1`"
+ description: "The type of the trigger, for example, `button_short_press`. Entries supported by the frontend: `button_short_press`, `button_short_release`, `button_long_press`, `button_long_release`, `button_double_press`, `button_triple_press`, `button_quadruple_press`, `button_quintuple_press`. If set to an unsupported value, will render as `subtype type`, for example, `button_1 spammed` with `type` set to `spammed` and `subtype` set to `button_1`"
required: true
type: string
subtype:
- description: "The subtype of the trigger, e.g. `button_1`. Entries supported by the frontend: `turn_on`, `turn_off`, `button_1`, `button_2`, `button_3`, `button_4`, `button_5`, `button_6`. If set to an unsupported value, will render as `subtype type`, e.g. `left_button pressed` with `type` set to `button_short_press` and `subtype` set to `left_button`"
+ description: "The subtype of the trigger, for example, `button_1`. Entries supported by the frontend: `turn_on`, `turn_off`, `button_1`, `button_2`, `button_3`, `button_4`, `button_5`, `button_6`. If set to an unsupported value, will render as `subtype type`, for example, `left_button pressed` with `type` set to `button_short_press` and `subtype` set to `left_button`"
required: true
type: string
device:
@@ -97,7 +97,7 @@ device:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value."
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown
index 181117d1760e..54cbf95bc2d5 100755
--- a/source/_integrations/devolo_home_network.markdown
+++ b/source/_integrations/devolo_home_network.markdown
@@ -139,7 +139,6 @@ The devolo Gigabridge is the only device that comes with a default password. How
PLC networks are sometimes flaky. To restore a network's state, it's sometimes a good idea to reboot the PLC device attached to the router if the number of PLC devices is lower than expected. If you apply this automation, keep in mind that devices might be expected on standby. In this example, the expected number of devices is 3.
-{% raw %}
```yaml
alias: "PLC Feeder Restart"
@@ -159,13 +158,11 @@ actions:
entity_id: button.devolo_001_restart_device # Replace with your device's button
```
-{% endraw %}
### Notify on data rate drop
Noise on the electric wire can significant disturb PLC data rates. A notification close to a drop can help identify the action that lead to the drop. The following example takes 25% as threshold.
-{% raw %}
```yaml
alias: "PLC data rate"
@@ -190,13 +187,11 @@ actions:
title: PLC data rate dropped
```
-{% endraw %}
### Enable guest wifi on time basis
You might want to expose your guest wifi only during the day but turn it off at night.
-{% raw %}
```yaml
alias: "Toggle guest Wi-Fi"
@@ -212,7 +207,6 @@ actions:
entity_id: switch.devolo_001_enable_guest_wifi # Replace with your device's switch
```
-{% endraw %}
## Removing the integration
diff --git a/source/_integrations/dialogflow.markdown b/source/_integrations/dialogflow.markdown
index 0f707364be81..ea8bae0a7a7d 100644
--- a/source/_integrations/dialogflow.markdown
+++ b/source/_integrations/dialogflow.markdown
@@ -48,11 +48,11 @@ To get the webhook URL, go to the integrations page in the configuration screen
- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196)) and time zone.
- Click "Save".
- Now go to "Fulfillment" (in the left menu).
-- Enable Webhook and set your Dialogflow webhook URL as the endpoint, e.g., `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417`
+- Enable Webhook and set your Dialogflow webhook URL as the endpoint, for example, `https://myhome.duckdns.org/api/webhook/800b4cb4d27d078a8871656a90854a292651b20635685f8ea23ddb7a09e8b417`
- Click "Save".
- Create a new intent.
-- Below "User says" type one phrase that you, the user, will say to Dialogflow, e.g., `What is the temperature at home?`.
-- In "Action" enter an action name. This should match the name of an IntentScript within your Home Assistant configuration, e.g., in the example below "Temperature".
+- Below "User says" type one phrase that you, the user, will say to Dialogflow, for example, `What is the temperature at home?`.
+- In "Action" enter an action name. This should match the name of an IntentScript within your Home Assistant configuration. In the example below, it is `Temperature`.
- In "Response" enter "Cannot connect to Home Assistant or it is taking to long" (fall back response).
- At the bottom of the page, expand "Fulfillment" and check "Use webhook".
- Click "Save".
@@ -73,7 +73,6 @@ When activated, the [`alexa` integration](/integrations/alexa/) will have Home A
Download [this zip](https://github.com/home-assistant/home-assistant.io/blob/current/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** > **Export and Import**) for examples intents to use with this configuration:
-{% raw %}
```yaml
# Example configuration.yaml entry
@@ -122,4 +121,3 @@ intent_script:
entity_id: "switch.light_{{ Room | striptags | replace(' ', '_') }}"
```
-{% endraw %}
diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown
index 9aaf701d419e..3f6db6a95bd6 100644
--- a/source/_integrations/discord.markdown
+++ b/source/_integrations/discord.markdown
@@ -185,4 +185,4 @@ For more information about creating and authorizing bots, visit the [OAuth2 info
To use notifications effectively, please see the [getting started with automation page](/getting-started/automation/).
-Images are uploaded to Discord when a message is sent. As such, a local path to the image is required (i.e., `/config/www/garage.jpg` as opposed to `/local/garage.jpg`), and updating an image after sending it in a message will not update the message in Discord.
+Images are uploaded to Discord when a message is sent. As such, a local path to the image is required (that is, `/config/www/garage.jpg` as opposed to `/local/garage.jpg`), and updating an image after sending it in a message will not update the message in Discord.
diff --git a/source/_integrations/discovergy.markdown b/source/_integrations/discovergy.markdown
index 39f2fbe25a46..0e5e1ae5fbad 100644
--- a/source/_integrations/discovergy.markdown
+++ b/source/_integrations/discovergy.markdown
@@ -88,7 +88,6 @@ You can use the current power sensor (`sensor.electricity_example_street_11_tota
Example: Send a notification when power consumption exceeds 3000 W for 5 minutes.
-{% raw %}
```yaml
automation:
@@ -105,11 +104,9 @@ automation:
message: "High power consumption detected: {{ states('sensor.electricity_example_street_11_total_power') }} W"
```
-{% endraw %}
Example: Turn off high-power devices when photovoltaic production is insufficient (for bidirectional meters).
-{% raw %}
```yaml
automation:
@@ -127,7 +124,6 @@ automation:
entity_id: switch.high_power_device
```
-{% endraw %}
## Troubleshooting
diff --git a/source/_integrations/dlna_dmr.markdown b/source/_integrations/dlna_dmr.markdown
index a85f8fa0de47..8ffa6e8bb105 100644
--- a/source/_integrations/dlna_dmr.markdown
+++ b/source/_integrations/dlna_dmr.markdown
@@ -29,9 +29,9 @@ Options for DLNA DMR devices can be set by going to **Settings** > **Devices & s
Event listener port:
description: "Local port to listen on for events sent by the DLNA device. If this is not set, a random port will be allocated. Use this if you need a specific incoming port for firewall or NAT reasons."
Event listener callback URL:
- description: "Local URL destination for events sent by the DLNA device. It should be of the form `http://{host}:{port}/notify`, where keywords `{host}` and `{port}` will be automatically filled-in but can be set explicitly here, e.g. `http://192.88.99.1:5555/notify`. Use this if the local IP address or port seen by Home Assistant is not what the device should connect to, because of Network Address Translation (NAT)."
+ description: "Local URL destination for events sent by the DLNA device. It should be of the form `http://{host}:{port}/notify`, where the keywords `{host}` and `{port}` are filled in automatically but can be set explicitly here, for example, `http://192.88.99.1:5555/notify`. Use this if the local IP address or port seen by Home Assistant is not what the device should connect to, because of Network Address Translation (NAT)."
Poll for device availability:
- description: "Periodically try to connect to the DLNA device, even if it is unavailable. Enable this if SSDP advertisements sent by the device are not received by Home Assistant, e.g. when IP multicast is broken on your network."
+ description: "Periodically try to connect to the DLNA device, even if it is unavailable. Enable this if SSDP advertisements sent by the device are not received by Home Assistant, for example, when IP multicast is broken on your network."
Show incompatible media when browsing:
description: "When browsing media, show all media files and links, even if the device reports that it is not compatible with the media type."
{% endconfiguration_basic %}
@@ -54,7 +54,7 @@ DLNA devices can support a range of features. Depending on the device itself, th
## Playing media
-Most DLNA DMR devices can play media from local HTTP servers. For best results, use HTTP instead of HTTPS, and refer to the server using an IP address instead of a hostname, e.g. `http://192.168.1.1:8080/song.mp3`.
+Most DLNA DMR devices can play media from local HTTP servers. For best results, use HTTP instead of HTTPS, and refer to the server using an IP address instead of a hostname, for example, `http://192.168.1.1:8080/song.mp3`.
### Media sources
diff --git a/source/_integrations/dlna_dms.markdown b/source/_integrations/dlna_dms.markdown
index 64dbdbe89d52..e7882e947d10 100644
--- a/source/_integrations/dlna_dms.markdown
+++ b/source/_integrations/dlna_dms.markdown
@@ -25,7 +25,7 @@ The name/title of the DMS device is the same as the title of the config entry. I
Media source URIs for DLNA DMS look like `media-source://dlna_dms//`.
-Here `` is the slugified name of the DMS device. For example, "DLNA Server" becomes "dlna_server". If multiple DMS devices have the same name, an underscore and a unique number will be appended to the end of some of them, e.g., "server", "server_1", "server_2".
+Here `` is the slugified name of the DMS device. For example, "DLNA Server" becomes "dlna_server". If multiple DMS devices have the same name, an underscore and a unique number will be appended to the end of some of them, for example, "server", "server_1", or "server_2".
The `` can have one of three forms:
diff --git a/source/_integrations/doods.markdown b/source/_integrations/doods.markdown
index 97497abb4a32..fe5d2535b28c 100644
--- a/source/_integrations/doods.markdown
+++ b/source/_integrations/doods.markdown
@@ -103,7 +103,7 @@ area:
type: boolean
default: true
file_out:
- description: A [template](/docs/configuration/templating/#processing-incoming-data) for the integration to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera.
+ description: A [template](/docs/templating/where-to-use/#processing-incoming-data) for the integration to save processed images including bounding boxes. `camera_entity` is available as the `entity_id` string of the triggered source camera.
required: false
type: list
labels:
@@ -158,7 +158,6 @@ Both detectors `default` and `tensorflow` use the labels in [this file](https://
## Sample configuration
-{% raw %}
```yaml
# Example advanced configuration.yaml entry
@@ -197,7 +196,6 @@ image_processing:
- truck
```
-{% endraw %}
## Optimizing resources
diff --git a/source/_integrations/dovado.markdown b/source/_integrations/dovado.markdown
index 5a2bb9fe56e5..a2b5c7c0e89f 100644
--- a/source/_integrations/dovado.markdown
+++ b/source/_integrations/dovado.markdown
@@ -108,7 +108,7 @@ sensors:
type: list
keys:
network:
- description: Creates a sensor for Network State (3G, 4G, etc.).
+ description: Creates a sensor for Network State, such as 3G or 4G.
signal:
description: Creates a sensor for the signal strength.
download:
diff --git a/source/_integrations/dublin_bus_transport.markdown b/source/_integrations/dublin_bus_transport.markdown
index 0bb1995af301..e06c49eefbf1 100644
--- a/source/_integrations/dublin_bus_transport.markdown
+++ b/source/_integrations/dublin_bus_transport.markdown
@@ -37,7 +37,7 @@ stopid:
required: true
type: string
route:
- description: Only show a single bus route at the stop. This is the same as the bus number, e.g., `83`.
+ description: Only show a single bus route at the stop. This is the same as the bus number, for example, `83`.
required: false
type: string
name:
diff --git a/source/_integrations/duckdns.markdown b/source/_integrations/duckdns.markdown
index 5d92fd2dff93..341fa79372cd 100644
--- a/source/_integrations/duckdns.markdown
+++ b/source/_integrations/duckdns.markdown
@@ -32,7 +32,7 @@ If you are running the Duck DNS app for Home Assistant (formerly known as Duck D
## Prerequisites
-To set up the integration, you need your Duck DNS subdomain and token. You can find these on the [Duck DNS homepage](https://www.duckdns.org) after logging in. If you don’t have an account, sign up using your preferred method (e.g., GitHub, Google), then create a new subdomain.
+To set up the integration, you need your Duck DNS subdomain and token. You can find these on the [Duck DNS homepage](https://www.duckdns.org) after signing in. If you don’t have an account, sign up using your preferred method (for example, GitHub or Google), then create a new subdomain.
{% include integrations/config_flow.md %}
@@ -58,7 +58,6 @@ Set the TXT record of your Duck DNS subdomain.
{% details "Example YAML configuration" %}
-{% raw %}
```yaml
action: duckdns.set_txt
@@ -67,7 +66,6 @@ data:
txt: LoqXcYV8...jxAjEuX0.9jg46WB3...fm21mqTI # Replace with a valid ACME DNS-01 challenge
```
-{% endraw %}
{% enddetails %}
diff --git a/source/_integrations/dwd_weather_warnings.markdown b/source/_integrations/dwd_weather_warnings.markdown
index fd7d67c3bac5..d85df96e131f 100644
--- a/source/_integrations/dwd_weather_warnings.markdown
+++ b/source/_integrations/dwd_weather_warnings.markdown
@@ -54,7 +54,6 @@ In the attribute name `x` is the counter of the warning starting from `1`.
The following example reads out the headline and its description of the DWD warnings above 2 to your local media player.
-{% raw %}
```yaml
alias: DWD-Warning at level 3
description: DWD-Warnings at level 3
@@ -100,6 +99,5 @@ actions:
enabled: true
mode: single
```
-{% endraw %}
Substitute ``, your `` and `` with your entity-names.
diff --git a/source/_integrations/dynalite.markdown b/source/_integrations/dynalite.markdown
index 2283b93dd475..11bed944b971 100755
--- a/source/_integrations/dynalite.markdown
+++ b/source/_integrations/dynalite.markdown
@@ -50,7 +50,7 @@ but in the likely case that your system was installed by an integrator, you will
This is where the `autodiscover` option comes handy. If it is on, the component will track the Dynet network and every time a device is used, it will be added to Home Assistant. It will initially show as "Area 123 Channel 7", but you can then add it to your {% term "`configuration.yaml`" %} with the correct configuration.
-For example, you would go to your kitchen light and turn it on. Now you log into Home Assistant and see what the channel was. If there was more than one discovered (e.g., someone turned off the living room lights), you can try one, turn it on and off in Home Assistant and see which light it affects.
+For example, you would go to your kitchen light and turn it on. Now you sign in to Home Assistant and see what the channel was. If there was more than one discovered (for example, someone turned off the living room lights), you can try one, turn it on and off in Home Assistant and see which light it affects.
The initial process can be a bit time consuming and tedious, but it only has to be done once. Once you are done configuring, it is better to set `autodiscover` to `false`, since there are many "fake" channels and areas that the system uses for internal communication and you do not want to have visible.
diff --git a/source/_integrations/easyenergy.markdown b/source/_integrations/easyenergy.markdown
index b6171ffb3560..69522a52752f 100644
--- a/source/_integrations/easyenergy.markdown
+++ b/source/_integrations/easyenergy.markdown
@@ -190,8 +190,6 @@ Create template sensors to display the prices in a chart or to calculate the all
To use the response data from the actions, you can create a template sensor that updates every hour.
-{% raw %}
-
```yaml
template:
- triggers:
@@ -211,14 +209,10 @@ template:
prices: "{{ prices }}"
```
-{% endraw %}
-
### All-in price sensor
To calculate the all-in hour price, you can create a template sensor that calculates the price based on the current price, energy tax, and purchase costs.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -234,8 +228,6 @@ template:
{{ (current_price + energy_tax + purch_costs) | round(2) }}
```
-{% endraw %}
-
## Removing the integration
This integration follows standard integration removal steps. If you also use the template sensors, you need to remove them manually.
diff --git a/source/_integrations/ecovacs.markdown b/source/_integrations/ecovacs.markdown
index 8590fdf1b906..b39d65b7bf69 100644
--- a/source/_integrations/ecovacs.markdown
+++ b/source/_integrations/ecovacs.markdown
@@ -105,8 +105,6 @@ The remaining lifespan of components on your Deebot vacuum will be reported as a
Here's an example of how to extract the filter's lifespan to its own sensor using a [template sensor](/integrations/template):
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -116,12 +114,8 @@ template:
state: "{{ state_attr('vacuum.my_vacuum_id', 'component_filter') }}"
```
-{% endraw %}
-
Or, if you want a simple binary sensor that becomes `On` when the filter needs to be replaced (5% or less):
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -131,8 +125,6 @@ template:
state: "{{ state_attr('vacuum.my_vacuum_id', 'component_filter') <= 5 }}"
```
-{% endraw %}
-
### Handling errors
The vacuum entity has an `error` attribute that will contain the _most recent_ error message that came from the vacuum. There is not a comprehensive list of all error messages, so you may need to do some experimentation to determine the error messages that your vacuum can send.
diff --git a/source/_integrations/eheimdigital.markdown b/source/_integrations/eheimdigital.markdown
index e4a86a0e812a..6583cd34f6b1 100644
--- a/source/_integrations/eheimdigital.markdown
+++ b/source/_integrations/eheimdigital.markdown
@@ -200,8 +200,6 @@ You can set up an automation to notify you when the filter has an error. This ex
{% details "Example automation to notify about filter errors" %}
-{% raw %}
-
```yaml
alias: Notify about filter error
description: "This automation sends a notification when the filter has an error."
@@ -221,8 +219,6 @@ actions:
title: The filter has a problem!
```
-{% endraw %}
-
{% enddetails %}
## Known limitations
diff --git a/source/_integrations/electric_kiwi.markdown b/source/_integrations/electric_kiwi.markdown
index 7af64c1c35d0..88153a4951e6 100644
--- a/source/_integrations/electric_kiwi.markdown
+++ b/source/_integrations/electric_kiwi.markdown
@@ -39,8 +39,6 @@ This integration can be used as part of an automation, for example, to turn on/o
{% details "Run the heat pump during the hour of free power" %}
-{% raw %}
-
```yaml
alias: "Turn on expensive heat pump"
description: "Turn on the heat pump when the hour of free power starts"
@@ -66,8 +64,6 @@ actions:
entity_id: climate.heat_pump
data: {}
```
-
-{% endraw %}
{% enddetails %}
## Removing the integration
diff --git a/source/_integrations/emulated_kasa.markdown b/source/_integrations/emulated_kasa.markdown
index 20f689665a2e..664d00042900 100644
--- a/source/_integrations/emulated_kasa.markdown
+++ b/source/_integrations/emulated_kasa.markdown
@@ -62,8 +62,6 @@ entities:
A full configuration sample looks like the one below.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
emulated_kasa:
@@ -91,5 +89,3 @@ emulated_kasa:
name: UPS Power
power: "{{ float(states('sensor.ups_kw')) * 1000 }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/energyzero.markdown b/source/_integrations/energyzero.markdown
index 71c5bd661958..278b208bc539 100644
--- a/source/_integrations/energyzero.markdown
+++ b/source/_integrations/energyzero.markdown
@@ -155,8 +155,6 @@ Create template sensors to display the prices in a chart or to calculate the all
To use the response data from the actions, you can create a template sensor that updates every hour.
-{% raw %}
-
```yaml
template:
- trigger:
@@ -176,14 +174,10 @@ template:
prices: '{{ prices }}'
```
-{% endraw %}
-
### All-in price sensor
To calculate the all-in hour price, you can create a template sensor that calculates the price based on the current price, energy tax, and purchase costs.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -199,8 +193,6 @@ template:
{{ (current_price + energy_tax + purch_costs) | round(2) }}
```
-{% endraw %}
-
## Removing the integration
This integration follows standard integration removal steps. If you also use the template sensors, you need to remove them manually.
diff --git a/source/_integrations/enocean.markdown b/source/_integrations/enocean.markdown
index 49b81f406081..058918840981 100644
--- a/source/_integrations/enocean.markdown
+++ b/source/_integrations/enocean.markdown
@@ -103,8 +103,6 @@ EnOcean binary sensors have no state, they only generate 'button_pressed' events
Sample automation to switch lights on and off:
-{% raw %}
-
```yaml
# Example automation to turn lights on/off on button release
automation:
@@ -121,8 +119,6 @@ automation:
entity_id: "{% if trigger.event.data.which == 1 %} light.hall_left {% else %} light.hall_right {%endif %}"
```
-{% endraw %}
-
You can find the `event_data` `id` by going to {% my developer_events title="**Settings** > **Developer tools** > **Events**" %} and listening to "button_pressed" events. Then hit a button on the device and you should see an event.
## Light
diff --git a/source/_integrations/enphase_envoy.markdown b/source/_integrations/enphase_envoy.markdown
index 69019887087c..46a7ede2e832 100644
--- a/source/_integrations/enphase_envoy.markdown
+++ b/source/_integrations/enphase_envoy.markdown
@@ -475,14 +475,10 @@ Every 4 hours, the actual firmware version in the Envoy is compared to the known
The firmware version is not available as an entity, but rather as an attribute of the envoy. To use the firmware in automation, scripts or templates, use below example with any envoy entity.
-{% raw %}
-
```yaml
{{device_attr(device_id('sensor.envoy_SN_current_power_production'),'sw_version')}}
```
-{% endraw %}
-
### Firmware update alert
To receive a notification when the firmware is updated, use this [Enphase Envoy Firmware update notification](https://community.home-assistant.io/t/enphase-envoy-firmware-update-notification/983651) automation [blueprint](https://www.home-assistant.io/docs/blueprint/) from the community blueprints exchange.
diff --git a/source/_integrations/environment_canada.markdown b/source/_integrations/environment_canada.markdown
index 2e139eee0e12..6557eef1007a 100644
--- a/source/_integrations/environment_canada.markdown
+++ b/source/_integrations/environment_canada.markdown
@@ -117,8 +117,6 @@ Replace `NAME` with the weather entity used in your configuration.
A sensor that takes into account the humidex or wind chill for what the temperature feels like.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -135,14 +133,10 @@ template:
{% endif %}
```
-{% endraw %}
-
### Additional Forecast Data
The configuration snippet below adds a template sensor containing the current forecast information as attributes and the text summary of the forecast for the current day.
-{% raw %}
-
```yaml
- trigger:
- platform: time_pattern
@@ -167,8 +161,6 @@ The configuration snippet below adds a template sensor containing the current fo
temperature_unit: "{{ state_attr('weather.NAME', 'temperature_unit') }}"
```
-{% endraw %}
-
## Actions
### Action: Get forecasts
diff --git a/source/_integrations/essent.markdown b/source/_integrations/essent.markdown
index 145226095254..21606784e3bb 100644
--- a/source/_integrations/essent.markdown
+++ b/source/_integrations/essent.markdown
@@ -68,8 +68,6 @@ Sensors update on the hour using cached API data, so they advance to the current
Charge your electric vehicle when electricity prices are lowest:
-{% raw %}
-
```yaml
alias: Charge EV at lowest price
triggers:
@@ -83,8 +81,6 @@ actions:
entity_id: switch.ev_charger
```
-{% endraw %}
-
## Troubleshooting
### Sensors show "Unavailable" or "Unknown"
diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown
index 1af569f5d546..e03e64cda7be 100644
--- a/source/_integrations/event.mqtt.markdown
+++ b/source/_integrations/event.mqtt.markdown
@@ -47,7 +47,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -56,7 +56,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -151,7 +151,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -191,7 +191,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value and render it to a valid JSON event payload. If the template throws an error, the current state will be used instead."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value and render it to a valid JSON event payload. If the template throws an error, the current state will be used instead."
required: false
type: template
{% endconfiguration %}
@@ -245,8 +245,6 @@ the device `Button1` with event type `single` to the required format.
An extra attribute `button` will be set to `Button1` and be added to the entity,
but only if the `Action` property is set. Empty dictionaries will be ignored.
-{% raw %}
-
```yaml
mqtt:
- event:
@@ -264,5 +262,3 @@ mqtt:
{% endif %}
{% endfor %} }
```
-
-{% endraw %}
diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown
index 4cd9d90e74a7..7a2d811de97d 100644
--- a/source/_integrations/fan.mqtt.markdown
+++ b/source/_integrations/fan.mqtt.markdown
@@ -51,7 +51,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -60,7 +60,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -68,7 +68,7 @@ availability_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -159,7 +159,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -177,7 +177,7 @@ optimistic:
type: boolean
default: "`true` if no state topic defined, else `false`."
direction_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `direction_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `direction_command_topic`.
required: false
type: template
direction_command_topic:
@@ -189,11 +189,11 @@ direction_state_topic:
required: false
type: string
direction_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value from the direction."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value from the direction."
required: false
type: template
oscillation_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `oscillation_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `oscillation_command_topic`.
required: false
type: template
oscillation_command_topic:
@@ -205,7 +205,7 @@ oscillation_state_topic:
required: false
type: string
oscillation_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value from the oscillation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value from the oscillation."
required: false
type: template
payload_available:
@@ -249,7 +249,7 @@ payload_reset_preset_mode:
type: string
default: '"None"'
percentage_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `percentage_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `percentage_command_topic`.
required: false
type: template
percentage_command_topic:
@@ -261,7 +261,7 @@ percentage_state_topic:
required: false
type: string
percentage_value_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the `percentage` value from the payload received on `percentage_state_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the `percentage` value from the payload received on `percentage_state_topic`.
required: false
type: template
platform:
@@ -269,7 +269,7 @@ platform:
required: true
type: string
preset_mode_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `preset_mode_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `preset_mode_command_topic`.
required: false
type: template
preset_mode_command_topic:
@@ -281,7 +281,7 @@ preset_mode_state_topic:
required: false
type: string
preset_mode_value_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
required: false
type: template
preset_modes:
@@ -314,7 +314,7 @@ state_topic:
required: false
type: string
state_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value from the state."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value from the state."
required: false
type: template
unique_id:
@@ -372,8 +372,6 @@ mqtt:
This example demonstrates how to use command templates with JSON output.
-{% raw %}
-
```yaml
# Example configuration.yaml with command templates
mqtt:
@@ -397,12 +395,8 @@ mqtt:
- "breeze"
```
-{% endraw %}
-
This example shows how to configure a fan that doesn't use `forward` and `backward` as directions.
-{% raw %}
-
```yaml
# Example configuration.yaml with direction templates
mqtt:
@@ -411,5 +405,3 @@ mqtt:
direction_command_template: "{{ iif(value == 'forward', 'fwd', 'rev') }}"
direction_value_template: "{{ iif(value == 'fwd', 'forward', 'reverse') }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/feedreader.markdown b/source/_integrations/feedreader.markdown
index 68822e09cfd3..d9b8b2d28e2c 100644
--- a/source/_integrations/feedreader.markdown
+++ b/source/_integrations/feedreader.markdown
@@ -52,8 +52,6 @@ automation:
entity_id: script.my_action
```
-{% raw %}
-
```yaml
automation:
- alias: "Send notification of RSS feed title when updated"
@@ -70,8 +68,6 @@ automation:
notification_id: "{{ trigger.event.data.title }}"
```
-{% endraw %}
-
The `trigger.event.data` variable contains at least the following keys, there might be more depending on the data the configured feed is providing.
| Key | Description |
diff --git a/source/_integrations/filesize.markdown b/source/_integrations/filesize.markdown
index 367d6bbc0222..31046954dcab 100644
--- a/source/_integrations/filesize.markdown
+++ b/source/_integrations/filesize.markdown
@@ -23,8 +23,6 @@ File paths must also be added to [allowlist_external_dirs](/integrations/homeass
Example `allowlist_external_dirs` configuration to monitor a file in your configuration folder.
-{% raw %}
-
```yaml
homeassistant:
@@ -33,8 +31,6 @@ homeassistant:
```
-{% endraw %}
-
File paths should be absolute paths. For example: `/config/home-assistant_v2.db` to monitor the size of the default database.
{% endimportant %}
diff --git a/source/_integrations/fireservicerota.markdown b/source/_integrations/fireservicerota.markdown
index 7cdd5cf46043..9e5aa2b96073 100644
--- a/source/_integrations/fireservicerota.markdown
+++ b/source/_integrations/fireservicerota.markdown
@@ -112,8 +112,6 @@ These are documented below.
### Example automation
-{% raw %}
-
```yaml
automation:
- alias: "Switch on a light when incident is received"
@@ -204,8 +202,6 @@ views:
type: horizontal-stack
```
-{% endraw %}
-
### Screenshot
diff --git a/source/_integrations/flic.markdown b/source/_integrations/flic.markdown
index c793fbddb998..a6a7e51b1a7c 100644
--- a/source/_integrations/flic.markdown
+++ b/source/_integrations/flic.markdown
@@ -100,8 +100,6 @@ Event data:
To help detect and debug flic button clicks, you can use this automation that send a notification on very click type of every button. This example uses the [HTML5 push notification platform](/integrations/html5). Visit the [notification integration page](/integrations/notify/) for more information on setting up notifications.
-{% raw %}
-
```yaml
automation:
- alias: "FLIC Html5 notify on every click"
@@ -115,8 +113,6 @@ automation:
message: "flic {{ trigger.event.data.button_name }} was {{ trigger.event.data.click_type }} clicked"
```
-{% endraw %}
-
### Ignoring click types
For some purposes it might make sense to exclude a specific click type from triggering click events. For example, when ignoring double clicks, pressing the button twice fast results in two `single` instead of a `double` click event. This is very useful for applications where you want to click fast.
diff --git a/source/_integrations/flume.markdown b/source/_integrations/flume.markdown
index f0d9cddb98b4..7cad26a5d652 100644
--- a/source/_integrations/flume.markdown
+++ b/source/_integrations/flume.markdown
@@ -45,8 +45,6 @@ To clear the notifications, you will need to use your Flume app or go to: [https
Example of an automation that sends a Home Assistant notification of the most recent usage alert:
-{% raw %}
-
```yaml
alias: "Notify: flume"
triggers:
@@ -77,14 +75,10 @@ actions:
{{ usage_alert.title }}
```
-{% endraw %}
-
## Configuration for binary sensor
The following YAML creates a binary sensor. This requires the default sensor to be configured successfully.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -93,5 +87,3 @@ template:
state: >-
{{ states('sensor.flume_sensor') != "0" }}
```
-
-{% endraw %}
diff --git a/source/_integrations/folder_watcher.markdown b/source/_integrations/folder_watcher.markdown
index 7819d53e28a5..54ea43faa055 100644
--- a/source/_integrations/folder_watcher.markdown
+++ b/source/_integrations/folder_watcher.markdown
@@ -47,8 +47,6 @@ When the `event_type` is `moved`, the file details are for the source file and d
Automations can be triggered on file system events data using a template. The following automation will send a notification with the name and folder of new files added to that folder:
-{% raw %}
-
```yaml
#Send notification for new image (including the image itself)
automation:
@@ -64,5 +62,3 @@ automation:
data:
file: "{{ trigger.to_state.attributes.file }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/fritzbox_callmonitor.markdown b/source/_integrations/fritzbox_callmonitor.markdown
index e1057b26e9f8..f4a87e84e80a 100644
--- a/source/_integrations/fritzbox_callmonitor.markdown
+++ b/source/_integrations/fritzbox_callmonitor.markdown
@@ -44,8 +44,6 @@ If you want Home Assistant to resolve numbers to names based on your FRITZ!Box p
This example shows how to send notifications whenever the sensor's state changes. You will get notified both when you receive a call and also when a call is placed.
-{% raw %}
-
```yaml
# Example configuration.yaml entry.
automation:
@@ -68,5 +66,3 @@ automation:
Talking to {{ state_attr('sensor.phone', 'with_name') }} ({{ state_attr('sensor.phone', 'with') }})
{% endif %}
```
-
-{% endraw %}
diff --git a/source/_integrations/garadget.markdown b/source/_integrations/garadget.markdown
index 75a0daacbaaf..8a92b31d8bb4 100644
--- a/source/_integrations/garadget.markdown
+++ b/source/_integrations/garadget.markdown
@@ -75,8 +75,6 @@ covers:
-{% raw %}
-
```yaml
# Related configuration.yaml entry
cover:
@@ -113,8 +111,6 @@ customize:
icon: mdi:wifi
```
-{% endraw %}
-
Some of the Garadget sensors can create a lot of clutter in the **Activity** section. Use this section of code in your{% term "`configuration.yaml`" %} to exclude those entries.
```yaml
diff --git a/source/_integrations/generic.markdown b/source/_integrations/generic.markdown
index f44e9f926dca..33bf645c96a6 100644
--- a/source/_integrations/generic.markdown
+++ b/source/_integrations/generic.markdown
@@ -23,13 +23,13 @@ Home Assistant will serve the images via its server, making it possible to view
You must enter a URL in at least one of the fields **Still Image URL** or **Stream Source URL**, the others are optional.
-[Templates](/docs/configuration/templating/) are allowed in the URL fields, which can be used to select different images or parameterize the URL depending on the status of sensors. Template validity and network access are checked during the configuration steps.
+[Templates](/docs/templating/) are allowed in the URL fields, which can be used to select different images or parameterize the URL depending on the status of sensors. Template validity and network access are checked during the configuration steps.
{% configuration_basic %}
Still Image URL:
- description: "The URL your camera serves the image on, e.g., `http://192.168.1.21:2112/`. Can be a [template](/docs/configuration/templating/). Usernames and passwords are allowed in the URL, but if none are provided, the `Username` and `Password` settings will be used during authentication. At least one of still_image_url or stream_source must be provided."
+ description: "The URL your camera serves the image on, e.g., `http://192.168.1.21:2112/`. Can be a [template](/docs/templating/). Usernames and passwords are allowed in the URL, but if none are provided, the `Username` and `Password` settings will be used during authentication. At least one of still_image_url or stream_source must be provided."
Stream Source:
- description: "The URL your camera serves the live stream on, e.g., `rtsp://192.168.1.21:554/`. Can be a [template](/docs/configuration/templating/). Usernames and passwords are allowed in the URL, but if none are provided, the `Username` and `Password` settings will be used during authentication. At least one of still_image_url or stream_source must be provided. Note that a stream_source without a still_image_url can only be used if the [stream integration](/integrations/stream/) is configured."
+ description: "The URL your camera serves the live stream on, e.g., `rtsp://192.168.1.21:554/`. Can be a [template](/docs/templating/). Usernames and passwords are allowed in the URL, but if none are provided, the `Username` and `Password` settings will be used during authentication. At least one of still_image_url or stream_source must be provided. Note that a stream_source without a still_image_url can only be used if the [stream integration](/integrations/stream/) is configured."
Username:
description: The username for accessing your camera. Note that this applies to both still_image_url and stream_source.
Password:
diff --git a/source/_integrations/geniushub.markdown b/source/_integrations/geniushub.markdown
index e277a888ca02..2ed8daa51acd 100644
--- a/source/_integrations/geniushub.markdown
+++ b/source/_integrations/geniushub.markdown
@@ -98,8 +98,6 @@ There are three `Sensor` entities that will indicate the number of **Errors**, *
Each such entity has a state attribute that will contain a list of any such issues which can be used in automations, etc. For example:
-{% raw %}
-
```yaml
- alias: "GeniusHub Error Alerts"
triggers:
@@ -115,12 +113,8 @@ Each such entity has a state attribute that will contain a list of any such issu
{{ state_attr('sensor.geniushub_errors', 'error_list') }}
```
-{% endraw %}
-
This alert may be useful to see if the CH is being turned on whilst you're on a holiday!
-{% raw %}
-
```yaml
- alias: "GeniusHub CH State Change Alert"
triggers:
@@ -135,8 +129,6 @@ This alert may be useful to see if the CH is being turned on whilst you're on a
from {{ trigger.from_state.state }} to {{ trigger.to_state.state }}.
```
-{% endraw %}
-
## State attributes
Many zone/device properties are available via the corresponding entity's state attributes. For example, in the case of **Radiator**-derived `Climate` entities (note 'status'):
@@ -171,20 +163,12 @@ Many zone/device properties are available via the corresponding entity's state a
This data can be accessed in automations, etc. via a value template. For example:
-{% raw %}
-
```yaml
value_template: "{{ state_attr('water_heater.genius_zone_2', 'status').override.setpoint }}"
```
-{% endraw %}
-
In the specific case of **Radiator** zones with room sensors:
-{% raw %}
-
```yaml
value_template: "{{ state_attr('climate.genius_zone_12', 'status').occupied }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/geo_location.markdown b/source/_integrations/geo_location.markdown
index 105e8a2aed69..8ee491a05aea 100644
--- a/source/_integrations/geo_location.markdown
+++ b/source/_integrations/geo_location.markdown
@@ -37,8 +37,6 @@ Conditions can be used to further filter entities, for example by inspecting the
The following example automation creates a notification on the screen when a fire classified as 'Bush Fire' is reported within a predefined bush fire alert zone:
-{% raw %}
-
```yaml
geo_location:
- platform: nsw_rural_fire_service_feed
@@ -70,5 +68,3 @@ automation:
message: "{{ trigger.to_state.name }} - {{ trigger.to_state.attributes.status }}"
title: "Bush Fire Alert"
```
-
-{% endraw %}
diff --git a/source/_integrations/ghost.markdown b/source/_integrations/ghost.markdown
index 94da69c2c4c5..9ce4d8def5dc 100644
--- a/source/_integrations/ghost.markdown
+++ b/source/_integrations/ghost.markdown
@@ -94,7 +94,6 @@ The integration {% term polling polls %} your Ghost site every 5 minutes to upda
### Announce milestone member counts
-{% raw %}
```yaml
automation:
- alias: "Member milestone celebration"
@@ -110,7 +109,6 @@ automation:
title: "Milestone reached!"
message: "You now have {{ trigger.to_state.state }} members!"
```
-{% endraw %}
## Known limitations
diff --git a/source/_integrations/gios.markdown b/source/_integrations/gios.markdown
index 0245c759bd8f..f99030118292 100644
--- a/source/_integrations/gios.markdown
+++ b/source/_integrations/gios.markdown
@@ -68,8 +68,6 @@ The following examples show how to use the integration in Home Assistant automat
The following example sends a notification to your mobile device when the PM10 level exceeds 100 µg/m³.
-{% raw %}
-
```yaml
automation:
- alias: "Notify when PM10 level is too high"
@@ -87,8 +85,6 @@ automation:
Avoid going outside.
```
-{% endraw %}
-
## Known limitations
- The availability of sensors depends on the selected measurement station. Not all stations provide data for all pollutants or indices.
diff --git a/source/_integrations/github.markdown b/source/_integrations/github.markdown
index 946e06b22b41..98648687a600 100644
--- a/source/_integrations/github.markdown
+++ b/source/_integrations/github.markdown
@@ -126,8 +126,6 @@ you need to replace it with actions and entities that you have in your installat
This example uses the [Latest release](#latest-release) entity provided by this integration, and a [notify](/integrations/notify) action,
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -142,14 +140,10 @@ actions:
```
-{% endraw %}
-
### Notify new stars
This example uses the [Stars](#diagnostic-entities) diagnostic entity provided by this integration, and a [notify](/integrations/notify) action,
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -162,5 +156,3 @@ actions:
github/repository was starred again!
Total stars are now: {{ trigger.to_state.state }}
```
-
-{% endraw %}
diff --git a/source/_integrations/google_drive.markdown b/source/_integrations/google_drive.markdown
index 23343cc1a1c1..53e422d88d17 100644
--- a/source/_integrations/google_drive.markdown
+++ b/source/_integrations/google_drive.markdown
@@ -66,8 +66,6 @@ Send an alert when the drive usage is close to the storage limit and needs clean
Create an automation with the following code. Remember to replace `your_email_gmail_com` with the actual ID of your sensors (found in **Settings** > **Devices & Services** > **Entities**) and replace `notify.mobile_app_your_device` with your actual notifier.
-{% raw %}
-
```yaml
alias: Alert when Google Account is close to storage limit
description: Send notification to phone when drive needs clean up.
@@ -85,8 +83,6 @@ actions:
Google Account has used up {{ states('sensor.your_email_gmail_com_used_storage') }}GB of {{
states('sensor.your_email_gmail_com_total_available_storage') | float }}GB.
```
-
-{% endraw %}
{% enddetails %}
## Removing the integration
diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown
index e7dcfb1861d1..0760901a287e 100644
--- a/source/_integrations/google_generative_ai_conversation.markdown
+++ b/source/_integrations/google_generative_ai_conversation.markdown
@@ -53,7 +53,7 @@ Comparison of the plans is available [at this pricing page](https://ai.google.de
{% configuration_basic %}
Instructions:
- description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/templating/).
Control Home Assistant:
description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings:
@@ -97,8 +97,6 @@ But you can do the following workaround that exposes a script to voice assistant
9. Create a script (**Settings** > **Automations & scenes** > **Scripts** > **Create script**)
10. Select 3 dots > **Edit in YAML** and enter the following (edit the `conversation.google_generative_ai_2` to match the entity created from the 1st step):
-{% raw %}
-
```yaml
sequence:
- action: conversation.process
@@ -127,8 +125,6 @@ fields:
required: true
```
-{% endraw %}
-
11. Select **Save script**
12. Select 3 dots > **Settings** > **Voice assistants**
13. Check **Expose** **Assist**
@@ -157,8 +153,6 @@ This action populates [response data](/docs/scripts/perform-actions#use-template
| `prompt` | no | The prompt for generating the content. | Describe this image |
| `filenames` | yes | File names for attachments to include in the prompt. | /tmp/image.jpg |
-{% raw %}
-
```yaml
action: google_generative_ai_conversation.generate_content
data:
@@ -170,14 +164,10 @@ data:
response_variable: generated_content
```
-{% endraw %}
-
The response data field `text` will contain the generated content.
Another example with multiple images:
-{% raw %}
-
```yaml
action: google_generative_ai_conversation.generate_content
data:
@@ -192,8 +182,6 @@ data:
response_variable: generated_content
```
-{% endraw %}
-
### Speak
The `tts.speak` action is the modern way to use TTS. Add the `speak` action, select the Google Gemini TTS entity, select the media player entity or group to send the TTS audio to, and enter the message to speak.
@@ -204,8 +192,6 @@ For more options about `speak`, see the Speak section on the main [TTS](/integra
In YAML, your action will look like this:
-{% raw %}
-
```yaml
action: tts.speak
target:
@@ -217,8 +203,6 @@ data:
voice:
```
-{% endraw %}
-
You can configure the following options:
| Option attribute | Optional | Description | Example |
diff --git a/source/_integrations/google_sheets.markdown b/source/_integrations/google_sheets.markdown
index 2dc52a73a988..2c566c397aec 100644
--- a/source/_integrations/google_sheets.markdown
+++ b/source/_integrations/google_sheets.markdown
@@ -58,8 +58,6 @@ The `google_sheets.append_sheet` action allows you to add rows of data to the Sh
| `add_created_column` | yes | Add `created` column containing date-time to the data being appended. Defaults to True. | True |
| `data` | no | Data to be appended to the worksheet. This puts the data on new rows, one value per column. | {"hello": world, "cool": True, "count": 5} |
-{% raw %}
-
```yaml
# Example action
action: google_sheets.append_sheet
@@ -84,8 +82,6 @@ data:
Cost: "{{ states('input_number.car_2_charging_cost')|float(0) }}"
```
-{% endraw %}
-
{% enddetails %}
@@ -101,8 +97,6 @@ You can use the `google_sheets.get_sheet` action to retrieve rows of [data](/doc
| `worksheet` | yes | Name of the worksheet. Defaults to the first one in the document. | Sheet1 |
| `rows` | no | Maximum number of rows from the end of the worksheet to return. | 2 |
-{% raw %}
-
```yaml
# Example action
action: google_sheets.get_sheet
@@ -112,8 +106,6 @@ data:
rows: 2
```
-{% endraw %}
-
{% enddetails %}
diff --git a/source/_integrations/google_translate.markdown b/source/_integrations/google_translate.markdown
index 75e5ebe5577d..01dd2d9498a2 100644
--- a/source/_integrations/google_translate.markdown
+++ b/source/_integrations/google_translate.markdown
@@ -1,6 +1,6 @@
---
title: Google Translate text-to-speech
-description: Instructions on how to setup Google Translate text-to-speech with Home Assistant.
+description: Instructions on how to set up Google Translate text-to-speech with Home Assistant.
ha_category:
- Text-to-speech
ha_release: 0.35
@@ -12,14 +12,13 @@ ha_config_flow: true
ha_integration_type: service
---
-The **Google Translate text-to-speech** {% term integration %} uses the unofficial [Google Translate text-to-speech engine](https://translate.google.com/) to read a text with natural sounding voices. Contrary to what the name suggests, the integration only does text-to-speech and does not translate messages sent to it.
+The **Google Translate text-to-speech** {% term integration %} uses the unofficial [Google Translate text-to-speech engine](https://translate.google.com/) to read text with natural-sounding voices. Despite the name, the integration only does text-to-speech and does not translate the messages you send to it.
{% include integrations/config_flow.md %}
-
-Supported Languages
-
-All languages where the "Talk" feature is enabled in Google Translate are supported. The following is the current list of languages supported by Google.
+{% details "Supported languages" %}
+
+All languages where the "Talk" feature is enabled in Google Translate are supported. The current list of supported languages is:
| Language Code | Language |
| ------------- | ----------------------------- |
@@ -88,12 +87,11 @@ All languages where the "Talk" feature is enabled in Google Translate are suppor
| ur | Urdu |
| vi | Vietnamese |
+{% enddetails %}
-
-
-Check the [complete list of supported tld](https://www.google.com/supported_domains) for allowed TLD values. This is used to force the dialect used when multiple fall into the same 2-digit language code(i.e., _US, UK, AU_)
+Check the [complete list of supported TLDs](https://www.google.com/supported_domains) for allowed TLD values. This is used to force the dialect when multiple dialects fall into the same 2-digit language code (for example, _US_, _UK_, or _AU_).
-You can also use supported BCP 47 tags like the below or the 2-2 digit format for your supported dialect(`en-gb` or `en-us`). Below is a list of the currently implemented mappings:
+You can also use supported BCP 47 tags or the 2-2 digit format for your supported dialect (`en-gb` or `en-us`). The currently implemented mappings are:
| Dialect | Language | TLD |
| ------- | -------- | ------ |
@@ -113,29 +111,30 @@ You can also use supported BCP 47 tags like the below or the 2-2 digit format fo
| es-us | es | com |
-## Action speak
+## Action: Speak
-The `tts.speak` action is the modern way to use Google translate TTS action. Add the `speak` action, select the entity for your Google translate TTS (it's named for the language you created it with), select the media player entity or group to send the TTS audio to, and enter the message to speak.
+The `tts.speak` action is the modern way to use Google Translate text-to-speech. Add the `speak` action, select the entity for your Google Translate text-to-speech (it is named for the language you created it with), select the media player entity or group to send the TTS audio to, and enter the message to speak.
For more options about `speak`, see the Speak section on the main [TTS](/integrations/tts/#action-speak) building block page.
In YAML, your action will look like this:
+
```yaml
action: tts.speak
target:
entity_id: tts.google_en_com
data:
media_player_entity_id: media_player.giant_tv
- message: Hello, can you hear me now?
+ message: "Hello, can you hear me now?"
```
-## Action say (legacy)
+## Action: Say (legacy)
{% tip %}
-The `google_translate_say` action can be used when configuring the legacy `google_translate` text-to-speech platform in `configuration.yaml`. We recommend new users to instead set up the integration in the UI and use the `tts.speak` action with the corresponding Google Translate text-to-speech entity as target.
+The `google_translate_say` action can be used when configuring the legacy `google_translate` text-to-speech platform in `configuration.yaml`. We recommend that new users instead set up the integration in the UI and use the `tts.speak` action with the corresponding Google Translate text-to-speech entity as the target.
{% endtip %}
-The `google_translate_say` action supports `language` and also `options` for setting `tld`. The text for speech is set with `message`. Since release 0.92, the action name can be defined in the configuration `service_name` option.
+The `google_translate_say` action supports `language` and also `options` for setting `tld`. You set the text to speak with the `message` option. The action name can be customized with the `service_name` configuration option.
Say to all `media_player` device entities:
@@ -188,8 +187,6 @@ data:
With a template:
-{% raw %}
-
```yaml
action: tts.google_translate_say
data:
@@ -197,6 +194,4 @@ data:
cache: false
```
-{% endraw %}
-
For more information about using text-to-speech with Home Assistant and more details on all the options it provides, see the [TTS documentation](/integrations/tts/).
diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown
index f4d2d1e5cfcd..fa8a9a4444f8 100644
--- a/source/_integrations/google_travel_time.markdown
+++ b/source/_integrations/google_travel_time.markdown
@@ -20,9 +20,9 @@ The **Google Maps Travel Time** {% term integration %} provides travel time from
You need to register for an API key by following the instructions [here](https://developers.google.com/maps/documentation/routes/get-api-key-v2). You only need to turn on the Routes API.
-Google requires billing to be enabled (and a valid credit card loaded) to access Google Maps APIs. The Routes API currently provides 10,000 free requests per month that take the current traffic into account. The sensor will update the travel time every 10 minutes, making approximately 144 calls per day. Note that at this rate, using more than 2 sensors may exceed the free credit limit. As the update frequency cannot be decreased, if you require more frequent data updates, consider triggering on-demand updates (see the automation example below).
+Google requires billing to be enabled (and a valid credit card loaded) to access Google Maps APIs. The integration consumes the Compute Routes Pro API providing 5,000 free requests per month. The sensor will update the travel time every 10 minutes, making approximately 144 calls per day. Note that at this rate, using more than 1 sensor will exceed the free credit limit. As the update frequency cannot be decreased, if you require more frequent data updates, consider triggering on-demand updates (see the automation example below).
-A quota can be set against the API to avoid exceeding the free credit amount. Set the 'Elements per day' to a limit of 322 or less. Details on how to configure a quota can be found [here](https://developers.google.com/maps/documentation/routes/report-monitor#quotas).
+A quota can be set against the API to avoid exceeding the free credit amount. Set the 'Elements per day' to a limit of 161 or less. Details on how to configure a quota can be found [here](https://developers.google.com/maps/documentation/routes/report-monitor#quotas).
{% include integrations/config_flow.md %}
diff --git a/source/_integrations/group.markdown b/source/_integrations/group.markdown
index 6121e0afb71a..c5fbe678cab7 100644
--- a/source/_integrations/group.markdown
+++ b/source/_integrations/group.markdown
@@ -499,7 +499,7 @@ When a group contains entities from domains that have multiple `on` states or on
It is possible to create a group that the system cannot calculate a group state. Groups with entities from unsupported domains will always have an unknown state.
-These groups can still be in templates with the `expand()` directive, called using the `homeassistant.turn_on` and `homeassistant.turn_off` actions, etc.
+These groups can still be in templates with the [`expand()`](/template-functions/expand/) function, called using the `homeassistant.turn_on` and `homeassistant.turn_off` actions, etc.
### Attributes
diff --git a/source/_integrations/habitica.markdown b/source/_integrations/habitica.markdown
index d1a6482b160a..cf291f7316f4 100644
--- a/source/_integrations/habitica.markdown
+++ b/source/_integrations/habitica.markdown
@@ -490,8 +490,6 @@ Automatically accepts quest invitations from your Habitica party and creates a p
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -514,8 +512,6 @@ actions:
for other party members to join{% endif %}.
```
-{% endraw %}
-
{% enddetails %}
{% note %}
@@ -530,8 +526,6 @@ Automatically create a Habitica to-do when the dishwasher finishes its cycle.
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -549,8 +543,6 @@ actions:
entity_id: todo.habitica_to_dos
```
-{% endraw %}
-
{% enddetails %}
### Complete toothbrushing tasks on your Habitica Dailies list
diff --git a/source/_integrations/harmony.markdown b/source/_integrations/harmony.markdown
index b740e04fe8ca..f1fb92ef71db 100644
--- a/source/_integrations/harmony.markdown
+++ b/source/_integrations/harmony.markdown
@@ -184,8 +184,6 @@ The `harmony.sync` action forces synchronization between the Harmony device and
Template sensors can be utilized to display current activity in the frontend.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -197,12 +195,8 @@ template:
{{ state_attr('remote.bedroom', 'current_activity') }}
```
-{% endraw %}
-
The example below shows how to control an `input_boolean` switch using the Harmony remote's current activity. The switch will turn on when the remote's state changes and the Kodi activity is started and off when the remote's state changes and the current activity is "PowerOff".
-{% raw %}
-
```yaml
automation:
- alias: "Watch TV started from harmony hub"
@@ -228,5 +222,3 @@ automation:
target:
entity_id: input_boolean.notify
```
-
-{% endraw %}
diff --git a/source/_integrations/hdfury.markdown b/source/_integrations/hdfury.markdown
index d078a72b19ee..2707668de7d3 100644
--- a/source/_integrations/hdfury.markdown
+++ b/source/_integrations/hdfury.markdown
@@ -122,8 +122,6 @@ These examples are just a starting point, and you can use them as inspiration to
The following example switches the HDFury input to the correct source when the media player powers on.
-{% raw %}
-
```yaml
automation:
- alias: "Switch HDFury input to Nvidia SHIELD when powered on"
@@ -144,8 +142,6 @@ automation:
option: 1
```
-{% endraw %}
-
## Known limitations
The HDFury integration currently has no known limitations.
diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown
index 0ed29f2eaaf3..ce672b662e64 100644
--- a/source/_integrations/history_stats.markdown
+++ b/source/_integrations/history_stats.markdown
@@ -59,8 +59,6 @@ Minimum duration of measurement:
To enable the history statistics sensor, add the following lines to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
-{% raw %}
-
```yaml
# Example configuration.yaml entry
sensor:
@@ -73,8 +71,6 @@ sensor:
end: "{{ now() }}"
```
-{% endraw %}
-
{% configuration %}
entity_id:
description: The entity you want to track.
@@ -126,7 +122,7 @@ min_state_duration:
You have to provide **exactly 2** of `start`, `end` and `duration`.
- You can use [template extensions](/docs/configuration/templating/#home-assistant-template-extensions) such as `now()` or `as_timestamp()` to handle dynamic dates, as shown in the examples below.
+ You can use [template extensions](/docs/templating/) such as `now()` or `as_timestamp()` to handle dynamic dates, as shown in the examples below.
{% endnote %}
@@ -201,110 +197,74 @@ Here are some examples of periods you could work with, and what to write in your
**Today**: starts at 00:00 of the current day and ends right now.
-{% raw %}
-
```yaml
start: "{{ today_at('00:00') }}"
end: "{{ now() }}"
state_class: total_increasing
```
-{% endraw %}
-
**Yesterday**: ends today at 00:00, lasts 24 hours.
-{% raw %}
-
```yaml
end: "{{ today_at('00:00') }}"
duration:
hours: 24
```
-{% endraw %}
-
**This morning (6AM - 11AM)**: starts today at 6, lasts 5 hours.
-{% raw %}
-
```yaml
start: "{{ today_at('06:00') }}"
duration:
hours: 5
```
-{% endraw %}
-
**Current week**: starts last Monday at 00:00, ends right now.
Here, last Monday is today at 00:00, minus the current weekday (the weekday is 0 on Monday, 6 on Sunday).
-{% raw %}
-
```yaml
start: "{{ today_at('00:00') - timedelta(days=now().weekday()) }}"
end: "{{ now() }}"
```
-{% endraw %}
-
**Current month**: starts the first day of the current month at 00:00, ends right now.
-{% raw %}
-
```yaml
start: "{{ today_at('00:00').replace(day=1) }}"
end: "{{ now() }}"
```
-{% endraw %}
-
**Previous month**: starts the first day of the previous month at 00:00, ends the first day of the current month.
-{% raw %}
-
```yaml
start: "{{ (today_at('00:00').replace(day=1) - timedelta(days=1)).replace(day=1) }}"
end: "{{ today_at('00:00').replace(day=1) }}"
```
-{% endraw %}
-
**Next 4 pm**: 24 hours, from the last 4 pm till the next 4 pm. If it hasn't been 4 pm today, that would be 4 pm yesterday until 4 pm today. If it is already past 4 pm today, it will be 4 pm today until 4 pm tomorrow. When changing the start time, then add or subtract to the 8-hour buffer to match the next midnight.
-{% raw %}
-
```yaml
end: "{{ (now() + timedelta(hours=8)).replace(hour=16, minute=0, second=0, microsecond=0) }}"
duration:
hours: 24
```
-{% endraw %}
-
**Last 30 days**: ends today at 00:00, lasts 30 days. Easy one.
-{% raw %}
-
```yaml
end: "{{ today_at('00:00') }}"
duration:
days: 30
```
-{% endraw %}
-
**All your history** starts at timestamp = 0, and ends right now.
-{% raw %}
-
```yaml
start: "{{ 0 }}"
end: "{{ now() }}"
```
-{% endraw %}
-
{% tip %}
The `/developer-tools/template` page of your Home Assistant UI can help you check if the values for `start`, `end` or `duration` are correct. If you want to check if your period is right, just click on your component, the `from` and `to` attributes will show the start and end of the period, nicely formatted.
{% endtip %}
diff --git a/source/_integrations/home_connect.markdown b/source/_integrations/home_connect.markdown
index e573fb1e481d..10ba87fcf7e3 100644
--- a/source/_integrations/home_connect.markdown
+++ b/source/_integrations/home_connect.markdown
@@ -1157,8 +1157,6 @@ Get started with these automation examples
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Notify when program ends"
triggers:
@@ -1171,8 +1169,6 @@ actions:
data:
message: "The appliance has finished the program."
```
-
-{% endraw %}
{% enddetails %}
### Start a program when electricity is cheap
@@ -1181,8 +1177,6 @@ Because electricity is typically cheaper at night, this automation will activate
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Start program when electricity is cheap"
triggers:
@@ -1212,8 +1206,6 @@ actions:
affects_to: "active_program"
program: "dishcare_dishwasher_program_eco_50"
```
-
-{% endraw %}
{% enddetails %}
## Data updates
diff --git a/source/_integrations/homematic.markdown b/source/_integrations/homematic.markdown
index 08ea5ff131be..0ff1ca58a8a7 100644
--- a/source/_integrations/homematic.markdown
+++ b/source/_integrations/homematic.markdown
@@ -219,8 +219,6 @@ This does *not* affect the entities in Home Assistant. They all use their own co
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) integration. Here's an example of a template sensor that exposes the valve position of a thermostat.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -228,8 +226,6 @@ template:
state: "{{ state_attr('climate.leq123456', 'level') }}"
```
-{% endraw %}
-
### Variables
It is possible to read and set values of system variables you have setup on the CCU/Homegear. The supported types for setting values are float- and bool-variables. With the CCU a user with Admin-access is required.
@@ -446,8 +442,6 @@ actions:
There is no available default integration for HMIP Doorlock (HMIP-DLD) in the current `pyhomematic` implementation.
A workaround is to define a template lock in your configuration:
-{% raw %}
-
```yaml
lock:
- platform: template
@@ -470,16 +464,12 @@ lock:
value: 1
```
-{% endraw %}
-
#### Detecting lost connections
When the connection to your Homematic CCU or Homegear is lost, Home Assistant will stop getting updates from devices. This may happen after rebooting the CCU for example. Due to the nature of the communication protocol this cannot be handled automatically, so you must call *homematic.reconnect* in this case. That's why it is usually a good idea to check if your Homematic integrations are still updated properly, in order to detect connection losses. This can be done in several ways through an automation:
- If you have a sensor which you know will be updated frequently (e.g., an outdoor temperature sensor, voltage sensor or light sensor) you could set up a helper binary sensor and an automation like this:
-{% raw %}
-
```yaml
template:
- binary_sensor:
@@ -498,8 +488,6 @@ automation:
- action: homematic.reconnect
```
-{% endraw %}
-
The important part is the `sensor.time` entity (from time_date integration). This will update the binary sensor on every change of the sensor and every minute. If the Homematic sensor does not send any updates anymore, the `sensor.time` will set the binary sensor to `off` 10 minutes after the last sensor update. This will trigger the automation.
- If you have a CCU you can also create a system variable on the CCU, which stores its last reboot time. Since Home Assistant can still refresh system variables from the CCU (even after a reboot) this is another option to call *homematic.reconnect*. Even though this option might look preferable to many since it does not rely on a sensor, **it is less fail-safe** than checking for updates of a sensor. Since the variable on the CCU is only changed on boot, any problem that causes the connection between Home Assistant and the CCU to break but will not result in a reboot will not be detected (eg. in case of networking issues). This is how this can be done:
@@ -617,8 +605,6 @@ It is possible to provide a template in order to compute the value:
You can also specify the event payload using a group notification (instead of specifying the value for the notify itself):
-{% raw %}
-
```yaml
notify:
- name: my_hm
@@ -642,6 +628,4 @@ alert:
- group_hm
```
-{% endraw %}
-
Please note that the first `data` element belongs to the `my_hm` action, while the second one belongs to the event payload.
diff --git a/source/_integrations/hp_ilo.markdown b/source/_integrations/hp_ilo.markdown
index ada7482b67b7..9a49f171314b 100644
--- a/source/_integrations/hp_ilo.markdown
+++ b/source/_integrations/hp_ilo.markdown
@@ -101,8 +101,6 @@ Valid sensor_types:
In order to get two sensors reporting CPU fan speed and Ambient Inlet Temperature, as well as a dump of `server_health` on a HP Microserver Gen8, you could use the following in your {% term "`configuration.yaml`" %} file
-{% raw %}
-
```yaml
sensor:
- platform: hp_ilo
@@ -123,8 +121,6 @@ sensor:
value_template: '{{ ilo_data.health_at_a_glance }}'
```
-{% endraw %}
-
diff --git a/source/_integrations/html5.markdown b/source/_integrations/html5.markdown
index 63ef323f4e05..716c693a13e3 100644
--- a/source/_integrations/html5.markdown
+++ b/source/_integrations/html5.markdown
@@ -60,8 +60,6 @@ The **HTML5 Push Notifications** {% term integration %} will add a notify {% te
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: notify.send_message
data:
@@ -70,8 +68,6 @@ data:
entity_id: notify.my-desktop
```
-{% endraw %}
-
{% enddetails %}
### Testing
@@ -129,8 +125,6 @@ data:
Example of adding a tag to your notification. This won't create new notification if there already exists one with the same tag.
-{% raw %}
-
```yaml
- alias: "Push/update notification of sensor state with tag"
triggers:
@@ -144,8 +138,6 @@ Example of adding a tag to your notification. This won't create new notification
tag: "notification-about-sensor"
```
-{% endraw %}
-
#### Targets
If you do not provide a `target` parameter in the notify payload a notification will be sent to all registered targets as listed in `html5_push_registrations.conf`. You can provide a `target` parameter like so:
diff --git a/source/_integrations/hue_ble.markdown b/source/_integrations/hue_ble.markdown
index 1228f5b1897c..bd565e4007d2 100644
--- a/source/_integrations/hue_ble.markdown
+++ b/source/_integrations/hue_ble.markdown
@@ -42,10 +42,12 @@ This {% term integration %} is tested to work with the following models:
| Model number | Product name |
|--------------|--------------------------------------------------|
+| LCA004 | Hue White and Color 800 |
| LCA006 | Hue White and Color 1100 |
| LCA011 | Hue White and Color ambiance 1100 |
| LCL009 | Hue Solo Lightstrip |
| LCX029 | Hue Festavia globe bulb string lights |
+| LWA021 | Hue Filament Bulb White |
| LWA031 | Hue White 1600 |
| LTO002 | Hue White ambiance filament globe bulb |
| Unknown | Hue White and Color Ambiance Go portable accent light |
diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown
index 5e50b83889a1..5aef129f20cd 100644
--- a/source/_integrations/humidifier.mqtt.markdown
+++ b/source/_integrations/humidifier.mqtt.markdown
@@ -62,7 +62,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -71,7 +71,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -87,7 +87,7 @@ current_humidity_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -179,7 +179,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -237,7 +237,7 @@ payload_reset_mode:
type: string
default: '"None"'
target_humidity_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `target_humidity_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `target_humidity_command_topic`.
required: false
type: template
target_humidity_command_topic:
@@ -249,11 +249,11 @@ target_humidity_state_topic:
required: false
type: string
target_humidity_state_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value for the humidifier `target_humidity` state.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value for the humidifier `target_humidity` state.
required: false
type: template
mode_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `mode_command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `mode_command_topic`.
required: false
type: template
mode_command_topic:
@@ -265,7 +265,7 @@ mode_state_topic:
required: false
type: string
mode_state_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value for the humidifier `mode` state.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value for the humidifier `mode` state.
required: false
type: template
modes:
@@ -292,7 +292,7 @@ state_topic:
required: false
type: string
state_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a value from the state."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a value from the state."
required: false
type: template
unique_id:
@@ -313,8 +313,6 @@ In this section you find some real-life examples of how to use this humidifier.
The example below shows a full configuration for a MQTT humidifier including modes.
-{% raw %}
-
```yaml
# Example configuration.yaml
mqtt:
@@ -345,5 +343,3 @@ mqtt:
min_humidity: 30
max_humidity: 80
```
-
-{% endraw %}
diff --git a/source/_integrations/huum.markdown b/source/_integrations/huum.markdown
index 2c2d92947a71..74b447b0534c 100644
--- a/source/_integrations/huum.markdown
+++ b/source/_integrations/huum.markdown
@@ -83,6 +83,54 @@ The **Huum** integration provides the following entities.
- **Temperature**
- **Description**: Shows the current sauna temperature in degrees Celsius.
+## Examples
+
+Examples of automations you can create using the Huum integration.
+
+### Sauna ready notification with light
+
+Send a notification and turn on the sauna light when the target temperature is reached.
+
+{% details "Example YAML configuration" %}
+
+```yaml
+alias: "Sauna ready notification with light"
+description: >-
+ Sends a notification and turns on the sauna light when the target
+ temperature is reached.
+
+mode: restart
+
+variables:
+ notification_title: "Sauna is Ready!"
+ notification_message: "Your sauna has reached {target_temperature}°C. Enjoy!"
+
+triggers:
+ - trigger: state
+ entity_id: climate.huum_sauna
+ to: heat
+ from: "off"
+
+actions:
+ - wait_template: >-
+ {% set current = state_attr('climate.huum_sauna', 'current_temperature') | float(0) %}
+ {% set target = state_attr('climate.huum_sauna', 'temperature') | float(0) %}
+ {{ current >= target }}
+ continue_on_timeout: false
+ - action: light.turn_on
+ target:
+ entity_id: light.huum_sauna_light
+ - action: notify.mobile_app_your_phone
+ data:
+ title: "{{ notification_title }}"
+ message: >-
+ {% set target_temperature = state_attr('climate.huum_sauna', 'temperature') | int %}
+ {{ notification_message.replace('{target_temperature}', target_temperature | string) }}
+
+```
+
+{% enddetails %}
+
## Data updates
The **Huum** integration {% term polling polls %} the Huum cloud service every 30 seconds for status updates.
@@ -94,6 +142,58 @@ The **Huum** integration {% term polling polls %} the Huum cloud service every 3
- The target temperature can only be changed while the sauna is in heat mode.
- The integration applies the same safety measures as the Huum app. If a safety condition is triggered (for example, the sauna door is open), the sauna will not turn on.
+## Troubleshooting
+
+{% details "Connection error during setup" %}
+
+**Symptom:** Configuration flow shows a connection error
+
+1. Ensure your Home Assistant instance has an active internet connection.
+2. Double-check that you entered the correct username and password. Try logging in to the Huum app to confirm.
+3. The Huum cloud service may occasionally be unavailable. Wait a few minutes and try again.
+
+{% enddetails %}
+
+{% details "Invalid credentials" %}
+
+**Symptom:** "Invalid authentication" error during setup
+
+1. Make sure your username (usually your email address) has no extra spaces or typos.
+2. If you're unsure of your password, reset it through the Huum app, then try setting it up again.
+3. Confirm you can log in to the Huum app with the same credentials.
+
+{% enddetails %}
+
+{% details "Sauna not appearing after setup" %}
+
+**Symptom:** Setup completes but no sauna device appears
+
+1. Open the Huum app and verify your sauna is shown as connected, not just registered.
+2. Ensure your sauna is linked to the same Huum account you used during setup.
+3. Power cycle the UKU WiFi controller, wait for it to reconnect, then try setting it up again.
+
+{% enddetails %}
+
+{% details "Sauna becomes unavailable" %}
+
+**Symptom:** Entities show as unavailable
+
+1. Ensure your Home Assistant instance and the UKU WiFi controller both have a stable internet connection.
+2. Open the Huum app and verify the sauna is shown as online. If not, check the controller's power and Wi‑Fi connection.
+3. Go to {% my integrations title="**Settings** > **Devices & services**" %}, select the **Huum** integration, then select the three-dot menu {% icon "mdi:dots-vertical" %} and choose **Reload**.
+
+{% enddetails %}
+
+{% details "Cannot adjust temperature or humidity" %}
+
+**Symptom:** Changing the target temperature or humidity level has no effect
+
+1. The target temperature and humidity level can only be changed while the sauna is in heat mode. Make sure the sauna is actively heating.
+2. If the door sensor indicates the door is open, the sauna will not turn on. Close the door and try again.
+3. Confirm you can adjust the settings through the Huum app. If the app also shows restrictions, the issue is with the sauna controller.
+
+{% enddetails %}
+
## Removing the integration
This integration follows standard integration removal.
diff --git a/source/_integrations/iaqualink.markdown b/source/_integrations/iaqualink.markdown
index 735174412361..41159346f03d 100644
--- a/source/_integrations/iaqualink.markdown
+++ b/source/_integrations/iaqualink.markdown
@@ -36,8 +36,9 @@ There is currently support for the following device types within Home Assistant:
## Known limitations
-- The platform only supports a single pool.
-- Only Pool systems are supported at this time.
+Only iAquaLink 2.0 (iQ20) and eXO systems are supported at this time.
+
+If you need support for other systems, please open a request in the iaqualink-py Python library [repository](https://github.com/flz/iaqualink-py/issues).
## Debugging integration
@@ -50,3 +51,9 @@ logger:
iaqualink: debug
homeassistant.components.iaqualink: debug
```
+
+## Removing the integration
+
+This integration follows standard integration removal.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/ifttt.markdown b/source/_integrations/ifttt.markdown
index b09ad9685c2e..ca625f6d4b5b 100644
--- a/source/_integrations/ifttt.markdown
+++ b/source/_integrations/ifttt.markdown
@@ -32,8 +32,6 @@ For example, set the body of the IFTTT webhook to:
You then need to consume that incoming information with the following automation:
-{% raw %}
-
```yaml
automation:
- alias: "The optional automation alias"
@@ -49,8 +47,6 @@ automation:
```
-{% endraw %}
-
## Sending events to IFTTT
```yaml
@@ -127,8 +123,6 @@ You need to setup a unique trigger for each event you sent to IFTTT.
Add the *Then That* action. The below example sends a notification to the IFTTT mobile app and adds `value1` to the message:

-{% raw %}
-
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -141,12 +135,8 @@ automation:
data: {"event":"TestHA_Trigger", "value1":"Hello World!"}
```
-{% endraw %}
-
IFTTT can also be used in scripts and with templates. Here is the above automation broken into an automation and script using variables and templates.
-{% raw %}
-
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -162,10 +152,6 @@ automation:
value3: "{{ trigger.event.data.to_state.state }}"
```
-{% endraw %}
-
-{% raw %}
-
```yaml
#Example Script to send TestHA_Trigger to IFTTT but with some other data (homeassistant UP).
ifttt_notify:
@@ -173,5 +159,3 @@ ifttt_notify:
- action: ifttt.trigger
data: {"event":"TestHA_Trigger", "value1":"{{ value1 }}", "value2":"{{ value2 }}", "value3":"{{ value3 }}"}
```
-
-{% endraw %}
diff --git a/source/_integrations/image.markdown b/source/_integrations/image.markdown
index 2ecd29230440..eb9ceceee9e0 100644
--- a/source/_integrations/image.markdown
+++ b/source/_integrations/image.markdown
@@ -43,8 +43,6 @@ The path part of `filename` must be an entry in the `allowlist_external_dirs` in
For example, the following action in an automation would take a snapshot from "yourimage" and save it to /tmp with a timestamped filename.
-{% raw %}
-
```yaml
actions:
- variables:
@@ -55,5 +53,3 @@ actions:
data:
filename: '/tmp/{{ entity_id }}_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
```
-
-{% endraw %}
diff --git a/source/_integrations/image.mqtt.markdown b/source/_integrations/image.mqtt.markdown
index 054995976601..90ebd084666c 100644
--- a/source/_integrations/image.mqtt.markdown
+++ b/source/_integrations/image.mqtt.markdown
@@ -51,7 +51,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -60,7 +60,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -160,7 +160,7 @@ image_topic:
required: exclusive
type: string
json_attributes_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`.
required: false
type: template
json_attributes_topic:
@@ -176,7 +176,7 @@ unique_id:
required: false
type: string
url_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the image URL from a message received at `url_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the image URL from a message received at `url_topic`.
required: false
type: template
url_topic:
@@ -195,8 +195,6 @@ To test it publish an image URL to the topic from the console:
mosquitto_pub -h -t mynas/status/url -m "https://design.home-assistant.io/images/logo.png"
```
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -204,8 +202,6 @@ mqtt:
url_topic: mynas/status/url
```
-{% endraw %}
-
### Example receiving images from a file
Add the configuration below to your {% term "`configuration.yaml`" %}.
@@ -216,8 +212,6 @@ To test it, publish an image URL to the topic from the console:
mosquitto_pub -h -t mynas/status/file -f
```
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -225,5 +219,3 @@ mqtt:
image_topic: mynas/status/file
content_type: image/png
```
-
-{% endraw %}
diff --git a/source/_integrations/imap.markdown b/source/_integrations/imap.markdown
index 9acb0078c87e..30ac5deed022 100644
--- a/source/_integrations/imap.markdown
+++ b/source/_integrations/imap.markdown
@@ -125,7 +125,7 @@ date:
headers:
description: The `headers` of the message in the for of a dictionary. The values are iterable as headers can occur more than once. `headers` will be included if it is explicitly selected in the option flow.
custom:
- description: Holds the result of the custom event data [template](/docs/configuration/templating). All attributes are available as a variable in the template.
+ description: Holds the result of the custom event data [template](/docs/templating). All attributes are available as a variable in the template.
initial:
description: Returns `True` if this is the initial event for the last message received. When a message within the search scope is removed and the last message received has not been changed, then an `imap_content` event is generated and the `initial` property is set to `False`. Note that if no `Message-ID` header was set on the triggering email, the `initial` property will always be set to `True`.
parts:
@@ -142,8 +142,6 @@ If the default maximum message size (2048 bytes) to be used in events is too sma
Increasing the default maximum message size (2048 bytes) could have a negative impact on performance as event data is also logged by the `recorder`. If the total event data size exceeds the maximum event size (32168 bytes), the event will be skipped.
{% endwarning %}
-{% raw %}
-
```yaml
template:
- trigger:
@@ -171,8 +169,6 @@ template:
Received-last: "{{ trigger.event.data['headers'].get('Received',['n/a'])[-1] }}"
```
-{% endraw %}
-
### Actions for post-processing
The IMAP integration has some actions for post-pressing email messages. The actions are intended to be used in automations as actions after an "imap_content" event. The actions require the IMAP `entry_id` and the `uid` of the message's event data. You can use a template for the `entry_id` and the `uid`. When the action is set up as a trigger action, you can easily select the correct entry from the UI. You will find the `entry_id` in YAML mode. It is highly recommended you filter the events by the `entry_id`.
@@ -299,8 +295,6 @@ part:
The example below filters the event trigger by `entry_id`, fetches the message and stores it in `message_text`. It then marks the message in the event as seen and finally, it adds a notification with the subject of the message. The `seen` action `entry_id` can be a template or literal string. In UI mode you can select the desired entry from a list as well.
-{% raw %}
-
```yaml
alias: "imap fetch and seen example"
description: "Fetch and mark an incoming message as seen"
@@ -327,12 +321,8 @@ actions:
message: "{{ message_text['subject'] }}"
```
-{% endraw %}
-
In case you want want to process a message part, use the `fetch_part` action, and specify the `part` option.
-{% raw %}
-
```yaml
alias: "imap fetch and seen example"
description: "Fetch and mark an incoming message as seen"
@@ -364,15 +354,11 @@ actions:
message: "{{ message_text['part_data'] | base64_decode }}"
```
-{% endraw %}
-
## Example - keyword spotting
The following example shows the usage of the IMAP email content sensor to scan the subject of an email for text, in this case, an email from the APC SmartConnect service, which tells whether the UPS is running on battery or not.
-{% raw %}
-
```yaml
template:
- trigger:
@@ -392,8 +378,6 @@ template:
{% endif %}
```
-{% endraw %}
-
## Example - extracting formatted text from an email using template sensors
This example shows how to extract numbers or other formatted data from an email to change the value of a template sensor to a value extracted from the email. In this example, we will be extracting energy use, cost, and billed amount from an email (from Georgia Power) and putting it into sensor values using a template sensor that runs against our IMAP email sensor already set up. A sample of the body of the email used is below:
@@ -409,8 +393,6 @@ To view your account for details about your energy use, please click here.
Below is the template sensor which extracts the information from the body of the email in our IMAP email sensor (named sensor.energy_email) into 3 sensors for the energy use, daily cost, and billing cycle total.
-{% raw %}
-
```yaml
template:
- trigger:
@@ -437,8 +419,6 @@ template:
| regex_findall_index("\ days:\* \$([0-9.]+)") }}
```
-{% endraw %}
-
By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails.
## Example - custom event data template
@@ -458,8 +438,6 @@ This will render to `True` if the sender is allowed. The result is added to the
The example below will only set the state to the subject of the email of template sensor, but only if the sender address matches.
-{% raw %}
-
```yaml
template:
- trigger:
@@ -473,8 +451,6 @@ template:
state: '{{ trigger.event.data["subject"] }}'
```
-{% endraw %}
-
## Remove an IMAP service
This integration follows standard config entry removal.
diff --git a/source/_integrations/immich.markdown b/source/_integrations/immich.markdown
index d164b7d17168..36bda24431d6 100644
--- a/source/_integrations/immich.markdown
+++ b/source/_integrations/immich.markdown
@@ -109,8 +109,6 @@ Album ID:
Take a snapshot of a camera entity via the [`camera.snapshot`](/integrations/camera/#action-snapshot) action, use the [local media](/integrations/media_source/#local-media) path to store the snapshot and upload it to the Immich instance in a specific album.
-{% raw %}
-
```yaml
sequence:
- variables:
@@ -129,8 +127,6 @@ sequence:
album_id: f2de0ede-d7d4-4db3-afe3-7288f4e65bb1
```
-{% endraw %}
-
## Troubleshooting
In any case, when reporting an issue, please enable [debug logging](/docs/configuration/troubleshooting/#debug-logs-and-diagnostics), restart the integration, and as soon as the issue re-occurs, stop the debug logging again (_download of debug log file will start automatically_). Further, if still possible, please also download the [diagnostics](/integrations/diagnostics/) data. If you have collected the debug log and the diagnostics data, provide them with the issue report.
diff --git a/source/_integrations/incomfort.markdown b/source/_integrations/incomfort.markdown
index e04e65fabc88..d0cb07d367ea 100644
--- a/source/_integrations/incomfort.markdown
+++ b/source/_integrations/incomfort.markdown
@@ -103,8 +103,6 @@ This integration follows standard integration removal, no extra steps are requir
To send an alert if the CV pressure is too low or too high, consider the following example:
-{% raw %}
-
```yaml
- alias: "Low CV Pressure Alert"
triggers:
@@ -120,6 +118,4 @@ To send an alert if the CV pressure is too low or too high, consider the followi
is low, {{ trigger.to_state.state }} bar.
```
-{% endraw %}
-
Other properties are available via each device's attributes.
diff --git a/source/_integrations/influxdb.markdown b/source/_integrations/influxdb.markdown
index 365cdffcac89..eb5312d35606 100644
--- a/source/_integrations/influxdb.markdown
+++ b/source/_integrations/influxdb.markdown
@@ -428,11 +428,11 @@ queries:
required: true
where:
type: template
- description: Defines the data selection clause (the where clause of the query). This supports [templates](/docs/configuration/templating/#building-templates).
+ description: Defines the data selection clause (the where clause of the query). This supports [templates](/docs/templating/syntax/).
required: true
value_template:
type: template
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload.
required: false
database:
type: string
@@ -478,7 +478,7 @@ queries_flux:
default: now()
query:
type: template
- description: "One or more flux filters used to get to the data you want. These should limit resultset to one table, or any beyond the first will be ignored. Your query should not begin or end with a pipe (`|>`). This supports [templates](/docs/configuration/templating/#building-templates)."
+ description: "One or more flux filters used to get to the data you want. These should limit resultset to one table, or any beyond the first will be ignored. Your query should not begin or end with a pipe (`|>`). This supports [templates](/docs/templating/syntax/)."
required: true
group_function:
type: string
@@ -486,7 +486,7 @@ queries_flux:
required: false
value_template:
type: template
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. Note that `value` will be set to the value of the `_value` field in your query output.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the payload. Note that `value` will be set to the value of the `_value` field in your query output.
required: false
bucket:
type: string
@@ -508,8 +508,6 @@ The example configuration entry below creates two requests to your local InfluxD
- `select last(value) as value from "°C" where "name" = "foo"`
- `select min(tmp) as value from "%" where "entity_id" = ''salon'' and time > now() - 1h`
-{% raw %}
-
```yaml
sensor:
- platform: influxdb
@@ -535,12 +533,8 @@ sensor:
database: db2
```
-{% endraw %}
-
### Full configuration for InfluxDB 2.x
-{% raw %}
-
```yaml
sensor:
- platform: influxdb
@@ -571,8 +565,6 @@ sensor:
group_function: mean
```
-{% endraw %}
-
Note that when working with Flux queries, the resultset is broken into tables, you can see how this works in the Data Explorer of the UI. If you are operating on data created by the InfluxDB history integration, this means by default, you will have a table for each entity and each attribute of each entity (other than `unit_of_measurement` and any others you promoted to tags).
This is more tables compared to 1.x queries, where you have one table per `unit_of_measurement` across all entities. You can still create aggregate metrics across multiple sensors. As shown above, use the [keep](https://docs.influxdata.com/flux/v0/stdlib/universe/keep/) or [drop](https://docs.influxdata.com/flux/v0/stdlib/universe/drop/) filters. When you remove key columns, InfluxDB merges tables that share a schema for `_value` into one.
diff --git a/source/_integrations/input_datetime.markdown b/source/_integrations/input_datetime.markdown
index 07aaced98343..765348e0fd79 100644
--- a/source/_integrations/input_datetime.markdown
+++ b/source/_integrations/input_datetime.markdown
@@ -130,8 +130,6 @@ To dynamically set the `input_datetime` you can call
`input_datetime.set_datetime`. The values for `date`, `time` and/or `datetime` must be in a certain format for the call to be successful. (See action description above.)
If you have a `datetime` object, you can use its `timestamp` method. Or, if you have a timestamp, you can just use it directly.
-{% raw %}
-
```yaml
# Sets time to 05:30:00
- action: input_datetime.set_datetime
@@ -178,5 +176,3 @@ If you have a `datetime` object, you can use its `timestamp` method. Or, if you
data:
timestamp: "{{ now().timestamp() }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/input_number.markdown b/source/_integrations/input_number.markdown
index 913011d80666..ddbbf09a4b53 100644
--- a/source/_integrations/input_number.markdown
+++ b/source/_integrations/input_number.markdown
@@ -114,8 +114,6 @@ scene:
Here's an example of `input_number` being used as a trigger in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_number' as a trigger in an automation
input_number:
@@ -139,12 +137,8 @@ automation:
brightness: "{{ trigger.to_state.state | int }}"
```
-{% endraw %}
-
Another code example using `input_number`, this time being used in an action in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_number' in an action in an automation
input_select:
@@ -181,12 +175,8 @@ automation:
brightness: "{{ states('input_number.bedroom_brightness') | int }}"
```
-{% endraw %}
-
Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_number' in an action in an automation
input_number:
@@ -226,12 +216,8 @@ automation:
payload: "{{ states('input_number.target_temp') | int }}"
```
-{% endraw %}
-
Here's an example of `input_number` being used as a delay in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_number' as a delay in an automation
input_number:
@@ -263,5 +249,3 @@ automation:
target:
entity_id: switch.something
```
-
-{% endraw %}
diff --git a/source/_integrations/input_select.markdown b/source/_integrations/input_select.markdown
index 629aee847ace..53ff33b86969 100644
--- a/source/_integrations/input_select.markdown
+++ b/source/_integrations/input_select.markdown
@@ -165,8 +165,6 @@ automation:
Example of `input_select` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_select' in an action in an automation
@@ -209,5 +207,3 @@ input_select:
retain: true
payload: "{{ states('input_select.thermostat_mode') }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/input_text.markdown b/source/_integrations/input_text.markdown
index 1a4a29df9270..ea329204cde2 100644
--- a/source/_integrations/input_text.markdown
+++ b/source/_integrations/input_text.markdown
@@ -108,8 +108,6 @@ scene:
Here's an example using `input_text` in an action in an automation.
-{% raw %}
-
```yaml
# Example configuration.yaml entry using 'input_text' in an action in an automation
input_select:
@@ -139,5 +137,3 @@ automation:
data:
value: "{{ states('input_select.scene_bedroom') }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown
index 5b71c5075d82..2cdfe5ccb7e3 100644
--- a/source/_integrations/intent_script.markdown
+++ b/source/_integrations/intent_script.markdown
@@ -15,8 +15,6 @@ The **Intent Script** integration allows users to configure actions and response
If you are using intent script with LLMs and have parameters, make sure to mention the parameters and their types in the description.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
intent_script:
@@ -30,8 +28,6 @@ intent_script:
message: Hello from an intent!
```
-{% endraw %}
-
Inside an intent we can define these variables:
{% configuration %}
@@ -101,8 +97,6 @@ intent:
When using a `speech` template, data returned from the executed action are
available in the `action_response` variable.
-{% raw %}
-
```yaml
conversation:
intents:
@@ -125,8 +119,6 @@ intent_script:
text: "{{ action_response['calendar.my_calendar'].events | length }}" # use the action's response
```
-{% endraw %}
-
## Actions
Available actions: `reload`.
diff --git a/source/_integrations/iron_os.markdown b/source/_integrations/iron_os.markdown
index 34e4ddafbe10..e49e99d9e10f 100644
--- a/source/_integrations/iron_os.markdown
+++ b/source/_integrations/iron_os.markdown
@@ -157,8 +157,6 @@ Automatically activate the fume extractor when soldering begins and deactivate i
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -190,8 +188,6 @@ actions:
entity_id: switch.fume_extractor
```
-{% endraw %}
-
{% enddetails %}
## Data updates
diff --git a/source/_integrations/izone.markdown b/source/_integrations/izone.markdown
index 85b6bb88fa2c..4612da060197 100644
--- a/source/_integrations/izone.markdown
+++ b/source/_integrations/izone.markdown
@@ -87,8 +87,6 @@ In this mode, the controller entity reports:
You can configure sensors to read these values (in {% term "`configuration.yaml`" %}), along with the supply temperature (use the ID of your unit):
-{% raw %}
-
```yaml
# Example configuration.yaml entry to create sensors
# from the izone controller state attributes
@@ -104,8 +102,6 @@ template:
unit_of_measurement: "°C"
```
-{% endraw %}
-
And then graph them on a dashboard, along with the standard values such as the current temperature. Either add the sensor entities via the visual editor, or cut and paste this
snippet into the code editor:
diff --git a/source/_integrations/kiosker.markdown b/source/_integrations/kiosker.markdown
new file mode 100644
index 000000000000..36160df8019e
--- /dev/null
+++ b/source/_integrations/kiosker.markdown
@@ -0,0 +1,57 @@
+---
+title: Kiosker
+description: Instructions on how to integrate Kiosker with Home Assistant
+ha_category:
+ - Sensor
+ha_release: 2026.5.0
+ha_iot_class: Local Polling
+ha_config_flow: true
+ha_codeowners:
+ - '@claeysson'
+ha_domain: kiosker
+ha_platforms:
+ - sensor
+ha_integration_type: integration
+ha_dhcp: true
+ha_quality_scale: bronze
+---
+
+[Kiosker](https://kiosker.io) is a powerful yet easy-to-use web kiosk for iPad and iPhone. This integration gives you control over your Kiosker app via the Kiosker API.
+
+## Requirements
+
+This integration requires that you have bought Kiosker Pro or have a valid Kiosker subscription. You can try Kiosker, including this integration for free for 7 days.
+
+You need to enable the API server in Kiosker settings. You also need to generate an access token, and find the IP address of the device. Please refer to the [Kiosker documentation](https://docs.kiosker.io/#/api) for further information on how to configure the Kiosker App.
+
+{% include integrations/config_flow.md %}
+
+{% configuration_basic %}
+Host:
+ description: The IP address or hostname of the device.
+API Token:
+ description: The generated API token from the Kiosker App.
+Use SSL:
+ description: Connect to the Kiosker App using HTTPS. The Kiosker API has to be configured for SSL.
+Verify certificate:
+ description: Verify SSL certificate. Enable for valid certificates only.
+{% endconfiguration_basic %}
+
+## Capabilities
+
+{% note %}
+Due to Apple's restrictive approach to device control, it's not possible to control any physical features like the screen or device sleep through this integration.
+{% endnote %}
+
+Available sensors:
+
+- Battery level
+- Last interaction
+- Last motion (available if a screensaver with motion detection is scheduled or if the camera sensor is enabled)
+- Ambient light (available if a screensaver with motion detection is scheduled or if the camera sensor is enabled)
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
\ No newline at end of file
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index d77cdb5f4742..a5a5d58cea30 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -376,8 +376,6 @@ For values that require project data: if the information was not found, or if no
Example automation configuration
-{% raw %}
-
```yaml
- alias: "Single group address trigger"
triggers:
@@ -389,8 +387,6 @@ Example automation configuration
actions: []
```
-{% endraw %}
-
Example trigger data
```yaml
@@ -484,8 +480,6 @@ response:
default: false
{% endconfiguration %}
-{% raw %}
-
```yaml
# Example script to send a fixed value and the state of an entity
alias: "My Script"
@@ -509,8 +503,6 @@ sequence:
response: false
```
-{% endraw %}
-
### Read
You can use the `homeassistant.update_entity` action call to issue GroupValueRead requests for all `*state_address` of an entity.
@@ -619,8 +611,6 @@ type:
Expose Home Assistant entities to share their state or attributes with the KNX bus. Home Assistant automatically sends the current value whenever it changes and responds to read requests on the KNX bus.
-{% raw %}
-
```yaml
knx:
expose:
@@ -664,8 +654,6 @@ knx:
value_template: "{{ value * 100 }}" # convert from 0..1 to percent
```
-{% endraw %}
-
{% configuration %}
address:
description: The KNX group address where state updates will be sent. Other devices can read the value from this address, and Home Assistant will respond to read requests here.
diff --git a/source/_integrations/kodi.markdown b/source/_integrations/kodi.markdown
index 28146676eb45..8d678c952fa7 100644
--- a/source/_integrations/kodi.markdown
+++ b/source/_integrations/kodi.markdown
@@ -226,8 +226,6 @@ This example and the following requires to have the [script.json-cec](https://gi
#### Simple script to turn on the PVR in some channel as a time function
-{% raw %}
-
```yaml
script:
play_kodi_pvr:
@@ -259,12 +257,8 @@ script:
{% endif %}
```
-{% endraw %}
-
#### Simple script to play a smart playlist
-{% raw %}
-
```yaml
script:
play_kodi_smp:
@@ -282,8 +276,6 @@ script:
media_content_id: special://profile/playlists/video/feuerwehrmann_sam.xsp
```
-{% endraw %}
-
#### Trigger a Kodi video library update
```yaml
@@ -426,8 +418,6 @@ data:
A example of a automation to turn up/down the volume of a receiver using the event:
-{% raw %}
-
```yaml
alias: Kodi keypress
mode: parallel
@@ -454,5 +444,3 @@ actions:
target:
entity_id: media_player.receiver
```
-
-{% endraw %}
diff --git a/source/_integrations/lamarzocco.markdown b/source/_integrations/lamarzocco.markdown
index 7592f2bb7f4e..23ea0cbc57dc 100644
--- a/source/_integrations/lamarzocco.markdown
+++ b/source/_integrations/lamarzocco.markdown
@@ -167,8 +167,6 @@ I often drink milk beverages in the morning and espresso in the afternoon, but f
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: Turn steamboiler on when machine is turned on
description: Ensure the steamboiler is on, when the machine gets turned on
@@ -190,7 +188,6 @@ actions:
mode: single
```
-{% endraw %}
{% enddetails %}
## Known Limitations
diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown
index d67fbc991620..77e9406edd4e 100644
--- a/source/_integrations/lawn_mower.mqtt.markdown
+++ b/source/_integrations/lawn_mower.mqtt.markdown
@@ -31,7 +31,7 @@ activity_state_topic:
required: false
type: string
activity_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value."
required: false
type: template
availability:
@@ -54,7 +54,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -67,7 +67,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
default_entity_id:
@@ -128,7 +128,7 @@ device:
required: false
type: string
dock_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `dock_command_topic`. The `value` parameter in the template will be set to `dock`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `dock_command_topic`. The `value` parameter in the template will be set to `dock`.
required: false
type: template
dock_command_topic:
@@ -158,7 +158,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -175,7 +175,7 @@ optimistic:
type: boolean
default: "`true` if no `activity_state_topic` defined, else `false`."
pause_command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `pause_command_topic`. The `value` parameter in the template will be set to `pause`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `pause_command_topic`. The `value` parameter in the template will be set to `pause`.
required: false
type: template
pause_command_topic:
@@ -192,7 +192,7 @@ qos:
type: integer
default: 0
start_mowing_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `start_mowing_command_topic`. The `value` parameter in the template will be set to `start_mowing`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `start_mowing_command_topic`. The `value` parameter in the template will be set to `start_mowing`.
required: false
type: template
start_mowing_command_topic:
@@ -218,8 +218,6 @@ Make sure that your topic matches exactly. `some-topic/` and `some-topic` are di
The example below shows how to use a single command topic with a command template.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -234,5 +232,3 @@ mqtt:
start_mowing_command_topic: "lawn_mower_plus/set"
start_mowing_command_template: '{"activity": "{{ value }}"}'
```
-
-{% endraw %}
diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown
index 40b8e6b2a7f1..bfc40652d07b 100644
--- a/source/_integrations/lcn.markdown
+++ b/source/_integrations/lcn.markdown
@@ -251,8 +251,6 @@ Example:
This example shows how the `event_data` can be extracted and used in a condition using Home Assistant's templating engine.
Trigger on a transponder event and ensure that the received code is in the given list:
-{% raw %}
-
```yaml
automation:
triggers:
@@ -263,8 +261,6 @@ automation:
...
```
-{% endraw %}
-
Further examples can be found in the [event section](#events).
### Remote control
@@ -456,16 +452,14 @@ Refer to the [Performing actions](/docs/scripts/service-calls) page for examples
When actions are linked to a particular device, the device is identified by its `device_id`. This `device_id` is a unique identifier supplied by Home Assistant.
{% tip %}
-A simple method to obtain the `device_id` for LCN modules in automations and scripts is to use a template with the `device_id()` function as detailed [here](/docs/configuration/templating/#devices). This allows for finding the `device_id` using the module name as shown in the frontend or configured in the LCN-PRO software.
+A simple method to obtain the `device_id` for LCN modules in automations and scripts is to use a template with the `device_id()` function as detailed [here](/template-functions/#device). This allows for finding the `device_id` using the module name as shown in the frontend or configured in the LCN-PRO software.
-{% raw %}
```yaml
action: lcn.pck
data:
device_id: "{{ device_id('Module name') }}"
pck: PIN4
```
-{% endraw %}
{% endtip %}
diff --git a/source/_integrations/lg_thinq.markdown b/source/_integrations/lg_thinq.markdown
index f68b376b302c..8dcb8cb73b66 100644
--- a/source/_integrations/lg_thinq.markdown
+++ b/source/_integrations/lg_thinq.markdown
@@ -304,8 +304,6 @@ A read-only property which has states is represented as a sensor platform.
> - Important: guide's step 3, 4
> - You can select the state change you want to act as trigger in step 4
-{% raw %}
-
```yaml
alias: lack of water example
description: Toggle switch when air purifier's lack_of_water
@@ -324,8 +322,6 @@ actions:
domain: switch
```
-{% endraw %}
-
## Troubleshooting
### Setup
diff --git a/source/_integrations/liebherr.markdown b/source/_integrations/liebherr.markdown
index 6a346a09320d..d0197f8d607b 100644
--- a/source/_integrations/liebherr.markdown
+++ b/source/_integrations/liebherr.markdown
@@ -155,9 +155,11 @@ Examples of automations you can create using the Liebherr integration.
Schedule your Liebherr appliance to automatically enable night mode at bedtime and disable it in the morning for quieter overnight operation.
-{% details "Example YAML configuration" %}
+
+{% my blueprint_import badge blueprint_url="https://community.home-assistant.io/t/liebherr-night-mode-schedule/997705" %}
+
-{% raw %}
+{% details "Example YAML configuration" %}
```yaml
alias: "Liebherr Night Mode Schedule"
@@ -190,8 +192,6 @@ actions:
mode: single
```
-{% endraw %}
-
{% enddetails %}
## Data updates
diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown
index 43b64f5987f1..775f63c0a500 100644
--- a/source/_integrations/light.mqtt.markdown
+++ b/source/_integrations/light.mqtt.markdown
@@ -76,7 +76,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -85,7 +85,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -97,7 +97,7 @@ brightness_command_topic:
required: false
type: string
brightness_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `brightness_command_topic`. Available variables: `value`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `brightness_command_topic`. Available variables: `value`."
required: false
type: template
brightness_scale:
@@ -110,7 +110,7 @@ brightness_state_topic:
required: false
type: string
brightness_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the brightness value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the brightness value."
required: false
type: template
color_mode_state_topic:
@@ -118,11 +118,11 @@ color_mode_state_topic:
required: false
type: string
color_mode_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the color mode."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the color mode."
required: false
type: template
color_temp_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `color_temp_command_topic`. Available variables: `value`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `color_temp_command_topic`. Available variables: `value`."
required: false
type: template
color_temp_command_topic:
@@ -139,7 +139,7 @@ color_temp_state_topic:
required: false
type: string
color_temp_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the color temperature value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the color temperature value."
required: false
type: template
command_topic:
@@ -226,7 +226,7 @@ effect_command_topic:
required: false
type: string
effect_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `effect_command_topic`. Available variables: `value`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `effect_command_topic`. Available variables: `value`."
required: false
type: template
effect_list:
@@ -238,7 +238,7 @@ effect_state_topic:
required: false
type: string
effect_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the effect value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the effect value."
required: false
type: template
group:
@@ -246,7 +246,7 @@ group:
required: false
type: list
hs_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `hs_command_topic`. Available variables: `hue` and `sat`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `hs_command_topic`. Available variables: `hue` and `sat`."
required: false
type: template
hs_command_topic:
@@ -261,7 +261,7 @@ hs_state_topic:
required: false
type: string
hs_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the HS value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the HS value."
required: false
type: template
icon:
@@ -269,7 +269,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -343,7 +343,7 @@ retain:
type: boolean
default: false
rgb_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`."
required: false
type: template
rgb_command_topic:
@@ -355,11 +355,11 @@ rgb_state_topic:
required: false
type: string
rgb_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the RGB value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the RGB value."
required: false
type: template
rgbw_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `rgbw_command_topic`. Available variables: `red`, `green`, `blue` and `white`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `rgbw_command_topic`. Available variables: `red`, `green`, `blue` and `white`."
required: false
type: template
rgbw_command_topic:
@@ -371,11 +371,11 @@ rgbw_state_topic:
required: false
type: string
rgbw_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the RGBW value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the RGBW value."
required: false
type: template
rgbww_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `rgbww_command_topic`. Available variables: `red`, `green`, `blue`, `cold_white` and `warm_white`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `rgbww_command_topic`. Available variables: `red`, `green`, `blue`, `cold_white` and `warm_white`."
required: false
type: template
rgbww_command_topic:
@@ -387,7 +387,7 @@ rgbww_state_topic:
required: false
type: string
rgbww_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the RGBWW value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the RGBWW value."
required: false
type: template
schema:
@@ -400,7 +400,7 @@ state_topic:
required: false
type: string
state_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the state value. The template should return the values defined by `payload_on` (defaults to \"ON\") and `payload_off` (defaults to \"OFF\") settings, or \"None\"."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the state value. The template should return the values defined by `payload_on` (defaults to \"ON\") and `payload_off` (defaults to \"OFF\") settings, or \"None\"."
required: false
type: template
unique_id:
@@ -417,7 +417,7 @@ white_scale:
type: integer
default: 255
xy_command_template:
- description: "Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to compose message which will be sent to `xy_command_topic`. Available variables: `x` and `y`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to compose message which will be sent to `xy_command_topic`. Available variables: `x` and `y`."
required: false
type: template
xy_command_topic:
@@ -429,7 +429,7 @@ xy_state_topic:
required: false
type: string
xy_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the XY value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the XY value."
required: false
type: template
{% endconfiguration %}
@@ -450,8 +450,6 @@ In this section you will find some real-life examples of how to use this sensor.
To enable a light with brightness and RGB support in your installation, add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -472,8 +470,6 @@ mqtt:
optimistic: false
```
-{% endraw %}
-
### Brightness and no RGB support
To enable a light with brightness (no RGB version) in your installation, add the following to your {% term "`configuration.yaml`" %} file:
@@ -586,7 +582,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -595,7 +591,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -709,7 +705,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -1003,7 +999,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -1012,7 +1008,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -1020,11 +1016,11 @@ availability_topic:
required: false
type: string
blue_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract blue color from the state payload value. Expected result of the template is an integer from 0-255 range."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract blue color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
type: template
brightness_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract brightness from the state payload value. Expected result of the template is an integer from 0-255 range."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract brightness from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
type: template
color_temp_kelvin:
@@ -1033,15 +1029,15 @@ color_temp_kelvin:
type: boolean
default: false
color_temp_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract color temperature from the state payload value. Expected result of the template is an integer. If `color_temp_kelvin` is `true` the expected value is in Kelvin else mireds are expected."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract color temperature from the state payload value. Expected result of the template is an integer. If `color_temp_kelvin` is `true` the expected value is in Kelvin else mireds are expected."
required: false
type: template
command_off_template:
- description: "The [template](/docs/configuration/templating/#using-command-templates-with-mqtt) for *off* state changes. Available variables: `state` and `transition`."
+ description: "The [template](/docs/templating/where-to-use/#mqtt) for *off* state changes. Available variables: `state` and `transition`."
required: true
type: template
command_on_template:
- description: "The [template](/docs/configuration/templating/#using-command-templates-with-mqtt) for *on* state changes. Available variables: `state`, `brightness`, `color_temp`, `red`, `green`, `blue`, `hue`, `sat`, `flash`, `transition` and `effect`. Values `red`, `green`, `blue`, `brightness` are provided as integers from range 0-255. Value of `hue` is provided as float from range 0-360. Value of `sat` is provided as float from range 0-100. Value of `color_temp` is provided as integer representing mired or Kelvin units if `color_temp_kelvin` is `true`."
+ description: "The [template](/docs/templating/where-to-use/#mqtt) for *on* state changes. Available variables: `state`, `brightness`, `color_temp`, `red`, `green`, `blue`, `hue`, `sat`, `flash`, `transition` and `effect`. Values `red`, `green`, `blue`, `brightness` are provided as integers from range 0-255. Value of `hue` is provided as float from range 0-360. Value of `sat` is provided as float from range 0-100. Value of `color_temp` is provided as integer representing mired or Kelvin units if `color_temp_kelvin` is `true`."
required: true
type: template
command_topic:
@@ -1108,11 +1104,11 @@ effect_list:
required: false
type: [string, list]
effect_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract effect from the state payload value."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract effect from the state payload value."
required: false
type: template
green_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract green color from the state payload value. Expected result of the template is an integer from 0-255 range."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract green color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
type: template
group:
@@ -1124,7 +1120,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -1179,7 +1175,7 @@ qos:
type: integer
default: 0
red_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract red color from the state payload value. Expected result of the template is an integer from 0-255 range."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract red color from the state payload value. Expected result of the template is an integer from 0-255 range."
required: false
type: template
schema:
@@ -1188,7 +1184,7 @@ schema:
type: string
default: basic
state_template:
- description: "[Template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract state from the state payload value."
+ description: "[Template](/docs/templating/where-to-use/#mqtt) to extract state from the state payload value."
required: false
type: template
state_topic:
@@ -1213,8 +1209,6 @@ In this section you find some real-life examples of how to use this light.
For a simple string payload with the format `state,brightness,r-g-b,h-s` (e.g., `on,255,255-255-255,360-100`), add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -1231,14 +1225,10 @@ mqtt:
blue_template: "{{ value.split(',')[2].split('-')[2] }}"
```
-{% endraw %}
-
### JSON payload
For a JSON payload with the format `{"state": "on", "brightness": 255, "color": [255, 255, 255], "effect": "rainbow"}`, add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -1273,8 +1263,6 @@ mqtt:
effect_template: '{{ value_json.effect }}'
```
-{% endraw %}
-
### CCT light (brightness and temperature)
This example comes from a configuration of Shelly RGBW Bulb working in White mode.
@@ -1282,8 +1270,6 @@ This example comes from a configuration of Shelly RGBW Bulb working in White mod
The code also ensures bi-directional conversion of brightness scale between 0-100 (required by the device) and 0-255 (required by Home Assistant).
Add the following to your {% term "`configuration.yaml`" %} file:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -1315,8 +1301,6 @@ mqtt:
optimistic: false
```
-{% endraw %}
-
### Template schema - No brightness or color support
If you don't want brightness, color or effect support, just omit the corresponding configuration sections.
diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown
index c547b27e3c53..b5748d76c243 100644
--- a/source/_integrations/lock.mqtt.markdown
+++ b/source/_integrations/lock.mqtt.markdown
@@ -55,7 +55,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -64,7 +64,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -76,7 +76,7 @@ code_format:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`. The lock command template accepts the parameters `value` and `code`. The `value` parameter will contain the configured value for either `payload_open`, `payload_lock` or `payload_unlock`. The `code` parameter is set during the action to `open`, `lock` or `unlock` the MQTT lock and will be set `None` if no code was passed.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`. The lock command template accepts the parameters `value` and `code`. The `value` parameter will contain the configured value for either `payload_open`, `payload_lock` or `payload_unlock`. The `code` parameter is set during the action to `open`, `lock` or `unlock` the MQTT lock and will be set `None` if no code was passed.
required: false
type: template
command_topic:
@@ -167,7 +167,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -261,7 +261,7 @@ unique_id:
required: false
type: string
value_template:
- description: Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a state value from the payload.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a state value from the payload.
required: false
type: template
{% endconfiguration %}
@@ -278,8 +278,6 @@ In this section you will find some real-life examples of how to use this lock.
The example below shows a full configuration for a MQTT lock.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -303,8 +301,6 @@ mqtt:
value_template: "{{ value.x }}"
```
-{% endraw %}
-
Keep an eye on retaining messages to keep the state as you don't want to unlock your door by accident when you restart something.
For a check you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your lock manually:
diff --git a/source/_integrations/london_air.markdown b/source/_integrations/london_air.markdown
index 4165a9a62b95..f507ec0d25b7 100644
--- a/source/_integrations/london_air.markdown
+++ b/source/_integrations/london_air.markdown
@@ -66,8 +66,6 @@ locations:
To explore the data available within the `data` attribute of a sensor use the `dev-template` tool on the Home Assistant frontend. `data` contains a list of monitored sites, where the number of monitored sites are given by the `sites` attribute. If a sensor has four sites, access the fourth site by indexing the list of sites using data[3]. Each site is a dictionary with multiple fields, with entries for the `latitude` and `longitude` of that site, a `pollution_status`, `site_code`, `site_name` and `site_type`. The field `number_of_pollutants` states how many pollutants are monitored (of the possible six) and the field `pollutants` returns a list with data for each pollutant. To access the first pollutant in the list for site zero use `attributes.data[0].pollutants[0]`. Each entry in `pollutants` is a dictionary with fields for the pollutant `code`, `description`, `index`, `quality` and a `summary`. [Template sensors](/integrations/template) can then be added to display these attributes, for example:
-{% raw %}
-
```yaml
# Example template sensors
template:
@@ -79,5 +77,3 @@ template:
- name: "Westminster S02"
state: "{{ state_attr('sensor.westminster', 'data')[0].pollutants[3].summary }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/london_underground.markdown b/source/_integrations/london_underground.markdown
index 7448f08721ce..be89a55ed56e 100644
--- a/source/_integrations/london_underground.markdown
+++ b/source/_integrations/london_underground.markdown
@@ -55,8 +55,6 @@ line:
This automation triggers when the status of the Victoria line changes to something significant, and just before commutes are likely to begin. To avoid spam, it only runs if the commuter is at home in the morning or away from home in the evening.
-{% raw %}
-
```yaml
alias: Notify Paulus if there are issues on the Victoria line
mode: single
@@ -115,6 +113,4 @@ actions:
```
-{% endraw %}
-
Powered by TfL Open Data [TFL](https://api.tfl.gov.uk/).
diff --git a/source/_integrations/manual.markdown b/source/_integrations/manual.markdown
index 92595070984e..aaf85a3c31e6 100644
--- a/source/_integrations/manual.markdown
+++ b/source/_integrations/manual.markdown
@@ -259,8 +259,6 @@ automation:
Sending a Notification when the Alarm is Armed (Away/Home), Disarmed and in Pending Status
-{% raw %}
-
```yaml
- alias: 'Send notification when alarm is Disarmed'
triggers:
@@ -310,5 +308,3 @@ Sending a Notification when the Alarm is Armed (Away/Home), Disarmed and in Pend
message: >
ALARM! The alarm is armed in Home mode {{ states('sensor.date_time') }}
```
-
-{% endraw %}
diff --git a/source/_integrations/mastodon.markdown b/source/_integrations/mastodon.markdown
index 5526ca90477d..7769bc41dcf5 100644
--- a/source/_integrations/mastodon.markdown
+++ b/source/_integrations/mastodon.markdown
@@ -169,8 +169,6 @@ Mastodon holds idempotency keys for up to one hour and subsequent posts using th
Example post action that will post a status using your account's default visibility:
-{% raw %}
-
```yaml
- action: mastodon.post
data:
@@ -178,16 +176,12 @@ Example post action that will post a status using your account's default visibil
status: "A toot from Home Assistant"
```
-{% endraw %}
-
{% enddetails %}
{% details "Example private post action" %}
This will post a status to Mastodon, but visibility is marked as `private` so only followers will see it.
-{% raw %}
-
```yaml
- action: mastodon.post
data:
@@ -196,16 +190,12 @@ This will post a status to Mastodon, but visibility is marked as `private` so on
visibility: private
```
-{% endraw %}
-
{% enddetails %}
{% details "Example status post action avoiding recent duplication" %}
Example post action that will post a status, but ensure that the same status is not posted more than once within one hour. This check is performed by your Mastodon instance.
-{% raw %}
-
```yaml
actions:
- variables:
@@ -217,16 +207,12 @@ actions:
idempotency_key: {{ toot | md5 }}
```
-{% endraw %}
-
{% enddetails %}
{% details "Example media post action" %}
This will post a status to Mastodon that includes an image.
-{% raw %}
-
```yaml
- action: mastodon.post
data:
@@ -235,16 +221,12 @@ This will post a status to Mastodon that includes an image.
media: /config/www/funny_meme.png
```
-{% endraw %}
-
{% enddetails %}
{% details "Example post with media and a content warning that will not be visible in the public timeline" %}
This will post a status to Mastodon that includes an image, with a description, a content warning, and a visibility of `unlisted`, so it doesn't show in the public timeline.
-{% raw %}
-
```yaml
- action: mastodon.post
data:
@@ -256,16 +238,12 @@ This will post a status to Mastodon that includes an image, with a description,
content_warning: "This might not be funny enough"
```
-{% endraw %}
-
{% enddetails %}
{% details "Example of muting an account you follow while you are on holiday" %}
This automation will look for an event in your calendar and mute the specified account while the event is active, and unmute at the end of the event.
-{% raw %}
-
```yaml
alias: Mastodon mute example
description: "Mute a Mastodon account while a calendar event is active"
@@ -300,8 +278,6 @@ actions:
account_name: "@commute-news@mytown.online"
```
-{% endraw %}
-
{% enddetails %}
For more on how to use notifications in your automations, please see the [getting started with automation page](/getting-started/automation/).
diff --git a/source/_integrations/matrix.markdown b/source/_integrations/matrix.markdown
index f86af7a84795..ca2a09334905 100644
--- a/source/_integrations/matrix.markdown
+++ b/source/_integrations/matrix.markdown
@@ -108,8 +108,6 @@ If the command is a word command, the `data` field contains a list of the comman
This example also uses the [matrix `notify` platform](#notifications).
-{% raw %}
-
```yaml
# The Matrix integration
matrix:
@@ -184,8 +182,6 @@ automation:
message_id: "{{trigger.event.data.event_id}}"
```
-{% endraw %}
-
This configuration will:
- Listen for "!testword" in the room "#someothertest:matrix.org" (and *only*) there. If such a message is encountered, it will answer with "It looks like you wrote !testword" into the "#hasstest:matrix.org" channel and also place a ✅ reaction on the original message.
@@ -277,8 +273,6 @@ is not inside of a thread, `thread_parent` will be the same as `event_id`.
To reply inside of a thread, pass the correct message identifier of the root message into `data.thread_id` when sending
a reply message. For example:
-{% raw %}
-
```yaml
action: notify.matrix_notify
data:
@@ -287,8 +281,6 @@ data:
thread_id: "{{ trigger.event.data.thread_parent }}"
```
-{% endraw %}
-
## Actions
The integration also provides the following actions:
@@ -343,8 +335,6 @@ data:
To react to a message with an emoji reaction, use the `matrix.react` action:
-{% raw %}
-
```yaml
action: matrix.react
data:
@@ -353,8 +343,6 @@ data:
message_id: "{{ trigger.event.data.event_id }}"
```
-{% endraw %}
-
{% tip %}
Reactions do not have to be an emoji. They can be any valid string. However, emoji are the typical/traditional use
case.
diff --git a/source/_integrations/mealie.markdown b/source/_integrations/mealie.markdown
index 26596769b26a..1024cd6a2ea0 100644
--- a/source/_integrations/mealie.markdown
+++ b/source/_integrations/mealie.markdown
@@ -204,8 +204,6 @@ The `mealie.get_shopping_list_items` action gets the shopping list items for a s
Example template sensor that contains today's dinner meal plan entries:
-{% raw %}
-
```yaml
template:
- triggers:
@@ -226,8 +224,6 @@ template:
{%- endfor %}
```
-{% endraw %}
-
{% enddetails %}
## Known limitations
diff --git a/source/_integrations/mediaroom.markdown b/source/_integrations/mediaroom.markdown
index 03fd83dcfd49..a9e4eb68007a 100644
--- a/source/_integrations/mediaroom.markdown
+++ b/source/_integrations/mediaroom.markdown
@@ -63,8 +63,6 @@ If the STB is on the same network segment as Home Assistant, it can determine wh
The `play_media` function can be used in scripts to change channels:
-{% raw %}
-
```yaml
# Example play_media script to change channel
#
@@ -78,12 +76,8 @@ change_channel:
media_content_type: "channel"
```
-{% endraw %}
-
The `play_media` function can also be used to trigger actions on the set-up-box such opening the videoclub:
-{% raw %}
-
```yaml
# Example play_media script to trigger an action
#
@@ -97,8 +91,6 @@ press_button:
media_content_type: "mediaroom"
```
-{% endraw %}
-
Check [here](https://github.com/dgomes/pymediaroom) for the list of possible media_content_id's
### Example configuration with 2 STB
diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown
index 3df30690b50f..5dcb2cd84019 100644
--- a/source/_integrations/meteoalarm.markdown
+++ b/source/_integrations/meteoalarm.markdown
@@ -89,8 +89,6 @@ There are a few awareness levels:
Example automation
-{% raw %}
-
```yaml
automation:
- alias: "Alert me about weather warnings"
@@ -105,8 +103,6 @@ automation:
message: "{{state_attr('binary_sensor.meteoalarm', 'description')}} is effective on {{state_attr('binary_sensor.meteoalarm', 'effective')}}"
```
-{% endraw %}
-
{% note %}
This integration is not affiliated with MeteoAlarm and retrieves data from the website by using the XML feeds. Use it at your own risk.
{% endnote %}
diff --git a/source/_integrations/miele.markdown b/source/_integrations/miele.markdown
index 8247c07ecfad..f594ae64e8f3 100644
--- a/source/_integrations/miele.markdown
+++ b/source/_integrations/miele.markdown
@@ -233,8 +233,6 @@ Get started with these automation examples
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Notify when program ends"
triggers:
@@ -247,8 +245,6 @@ actions:
data:
message: "The appliance has finished the program."
```
-
-{% endraw %}
{% enddetails %}
### Set program and start washing machine
@@ -257,8 +253,6 @@ Load your washing machine and manually activate mobile start or remote control m
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Wash cottons early in the morning"
description: "Set cottons program and start washing machine early in the morning"
@@ -271,8 +265,6 @@ actions:
device_id:
program_id: 1
```
-
-{% endraw %}
{% enddetails %}
## Data updates
diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown
index 03ce4f4c67ec..73f2b85c21db 100644
--- a/source/_integrations/minio.markdown
+++ b/source/_integrations/minio.markdown
@@ -83,8 +83,6 @@ listen:
Automations can be triggered on new files created on the Minio server using the `data_template`.
-{% raw %}
-
```yaml
#Automatically upload new local files
automation:
@@ -120,8 +118,6 @@ automation:
file_path: "/tmp/{{ trigger.event.data.file_name }}"
```
-{% endraw %}
-
## Actions
These actions are provided:
diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown
index 2d22871b4321..9ecc7323cd5d 100644
--- a/source/_integrations/modem_callerid.markdown
+++ b/source/_integrations/modem_callerid.markdown
@@ -36,8 +36,6 @@ Devices that did not work:
An example automation:
-{% raw %}
-
```yaml
automation:
- alias: "Notify CallerID"
@@ -71,5 +69,3 @@ automation:
data:
message: "Call from {{ state_attr('sensor.phone_modem', 'cid_name') }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown
index a0ff14570635..5cc308c2f35e 100644
--- a/source/_integrations/mqtt.markdown
+++ b/source/_integrations/mqtt.markdown
@@ -51,7 +51,7 @@ MQTT (aka MQ Telemetry Transport) is a machine-to-machine or "Internet of Things
{% include integrations/config_flow.md %}
-MQTT Devices and entities can be set up through [MQTT -discovery](#mqtt-discovery) or [added manually](#manual-configured-mqtt-items) via YAML or subentries.
+MQTT devices and entities can be set up through [MQTT discovery](#mqtt-discovery) or [added manually](#manual-configured-mqtt-items) via YAML or subentries.
{% details "Configuration of MQTT components via MQTT discovery" %}
@@ -145,7 +145,7 @@ To add an MQTT device via a Subentry, follow these steps:
1. Go to **{% my integrations title="Settings > Devices & services" %}**.
2. Select the MQTT integration.
-3. Add a subentry via {% my integrations title="**Settings** > **Devices & services**" %}, click {% icon "mdi:dots-vertical" %} and select **Add MQTT device**.
+3. Add a subentry via {% my integrations title="**Settings** > **Devices & services**" %}, select {% icon "mdi:dots-vertical" %}, and select **Add MQTT device**.
A device context and one or more entities can be added to the subentry.
@@ -181,7 +181,7 @@ Add the MQTT integration, then provide your broker's hostname (or IP address) an
1. Go to **{% my integrations title="Settings > Devices & services" %}**.
2. Select the MQTT integration.
-3. Reconfigure the MQTT broker settings via {% my integrations title="**Settings** > **Devices & services**" %}, click {% icon "mdi:dots-vertical" %} and select **Reconfigure**.
+3. Reconfigure the MQTT broker settings via {% my integrations title="**Settings** > **Devices & services**" %}, select {% icon "mdi:dots-vertical" %}, and select **Reconfigure**.
MQTT subentries can also be reconfigured. Additional entities can be added, or an entity can be removed from the sub entry. Each MQTT subentry holds one MQTT device. The MQTT device must have at least one entity.
@@ -191,7 +191,7 @@ If you experience an error message like `Failed to connect due to exception: [SS
### Advanced broker configuration
-Advanced broker configuration options include setting a custom client ID, setting a client certificate and key for authentication, and enabling TLS validation of the broker's certificate for secure connection. To access the advanced settings, open the MQTT broker settings, switch on `Advanced options` and click `Next`. The advanced options will be shown by default if there are advanced settings active already.
+Advanced broker configuration options include setting a custom client ID, setting a client certificate and key for authentication, and enabling TLS validation of the broker's certificate for secure connection. To access the advanced settings, open the MQTT broker settings, switch on **Advanced options**, and select **Next**. The advanced options will be shown by default if there are advanced settings active already.
{% tip %}
Advanced broker options are accessible only when advanced mode is enabled (see user settings), or when advanced broker settings are configured already.
@@ -203,12 +203,12 @@ You can set a custom MQTT client ID, this can help when debugging. Mind that the
#### Keep alive
-The time in seconds between sending keep alive messages for this client. The default is 60 seconds. The keep alive setting should be minimal 15 seconds.
+The time in seconds between sending keep alive messages for this client. The default is 60 seconds. The keep alive setting should be at least 15 seconds.
#### Broker certificate validation
-To enable a secure connection to the broker, the broker certificate should be validated. If your broker uses a trusted certificate, then choose `Auto`. This will allow validation against certificate CAs bundled certificates. If a self-signed certificate is used, select `Custom`. A custom PEM- or DER-encoded CA certificate can be uploaded. Click `NEXT` to show the control to upload the CA certificate.
-If the server certificate does not match the hostname then validation will fail. To allow a connection without the verification of the hostname, turn the `Ignore broker certificate validation` switch on.
+To enable a secure connection to the broker, the broker certificate should be validated. If your broker uses a trusted certificate, then choose **Auto**. This validates the broker certificate against the bundled certificate authority (CA) certificates. If a self-signed certificate is used, select **Custom**. A custom PEM- or DER-encoded CA certificate can be uploaded. Select **Next** to show the control to upload the CA certificate.
+If the server certificate does not match the hostname then validation will fail. To allow a connection without the verification of the hostname, turn the **Ignore broker certificate validation** switch on.
#### MQTT Protocol
@@ -216,12 +216,12 @@ The MQTT protocol setting defaults to version `3.1.1`. If your MQTT broker suppo
#### Securing the connection
-With a secure broker connection, it is possible to use a client certificate for authentication. To set the client certificate and private key turn on the option `Use a client certificate` and click "Next" to reveal file upload controls. A client certificate and the corresponding private key must be uploaded together. Both client certificate and private key must be either PEM- or DER-encoded. If the private key is encrypted with a password, ensure you supply the correct password when uploading the client certificate and key files.
+With a secure broker connection, it is possible to use a client certificate for authentication. To set the client certificate and private key, turn on the option **Use a client certificate** and select **Next** to reveal file upload controls. A client certificate and the corresponding private key must be uploaded together. Both client certificate and private key must be either PEM- or DER-encoded. If the private key is encrypted with a password, ensure you supply the correct password when uploading the client certificate and key files.
#### Using WebSockets as transport
-You can select `websockets` as transport method if your MQTT broker supports it. When you select `websockets` and click `NEXT`, you will be able to add a WebSockets path (default = `/`) and WebSockets headers (optional). The target WebSockets URI: `ws://{broker}:{port}{WebSockets path}` is built with `broker`, `port` and `ws_path` (WebSocket path) settings.
-To configure the WebSocket's headers supply a valid JSON dictionary string. E.g. `{ "Authorization": "token" , "x-header": "some header"}`. The default transport method is `tcp`. The WebSockets transport can be secured using TLS and optionally using user credentials or a client certificate.
+You can select `websockets` as the transport method if your MQTT broker supports it. When you select `websockets` and select **Next**, you will be able to add a WebSockets path (default is `/`) and WebSockets headers (optional). The target WebSockets URI `ws://{broker}:{port}{ws_path}` is built with the `broker`, `port`, and `ws_path` (WebSocket path) settings.
+To configure the WebSocket's headers, supply a valid JSON dictionary string. For example, `{ "Authorization": "token" , "x-header": "some header"}`. The default transport method is `tcp`. The WebSockets transport can be secured using TLS and optionally using user credentials or a client certificate.
{% note %}
A configured client certificate will only be active if broker certificate validation is enabled.
@@ -251,7 +251,7 @@ See also [MQTT Discovery section](#mqtt-discovery)
### Birth and last will messages
-Home Assistant's MQTT integration supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about a disconnected client. Please note that the LWT message will be sent both in case of a clean (e.g. Home Assistant shutting down) and in case of an unclean (e.g. Home Assistant crashing or losing its network connection) disconnect.
+Home Assistant's MQTT integration supports so-called Birth and Last Will and Testament (LWT) messages. The former is used to send a message after the service has started, and the latter is used to notify other clients about a disconnected client. Note that the LWT message will be sent both in case of a clean disconnect (for example, Home Assistant shutting down) and in case of an unclean disconnect (for example, Home Assistant crashing or losing its network connection).
If a disabled entity is enabled and added after 30 seconds, the MQTT integration will be reloaded and will cause all discovered MQTT entities to be unloaded.
When MQTT starts up, all existing MQTT devices, entities, tags, and device triggers, will be unavailable until a discovery message is received and processed. A device or service that exposes the MQTT discovery should subscribe to the Birth message and use this as a trigger to send the [discovery payload](#discovery-payload). To avoid high IO loads on the MQTT broker, adding some random delay in sending the discovery payload is recommended.
@@ -263,7 +263,7 @@ Alternative approaches:
By default, Home Assistant sends `online` and `offline` to `homeassistant/status`.
-MQTT Birth and Last Will messages can be customized or disabled from the UI. To do this, click on "Configure" in the integration page in the UI, then "Re-configure MQTT" and then "Next".
+MQTT Birth and Last Will messages can be customized or disabled from the UI. To do this, select **Configure** on the integration page in the UI, then **Re-configure MQTT**, and then **Next**.
## Testing your setup
@@ -273,7 +273,7 @@ The `mosquitto` broker package ships command line tools (often as `*-clients` pa
mosquitto_pub -h 127.0.0.1 -t homeassistant/switch/1/on -m "Switch is ON"
```
-Another way to send MQTT messages manually is to use the **MQTT** integration in the frontend. Choose "Settings" on the left menu, click "Devices & services", and choose "Configure" in the "Mosquitto broker" tile. Enter something similar to the example below into the "topic" field under "Publish a packet" and press "PUBLISH" .
+Another way to send MQTT messages manually is to use the **MQTT** integration in the frontend. Select **Settings** on the left menu, select **Devices & services**, and select **Configure** in the **Mosquitto broker** tile. Enter something similar to the example below into the **topic** field under **Publish a packet** and select **Publish**.
1. Go to **{% my integrations title="Settings > Devices & services" %}**.
2. Select the Mosquitto broker integration, then select **Configure**.
@@ -289,7 +289,7 @@ and in the Payload field
ON
```
-In the "Listen to a topic" field, type `#` to see everything, or "homeassistant/switch/#" to just follow a published topic, then press "START LISTENING". The messages should appear similar to the text below:
+In the **Listen to a topic** field, type `#` to see everything, or `homeassistant/switch/#` to just follow a published topic, then select **Start listening**. The messages should appear similar to the text below:
```bash
Message 23 received on homeassistant/switch/1/power/stat/POWER at 12:16 PM:
@@ -317,7 +317,7 @@ If, for example, we have configured a `sensor`, and we have set `default_entity_
This means any MQTT entity which is part of a device will [automatically have its `friendly_name` attribute prefixed with the device name](https://developers.home-assistant.io/docs/core/entity/#has_entity_name-true-mandatory-for-new-integrations)
-Unnamed `binary_sensor`, `button`, `number` and `sensor` entities will now be named by their device class instead of being named "MQTT binary sensor" etc.
+Unnamed `binary_sensor`, `button`, `number`, and `sensor` entities will now be named by their device class instead of being named "MQTT binary sensor" and similar.
It's allowed to set an MQTT entity's name to `None` (use `null` in YAML) to mark it as the main feature of a device.
Note that on each MQTT entity, the `has_entity_name` attribute will be set to `True`. More details [can be found here](https://developers.home-assistant.io/docs/core/entity/#has_entity_name-true-mandatory-for-new-integrations).
@@ -360,7 +360,7 @@ The discovery topic needs to follow a specific format:
```
- ``: The Discovery Prefix defaults to `homeassistant` and this prefix can be [changed](#discovery-options).
-- ``: One of the supported MQTT integrations, e.g., `binary_sensor`, or `device` in case of device discovery.
+- ``: One of the supported MQTT integrations, for example, `binary_sensor`, or `device` in case of device discovery.
- ``: (*Optional*): ID of the node providing the topic, this is not used by Home Assistant but may be used to structure the MQTT topic. The ID of the node must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen).
- ``: The ID of the device. This allows for separate topics for each device. The ID of the device must only consist of characters from the character class `[a-zA-Z0-9_-]` (alphanumerics, underscore and hyphen).
@@ -1020,7 +1020,7 @@ an MQTT entity, tag, or device automation will be set up directly after receivin
When Home Assistant is restarting, discovered MQTT items with a unique ID will be unavailable until a new
discovery message is received. MQTT items without a unique ID will not be added at startup.
So a device or service using MQTT discovery must make sure a configuration message is offered
-after the **MQTT** integration has been (re)started. There are 2 common approaches to make sure the
+after the **MQTT** integration has been (re)started. There are two common approaches to make sure the
discovered items are set up at startup:
1. Using Birth and Will messages to trigger setup
@@ -1087,7 +1087,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract a device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract a device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -1100,7 +1100,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
payload_available:
@@ -1183,7 +1183,7 @@ Delete the sensor by sending an empty message.
mosquitto_pub -h 127.0.0.1 -p 1883 -t "homeassistant/binary_sensor/garden/config" -m ''
```
-For more details please refer to the [MQTT testing section](/integrations/mqtt/#testing-your-setup).
+For more details, refer to the [MQTT testing section](/integrations/mqtt/#testing-your-setup).
#### Sensors
@@ -1251,7 +1251,7 @@ A common state payload that can be parsed with the `value_template` in the senso
#### Entities with command topics
-Setting up a light, switch etc. is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/).
+Setting up a light or switch is similar but requires a `command_topic` as mentioned in the [MQTT switch documentation](/integrations/switch.mqtt/).
- Configuration topic: `homeassistant/switch/irrigation/config`
- State topic: `homeassistant/switch/irrigation/state`
@@ -1460,7 +1460,7 @@ MQTT devices often continuously generate numerous state updates. MQTT does not u
## Using Templates
-The MQTT integration supports templating. Read more [about using templates with the MQTT integration](/docs/configuration/templating/#using-templates-with-the-mqtt-integration).
+The MQTT integration supports templating. Read more [about using templates with the MQTT integration](/docs/templating/where-to-use/#mqtt).
### Examples
@@ -1480,8 +1480,6 @@ $ curl -X POST \
Use as [`script`](/integrations/script/) in automations.
-{% raw %}
-
```yaml
automation:
alias: "Send me a message when I get home"
@@ -1501,12 +1499,10 @@ script:
- action: mqtt.publish
data:
payload: "{{ message }}"
- topic: home/"{{ target }}"
+ topic: "home/{{ target }}"
retain: true
```
-{% endraw %}
-
## Publish & Dump actions
The MQTT integration will register the `mqtt.publish` action, which allows publishing messages to MQTT topics.
@@ -1524,52 +1520,38 @@ The `mqtt.publish` action publishes a message to an MQTT topic.
| `retain` | yes | If message should have the retain flag set. (default: false) |
{% note %}
-When `payload` is rendered from [template](/docs/configuration/templating/#using-value-templates-with-mqtt) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`.
+When `payload` is rendered from [template](/docs/templating/where-to-use/#mqtt) in a YAML script or automation, and the template renders to a `bytes` literal, the outgoing MQTT payload will only be sent as `raw` data, if the `evaluate_payload` option flag is set to `true`.
{% endnote %}
```yaml
topic: homeassistant/light/1/command
-payload: on
+payload: "ON"
```
-{% raw %}
-
```yaml
topic: homeassistant/light/1/state
payload: "{{ states('device_tracker.paulus') }}"
```
-{% endraw %}
-
-{% raw %}
-
```yaml
topic: "homeassistant/light/{{ states('sensor.light_active') }}/state"
payload: "{{ states('device_tracker.paulus') }}"
```
-{% endraw %}
-
Be aware that `payload` must be a string.
If you want to send JSON using the YAML editor then you need to format/escape
it properly. Like:
-{% raw %}
-
```yaml
topic: homeassistant/light/1/state
-payload: "{\"Status\":\"off\", \"Data\":\"something\"}"`
+payload: "{\"Status\":\"off\", \"Data\":\"something\"}"
```
-{% endraw %}
-
The example below shows how to publish a temperature sensor 'Bathroom Temperature'.
The `device_class` is set, so it is not needed to set the "name" option. The entity
will inherit the name from the `device_class` set and also support translations.
If you set "name" in the payload the entity name will start with the device name.
-{% raw %}
-
```yaml
action: mqtt.publish
data:
@@ -1577,7 +1559,7 @@ data:
payload: >-
{"device_class": "temperature",
"unit_of_measurement": "\u00b0C",
- "value_template": "{{ value|float }}",
+ "value_template": "{{ value | float }}",
"state_topic": "rtl_433/rtl433/devices/Acurite-986/1R/51778/temperature_C",
"unique_id": "Acurite-986-1R-51778-T",
"device": {
@@ -1589,13 +1571,11 @@ data:
}
```
-{% endraw %}
-
Example of how to use `qos` and `retain`:
```yaml
topic: homeassistant/light/1/command
-payload: on
+payload: "ON"
qos: 2
retain: true
```
diff --git a/source/_integrations/my.markdown b/source/_integrations/my.markdown
index 4d8ddac4d508..018a40c5d5fb 100644
--- a/source/_integrations/my.markdown
+++ b/source/_integrations/my.markdown
@@ -17,7 +17,7 @@ My Home Assistant allows the documentation to link you to specific pages in your
## Configuration
-This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
+This integration is enabled by default, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
Add the following section to your {% term "`configuration.yaml`" %} file:
diff --git a/source/_integrations/neato.markdown b/source/_integrations/neato.markdown
index 16e9c5118e0a..c733c34c7caf 100644
--- a/source/_integrations/neato.markdown
+++ b/source/_integrations/neato.markdown
@@ -22,6 +22,14 @@ ha_integration_type: hub
The **Neato** {% term integration %} allows you to control your [Neato Botvac Connected Robots][botvac-connected].
+{% important %}
+
+Vorwerk is phasing out Neato cloud services. On 6 October 2025, they [announced](https://support.neatorobotics.com/support/solutions/articles/204000073686) that the cloud platform can no longer be maintained in a reliable and future-proof way.
+
+Because the Neato Developer Network is no longer available, you can no longer set up this integration as a new installation. Existing setups may continue to work until the cloud is fully shut down.
+
+{% endimportant %}
+
There is support for the following platform types within Home Assistant:
- **Camera** - allows you to view the latest cleaning map.
@@ -32,7 +40,7 @@ There is support for the following platform types within Home Assistant:
## Prerequisites
-Visit [the Neato Developer Network](https://developers.neatorobotics.com/applications) and create a new app.
+Previously, you would visit the Neato Developer Network to create a new app and obtain credentials. The Neato Developer Network is no longer available, so new credentials can no longer be created. The steps below are kept for reference for users who already have existing credentials.
{% important %}
diff --git a/source/_integrations/nest.markdown b/source/_integrations/nest.markdown
index 087fc56d4114..045828abeca4 100644
--- a/source/_integrations/nest.markdown
+++ b/source/_integrations/nest.markdown
@@ -470,8 +470,6 @@ You can use the Nest Device Trigger payload fields `attachment.image` or `attach
Example for cameras that support Clip Previews used with iOS which can render video in notifications.
-{% raw %}
-
```yaml
action: notify.mobile_app_iphone
data:
@@ -482,16 +480,12 @@ data:
video: "{{ trigger.event.data.attachment.video }}"
```
-{% endraw %}
-
{% enddetails %}
{% details "Example Action: Clip Preview thumbnail (gif) for Android or iOS" %}
Example for cameras that support Clip Previews, but transcoded to an animated gif (Android does not render video notifications).
-{% raw %}
-
```yaml
action: notify.mobile_app_android
data:
@@ -501,16 +495,12 @@ data:
image: "{{ trigger.event.data.attachment.image }}"
```
-{% endraw %}
-
{% enddetails %}
{% details "Example Action: Snapshot (jpg) attachment for Android or iOS" %}
Example for cameras that support Snapshot (jpg) on either Android or iOS.
-{% raw %}
-
```yaml
action: notify.mobile_app
data:
@@ -520,8 +510,6 @@ data:
image: "{{ trigger.event.data.attachment.image }}"
```
-{% endraw %}
-
{% enddetails %}
{% note %}
diff --git a/source/_integrations/netatmo.markdown b/source/_integrations/netatmo.markdown
index b64dc376e162..4df02b1109f8 100644
--- a/source/_integrations/netatmo.markdown
+++ b/source/_integrations/netatmo.markdown
@@ -207,8 +207,6 @@ Example:
Example:
-{% raw %}
-
```yaml
# Example automation for Netatmo Welcome
- alias: "Motion at home"
@@ -227,12 +225,8 @@ Example:
title: "Netatmo event"
```
-{% endraw %}
-
Example:
-{% raw %}
-
```yaml
# Example automation for Netatmo Presence
- alias: "Motion at home"
@@ -251,12 +245,8 @@ Example:
title: Netatmo event
```
-{% endraw %}
-
Example:
-{% raw %}
-
```yaml
# Example automation
- alias: "Door or window open or movement"
@@ -282,8 +272,6 @@ Example:
title: "Netatmo event"
```
-{% endraw %}
-
## Development / Testing with your own client ID
To enable the Netatmo integration with your own development credentials, you have
diff --git a/source/_integrations/netgear_lte.markdown b/source/_integrations/netgear_lte.markdown
index 823d3bbf7ccc..b9dfdfefaa3e 100644
--- a/source/_integrations/netgear_lte.markdown
+++ b/source/_integrations/netgear_lte.markdown
@@ -93,8 +93,6 @@ The `netgear_lte.set_option` action sets modem configuration options (otherwise
The following automation example processes incoming SMS messages with the [Conversation](/integrations/conversation/) integration and then deletes the message from the inbox.
-{% raw %}
-
```yaml
automation:
- alias: "SMS conversation"
@@ -110,5 +108,3 @@ automation:
host: "{{ trigger.event.data.host }}"
sms_id: "{{ trigger.event.data.sms_id }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/nfandroidtv.markdown b/source/_integrations/nfandroidtv.markdown
index 263cdfcd5c1a..6e4bd4aa0345 100644
--- a/source/_integrations/nfandroidtv.markdown
+++ b/source/_integrations/nfandroidtv.markdown
@@ -113,8 +113,6 @@ icon:
Example of an automation with an action, full configuration:
-{% raw %}
-
```yaml
action: notify.living_room_tv
data:
@@ -129,6 +127,4 @@ data:
interrupt: 0
```
-{% endraw %}
-
Please note that `path` is validated against the `allowlist_external_dirs` in the {% term "`configuration.yaml`" %}.
diff --git a/source/_integrations/nordpool.markdown b/source/_integrations/nordpool.markdown
index 16da9a40afb8..8e95fd3bbf93 100644
--- a/source/_integrations/nordpool.markdown
+++ b/source/_integrations/nordpool.markdown
@@ -149,8 +149,6 @@ You can get your `config_entry` by using actions within the [developer tools](/d
#### Example action with data
-{% raw %}
-
```yaml
action: nordpool.get_prices_for_date
data:
@@ -162,8 +160,6 @@ data:
currency: SEK
```
-{% endraw %}
-
### Get price indices for date
The integration can also provide price indices for any date with published prices. Use the "Get price indices for date" action to retrieve pricing information with a custom resolution time.
@@ -199,8 +195,6 @@ You can get your `config_entry` by using actions within the [developer tools](/d
#### Example action with data
-{% raw %}
-
```yaml
action: nordpool.get_prices_for_date
data:
@@ -212,8 +206,6 @@ data:
currency: SEK
```
-{% endraw %}
-
## Examples
A template sensor to add VAT and fixed cost is useful to get the actual energy cost in the energy dashboard.
@@ -237,8 +229,6 @@ The template below takes the current price attributes, adds 0.1293 EUR as fixed
A template sensor to add VAT and a fixed cost from an helper entity `input_number.add_fixed_cost`.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -254,8 +244,6 @@ template:
{{ ((cost + add_cost) * 1.25) | round(2, default=0) }}
```
-{% endraw %}
-
### Tomorrow's lowest price
Using a trigger template, you can create a template sensor to calculate tomorrow's lowest price which also puts the list of all prices in the attributes of the sensor. All prices are returned in [Currency]/MWh.
@@ -270,8 +258,6 @@ Below example will convert the action call response to kWh prices in the selecte
You can get your `config_entry` by using actions within the [developer tools](/docs/tools/dev-tools/): use one of the Nord Pool actions and view the YAML.
{% endtip %}
-{% raw %}
-
```yaml
template:
- trigger:
@@ -305,8 +291,6 @@ template:
{{data.prices}}
```
-{% endraw %}
-
diff --git a/source/_integrations/notify.markdown b/source/_integrations/notify.markdown
index 74191389bebb..a288d7ee166d 100644
--- a/source/_integrations/notify.markdown
+++ b/source/_integrations/notify.markdown
@@ -79,8 +79,6 @@ Under {% my developer_services title="**Settings** > **Developer tools** > **Act
If you switch to view the YAML data under **Developer tools**, it will appear as below. The same {% term action %} can be chosen in {% term automation %}. The YAML will appear the same:
-{% raw %}
-
```yaml
action: notify.send_message
data:
@@ -89,11 +87,7 @@ data:
title: "Status changed"
```
-{% endraw %}
-
-The notify integration supports specifying [templates](/docs/configuration/templating/). This will allow you to use the current state of entities in Home Assistant in your notifications, or use more complex logic to decide the message that is sent.
-
-{% raw %}
+The notify integration supports specifying [templates](/docs/templating/). This will allow you to use the current state of entities in Home Assistant in your notifications, or use more complex logic to decide the message that is sent.
```yaml
actions:
@@ -103,27 +97,19 @@ actions:
message: "You have {{ states('todo.shopping_list') }} items on your shopping list."
```
-{% endraw %}
-
### Examples with the legacy notify action
In the **Developer tools**, on the **Action** tab, select the **Notifications: Send a persistent notification** action. Enter a message and test sending it.
If you switch to view the YAML data under **Developer tools**, it will appear as below. The same {% term action %} can be chosen in {% term automation %} actions, whose YAML will appear the same:
-{% raw %}
-
```yaml
action: notify.persistent_notification
data:
message: "Can you hear me now?"
```
-{% endraw %}
-
-The notify integration supports specifying [templates](/docs/configuration/templating/). This will allow you to use the current state of entities in Home Assistant in your notifications, or use more complex logic to decide the message that is sent.
-
-{% raw %}
+The notify integration supports specifying [templates](/docs/templating/). This will allow you to use the current state of entities in Home Assistant in your notifications, or use more complex logic to decide the message that is sent.
```yaml
actions:
@@ -132,15 +118,9 @@ actions:
message: "You have {{ states('todo.shopping_list') }} items on your shopping list."
```
-{% endraw %}
-
-{% raw %}
-
```yaml
actions:
- action: notify.persistent_notification
data:
message: "The sun is {% if is_state('sun.sun', 'above_horizon') %}up{% else %}down{% endif %}!"
```
-
-{% endraw %}
diff --git a/source/_integrations/notify.mqtt.markdown b/source/_integrations/notify.mqtt.markdown
index aea6c966007e..363c2574a60a 100644
--- a/source/_integrations/notify.mqtt.markdown
+++ b/source/_integrations/notify.mqtt.markdown
@@ -48,7 +48,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the device's availability from the `topic`. To determine the device's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -57,7 +57,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the device's availability from the `availability_topic`. To determine the device's availability result, the template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the device's availability from the `availability_topic`. To determine the device's availability result, the template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -65,7 +65,7 @@ availability_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -152,7 +152,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
diff --git a/source/_integrations/ntfy.markdown b/source/_integrations/ntfy.markdown
index 1394c9441adf..e345fb9b65ac 100644
--- a/source/_integrations/ntfy.markdown
+++ b/source/_integrations/ntfy.markdown
@@ -93,8 +93,6 @@ The **ntfy** integration will add a {% term device %} with an associated notify
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: notify.send_message
data:
@@ -102,8 +100,6 @@ data:
entity_id: notify.mytopic
```
-{% endraw %}
-
{% enddetails %}
## Events
@@ -114,8 +110,6 @@ You can use {% term event %} {% term entities %} in automations. For example, to
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
triggers:
- trigger: numeric_state
@@ -129,8 +123,6 @@ actions:
message: "Received new ntfy notification"
```
-{% endraw %}
-
{% enddetails %}
## Updates
@@ -168,8 +160,6 @@ For more customizable notifications, use the `ntfy.publish` action instead of `n
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: ntfy.publish
data:
@@ -199,8 +189,6 @@ target:
entity_id: notify.mytopic
```
-{% endraw %}
-
{% enddetails %}
{% note %}
@@ -269,8 +257,6 @@ The `ntfy.clear` action dismisses a previously sent message from a ntfy topic by
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: ntfy.clear
target:
@@ -279,8 +265,6 @@ data:
sequence_id: my-download-123
```
-{% endraw %}
-
{% enddetails %}
### Delete notification
@@ -293,8 +277,6 @@ The `ntfy.delete` action deletes a message from a ntfy topic.
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: ntfy.delete
target:
@@ -303,8 +285,6 @@ data:
sequence_id: my-download-123
```
-{% endraw %}
-
{% enddetails %}
## Sensors
diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown
index 4008a3db5697..056862a012c8 100644
--- a/source/_integrations/number.mqtt.markdown
+++ b/source/_integrations/number.mqtt.markdown
@@ -54,7 +54,7 @@ availability_mode:
type: string
default: latest
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -145,7 +145,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -213,7 +213,7 @@ unit_of_measurement:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value."
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/nzbget.markdown b/source/_integrations/nzbget.markdown
index 477d0dd1383b..f966e26764b5 100644
--- a/source/_integrations/nzbget.markdown
+++ b/source/_integrations/nzbget.markdown
@@ -47,8 +47,6 @@ The event includes the name, category, and status of the downloaded nzb.
Example automation to send a Telegram message on a completed download:
-{% raw %}
-
```yaml
- alias: "Completed Torrent"
triggers:
@@ -63,8 +61,6 @@ Example automation to send a Telegram message on a completed download:
message: "{{trigger.event.data.name}}"
```
-{% endraw %}
-
## Actions
Available actions:
diff --git a/source/_integrations/ohme.markdown b/source/_integrations/ohme.markdown
index 980deb0f47db..87398ffd5ddf 100644
--- a/source/_integrations/ohme.markdown
+++ b/source/_integrations/ohme.markdown
@@ -162,7 +162,6 @@ If you have a home battery system:
To be notified when the status of the charger changes, for example when a vehicle is plugged in, you can use an automation.
-{% raw %}
```yaml
# Example automation
triggers:
@@ -175,8 +174,6 @@ actions:
data:
message: "Vehicle plugged in"
```
-{% endraw %}
-
## Troubleshooting
diff --git a/source/_integrations/ollama.markdown b/source/_integrations/ollama.markdown
index abc25becbbba..58a088b8cceb 100644
--- a/source/_integrations/ollama.markdown
+++ b/source/_integrations/ollama.markdown
@@ -12,7 +12,7 @@ ha_codeowners:
ha_domain: ollama
ha_integration_type: service
related:
- - docs: /docs/configuration/templating/
+ - docs: /docs/templating/
title: Home Assistant Templating
- docs: /voice_control/voice_remote_expose_devices/
title: Exposing entities to Assist
@@ -42,7 +42,7 @@ API Key:
Model:
description: Name of the [Ollama model](https://ollama.com/library) to use, such as `mistral` or `llama2:13b`. Models will be automatically downloaded during setup.
Instructions:
- description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/templating/).
Control Home Assistant:
description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it. This feature is considered experimental and see [Controlling Home Assistant](#controlling-home-assistant) below for details on model limitations.
Context window size:
diff --git a/source/_integrations/onedrive.markdown b/source/_integrations/onedrive.markdown
index 37fac31d9279..076405cd28e0 100644
--- a/source/_integrations/onedrive.markdown
+++ b/source/_integrations/onedrive.markdown
@@ -117,8 +117,6 @@ Send an alert when the drive usage is close to the storage limit and needs clean
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: Alert when OneDrive is close to storage limit
description: Send notification to phone when drive needs cleanup.
@@ -142,8 +140,6 @@ actions:
states('sensor.my_drive_total_available') }}GB. Only {{ states('sensor.my_drive_remaining_storage') }}GB remaining.
mode: single
```
-
-{% endraw %}
{% enddetails %}
diff --git a/source/_integrations/openai_conversation.markdown b/source/_integrations/openai_conversation.markdown
index 7a50f7d92662..d4ce37cbe278 100644
--- a/source/_integrations/openai_conversation.markdown
+++ b/source/_integrations/openai_conversation.markdown
@@ -66,7 +66,7 @@ The Conversation and AI Task subentries have the following configuration options
{% configuration_basic %}
Instructions:
- description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/configuration/templating/).
+ description: Instructions for the AI on how it should respond to your requests. It is written using [Home Assistant Templating](/docs/templating/).
Control Home Assistant:
description: If the model is allowed to interact with Home Assistant. It can only control or provide information about entities that are [exposed](/voice_control/voice_remote_expose_devices/) to it.
Recommended settings:
@@ -139,7 +139,6 @@ with the requested image.
| `quality` | yes | The quality of the image that will be generated. `hd` creates images with finer details and greater consistency across the image. | standard |
| `style` | yes | The style of the generated images. Must be one of `vivid` or `natural`. Vivid causes the model to lean towards generating hyper-real and dramatic images. Natural causes the model to produce more natural, less hyper-real looking images. | vivid |
-{% raw %}
```yaml
action: openai_conversation.generate_image
data:
@@ -150,7 +149,6 @@ data:
style: vivid
response_variable: generated_image
```
-{% endraw %}
The response data field `url` will contain a URL to the generated image and `revised_prompt` will contain the updated prompt used.
@@ -171,7 +169,6 @@ Select **YAML Mode** to reveal the *config_entry* value to be used in the below

-{% raw %}
```yaml
automation:
- alias: "Update image when weather changes"
@@ -203,8 +200,6 @@ template:
url: "{{ trigger.event.data.url }}"
```
-{% endraw %}
-
### Action: Generate content
The `openai_conversation.generate_content` action allows you to ask OpenAI to generate a content based on a prompt. This action
@@ -226,8 +221,6 @@ with the response from OpenAI.
- **Example**: /tmp/image.jpg
- **Optional**: yes
-{% raw %}
-
```yaml
action: openai_conversation.generate_content
data:
@@ -241,14 +234,10 @@ data:
response_variable: generated_content
```
-{% endraw %}
-
The response data field `text` will contain the generated content.
Another example with multiple images:
-{% raw %}
-
```yaml
action: openai_conversation.generate_content
data:
@@ -263,8 +252,6 @@ data:
response_variable: generated_content
```
-{% endraw %}
-
## Known Limitations
Currently the integration does not have any known limitations.
diff --git a/source/_integrations/opendisplay.markdown b/source/_integrations/opendisplay.markdown
index 9cb422662518..13a482844ed7 100644
--- a/source/_integrations/opendisplay.markdown
+++ b/source/_integrations/opendisplay.markdown
@@ -76,8 +76,6 @@ The `opendisplay.upload_image` action allows you to upload an image to a display
{% details "Upload an image from local media" %}
-{% raw %}
-
```yaml
action: opendisplay.upload_image
data:
@@ -87,8 +85,6 @@ data:
media_content_type: "image/png"
```
-{% endraw %}
-
{% enddetails %}
### Updating the display on a schedule
@@ -97,8 +93,6 @@ You can use an {% term automation %} to refresh the display at a set time each d
{% details "Update display daily at 8:00 AM" %}
-{% raw %}
-
```yaml
triggers:
- trigger: time
@@ -112,8 +106,6 @@ actions:
media_content_type: "image/png"
```
-{% endraw %}
-
{% enddetails %}
## Known limitations
diff --git a/source/_integrations/opensky.markdown b/source/_integrations/opensky.markdown
index 3444c872cb7e..293129f38876 100644
--- a/source/_integrations/opensky.markdown
+++ b/source/_integrations/opensky.markdown
@@ -54,8 +54,6 @@ Both events have two attributes in common:
To receive notifications of the entering flights using the [Home Assistant Companion App](https://companion.home-assistant.io/), add the following lines to your {% term "`configuration.yaml`" %} file:
-{% raw %}
-
```yaml
automation:
- alias: "Flight entry notification"
@@ -67,12 +65,9 @@ automation:
data:
message: "Flight entry of {{ trigger.event.data.callsign }}"
```
-{% endraw %}
One can also get a direct link to the OpenSky website to see the flight using the icao24 identification:
-{% raw %}
-
```yaml
automation:
- alias: "Flight entry notification"
@@ -91,4 +86,3 @@ automation:
https://opensky-network.org/aircraft-profile?icao24={{
trigger.event.data.icao24 }}
```
-{% endraw %}
diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown
index a4f463586776..2ae52e939512 100644
--- a/source/_integrations/openuv.markdown
+++ b/source/_integrations/openuv.markdown
@@ -97,7 +97,6 @@ configured via the config entry options within the UI. Two parameters are given:
Update the UV index data every 20 minutes while the sun is at least 10 degrees above the
horizon:
-{% raw %}
```yaml
automation:
- alias: "Update OpenUV"
@@ -114,7 +113,6 @@ automation:
target:
entity_id: sensor.LATITUDE_LONGITUDE_current_uv_index
```
-{% endraw %}
Update the protection window once a day at 12:00pm:
@@ -135,7 +133,6 @@ varies, you need to know the total hours of daylight on the longest day of the y
for example, this is 17 hours, you can perform 2 calls around every 45 minutes without
running into the 50 API call limit per day:
-{% raw %}
```yaml
automation:
- alias: "Update OpenUV"
@@ -172,7 +169,6 @@ automation:
- binary_sensor.LATITUDE_LONGITUDE_protection_window
- sensor.LATITUDE_LONGITUDE_current_uv_index
```
-{% endraw %}
## Expired API Keys and Re-authentication
diff --git a/source/_integrations/opower.markdown b/source/_integrations/opower.markdown
index fd2c323d261b..500c686b9636 100644
--- a/source/_integrations/opower.markdown
+++ b/source/_integrations/opower.markdown
@@ -49,6 +49,7 @@ More than 175 utilities use Opower. Currently only the following utilities are s
- National Grid NY Long Island
- National Grid NY Metro
- National Grid NY Upstate
+- Northern Indiana Public Service Company (NIPSCO)
- Pacific Gas & Electric (PG&E)
- Portland General Electric (PGE)
- Puget Sound Energy (PSE)
diff --git a/source/_integrations/otbr.markdown b/source/_integrations/otbr.markdown
index a0a579b5915e..b63d3cd0176f 100644
--- a/source/_integrations/otbr.markdown
+++ b/source/_integrations/otbr.markdown
@@ -23,4 +23,6 @@ Installing this integration manually is an advanced use case, for example if you
{% include integrations/config_flow.md %}
+When asked to provide a URL, enter the address of your border router's REST API. The URL uses plain HTTP, not HTTPS, and includes the host and port of your border router. A standard OpenThread border router exposes its REST API on port `8081`, so your URL typically looks like `http://192.168.1.42:8081`. Replace the IP address with your border router's IP address.
+
To view the app documentation, go to {% my supervisor_addon title="**Settings** > **Apps** > **OpenThread Border Router**" addon="core_openthread_border_router" %} and select the **Documentation** tab.
diff --git a/source/_integrations/overseerr.markdown b/source/_integrations/overseerr.markdown
index 8d03d4467675..9903e2a4284d 100644
--- a/source/_integrations/overseerr.markdown
+++ b/source/_integrations/overseerr.markdown
@@ -108,8 +108,6 @@ The integration can be used to build automations to help and notify you of new m
{% details "Send me a push notification on a new request" %}
-{% raw %}
-
```yaml
alias: "Overseerr push notification"
description: "Send me a push notification on a new media request"
@@ -133,14 +131,10 @@ actions:
{{ state_attr('event.overseerr_last_media_event', 'subject') }} has been
requested
```
-
-{% endraw %}
{% enddetails %}
{% details "Send notification when open issues exceed threshold" %}
-{% raw %}
-
```yaml
alias: "Notify when too many open issues"
description: "Alert when open issues in Overseerr exceed 10"
@@ -156,14 +150,10 @@ actions:
Warning: {{ states('sensor.overseerr_open_issues') }} open issues in Overseerr!
title: "High Issue Count"
```
-
-{% endraw %}
{% enddetails %}
{% details "Track audio issues trend with statistics sensor" %}
-{% raw %}
-
```yaml
alias: "Monitor audio issue trends"
description: "Create a statistics sensor to track audio issue trends over time"
@@ -176,14 +166,10 @@ sensor:
days: 7
sampling_size: 100
```
-
-{% endraw %}
{% enddetails %}
{% details "Alert when video issues spike" %}
-{% raw %}
-
```yaml
alias: "Video issues spike alert"
description: "Notify when video issues increase significantly"
@@ -199,14 +185,10 @@ actions:
Video issues are elevated: {{ states('sensor.overseerr_video_issues') }} issues detected
title: "Video Quality Alert"
```
-
-{% endraw %}
{% enddetails %}
{% details "Daily issue report" %}
-{% raw %}
-
```yaml
alias: "Daily Overseerr issue summary"
description: "Send a daily report of all issue types"
@@ -229,22 +211,16 @@ actions:
Audio: {{ states('sensor.overseerr_audio_issues') }}
Subtitle: {{ states('sensor.overseerr_subtitle_issues') }}
```
-
-{% endraw %}
{% enddetails %}
{% details "Create dashboard badge for subtitle issues" %}
-{% raw %}
-
```yaml
type: entity
entity: sensor.overseerr_subtitle_issues
name: Subtitle Issues
icon: mdi:subtitles
```
-
-{% endraw %}
{% enddetails %}
## Data updates
diff --git a/source/_integrations/palazzetti.markdown b/source/_integrations/palazzetti.markdown
index 982420837639..48d046bc7871 100644
--- a/source/_integrations/palazzetti.markdown
+++ b/source/_integrations/palazzetti.markdown
@@ -139,8 +139,6 @@ Get started quickly with these automation examples.
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Lower the temperature when last person leaves"
description: "Lower the temperature when last person leaves the home"
@@ -158,7 +156,7 @@ actions:
entity_id: climate.my_stove
```
-{% endraw %} {% enddetails %}
+{% enddetails %}
## Known limitations
diff --git a/source/_integrations/paperless_ngx.markdown b/source/_integrations/paperless_ngx.markdown
index bf3b9295a9f9..3d8de4fd94c5 100644
--- a/source/_integrations/paperless_ngx.markdown
+++ b/source/_integrations/paperless_ngx.markdown
@@ -89,8 +89,6 @@ This integration provides {% term sensors %} for the following information from
## Example automations
{% details "Send a push notification if a new document is available" %}
-{% raw %}
-
```yaml
alias: New document push notification
description: Sends a push notification if a new document is available
@@ -112,8 +110,6 @@ actions:
data:
message: A new document is available.
```
-
-{% endraw %}
{% enddetails %}
## Data updates
diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown
index d7984b48c0f6..e380e7764695 100644
--- a/source/_integrations/persistent_notification.markdown
+++ b/source/_integrations/persistent_notification.markdown
@@ -62,9 +62,7 @@ actions:
title: "Custom subject"
```
-If you want to show some runtime information, you have to use [templates](/docs/configuration/templating/).
-
-{% raw %}
+If you want to show some runtime information, you have to use [templates](/docs/templating/).
```yaml
actions:
@@ -75,8 +73,6 @@ actions:
message: "Temperature {{ state_attr('climate.thermostat', 'current_temperature') }}"
```
-{% endraw %}
-
The `persistent_notification.dismiss` action requires a `notification_id`.
| Data attribute | Optional | Description |
diff --git a/source/_integrations/person.markdown b/source/_integrations/person.markdown
index b47f854b1c19..fe8f10883ea4 100644
--- a/source/_integrations/person.markdown
+++ b/source/_integrations/person.markdown
@@ -10,54 +10,56 @@ ha_iot_class: Calculated
ha_integration_type: system
---
-The **Person** {% term integration %} allows connecting [device tracker](/integrations/device_tracker/) entities to one or more person entities. The state updates of a connected device tracker will set the state of the person. When multiple device trackers are used, the state of person will be determined in this order:
+The **Person** {% term integration %} allows connecting [device tracker](/integrations/device_tracker/) entities to one or more person entities. The state updates of a connected device tracker set the state of the person. When you use multiple device trackers, the state of the person is determined in this order:
-1. If there are stationary trackers (non-GPS trackers, e.g., a router or Bluetooth device tracker) presenting the state `home`, the tracker most recently updated will be used.
+1. If there are stationary trackers (non-GPS trackers, such as a router or Bluetooth device tracker) presenting the state `home`, the tracker most recently updated will be used.
2. If there are trackers of type `gps`, then the most recently updated tracker will be used.
3. Otherwise, the latest tracker with state `not_home` will be used.
-Let's say, for example, that you have three trackers: `tracker_gps`, `tracker_router` and `tracker_ble`.
+Let's say, for example, that you have three trackers: `tracker_gps`, `tracker_router`, and `tracker_ble`.
-1. You're at home, all three devices show state `home` - the state of your Person entity will be `home` with source `tracker_router` or `tracker_ble`, whichever was most recently updated.
-2. You just left home. `tracker_gps` shows state `not_home`, but the other two trackers show state `home` (they may not have yet updated due to their `consider_home` setting see [device_tracker](/integrations/device_tracker/#configuring-a-device_tracker-platform)). Since the stationary trackers have priority, you are considered `home`.
+1. You're at home, and all three devices show state `home`. The state of your Person entity will be `home` with source `tracker_router` or `tracker_ble`, whichever was most recently updated.
+2. You just left home. `tracker_gps` shows state `not_home`, but the other two trackers show state `home` (they may not have yet updated due to their `consider_home` setting, see [device_tracker](/integrations/device_tracker/#configuring-a-device_tracker-platform)). Since the stationary trackers have priority, you are considered `home`.
3. After some time, both stationary trackers show state `not_home`. Now your Person entity has state `not_home` with source `tracker_gps`.
-4. While you are away from home, your Home Assistant instance is restarted. Until the `tracker_gps` receives an update, your status will be determined by the stationary trackers, since they will have the most recent update after a restart. Obviously, the state will be `not_home`.
+4. While you are away from home, your Home Assistant instance is restarted. Until the `tracker_gps` receives an update, your status will be determined by the stationary trackers, since they will have the most recent update after a restart. The state will be `not_home`.
5. Then you're going into a zone you have defined as `zone1`, `tracker_gps` sends an update, and now your state is `zone1` with source `tracker_gps`.
6. You've returned home and your mobile device has connected to the router, but `tracker_gps` hasn't updated yet. Your state will be `home` with source `tracker_router`.
7. After the `tracker_gps` update occurs, your state will still be `home` with source `tracker_router` or `tracker_ble`, whichever has the most recent update.
-In short, when you're at home, your position is determined first by stationary trackers (if any) and then by GPS. When you're outside your home, your position is determined firstly by GPS and then by stationary trackers.
+In short, when you're at home, your position is determined first by stationary trackers (if any) and then by GPS. When you're outside your home, your position is determined first by GPS and then by stationary trackers.
-**Hint**: When you use multiple device trackers together, especially stationary and GPS trackers, it's advisable to set `consider_home` for stationary trackers as low as possible see [device_tracker](/integrations/device_tracker/#configuring-a-device_tracker-platform)).
+{% tip %}
+When you use multiple device trackers together, especially stationary and GPS trackers, it's advisable to set `consider_home` for stationary trackers as low as possible (see [device_tracker](/integrations/device_tracker/#configuring-a-device_tracker-platform)).
+{% endtip %}
-You can manage persons {% my people title="via the UI from the person page inside the configuration panel" %} or via `YAML` in your {% term "`configuration.yaml`" %} file.
+You can manage persons {% my people title="via the UI from the person page inside the configuration panel" %} or via YAML in your {% term "`configuration.yaml`" %} file.
## Adding a person to Home Assistant
-If you have administrator rights, you can add other persons to Home Assistant and create user accounts for them. Depending on the rights you give them, they can then use Home Assistant on their own devices, can have their own dashboards, and be used in automations.
+If you have administrator rights, you can add other persons to Home Assistant and create user accounts for them. Depending on the rights you give them, they can then use Home Assistant on their own devices, have their own dashboards, and be included in automations.
1. Go to {% my people title="**Settings** > **People**" %} and select **Add person**.
2. Enter their **Name**.
3. Add an image if you like.
-4. Under **Allow login**, select if they should be able to log in.
- - If they cannot log in, they do not get a user account, and they cannot do much with Home Assistant.
+4. Under **Allow login**, select whether they should be able to sign in.
+ - If they cannot sign in, they do not get a user account and cannot do much with Home Assistant.
- They cannot have their own dashboard, for example.
- - But they can still be used for device tracking and show up on a map and be used in automations.
-5. If they are able to log in, fill in the user information.
- - Check if the username is correct. A suggestion is made based on the person name. But they do not have to be identical.
+ - But they can still be used for device tracking, show up on a map, and be included in automations.
+5. If they are able to sign in, fill in the user information.
+ - Check if the username is correct. Home Assistant suggests one based on the person name, but the two do not have to be identical.
- The username must be lowercase and contain no spaces.
- - The username is required to log in.
+ - The username is required to sign in.
- The person name is the name displayed in the UI.
- Enter a password and store it in a safe location.
- Define if they should have **Local access only**.
- - If this is enabled, they won't have access to Home Assistant when they are outside your network, for example from their phone.
+ - If this is enabled, they won't have access to Home Assistant when they are outside your network, for example, from their phone.
- Define if they should have **Administrator** rights.
- Select **Create**.
-6. If you have already set up devices for [presence detection](/getting-started/presence-detection/), **select the devices that belong to this person**.
+6. If you have already set up devices for [presence detection](/getting-started/presence-detection/), select the devices that belong to this person.
### Customizing the picture for a person
-You can easily upload a picture in the frontend. Simply click on a person, select or drop an image in the input field, and then crop it.
+To upload a picture in the frontend, open a person's page, select an image file or drag and drop one into the input field, and then crop it.
@@ -65,7 +67,7 @@ See the documentation about [hosting files](/integrations/http/#hosting-files) f
## Configuring the `person` integration via the Home Assistant configuration panel
-This integration is by default enabled, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, the following example shows you how to enable this integration manually:
+This integration is enabled by default, unless you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration. If that is the case, enable it manually by adding the following to your configuration:
```yaml
person:
@@ -86,7 +88,7 @@ person:
{% configuration %}
id:
- description: A unique id of the person.
+ description: A unique ID for the person.
required: true
type: string
name:
@@ -94,7 +96,7 @@ person:
required: true
type: string
user_id:
- description: The user ID of the Home Assistant user account for the person. `user_id` (aka `ID`) of users can be inspected in the "Users"/"Manage users" screen in the configuration panel.
+ description: The user ID of the Home Assistant user account for the person. You can find the `user_id` (also shown as `ID`) under **Settings** > **People**, on the **Users** tab.
required: false
type: string
device_trackers:
@@ -103,7 +105,7 @@ person:
type: [string, list]
{% endconfiguration %}
-An extended example would look like the following sample:
+Here's an extended example:
```yaml
# Example configuration.yaml entry
diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown
index 82e4d0143102..362459cce114 100644
--- a/source/_integrations/plant.markdown
+++ b/source/_integrations/plant.markdown
@@ -124,8 +124,6 @@ The main sources of the data will usually be a [MiFlora sensor](/integrations/mi
If you want to get the data via a PlantGateway, this is a typical configuration for the MQTT sensors:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
plant:
@@ -170,6 +168,4 @@ sensor:
unit_of_measurement: "Lux"
```
-{% endraw %}
-
You have to replace the `state_topic` with the value that you configured in the PlantGateway. It also depends on the global configuration of your MQTT server.
diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown
index 1fd8a3cc2547..0494cc62d32d 100644
--- a/source/_integrations/plex.markdown
+++ b/source/_integrations/plex.markdown
@@ -77,8 +77,6 @@ In addition to the item count, the last added media item (movie, album, or episo
Example automation to use the `last_added_item` attribute on library sensors to notify when new media has been added:
-{% raw %}
-
```yaml
alias: "Plex - New media added"
triggers:
@@ -99,8 +97,6 @@ actions:
message: "{{ trigger.to_state.attributes.last_added_item }}"
```
-{% endraw %}
-
{% important %}
The library sensors are disabled by default, but can be enabled via the Plex integration page. After the sensors are enabled, you may need to add a new item to your library before the last added media attribute is populated.
{% endimportant %}
@@ -111,8 +107,6 @@ A `button.scan_clients` entity is available to discover new controllable Plex cl
Example script:
-{% raw %}
-
```yaml
play_plex_on_tv:
sequence:
@@ -141,8 +135,6 @@ play_plex_on_tv:
media_content_type: movie
```
-{% endraw %}
-
## Update
Notifications of new releases of Plex Media Server are shown using an Update entity. Detailed release notes are provided.
diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown
index 562b13fe3595..40aeb2c94e3d 100644
--- a/source/_integrations/point.markdown
+++ b/source/_integrations/point.markdown
@@ -109,8 +109,6 @@ automation:
The events shown as [binary sensors](#binary-sensor) are sent to Home Assistant as webhooks with the `event_type` set to `point_webhook_received`. Below is an example of how to use such a webhook do note the `trigger.event.data.event.device_id` which translates to the id of the Point device that sent the event.
-{% raw %}
-
```yaml
# Example configuration.yaml Automation entry
automation:
@@ -129,8 +127,6 @@ automation:
message: "Button press on Point {{ trigger.event.data.event.device_id }}"
```
-{% endraw %}
-
## Sensor
Each Point exposes the following sensors:
diff --git a/source/_integrations/pooldose.markdown b/source/_integrations/pooldose.markdown
index d2a5e4510271..583af526ad29 100644
--- a/source/_integrations/pooldose.markdown
+++ b/source/_integrations/pooldose.markdown
@@ -215,7 +215,6 @@ This integration provides the following entities.
This automation monitors your pool's ORP level and sends a notification when it goes outside the recommended range.
-{% raw %}
```yaml
automation:
- alias: "Pool ORP out of range"
@@ -234,13 +233,11 @@ automation:
title: "Pool ORP alert"
message: "ORP level is {{ trigger.id }}: {{ states('sensor.pool_device_orp') }} mV"
```
-{% endraw %}
### Monitor pH levels and send alerts
This automation monitors your pool's pH level and sends a notification when it goes outside the recommended range.
-{% raw %}
```yaml
automation:
- alias: "Pool pH out of range"
@@ -259,13 +256,11 @@ automation:
title: "Pool pH alert"
message: "pH level is {{ trigger.id }}: {{ states('sensor.pool_device_ph') }}"
```
-{% endraw %}
### Pause dosing when pH is extreme
This automation pauses the dosing system when the pH level reaches dangerously high or low values, preventing excessive chemical dosing.
-{% raw %}
```yaml
automation:
- alias: "Pause dosing on extreme pH"
@@ -287,7 +282,6 @@ automation:
title: "Pool dosing paused"
message: "Dosing paused - pH is {{ trigger.id }}: {{ states('sensor.pool_device_ph') }}"
```
-{% endraw %}
### Pool monitoring dashboard
diff --git a/source/_integrations/portainer.markdown b/source/_integrations/portainer.markdown
index 405b8f3c66cc..141787da0662 100644
--- a/source/_integrations/portainer.markdown
+++ b/source/_integrations/portainer.markdown
@@ -102,8 +102,6 @@ The following examples show how to use the Portainer integration in Home Assista
The following example sends a notification to your mobile device when a container went down.
-{% raw %}
-
```yaml
automation:
- alias: "Container went down"
@@ -121,8 +119,6 @@ automation:
message: "Container went down!"
```
-{% endraw %}
-
## Actions
Portainer provides the following actions.
diff --git a/source/_integrations/powerfox.markdown b/source/_integrations/powerfox.markdown
index 79480577d72d..055f9a54fc05 100644
--- a/source/_integrations/powerfox.markdown
+++ b/source/_integrations/powerfox.markdown
@@ -66,8 +66,6 @@ This integration does not provide additional actions.
Use this automation to keep an eye on sudden peaks in your electricity usage. When the Powerfox sensor reports more than 4 kW for two minutes, Home Assistant sends a notification so you can react quickly (for example by switching off large loads).
{% details "Example YAML automation" %}
-{% raw %}
-
```yaml
alias: "Powerfox high usage alert"
description: "Notify me when the Powerfox meter reports sustained high power draw."
@@ -83,8 +81,6 @@ actions:
title: "High consumption detected"
message: "Powerfox currently reports {{ states('sensor.poweropti_power') }} W."
```
-
-{% endraw %}
{% enddetails %}
Replace the threshold value, and the `notify` target with the entities that exist in your installation.
diff --git a/source/_integrations/powerfox_local.markdown b/source/_integrations/powerfox_local.markdown
index 6ccd23dcabda..764b086178fc 100644
--- a/source/_integrations/powerfox_local.markdown
+++ b/source/_integrations/powerfox_local.markdown
@@ -69,8 +69,6 @@ This integration does not provide additional actions.
Use this automation to keep an eye on sudden peaks in your electricity usage. When the Poweropti sensor reports more than 4 kW for two minutes, Home Assistant sends a notification so you can react quickly (for example by switching off large loads).
{% details "Example YAML automation" %}
-{% raw %}
-
```yaml
alias: "Powerfox high usage alert"
description: "Notify me when the Poweropti meter reports sustained high power draw."
@@ -86,8 +84,6 @@ actions:
title: "High consumption detected"
message: "Poweropti currently reports {{ states('sensor.poweropti_power') }} W."
```
-
-{% endraw %}
{% enddetails %}
Replace the threshold value and the `notify` target with the entities that exist in your installation.
diff --git a/source/_integrations/proxmoxve.markdown b/source/_integrations/proxmoxve.markdown
index 01e255e75c3d..844f07f8719d 100644
--- a/source/_integrations/proxmoxve.markdown
+++ b/source/_integrations/proxmoxve.markdown
@@ -63,7 +63,7 @@ Realm:
## Proxmox permissions
-To use Proxmox VE with Home Assistant, start by creating a dedicated user in Proxmox and granting it only the permissions Home Assistant needs. The paragraphs below will guide you through the Proxmox configuration. First, decide which authentication realm to use. If Home Assistant shows **Authentication PMethod** during setup, choose the matching realm.
+To use Proxmox VE with Home Assistant, start by creating a dedicated user in Proxmox and granting it only the permissions Home Assistant needs. The paragraphs below will guide you through the Proxmox configuration. First, decide which authentication realm to use. If Home Assistant shows **Authentication Method** during setup, choose the matching realm.
You can use any realm as long as you have valid credentials, like a username and password or an API token:
@@ -175,8 +175,8 @@ To create a token:
- **Max disk**: Maximum amount of available disk space.
- **Memory** & **Memory percentage**: The amount of memory in use, and the percentage of memory in use, on the node/VM/LXC.
- **Max memory**: Maximum amount of memory on the node/VM/LXC.
-- **Network input**: Amount of incoming network traffic since starting the node/VM/LXC.
-- **Network output**: Amount of outgoing network traffic since starting the node/VM/LXC.
+- **Network input**: Amount of incoming network traffic since starting the VM/LXC.
+- **Network output**: Amount of outgoing network traffic since starting the VM/LXC.
- **Uptime**: Time since the node/VM/LXC started.
### Binary sensor
diff --git a/source/_integrations/purpleair.markdown b/source/_integrations/purpleair.markdown
index 452b6f226c90..dd63f5889390 100644
--- a/source/_integrations/purpleair.markdown
+++ b/source/_integrations/purpleair.markdown
@@ -108,8 +108,6 @@ Reminder that the breakpoints used below can be determined from the aforemention
guidelines.
{% endtip %}
-{% raw %}
-
```yaml
template:
- sensor:
@@ -161,5 +159,3 @@ template:
{% endif %}
unique_id: local_outdoor_air_quality
```
-
-{% endraw %}
diff --git a/source/_integrations/pushover.markdown b/source/_integrations/pushover.markdown
index 24a914927eee..b057fe0e8d62 100644
--- a/source/_integrations/pushover.markdown
+++ b/source/_integrations/pushover.markdown
@@ -101,8 +101,6 @@ To use notifications, please see the [getting started with automation page](/get
Example notification triggered from the Alexa integration for an intents is shown below which also uses [Automation Templating](/getting-started/automation-templating/) for the message:
-{% raw %}
-
```yaml
# Example configuration.yaml entries
alexa:
@@ -119,5 +117,3 @@ alexa:
url: "https://www.home-assistant.io/"
attachment: "/tmp/image.png"
```
-
-{% endraw %}
diff --git a/source/_integrations/pyload.markdown b/source/_integrations/pyload.markdown
index c5c75ed5cad8..242229e96c58 100644
--- a/source/_integrations/pyload.markdown
+++ b/source/_integrations/pyload.markdown
@@ -93,8 +93,6 @@ This automation will pause new downloads when your available disk space falls be
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Monitor pyLoad download queue"
description: "Pause new downloads when the disk space is low."
@@ -112,8 +110,6 @@ actions:
mode: single
```
-{% endraw %}
-
{% enddetails %}
### Halt pyLoad downloads when watching Netflix
@@ -122,8 +118,6 @@ This automation halts all active pyLoad downloads when watching Netflix on your
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Halt pyLoad downloads when watching Netflix"
description: "Halt all pyLoad downloads when Netflix streaming starts on the media player."
@@ -146,8 +140,6 @@ actions:
mode: single
```
-{% endraw %}
-
{% enddetails %}
## Data updates
diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown
index ea612dce8f59..d1325134b10a 100644
--- a/source/_integrations/python_script.markdown
+++ b/source/_integrations/python_script.markdown
@@ -147,8 +147,6 @@ output["hello"] = f"hello {data.get('name', 'world')}"
The above `python_script` can be called using the following YAML and return a result to later steps.
-{% raw %}
-
```yaml
- action: python_script.hello_world
response_variable: python_script_output
@@ -157,8 +155,6 @@ The above `python_script` can be called using the following YAML and return a re
message: "{{ python_script_output['hello'] }}"
```
-{% endraw %}
-
## Documenting your Python scripts
You can add names and descriptions for your Python scripts that will be shown in the frontend. To do so, simply create a `services.yaml` file in your `/python_scripts` folder. Using the above Python script as an example, the `services.yaml` file would look like:
diff --git a/source/_integrations/qbus.markdown b/source/_integrations/qbus.markdown
index c43653b2da2e..e2e2948edae8 100644
--- a/source/_integrations/qbus.markdown
+++ b/source/_integrations/qbus.markdown
@@ -78,8 +78,6 @@ This automation will activate the **Watching TV** Qbus scene when turning on you
Replace `media_player.my_tv` with your TV entity and `scene.ctd_000001_watching_tv` with your Qbus scene entity.
-{% raw %}
-
```yaml
alias: Activate TV scene when turning on TV
description: ""
@@ -100,8 +98,6 @@ actions:
data: {}
```
-{% endraw %}
-
### Qbus scene triggers media player
Automations can also be triggered by Qbus scenes. The following automation will play the **Home Assistant Homies** playlist on the media player in the living room.
@@ -110,8 +106,6 @@ An extra condition has been added to make sure the automation is not triggered w
Replace `scene.ctd_111111_play_music` with your Qbus scene entity id, `media_player.living_room` with your media player entity id, and fill in the `data` element as desired.
-{% raw %}
-
```yaml
alias: Play music in living room
description: ""
@@ -139,8 +133,6 @@ actions:
media_content_type: playlist
```
-{% endraw %}
-
## Known limitations
The integration does not provide a way to update the firmware on the devices. This can only be done with the configuration software System Manager.
diff --git a/source/_integrations/remember_the_milk.markdown b/source/_integrations/remember_the_milk.markdown
index 9a071365c83e..b2bbfb12c82e 100644
--- a/source/_integrations/remember_the_milk.markdown
+++ b/source/_integrations/remember_the_milk.markdown
@@ -89,8 +89,6 @@ If you have created your task with an `id`, calling `_complete_task` wi
Here's an example for an automation that creates a new task whenever `sensor.mysensor` is `on` and completes it when the sensor reports `off`. This way it reminds you to switch it off. By using the `entity_id` as ID for the task, you can use the same rule also for multiple sensors.
-{% raw %}
-
```yaml
- triggers:
- trigger: state
@@ -111,8 +109,6 @@ Here's an example for an automation that creates a new task whenever `sensor.mys
id: "{{trigger.entity_id}}"
```
-{% endraw %}
-
## Disclaimer
This integration uses the Remember The Milk API but is not endorsed or certified by Remember The Milk.
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index 74eaa0afd925..ac0fb07047fc 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -671,14 +671,10 @@ Prerequisites:
Select **Add Condition** again > **Other conditions** > **Template**. Then, under **Value template**, type the following:
-{% raw %}
-
```yaml
{{as_timestamp(now()) - as_timestamp(state_attr('automation.reolink_push', 'last_triggered'), 0) > 30}}
```
-{% endraw %}
-
The `automation.reolink_push` is the name of this automation, which will be set under step 7, and the `30` is the cooldown time in seconds.
diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown
index 618168f1bb86..3e0a1aa84d6c 100644
--- a/source/_integrations/rest_command.markdown
+++ b/source/_integrations/rest_command.markdown
@@ -131,8 +131,6 @@ This response can be accessed in automations using [`response_variable`](/docs/s
The following example shows how the REST command response may be used in automations. In this case, checking the [Traefik API](https://doc.traefik.io/traefik/operations/api/) for errors.
-{% raw %}
-
```yaml
# Create a ToDo notification based on file contents
automation:
@@ -172,15 +170,11 @@ rest_command:
method: GET
```
-{% endraw %}
-
### Using templates to change the payload based on entities
The commands can be dynamic, using templates to insert values of other entities. Actions support variables for doing things with templates.
-In this example, uses [templates](/docs/configuration/templating/) for dynamic parameters.
-
-{% raw %}
+This example uses [templates](/docs/templating/) for dynamic parameters.
```yaml
# Example configuration.yaml entry
@@ -197,8 +191,6 @@ rest_command:
verify_ssl: true
```
-{% endraw %}
-
### How to test your new REST command
Call the new action from [developer tools](/docs/tools/dev-tools/) in the sidebar with some `data` like:
diff --git a/source/_integrations/rfxtrx.markdown b/source/_integrations/rfxtrx.markdown
index 86ee6b6cd6c5..a0c6d3e1f58d 100644
--- a/source/_integrations/rfxtrx.markdown
+++ b/source/_integrations/rfxtrx.markdown
@@ -373,34 +373,22 @@ If you need to generate codes for switches and lights, you can use a template (u
### Switch: ARC
-{% raw %}
-
```yaml
0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}010f70
```
-{% endraw %}
-
### Light: ARC
-{% raw %}
-
```yaml
0b11000{{ range(100,700) | random | int }}bc0cfe0{{ range(0,10) | random | int }}020f70
```
-{% endraw %}
-
### Light: Lightwave RF
-{% raw %}
-
```yaml
0a14000{{ range(100,700) | random | int }}bc0cf{{ range(0,10) | random | int }}100f70
```
-{% endraw %}
-
- Use this code to add a new switch in the options menu.
- Launch your Home Assistant and go to the website.
- Enable learning mode on your switch (i.e., push learn button or plug it in a wall socket)
diff --git a/source/_integrations/ring.markdown b/source/_integrations/ring.markdown
index 29a1e7793c99..b1acd77e67c0 100644
--- a/source/_integrations/ring.markdown
+++ b/source/_integrations/ring.markdown
@@ -233,8 +233,6 @@ downloader:
Then you can use the following automation, with the entities from your system, which will save the video file under `/downloads//.mp4`:
-{% raw %}
-
```yaml
automation:
alias: "Save the video when the doorbell is pushed"
@@ -256,18 +254,14 @@ automation:
filename: "{{state_attr('camera.front_door_last_recording', 'friendly_name')}}.mp4"
```
-{% endraw %}
-
You may consider some modifications in the subdirectory and the filename to suit your needs. For example, you can add the date and the time and extension to the downloaded file:
-{% raw %}
```yaml
data:
url: "{{ state_attr('camera.front_door_last_recording', 'video_url') }}"
subdir: "{{ state_attr('camera.front_door_last_recording', 'friendly_name') }}/{{ now().strftime('%Y.%m') }}"
filename: "{{ now().strftime('%Y-%m-%d-at-%H-%M-%S') }}.mp4"
```
-{% endraw %}
the above modification will save the video file under `/downloads//YYYY-MM/YYYY-MM-DD-at-HH-MM-SS.mp4`. You can change the date according to your localization format.
diff --git a/source/_integrations/rituals_perfume_genie.markdown b/source/_integrations/rituals_perfume_genie.markdown
index 9f4bb648a843..534eca009ec1 100644
--- a/source/_integrations/rituals_perfume_genie.markdown
+++ b/source/_integrations/rituals_perfume_genie.markdown
@@ -89,8 +89,6 @@ These examples are just a starting point, and you can use them as inspiration to
The following example will turn on the Perfume Genie at 18:00.
-{% raw %}
-
```yaml
automation:
- alias: "Start fragrance in evening"
@@ -104,8 +102,6 @@ automation:
entity_id: switch.rituals_perfume_genie_diffuser
```
-{% endraw %}
-
## Removing the integration
This integration follows standard integration removal, no extra steps are required.
diff --git a/source/_integrations/rmvtransport.markdown b/source/_integrations/rmvtransport.markdown
index 2d757e90f35d..f388ea4be13e 100644
--- a/source/_integrations/rmvtransport.markdown
+++ b/source/_integrations/rmvtransport.markdown
@@ -123,7 +123,7 @@ sensor:
The first sensor will return S-Bahn, bus, RB and RE trains departures from Frankfurt Hauptbahnhof to Frankfurt Airport or Stadium that are at least 5 minutes away.
-The second sensor returns bus departures from Wiesbaden Hauptbahnhof going to Dernsches Gelände and Mainz Hauptbahnhof. To retrieve the time of the second departure, you would use `state_attr('sensor.ENTITY_NAME', 'departures')[1].time`.
+The second sensor returns bus departures from Wiesbaden Hauptbahnhof going to Dernsches Gelände and Mainz Hauptbahnhof. To retrieve the time of the second departure, you would use the [`state_attr`](/template-functions/state_attr/) function: `state_attr('sensor.ENTITY_NAME', 'departures')[1].time`.
The third sensor returns all S-Bahn trains from Mainz Hauptbahnhof for line S8.
diff --git a/source/_integrations/rss_feed_template.markdown b/source/_integrations/rss_feed_template.markdown
index 106bb191b5ae..983b62f4c9e8 100644
--- a/source/_integrations/rss_feed_template.markdown
+++ b/source/_integrations/rss_feed_template.markdown
@@ -16,8 +16,6 @@ The **RSS feed template** {% term integration %} can export any information from
For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
rss_feed_template:
@@ -31,8 +29,6 @@ rss_feed_template:
description: "{% if is_state('sensor.temp_outside','unknown') %}---{% else %}{{states('sensor.temp_outside')}} °C{% endif %}"
```
-{% endraw %}
-
{% configuration %}
requires_api_password:
description: If true and an API password is set, the password must be passed via '?api_password=...' parameter.
@@ -44,7 +40,7 @@ feed_id:
required: true
type: string
title:
- description: The title of the feed, which is parsed as [template](/docs/configuration/templating/).
+ description: The title of the feed, which is parsed as [template](/docs/templating/).
required: false
type: template
items:
@@ -53,11 +49,11 @@ items:
type: list
keys:
title:
- description: The title of the item, which is parsed as [template](/docs/configuration/templating/).
+ description: The title of the item, which is parsed as [template](/docs/templating/).
required: false
type: template
description:
- description: The description of the item, which is parsed as [template](/docs/configuration/templating/).
+ description: The description of the item, which is parsed as [template](/docs/templating/).
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/sabnzbd.markdown b/source/_integrations/sabnzbd.markdown
index ac9b450cca00..bce628e2540a 100644
--- a/source/_integrations/sabnzbd.markdown
+++ b/source/_integrations/sabnzbd.markdown
@@ -86,7 +86,6 @@ This integration creates the following sensors to monitor your SABnzbd instance:
This automation sends a notification when a download completes:
-{% raw %}
```yaml
- alias: "SABnzbd download complete"
triggers:
@@ -100,13 +99,11 @@ This automation sends a notification when a download completes:
title: "Download Complete"
message: "SABnzbd has finished downloading and extracting files"
```
-{% endraw %}
### Disk space warning
Get notified when your download drive is running low on space:
-{% raw %}
```yaml
- alias: "SABnzbd low disk space warning"
triggers:
@@ -121,13 +118,11 @@ Get notified when your download drive is running low on space:
data:
priority: high
```
-{% endraw %}
### Bandwidth management during streaming
Automatically pause downloads when your media players are active:
-{% raw %}
```yaml
- alias: "Pause downloads during movie time"
triggers:
@@ -161,13 +156,11 @@ Automatically pause downloads when your media players are active:
target:
entity_id: button.sabnzbd_resume
```
-{% endraw %}
### Smart scheduling with speed limits
Reduce download speed during peak hours and increase it during off-peak hours:
-{% raw %}
```yaml
- alias: "SABnzbd peak hours speed limit"
triggers:
@@ -191,13 +184,11 @@ Reduce download speed during peak hours and increase it during off-peak hours:
data:
value: 100
```
-{% endraw %}
### Dashboard card example
Create a comprehensive SABnzbd monitoring card for your dashboard:
-{% raw %}
```yaml
type: entities
title: SABnzbd Downloads
@@ -221,7 +212,6 @@ entities:
- entity: number.sabnzbd_speed_limit
name: Speed limit
```
-{% endraw %}
## Data updates
diff --git a/source/_integrations/saunum.markdown b/source/_integrations/saunum.markdown
index 09ff66dea063..f1e2fd66b592 100644
--- a/source/_integrations/saunum.markdown
+++ b/source/_integrations/saunum.markdown
@@ -287,8 +287,6 @@ Send a notification and turn on the sauna light when the target temperature is r
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: "Sauna ready notification with light"
description: >-
@@ -327,8 +325,6 @@ actions:
```
-{% endraw %}
-
{% enddetails %}
## Data updates
diff --git a/source/_integrations/scene.markdown b/source/_integrations/scene.markdown
index 498966d3fdcc..0f67b7afb560 100644
--- a/source/_integrations/scene.markdown
+++ b/source/_integrations/scene.markdown
@@ -1,6 +1,6 @@
---
title: Scenes
-description: Instructions on how to setup scenes within Home Assistant.
+description: Instructions on how to set up scenes within Home Assistant.
ha_category:
- Organization
ha_release: 0.15
@@ -11,19 +11,16 @@ ha_domain: scene
ha_integration_type: entity
---
-A scene entity is an entity that can restore the state of a group of entities.
-Scenes can be user-defined or can be provided through an integration.
+A scene entity can restore the state of a group of entities.
+You can define scenes yourself, or they can be provided by an integration.
{% include integrations/building_block_integration.md %}
## The state of a scene
-The scene entity is stateless, as in, it cannot have a state like the `on` or
-`off` state that, for example, a normal switch entity has.
+The scene entity is stateless. Unlike a normal switch entity, it does not have an `on` or `off` state.
-Every scene entity does keep track of the timestamp of when the last time
-the scene entity was called via the Home Assistant UI or called via
-an action.
+Every scene entity keeps track of the timestamp of when it was last called, either via the Home Assistant UI or via an action.
@@ -37,13 +34,13 @@ In addition, the entity can have the following states:
## Scenes created by integrations
-Some integrations like [Philips Hue](/integrations/hue), [MQTT](/integrations/mqtt), and [KNX](/integrations/knx) provide scenes. You can activate them from the Home Assistant UI or via as an action. In this case, the integration provides the preferred states to restore.
+Some integrations such as [Philips Hue](/integrations/hue/), [MQTT](/integrations/mqtt/), and [KNX](/integrations/knx/) provide scenes. You can activate them from the Home Assistant UI or via an action. In this case, the integration provides the preferred states to restore.
## Creating a scene
-You can create scenes that capture the states you want certain entities to be. For example, a scene can specify that light A should be turned on and light B should be bright red.
+You can create scenes that capture the states you want for certain entities. For example, a scene can specify that light A should be turned on and light B should be bright red.
-Scenes can be created and managed via the user interface using the [Scene Editor](/docs/scene/editor/). They can also be manually configured via {% term "`configuration.yaml`" %}. Note that entity data is not an action parameter; it's a representation of the wanted state:
+You can create and manage scenes via the user interface using the [scene editor](/docs/scene/editor/). You can also configure them manually via {% term "`configuration.yaml`" %}. Note that entity data is not an action parameter; it's a representation of the desired state:
```yaml
# Example configuration.yaml entry
@@ -65,7 +62,7 @@ scene:
light.ceiling: "off"
media_player.sony_bravia_tv:
state: "on"
- source: HDMI 1
+ source: "HDMI 1"
- name: Standard
entities:
light.tv_back_light:
@@ -78,7 +75,7 @@ scene:
{% configuration %}
name:
- description: Friendly name of scene.
+ description: Friendly name of the scene.
required: true
type: string
icon:
@@ -86,15 +83,15 @@ icon:
required: false
type: string
entities:
- description: Entities to control and their desired state.
+ description: Entities to control and their desired states.
required: true
type: list
{% endconfiguration %}
-As you can see, there are two ways to define the states of each `entity_id`:
+There are two ways to define the states of each `entity_id`:
-- Define the `state` directly with the entity. Be aware, that `state` needs to be defined.
-- Define a complex state with its attributes. You can see all attributes available for a particular entity under `developer-tools -> state`.
+- Define the `state` directly with the entity. The `state` is required.
+- Define a complex state with its attributes. You can see all attributes available for a particular entity under **Developer tools** > **States**.
Scenes can be activated using the `scene.turn_on` action (there is no `scene.turn_off` action).
@@ -114,7 +111,7 @@ automation:
## Applying a scene without defining it
-With the `scene.apply` action you are able to apply a scene without first defining it via configuration. Instead, you pass the states as part of the action data. The format of the data is the same as the `entities` field in a configuration.
+With the `scene.apply` action, you can apply a scene without first defining it via configuration. Instead, you pass the states as part of the action data. The format of the data is the same as the `entities` field in a configuration.
```yaml
# Example automation
@@ -131,19 +128,17 @@ automation:
light.tv_back_light:
state: "on"
brightness: 100
- light.ceiling: off
+ light.ceiling: "off"
media_player.sony_bravia_tv:
state: "on"
- source: HDMI 1
+ source: "HDMI 1"
```
## Using scene transitions
-Both the `scene.apply` and `scene.turn_on` actions support setting a transition,
-which enables you to smoothen the transition to the scene.
+Both the `scene.apply` and `scene.turn_on` actions support setting a transition to smooth the change into the scene.
-This is an example of an automation that sets a romantic scene, in which the
-light will transition to the scene in 2.5 seconds.
+Here's an example automation that activates a romantic scene with a 2.5 second transition.
```yaml
# Example automation
@@ -161,9 +156,7 @@ automation:
transition: 2.5
```
-Transitions are currently only support by lights, which in their turn, have
-to support it as well. However, the scene itself does not have to consist of
-only lights to have a transition set.
+Transitions are currently only supported by lights, and the lights themselves must also support them. However, the scene does not need to consist only of lights to have a transition set.
## Reloading scenes
@@ -173,12 +166,13 @@ Whenever you make a change to your scene configuration, you can call the `scene.
Create a new scene without having to configure it by calling the `scene.create` action. This scene will be discarded after reloading the configuration.
-You need to pass a `scene_id` in lowercase and with underscores instead of spaces. You also may want to specify the entities in the same format as when configuring the scene. You can also take a snapshot of the current state by using the `snapshot_entities` parameter. In this case, you have to specify the `entity_id` of all entities you want to take a snapshot of. `entities` and `snapshot_entities` can be combined but you have to use at least one of them.
+You need to pass a `scene_id` in lowercase and with underscores instead of spaces. You may also want to specify the entities in the same format as when configuring the scene. You can also take a snapshot of the current state by using the `snapshot_entities` parameter. In this case, you have to specify the `entity_id` of all entities you want to take a snapshot of. `entities` and `snapshot_entities` can be combined, but you have to use at least one of them.
-If the scene was previously created by `scene.create`, it will be overwritten. If the scene was created by YAML, nothing happens but a warning in your log files.
+If the scene was previously created by `scene.create`, it will be overwritten. If the scene was created by YAML, nothing happens and a warning appears in your log files.
### Video tutorial
-This video tutorial explains how scenes work and how you can utilize scenes on the fly.
+
+This video tutorial explains how scenes work and how you can use scenes on the fly.
@@ -196,10 +190,10 @@ automation:
light.tv_back_light:
state: "on"
brightness: 100
- light.ceiling: off
+ light.ceiling: "off"
media_player.sony_bravia_tv:
state: "on"
- source: HDMI 1
+ source: "HDMI 1"
```
## Deleting dynamically created scenes
@@ -233,7 +227,6 @@ The following example turns off some entities as soon as a window opens. The sta
entity_id: binary_sensor.window
from: "off"
to: "on"
- conditions: []
actions:
- action: scene.create
data:
@@ -255,7 +248,6 @@ The following example turns off some entities as soon as a window opens. The sta
entity_id: binary_sensor.window
from: "on"
to: "off"
- conditions: []
actions:
- action: scene.turn_on
target:
diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown
index 7f0060faf093..ce60572db938 100644
--- a/source/_integrations/scene.mqtt.markdown
+++ b/source/_integrations/scene.mqtt.markdown
@@ -45,7 +45,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -54,7 +54,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -145,7 +145,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
diff --git a/source/_integrations/schedule.markdown b/source/_integrations/schedule.markdown
index 18d022dab915..dba7e123e029 100644
--- a/source/_integrations/schedule.markdown
+++ b/source/_integrations/schedule.markdown
@@ -64,7 +64,6 @@ The `data` field follows the same logic as described above in *Adding additional
{% endnote %}
-
```yaml
schedule:
light_schedule:
@@ -142,8 +141,6 @@ A schedule entity exports state attributes that can be useful in automations and
A schedule creates an on/off (schedule) sensor within the times set.
By incorporating the `light_schedule` example from above in an automation, we can turn on a light when the schedule is active.
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -159,12 +156,8 @@ actions:
kelvin: "{{ state_attr('schedule.light_schedule', 'color_temp') }}"
```
-{% endraw %}
-
Another automation can be added to turn the lights off once the schedule is inactive:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -177,8 +170,6 @@ actions:
entity_id: light.kitchen
```
-{% endraw %}
-
## Actions
To interact with schedules from {% term scripts %} and {% term automations %}, the schedule integration provides the following {% term actions %}.
@@ -239,8 +230,6 @@ schedule.air_purifier:
The example below uses the response data from above in a template for another action.
-{% raw %}
-
```yaml
action: notify.nina
data:
@@ -256,12 +245,8 @@ data:
{% endfor %}
```
-{% endraw %}
-
If you want to run the above action both once per day and whenever one of the schedules changes, you can create an {% term automation %} that combines a time-based {% term trigger %} with an {% term event %} trigger per entity.
-{% raw %}
-
```yaml
triggers:
- trigger: time
@@ -277,5 +262,3 @@ triggers:
action: update
entity_id: schedule.air_purifier
```
-
-{% endraw %}
diff --git a/source/_integrations/schlage.markdown b/source/_integrations/schlage.markdown
index 462316dca514..55cfca88b922 100644
--- a/source/_integrations/schlage.markdown
+++ b/source/_integrations/schlage.markdown
@@ -81,8 +81,6 @@ You can use the `schlage.get_codes` action to retrieve the codes stored on your
| ---------------------- | -------- | ----------- | --------|
| `entity_id` | no | Lock entity to use (one or more) | `lock.front_door` |
-{% raw %}
-
```yaml
# Example action
action: schlage.get_codes
@@ -103,8 +101,6 @@ lock.front_door:
code: "2222"
```
-{% endraw %}
-
{% enddetails %}
### Action: Add Code
@@ -119,8 +115,6 @@ You can use the `schlage.add_code` action to add a new code to your lock. The co
| `name` | no | Name for the code | `Example Person` |
| `code` | no | Code to add (4-8 digits) | `3333` |
-{% raw %}
-
```yaml
# Example action
action: schlage.add_code
@@ -131,8 +125,6 @@ data:
code: "3333"
```
-{% endraw %}
-
{% enddetails %}
### Action: Delete Code
@@ -146,8 +138,6 @@ You can use the `schlage.delete_code` action to delete a code from your lock.
| `entity_id` | no | Lock entity to use (one or more) | `lock.front_door` |
| `name` | no | Name for the code to delete. The name evaluation for deletion is case insensitive | `Example Person` |
-{% raw %}
-
```yaml
# Example action
action: schlage.delete_code
@@ -157,8 +147,6 @@ data:
name: Example Person
```
-{% endraw %}
-
{% enddetails %}
## Removing the integration
diff --git a/source/_integrations/scrape.markdown b/source/_integrations/scrape.markdown
index a1ef835a5ed9..a4e1eff36f91 100644
--- a/source/_integrations/scrape.markdown
+++ b/source/_integrations/scrape.markdown
@@ -179,8 +179,6 @@ In this section you find some real-life examples of how to use this sensor. Ther
The current release Home Assistant is published on [homepage](/)
-{% raw %}
-
```yaml
scrape:
# Example configuration.yaml entry
@@ -190,14 +188,10 @@ scrape:
select: ".release-date"
```
-{% endraw %}
-
### Available implementations
Get the counter for all our implementations from the integrations page under {% my integrations title="**Settings** > **Devices & services**" %}.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
scrape:
@@ -208,8 +202,6 @@ scrape:
value_template: '{{ value.split("(")[1].split(")")[0] }}'
```
-{% endraw %}
-
### Get a value out of a tag
The German [Federal Office for Radiation protection (Bundesamt für Strahlenschutz)](https://www.bfs.de/) is publishing various details about optical radiation including an UV index. This example is getting the index for a region in Germany.
@@ -257,8 +249,6 @@ scrape:
This example tries to retrieve the price for electricity.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
scrape:
@@ -270,5 +260,3 @@ scrape:
value_template: '{{ value | replace (",", ".") | float }}'
unit_of_measurement: "öre/kWh"
```
-
-{% endraw %}
diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown
index 4e113de79f44..8da53f6d5df7 100644
--- a/source/_integrations/script.markdown
+++ b/source/_integrations/script.markdown
@@ -11,17 +11,15 @@ ha_domain: script
ha_integration_type: system
---
-The **Scripts** {% term integration %} allows users to specify a sequence of actions to be executed by Home Assistant. These are run when you turn the script on. The script integration will create an entity for each script and allow them to be controlled via actions.
+The **Scripts** {% term integration %} allows you to specify a sequence of actions for Home Assistant to execute. They run when you turn the script on. The script integration creates an entity for each script so you can control it via actions.
-Scripts can be created via YAML configuration (described below) or via {% my scripts title="the UI" %}.
+You can create scripts via YAML configuration or via {% my scripts title="the UI" %}.
{% my scripts badge %}
## Configuration
-The sequence of actions is specified using the [Home Assistant Script Syntax](/getting-started/scripts/).
-
-{% raw %}
+You specify the sequence of actions using the [Home Assistant Script Syntax](/getting-started/scripts/).
```yaml
# Example configuration.yaml entry
@@ -34,10 +32,8 @@ script:
message: "Current temperature is {{ states('sensor.temperature') }}"
```
-{% endraw %}
-
{% important %}
-Script names (e.g., `message_temperature` in the example above) are not allowed to contain capital letters, or dash (minus) characters, i.e., `-`. The preferred way to separate words for better readability is to use underscore (`_`) characters.
+Script names (such as `message_temperature` in the example above) cannot contain capital letters or dashes (`-`). Use underscores (`_`) to separate words for better readability.
{% endimportant %}
{% configuration %}
@@ -50,12 +46,12 @@ icon:
required: false
type: string
description:
- description: A description of the script that will be displayed in the **Actions** tab under **Developer tools**.
+ description: A description of the script, displayed in the **Actions** tab under **Developer tools**.
required: false
default: ''
type: string
variables:
- description: Variables that will be available inside your templates
+ description: Variables that are available inside your templates.
required: false
default: {}
type: map
@@ -80,15 +76,15 @@ fields:
description: A description of this script parameter.
type: string
advanced:
- description: Marks this field as an advanced parameter. This causes it only to be shown in the UI, when the user has advanced mode enabled.
+ description: Marks this field as an advanced parameter. The field is only shown in the UI when you have advanced mode enabled.
type: boolean
default: false
required:
- description: Mark if this field is required. This is a UI only feature.
+ description: Marks this field as required. This is a UI-only feature.
type: boolean
default: false
example:
- description: An example value. This will only be shown in table of options available in the **Actions** tab of the **Developer tools**.
+ description: An example value. This is only shown in the table of options available in the **Actions** tab of the **Developer tools**.
type: string
default:
description: The default value for this field, as shown in the UI.
@@ -100,22 +96,22 @@ fields:
type: selector
required: false
mode:
- description: "Controls what happens when script is invoked while it is still running from one or more previous invocations. See [Script Modes](#script-modes)."
+ description: "Controls what happens when the script is invoked while it is still running from one or more previous invocations. See [Script modes](#script-modes)."
required: false
type: string
default: single
max:
- description: "Controls maximum number of runs executing and/or queued up to run at a time. Only valid with modes `queued` and `parallel`."
+ description: "Controls the maximum number of runs executing or queued up to run at a time. Only valid with modes `queued` and `parallel`."
required: false
type: integer
default: 10
max_exceeded:
- description: "When `max` is exceeded (which is effectively 1 for `single` mode) a log message will be emitted to indicate this has happened. This option controls the severity level of that log message. See [Log Levels](/integrations/logger/#log-levels) for a list of valid options. Or `silent` may be specified to suppress the message from being emitted."
+ description: "When `max` is exceeded (which is effectively 1 for `single` mode), Home Assistant emits a log message to indicate this has happened. This option controls the severity level of that log message. See [log levels](/integrations/logger/#log-levels) for a list of valid options. You can also set this to `silent` to suppress the message."
required: false
type: string
default: warning
sequence:
- description: The sequence of actions to be performed in the script.
+ description: The sequence of actions the script performs.
required: true
type: list
{% endconfiguration %}
@@ -129,24 +125,22 @@ Mode | Description
`queued` | Start a new run after all previous runs complete. Runs are guaranteed to execute in the order they were queued.
`parallel` | Start a new, independent run in parallel with previous runs.
-
-
-
+
### Passing variables to scripts
-As part of the action, variables can be passed along to a script so they become available within templates in that script.
+As part of the action, you can pass variables to a script so they become available within templates in that script.
+
+To configure a script to accept variables using the UI, add the variables as fields in the script editor.
-To configure a script to accept variables using the UI, the variables can be added as fields in the script editor.
-1. In the script editor, in the 3-dots menu, select **Add fields**.
-2. A new section called **Fields** is added between the basic information and **Sequence** sections.
-3. Enter a name and choose type and options of each desired field.
-4. Fields set up here will be shown in other UI editors, such as in an automation that calls the script as inputs depending on the type of field.
-5. To use the field data, use them as templates using the **Field key name** when they were added, as shown in the example below.
+1. In the script editor, in the three dots {% icon "mdi:dots-vertical" %} menu, select **Add fields**.
+2. A new **Fields** section appears between the basic information and the **Sequence** section.
+3. Enter a name and choose the type and options for each field.
+4. Depending on the field type, fields set up here are shown in other UI editors, such as in an automation that calls the script.
+5. To use the field data, reference it as a template using the **Field key name** you set when adding the field.
-Using the variables in the script requires the use of templates:
+Use templates to access the variables in the script:
-{% raw %}
```yaml
# Example configuration.yaml entry
script:
@@ -168,11 +162,9 @@ script:
title: "{{ title }}"
message: "{{ message }}"
```
-{% endraw %}
-Aside from the automation editor UI, variables can be passed to scripts within the action data. This can be used either by calling the script directly or the generic `script.turn_on` action. The difference is described in [Waiting for Script to Complete](#waiting-for-script-to-complete). All action data will be made available as variables in templates, even if not specified as fields in the script. This example shows how to call the script directly:
+Aside from the automation editor UI, you can pass variables to scripts within the action data. You can do this by calling the script directly or by calling the generic `script.turn_on` action. The difference is described in [Waiting for a script to complete](#waiting-for-a-script-to-complete). All action data is available as variables in templates, even if not specified as fields in the script. This example shows how to call the script directly:
-{% raw %}
```yaml
# Example configuration.yaml entry
automation:
@@ -187,11 +179,9 @@ automation:
title: "State change"
message: "The light is on!"
```
-{% endraw %}
-This example shows using `script.turn_on` action:
+This example shows how to use the `script.turn_on` action:
-{% raw %}
```yaml
# Example configuration.yaml entry
automation:
@@ -209,35 +199,29 @@ automation:
title: "State change"
message: "The light is on!"
```
-{% endraw %}
-
-
{% note %}
-Script variables that may be used by templates include the following:
-- those provided from the configuration as fields
-- those that are passed as data when started from an action,
-- the `this` variable the value of which is a dictionary of the current script's state.
+Templates may use the following script variables:
+
+- Variables provided from the configuration as fields.
+- Variables passed as data when the script is started from an action.
+- The `this` variable, which holds the current script's state as a dictionary.
{% endnote %}
-### Waiting for Script to Complete
+### Waiting for a script to complete
-When calling a script "directly" (e.g., `script.NAME`) the calling script will wait for the called script to finish.
+When calling a script "directly" (for example, `script.NAME`), the calling script will wait for the called script to finish.
If any errors occur that cause the called script to abort, the calling script will be aborted as well.
-When calling a script (or multiple scripts) via the `script.turn_on` action the calling script does _not_ wait. It starts the scripts, in the order listed, and continues as soon as the last script is started.
+When calling a script (or multiple scripts) via the `script.turn_on` action, the calling script does _not_ wait. It starts the scripts, in the order listed, and continues as soon as the last script is started.
Any errors that occur in the called scripts that cause them to abort will _not_ affect the calling script.
-
-
-
-
-Following is an example of the calling script not waiting. It performs some other operations while the called script runs "in the background." Then it later waits for the called script to complete via a `wait_template`.
-This technique can also be used for the calling script to wait for the called script, but _not_ be aborted if the called script aborts due to errors.
+
-{% raw %}
+Here's an example of the calling script not waiting. It performs some other operations while the called script runs in the background, then waits for the called script to complete via a `wait_template`.
+You can also use this technique for the calling script to wait for the called script, but _not_ be aborted if the called script aborts due to errors.
```yaml
script:
@@ -255,13 +239,10 @@ script:
# Do some things at the same time as the first script...
```
-{% endraw %}
-
### Full configuration
-{% raw %}
```yaml
-script:
+script:
wakeup:
alias: "Wake Up"
icon: "mdi:party-popper"
@@ -296,15 +277,13 @@ script:
data:
brightness: 100
- delay:
- # supports seconds, milliseconds, minutes, hours
+ # Supports seconds, milliseconds, minutes, and hours
minutes: "{{ minutes }}"
- alias: "Living room lights on"
action: light.turn_on
target:
entity_id: "{{ turn_on_entity }}"
```
-{% endraw %}
-
## Video tutorial
diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown
index f7458eb0c166..f5f305789f03 100644
--- a/source/_integrations/select.mqtt.markdown
+++ b/source/_integrations/select.mqtt.markdown
@@ -49,7 +49,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -62,11 +62,11 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -153,7 +153,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -196,7 +196,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value."
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/sensibo.markdown b/source/_integrations/sensibo.markdown
index 3a7dc38512c3..d6bdab9f7bc2 100644
--- a/source/_integrations/sensibo.markdown
+++ b/source/_integrations/sensibo.markdown
@@ -319,8 +319,6 @@ Use the [Get device mode capabilities](#get-device-mode-capabilities) action to
**Example full state:**
-{% raw %}
-
```yaml
on: true
fanLevel: "high"
@@ -332,16 +330,12 @@ horizontalSwing: "fixedLeft"
light: "on"
```
-{% endraw %}
-
## Examples
### Template switch to turn HVAC device on or off
A simple switch which has `heat` or `off` as mode.
-{% raw %}
-
```yaml
switch:
- platform: template
@@ -363,12 +357,8 @@ switch:
hvac_mode: "off"
```
-{% endraw %}
-
### Start the timer for 30 minutes when I get home
-{% raw %}
-
```yaml
automation:
alias: "Example timer"
@@ -385,12 +375,8 @@ automation:
entity_id: climate.hvac_device
```
-{% endraw %}
-
### Set a full state of the HVAC device at 6pm
-{% raw %}
-
```yaml
automation:
alias: "Example full state"
@@ -410,8 +396,6 @@ automation:
entity_id: climate.hvac_device
```
-{% endraw %}
-
## Data fetching and limitations
Data is {% term polling polled %} from the **Sensibo** API once every minute for all devices.
diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown
index 843d19d5c9a4..a52daa1a2c41 100644
--- a/source/_integrations/sensor.mqtt.markdown
+++ b/source/_integrations/sensor.mqtt.markdown
@@ -47,7 +47,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -56,7 +56,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -161,7 +161,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -169,7 +169,7 @@ json_attributes_topic:
required: false
type: string
last_reset_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the last_reset. When `last_reset_value_template` is set, the `state_class` option must be `total`. Available variables: `entity_id`. The `entity_id` can be used to reference the entity's attributes."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the last_reset. When `last_reset_value_template` is set, the `state_class` option must be `total`. Available variables: `entity_id`. The `entity_id` can be used to reference the entity's attributes."
required: false
type: template
name:
@@ -209,7 +209,7 @@ state_class:
required: false
type: string
state_topic:
- description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'None'` value will set the sensor to an `unknown` state. If a `value_template` is used to parse a JSON payload, a `null` value in the JSON [will be rendered as](/docs/configuration/templating/#using-value-templates-with-mqtt) `'None'`. Note that the `device_class` can be `null`.
+ description: The MQTT topic subscribed to receive sensor values. If `device_class`, `state_class`, `unit_of_measurement` or `suggested_display_precision` is set, and a numeric value is expected, an empty value `''` will be ignored and will not update the state, a `'None'` value will set the sensor to an `unknown` state. If a `value_template` is used to parse a JSON payload, a `null` value in the JSON [will be rendered as](/docs/templating/where-to-use/#mqtt) `'None'`. Note that the `device_class` can be `null`.
required: true
type: string
unique_id:
@@ -221,7 +221,7 @@ unit_of_measurement:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the value. If the template throws an error, the current state will be used instead."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the value. If the template throws an error, the current state will be used instead."
required: false
type: template
{% endconfiguration %}
@@ -311,9 +311,7 @@ Topic: `home/sensor1/attributes`
```
It also makes use of the `availability` topic.
-Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}.
-
-{% raw %}
+Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/templating/states/). For example, to extract the `ClientName` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.bs_rssi', 'ClientName') }}`{% endraw %}.
```yaml
# Example configuration.yaml entry
@@ -330,8 +328,6 @@ mqtt:
json_attributes_topic: "home/sensor1/attributes"
```
-{% endraw %}
-
### JSON attributes template configuration
The example sensor below shows a configuration example which uses the following topic and JSON structure with a template to add `Timer1.Arm` and `Timer1.Time` as extra attributes.
@@ -351,9 +347,7 @@ Topic: `tele/sonoff/sensor`
```
To instead only add `Timer1.Arm`as an extra attribute, change `json_attributes_template` to: {% raw %}`"{{ {'Arm': value_json.Timer1} | tojson }}"`{% endraw %}.
-Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/configuration/templating/#attributes). For example, to extract the `Arm` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.timer1', 'Arm') }}`{% endraw %}.
-
-{% raw %}
+Extra attributes will be displayed in the frontend and can also be extracted in [Templates](/docs/templating/states/). For example, to extract the `Arm` attribute from the sensor below, use a template similar to: {% raw %}`{{ state_attr('sensor.timer1', 'Arm') }}`{% endraw %}.
```yaml
# Example configuration.yaml entry
@@ -372,8 +366,6 @@ mqtt:
json_attributes_template: "{{ value_json.Timer2 | tojson }}"
```
-{% endraw %}
-
{% warning %}
If `json_attributes_topic` and `state_topic` share the same topic, a state update will happen only once, unless the state update did not change the state or `force_update` was set to `true`.
@@ -384,8 +376,6 @@ Setting up MQTT sensor's with extra state attributes that contain values that ch
The example below shows how a simple filter, that calculates the value by adding 90% of the new value and 10% of the previous value, can be implemented in a template.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -400,8 +390,6 @@ mqtt:
{% endif %}
```
-{% endraw %}
-
### Owntracks battery level sensor
If you are using the [OwnTracks](/integrations/owntracks) and enable the reporting of the battery level then you can use an MQTT sensor to keep track of your battery. A regular MQTT message from OwnTracks looks like this:
@@ -422,8 +410,6 @@ Topic: `owntracks/tablet/tablet`
Thus the trick is extracting the battery level from the payload.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -434,8 +420,6 @@ mqtt:
value_template: "{{ value_json.batt }}"
```
-{% endraw %}
-
### Temperature and humidity sensors
If you are using a DHT sensor and a NodeMCU board (esp8266), you can retrieve temperature and humidity with a MQTT sensor. A code example can be found [here](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_sensor_dht22). A regular MQTT message from this example looks like this:
@@ -450,8 +434,6 @@ Topic: `office/sensor1`
Then use this configuration example to extract the data from the payload:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -467,8 +449,6 @@ mqtt:
value_template: "{{ value_json.humidity }}"
```
-{% endraw %}
-
### Get sensor value from a device with ESPEasy
Assuming that you have flashed your ESP8266 unit with [ESPEasy](https://github.com/letscontrolit/ESPEasy). Under "Config" set a name ("Unit Name:") for your device (here it's "bathroom"). A "Controller" for MQTT with the protocol "OpenHAB MQTT" is present and the entries ("Controller Subscribe:" and "Controller Publish:") are adjusted to match your needs. In this example the topics are prefixed with "home". Please keep in mind that the ESPEasy default topics start with a `/` and only contain the name when writing your entry for the {% term "`configuration.yaml`" %} file.
diff --git a/source/_integrations/sensor.rest.markdown b/source/_integrations/sensor.rest.markdown
index da892ac3c00d..904c9e538e97 100644
--- a/source/_integrations/sensor.rest.markdown
+++ b/source/_integrations/sensor.rest.markdown
@@ -34,8 +34,6 @@ sensor:
or a template based request:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
sensor:
@@ -49,8 +47,6 @@ sensor:
{{ (now() - timedelta(days = 1)).strftime('%Y-%m-%d') }}
```
-{% endraw %}
-
{% configuration %}
authentication:
description: Type of the HTTP authentication. `basic` or `digest`.
@@ -151,7 +147,7 @@ username:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract the value."
required: false
type: template
verify_ssl:
@@ -184,8 +180,6 @@ In this section you find some real-life examples of how to use this sensor.
You can find your external IP address using the [ipify](https://www.ipify.org) service for both IPv4 and IPv6.
-{% raw %}
-
```yaml
sensor:
- platform: rest
@@ -199,14 +193,10 @@ sensor:
value_template: "{{ value_json.ip }}"
```
-{% endraw %}
-
### Single value from a local Glances instance
The [glances](/integrations/glances) sensor is doing the exact same thing for all exposed values.
-{% raw %}
-
```yaml
sensor:
- platform: rest
@@ -216,16 +206,12 @@ sensor:
unit_of_measurement: MB
```
-{% endraw %}
-
### Value from another Home Assistant instance
The Home Assistant [API](/developers/rest_api/) exposes the data from your attached sensors. If you are running multiple Home Assistant instances which are not connected you can still get information from them.
If the Home Assistant instance in the resource variable is protected by an API password, you can append `?api_password=YOUR_PASSWORD` to the resource URL to authenticate or use `headers:`.
-{% raw %}
-
```yaml
sensor:
- platform: rest
@@ -235,8 +221,6 @@ sensor:
unit_of_measurement: "°C"
```
-{% endraw %}
-
### Accessing an HTTP authentication protected endpoint
The REST sensor supports HTTP authentication and customized headers.
@@ -284,8 +268,6 @@ my_sensor_secret_token: Bearer gh_DHQIXKVf6Pr4H8Yqz8uhApk_mnV6Zje6Pr4H8Yqz8A8nCx
This sample is very similar to the [`updater`](/integrations/updater/) integration but the information is received from GitHub.
-{% raw %}
-
```yaml
sensor:
- platform: rest
@@ -300,13 +282,13 @@ sensor:
User-Agent: Home Assistant REST sensor
```
-{% endraw %}
-
### Fetch multiple JSON attributes and present them as values
-[JSON Test](https://www.jsontest.com/) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/).
+{% note %}
+Most examples below use the `rest:` configuration format, which belongs to the [RESTful integration](/integrations/rest). The RESTful integration allows defining multiple sensors from a single HTTP endpoint, reducing the number of requests to the same service. If you only need a single sensor from an endpoint, use the `sensor` platform configuration shown in the examples above.
+{% endnote %}
-{% raw %}
+[JSON Test](https://www.jsontest.com/) returns the current time, date and milliseconds since epoch from [http://date.jsontest.com/](http://date.jsontest.com/).
```yaml
rest:
@@ -322,12 +304,8 @@ rest:
value_template: "{{ value_json.milliseconds_since_epoch }}"
```
-{% endraw %}
-
[JSONPlaceholder](https://jsonplaceholder.typicode.com/) provides sample JSON data for testing. In the below example, JSONPath locates the attributes in the JSON document. [JSONPath Online Evaluator](https://jsonpath.com/) provides a tool to test your JSONPath. If the endpoint returns XML, it will be converted to JSON using `xmltodict` before searching for attributes. You may find this [XML to JSON Converter](https://www.freeformatter.com/xml-to-json-converter.html) helpful for testing how your XML converts to JSON.
-{% raw %}
-
```yaml
sensor:
- platform: rest
@@ -342,12 +320,8 @@ sensor:
value_template: "{{ value_json[0].name }}"
```
-{% endraw %}
-
This sample fetches a weather report from [OpenWeatherMap](https://openweathermap.org/), maps the resulting data into attributes of the RESTful sensor and then creates a set of [template](/integrations/template) sensors that monitor the attributes and present the values in a usable form.
-{% raw %}
-
```yaml
rest:
- resource: "https://api.openweathermap.org/data/2.5/weather?zip=80302,us&APPID=VERYSECRETAPIKEY"
@@ -369,8 +343,6 @@ rest:
unit_of_measurement: "%"
```
-{% endraw %}
-
This configuration shows how to extract multiple values from a dictionary. This method avoids flooding the REST service because the result is only requested once. From that single request, multiple sensors can be created by using template sensors.
{% raw %}
@@ -400,8 +372,6 @@ This configuration shows how to extract multiple values from a dictionary. This
{% endraw %}
-{% raw %}
-
```yaml
rest:
resource: "http://"
@@ -424,12 +394,8 @@ rest:
unit_of_measurement: "°C"
```
-{% endraw %}
-
The example below shows how to extract multiple values from a dictionary from the XML file of a Steamist Steambath Wi-Fi interface. The values are used to create multiple sensors without having to poll the endpoint numerous times.
-{% raw %}
-
```yaml
rest:
# Steam Controller
@@ -451,8 +417,6 @@ rest_command:
url: http://192.168.1.105/leds.cgi?led={{ led }}
```
-{% endraw %}
-
For reference, the XML content of endpoint shown above example is below:
```xml
diff --git a/source/_integrations/serial.markdown b/source/_integrations/serial.markdown
index b10d5faf1526..8539a72afbc1 100644
--- a/source/_integrations/serial.markdown
+++ b/source/_integrations/serial.markdown
@@ -78,7 +78,7 @@ dsrdtr:
default: False
type: boolean
value_template:
- description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the serial line."
+ description: "Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract a value from the serial line."
required: false
type: template
{% endconfiguration %}
@@ -87,19 +87,15 @@ value_template:
### TMP36
-{% raw %}
-
```yaml
"{{ (((states('sensor.serial_sensor') | float * 5 / 1024 ) - 0.5) * 100) | round(1) }}"
```
-{% endraw %}
-
## Examples
### Arduino
-For controllers of the Arduino family, a possible sketch to read the temperature and the humidity could look like the sample below.The returned data is in JSON format and can be split into the individual sensor values using a [template](/docs/configuration/templating/#processing-incoming-data).
+For controllers of the Arduino family, a possible sketch to read the temperature and the humidity could look like the sample below.The returned data is in JSON format and can be split into the individual sensor values using a [template](/docs/templating/where-to-use/#processing-incoming-data).
```c
#include
@@ -132,8 +128,6 @@ $,24.3,51,12.8,1029.76,0.0,0.00,*
To parse this into individual sensors, split using the comma delimiter and then create a template sensor for each item of interest.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
sensor:
@@ -154,8 +148,6 @@ template:
state: "{{ states('sensor.serial_sensor').split(',')[4] | float(default=0) }}"
```
-{% endraw %}
-
### Digispark USB Development Board
This [blog post](/blog/2017/10/23/simple-analog-sensor/) describes the setup with a Digispark USB Development Board.
diff --git a/source/_integrations/seven_segments.markdown b/source/_integrations/seven_segments.markdown
index 9bfaa4372198..61742ad99419 100644
--- a/source/_integrations/seven_segments.markdown
+++ b/source/_integrations/seven_segments.markdown
@@ -124,8 +124,6 @@ image_processing:
With the help of a [template sensor](/integrations/template), the value can be shown as badge.
-{% raw %}
-
```yaml
sensor:
- platform: template
@@ -135,5 +133,3 @@ sensor:
friendly_name: "Ampere"
unit_of_measurement: "A"
```
-
-{% endraw %}
diff --git a/source/_integrations/seventeentrack.markdown b/source/_integrations/seventeentrack.markdown
index 833ef816b6cb..0abf74510126 100644
--- a/source/_integrations/seventeentrack.markdown
+++ b/source/_integrations/seventeentrack.markdown
@@ -64,8 +64,6 @@ template:
Then use a templated Markdown card to list all packages in transit along with their status:
-{% raw %}
-
```yaml
type: markdown
title: Packages in transit
@@ -78,8 +76,6 @@ content: >
{% endfor %}
```
-{% endraw %}
-
{% tip %}
To find your `config_entry_id`, go to {% my integrations title="**Settings** > **Devices & services**" %}, select the 17Track integration, click the three-dot menu, and select **Copy entry ID**.
{% endtip %}
diff --git a/source/_integrations/shell_command.markdown b/source/_integrations/shell_command.markdown
index 5256d97d8df5..5247bba9a8fb 100644
--- a/source/_integrations/shell_command.markdown
+++ b/source/_integrations/shell_command.markdown
@@ -86,8 +86,6 @@ shell_command:
This is an example of a shell command used in conjunction with an input
helper and an automation.
-{% raw %}
-
```yaml
# Apply value of a GUI slider to the shell_command
automation:
@@ -110,12 +108,8 @@ shell_command:
set_ac_to_slider: 'irsend SEND_ONCE DELONGHI AC_{{ states("input_number.ac_temperature") }}_AUTO'
```
-{% endraw %}
-
The following example shows how the shell command response may be used in automations.
-{% raw %}
-
```yaml
# Create a ToDo notification based on file contents
automation:
@@ -144,8 +138,6 @@ shell_command:
get_file_contents: "cat {{ filename }}"
```
-{% endraw %}
-
### Using SSH with shell_command
The `/root/.ssh` directory in the container is not persistent. Store your keys in `/config/.ssh` instead.
@@ -174,8 +166,6 @@ More information about `ssh-keygen` can be found in the [OpenSSH manual](https:/
Example configuration:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
# Replace with your target hostname or IP address
@@ -186,6 +176,4 @@ shell_command:
user@ 'hostname'
```
-{% endraw %}
-
This ensures SSH uses persistent files even after system updates.
diff --git a/source/_integrations/shopping_list.markdown b/source/_integrations/shopping_list.markdown
index 593db953bfce..f8d2673a06d9 100644
--- a/source/_integrations/shopping_list.markdown
+++ b/source/_integrations/shopping_list.markdown
@@ -88,8 +88,6 @@ A `shopping_list_updated` event is triggered when items in the list are modified
| `item.name` | The text attached to the item, for example `Milk` |
| `item.complete` | A boolean indicated whether the item has been marked as complete. |
-{% raw %}
-
```yaml
alias: "Notify on new shopping list item"
triggers:
@@ -106,8 +104,6 @@ actions:
url: "/shopping-list"
```
-{% endraw %}
-
You can also trigger an automation when a `shopping_list_updated` event was triggered by any of the following actions:
- `clear`: A completed item was cleared from the list.
diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown
index 30d157cddee9..56f94eb6e506 100644
--- a/source/_integrations/siren.mqtt.markdown
+++ b/source/_integrations/siren.mqtt.markdown
@@ -51,7 +51,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -60,7 +60,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -72,11 +72,11 @@ available_tones:
required: false
type: list
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate a custom payload to send to `command_topic`. The variable `value` will be assigned with the configured `payload_on` or `payload_off` setting. The siren turn on action parameters `tone`, `volume_level` or `duration` can be used as variables in the template. When operation in optimistic mode the corresponding state attributes will be set. Turn on parameters will be filtered if a device misses the support.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate a custom payload to send to `command_topic`. The variable `value` will be assigned with the configured `payload_on` or `payload_off` setting. The siren turn on action parameters `tone`, `volume_level` or `duration` can be used as variables in the template. When operation in optimistic mode the corresponding state attributes will be set. Turn on parameters will be filtered if a device misses the support.
required: false
type: template
command_off_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate a custom payload to send to `command_topic` when the siren turn off action is called. By default `command_template` will be used as template for action turn off. The variable `value` will be assigned with the configured `payload_off` setting.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate a custom payload to send to `command_topic` when the siren turn off action is called. By default `command_template` will be used as template for action turn off. The variable `value` will be assigned with the configured `payload_off` setting.
required: false
type: template
command_topic:
@@ -168,7 +168,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -234,7 +234,7 @@ state_topic:
required: false
type: string
state_value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's state from the `state_topic`. To determine the siren's state result of this template will be compared to `state_on` and `state_off`. Alternatively `value_template` can be used to render to a valid JSON payload."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's state from the `state_topic`. To determine the siren's state result of this template will be compared to `state_on` and `state_off`. Alternatively `value_template` can be used to render to a valid JSON payload."
required: false
type: template
support_duration:
@@ -265,8 +265,6 @@ In this section, you will find an example of how to use this siren platform.
The example below shows a full configuration for a siren.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -289,14 +287,10 @@ mqtt:
retain: true
```
-{% endraw %}
-
### On/Off only siren controlling a Tasmota relay
The example below shows a configuration for an On/Off type siren, which does not accept JSON commands.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -314,8 +308,6 @@ mqtt:
payload_not_available: "Offline"
```
-{% endraw %}
-
For a check, you can use the command line tools `mosquitto_pub` shipped with `mosquitto` to send MQTT messages. This allows you to operate your siren manually:
```bash
diff --git a/source/_integrations/slack.markdown b/source/_integrations/slack.markdown
index f6519f87eb5c..494c8e33d648 100644
--- a/source/_integrations/slack.markdown
+++ b/source/_integrations/slack.markdown
@@ -184,7 +184,7 @@ The following attributes can be placed inside the `data` key of the action for e
| `icon` | yes | The icon of the Slack bot. |
| `file` | yes | A file to include with the message; see below. |
| `blocks` | yes | Array of [Slack blocks](https://api.slack.com/messaging/composing/layouts). *NOTE*: if using `blocks`, they are shown **in place of** the `message` within Slack apps. The message field will be used as notification text and anywhere else Slack is unable to display blocks. `message` is required regardless of whether this field is used. |
-| `blocks_template` | yes | The same as `blocks`, but able to support [templates](https://www.home-assistant.io/docs/configuration/templating). |
+| `blocks_template` | yes | The same as `blocks`, but able to support [templates](/docs/templating/). |
| `thread_ts` | yes | Sends the message as a reply to a specified parent message. |
Note that using `file` will ignore all usage of `blocks` and `blocks_template` (as Slack does not support those frameworks in messages that accompany uploaded files).
diff --git a/source/_integrations/sleep_as_android.markdown b/source/_integrations/sleep_as_android.markdown
index 58cf69e892fb..30ac34ac74d9 100644
--- a/source/_integrations/sleep_as_android.markdown
+++ b/source/_integrations/sleep_as_android.markdown
@@ -172,8 +172,6 @@ Events triggered when a specific sound is detected during sleep tracking.
Here’s an example automation: when your Sleep as Android alarm starts ringing, your bedroom blinds will automatically open.
-{% raw %}
-
```yaml
alias: Open window blinds on Alarm
triggers:
@@ -194,8 +192,6 @@ actions:
mode: single
```
-{% endraw %}
-
## Control Sleep as Android via Home Assistant
The **Sleep as Android** app can be automated through its [Intent API](https://sleep.urbandroid.org/docs/devs/intent_api.html), allowing you to perform actions such as:
diff --git a/source/_integrations/smartthings.markdown b/source/_integrations/smartthings.markdown
index d1a311940dab..32c9f2a3641e 100644
--- a/source/_integrations/smartthings.markdown
+++ b/source/_integrations/smartthings.markdown
@@ -404,6 +404,10 @@ The SmartThings integration does not support all SmartThings capabilities. Only
- Do not create a GitHub Issue for feature requests, as issues are intended for bug reports.
- When creating a feature request, attach the [device diagnostics](#viewing-device-diagnostics) for the device that is missing functionality. This helps identify which capabilities your device exposes and speeds up the implementation.
+## SmartThings community
+
+The SmartThings integration is complex due to the breadth of devices and capabilities it supports. If you need community support or want to discuss device integration topics with other SmartThings users, you can join the [SmartThings Integration community on Discord](https://discord.gg/EJYdwMCz7K).
+
## Removing the integration
{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/smhi.markdown b/source/_integrations/smhi.markdown
index 2ba56bfd14bc..9589f0c5dc0a 100644
--- a/source/_integrations/smhi.markdown
+++ b/source/_integrations/smhi.markdown
@@ -42,7 +42,7 @@ The following weather sensors are provided (cloud sensors are disabled by defaul
- **Low cloud coverage** (%): Mean value of low-level cloud cover
- **Medium cloud coverage** (%): Mean value of medium-level cloud cover
- **High cloud coverage** (%): Mean value of high-level cloud cover
-- **Precipitation category**: Precipitation category can be any of the following: No precipitation, Snow, Snow and rain, Rain, Drizzle, Freezing rain, or Freezing drizzle
+- **Precipitation category**: Precipitation category can be any of the following: No precipitation, Rain, Thunderstorm, Freezing rain, Mixed/ice, Snow, Wet snow, Mixture of rain and snow, Ice pellets, Graupel, Hail, Drizzle and Freezing drizzle
- **Frozen precipitation** (%): Percent of precipitation in frozen form
The following fire sensors are provided (fire sensors are disabled by default):
diff --git a/source/_integrations/snmp.markdown b/source/_integrations/snmp.markdown
index 199331cfd584..8b98a841583f 100644
--- a/source/_integrations/snmp.markdown
+++ b/source/_integrations/snmp.markdown
@@ -206,7 +206,7 @@ username:
type: string
default: ''
value_template:
- description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to parse the value."
+ description: "Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to parse the value."
required: false
type: template
version:
@@ -258,8 +258,6 @@ According to the most common SNMP standard, the uptime of a device is accessible
To create a sensor that displays the uptime for your printer in minutes, you can use this configuration:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
sensor:
@@ -272,8 +270,6 @@ sensor:
value_template: "{{((value | int) / 6000) | int}}"
```
-{% endraw %}
-
The `accept_errors` option will allow the sensor to work even if the printer is not on when Home Assistant is first started: the sensor will just display a `-` instead of a minute count.
The `value_template` option converts the original value to minutes.
diff --git a/source/_integrations/solaredge.markdown b/source/_integrations/solaredge.markdown
index 7b3e372a3c5f..40fa38c7edb8 100644
--- a/source/_integrations/solaredge.markdown
+++ b/source/_integrations/solaredge.markdown
@@ -174,7 +174,6 @@ Finally, create an automation that updates the sensors and notifies you. Example
Update the SQL sensor entity IDs to match your setup.
{% endnote %}
-{% raw %}
```yaml
alias: "Notify: Low solar production modules"
triggers:
@@ -205,7 +204,6 @@ actions:
notification_id: solaredge_modules_low_production_alert
mode: single
```
-{% endraw %}
## Known limitations
diff --git a/source/_integrations/solarlog.markdown b/source/_integrations/solarlog.markdown
index b4e090c86b89..4396fb0ae55a 100644
--- a/source/_integrations/solarlog.markdown
+++ b/source/_integrations/solarlog.markdown
@@ -118,8 +118,6 @@ In addition, information from devices connected to the Solar-Log device becomes
In case you would like to get additional calculated sensors such as the amount of excess solar power available or the energy returned to the grid, you can use the [template platform](/integrations/template/).
-{% raw %}
-
```yaml
# Example configuration.yaml entry for sensor template platform
template:
@@ -128,8 +126,6 @@ template:
state: "{{ states('sensor.solarlog_consumption_year') | float(0) - states('sensor.self_consumption_year') | float(0) }}"
```
-{% endraw %}
-
## Data updates
The integration fetches data from the device every minute.
diff --git a/source/_integrations/solax.markdown b/source/_integrations/solax.markdown
index ba37bb6789fb..1f0cb1427c72 100644
--- a/source/_integrations/solax.markdown
+++ b/source/_integrations/solax.markdown
@@ -24,8 +24,6 @@ The **SolaX Power** {% term integration %} connects Home Assistant to Solax sola
If you would like to convert the values from multiple panels or view the total power the house is using, you can use the [template platform](/integrations/template).
-{% raw %}
-
```yaml
# Example configuration.yaml entry for template platform
template:
@@ -38,8 +36,6 @@ template:
state: "{{ (states('sensor.power_now') | float(default=0)) - (states('sensor.exported_power') | float(default=0)) }}"
```
-{% endraw %}
-
### Configuring the Energy Dashboard
There are generally at least 3 sensors from your inverter that you need to configure in the energy dashboard:
diff --git a/source/_integrations/sonos.markdown b/source/_integrations/sonos.markdown
index bd025b6deeb4..dc988f83b4da 100644
--- a/source/_integrations/sonos.markdown
+++ b/source/_integrations/sonos.markdown
@@ -69,9 +69,37 @@ For each speaker with a battery, a `sensor` showing the current battery charge l
The battery sensors rely on working change events or updates will be delayed. S1 battery sensors **require** working events to report any data. See more details in [Advanced use](#advanced-use).
{% endnote %}
+
### Alarm support notes
-The Sonos integration adds one `switch` for each alarm set in the Sonos app. The alarm switches are detected, deleted and assigned automatically and come with several attributes that help to monitor Sonos alarms.
+The Sonos integration adds one `switch` for each alarm set in the Sonos app. The alarm switches are detected, deleted, and assigned automatically and come with several attributes that help you monitor Sonos alarms.
+
+#### Important note about updating multiple alarms
+
+When enabling, disabling, or updating multiple Sonos alarms in a single automation or script, you may notice that not all alarms update as expected. This is a limitation of how Sonos synchronizes its alarm list across all speakers. If multiple alarm updates are sent rapidly (for example, by toggling several alarm switches at once), some changes may be lost or overwritten before they are fully synchronized between speakers.
+
+To ensure reliable updates, add a wait between each alarm update in your automation. A 1-second wait works well as a starting point, but you may need to increase it based on your setup. For example, add a `delay` action between each `switch.turn_on`, `switch.turn_off`, or `sonos.update_alarm` action call. This gives Sonos time to synchronize the alarm list before the next change.
+
+_Automation Example:_
+
+```yaml
+actions:
+ - action: switch.turn_on
+ target:
+ entity_id: switch.sonos_alarm_1
+ - delay:
+ seconds: 1
+ - action: switch.turn_on
+ target:
+ entity_id: switch.sonos_alarm_2
+ - delay:
+ seconds: 1
+ - action: switch.turn_on
+ target:
+ entity_id: switch.sonos_alarm_3
+```
+
+If you do not add a delay, you may see inconsistent alarm states, or some alarms may not update at all. In rare cases, rapidly updating alarms can cause a speaker to become unavailable. If this happens, power cycle the speaker and reload the integration.
### Microphone support notes
@@ -107,8 +135,6 @@ data:
Example templates:
-{% raw %}
-
```yaml
# Get all favorite names as a list (old behavior)
{{ state_attr("sensor.sonos_favorites", "items").values() | list }}
@@ -125,8 +151,6 @@ Example templates:
{% endfor %}
```
-{% endraw %}
-
{% tip %}
The Sonos favorites sensor (`sensor.sonos_favorites`) is disabled by default. It can be found and enabled from the entities associated with the Sonos integration on your {% my integrations %} page.
{% endtip %}
@@ -368,8 +392,6 @@ The `sonos.get_queue` action returns the media player's queue.
This example script does the following: get the queue, loop through in reverse order, and remove media containing the words "holiday".
-{% raw %}
-
```yaml
- action: sonos.get_queue
target:
@@ -397,8 +419,6 @@ This example script does the following: get the queue, loop through in reverse o
```
-{% endraw %}
-
### Action: Remove from queue
The `sonos.remove_from_queue` action removes an item from the queue.
@@ -407,8 +427,6 @@ The `sonos.remove_from_queue` action removes an item from the queue.
| `entity_id` | yes | String or list of `entity_id`s that will remove an item from the queue. It must be the coordinator if targeting a group.
| `queue_position` | yes | Position in the queue to remove.
-{% raw %}
-
```yaml
# Example automation to remove just played song from queue
alias: "Remove last played song from queue"
@@ -444,8 +462,6 @@ actions:
{{ trigger.from_state.attributes.queue_position }}
```
-{% endraw %}
-
## Network requirements
To work optimally, the Sonos devices must be able to connect back to the Home Assistant host on TCP port 1400. This will allow the push-based updates to work properly. If this port is blocked or otherwise unreachable from the Sonos devices, the integration will fall back to a polling mode which is slower to update and much less efficient. The integration will alert the user if this problem is detected.
diff --git a/source/_integrations/spc.markdown b/source/_integrations/spc.markdown
index b6f062abee14..7d5050284967 100644
--- a/source/_integrations/spc.markdown
+++ b/source/_integrations/spc.markdown
@@ -55,8 +55,6 @@ The `spc` alarm control panel platform allows you to control your [Vanderbilt SP
The `changed_by` attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in [automation](/getting-started/automation/).
-{% raw %}
-
```yaml
automation:
- alias: "Alarm status changed"
@@ -72,8 +70,6 @@ automation:
by {{ trigger.to_state.attributes.changed_by }}
```
-{% endraw %}
-
## Binary sensor
The `spc` platform allows you to get data from your [Vanderbilt SPC](https://www.spcsupportinfo.com/SPCConnectPro/) binary sensors from within Home Assistant.
diff --git a/source/_integrations/speedtestdotnet.markdown b/source/_integrations/speedtestdotnet.markdown
index d1ff5dab5c6a..e5f335832dad 100644
--- a/source/_integrations/speedtestdotnet.markdown
+++ b/source/_integrations/speedtestdotnet.markdown
@@ -44,8 +44,6 @@ Please be aware of the potential [inconsistencies](https://github.com/sivel/spee
In this section you will find some real-life examples of how to use this integration.
### Using as a trigger in an automation
-{% raw %}
-
```yaml
# Example configuration.yaml entry
automation:
@@ -82,8 +80,6 @@ automation:
rgb_color: [255, 0, 0]
```
-{% endraw %}
-
## Notes
- When running on Raspberry Pi the maximum speed is limited by the LAN adapter. The Raspberry Pi 3+ models come with a Gigabit LAN adapter which supports a [maximum throughput](https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/) of 300 Mbit/s.
diff --git a/source/_integrations/sql.markdown b/source/_integrations/sql.markdown
index dd0aeac1dca3..fc8cf1bb2d28 100644
--- a/source/_integrations/sql.markdown
+++ b/source/_integrations/sql.markdown
@@ -33,7 +33,6 @@ To configure this sensor, define the sensor connection variables and a list of q
To enable it, add the following lines to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
-{% raw %}
```yaml
# Example configuration.yaml
sql:
@@ -61,7 +60,6 @@ sql:
1;
column: "state"
```
-{% endraw %}
{% configuration %}
sql:
@@ -159,8 +157,6 @@ The data returned by the database is converted to be compatible with the action
##### Example of calling the `sql.query` action in an automation:
-{% raw %}
-
```yaml
action: sql.query
data:
@@ -181,12 +177,8 @@ data:
response_variable: sun_history
```
-{% endraw %}
-
This would return a result similar to this, which will be stored in the `sun_history` variable:
-{% raw %}
-
```yaml
result:
- state: below_horizon
@@ -196,7 +188,6 @@ result:
- state: below_horizon
last_updated_ts: 1760633861.848531
```
-{% endraw %}
## Information
diff --git a/source/_integrations/stookwijzer.markdown b/source/_integrations/stookwijzer.markdown
index a7fd95a87c3c..a4fdef9bfb78 100644
--- a/source/_integrations/stookwijzer.markdown
+++ b/source/_integrations/stookwijzer.markdown
@@ -78,8 +78,6 @@ forecast:
Example template sensors containing the Stookwijzer forecast for 6 and 12 hours from now.
-{% raw %}
-
```yaml
template:
- trigger:
@@ -105,6 +103,4 @@ template:
timestamp: "{{ advice_forecast['forecast'][1]['datetime'] }}"
```
-{% endraw %}
-
{% enddetails %}
diff --git a/source/_integrations/sun.markdown b/source/_integrations/sun.markdown
index 478f0bfdb5e0..608bc888bbdc 100644
--- a/source/_integrations/sun.markdown
+++ b/source/_integrations/sun.markdown
@@ -19,7 +19,7 @@ related:
title: Configuration file
---
-The **Sun** {% term integration %} calculates all sun-related times (sunrise, sunset, dawn, dusk, etc.) based on your configured home location. This means that all time-based calculations and triggers will be accurate for your specific location, as defined in your [basic configuration](/docs/configuration/basic/).
+The **Sun** {% term integration %} calculates sun-related times such as sunrise, sunset, dawn, and dusk based on your configured home location. This means that all time-based calculations and triggers will be accurate for your specific location, as defined in your [basic configuration](/docs/configuration/basic/).
The sun {% term integration %} will use the location as
{% my general title="configured in your Home Assistant configuration" %} to
@@ -33,19 +33,19 @@ automations as
## Configured by default
-This {% term integration %} is by default configured and installed, and you don't need
-to configure it yourself, unless you've disabled or removed the
+This {% term integration %} is configured and installed by default, so you don't need
+to set it up yourself, unless you've disabled or removed the
[`default_config:`](/integrations/default_config/) line from your
YAML configuration.
-If that is the case, you can configure it as described in the next paragraphs.
+If that is the case, follow the steps below to set it up.
{% include integrations/config_flow.md %}
## YAML configuration
-Alternatively, this integration can be configured and set up manually via YAML
-instead. To enable the sun integration in your installation, add the
+Alternatively, you can configure and set up this integration manually via YAML.
+To enable the sun integration in your installation, add the
following to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
@@ -63,7 +63,7 @@ sun:
The sun's event listener will perform the action when the sun rises or sets with
an offset.
-The sun trigger need to have the type 'sun', which event (sunset or sunrise) and an optional offset.
+The sun trigger needs the trigger type `sun`, an event (`sunset` or `sunrise`), and an optional offset.
```yaml
triggers:
@@ -86,7 +86,7 @@ triggers:
## Sensors
-The sensors are also available as attributes on the `sun.sun` entity for backwards compatibility reasons.
+The sensors are also available as attributes on the `sun.sun` entity for backward compatibility.
| Sensors | Description |
| ------------- | ---------------------------------------------------------------------------------------------------------------------- |
@@ -101,8 +101,8 @@ The sensors are also available as attributes on the `sun.sun` entity for backwar
## Binary sensors
-The binary sensors are also available as attributes on the `sun.sun` entity for backwards compatibility reasons.
+The binary sensors are also available as attributes on the `sun.sun` entity for backward compatibility.
| Sensors | Description |
| ------------- | ---------------------------------------------------------------------------------------------------------------------- |
-| Solar rising | True if the Sun is currently rising, after solar midnight and before solar noon. |
+| Solar rising | `on` when the sun is currently rising (after solar midnight and before solar noon). |
diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown
index a0b7556aa64a..f666581bd79a 100644
--- a/source/_integrations/switch.mqtt.markdown
+++ b/source/_integrations/switch.mqtt.markdown
@@ -51,7 +51,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -60,7 +60,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -68,7 +68,7 @@ availability_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`. The switch command template accepts the parameters `value`. The `value` parameter will contain the configured value for either `payload_on` or `payload_off`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`. The switch command template accepts the parameters `value`. The `value` parameter will contain the configured value for either `payload_on` or `payload_off`.
required: false
type: template
command_topic:
@@ -163,7 +163,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -233,7 +233,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's state from the `state_topic`. To determine the switches's state result of this template will be compared to `state_on` and `state_off`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's state from the `state_topic`. To determine the switches's state result of this template will be compared to `state_on` and `state_off`."
required: false
type: template
{% endconfiguration %}
diff --git a/source/_integrations/switch.rest.markdown b/source/_integrations/switch.rest.markdown
index df85e98d924e..f480f1c9aaa9 100644
--- a/source/_integrations/switch.rest.markdown
+++ b/source/_integrations/switch.rest.markdown
@@ -62,17 +62,17 @@ timeout:
type: integer
default: 10
body_on:
- description: "The body of the POST request that commands the switch to become enabled. This value can be a [template](/docs/configuration/templating/)."
+ description: "The body of the POST request that commands the switch to become enabled. This value can be a [template](/docs/templating/)."
required: false
type: string
default: "ON"
body_off:
- description: "The body of the POST request that commands the switch to become disabled. This value can also be a [template](/docs/configuration/templating/)."
+ description: "The body of the POST request that commands the switch to become disabled. This value can also be a [template](/docs/templating/)."
required: false
type: string
default: "OFF"
is_on_template:
- description: "A [template](/docs/configuration/templating/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches."
+ description: "A [template](/docs/templating/where-to-use/#processing-incoming-data) that determines the state of the switch from the value returned by the GET request on the resource URL. This template should compute to a boolean (True or False). If the value is valid JSON, it will be available in the template as the variable `value_json`. Default is equivalent to `'{% raw %}{{ value_json == body_on }}{% endraw %}'`. This means that by default, the state of the switch is on if and only if the response to the GET request matches."
required: false
type: string
username:
@@ -108,14 +108,12 @@ Make sure that the URL matches exactly your endpoint or resource.
### Switch with templated value
-This example shows a switch that uses a [template](/docs/configuration/templating/) to allow Home Assistant to determine its state. In this example, the REST endpoint returns this JSON response with true indicating the switch is on.
+This example shows a switch that uses a [template](/docs/templating/) to allow Home Assistant to determine its state. In this example, the REST endpoint returns this JSON response with true indicating the switch is on.
```json
{"is_active": "true"}
```
-{% raw %}
-
```yaml
switch:
- platform: rest
@@ -129,6 +127,4 @@ switch:
verify_ssl: true
```
-{% endraw %}
-
`body_on` and `body_off` can also depend on the state of the system. For example, to enable a remote temperature sensor tracking on a radio thermostat, one has to send the current value of the remote temperature sensor. This can be achieved by using the template `{% raw %}'{"rem_temp":{{states('sensor.bedroom_temp')}}}'{% endraw %}`.
diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown
index 120c916dc8e2..bf80dce71d70 100644
--- a/source/_integrations/switchbot.markdown
+++ b/source/_integrations/switchbot.markdown
@@ -378,8 +378,6 @@ The close button will close the blinds to the closest closed position (either 0%
Some integrations may expose your SwitchBot Blind Tilt to other actions which expect that 100% is open and 0% is fully closed. Using a [Cover Template](/integrations/template/#cover), a proxy entity can be created which will be open at 100% and closed at 0%. This template entity is limited to closing in one direction.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
cover:
@@ -410,8 +408,6 @@ cover:
entity_id: cover.example_blinds
```
-{% endraw %}
-
#### Roller Shade
The Roller Shade is exposed as a cover entity with control of the position only:
@@ -484,8 +480,6 @@ Features:
The integration adds a **Sync date and time** button to the device's details page. You can set up your own automation that triggers that button regularly. Here's a simple example for `configuration.yaml`:
-{% raw %}
-
```yaml
automation:
- alias: "Daily SwitchBot CO2 Time Sync"
@@ -501,8 +495,6 @@ automation:
# Replace with your actual entity ID
entity_id: button._sync_date_and_time
```
-
-{% endraw %}
{% enddetails %}
#### Contact Sensor
diff --git a/source/_integrations/system_log.markdown b/source/_integrations/system_log.markdown
index 5afa14110920..9d782de19160 100644
--- a/source/_integrations/system_log.markdown
+++ b/source/_integrations/system_log.markdown
@@ -105,8 +105,6 @@ automation:
This automation will create a persistent notification whenever an error or warning is logged that has the word "action" in the message:
-{% raw %}
-
```yaml
automation:
- alias: "Create notifications for 'action' errors"
@@ -123,8 +121,6 @@ automation:
message: "{{ trigger.event.data.message[0] }}"
```
-{% endraw %}
-
### Writing to log
This automation will create a new log entry when the door is opened:
diff --git a/source/_integrations/tado.markdown b/source/_integrations/tado.markdown
index df5bbee1f508..bd865eed035f 100644
--- a/source/_integrations/tado.markdown
+++ b/source/_integrations/tado.markdown
@@ -143,7 +143,6 @@ script:
time_period: "01:30:00"
```
-{% raw %}
```yaml
# Example automation to set temperature offset based on another thermostat value
automation:
@@ -174,7 +173,6 @@ automation:
{% set current_offset = state_attr('climate.tado', 'offset_celsius') %}
{{ (-(tado_temp - room_temp) + current_offset)|round(1) }}
```
-{% endraw %}
### Action: Add meter reading
@@ -187,7 +185,6 @@ The `tado.add_meter_reading` action adds your meter readings to Tado Energy IQ.
Examples:
-{% raw %}
```yaml
# Example automation add meter readings on a daily basis.
automation:
@@ -205,4 +202,3 @@ automation:
config_entry: ef2e84b3dfc0aee85ed44ac8e8038ccf
reading: "{{ states('sensor.gas_consumption')|int }}"
```
-{% endraw %}
diff --git a/source/_integrations/tag.markdown b/source/_integrations/tag.markdown
index 2115e6b5eed6..e4b0eceafbc0 100644
--- a/source/_integrations/tag.markdown
+++ b/source/_integrations/tag.markdown
@@ -53,8 +53,6 @@ State shows the time when the card was last scanned in datetime string format. F
One of the most fun applications of tags is to pick music in your living room. To make this super easy, you can use the below automation:
-{% raw %}
-
```yaml
automation:
- alias: "Handle Tag Scan"
@@ -93,8 +91,6 @@ automation:
- delay: 2 # timeout before we allow processing next scan
```
-{% endraw %}
-
To find your scanner's device ID, open Developer tools -> Events -> Listen to events and subscribe to `tag_scanned`.
Then scan a tag on the reader and note down the `device_id` from the `data` section.
diff --git a/source/_integrations/tag.mqtt.markdown b/source/_integrations/tag.mqtt.markdown
index 6a100b5981d3..5bdb86e499bd 100644
--- a/source/_integrations/tag.mqtt.markdown
+++ b/source/_integrations/tag.mqtt.markdown
@@ -21,7 +21,7 @@ topic:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that returns a tag ID."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that returns a tag ID."
required: false
type: template
device:
diff --git a/source/_integrations/tcp.markdown b/source/_integrations/tcp.markdown
index 4842be43ac89..dd605c094aaf 100644
--- a/source/_integrations/tcp.markdown
+++ b/source/_integrations/tcp.markdown
@@ -61,7 +61,7 @@ timeout:
default: 10
type: integer
value_template:
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value. By default it's assumed that the entire response is the value.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract the value. By default it's assumed that the entire response is the value.
required: false
type: template
unit_of_measurement:
@@ -100,8 +100,6 @@ $ echo "r WaterPressure" | nc 10.0.0.127 8888
You will notice that the output from the service is not just a single value (it contains ";ok" as well). To grab the value we're interested in, we can use a Jinja2 template. The response received is injected into the template as the `value` variable. To use this value within Home Assistant, use the following configuration:
-{% raw %}
-
```yaml
sensor:
# Example configuration.yaml entry
@@ -115,8 +113,6 @@ sensor:
unit_of_measurement: Bar
```
-{% endraw %}
-
#### hddtemp
The tool `hddtemp` collects the temperature of your hard disks.
@@ -138,8 +134,6 @@ Escape character is '^]'.
The entry for the `configuration.yaml` file for a `hddtemp` sensor could look like the example below.
-{% raw %}
-
```yaml
sensor:
# Example configuration.yaml entry
@@ -153,9 +147,6 @@ sensor:
unit_of_measurement: "°C"
```
-{% endraw %}
-
-
## Binary sensor
The TCP Binary Sensor is a type of [TCP Sensor](#sensor) which is either "off" or "on". In order to use this sensor type, in addition to the configuration for the TCP Sensor, you must supply a `value_on` value to represent what is returned when the device is turned on.
@@ -195,7 +186,7 @@ value_on:
required: true
type: string
value_template:
- description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the value.
+ description: Defines a [template](/docs/templating/where-to-use/#processing-incoming-data) to extract the value.
required: false
type: template
default: entire response is the value
diff --git a/source/_integrations/tedee.markdown b/source/_integrations/tedee.markdown
index 2232d175b9dd..9ad5b0332364 100644
--- a/source/_integrations/tedee.markdown
+++ b/source/_integrations/tedee.markdown
@@ -86,8 +86,6 @@ Get started quickly with these automation examples.
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
alias: Lock door when last person leaves
description: Lock the door when last person leaves the home
@@ -105,8 +103,7 @@ actions:
target:
entity_id: lock.lock_a1b2
```
-
-{% endraw %} {% enddetails %}
+{% enddetails %}
## Known Limitations
diff --git a/source/_integrations/telegram_bot.markdown b/source/_integrations/telegram_bot.markdown
index bff3c84c032a..678c6a65271b 100644
--- a/source/_integrations/telegram_bot.markdown
+++ b/source/_integrations/telegram_bot.markdown
@@ -181,8 +181,6 @@ You can use the `notify.send_message` action to publish notifications.
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
action: notify.send_message
data:
@@ -190,8 +188,6 @@ data:
entity_id: notify.telegram_bot_chat
```
-{% endraw %}
-
{% enddetails %}
## Notification actions
@@ -698,8 +694,6 @@ user_id: ""
Example automation:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -721,8 +715,6 @@ actions:
File name : {{ trigger.to_state.attributes.file_name }}
```
-{% endraw %}
-
### Event: Callback query received
The `telegram_callback` event is triggered when the bot receives a callback query from an inline keyboard button.
@@ -757,8 +749,6 @@ user_id: ""
Example automation:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -778,8 +768,6 @@ actions:
Callback query: {{ trigger.to_state.attributes.data }}
```
-{% endraw %}
-
### Event: Command received
The `telegram_command` event is triggered when the bot receives a command.
@@ -809,8 +797,6 @@ user_id: ""
Example automation:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -830,8 +816,6 @@ actions:
Args : {{ trigger.to_state.attributes.args }}
```
-{% endraw %}
-
### Event: Text received
The `telegram_text` event is triggered when the bot receives a text message (any message that does not begin with `/`).
@@ -859,8 +843,6 @@ user_id: ""
Example automation:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -882,8 +864,6 @@ actions:
Message : {{ trigger.to_state.attributes.text }}
```
-{% endraw %}
-
### Event: Message sent
The `telegram_sent` event is triggered when the bot sends a message of any type.
@@ -911,8 +891,6 @@ user_id: ""
Example automation:
-{% raw %}
-
```yaml
triggers:
- trigger: state
@@ -933,8 +911,6 @@ actions:
```
-{% endraw %}
-
### Sample automations with inline keyboards and callback queries
A quick example to show some of the callback capabilities of inline keyboards with a dumb automation consisting in a simple repeater of normal text that presents an inline keyboard with 3 buttons: 'EDIT', 'NO' and 'REMOVE BUTTON':
@@ -945,8 +921,6 @@ A quick example to show some of the callback capabilities of inline keyboards wi
Text repeater:
-{% raw %}
-
```yaml
alias: Telegram bot that repeats text
triggers:
@@ -969,12 +943,8 @@ actions:
- Remove this button:/remove_button
```
-{% endraw %}
-
Message editor:
-{% raw %}
-
```yaml
alias: Telegram bot that edits the last sent message
description: ""
@@ -1011,12 +981,8 @@ actions:
Data: {{ trigger.to_state.attributes.data|replace("_", "\_") }}
```
-{% endraw %}
-
Keyboard editor:
-{% raw %}
-
```yaml
alias: Telegram bot that edits the keyboard
triggers:
@@ -1046,12 +1012,8 @@ actions:
message_id: last
```
-{% endraw %}
-
Only acknowledges the 'NO' answer:
-{% raw %}
-
```yaml
alias: Telegram bot that simply acknowledges
triggers:
@@ -1074,15 +1036,11 @@ actions:
callback_query_id: "{{ trigger.to_state.attributes.id }}"
```
-{% endraw %}
-
### Sample automation to receive `chat_id` and `message_id` identifiers of sent messages
The following sample automation stores the `chat_id` and `message_id` of the last sent message using input entities.
These attributes can then be used in other **Telegram bot** actions.
-{% raw %}
-
```yaml
alias: Notifications about messages sent by Telegram bot
triggers:
@@ -1107,8 +1065,6 @@ actions:
entity_id: input_number.message_id # Replace with your input entity
```
-{% endraw %}
-
## Example: send_message with formatted Text
```yaml
@@ -1144,8 +1100,6 @@ actions:
## Example: send_message then edit it after a delay
-{% raw %}
-
```yaml
actions:
- action: telegram_bot.send_message
@@ -1161,8 +1115,6 @@ actions:
message_id: "{{ response.chats[0].message_id }}"
```
-{% endraw %}
-
## Example: send_message to a topic within a group
```yaml
@@ -1189,8 +1141,6 @@ actions:
## Example: automation to send a message and delete after a delay
-{% raw %}
-
```yaml
alias: telegram send message and delete
actions:
@@ -1209,8 +1159,6 @@ actions:
for_each: "{{ response.chats }}"
```
-{% endraw %}
-
## Known limitations
The following features are not available in this integration:
diff --git a/source/_integrations/telnet.markdown b/source/_integrations/telnet.markdown
index 47249c5b1ca8..d7dac5740ff9 100644
--- a/source/_integrations/telnet.markdown
+++ b/source/_integrations/telnet.markdown
@@ -20,8 +20,6 @@ The **Telnet** {% term integration %} allows you to control devices with telnet
To enable this {% term integration %}, add the following lines to your {% term "`configuration.yaml`" %} file.
{% include integrations/restart_ha_after_config_inclusion.md %}
-{% raw %}
-
```yaml
# Example configuration.yaml entry
switch:
@@ -37,8 +35,6 @@ switch:
timeout: 0.9
```
-{% endraw %}
-
{% configuration %}
switches:
description: The array that contains all switches.
diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown
index 5a9b220a901f..00db992fe795 100644
--- a/source/_integrations/template.markdown
+++ b/source/_integrations/template.markdown
@@ -46,13 +46,21 @@ ha_platforms:
ha_integration_type: helper
ha_config_flow: true
related:
+ - docs: /docs/templating/
+ title: About templating
+ - docs: /docs/templating/patterns/
+ title: Common template patterns
+ - docs: /docs/templating/debugging/
+ title: Debugging templates
+ - docs: /template-functions/
+ title: Template functions reference
- docs: /docs/configuration/
title: Configuration file
- docs: /docs/blueprint/
title: About blueprints
---
-The **Template** {% term integration %} allows creating entities which derive their values from other data. This is done by specifying [templates](/docs/configuration/templating/) for properties of an entity, like the name or the state.
+The **Template** {% term integration %} allows creating entities which derive their values from other data. This is done by specifying [templates](/docs/templating/) for properties of an entity, like the name or the state.
There is currently support for the following device types within Home Assistant:
@@ -95,8 +103,6 @@ Template entities by default update as soon as any of the referenced data in the
For example, you can have a template that takes the averages of two sensors. Home Assistant updates your template sensor as soon as either source sensor updates.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -109,8 +115,6 @@ template:
{{ ((bedroom + kitchen) / 2) | round(1, default=0) }}
```
-{% endraw %}
-
### Trigger-based template entities
If you want more control over when an entity updates, you can define triggers. Triggers follow the same format and work exactly the same as [triggers in automations][trigger-doc]. This feature is a great way to create entities based on webhook data ([example](#trigger-based-sensor-and-binary-sensor-storing-webhook-information)), or update entities based on a schedule.
@@ -125,8 +129,6 @@ The state, including attributes, of trigger-based sensors and binary sensors is
Buttons do not support using `trigger` or `action` options.
{% endnote %}
-{% raw %}
-
```yaml
# Example configuration entry
template:
@@ -142,8 +144,6 @@ template:
unit_of_measurement: "Days"
```
-{% endraw %}
-
### Configuration reference
{% configuration trigger-based %}
@@ -179,8 +179,6 @@ variables:
Each entity platform has its own set of configuration options, but there are some common options that can be used across all entity platforms.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -198,8 +196,6 @@ template:
device_class: problem
```
-{% endraw %}
-
{% configuration device %}
availability:
description: Defines a template to get the `available` state of the entity. If the template either fails to render or returns `True`, `"1"`, `"true"`, `"yes"`, `"on"`, `"enable"`, or a non-zero number, the entity is `available`. If the template returns any other value, the entity is `unavailable`. If not configured, the entity is always `available`. Note that the string comparison is not case sensitive; `"TrUe"` and `"yEs"` are allowed.
@@ -207,7 +203,7 @@ template:
type: template
default: true
default_entity_id:
- description: Use `default_entity_id` instead of name for automatic generation of the entity id. E.g. `sensor.my_awesome_sensor`. When used without a `unique_id`, the entity id updates during restart or reload if the entity id is available. If the entity id already exists, the entity id is created with a number at the end. When used with a `unique_id`, the `default_entity_id` is only used when the entity is added for the first time.
+ description: Use `default_entity_id` instead of name for automatic generation of the entity id. For example, `sensor.my_awesome_sensor`. When used without a `unique_id`, the entity id updates during restart or reload if the entity id is available. If the entity id already exists, the entity id is created with a number at the end. When used with a `unique_id`, the `default_entity_id` is only used when the entity is added for the first time.
required: false
type: string
icon:
@@ -244,8 +240,6 @@ The template alarm control panel platform allows you to create a alarm control p
Alarm control panel entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -277,8 +271,6 @@ template:
action: script.disarm_panel
```
-{% endraw %}
-
{% configuration alarm_control_panel %}
alarm_control_panel:
description: List of alarm control panels
@@ -340,8 +332,6 @@ The template binary sensor platform allows you to create binary sensors with tem
Binary sensor entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -363,8 +353,6 @@ template:
{{ is_state("sun.sun", "above_horizon") }}
```
-{% endraw %}
-
{% configuration binary-sensor %}
binary_sensor:
description: List of binary sensors
@@ -389,7 +377,7 @@ binary_sensor:
required: false
type: time
delay_on:
- description: The amount of time (e.g. `0:00:05`) the template state must be ***met*** before this sensor switches to `on`. This can also be a template.
+ description: The amount of time (for example, `0:00:05`) the template state must be ***met*** before this sensor switches to `on`. This can also be a template.
required: false
type: time
device_class:
@@ -398,7 +386,7 @@ binary_sensor:
type: device_class
default: None
state:
- description: The sensor is `on` if the template evaluates as `True`, `yes`, `on`, `enable` or a positive number. The sensor is `unknown` if the template evaluates as `None`. Any other value renders it as `off`. The actual appearance in the frontend (`Open`/`Closed`, `Detected`/`Clear` etc) depends on the sensor's device_class value
+ description: The sensor is `on` if the template evaluates as `True`, `yes`, `on`, `enable`, or a positive number. The sensor is `unknown` if the template evaluates as `None`. Any other value renders it as `off`. The actual appearance in the frontend (such as `Open`/`Closed` or `Detected`/`Clear`) depends on the sensor's device_class value.
required: true
type: template
@@ -409,8 +397,6 @@ binary_sensor:
This example creates a washing machine "load running" sensor by monitoring an
energy meter connected to the washer. During the washer's operation, the energy meter fluctuates wildly, hitting zero frequently even before the load is finished. By utilizing `delay_off`, we can have this sensor only turn off if there has been no washer activity for 5 minutes.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
# Determine when the washing machine has a load running.
@@ -420,17 +406,13 @@ template:
delay_off:
minutes: 5
state: >
- {{ states('sensor.washing_machine_power')|float > 0 }}
+ {{ states('sensor.washing_machine_power') | float > 0 }}
```
-{% endraw %}
-
### State based binary sensor - Is Anyone Home
This example is determining if anyone is home based on the combination of device tracking and motion sensors. It's extremely useful if you have kids/baby sitter/grand parents who might still be in your house that aren't represented by a trackable device in Home Assistant. This is providing a composite of Wi-Fi based device tracking and Z-Wave multisensor presence sensors.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -446,13 +428,9 @@ template:
or is_state('binary_sensor.family_room_144', 'on') }}
```
-{% endraw %}
-
### State based binary sensor - device tracker sensor with latitude and longitude attributes
-This example shows how to combine a non-GPS (e.g., NMAP) and GPS device tracker while still including latitude and longitude attributes
-
-{% raw %}
+This example shows how to combine a non-GPS (for example, NMAP) and GPS device tracker while still including latitude and longitude attributes
```yaml
# Example configuration.yaml entry
@@ -477,14 +455,10 @@ template:
{% endif %}
```
-{% endraw %}
-
### State based binary sensor - Change the icon when a state changes
This example demonstrates how to use template to change the icon as its state changes. This icon is referencing its own state.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -500,16 +474,12 @@ template:
{% endif %}
```
-{% endraw %}
-
### Trigger based binary sensor - Change state and icon when a custom event is received
A more advanced use case could be to set the icon based on the sensor's own state like above, but when triggered by an event. This example demonstrates a binary sensor that turns on momentarily, such as when a doorbell button is pressed.
The binary sensor turns on and sets the matching icon when the appropriate event is received. After 5 seconds, the binary sensor turns off automatically. To ensure the icon gets updated, there must be a trigger for when the state changes to off.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -527,16 +497,12 @@ template:
seconds: 5
```
-{% endraw %}
-
## Button
The template button platform allows you to create button entities with scripts to define each action.
Button entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -550,8 +516,6 @@ template:
command: fast_forward
```
-{% endraw %}
-
{% configuration button %}
button:
description: List of buttons
@@ -568,14 +532,12 @@ button:
The template cover platform allows you to create covers with templates to define the state and scripts to define each action.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
- cover:
- name: Garage Door
- state: "{{ states('sensor.garage_door')|float > 0 }}"
+ state: "{{ states('sensor.garage_door') | float > 0 }}"
device_class: garage
open_cover:
action: script.open_garage_door
@@ -593,7 +555,7 @@ template:
entity_id: sensor.garage_door
cover:
- name: Garage Door
- state: "{{ trigger.to_state.state|float(0) > 0 }}"
+ state: "{{ trigger.to_state.state | float(0) > 0 }}"
device_class: garage
open_cover:
action: script.open_garage_door
@@ -603,8 +565,6 @@ template:
action: script.stop_garage_door
```
-{% endraw %}
-
{% configuration cover %}
cover:
description: Characteristics of a cover
@@ -681,8 +641,6 @@ If both a `state` and a `position` are specified, only `opening` and `closing` s
This example converts a garage door with a controllable switch and position sensor into a cover. The condition check is optional, but suggested if you use the same switch to open and close the garage.
-{% raw %}
-
```yaml
template:
- cover:
@@ -708,21 +666,17 @@ template:
target:
entity_id: switch.garage_door
icon: >-
- {% if states('sensor.garage_door')|float > 0 %}
+ {% if states('sensor.garage_door') | float > 0 %}
mdi:garage-open
{% else %}
mdi:garage
{% endif %}
```
-{% endraw %}
-
### State based cover - Optimistic Garage Door with Momentary Switch
This example converts a garage door with a momentary switch.
-{% raw %}
-
```yaml
template:
- cover:
@@ -742,14 +696,10 @@ template:
entity_id: switch.garage_door
```
-{% endraw %}
-
## Event
The template event platform allows you to create events with templates to define the state.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -774,8 +724,6 @@ template:
event_types: "{{ ['Keypad lock operation', 'Keypad unlock operation'] }}"
```
-{% endraw %}
-
{% configuration event %}
event:
description: List of events
@@ -803,8 +751,6 @@ The template fan platform allows you to create fans with templates to define the
Fan entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -887,8 +833,6 @@ template:
- 'whoosh'
```
-{% endraw %}
-
{% configuration fan %}
fan:
description: List of fans
@@ -970,8 +914,6 @@ When converting a fan with 3 speeds from the old fan entity model, the following
This example uses an input_boolean and an input_number to mimic a fan, and the example shows multiple actions for `set_percentage`.
-{% raw %}
-
```yaml
template:
- fan:
@@ -999,14 +941,10 @@ template:
value: "{{ percentage }}"
```
-{% endraw %}
-
### State based fan - Fan with preset modes
This example uses an existing fan with only a percentage. It extends the percentage value into useable preset modes without a helper entity.
-{% raw %}
-
```yaml
template:
- fan:
@@ -1063,16 +1001,12 @@ template:
{% endif %}
```
-{% endraw %}
-
## Image
The template image platform allows you to create image entities with templates to define the image URL.
Image entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -1098,8 +1032,6 @@ template:
{% endif %}
```
-{% endraw %}
-
{% configuration image %}
image:
description: List of images
@@ -1123,15 +1055,13 @@ The template light platform allows you to create lights with templates to define
Light entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
- light:
- name: "Theater Lights"
- level: "{{ state_attr('sensor.theater_brightness', 'lux')|int }}"
- state: "{{ state_attr('sensor.theater_brightness', 'lux')|int > 0 }}"
+ level: "{{ state_attr('sensor.theater_brightness', 'lux') | int }}"
+ state: "{{ state_attr('sensor.theater_brightness', 'lux') | int > 0 }}"
temperature: "{{states('input_number.temperature_input') | int}}"
hs: "({{states('input_number.h_input') | int}}, {{states('input_number.s_input') | int}})"
effect_list: "{{ state_attr('light.led_strip', 'effect_list') }}"
@@ -1187,8 +1117,8 @@ template:
- light.led_strip
light:
- name: "Theater Lights"
- level: "{{ state_attr('sensor.theater_brightness', 'lux')|int }}"
- state: "{{ state_attr('sensor.theater_brightness', 'lux')|int > 0 }}"
+ level: "{{ state_attr('sensor.theater_brightness', 'lux') | int }}"
+ state: "{{ state_attr('sensor.theater_brightness', 'lux') | int > 0 }}"
temperature: "{{states('input_number.temperature_input') | int}}"
hs: "({{states('input_number.h_input') | int}}, {{states('input_number.s_input') | int}})"
effect_list: "{{ state_attr('light.led_strip', 'effect_list') }}"
@@ -1231,16 +1161,12 @@ template:
supports_transition: "{{ true }}"
```
-{% endraw %}
-
### Wrapping WLED presets as light effects
-This example creates a template light that wraps an RGBW WLED device and exposes its saved presets — predefined combinations of effects, colors, and brightness stored on the device — as selectable effects directly in the light entity. This is useful if you prefer to pick presets from the effects list in a light card on your dashboard, without having to use a separate select entity.
+This example creates a template light that wraps an RGBW WLED device and exposes its saved presets (predefined combinations of effects, colors, and brightness stored on the device) as selectable effects directly in the light entity. This is useful if you prefer to pick presets from the effects list in a light card on your dashboard, without having to use a separate select entity.
The template light mirrors the state, brightness, and RGBW color of the underlying WLED light entity. Selecting an effect sends the matching preset name to the WLED preset select entity.
-{% raw %}
-
```yaml
template:
- light:
@@ -1281,8 +1207,6 @@ template:
option: "{{ effect }}"
```
-{% endraw %}
-
{% configuration light %}
light:
description: List of your lights.
@@ -1405,8 +1329,6 @@ the payload to the consumer including any scale conversions you may need to
make; the [media player integration](/integrations/media_player/) needs a floating
point percentage value from `0.0` to `1.0`.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
template:
@@ -1439,35 +1361,31 @@ template:
target:
entity_id: media_player.receiver
data:
- volume_level: "{{ (brightness / 255 * 100)|int / 100 }}"
+ volume_level: "{{ (brightness / 255 * 100) | int / 100 }}"
level: >-
{% if is_state('media_player.receiver', 'on') %}
- {{ (state_attr('media_player.receiver', 'volume_level')|float * 255)|int }}
+ {{ (state_attr('media_player.receiver', 'volume_level') | float * 255) | int }}
{% else %}
0
{% endif %}
```
-{% endraw %}
-
### State based light - Make a global light entity for a multi-segment WLED light
This example shows how to group together 2 RGBW segments from the same WLED controller into a single usable light.
-{% raw %}
-
```yaml
template:
- light:
unique_id: 28208f257b54c44e50deb2d618d44710
name: Multi-segment Wled control
state: "{{ states('light.wled_master') }}"
- level: "{{ state_attr('light.wled_master', 'brightness')|d(0,true)|int }}"
+ level: "{{ state_attr('light.wled_master', 'brightness') | d(0,true) | int }}"
rgbw: (
- {{ (state_attr('light.wled_segment_0', 'rgbw_color')[0]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[0]|d(0))/2 }},
- {{ (state_attr('light.wled_segment_0', 'rgbw_color')[1]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[1]|d(0))/2 }},
- {{ (state_attr('light.wled_segment_0', 'rgbw_color')[2]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[2]|d(0))/2 }},
- {{ (state_attr('light.wled_segment_0', 'rgbw_color')[3]|d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[3]|d(0))/2 }}
+ {{ (state_attr('light.wled_segment_0', 'rgbw_color')[0] | d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[0] | d(0))/2 }},
+ {{ (state_attr('light.wled_segment_0', 'rgbw_color')[1] | d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[1] | d(0))/2 }},
+ {{ (state_attr('light.wled_segment_0', 'rgbw_color')[2] | d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[2] | d(0))/2 }},
+ {{ (state_attr('light.wled_segment_0', 'rgbw_color')[3] | d(0) + state_attr('light.wled_segment_1', 'rgbw_color')[3] | d(0))/2 }}
)
effect_list: "{{ state_attr('light.wled_segment_0', 'effect_list') }}"
effect: "{{ state_attr('light.wled_segment_0', 'effect') if state_attr('light.wled_segment_0', 'effect') == state_attr('light.wled_segment_1', 'effect') else none }}"
@@ -1501,16 +1419,12 @@ template:
effect: "{{ effect }}"
```
-{% endraw %}
-
## Lock
The template lock platform allows you to create locks with templates to define the state and scripts to define each action.
Lock entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -1546,8 +1460,6 @@ template:
entity_id: switch.door
```
-{% endraw %}
-
{% configuration lock %}
lock:
description: List of locks
@@ -1587,8 +1499,6 @@ lock:
This example shows a lock that copies data from a switch.
-{% raw %}
-
```yaml
template:
- lock:
@@ -1604,14 +1514,10 @@ template:
entity_id: switch.source
```
-{% endraw %}
-
### State based lock - Optimistic mode
This example shows a lock in optimistic mode. This lock immediately changes state after command and does not wait for state updates from the sensor.
-{% raw %}
-
```yaml
template:
- lock:
@@ -1628,14 +1534,10 @@ template:
entity_id: switch.source
```
-{% endraw %}
-
### State based lock - Sensor and Two Switches
This example shows a lock that takes its state from a sensor, and uses two momentary switches to control a device.
-{% raw %}
-
```yaml
template:
- lock:
@@ -1651,14 +1553,10 @@ template:
entity_id: switch.skylight_close
```
-{% endraw %}
-
### State based lock - Secret code
This example shows a lock that copies data from a switch. It needs a PIN code defined as a [secret](/docs/configuration/secrets) to unlock and no code to lock. Note that the actual validity check of the code is part of the `unlock` action and should always happen there or in scripts called from these actions. In this way, you can not only perform code checks against static values, but also dynamic ones (for instance, TOTPs).
-{% raw %}
-
```yaml
template:
- lock:
@@ -1672,32 +1570,24 @@ template:
unlock:
- variables:
pin: !secret garage_door_pin
- - condition: "{{ code|int == pin|int }}"
+ - condition: "{{ code | int == pin | int }}"
- action: switch.turn_off
target:
entity_id: switch.source
```
-{% endraw %}
-
In `secrets.yaml`:
-{% raw %}
-
```yaml
garage_door_pin: "1234"
```
-{% endraw %}
-
## Number
The template number platform allows you to create number entities with templates to define the state and scripts to define each action.
Number entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -1735,8 +1625,6 @@ template:
icon: mdi:ruler
```
-{% endraw %}
-
{% configuration number %}
number:
description: List of numbers
@@ -1784,15 +1672,13 @@ number:
This example demonstrates the usage of a template number with a unit of measurement set to change a unit-less value of another number entity.
-{% raw %}
-
```yaml
template:
- number:
- name: "Cutting Height"
unit_of_measurement: "cm"
unique_id: automower_cutting_height
- state: "{{ states('number.automower_cutting_height_raw')|int(0) * 0.5 + 1.5 }}"
+ state: "{{ states('number.automower_cutting_height_raw') | int(0) * 0.5 + 1.5 }}"
set_value:
- action: number.set_value
target:
@@ -1805,16 +1691,12 @@ template:
icon: mdi:ruler
```
-{% endraw %}
-
## Select
The template select platform allows you to create select entities with templates to define the state and scripts to define each action.
Select entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -1845,8 +1727,6 @@ template:
day_night_mode: "{{ option }}"
```
-{% endraw %}
-
{% configuration select %}
select:
description: List of selects
@@ -1877,8 +1757,6 @@ select:
This show how a state based template select can be used to perform an action.
-{% raw %}
-
```yaml
template:
select:
@@ -1894,16 +1772,12 @@ template:
entity_id: camera.porch_camera_sd
```
-{% endraw %}
-
## Sensor
The template sensor platform allows you to create sensors with templates to define the state and attributes.
Sensor entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -1912,7 +1786,7 @@ template:
state: >
{% if is_state('switch.kettle', 'off') %}
off
- {% elif state_attr('switch.kettle', 'W')|float < 1000 %}
+ {% elif state_attr('switch.kettle', 'W') | float < 1000 %}
standby
{% elif is_state('switch.kettle', 'on') %}
on
@@ -1937,8 +1811,6 @@ template:
state: "{{ (states('sensor.outside_temperature') | float - 32) * 5/9 }}"
```
-{% endraw %}
-
{% configuration sensor %}
sensor:
description: List of sensors
@@ -1960,7 +1832,7 @@ sensor:
type: template
default: None
state:
- description: "Defines a template to get the state of the sensor. If the sensor is numeric, i.e. it has a `state_class` or a `unit_of_measurement`, the state template must render to a number or to `none`. The state template must not render to a string, including `unknown` or `unavailable`. An `availability` template may be defined to suppress rendering of the state template."
+ description: "Defines a template to get the state of the sensor. If the sensor is numeric, that is, it has a `state_class` or a `unit_of_measurement`, the state template must render to a number or to `none`. The state template must not render to a string, including `unknown` or `unavailable`. An `availability` template may be defined to suppress rendering of the state template."
required: true
type: template
state_class:
@@ -1980,24 +1852,18 @@ sensor:
This example shows the sun angle in the frontend.
-{% raw %}
-
```yaml
template:
- sensor:
- name: Sun Angle
unit_of_measurement: "°"
- state: "{{ '%+.1f'|format(state_attr('sun.sun', 'elevation')) }}"
+ state: "{{ '%+.1f' | format(state_attr('sun.sun', 'elevation')) }}"
```
-{% endraw %}
-
### State based sensor - Modifying another sensor's output
If you don't like the wording of a sensor output, then the Template Sensor can help too. Let's rename the output of the [Sun integration](/integrations/sun/) as a simple example:
-{% raw %}
-
```yaml
template:
- sensor:
@@ -2010,38 +1876,30 @@ template:
{% endif %}
```
-{% endraw %}
-
### State based sensor - Changing the unit of measurement of another sensor
With a Template Sensor, it's easy to convert given values into others if the unit of measurement doesn't fit your needs.
Because the sensors do math on the source sensor's state and need to render to a numeric value, an availability template is used
to suppress rendering of the state template if the source sensor does not have a valid numeric state.
-{% raw %}
-
```yaml
template:
- sensor:
- name: "Transmission Down Speed"
unit_of_measurement: "kB/s"
- state: "{{ states('sensor.transmission_down_speed')|float * 1024 }}"
+ state: "{{ states('sensor.transmission_down_speed') | float * 1024 }}"
availability: "{{ is_number(states('sensor.transmission_down_speed')) }}"
- name: "Transmission Up Speed"
unit_of_measurement: "kB/s"
- state: "{{ states('sensor.transmission_up_speed')|float * 1024 }}"
+ state: "{{ states('sensor.transmission_up_speed') | float * 1024 }}"
availability: "{{ is_number(states('sensor.transmission_up_speed')) }}"
```
-{% endraw %}
-
### Trigger based sensor - Using conditions to control updates
This example shows how to store the last valid value of a temperature sensor. It updates as long as the source sensor has a valid (numeric) state. Otherwise, the template sensor's state remains unchanged.
-{% raw %}
-
```yaml
template:
- triggers:
@@ -2055,16 +1913,12 @@ template:
state: "{{ states('sensor.outside_temperature') }}"
```
-{% endraw %}
-
## Switch
The template switch platform allows you to create switches with templates to define the state and scripts to define each action.
Switch entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -2100,8 +1954,6 @@ template:
entity_id: switch.skylight_close
```
-{% endraw %}
-
{% configuration switch %}
switch:
description: List of switches
@@ -2133,8 +1985,6 @@ switch:
This example shows a switch that is the inverse of another switch.
-{% raw %}
-
```yaml
template:
- switch:
@@ -2150,14 +2000,10 @@ template:
entity_id: switch.target
```
-{% endraw %}
-
### State based switch - Toggle Switch
This example shows a switch that takes its state from a sensor and toggles a switch.
-{% raw %}
-
```yaml
template:
- switch:
@@ -2173,15 +2019,11 @@ template:
entity_id: switch.blind_toggle
```
-{% endraw %}
-
### State based switch - Sensor and Two Switches
This example shows a switch that takes its state from a sensor, and uses two
momentary switches to control a device.
-{% raw %}
-
```yaml
template:
- switch:
@@ -2197,14 +2039,10 @@ template:
entity_id: switch.skylight_close
```
-{% endraw %}
-
### State based switch - Optimistic Switch
This example switch with an assumed state based on the actions performed. This switch immediately changes state after a `turn_on`/`turn_off` command.
-{% raw %}
-
```yaml
template:
- switch:
@@ -2219,16 +2057,12 @@ template:
entity_id: switch.blind_toggle
```
-{% endraw %}
-
## Update
The template update platform allows you to create update entities with templates to define the state and a script to define the install action.
Update entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -2254,8 +2088,6 @@ template:
action: script.update_frigate
```
-{% endraw %}
-
{% configuration vacuum %}
update:
description: List of update entities
@@ -2317,8 +2149,6 @@ The template vacuum platform allows you to create vacuum entities with templates
Vacuum entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -2341,8 +2171,6 @@ template:
action: script.vacuum_start
```
-{% endraw %}
-
{% configuration vacuum %}
vacuum:
description: List of vacuum entities
@@ -2446,15 +2274,13 @@ vacuum:
This example shows how to add custom attributes.
-{% raw %}
-
```yaml
vacuum:
- platform: template
vacuums:
living_room_vacuum:
value_template: "{{ states('sensor.vacuum_state') }}"
- battery_level_template: "{{ states('sensor.vacuum_battery_level')|int }}"
+ battery_level_template: "{{ states('sensor.vacuum_battery_level') | int }}"
fan_speed_template: "{{ states('sensor.vacuum_fan_speed') }}"
attribute_templates:
status: >-
@@ -2467,16 +2293,12 @@ vacuum:
{% endif %}
```
-{% endraw %}
-
## Weather
The template weather platform allows you to create weather entities with templates to define the state and attributes.
Weather entities can be created from the frontend in the Helpers section or via YAML.
-{% raw %}
-
```yaml
# Example state-based configuration.yaml entry
template:
@@ -2507,8 +2329,6 @@ template:
forecast_daily: "{{ state_attr('weather.my_region', 'forecast_data') }}"
```
-{% endraw %}
-
{% configuration weather %}
weather:
description: List of weather entities
@@ -2627,8 +2447,6 @@ The `twice_daily` forecast should contain dictionaries, where each dictionary re
This example demonstrates how to use an `action` to call a [action with response data](/docs/scripts/perform-actions/#use-templates-to-handle-response-data)
and use the response in a template.
-{% raw %}
-
```yaml
template:
- triggers:
@@ -2649,8 +2467,6 @@ template:
forecast: "{{ hourly['weather.home'].forecast }}"
```
-{% endraw %}
-
#### Video tutorial
This video tutorial explains how to set up a trigger based template that makes use of an action to retrieve the weather forecast (precipitation).
@@ -2685,8 +2501,6 @@ template:
Template entities can be triggered using any automation trigger, including webhook triggers. Use a trigger-based template entity to store this information in template entities.
-{% raw %}
-
```yaml
template:
- triggers:
@@ -2707,8 +2521,6 @@ template:
device_class: motion
```
-{% endraw %}
-
You can test this trigger entity with the following CURL command:
```bash
@@ -2730,8 +2542,6 @@ Self-referencing using `this` provides the state and attributes for the entity b
This example demonstrates how the `this` variable can be used in templates for self-referencing.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -2742,8 +2552,6 @@ template:
test: "{{ now() }}"
```
-{% endraw %}
-
## Optimistic mode
For template entities that support interactivity (like `number` and `select`), you can enable optimistic mode by setting the `optimistic` parameter to `true`. This affects how the entity's state updates when you interact with it:
@@ -2768,15 +2576,13 @@ When there are entities present in the template and no triggers are defined, the
Define a trigger to avoid a rate limit and get more control over entity updates.
{% endtip %}
-When `states` is used in a template by itself to iterate all states on the system, the template is re-rendered each
+When [`states`](/template-functions/states/) is used in a template by itself to iterate all states on the system, the template is re-rendered each
time any state changed event happens if any part of the state is accessed. When merely counting states, the template
is only re-rendered when a state is added or removed from the system. On busy systems with many entities or hundreds of
thousands state changed events per day, templates may re-render more than desirable.
In the below example, re-renders are limited to once per minute because we iterate over all available entities:
-{% raw %}
-
```yaml
template:
- binary_sensor:
@@ -2784,12 +2590,8 @@ template:
state: "{{ states | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}"
```
-{% endraw %}
-
In the below example, re-renders are limited to once per second because we iterate over all entities in a single domain (sensor):
-{% raw %}
-
```yaml
template:
- binary_sensor:
@@ -2797,26 +2599,20 @@ template:
state: "{{ states.sensor | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}"
```
-{% endraw %}
-
If the template accesses every state on the system, a rate limit of one update per minute is applied. If the template accesses all states under a specific domain, a rate limit of one update per second is applied. If the template only accesses specific states, receives update events for specifically referenced entities, or the `homeassistant.update_entity` action is used, no rate limit is applied.
## Considerations
### Startup
-If you are using the state of a platform that might not be available during startup, the Template Sensor may get an `unknown` state. To avoid this, use the `states()` function in your template. For example, you should replace {% raw %}`{{ states.sensor.moon.state }}`{% endraw %} with this equivalent that returns the state and never results in `unknown`: {% raw %}`{{ states('sensor.moon') }}` {% endraw %}.
-
-The same would apply to the `is_state()` function. You should replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an `unknown` result:
+If you are using the state of a platform that might not be available during startup, the Template Sensor may get an `unknown` state. To avoid this, use the [`states()`](/template-functions/states/) function in your template. For example, you should replace {% raw %}`{{ states.sensor.moon.state }}`{% endraw %} with this equivalent that returns the state and never results in `unknown`: {% raw %}`{{ states('sensor.moon') }}` {% endraw %}.
-{% raw %}
+The same would apply to the [`is_state()`](/template-functions/is_state/) function. You should replace {% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} with this equivalent that returns `true`/`false` and never gives an `unknown` result:
```yaml
{{ is_state('switch.source', 'on') }}
```
-{% endraw %}
-
## Using blueprints
If you're just starting out and are not really familiar with templates, we recommend that you start with {% term blueprint %} template entities. These are template entities which are ready-made by the community and that you only need to configure.
@@ -2873,7 +2669,6 @@ This example covers how to migrate a legacy template sensor into modern syntax.
Take the example `configuration.yaml` file
-{% raw %}
```yaml
# configuration.yaml
sensor:
@@ -2890,8 +2685,6 @@ sensor:
unique_id: sa892hfa9sdf8
value_template: "{{ states.light | selectattr('state', 'eq', 'on') | list | count }}"
```
-
-{% endraw %}
To get started with the migration:
1. Remove the `sensor` template definition from the `configuration.yaml` `sensor:` section.
@@ -2999,7 +2792,6 @@ This example covers how to migrate a legacy template sensor into modern syntax.
Take the example `configuration.yaml` file
-{% raw %}
```yaml
# configuration.yaml
sensor:
@@ -3022,7 +2814,6 @@ template:
- name: Bright Outside
state: "{{ states('sensor.lux_value') | float(0) > 10 }}"
```
-{% endraw %}
To get started with the migration:
@@ -3118,7 +2909,6 @@ sensor: !include sensors.yaml
template: !include templates.yaml
```
-{% raw %}
```yaml
# sensors.yaml
@@ -3136,9 +2926,6 @@ template: !include templates.yaml
value_template: "{{ states.light | selectattr('state', 'eq', 'on') | list | count }}"
```
-{% endraw %}
-
-{% raw %}
```yaml
# templates.yaml
@@ -3147,7 +2934,6 @@ template: !include templates.yaml
- name: Bright Outside
state: "{{ states('sensor.lux_value') | float(0) > 10 }}"
```
-{% endraw %}
To get started with the migration:
@@ -3169,7 +2955,6 @@ To get started with the migration:
{% endraw %}
Make sure to keep all the other platforms in the sensor file. Your `sensors.yaml` file would look like this after the change:
-
```yaml
# sensors.yaml
diff --git a/source/_integrations/tessie.markdown b/source/_integrations/tessie.markdown
index 522adb6c8374..a839498a7b78 100644
--- a/source/_integrations/tessie.markdown
+++ b/source/_integrations/tessie.markdown
@@ -451,7 +451,6 @@ automation:
This automation sends a notification when your vehicle has finished charging:
-{% raw %}
```yaml
automation:
- alias: "Notify when Tesla charging complete"
@@ -469,7 +468,6 @@ automation:
data:
message: "Tesla charging is complete at {{ states('sensor.my_tesla_battery_level') }}%"
```
-{% endraw %}
## Troubleshooting
diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown
index 8db5d07d09f6..c7b84a8cb0a8 100644
--- a/source/_integrations/text.mqtt.markdown
+++ b/source/_integrations/text.mqtt.markdown
@@ -45,7 +45,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -58,11 +58,11 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -145,7 +145,7 @@ entity_picture:
required: false
type: string
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -199,7 +199,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the text state value from the payload received on `state_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the text state value from the payload received on `state_topic`."
required: false
type: template
{% endconfiguration %}
@@ -212,8 +212,6 @@ Make sure that your topic matches exactly. `some-topic/` and `some-topic` are di
This is an example of a manual configured MQTT `text` item.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -226,5 +224,3 @@ mqtt:
min: 2
max: 20
```
-
-{% endraw %}
diff --git a/source/_integrations/thermopro.markdown b/source/_integrations/thermopro.markdown
index eb44c72b7873..7ea95603ad31 100644
--- a/source/_integrations/thermopro.markdown
+++ b/source/_integrations/thermopro.markdown
@@ -44,8 +44,6 @@ The device is capable of showing 12-hour notation (AM/PM) but setting this is cu
For example, the following automation sets the datetime of the thermometer each day.
-{% raw %}
-
```yaml
mode: single
triggers:
@@ -58,5 +56,3 @@ actions:
entity_id: button.tp_358_xxxx_your_device_set_date_time
data: {}
```
-
-{% endraw %}
diff --git a/source/_integrations/thermoworks_smoke.markdown b/source/_integrations/thermoworks_smoke.markdown
index eda33552404d..ce104ea62023 100644
--- a/source/_integrations/thermoworks_smoke.markdown
+++ b/source/_integrations/thermoworks_smoke.markdown
@@ -88,8 +88,6 @@ sensor:
This will use an automation to trigger a notification when Probe 1 goes above a temperature stored in an input_number variable.
By default, your smoke is named "My Smoke" in the app. If you have changed it you will need to change the sensor name from `my_smoke_probe_1` to `your_name_probe_1`.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
sensor:
@@ -126,5 +124,3 @@ automation:
{{- ' '+states("sensor.my_smoke_probe_1") -}}
{{- state_attr('sensor.my_smoke_probe_1','unit_of_measurement') }}
```
-
-{% endraw %}
diff --git a/source/_integrations/tibber.markdown b/source/_integrations/tibber.markdown
index b8f34bbd24bb..5984ae914e9c 100644
--- a/source/_integrations/tibber.markdown
+++ b/source/_integrations/tibber.markdown
@@ -173,8 +173,6 @@ In this section, you will find some real-life examples of how to use this sensor
The electricity price can be used to make automations. The sensor has a `max_price` and `min_price` attribute, with max and min price for the current day. Here is an example to get a notification when the price is above 90% of the maximum price for the day:
-{% raw %}
-
```yaml
- alias: "Electricity price"
triggers:
@@ -191,5 +189,3 @@ The electricity price can be used to make automations. The sensor has a `max_pri
target: "device/daniel_telefon_cat"
message: "The electricity price is now {{ states('sensor.electricity_price_hamretunet_10') }}"
```
-
-{% endraw %}
diff --git a/source/_integrations/time_date.markdown b/source/_integrations/time_date.markdown
index 14b019faf55b..ad82ce70cf66 100644
--- a/source/_integrations/time_date.markdown
+++ b/source/_integrations/time_date.markdown
@@ -29,8 +29,6 @@ Sensors including the time update every minute, the date sensor updates each day
The following can be used to create a time and date sensor whose output can be properly customised to use your own preferred formatting, specified in the call to timestamp_custom() using standard [Python datetime formatting](https://docs.python.org/3.8/library/datetime.html#strftime-and-strptime-behavior).
-{% raw %}
-
```yaml
sensor:
# Minimal configuration of the standard time and date sensor
@@ -45,8 +43,6 @@ template:
icon: "mdi:calendar-clock"
```
-{% endraw %}
-
## More time-related resources
-For more information about using time related variables and sensors in templates (such as `today_at()`, `now()` or `as_timestamp()`) visit this [time section](/docs/configuration/templating/#time) on the templating page.
+For more information about using time related variables and sensors in templates, see the template function reference for [`today_at`](/template-functions/today_at/), [`now`](/template-functions/now/), and [`as_timestamp`](/template-functions/as_timestamp/).
diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown
index 2baf71ba42f8..350223aedeae 100644
--- a/source/_integrations/tplink.markdown
+++ b/source/_integrations/tplink.markdown
@@ -109,7 +109,9 @@ Alternatively, you can factory reset and then prevent the device from accessing
- **Hubs**: KH100[^1]
- **Hub-Connected Devices[^3]**: KE100[^1]
-### Supported Tapo[^1] devices
+### Supported Tapo devices
+
+Tapo devices require authentication.
- **Plugs**: P100, P105, P110, P110M, P115, P125M, P135, TP15
- **Power Strips**: P210M, P300, P304M, P306, TP25
diff --git a/source/_integrations/transmission.markdown b/source/_integrations/transmission.markdown
index 143b6ea3a3f1..ff9170ee1204 100644
--- a/source/_integrations/transmission.markdown
+++ b/source/_integrations/transmission.markdown
@@ -2,7 +2,6 @@
title: Transmission
description: Instructions on how to integrate Transmission within Home Assistant.
ha_category:
- - Binary sensor
- Downloading
- Sensor
- Switch
@@ -15,7 +14,6 @@ ha_codeowners:
- '@andrew-codechimp'
ha_domain: transmission
ha_platforms:
- - binary_sensor
- sensor
- switch
ha_integration_type: service
@@ -54,9 +52,6 @@ Verify SSL certificate:
The **Transmission** integration provides the following sensors and switches.
-### Binary sensors
-
-A binary sensor indicating whether the incoming peer port is open and reachable from the internet (port forwarding status).
### Sensors
- The status of your Transmission daemon.
@@ -93,8 +88,6 @@ Inside the event, there is the name of the torrent that is started or completed
Example of an automation that notifies on successful download and removes the torrent from the client if the torrent has a label of Remove:
-{% raw %}
-
```yaml
alias: Transmission download complete
description: "Notify on download complete and remove if label set"
@@ -120,8 +113,6 @@ actions:
id: "{{trigger.event.data.id}}"
```
-{% endraw %}
-
## Actions
All Transmission actions require integration `entry_id`. To find it, go to **Developer tools** > **Actions**. Choose the desired action and select your integration from dropdown. Then switch to YAML mode to see `entry_id`.
@@ -212,8 +203,6 @@ response_variable: torrents
All `*_torrents` sensors e.g. `sensor.transmission_total_torrents` or `sensor.transmission_started_torrents` have a state attribute `torrent_info` that contains information about the torrents that are currently in a corresponding state. You can see this information in {% my developer_states title="**Settings** > **Developer tools** > **States**" %} > `sensor.transmission_total_torrents` > **Attributes**, or by adding a [Markdown card](/dashboards/markdown/) to a dashboard with the following code:
-{% raw %}
-
```yaml
content: >
{% set payload = state_attr('sensor.transmission_total_torrents', 'torrent_info') %}
@@ -224,8 +213,6 @@ content: >
type: markdown
```
-{% endraw %}
-
## Removing the integration
This integration follows standard integration removal. After removal, your Transmission instance continues running with its current configuration.
diff --git a/source/_integrations/transport_nsw.markdown b/source/_integrations/transport_nsw.markdown
index c90558241fea..ba5deebabbb0 100644
--- a/source/_integrations/transport_nsw.markdown
+++ b/source/_integrations/transport_nsw.markdown
@@ -87,8 +87,6 @@ sensor:
The sensor returns n/a if no stop event is found within the next 24h. A `template` sensor can help building a more meaningful string.
-{% raw %}
-
```yaml
# Sample template sensor
template:
@@ -101,5 +99,3 @@ template:
{{ state_attr('sensor.bus', 'route') }} in {{ state_attr('sensor.bus', 'due') }}m ({{ state_attr('sensor.bus', 'delay') }})
{% endif %}
```
-
-{% endraw %}
diff --git a/source/_integrations/tts.markdown b/source/_integrations/tts.markdown
index 7f561a8a49ad..7f197ec9ba30 100644
--- a/source/_integrations/tts.markdown
+++ b/source/_integrations/tts.markdown
@@ -92,8 +92,6 @@ data:
With a template:
-{% raw %}
-
```yaml
action: tts.google_translate_say
data:
@@ -101,8 +99,6 @@ data:
cache: false
```
-{% endraw %}
-
## Cache
The integration cache can be controlled with the `cache` option in the action to `speak` or `say`, setting it to `True` to enable it (default), or `False` to disable it. A long time cache will be located on the file system. The in-memory cache for fast responses to media players will be auto-cleaned after a short period.
diff --git a/source/_integrations/twilio.markdown b/source/_integrations/twilio.markdown
index 94095b2cddca..87c5f0bd7456 100644
--- a/source/_integrations/twilio.markdown
+++ b/source/_integrations/twilio.markdown
@@ -74,7 +74,6 @@ The above opens the garage door when the number `+1XXXXXXXXXXX` calls `+1YYYYYYY
An example of an SMS handler:
-{% raw %}
```yaml
alias: "Twilio incoming"
triggers:
@@ -92,4 +91,3 @@ actions:
incoming twilio message from {{sender}}: {{ message }}
all event data: {{ trigger.event.data }}
```
-{% endraw %}
diff --git a/source/_integrations/uk_transport.markdown b/source/_integrations/uk_transport.markdown
index 2484334b4356..7c6df776d76b 100644
--- a/source/_integrations/uk_transport.markdown
+++ b/source/_integrations/uk_transport.markdown
@@ -84,8 +84,6 @@ Refer to the [API reference webpage](https://developer.transportapi.com/docs?ram
Attributes can be accessed using the [template sensor](/integrations/template) as per this example:
-{% raw %}
-
```yaml
# Example configuration.yaml entry for a template sensor to access the attributes of the next departing train.
template:
@@ -107,8 +105,6 @@ template:
{{state_attr('sensor.next_train_to_wat', 'next_trains')[0].platform}}
```
-{% endraw %}
-
Bus sensors require as their `origin` a bus stop ATCO code which can be found by browsing OpenStreetMap data as
follows:
@@ -136,8 +132,6 @@ sensor:
And the template sensor for viewing the next bus attributes.
-{% raw %}
-
```yaml
# Example configuration.yaml entry for a template sensor to access the attributes of the next departing bus.
template:
@@ -152,8 +146,6 @@ template:
state: "{{state_attr('sensor.next_bus_to_wantage', 'next_buses')[0].estimated}}"
```
-{% endraw %}
-
## Managing API requests
If you wish to manage the rate of API requests (e.g., to disable requests when you aren't interested in travel, so that you can request updates more frequently when you do travel) set a really long `scan_interval` in the configuration options, and use the `homeassistant.update_entity` action to request the update of an {% term entity %}, rather than waiting for the next scheduled update.
diff --git a/source/_integrations/unifi_access.markdown b/source/_integrations/unifi_access.markdown
index db5a83ab69cb..a79ecc5ccdd6 100644
--- a/source/_integrations/unifi_access.markdown
+++ b/source/_integrations/unifi_access.markdown
@@ -18,7 +18,7 @@ ha_platforms:
- button
- event
- image
- - lock
+ - select
- sensor
- switch
ha_integration_type: hub
@@ -120,11 +120,16 @@ These switches affect *all* doors managed by the controller at once and have dir
- **Lockdown**
- **Description**: Activates or deactivates the lockdown mode on your UniFi Access controller. When turned on, the controller triggers a facility-wide lockdown, locking all doors to restrict access.
+#### Selects
+
+For controllers that support temporary lock rules, each door exposes the following select entity:
+
+- **Door Lock Rule**: Sets the active temporary lock rule for the door. Available options are `custom`, `keep_lock`, `keep_unlock`, `lock_early`, `lock_now`, `reset`, and `schedule`. Returns `unknown` when no temporary rule is active.
+
#### Sensors
-For controllers that support temporary lock rules, each door also exposes the following diagnostic sensor entities:
+For controllers that support temporary lock rules, each door also exposes the following diagnostic sensor entity:
-- **Door Lock Rule**: Reports the currently active temporary lock rule for the door. Possible states are `custom`, `keep_lock`, `keep_unlock`, `lock_early`, `lock_now`, `reset`, and `schedule`. Returns `unknown` when no temporary rule is active.
- **Rule End Time**: Reports the date and time when the active temporary lock rule expires. Returns `unknown` when no temporary rule is active or when the rule has no expiry.
## Data updates
@@ -135,73 +140,15 @@ The integration uses a local push architecture via WebSocket. When a door's lock
### Send a notification when the doorbell rings
-{% raw %}
-
-```yaml
-alias: "Doorbell notification"
-triggers:
- - trigger: state
- entity_id: event.front_door_doorbell
-actions:
- - action: notify.mobile_app_my_phone
- data:
- title: "Doorbell"
- message: "Someone is at the front door!"
-```
-
-{% endraw %}
-
-### Log who unlocked a door
-
-{% raw %}
-
-```yaml
-alias: "Access granted notification"
-triggers:
- - trigger: state
- entity_id: event.front_door_access
-conditions:
- - condition: state
- entity_id: event.front_door_access
- attribute: event_type
- state: "access_granted"
-actions:
- - action: notify.mobile_app_my_phone
- data:
- title: "Door unlocked"
- message: >
- {{ trigger.to_state.attributes.actor }}
- unlocked the front door
- via {{ trigger.to_state.attributes.authentication }}.
-```
-
-{% endraw %}
-
-### Alert on denied access attempts
-
-{% raw %}
-
-```yaml
-alias: "Access denied alert"
-triggers:
- - trigger: state
- entity_id: event.front_door_access
-conditions:
- - condition: state
- entity_id: event.front_door_access
- attribute: event_type
- state: "access_denied"
-actions:
- - action: notify.mobile_app_my_phone
- data:
- title: "Access denied!"
- message: >
- Access denied at front door
- for {{ trigger.to_state.attributes.actor }}
- ({{ trigger.to_state.attributes.authentication }}).
-```
-
-{% endraw %}
+Get notified on your phone or trigger any action when someone rings a UniFi Access doorbell.
+
+{% my blueprint_import badge blueprint_url="https://www.home-assistant.io/blueprints/integrations/unifi_access_doorbell_notification.yaml" %}
+
+### React to door access events
+
+Send a notification or trigger an action when someone unlocks a door or when an access attempt is denied.
+
+{% my blueprint_import badge blueprint_url="https://www.home-assistant.io/blueprints/integrations/unifi_access_door_access_notification.yaml" %}
## Known limitations
@@ -252,4 +199,4 @@ This integration follows standard integration removal.
{% include integrations/remove_device_service.md %}
-After removal, you may also want to revoke the API token in your UniFi Access controller settings.
+After removal, you may also want to revoke the API token in your UniFi Access controller settings.
\ No newline at end of file
diff --git a/source/_integrations/universal.markdown b/source/_integrations/universal.markdown
index 0083d073bc9e..bfcee709b2d7 100644
--- a/source/_integrations/universal.markdown
+++ b/source/_integrations/universal.markdown
@@ -76,11 +76,11 @@ children:
required: false
type: list
active_child_template:
- description: "A [template](/docs/configuration/templating/) that will allow to select (override) active child. Must return the `entity_id` of the child selected as active, or `None` to use the default behavior."
+ description: "A [template](/docs/templating/) that will allow to select (override) active child. Must return the `entity_id` of the child selected as active, or `None` to use the default behavior."
required: false
type: template
state_template:
- description: "A [template](/docs/configuration/templating/) can be specified to render the state of the media player. In this way, the state may depend on entities that are not themselves media players, like switches or input booleans."
+ description: "A [template](/docs/templating/) can be specified to render the state of the media player. In this way, the state may depend on entities that are not themselves media players, like switches or input booleans."
required: false
type: template
commands:
@@ -115,7 +115,7 @@ It is also recommended that the command `volume_up`, the command `volume_down`,
When providing `select_source` as a command, it is recommended to also provide the attributes `source`, and `source_list`. The `source` attribute is the currently select source, while the `source_list` attribute is a list of all available sources.
-When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/docs/configuration/templating/#time) section in the template documentation.
+When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/template-functions/now/) section in the template documentation.
The `browse_media_entity` parameter allows you to specify which media player will be used in media browser.
@@ -127,8 +127,6 @@ In this example, a switch is available to control the power to the television. S
The children are a Chromecast and a Kodi player. If the Chromecast is playing, the Universal Media Player will reflect its status. If the Chromecast is idle and Kodi is playing, the universal media player will change to reflect its status.
-{% raw %}
-
```yaml
media_player:
platform: universal
@@ -178,8 +176,6 @@ media_player:
source_list: media_player.receiver|source_list
```
-{% endraw %}
-
### Kodi CEC-TV control
In this example, a [Kodi Media Player](/integrations/kodi) runs in a CEC capable device (OSMC/OpenElec running in a Raspberry Pi 24/7, for example), and, with the JSON-CEC Kodi add-on installed, it can turn on and off the attached TV.
@@ -190,8 +186,6 @@ Because the input boolean used to store the TV state is only changing when using
The complete configuration is:
-{% raw %}
-
```yaml
homeassistant:
customize:
@@ -282,14 +276,10 @@ automation:
entity_id: media_player.kodi_tv
```
-{% endraw %}
-
### Harmony remote example
The complete configuration is:
-{% raw %}
-
```yaml
media_player:
- platform: universal
@@ -331,8 +321,6 @@ media_player:
unique_id: media_room_harmony_hub
```
-{% endraw %}
-
### Denon AVR & HEOS
This media player combines the media players provided by the [Denon AVR](/integrations/denonavr/) and [HEOS](/integrations/heos/) integrations.
@@ -345,8 +333,6 @@ Features:
The complete configuration is:
-{% raw %}
-
```yaml
media_player:
- platform: universal
@@ -386,14 +372,10 @@ media_player:
sound_mode_list: media_player.denon_avr_x2700h|sound_mode_list
```
-{% endraw %}
-
### Override active children
This example shows how you can use `active_child_template`:
-{% raw %}
-
```yaml
media_player:
- platform: universal
@@ -409,5 +391,3 @@ media_player:
media_player.sony_tv_cast
{% endif %}
```
-
-{% endraw %}
diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown
index 0f1f4cd57a3b..b89f8eeb8af7 100644
--- a/source/_integrations/update.mqtt.markdown
+++ b/source/_integrations/update.mqtt.markdown
@@ -46,7 +46,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -59,7 +59,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
command_topic:
@@ -155,7 +155,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`."
required: false
type: template
json_attributes_topic:
@@ -163,7 +163,7 @@ json_attributes_topic:
required: false
type: string
latest_version_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the latest version value. Use `state_topic` with a `value_template` if all update state values can be extracted from a single JSON payload."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the latest version value. Use `state_topic` with a `value_template` if all update state values can be extracted from a single JSON payload."
required: false
type: template
latest_version_topic:
@@ -213,7 +213,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the `installed_version` state value or to render to a valid JSON payload on from the payload received on `state_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the `installed_version` state value or to render to a valid JSON payload on from the payload received on `state_topic`."
required: false
type: template
{% endconfiguration %}
@@ -226,8 +226,6 @@ Make sure that your topic matches exactly. `some-topic/` and `some-topic` are di
This is an example of Update entity configuration for Shelly Gen1 device.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -245,8 +243,6 @@ mqtt:
payload_install: "update_fw"
```
-{% endraw %}
-
JSON can also be used as `state_topic` payload. Note that this feature also allows to process and show live progress information.
{% raw %}
@@ -358,8 +354,6 @@ update_percentage:
For the above JSON payload examples, the `update` entity configuration should look like this:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -372,8 +366,6 @@ mqtt:
payload_install: "install"
```
-{% endraw %}
-
If the device/service sends data as JSON but the schema differs, `value_template` can be use to reformat the JSON.
{% raw %}
@@ -389,8 +381,6 @@ If the device/service sends data as JSON but the schema differs, `value_template
For the above JSON payload, the `update` entity configuration should look like this:
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -403,5 +393,3 @@ mqtt:
command_topic: "amazing-device/command"
payload_install: "install"
```
-
-{% endraw %}
diff --git a/source/_integrations/uptime_kuma.markdown b/source/_integrations/uptime_kuma.markdown
index ef1f20070e74..5341bd8fe29b 100644
--- a/source/_integrations/uptime_kuma.markdown
+++ b/source/_integrations/uptime_kuma.markdown
@@ -69,8 +69,6 @@ Get started with this automation example to create an Uptime Kuma warning light
{% details "Example YAML configuration" %}
-{% raw %}
-
```yaml
actions:
- choose:
@@ -121,8 +119,6 @@ triggers:
- sensor.uptime_kuma_my_service
```
-{% endraw %}
-
{% enddetails %}
## Examples
diff --git a/source/_integrations/utility_meter.markdown b/source/_integrations/utility_meter.markdown
index 96aaacdcd375..795c061b3963 100644
--- a/source/_integrations/utility_meter.markdown
+++ b/source/_integrations/utility_meter.markdown
@@ -208,8 +208,6 @@ Assuming your energy provider tariffs are time based according to:
a time based automation can be used:
-{% raw %}
-
```yaml
automation:
triggers:
@@ -234,8 +232,6 @@ automation:
option: "{{ tariff }}"
```
-{% endraw %}
-
Assuming your utility provider cycle is offset from the last day of the month
- cycles at 17h00 on the last day of the month
@@ -291,11 +287,9 @@ utility_meter:
```
Additionally, you can add template sensors to compute daily and monthly total usage. Important note, in these examples,
-we use the `is_number()` [function](/docs/configuration/templating/#numeric-functions-and-filters) to verify the values
+we use the `is_number()` [function](/docs/templating/patterns/) to verify the values
returned from the sensors are numeric. If this evaluates to false, `None` is returned.
-{% raw %}
-
```yaml
template:
- sensor:
@@ -319,5 +313,3 @@ template:
None
{% endif %}
```
-
-{% endraw %}
diff --git a/source/_integrations/vacuum.mqtt.markdown b/source/_integrations/vacuum.mqtt.markdown
index 6f17d033f8ad..6004b8861ecd 100644
--- a/source/_integrations/vacuum.mqtt.markdown
+++ b/source/_integrations/vacuum.mqtt.markdown
@@ -46,7 +46,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -55,7 +55,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -133,7 +133,7 @@ fan_speed_list:
required: false
type: [string, list]
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
diff --git a/source/_integrations/valve.mqtt.markdown b/source/_integrations/valve.mqtt.markdown
index 7c94531aae88..776d970ebe8f 100644
--- a/source/_integrations/valve.mqtt.markdown
+++ b/source/_integrations/valve.mqtt.markdown
@@ -80,7 +80,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the device's availability from the `topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the device's availability from the `topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -89,7 +89,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the device's availability from the `availability_topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the device's availability from the `availability_topic`. To determine the devices's availability, the result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -97,7 +97,7 @@ availability_topic:
required: false
type: string
command_template:
- description: Defines a [template](/docs/configuration/templating/#using-command-templates-with-mqtt) to generate the payload to send to `command_topic`.
+ description: Defines a [template](/docs/templating/where-to-use/#mqtt) to generate the payload to send to `command_topic`.
required: false
type: template
command_topic:
@@ -192,7 +192,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. A usage example can be found in the [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. A usage example can be found in the [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -291,7 +291,7 @@ unique_id:
required: false
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) that can be used to extract the payload for the `state_topic` topic. The rendered value should be a defined state payload or, if reporting a `position` is supported and `reports_position` is set to `true`, a numeric value is expected representing the position. See also `state_topic`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) that can be used to extract the payload for the `state_topic` topic. The rendered value should be a defined state payload or, if reporting a `position` is supported and `reports_position` is set to `true`, a numeric value is expected representing the position. See also `state_topic`."
required: false
type: template
{% endconfiguration %}
@@ -310,8 +310,6 @@ This section provides some examples showing how you can use this platform.
The example below shows a full configuration for a valve that does not report position.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -338,14 +336,10 @@ mqtt:
value_template: "{{ value_json.x }}"
```
-{% endraw %}
-
### Sample configuration of a valve that reports the position
The example below shows a sample configuration for a valve that reports the position using JSON messages.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -360,15 +354,11 @@ mqtt:
value_template: "{{ value_json.x }}"
```
-{% endraw %}
-
### Configuration for disabling valve commands
The example below shows a configuration for a valve that does not have a close command.
Setting the `payload_close` to empty or to `null` disables the close command and will not show the close button.
-{% raw %}
-
```yaml
# Example configuration.yaml entry
mqtt:
@@ -378,8 +368,6 @@ mqtt:
payload_stop: "on"
```
-{% endraw %}
-
An MQTT valve will support `open` and `close` commands if a `command_topic` is set. The MQTT valve supports `stop` if `payload_stop` is set.
### Testing your configuration
diff --git a/source/_integrations/verisure.markdown b/source/_integrations/verisure.markdown
index 10ace9d2968f..c089447fce95 100644
--- a/source/_integrations/verisure.markdown
+++ b/source/_integrations/verisure.markdown
@@ -48,8 +48,6 @@ The requirement is that you have setup your Verisure hub first, with the instruc
The `changed_by` attribute enables one to be able to take different actions depending on who armed/disarmed the alarm in [automation](/getting-started/automation/).
-{% raw %}
-
```yaml
automation:
- alias: "Alarm status changed"
@@ -65,8 +63,6 @@ automation:
by {{ trigger.to_state.attributes.changed_by }}
```
-{% endraw %}
-
## Actions
| Service | Description |
diff --git a/source/_integrations/vesync.markdown b/source/_integrations/vesync.markdown
index 296e15842273..f4f7d60162b9 100644
--- a/source/_integrations/vesync.markdown
+++ b/source/_integrations/vesync.markdown
@@ -211,8 +211,6 @@ In the example below, change all of the `vesync_switch`'s to match your device's
Adapted from the [TP-Link integration](https://www.home-assistant.io/integrations/tplink/#plugs).
-{% raw %}
-
```yaml
template:
- sensor:
@@ -220,5 +218,3 @@ template:
state: "{{ state_attr('switch.vesync_switch', 'voltage') | float(default=0) }}"
unit_of_measurement: "V"
```
-
-{% endraw %}
diff --git a/source/_integrations/vivotek.markdown b/source/_integrations/vivotek.markdown
index 4a1ae6d04422..1ea844c3f6f6 100644
--- a/source/_integrations/vivotek.markdown
+++ b/source/_integrations/vivotek.markdown
@@ -101,8 +101,6 @@ The path part of `filename` must be an entry in the `allowlist_external_dirs` in
For example, the following action is an automation that would take a snapshot from "front_door_camera" and save it to /tmp with a timestamped filename.
-{% raw %}
-
```yaml
actions:
- action: camera.snapshot
@@ -111,5 +109,3 @@ actions:
data:
filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
```
-
-{% endraw %}
diff --git a/source/_integrations/volvo.markdown b/source/_integrations/volvo.markdown
index 1967a87eb988..4c5020e05aac 100644
--- a/source/_integrations/volvo.markdown
+++ b/source/_integrations/volvo.markdown
@@ -248,8 +248,6 @@ Images:
Send a notification to your mobile phone if at least one door is open for 5 minutes.
-{% raw %}
-
```yaml
alias: Notify me if doors are left open for 5 minutes
description: ""
@@ -277,8 +275,6 @@ actions:
mode: single
```
-{% endraw %}
-
### Estimated charging finish time
The Volvo API only provides an estimated charging time (in minutes). To calculate the finish time, you can create a **Template sensor** helper with the template below.
diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown
index d9efc70e104c..97c0f75a67e4 100644
--- a/source/_integrations/water_heater.mqtt.markdown
+++ b/source/_integrations/water_heater.mqtt.markdown
@@ -46,7 +46,7 @@ availability:
required: true
type: string
value_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_mode:
@@ -55,7 +55,7 @@ availability_mode:
type: string
default: latest
availability_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract device's availability from the `availability_topic`. To determine the devices's availability result of this template will be compared to `payload_available` and `payload_not_available`."
required: false
type: template
availability_topic:
@@ -158,7 +158,7 @@ icon:
required: false
type: icon
json_attributes_template:
- description: "Defines a [template](/docs/configuration/templating/#using-value-templates-with-mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
+ description: "Defines a [template](/docs/templating/where-to-use/#mqtt) to extract the JSON dictionary from messages received on the `json_attributes_topic`. Usage example can be found in [MQTT sensor](/integrations/sensor.mqtt/#json-attributes-template-configuration) documentation."
required: false
type: template
json_attributes_topic:
@@ -291,8 +291,6 @@ For all `*_state_topic`s, a template can be specified that will be used to rende
Say you receive the operation mode `"off"` via your `mode_state_topic`, but the mode is actually called just `off`, here's what you could do:
-{% raw %}
-
```yaml
mqtt:
- water_heater:
@@ -306,8 +304,6 @@ mqtt:
mode_state_template: "{{ value_json }}"
```
-{% endraw %}
-
This will parse the incoming `"off"` as JSON, resulting in `off`. Obviously, in this case you could also just set `value_template: {% raw %}"{{ value_json }}"{% endraw %}`.
Similarly for `*_command_topic`s, a template can be specified to render the outgoing payloads on these topics.
@@ -316,8 +312,6 @@ Similarly for `*_command_topic`s, a template can be specified to render the outg
A full configuration example looks like the one below.
-{% raw %}
-
```yaml
# Full example configuration.yaml entry
mqtt:
@@ -335,5 +329,3 @@ mqtt:
current_temperature_topic: "basement/boiler/current_temperature"
precision: 1.0
```
-
-{% endraw %}
diff --git a/source/_integrations/watts.markdown b/source/_integrations/watts.markdown
index 7b78e2ad32c5..d36e44f4b75c 100644
--- a/source/_integrations/watts.markdown
+++ b/source/_integrations/watts.markdown
@@ -122,8 +122,6 @@ This integration enables you to:
{% details "Lower temperature when nobody is home" %}
-{% raw %}
-
```yaml
alias: "Eco mode when away"
description: "Set all thermostats to eco mode when house is empty"
@@ -153,8 +151,6 @@ actions:
temperature: 18
```
-{% endraw %}
-
{% enddetails %}
## Troubleshooting
diff --git a/source/_integrations/waze_travel_time.markdown b/source/_integrations/waze_travel_time.markdown
index 4735bec50f9c..284fe32fd756 100644
--- a/source/_integrations/waze_travel_time.markdown
+++ b/source/_integrations/waze_travel_time.markdown
@@ -118,8 +118,6 @@ Using the flexible option to set a sensor value to the `Destination`, you can se
In the following example, the `Input Select` is converted into an address which is used to modify the destination for the Waze route calculation from the `device_tracker.myphone` location. It takes a few minutes for the value to update due to the interval of Waze data fetching.
-{% raw %}
-
```yaml
input_select:
destination:
@@ -145,8 +143,6 @@ template:
```
-{% endraw %}
-
### Various configurations that are supported
#### Tracking entity to entity
diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown
index e151f4cc8115..6cab5f1d619b 100644
--- a/source/_integrations/weather.markdown
+++ b/source/_integrations/weather.markdown
@@ -117,8 +117,6 @@ The response data field is a mapping of called target entities, each containing
Example [template sensor](/integrations/template#yaml-configuration) that contains the hourly forecast
-{% raw %}
-
```yaml
template:
- trigger:
@@ -139,8 +137,6 @@ template:
```
-{% endraw %}
-
{% enddetails %}
diff --git a/source/_integrations/wled.markdown b/source/_integrations/wled.markdown
index 2d717e56a50f..bfd6bb69340b 100644
--- a/source/_integrations/wled.markdown
+++ b/source/_integrations/wled.markdown
@@ -216,8 +216,6 @@ Home Assistant can only manage one color model at a time.
You can automate changing the effect using an action like this:
-{% raw %}
-
```yaml
action: light.turn_on
target:
@@ -226,14 +224,10 @@ data:
effect: "{{ state_attr('light.wled', 'effect_list') | random }}"
```
-{% endraw %}
-
It is recommended to select an effect that matches the capabilities of your WLED device (e.g., 1D, 2D, or Sound Reactive). You can refer to the [WLED effect list](https://kno.wled.ge/features/effects/) to explore available options. Once you identify compatible effects, you can randomize them based on their IDs.
Below is an example of how to select a random effect with an ID between 1 and 117, excluding retired effects:
-{% raw %}
-
```yaml
action: light.turn_on
target:
@@ -242,16 +236,12 @@ data:
effect: "{{ state_attr('light.wled', 'effect_list')[1:118] | reject('equalto', 'RSVD') | list | random }}"
```
-{% endraw %}
-
### Activating random palette
Activating a random palette is very similar to the above random effect,
and can be done by selecting a random one from the available palette select
{% term entity %}.
-{% raw %}
-
```yaml
action: select.select_option
target:
@@ -260,8 +250,6 @@ data:
option: "{{ state_attr('select.wled_color_palette', 'options') | random }}"
```
-{% endraw %}
-
### Activating a preset
Activating a preset is an easy way to set a WLED light to a specific
diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown
index 85fc659ac798..527160a326b4 100644
--- a/source/_integrations/workday.markdown
+++ b/source/_integrations/workday.markdown
@@ -64,7 +64,6 @@ providing feedback if the date is a workday or not.
| ---------------------- | -------- | ----------- | --------|
| `check_date` | yes | Date to test if workday or not. | 2022-03-10
-{% raw %}
```yaml
action: workday.check_date
target:
@@ -73,7 +72,6 @@ data:
check_date: "2023-12-25"
response_variable: check_date
```
-{% endraw %}
The response data field `check_date` is providing:
diff --git a/source/_integrations/xiaomi_aqara.markdown b/source/_integrations/xiaomi_aqara.markdown
index 6422fce06644..b34f1841e9ef 100644
--- a/source/_integrations/xiaomi_aqara.markdown
+++ b/source/_integrations/xiaomi_aqara.markdown
@@ -347,8 +347,6 @@ List of supported binary sensors, including the following properties (if availab
#### Gas
-{% raw %}
-
```yaml
- alias: "Send notification on gas alarm"
triggers:
@@ -363,8 +361,6 @@ List of supported binary sensors, including the following properties (if availab
message: "Gas with a density of {{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }} detected."
```
-{% endraw %}
-
#### Xiaomi Wireless Button
There are 3 versions of the Xiaomi Wireless button:
@@ -488,8 +484,6 @@ Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swi
The Aqara Wireless Switch is available as single-key and double-key version. Each key behaves like the Wireless Button limited to the click event `single`. The double key version adds a third device called `binary_sensor.wall_switch_both_158xxxxxxxxx12` which reports a click event called `both` if both keys are pressed.
-{% raw %}
-
```yaml
- alias: "Decrease brightness of the gateway light"
triggers:
@@ -550,8 +544,6 @@ The Aqara Wireless Switch is available as single-key and double-key version. Eac
entity_id: light.gateway_light_34xxxxxxxx13
```
-{% endraw %}
-
#### Vibration sensor
This automation toggles the living room lamp on vibration/tilt.
diff --git a/source/_integrations/xiaomi_miio.markdown b/source/_integrations/xiaomi_miio.markdown
index 18ee24e1ceec..f26deb8c370e 100644
--- a/source/_integrations/xiaomi_miio.markdown
+++ b/source/_integrations/xiaomi_miio.markdown
@@ -1501,8 +1501,6 @@ The `xiaomi_miio.vacuum_clean_zone` action starts the cleaning operation in the
Example of `xiaomi_miio.vacuum_clean_zone` use:
Inline array:
-{% raw %}
-
```yaml
automation:
- alias: "Test vacuum zone3"
@@ -1518,11 +1516,7 @@ automation:
zone: [[30914, 26007, 35514, 28807], [20232, 22496, 26032, 26496]]
```
-{% endraw %}
-
Array with inline zone:
-{% raw %}
-
```yaml
automation:
- alias: "Test vacuum zone3"
@@ -1540,8 +1534,6 @@ automation:
- [20232, 22496, 26032, 26496]
```
-{% endraw %}
-
Array mode:
```yaml
diff --git a/source/_integrations/xmpp.markdown b/source/_integrations/xmpp.markdown
index 557826617563..623f5fe337cd 100644
--- a/source/_integrations/xmpp.markdown
+++ b/source/_integrations/xmpp.markdown
@@ -174,8 +174,6 @@ Number 4 sends a text-file, retrieved from GitHub, renamed to `Hass_Cheatsheet.t
Number 5 sends an image retrieved from a URL, and an additional text message with `title` and `message`.
-{% raw %}
-
```yaml
# Example script.yaml entry
5_send_jabber_message_with_image_and_text:
@@ -189,12 +187,8 @@ Number 5 sends an image retrieved from a URL, and an additional text message wit
url: "https://github.com/home-assistant/home-assistant.io/raw/next/source/images/favicon-192x192.png"
```
-{% endraw %}
-
Number 6 sends an image from a templated URL.
-{% raw %}
-
```yaml
# Example script.yaml entry
6_send_jabber_message_with_image_from_url_template:
@@ -208,8 +202,6 @@ Number 6 sends an image from a templated URL.
url_template: "https://www.foto-webcam.eu/webcam/dornbirn/{{ now().year }}/{{ '%02d' % now().month }}/{{ '%02d' % now().day }}/{{ '%02d' % now().hour }}{{ (now().minute + 58) % 60 // 10}}0_hd.jpg"
```
-{% endraw %}
-
The possible source of a file is prioritized and only one will be picked up. `url_template` has the highest priority; next is `url` then `path_template` and finally if none of them are defined `path` would be used. `path` will be used to eliminate file extension guessing for unknown URL downloads. Only the file extension will be left, as Home Assistant changes the filename to a random string for added privacy.
To find out more about notifications, please see the [getting started with automation page](/getting-started/automation/).
diff --git a/source/_integrations/yale.markdown b/source/_integrations/yale.markdown
index eba3e9bcecad..6fcd1196d467 100644
--- a/source/_integrations/yale.markdown
+++ b/source/_integrations/yale.markdown
@@ -135,8 +135,6 @@ For locks that support the Yale Access system, the Yale integration can keep you
Using the lock operation sensors, you can detect when a user operates a lock and is physically present (not remote). The below automation example (added to `automations.yaml`) will trigger when the user named “John Doe” in Yale locks or unlocks the door either from the keypad (if present), via Bluetooth from their phone, or by auto-unlock. The state of the sensor will be the name of the party operating the lock as returned by Yale.
-{% raw %}
-
```yaml
- alias: "John Doe locks or unlocks the Front Door"
triggers:
@@ -150,5 +148,3 @@ Using the lock operation sensors, you can detect when a user operates a lock and
- action: camera.turn_off
entity_id: camera.inside
```
-
-{% endraw %}
diff --git a/source/_integrations/zabbix.markdown b/source/_integrations/zabbix.markdown
index ac212bc2ccfb..c5b975fe9949 100644
--- a/source/_integrations/zabbix.markdown
+++ b/source/_integrations/zabbix.markdown
@@ -129,8 +129,6 @@ zabbix:
By default, no entity will be excluded. To limit which entities are being published to Zabbix, you can use the `include` and `exclude` parameters.
-{% raw %}
-
```yaml
# Example filter to include specified domains and exclude specified entities
zabbix:
@@ -145,8 +143,6 @@ zabbix:
- light.kitchen_light
```
-{% endraw %}
-
{% include common-tasks/filters.md %}
## Sensor
diff --git a/source/_integrations/zha.markdown b/source/_integrations/zha.markdown
index 54aba8f49d49..d314ddd1ec79 100644
--- a/source/_integrations/zha.markdown
+++ b/source/_integrations/zha.markdown
@@ -62,7 +62,7 @@ This {% term integration %} currently supports the following device types within
- [Fan](/integrations/fan/)
- [Light](/integrations/light/)
- [Lock](/integrations/lock/)
-- [Number](/integrations/number/) (i.e. analog input/output)
+- [Number](/integrations/number/) (analog input/output)
- [Select](/integrations/select/)
- [Sensor](/integrations/sensor/)
- [Siren](/integrations/siren/)
@@ -85,10 +85,10 @@ ZHA uses an open-source Python library called [zigpy](https://github.com/zigpy/z
### Zigbee concepts
-- A Zigbee network can have **only one** Zigbee coordinator,
-- The Zigbee coordinator can have multiple **Zigbee router** or **Zigbee end devices** connected,
-- Each Zigbee router device can have multiple **Zigbee end devices** connected to it,
-- A Zigbee device can only be connected to a single Zigbee network,
+- A Zigbee network can have only one Zigbee coordinator.
+- The Zigbee coordinator can have multiple **Zigbee router devices** or **Zigbee end devices** connected.
+- Each Zigbee router device can have multiple **Zigbee end devices** connected to it.
+- A Zigbee device can only be connected to a single Zigbee network.
- Zigbee networks depend heavily on having multiple [Zigbee Router devices](#using-router-devices-to-add-more-devices) to expand coverage and increase device capacity.
- Router devices help pass messages to other nearby devices in the Zigbee network and therefore can improve range and increase the number of devices you can add.
@@ -118,7 +118,7 @@ The following hardware is supported, but _not recommended_. Specific models and
{% caution %}
-- It is **not recommended** to run a coordinator via **Serial-Proxy-Server** _(also called Serial-to-IP bridge or Ser2Net remote adapter)_ over:
+- It is _not recommended_ to run a coordinator via **Serial-Proxy-Server** _(also called Serial-to-IP bridge or Ser2Net remote adapter)_ over:
- **Wi-Fi**,
- **WAN**, or
@@ -135,7 +135,7 @@ The following hardware is supported, but _not recommended_. Specific models and
- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs-zigbee-shield.html)
- It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility)
- [ITead Sonoff ZBBridge](https://itead.cc/product/sonoff-zbbridge/)
- - Note: [WiFi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170).
+ - Note: [Wi-Fi-based bridges are not recommended for ZHA with EZSP radios](https://github.com/home-assistant/home-assistant.io/issues/17170).
- These first need to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware to use as Serial-to-IP adapter](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html)
- [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/)
- It is suggested to [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware)
@@ -202,7 +202,7 @@ It is strongly encouraged to review the guidance for [Zigbee interference avoida
- **xbee**: Digi XBee ZB Coordinator Firmware protocol (for example, Digi XBee Series 2, 2C, 3)
- Select **Submit** to proceed to the next step.
5. Enter the **Serial device path**:
- - Most devices need at the very least the serial device path, such as `/dev/ttyUSB0`, but it is recommended to use device path from `/dev/serial/by-id` folder (e.g., `/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0`).
+ - Most devices need at the very least the serial device path, such as `/dev/ttyUSB0`, but it is recommended to use the device path from the `/dev/serial/by-id` folder (for example, `/dev/serial/by-id/usb-Silicon_Labs_HubZ_Smart_Home_Controller_C0F003D3-if01-port0`).
- A list of available device paths can be found in {% my hardware title="Settings > System > Hardware" %} > **dot menu** > **All Hardware**.
6. Set the **Port speed** (not applicable for all radios).
7. Set the **Data flow control** (not applicable for all radios).
@@ -219,8 +219,8 @@ If you use a ZiGate or Sonoff ZBBridge device, you need additional configuration
- ZiGate USB TTL or DIN: `/dev/ttyUSB0` or `auto` to auto discover the zigate
- PiZigate: `pizigate:/dev/ttyS0`
-- Wifi Zigate: `socket://[IP]:[PORT]` — for example `socket://192.168.1.10:9999`
-- Sonoff ZBBridge: `socket://[IP]:[PORT]` — for example `socket://192.168.1.11:8888`
+- Wi-Fi ZiGate: `socket://[IP]:[PORT]` (for example, `socket://192.168.1.10:9999`)
+- Sonoff ZBBridge: `socket://[IP]:[PORT]` (for example, `socket://192.168.1.11:8888`)
{% enddetails %}
@@ -255,18 +255,18 @@ The network information page provides details about your Zigbee network and coor
The following information is shown:
-- **Channel**: The Zigbee channel currently in use by the network. Valid channels are 11–26 (all in the 2.4 GHz band). This is the only field you can change. To edit it, select the pencil {% icon "mdi:edit" %} icon.
+- **Channel**: The Zigbee channel currently in use by the network. Valid channels are 11 to 26 (all in the 2.4 GHz band). This is the only field you can change. To edit it, select the pencil {% icon "mdi:edit" %} icon.
- **PAN ID**: The 16-bit Personal Area Network identifier of your Zigbee network. This value uniquely identifies the network among nearby Zigbee networks.
- **Extended PAN ID**: The 64-bit extended version of the PAN ID. This value is used to uniquely identify the network across longer distances and more devices.
- **Coordinator IEEE**: The IEEE 802.15.4 hardware address (MAC address) of the Zigbee coordinator. This address is fixed and unique to the coordinator hardware.
- **Radio type**: The Zigbee radio stack used by the coordinator. Common values are `ezsp` (Silicon Labs), `znp` (Texas Instruments), `deconz` (ConBee/RaspBee), `zigate`, and `xbee`.
-- **Serial port**: The path to the serial device the coordinator is connected to, for example `/dev/ttyUSB0` or a `socket://` URL for network-connected adapters.
+- **Serial port**: The path to the serial device the coordinator is connected to, for example, `/dev/ttyUSB0` or a `socket://` URL for network-connected adapters.
- **Baudrate**: The communication speed of the serial connection in bits per second (for example, `115200`). This field is only shown for direct serial connections and is hidden for network/socket-based (Ethernet) adapters.
### Defining the Zigbee channel to use
{% important %}
-The best practice is to **not change the Zigbee channel** from the ZHA default.
+The best practice is to _not change the Zigbee channel_ from the ZHA default.
{% endimportant %}
{% note %}
@@ -304,7 +304,7 @@ MetaGeek Support has a good reference article about channel selection for [Zigbe
#### About Zigbee channels
-The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (i.e. distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (i.e. Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings.
+The Zigbee specification standards divide the 2.4 GHz ISM radio band into 16 Zigbee channels (that is, distinct radio frequencies for Zigbee). For all Zigbee devices to be able to communicate, they must support the same Zigbee channel (that is, the Zigbee radio frequency) that is set on the Zigbee Coordinator as the channel to use for its Zigbee network. Not all Zigbee devices support all Zigbee channels. Channel support usually depends on the age of the hardware and firmware, as well as on the device's power ratings.
The general recommendation is to only use channels 15, 20, or 25 in order to avoid interoperability problems with Zigbee devices. Not only because there is less chance of Wi-Fi networks interfering too much with the Zigbee network on other channels, but also because not all Zigbee devices support all channels.
@@ -338,7 +338,7 @@ To see OTA updates for a device, it must support OTA updates and firmware images
- Third Reality
{% warning %}
-Before updating a device, you should search for any disadvantages or if you even need to install an available update. Some firmware updates can break features you might use (e.g. group binding for IKEA devices). Some updates might also require changes to ZHA. In rare cases, you can even brick devices by installing a firmware update.
+Before updating a device, you should search for any disadvantages or if you even need to install an available update. Some firmware updates can break features you might use (for example, group binding for IKEA devices). Some updates might also require changes to ZHA. In rare cases, you can even brick devices by installing a firmware update.
{% endwarning %}
#### Advanced OTA configuration
@@ -362,14 +362,14 @@ These sections both provide helpful advice on improving your Zigbee network perf
1. Go to {% my config_zha title="**Settings** > **Zigbee**" %}.
2. To start a scan for new devices, on the bottom right corner of the screen, select **Add device**.
-3. Reset your Zigbee devices to factory default settings according to the device instructions provided by the manufacturer (e.g., turn on/off lights up to 10 times; switches usually have a reset button/pin). It might take a few seconds for the devices to appear. You can click on **Show logs** for more verbose output.
+3. Reset your Zigbee devices to factory default settings according to the device instructions provided by the manufacturer (for example, turn lights on and off up to 10 times; switches usually have a reset button or pin). It might take a few seconds for the devices to appear. You can select **Show logs** for more verbose output.
4. Once the device is found, it will appear on that page and will be automatically added to your devices. You can optionally change its name and add it to an area (you can change this later). You can search again to add another device, or you can go back to the list of added devices.
### Using router devices to add more devices
-Most mains-powered devices, e.g., many always-powered wall plugs or light bulbs in your Zigbee network will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
+Most mains-powered devices, such as many always-powered wall plugs or light bulbs in your Zigbee network, will automatically act as a Zigbee router device (sometimes also referred to as a Zigbee "signal repeater" or "range extender").
-Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (e.g. light bulbs) are often powered-off. Zigbee router devices are meant to be always available.
+Because Zigbee should use a [wireless mesh network](https://en.wikipedia.org/wiki/Wireless_mesh_network) to be effective, you will need to add Zigbee router devices to increase the number of Zigbee devices that can be used in your Zigbee network, both in the total number of devices that can be added as well as the total range and coverage of the network. Some Zigbee router devices do a much better job at routing and repeating Zigbee signals and messages than some other devices. You should not have a setup where Zigbee router devices (for example, light bulbs) are often powered off. Zigbee router devices are meant to be always available.
All Zigbee coordinator firmware will only allow you to directly connect a certain amount of devices. That limit is set for two reasons; firstly, to not overload the Zigbee coordinator, and secondly, to encourage your Zigbee network to quickly begin to utilize a "[mesh networking](https://en.wikipedia.org/wiki/Mesh_networking)" topology instead of only a "[star network](https://en.wikipedia.org/wiki/Star_network)" topology.
@@ -458,7 +458,7 @@ Additional devices in the [Compatible hardware](#compatible-hardware) section ma
The `zha.permit` action opens the network for joining new devices.
-To add new devices to the network, click the **Actions** tab in **Developer tools** and type `zha.permit` in the **Action** dropdown box. Next, follow the device instructions for adding, scanning, or performing a factory reset.
+To add new devices to the network, select the **Actions** tab in **Developer tools** and type `zha.permit` in the **Action** dropdown box. Next, follow the device instructions for adding, scanning, or performing a factory reset.
| Data | Optional | Description |
| ---------- | -------- | ------------------------------------------------------------------------------ |
@@ -496,8 +496,8 @@ The `zha.set_lock_user_code` action sets a lock code on a Zigbee lock.
| Data | Optional | Description |
| ----------- | -------- | -------------------------------------------------------------------------- |
-| `code_slot` | no | Which lock code slot to store the code. Ex. 1-32 will work for Kwikset 954 |
-| `user_code` | no | Code to set on the lock. Ex. Kwikset accepts numbers 4-8 digits in length |
+| `code_slot` | no | Which lock code slot to store the code. For example, 1-32 will work for Kwikset 954 |
+| `user_code` | no | Code to set on the lock. For example, Kwikset accepts numbers 4-8 digits in length |
### Action: Clear lock user code
@@ -562,7 +562,7 @@ Before binding devices, note the following:
#### To manage bindings of a Zigbee device
{% note %}
-**This section only outlines how to manage bindings in general. It will not cover all use cases.**
+This section only outlines how to manage bindings in general. It will not cover all use cases.
Prerequisites and steps can vary depending on the device type, manufacturer, and your desired end result.
{% endnote %}
@@ -603,7 +603,7 @@ Confirm you meet the following requirements before migrating:
{% details "To migrate to a new Zigbee adapter inside ZHA:" %}
{% important %}
-You will not be able to control your existing Zigbee devices until they join the network after the migration. **This can take a few minutes.**
+You will not be able to control your existing Zigbee devices until they join the network after the migration. This can take a few minutes.
If some existing devices do not resume normal functions after some time, try power-cycling them to attempt rejoining to the network.
{% endimportant %}
@@ -626,7 +626,7 @@ If some existing devices do not resume normal functions after some time, try pow
- **Option 2**: To restore a specific, older backup, select **Advanced migration** instead.
- This will let you select a backup of your choice.
8. In the rare event the new radio requires overwriting the IEEE address (the unique MAC address), you will see the prompt for **Overwrite Radio IEEE Address**.
- - Check the **Permanently replace the radio IEEE address** box and click **Submit**.
+ - Check the **Permanently replace the radio IEEE address** box and select **Submit**.
- Selecting this option is required for the migration process to complete successfully.
- Overwriting the IEEE address may take a while.
- Both the old and new Zigbee adapters now have the same Zigbee IEEE address.
@@ -682,7 +682,7 @@ The list of ZHA limitations may not be exhaustive.
Home Assistant's ZHA {% term integration %} supports all standard Zigbee device types as defined by the [CSA (Connectivity Standards Alliance, formerly the Zigbee Alliance)](https://csa-iot.org/all-solutions/zigbee/).
-**There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA {% term integration %}.**
+There is therefore no official compatibility list of devices that will work out-of-the-box with the ZHA {% term integration %}.
{% tip %}
Check out [blakadder's unofficial Zigbee Device Compatibility Repository](https://zigbee.blakadder.com).
@@ -701,7 +701,7 @@ Not all hardware manufacturers fully comply with the standard. This can include:
Developers (or even advanced users) might be able to work around such interoperability issues by adding conversion/translation code in custom device handlers. For more information, refer to [How to add support for new and unsupported devices](#how-to-add-support-for-new-and-unsupported-devices).
{% note %}
-**If a device will not join/pair** at all, review the following sections on this page:
+_If a device will not join or pair_ at all, review the following sections on this page:
- [Best practices to avoid pairing/connection difficulties](#best-practices-to-avoid-pairingconnection-difficulties)
- [Zigbee interference avoidance and network range/coverage optimization](#zigbee-interference-avoidance-and-network-rangecoverage-optimization)
@@ -775,7 +775,7 @@ If you experience problems pairing a device, verify that you follow best practic
### Zigbee interference avoidance and network range/coverage optimization
-Sources of interference for radios can lead to connection problems, errors in sending and receiving Zigbee messages/signals, and significant degradation in performance. Implementing some good practicies can serve as a starting point to achieve better signal quality and reception, improved coverage, and extended range.
+Sources of interference for radios can lead to connection problems, errors in sending and receiving Zigbee messages or signals, and significant degradation in performance. Implementing some good practices can serve as a starting point to achieve better signal quality and reception, improved coverage, and extended range.
It is important to understand the known limitations of low-power/low-bandwidth 2.4 GHz digital radios to avoid issues caused by interference or poor placement of your Zigbee radio adapter or devices.
@@ -787,7 +787,7 @@ Examples of real-world interference sources include:
- Unshielded USB 3.x devices,
- Non-shielded USB 3.x peripheral cables
- These are widely known to affect 2.4 GHz radio reception for low-power/low-bandwidth devices.
- - You should always place your Zigbee adapter far away as possible from any potential sources of EMI/EMI/RMI, preferably by using an adequately long shielded USB extension cable connected to a USB 2.0 port.
+ - You should always place your Zigbee adapter as far away as possible from any potential sources of EMI/EMF/RMI, preferably by using an adequately long shielded USB extension cable connected to a USB 2.0 port.
Zigbee relies on a concept of [mesh networking](https://en.wikipedia.org/wiki/Mesh_networking) with most mains-powered devices being "Zigbee Routers" that act as signal repeaters and range extenders. Collectively, they transmit data over long distances by passing data messages through the Zigbee network mesh of intermediate devices to reach more distant Zigbee devices.
@@ -810,7 +810,7 @@ Common root causes of unreliable performance are often seen with outdated Zigbee
- Try placing Zigbee Coordinator at some distance away from walls, ceilings, and floors.
- Try different orientations of the Zigbee Coordinator adapter or its antenna.
-While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware and/or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when run into problems with devices.
+While using an older Zigbee Coordinator radio adapter hardware might work, using obsolete hardware or old firmware can prevent reliable operation. It is also generally a good idea to upgrade Zigbee Coordinator firmware before troubleshooting any further if and when you run into problems with devices.
#### Actions to avoid or workaround EMI/EMF/RMI interference
@@ -819,7 +819,7 @@ Since all Zigbee Coordinator radio adapters are very sensitive/susceptible to al
- Use a long USB extension cable and place Zigbee Coordinator away from interference and obstacles.
- Ensure the USB extension cable is adequately shielded (thicker cables usually have better shielding).
- Place Zigbee Coordinator away from electrical wires/cables, power supplies, and household appliances.
- - Extension cables also makes it easier to try different orientations of the adapter/antenna.
+ - Extension cables also make it easier to try different orientations of the adapter or antenna.
- Avoid USB 3.0 ports/computers/peripherals as they are known culprits of RFI/EMI/EMF disruption. (See Ref. [1](https://www.usb.org/sites/default/files/327216.pdf) and [2](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/)).
- Make sure to only connect the Zigbee USB adapter to a USB 2.0 port (and not to a USB 3.x port).
@@ -830,14 +830,14 @@ Since all Zigbee Coordinator radio adapters are very sensitive/susceptible to al
- Be aware that metal casings can decrease the performance of an internal/built-in Zigbee Coordinator.
- Avoid Wi-Fi Routers and Wi-Fi Access Points, alternatively change the Wi-Fi channel or Zigbee channel.
- - Place your Zigbee Coordinator away from any Wi-Fi access points and all other sources of WiFi.
+ - Place your Zigbee Coordinator away from any Wi-Fi access points and all other sources of Wi-Fi.
- Wi-Fi frequency ranges can overlap with Zigbee, see the section above on defining Zigbee channel use.
### Problems upgrading Zigbee device firmware via OTA
Before upgrading any OTA firmware, it is recommended to install fresh batteries in the device. OTA firmware updates are power-intensive, and some devices check for a minimum battery level before starting the upgrade. These devices may refuse to initiate the update process if the battery level is too low. However, not all device firmware includes this check.
-If Zigbee firmware upgrades do not start on a Zigbee End Device (i.e. a battery-powered product), then note that you usually need to "wake up the device" (e.g. trigger state change or pressing a button if available) so that the device becomes awake and is thus able to receive commands to start the OTA upgrade. The reason for this is that battery-powered products are so called "sleepy devices," so they normally are asleep and only receive commands when the state of the device is changed.
+If Zigbee firmware upgrades do not start on a Zigbee End Device (that is, a battery-powered product), then note that you usually need to "wake up the device" (for example, trigger a state change or press a button if available) so that the device becomes awake and is thus able to receive commands to start the OTA upgrade. The reason for this is that battery-powered products are so-called "sleepy devices," so they normally are asleep and only receive commands when the state of the device is changed.
If the upgrade still does not start, then try manually restarting the device by disconnecting the power/battery for a few seconds and try again; then again make sure to activate the device by triggering state change or pressing a button on it right before sending the update request. Sometimes, it also helps to try keeping the device awake by repeatedly pushing a button or triggering state change until you see the first "Updating... " message in the user interface.
@@ -877,8 +877,8 @@ RSSI values are negative numbers in -dBm format ranging from 0 to -100 power rat
The value is a measurement between the endpoint device and the first hop from that device. It may not necessarily show signal strength to the Zigbee Coordinator but instead could be showing signal strength to the nearest Zigbee Router device.
Generally:
-- Values -60 and above (meaning -50, -40, etc.) indicate a strong signal and very low risk of losing messages.
-- Values at -80 and below (meaning -85, -90, etc.) indicate a "noisy" environment and you may risk losing messages.
+- Values -60 and above (meaning -50, -40, and so on) indicate a strong signal and very low risk of losing messages.
+- Values at -80 and below (meaning -85, -90, and so on) indicate a "noisy" environment and you may risk losing messages.
{% enddetails %}
@@ -945,10 +945,10 @@ logger:
### Add Philips Hue bulbs that have previously been added to another bridge
-Philips Hue bulbs that have previously been paired to another bridge/gateway will not show up during search in ZHA to add a Zigbee device. **Bulbs must be restored back to their factory default settings**.
+Philips Hue bulbs that have previously been paired to another bridge or gateway will not show up during search in ZHA to add a Zigbee device. Bulbs must be restored to their factory default settings.
{% important %}
-**You must factory-reset the device.**
+You must factory-reset the device.
- Simply "removing" them from your old bridge/gateway is not sufficient.
- Be sure there are no other Hue bulbs nearby that have just been powered-on when using this method or you will risk resetting them in this process.
@@ -980,7 +980,7 @@ Icons or button names may vary between generations of remotes. The remote used f
- **Lutron Connected Bulb Remote:**
- Use the **2nd (up arrow)** and **4th (light off)** buttons.
2. Turn on the Hue bulb you want to reset.
- - **It is important that the bulb has _just_ been powered on.**
+ - It is important that the bulb has _just_ been powered on.
3. Hold the remote near your bulb, closer than 10cm (about 4 inches).
4. Press-and-hold both buttons identified in the first step and continue holding them once the bulb begins to blink.
- Expect to hold the buttons for about another 10 seconds while the bulb blinks.
@@ -1000,7 +1000,7 @@ If you are unable to reset the bulb using a method above, remove it from the Hue
### ZHA Start up issue with Home Assistant or Home Assistant Container
-On Linux hosts ZHA can fail to start during HA startup or restarts because the Zigbee USB device is being claimed by the host's modemmanager service. To fix this disable the modemmanager on the host system.
+On Linux hosts, ZHA can fail to start during Home Assistant startup or restarts because the Zigbee USB device is being claimed by the host's modemmanager service. To fix this, disable the modemmanager on the host system.
To remove modemmanager from a Debian/Ubuntu host run this command:
@@ -1043,12 +1043,12 @@ services:
When you see `NCP entered failed state. Requesting APP controller restart` in logs during normal operation, it indicates a drop in communication between ZHA and the serial interface of the Silabs EmberZNet Zigbee Coordinator.
-The EZSP (EmberZNet Serial Protocol) interface used by Silicon Labs EmberZNet Zigbee Coordinator adapters requires a stable connection to the serial port; therefore, it is not recommended to use a connection over Wi-Fi, WAN, VPN, etc.
+The EZSP (EmberZNet Serial Protocol) interface used by Silicon Labs EmberZNet Zigbee Coordinator adapters requires a stable connection to the serial port. Therefore, it is not recommended to use a connection over Wi-Fi, WAN, or VPN.
### Zigbee 3.0 support
Some coordinators may not support firmware capable of Zigbee 3.0, but they can still be fully functional and feature-complete for your needs.
{% note %}
-It is up to hardware manufacturers to make such firmware available to them. If your coordinator was shipped with an older firmware version, you be able to manually upgrade the firmware.
+It is up to hardware manufacturers to make such firmware available to them. If your coordinator was shipped with an older firmware version, you may be able to manually upgrade the firmware.
{% endnote %}
diff --git a/source/_integrations/zwave_me.markdown b/source/_integrations/zwave_me.markdown
index 04cc0a77b528..4be40ff4670b 100644
--- a/source/_integrations/zwave_me.markdown
+++ b/source/_integrations/zwave_me.markdown
@@ -38,34 +38,37 @@ ha_zeroconf: true
ha_integration_type: hub
---
-This {% term integration %} allows you to control a Z-Wave network via the [Z-Wave.Me Z-Way](https://z-wave.me/z-way/). It combines the performance and the power of the diagnostics tools built-in Z-Way with the flexibility of Home Assistant. The integration brings all Z-Way devices in Home Assistant (Z-Wave, Zigbee, EnOcean, HTTP based, and others).
+The **Z-Wave.Me** {% term integration %} allows you to control a Z-Wave network via the [Z-Wave.Me Z-Way](https://z-wave.me/z-way/). It combines the performance and power of the diagnostics tools built into Z-Way with the flexibility of Home Assistant. The integration brings all Z-Way devices into Home Assistant, including Z-Wave, Zigbee, EnOcean, HTTP-based, and others.
{% include integrations/config_flow.md %}
{% configuration_basic %}
URL:
- description: The IP address with the port of the Z-Way server. The IP address can be prefixed with wss:// if HTTPS should be used instead of HTTP (when using find.z-wave.me remote access service or public IP with SSL).
+ description: "The IP address and port of the Z-Way server. You can prefix the address with `wss://` to use a secure WebSocket connection (for example, when using the `find.z-wave.me` remote access service or a public IP with TLS)."
API Token:
- description: Z-Way API access token of the Z-Way server. To get the token go to the Z-Way user interface Smart Home UI > Menu > Settings > Users > Administrator > API token.
+ description: "The API access token of the Z-Way server. To get the token, go to the Z-Way Smart Home UI and select **Menu** > **Settings** > **Users** > **Administrator** > **API token**."
{% endconfiguration_basic %}
-When connecting via find.z-wave.me remote access service you need to use a token with a global scope (log-in to Z-Way via [find.z-wave.me](https://find.z-wave.me) for this).
+When connecting via the [find.z-wave.me](https://find.z-wave.me) remote access service, you need to use a token with a global scope. To create one, sign in to Z-Way at [find.z-wave.me](https://find.z-wave.me).
Example of connecting to Z-Way in the local network:
- - URL: 192.168.1.39:8083
- - API Token: /112f7a4a-0051-cc2b-3b61-1898181b9950
-Example of connecting to Z-Way via remote access find.z-wave.me:
- - URL: wss://find.z-wave.me
- - API Token: 0481effe8a5c6f757b455babb678dc0e764feae279/112f7a4a-0051-cc2b-3b61-1898181b9950
+- URL: `192.168.1.39:8083`
+- API Token: `/112f7a4a-0051-cc2b-3b61-1898181b9950`
- Example of connecting to Z-Way with a static public IP address:
- - URL: wss://87.250.250.242:8083
- - API Token: /112f7a4a-0051-cc2b-3b61-1898181b9950
+Example of connecting to Z-Way via the `find.z-wave.me` remote access service:
+
+- URL: `wss://find.z-wave.me`
+- API Token: `0481effe8a5c6f757b455babb678dc0e764feae279/112f7a4a-0051-cc2b-3b61-1898181b9950`
+
+Example of connecting to Z-Way with a static public IP address:
+
+- URL: `wss://87.250.250.242:8083`
+- API Token: `/112f7a4a-0051-cc2b-3b61-1898181b9950`
{% warning %}
-To grant access only to certain devices, create a new user and select the necessary devices from the list. Then use the API token of that user. It is suggested **not to use the API token of the admin**.
+To grant access only to certain devices, create a new user and select the necessary devices from the list. Then use the API token of that user. Do not use the API token of the admin.
{% endwarning %}
@@ -76,18 +79,19 @@ You can use Z-Wave.Me UI with its enhanced Z-Wave network diagnostics tools toge
## Hardware requirements
Z-Wave.Me Z-Way requires Z-Wave.Me hardware:
- - [RaZberry 7](https://z-wave.me/products/razberry/) and [RaZberry 7 Pro](https://z-wave.me/products/razberry/)
- - [Wiren Board 7](https://z-wave.me/products/wirenboard-7/)
- - [Z-Station](https://z-wave.me/products/z-station/)
- - [Z-Wave & Zigbee mPCIe](https://z-wave.me/products/mpcie/)
- - [RaZberry (old)](https://z-wave.me/products/razberry-old/)
- - [UZB1](https://z-wave.me/products/uzb/)
- - [Hub1](https://z-wave.me/products/hub/)
- - or any other Z-Wave.Me based controller.
+
+- [RaZberry 7](https://z-wave.me/products/razberry/) and [RaZberry 7 Pro](https://z-wave.me/products/razberry/)
+- [Wiren Board 7](https://z-wave.me/products/wirenboard-7/)
+- [Z-Station](https://z-wave.me/products/z-station/)
+- [Z-Wave & Zigbee mPCIe](https://z-wave.me/products/mpcie/)
+- [RaZberry (old)](https://z-wave.me/products/razberry-old/)
+- [UZB1](https://z-wave.me/products/uzb/)
+- [Hub1](https://z-wave.me/products/hub/)
+- Any other Z-Wave.Me-based controller
## Installing Z-Way
-Z-Wave.Me Z-Way runs on various platforms: Raspberry Pi OS, Linux, Windows. Installation instructions are available here: https://z-wave.me/z-way/download-z-way/
+Z-Wave.Me Z-Way runs on various platforms, including Raspberry Pi OS, Linux, and Windows. Follow the [Z-Way installation instructions](https://z-wave.me/z-way/download-z-way/) to set it up.
## Migration to Z-Way
diff --git a/source/_layouts/default.html b/source/_layouts/default.html
index d8a014ae2f41..666793c91560 100644
--- a/source/_layouts/default.html
+++ b/source/_layouts/default.html
@@ -3,7 +3,7 @@
{% assign doc = url_parts[2] %}
{% include site/head.html %}
-
+
{% include site/header.html %}
@@ -20,6 +20,16 @@
{% if page.toc %}
{%- unless page.no_toc -%}