Merge branch 'current' into next
@ -84,7 +84,7 @@ GEM
|
||||
prism (0.24.0)
|
||||
public_suffix (5.0.4)
|
||||
racc (1.7.3)
|
||||
rack (3.0.9)
|
||||
rack (3.0.9.1)
|
||||
rack-protection (4.0.0)
|
||||
base64 (>= 0.1.0)
|
||||
rack (>= 3.0.0, < 4)
|
||||
|
@ -110,8 +110,8 @@ social:
|
||||
# Home Assistant release details
|
||||
current_major_version: 2024
|
||||
current_minor_version: 2
|
||||
current_patch_version: 2
|
||||
date_released: 2024-02-16
|
||||
current_patch_version: 5
|
||||
date_released: 2024-02-27
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
@ -211,11 +211,15 @@ installation:
|
||||
key: "odroid-c4"
|
||||
- name: "ODROID-M1"
|
||||
key: "odroid-m1"
|
||||
- name: "ODROID-M1S"
|
||||
key: "odroid-m1s"
|
||||
|
||||
raspberrypi:
|
||||
board: Raspberry Pi
|
||||
installation_media: "SD card"
|
||||
variants:
|
||||
- name: "Raspberry Pi 5"
|
||||
key: "rpi5-64"
|
||||
- name: "Raspberry Pi 4"
|
||||
key: "rpi4-64"
|
||||
- name: "Raspberry Pi 3"
|
||||
|
@ -17,19 +17,6 @@ The calendar card displays your [calendar](/integrations/#calendar) entities in
|
||||
|
||||
All options for this card can be configured via the user interface.
|
||||
|
||||
## Card settings
|
||||
|
||||
{% configuration_basic %}
|
||||
Title:
|
||||
description: The title displayed at the top of the card.
|
||||
Initial View:
|
||||
description: "The view that will show first when the card is loaded onto the page. Options are `Month View`, `Day View`, or `List (7 days)`."
|
||||
Entities:
|
||||
description: The calendar entities that will be displayed in the card.
|
||||
Theme:
|
||||
description: Name of any loaded theme to be used for this card. For more information about themes, see the [frontend documentation](/integrations/frontend/).
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## YAML configuration
|
||||
|
||||
The following YAML options are available when you use YAML mode or just prefer to use YAML in the code editor in the UI.
|
||||
|
@ -2,11 +2,24 @@
|
||||
type: view
|
||||
title: Masonry view
|
||||
sidebar_label: Masonry (default)
|
||||
description: "The default panel layout uses a masonry algorithme."
|
||||
description: "The default panel layout uses a masonry algorithm."
|
||||
---
|
||||
|
||||
The masonry view is the default view type.
|
||||
It sorts cards in columns based on their `card size`. If you want to group some cards you have to use `stack` or `grid` cards.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/getting-started/lovelace.png' alt='Screenshot of the masonry view'>
|
||||
Screenshot of the masonry view.
|
||||
</p>
|
||||
|
||||
Masonry sorts cards in columns based on their card size. The next card is placed below the smallest card on the dashboard.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/masonry.png' alt='Image showing how masonry arranges cards based on size.'>
|
||||
Masonry arranges cards based on size.
|
||||
</p>
|
||||
|
||||
To group cards, you have to use [horizontal stack](/dashboards/horizontal-stack/), [vertical stack](/dashboards/vertical-stack/), or [grid](/dashboards/grid/) cards.
|
||||
|
||||
{% configuration %}
|
||||
type:
|
||||
@ -14,3 +27,8 @@ type:
|
||||
description: "`masonry`"
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Panel view](/dashboards/panel/)
|
||||
- [Sidebar view](/dashboards/sidebar/)
|
@ -5,11 +5,16 @@ sidebar_label: Panel
|
||||
description: "The panel view shows a single card in the full width of the screen."
|
||||
---
|
||||
|
||||
The view must have exactly one card. This card is rendered full-width.
|
||||
The panel view must have exactly one card. This card is rendered full-width.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/panel_view.png' alt='Screenshot of the panel view'>
|
||||
Screenshot of the panel view.
|
||||
</p>
|
||||
|
||||
This view doesn't have support for badges.
|
||||
|
||||
This view is good when using cards like `map`, `stack` or `picture-elements`.
|
||||
This view is good when using cards like [map](/dashboards/map/), [horizontal stack](/dashboards/horizontal-stack/), [vertical stack](/dashboards/vertical-stack/), [picture elements](/dashboards/picture-elements/), or [picture glance](/dashboards/picture-glance/).
|
||||
|
||||
{% configuration %}
|
||||
type:
|
||||
@ -17,3 +22,8 @@ type:
|
||||
description: "`panel`"
|
||||
type: string
|
||||
{% endconfiguration %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Masonry view](/dashboards/masonry/)
|
||||
- [Sidebar view](/dashboards/sidebar/)
|
@ -7,14 +7,21 @@ description: "The sidebar view has 2 columns, a wide one and a smaller one on th
|
||||
|
||||
The sidebar view has 2 columns, a wide one and a smaller one on the right.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/sidebar_view.png' alt='Screenshot of the sidebar view'>
|
||||
Screenshot of the sidebar view used for the energy dashboard.
|
||||
</p>
|
||||
|
||||
This view doesn't have support for badges.
|
||||
|
||||
To change a view to edit mode, or to change the location of a card, enable edit mode:
|
||||
Click the menu (three dots at the top right of the screen) and then **Edit Dashboard**.
|
||||
You can set if a card should be placed in the main (left) column of the sidebar column (right), by selecting the arrow right or left arrow in the bar underneath the card.
|
||||
|
||||
You can set if a card should be placed in the main (left) column of the sidebar column (right), by pressing the arrow right or left arrow in the bar underneath the card.
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/sidebar_view_move_card.png' alt='Screenshot showing how to move a card between sidebar and main view'>
|
||||
Screenshot showing how to move a card between sidebar and main view.
|
||||
</p>
|
||||
|
||||
On mobile all cards are rendered in 1 column and kept in the order of the cards in the config.
|
||||
On mobile, all cards are rendered in 1 column and kept in the order of the cards in the config.
|
||||
|
||||
## View config:
|
||||
|
||||
@ -47,3 +54,8 @@ cards:
|
||||
view_layout:
|
||||
position: sidebar
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Panel view](/dashboards/panel/)
|
||||
- [Masonry view](/dashboards/masonry/)
|
@ -946,6 +946,10 @@ The sentences matched by this trigger will be:
|
||||
|
||||
Punctuation and casing are ignored, so "It's PARTY TIME!!!" will also match.
|
||||
|
||||
### Related topic
|
||||
|
||||
- [Adding a custom sentence to trigger an automation](/voice_control/custom_sentences/#adding-a-custom-sentence-to-trigger-an-automation)
|
||||
|
||||
### Sentence wildcards
|
||||
|
||||
Adding one or more `{lists}` to your trigger sentences will capture any text at that point in the sentence. A `slots` object will be [available in the trigger data](/docs/automation/templating#sentence).
|
||||
|
@ -3,15 +3,23 @@ title: "Splitting up the configuration"
|
||||
description: "Splitting the configuration.yaml into several files."
|
||||
---
|
||||
|
||||
So you've been using Home Assistant for a while now and your `configuration.yaml` file brings people to tears or you simply want to start off with the distributed approach, here's how to split the `configuration.yaml` into more manageable (read: humanly readable) pieces.
|
||||
So you've been using Home Assistant for a while now and your `configuration.yaml` file brings people to tears because it has become so large. Or, you simply want to start off with the distributed approach. Here's how to split the `configuration.yaml` into more manageable (read: human-readable) pieces.
|
||||
|
||||
First off, several community members have sanitized (read: without API keys/passwords etc) versions of their configurations available for viewing, you can see a list of them [here](/examples/#example-configurationyaml).
|
||||
## Example configuration files for inspiration
|
||||
|
||||
As commenting code doesn't always happen, please read on for the details.
|
||||
First off, several community members have sanitized (read: without API keys/passwords) versions of their configurations available for viewing. You can see a [list of example files here](/examples/#example-configurationyaml).
|
||||
|
||||
Now despite the logical assumption that the `configuration.yaml` will be replaced by this process it will in fact remain, albeit in a much less cluttered form.
|
||||
As commenting code doesn't always happen, please read on to learn in detail how configuration files can be structured.
|
||||
|
||||
In this lighter version we will still need what could be called the core snippet:
|
||||
## Analyzing the configuration files
|
||||
|
||||
In this section, we are going use some example configuration files and look at their structure and format in more detail.
|
||||
|
||||
Now you might think that the `configuration.yaml` will be replaced during the splitting process. However, it will in fact remain, albeit in a much less cluttered form.
|
||||
|
||||
### The core configuration file
|
||||
|
||||
In this lighter version, we will still need what could be called the core snippet:
|
||||
|
||||
```yaml
|
||||
homeassistant:
|
||||
@ -27,9 +35,11 @@ homeassistant:
|
||||
customize: !include customize.yaml
|
||||
```
|
||||
|
||||
### Indentation, includes, comments, and modularization
|
||||
|
||||
Note that each line after `homeassistant:` is indented two (2) spaces. Since the configuration files in Home Assistant are based on the YAML language, indentation and spacing are important. Also note that seemingly strange entry under `customize:`.
|
||||
|
||||
`!include customize.yaml` is the statement that tells Home Assistant to insert the contents of `customize.yaml` at that point. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks.
|
||||
`!include customize.yaml` is the statement that tells Home Assistant to insert the parsed contents of `customize.yaml` at that point. The contents of the included file must be yaml data that is valid at the location it is included. This is how we are going to break a monolithic and hard to read file (when it gets big) into more manageable chunks.
|
||||
|
||||
Now before we start splitting out the different components, let's look at the other integrations (in our example) that will stay in the base file:
|
||||
|
||||
@ -51,9 +61,20 @@ mqtt:
|
||||
state_topic: "test/some_topic2"
|
||||
```
|
||||
|
||||
As with the core snippet, indentation makes a difference. The integration headers (`mqtt:`) should be fully left aligned (aka no indent), and the key (`sensor:`) should be indented two (2) spaces. The list `-` under the key `sensor` should be indented another two (2) spaces followed by a single space. The `mqtt` sensor list contains two (2) configurations containing two (2) keys each.
|
||||
As with the core snippet, indentation makes a difference:
|
||||
|
||||
While some of these integrations can technically be moved to a separate file they are so small or "one off's" where splitting them off is superfluous. Also, you'll notice the # symbol (hash/pound). This represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored. This makes breaking up files for human readability really convenient, not to mention turning off features while leaving the entry intact.
|
||||
- The integration headers (`mqtt:`) should be fully left aligned (aka no indent).
|
||||
- The key (`sensor:`) should be indented two (2) spaces.
|
||||
- The list `-` under the key `sensor` should be indented another two (2) spaces followed by a single space.
|
||||
- The `mqtt` sensor list contains two (2) configurations, with two (2) keys each.
|
||||
|
||||
#### Comments
|
||||
|
||||
The # symbol (hash/pound) represents a "comment" as far as the commands are interpreted. Put another way, any line prefixed with a `#` will be ignored by the software. It is for humans only. Comments allow breaking up files for readability, as well as turning off features while leaving the entry intact.
|
||||
|
||||
#### Modularization and granularity
|
||||
|
||||
While some of these integrations could technically be moved to a separate file, they are so small or "one off's" where splitting them off is superfluous.
|
||||
|
||||
Now, lets assume that a blank file has been created in the Home Assistant configuration directory for each of the following:
|
||||
|
||||
@ -68,7 +89,7 @@ customize.yaml
|
||||
|
||||
`automation.yaml` will hold all the automation integration details. `zone.yaml` will hold the zone integration details and so forth. These files can be called anything but giving them names that match their function will make things easier to keep track of.
|
||||
|
||||
Inside the base configuration file add the following entries:
|
||||
Inside the base configuration file, add the following entries:
|
||||
|
||||
```yaml
|
||||
automation: !include automation.yaml
|
||||
@ -78,9 +99,15 @@ switch: !include switch.yaml
|
||||
device_tracker: !include device_tracker.yaml
|
||||
```
|
||||
|
||||
Nesting `!include`s (having an `!include` within a file that is itself `!include`d) will also work.
|
||||
#### Include statements and packages to split files
|
||||
|
||||
Some integrations support multiple top-level `!include`s, this includes integrations defining an IoT domain, e.g. `light`, `switch`, `sensor` as well as the `automation`, `script` and `template` integrations, if you give a different label to each one. Configuration for other integrations can instead be split up by using packages. To learn more about packages, see the [Packages](/docs/configuration/packages) page.
|
||||
Nesting `!include` statements (having an `!include` within a file that is itself `!include`d) will also work.
|
||||
|
||||
Some integrations support multiple top-level `!include` statements. This includes integrations defining an IoT domain. For example, `light`, `switch`, or `sensor`; as well as the `automation`, `script`, and `template` integrations, if you give a different label to each one.
|
||||
|
||||
Configuration for other integrations can instead be split up by using packages. To learn more about packages, see the [Packages](/docs/configuration/packages) page.
|
||||
|
||||
#### Top level keys
|
||||
|
||||
Example of multiple top-level keys for the `light` platform.
|
||||
|
||||
@ -189,11 +216,11 @@ learn more about packages, see the [Packages](/docs/configuration/packages) page
|
||||
|
||||
That about wraps it up.
|
||||
|
||||
If you have issues checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away.
|
||||
If you have issues, checkout `home-assistant.log` in the configuration directory as well as your indentations. If all else fails, head over to our [Discord chat server][discord] and ask away.
|
||||
|
||||
## Debugging configuration files
|
||||
|
||||
If you have many configuration files, Home Assistant provides a CLI that allows you to see how it interprets them, each installation type has its own section in the common-tasks about this:
|
||||
If you have many configuration files, Home Assistant provides a CLI that allows you to see how it interprets them. Each installation type has its own section in the common-tasks about this:
|
||||
|
||||
- [Operating System](/common-tasks/os/#configuration-check)
|
||||
- [Container](/common-tasks/container/#configuration-check)
|
||||
@ -509,3 +536,8 @@ automation ui: !include automations.yaml
|
||||
```
|
||||
|
||||
[discord]: https://discord.gg/c5DvZ4e
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Example configuration files by the community](/examples/#example-configurationyaml)
|
||||
- [Using packages to organize configuration files](/docs/configuration/packages)
|
@ -15,7 +15,7 @@ Think of this in a parallel to speed and distance: Power is the speed you are go
|
||||
|
||||
Therefore Energy (kiloWatt-hour) is not an average of the Power you are consuming over a given period of time (the unit of the average power would be Watt or kiloWatt again). Energy is the integral (mathematical operation) of the Power function.
|
||||
|
||||
This difference is very important as you need to use the proper entities in our Energy Panel.
|
||||
This difference is very important as you need to use the proper entities in our Energy dashboard.
|
||||
|
||||
## Creating an Energy Sensor out of a Power Sensor
|
||||
|
||||
@ -29,9 +29,9 @@ If you are using a 3rd party device (e.g. not reading directly from your utility
|
||||
|
||||
To accomplish such, you can use the [utility_meter integration](/integrations/utility_meter/). With this integration, you define as many tariffs as required (in accordance with your utility provider contract) and HA will be able to differentiate energy consumptions in each of the tariffs. Please note that each utility provider has its own time schedules for peak and off-peak and you are required to create an automation that switches the utility_meter entity from one tariff to the other.
|
||||
|
||||
## The energy panel is not visible
|
||||
## The energy dashboard is not visible
|
||||
|
||||
If you do not see the Energy panel in the sidebar, make sure you have not removed [`default_config:`](/integrations/default_config/) from your `configuration.yaml`. If you have, you will need to add the `energy:` integration manually.
|
||||
If you do not see the Energy dashboard in the sidebar, make sure you have not removed [`default_config:`](/integrations/default_config/) from your `configuration.yaml`. If you have, you will need to add the `energy:` integration manually.
|
||||
|
||||
## Troubleshooting missing entities
|
||||
|
||||
|
43
source/_docs/troubleshooting_general.markdown
Normal file
@ -0,0 +1,43 @@
|
||||
---
|
||||
title: "General troubleshooting"
|
||||
description: "General troubleshooting information"
|
||||
---
|
||||
|
||||
This page provides some information about more generic troubleshooting topics.
|
||||
|
||||
## Home Assistant went into recovery mode
|
||||
|
||||
### Symptom: Home Assistant is in recovery mode
|
||||
|
||||
On top of the page you see a red banner. On the **Overview** page, you see a **Recovery mode** notification.
|
||||
|
||||

|
||||
|
||||
### Description
|
||||
|
||||
When Home Assistant is in recovery mode, there was an issue with the configuration.
|
||||
|
||||
Recovery mode loads a minimum set of integrations to allow troubleshooting the configuration. Recovery mode will use the parts of the configuration that was used the last time Home Assistant started successfully. You can still see the user interface, the settings, and add-ons.
|
||||
|
||||
### Resolution
|
||||
|
||||
You need to identify the issue in the configuration files and fix it there. The issue could be caused by something as simple as an invalid YAML file.
|
||||
|
||||
- If you are running Home Assistant Operating System, you can install an add-on such as VS code to edit the configuration file if needed.
|
||||
- If you are still logged in, you can [edit your configuration](/docs/configuration/#editing-configurationyaml).
|
||||
- In the Home Assistant user interface, open the add-on you usually use and edit the configuration file.
|
||||
- Restart Home Assistant.
|
||||
- If you are locked out because you forgot your password, you cannot edit the configuration file from the user interface. Follow the steps to [reset your password](/docs/locked_out/).
|
||||
|
||||
## Restarting Home Assistant in safe mode
|
||||
|
||||
If your Home Assistant is acting up and you cannot identify a root cause, you can use **Safe mode** to narrow down the number of possible causes.
|
||||
Safe mode loads Home Assistant Core, but no custom integrations, no custom cards, and no custom themes. If the issue does not persist in Safe mode, the issue is not with Home Assistant Core. Before reporting an issue, check if the issue persists in Safe mode.
|
||||
|
||||
To enable Safe mode, go to **Settings** > **System** > **Restart Home Assistant** (top right) > **Restart Home Assistant in safe mode**.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Editing your configuration](/docs/configuration/#editing-configurationyaml)
|
||||
- [Recovery mode integration](/integrations/recovery_mode/)
|
||||
- [Resetting your password](/docs/locked_out/)
|
@ -85,9 +85,20 @@ It's totally normal for your Z-Wave stick to cycle through its LEDs (Yellow, Blu
|
||||
|
||||
### Razberry Board
|
||||
|
||||
You need to disable the on-board Bluetooth since the board requires the use of the hardware UART (and there's only one on the Pi3). You do this by adding the following to the end of `/boot/config.txt`:
|
||||
On Raspberry Pi 3 and 4, you need to disable the on-board Bluetooth since the board requires the use of the hardware UART (whose pins are shared with the Bluetooth). You do this by adjusting the `/boot/config.txt`.
|
||||
|
||||
For both processes below you will need to insert your SD card into your PC and open the `/boot/config.txt` file with your favorite text editor.
|
||||
For both processes below you will need to insert your SD card into your PC and open the configuration file with your favorite text editor.
|
||||
|
||||
- If you are using Home Assistant Operating System, once you mounted the disk, you will see the `config.txt` directly in the root directory.
|
||||
- If you are using Home Assistant Supervised, the config file is stored in the boot folder: `/boot/config.txt`.
|
||||
|
||||
#### Raspberry Pi 5 procedure
|
||||
|
||||
Add the following parameters to the bottom of the `config.txt` file.
|
||||
|
||||
```text
|
||||
dtoverlay=uart0
|
||||
```
|
||||
|
||||
#### Raspberry Pi 4 procedure
|
||||
|
||||
|
@ -21,7 +21,7 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h1 class="title delta">Views</h1>
|
||||
<h1 class="title delta">View types</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
{% for element in elements %}
|
||||
{% if element.type == "view" %}
|
||||
@ -32,7 +32,7 @@
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h1 class="title delta">Cards</h1>
|
||||
<h1 class="title delta">Card types</h1>
|
||||
<ul class="divided sidebar-menu">
|
||||
{% for element in elements %}
|
||||
{% if element.type == "card" %}
|
||||
|
@ -8,14 +8,19 @@
|
||||
<b>{% active_link /docs/glossary/ Glossary %}</b>
|
||||
</li>
|
||||
<li>
|
||||
<b>{% active_link /getting-started Getting started %}</b>
|
||||
<b>Getting started</b>
|
||||
<ul>
|
||||
<li>{% active_link /installation Installation %}</li>
|
||||
<li>{% active_link /getting-started Getting started & onboarding %}</li>
|
||||
<li>{% active_link /dashboards Dashboards & views %}</li>
|
||||
<li>{% active_link /common-tasks/os/ Common tasks %}</li>
|
||||
<li>
|
||||
{% active_link /docs/troubleshooting/ Troubleshooting installation
|
||||
%}
|
||||
</li>
|
||||
<li>
|
||||
{% active_link /docs/troubleshooting_general/ General troubleshooting %}
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -44,7 +44,8 @@ You might need a backup in case your system has crashed. If you only store them
|
||||
|
||||
There are multiple ways to store the backup on another device:
|
||||
|
||||
- **Option 1**: Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, select the backup from the list.
|
||||
- **Option 1**: Under {% my supervisor_backups title="**Settings** > **System** > **Backups**" %}, on the list, single-click or tap the backup of interest.
|
||||
- **Result**: The backup dialog opens.
|
||||
- In the dialog, select the three dots menu and select **Download backup**.
|
||||
- **Result**: The selected backup is stored in the **Downloads** folder of your computer.
|
||||
- **Option 2**: If you haven't already done so, [configure access to files on Home Assistant](/common-tasks/{{page.installation}}/#configuring-access-to-files), using one of the methods listed there.
|
||||
|
47
source/_includes/common-tasks/flashing_m1s_otg.md
Normal file
@ -0,0 +1,47 @@
|
||||
## Flashing an ODROID-M1S
|
||||
|
||||
Home Assistant can be flashed to an ODROID-M1S by connecting the device directly to your computer via the USB-OTG connection on the front of the board.
|
||||
Unlike other ODROID boards, the M1S does not have a socket for an optional <abbr title="embedded MultiMediaCard">eMMC</abbr> module. It also does not have a separate flash chip that holds a dedicated bootloader.
|
||||
Instead, the M1S has a build-in 64GB <abbr title="embedded MultiMediaCard">eMMC</abbr> soldered directly on the board that holds a bootloader by default. This guide will show you how to install the Home Assistant Operating System to the built-in <abbr title="embedded MultiMediaCard">eMMC</abbr>.
|
||||
|
||||
<ins>**Warning:</ins> Installing Home Assistant OS replaces the firmware and <abbr title="secondary program loader">SPL</abbr> on the <abbr title="embedded MultiMediaCard">eMMC</abbr> with the mainline version provided by the Home Assistant OS. As a result, it is not possible to use the SD card with the EMMC2UMS image anymore, because the mainline <abbr title="secondary program loader">SPL</abbr> is not compatible with U-Boot in the EMMC2UMS image at this time (February 2024). This does not pose any problem for standard use, just makes it more complicated in case you want to return to the Hardkernel-provided OS (see [HK Recovery](#hk-recovery)).**
|
||||
|
||||
### What you will need
|
||||
|
||||
To flash your <abbr title="embedded MultiMediaCard">eMMC</abbr> using <abbr title="USB-On-The-Go">USB-OTG</abbr>, you will need the following items:
|
||||
|
||||
- A small SD card
|
||||
- Another computer
|
||||
- USB 2.0 to micro-USB cable
|
||||
- the special Hardkernel eMMC-to-USB-mass-storage image
|
||||
|
||||
### Boot into mass-storage mode
|
||||
|
||||
(These steps are identical to the official [Hardkernel wiki](https://wiki.odroid.com/odroid-m1s/getting_started/os_installation_guide?redirect=1#install_over_usb_from_pc) page.)
|
||||
|
||||
1. Download [ODROID-M1S_EMMC2UMS.img](https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img).
|
||||
2. Use [balena Etcher](https://www.balena.io/etcher/) or another tool to flash the UMS utility onto an SD card.
|
||||
- Use **Flash from file**. **Flash from URL** does not work on all systems.
|
||||
(balena Etcher will complain that something went wrong during flashing. You can ignore this message)
|
||||
3. Plug-in that SD card to your ODROID-M1S and boot it.
|
||||
|
||||
### Flashing Home Assistant M1S
|
||||
|
||||
1. Download the latest stable version of Home Assistant OS for the [ODROID-M1S](https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos['odroid-m1s']}}/haos_odroid-m1s-{{site.data.version_data.hassos['odroid-m1s']}}.img.xz).
|
||||
2. Apart from the HAOS image to flash (M1S instead of N2+ version), you can follow the N2+ step-by-step flashing guide [HERE](/common-tasks/os/#flashing-home-assistant).
|
||||
|
||||
|
||||
#### _HK Recovery_
|
||||
|
||||
If you want to restore your M1S back into Hardkernel's initial state, you will have to restore the HK's bootloader.
|
||||
A reliable way of reflashing the eMMC with an operating system of your choice is to use Home Assistant OS to flash the EMMC2UMS image which turns the ODROID-M1S into USB Mass Storage device. Once you have flashed the EMMC2UMS image, you can flash any OS again. You will need a micro USB cable to connect ODROID-M1S to PC.
|
||||
|
||||
Note: This commands will render your current Home Assistant OS installation unbootable!
|
||||
|
||||
Use the local terminal (HDMI/keyboard) to access the system console. On the Home Assistant CLI (command line), enter `login` to enter the root shell and use `curl` to download an image and `dd` it to the eMMC block device:
|
||||
|
||||
```sh
|
||||
curl https://dn.odroid.com/RK3566/ODROID-M1S/Installer/ODROID-M1S_EMMC2UMS.img | dd of=/dev/mmcblk0
|
||||
```
|
||||
|
||||
This way, the device will start in the UMS mode on the next boot with the SD card removed. Follow the [Install over USB from PC](https://wiki.odroid.com/odroid-m1s/getting_started/os_installation_guide#install_over_usb_from_pc) to install a different operating system.
|
@ -3,6 +3,10 @@
|
||||
{% capture title %}{{ include.title | default: page.title }}{% endcapture %}
|
||||
|
||||
To add the {{ title | downcase }} to your user interface:
|
||||
1. In the top right of the screen, select the three dots menu and then select **Edit dashboard**.
|
||||
- By editing the dashboard, you are taking over control of this dashboard. This means that it is no longer automatically updated when new dashboard elements become available. To continue, in the dialog, select **Take control**.
|
||||
2. In the bottom right corner, select the **Add card** button and select from the card picker.
|
||||
|
||||
1. In the top right of the screen, select the pencil icon.
|
||||
- If this is your first time editing a dashboard, the **Edit dashboard** dialog appears.
|
||||
- By editing the dashboard, you are taking over control of this dashboard.
|
||||
- This means that it is no longer automatically updated when new dashboard elements become available.
|
||||
- To continue, in the dialog, select the three dots menu, then select **Take control**.
|
||||
2. In the bottom right corner, select the **Add card** button and select from the card picker.
|
||||
|
@ -12,26 +12,26 @@ Follow this guide if you want to get started with Home Assistant easily or if yo
|
||||
|
||||
You will need a few things to get started with installing Home Assistant. The links below lead to Ameridroid. If you’re not in the US, you should be able to find these items in web stores in your country.
|
||||
|
||||
To get started, we suggest the ODROID N2+, the board that powers our [Home Assistant Blue](/blue/), or the ODROID M1.
|
||||
To get started, we suggest the ODROID-N2+, the board that powers our [Home Assistant Blue](/blue/), or the ODROID-M1.
|
||||
|
||||
If unavailable, we also recommend the [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e).
|
||||
If unavailable, we also recommend the [ODROID-C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e).
|
||||
|
||||
Home Assistant bundles (US market):
|
||||
|
||||
The bundles come with Home Assistant pre-installed.
|
||||
|
||||
- [ODROID N2+: 2 GB RAM / 16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729286935?ref=eeb6nfw07e)
|
||||
- [ODROID N2+: 4 GB RAM / 64 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729221399?ref=eeb6nfw07e)
|
||||
- ODROID M1: 4 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573028119?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940567831?ref=eeb6nfw07e)
|
||||
- ODROID M1: 8 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573093655?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940633367?ref=eeb6nfw07e)
|
||||
- [ODROID M1: 8 GB RAM / 1 TB NVMe / 64 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940698903?ref=eeb6nfw07e)
|
||||
- [ODROID-N2+: 2 GB RAM / 16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729286935?ref=eeb6nfw07e)
|
||||
- [ODROID-N2+: 4 GB RAM / 64 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44748729221399?ref=eeb6nfw07e)
|
||||
- ODROID-M1: 4 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573028119?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940567831?ref=eeb6nfw07e)
|
||||
- ODROID-M1: 8 GB RAM / 256 GB NVMe / [16 GB µSD](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44929573093655?ref=eeb6nfw07e) or [16 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940633367?ref=eeb6nfw07e)
|
||||
- [ODROID-M1: 8 GB RAM / 1 TB NVMe / 64 GB eMMC](https://ameridroid.com/products/odroid-n2-home-assistant-blue-bundle-limited-edition?variant=44994940698903?ref=eeb6nfw07e)
|
||||
|
||||
Variants without pre-installed Home Assistant:
|
||||
|
||||
- ODROID N2+, [2 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828719650?ref=eeb6nfw07e) or [4 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828752418?ref=eeb6nfw07e)
|
||||
- [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e)
|
||||
- [ODROID M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e)
|
||||
|
||||
- ODROID-N2+, [2 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828719650?ref=eeb6nfw07e) or [4 GB RAM](https://ameridroid.com/products/odroid-n2-plus?variant=40371828752418?ref=eeb6nfw07e)
|
||||
- [ODROID-C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e)
|
||||
- [ODROID-M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e)
|
||||
- ODROID-M1S, [4 GB RAM](https://ameridroid.com/products/odroid-m1s?variant=47425396474135?ref=eeb6nfw07e) or [8 GB RAM](https://ameridroid.com/products/odroid-m1s?variant=47425396506903?ref=eeb6nfw07e)
|
||||
- [Power Supply](https://ameridroid.com/products/12v-2a-power-supply-plug?ref=eeb6nfw07e)
|
||||
- [CR2032 Coin Cell](https://ameridroid.com/products/rtc-bios-battery?ref=eeb6nfw07e)
|
||||
- [eMMC Module](https://ameridroid.com/products/emmc-module-n2-linux-red-dot?ref=eeb6nfw07e)
|
||||
@ -162,9 +162,11 @@ Use this method only if Method 1 does not work for you.
|
||||
- Back up your data before continuing with the next step.
|
||||
2. Attach the Home Assistant boot medium ({{site.installation.types[page.installation_type].installation_media}}) to your computer.
|
||||
{% if page.installation_type == 'odroid' %}
|
||||
If you are using ODROID M1, note that booting from NVMe is not supported. If you want to boot from eMMC, [update the firmware](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1.md) before installing the image.
|
||||
If you are using ODROID-M1, note that booting from NVMe is not supported. If you want to boot from eMMC, [update the firmware](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1.md) before installing the image.
|
||||
|
||||
If you are using a [Home Assistant Blue](/blue) or ODROID N2+, you can [attach your device directly](/common-tasks/os/#flashing-an-odroid-n2).
|
||||
If you are using a [Home Assistant Blue](/blue) or ODROID-N2+, you can [attach your device directly](/common-tasks/os/#flashing-an-odroid-n2).
|
||||
|
||||
If you are using an ODROID-M1S, you need to follow this guide to [boot your device into UMS mode](/common-tasks/os/#flashing-an-odroid-m1s).
|
||||
{% endif %}
|
||||
3. Download and start <a href="https://www.balena.io/etcher" target="_blank">Balena Etcher</a>. You may need to run it with administrator privileges on Windows.
|
||||
4. Download the image to your computer.
|
||||
@ -182,7 +184,9 @@ Use this method only if Method 1 does not work for you.
|
||||
```
|
||||
|
||||
{% if variant.key == "odroid-n2" %}
|
||||
[Guide: Flashing Odroid-N2 using OTG-USB](/hassio/flashing_n2_otg/)
|
||||
[Guide: Flashing ODROID-N2 using OTG-USB](/hassio/flashing_n2_otg/)
|
||||
{% elsif variant.key == "odroid-m1s" %}
|
||||
[Guide: Flashing ODROID-M1S using OTG-USB](/hassio/flashing_m1s_otg/)
|
||||
{% elsif variant.key == "rpi4" or variant.key == "rpi3" %}
|
||||
*(64-bit is recommended)*
|
||||
{% endif %}
|
||||
@ -212,7 +216,7 @@ Use this method only if Method 1 does not work for you.
|
||||
9. Select **Flash!** to start writing the image.
|
||||
- If the operation fails, decompress the .xz file and try again.
|
||||

|
||||
1. When Balena Etcher has finished writing the image, you will see a confirmation.
|
||||
- When Balena Etcher has finished writing the image, you will see a confirmation.
|
||||

|
||||
|
||||
### Start up your {{site.installation.types[page.installation_type].board}}
|
||||
|
@ -18,6 +18,6 @@ The **Analytics Insights** {% term integration %} allows you to get integration
|
||||
The data comes from [Home Assistant Analytics](https://analytics.home-assistant.io/).
|
||||
For more information about the component that collects analytics, checkout [Analytics](/integrations/analytics).
|
||||
|
||||
Only integrations with one or more active installations will be displayed. This means it will take some time before newly released integrations are visible.
|
||||
For a custom integration to show up, it should have its [brands](https://github.com/home-assistant/brands) merged.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
@ -21,7 +21,7 @@ If you use Home Assistant Operating System or Home Assistant Supervised, [back u
|
||||
</div>
|
||||
|
||||
|
||||
### Manual configuration
|
||||
## Manual configuration
|
||||
|
||||
The backup integration is by default enabled. If you've disabled or removed the [`default_config:`](/integrations/default_config/) line from your configuration the following example shows you how to enable this integration manually:
|
||||
|
||||
@ -53,7 +53,7 @@ Example service call:
|
||||
service: backup.create
|
||||
```
|
||||
|
||||
## Example: Backing up every night at 3:00 AM
|
||||
### Example: Backing up every night at 3:00 AM
|
||||
|
||||
|
||||
This is a YAML example for an automation that initiate a backup every night
|
||||
@ -69,3 +69,18 @@ automation:
|
||||
alias: "Create backup now"
|
||||
service: backup.create
|
||||
```
|
||||
|
||||
## Restoring a backup
|
||||
|
||||
<div class="note">
|
||||
|
||||
If you use Home Assistant Operating System or Home Assistant Supervised, [the restore functionality is already built-in](/common-tasks/os/#restoring-a-backup).
|
||||
|
||||
</div>
|
||||
|
||||
Backups created via the **Backup** integration are located in your `/config/backups` directory. The Home Assistant Container installation will typically mount this directory via `docker-compose.yml` or `docker run` to a directory of your choice.
|
||||
For Container and Core installations, there is currently no built-in way to restore a backup. However, a Home Assistant backup is just a tar file of the `/config` directory, plus some metadata. To manually restore a backup, you can use the following:
|
||||
|
||||
```shell
|
||||
tar -xOf <backup_tar_file> "./homeassistant.tar.gz" | tar --strip-components=1 -zxf - -C <restore_directory>
|
||||
```
|
||||
|
@ -32,26 +32,84 @@ Almost all [Sony Bravia TV 2013 and newer](https://info.tvsideview.sony.net/en_w
|
||||
The Bravia TV integration supports two types of authentication:
|
||||
|
||||
- **PSK (Pre-Shared-Key)** is a user-defined secret key used for access control. This authentication method is recommended as more reliable and stable. To set up and enable PSK on your TV, go to: **Settings -> Network -> Home Network Setup -> IP Control**.
|
||||
- **PIN Code** authentication is easier and does not require additional settings.
|
||||
- **PIN Code** authentication is easier and does not require additional settings. [See this guide](#tv-does-not-generate-new-pin) if your TV does not show the PIN code.
|
||||
|
||||
For more information, see [IP Control Authentication](https://pro-bravia.sony.net/develop/integrate/ip-control/index.html#ip-control-authentication).
|
||||
|
||||
## Common issues
|
||||
|
||||
### TV does not generate new pin
|
||||
|
||||
If you have previously set up your TV with any Home Assistant instances via PIN code, you must remove Home Assistant from your TV in order for your TV to generate a new pin. To do this, you must do **one** of the following:
|
||||
|
||||
- On your TV, go to: **Settings** > **Network** > **Remote device settings** > **Deregister remote device**. Disable and re-enable the **Control remotely** after. Menu titles may differ slightly between models. If needed, refer to your specific model's [manual](https://www.sony.com/electronics/support/manuals) for additional guidance.
|
||||
- Reset your TV to factory condition.
|
||||
|
||||
## Media browser
|
||||
|
||||
Using the media browser, you can view a list of all installed applications and TV channels and launch them.
|
||||
Using the media browser, you can view a list of all installed applications and TV channels and launch them. You can access the media browser from the **Media** section in the Home Assistant side menu or by selecting the **Browse media** button on the media player card.
|
||||
|
||||
## 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.
|
||||
|
||||
{% 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:
|
||||
- platform: universal
|
||||
name: Sony TV
|
||||
unique_id: sony_tv_combined
|
||||
device_class: tv
|
||||
children:
|
||||
- media_player.sony_tv_native
|
||||
- media_player.sony_tv_cast
|
||||
active_child_template: >
|
||||
{% if state_attr('media_player.sony_tv_native', 'media_content_id') %}
|
||||
media_player.sony_tv_native
|
||||
{% endif %}
|
||||
attributes:
|
||||
source: media_player.sony_tv_native|source
|
||||
source_list: media_player.sony_tv_native|source_list
|
||||
browse_media_entity: media_player.sony_tv_native
|
||||
commands:
|
||||
turn_off:
|
||||
service: media_player.turn_off
|
||||
data:
|
||||
entity_id: media_player.sony_tv_native
|
||||
turn_on:
|
||||
service: media_player.turn_on
|
||||
data:
|
||||
entity_id: media_player.sony_tv_native
|
||||
select_source:
|
||||
service: media_player.select_source
|
||||
data:
|
||||
entity_id: media_player.sony_tv_native
|
||||
source: "{{ source }}"
|
||||
media_play:
|
||||
service: media_player.media_play
|
||||
target:
|
||||
entity_id: media_player.sony_tv_native
|
||||
media_pause:
|
||||
service: media_player.media_pause
|
||||
target:
|
||||
entity_id: media_player.sony_tv_native
|
||||
media_play_pause:
|
||||
service: media_player.media_play_pause
|
||||
target:
|
||||
entity_id: media_player.sony_tv_native
|
||||
media_previous_track:
|
||||
service: media_player.media_previous_track
|
||||
target:
|
||||
entity_id: media_player.sony_tv_native
|
||||
media_next_track:
|
||||
service: media_player.media_next_track
|
||||
target:
|
||||
entity_id: media_player.sony_tv_native
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Play media service
|
||||
|
||||
The `play_media` {% term service %} can be used in an automation or script to switch to a specified application or TV channel. It selects the best matching application or channel according to the `media_content_id`:
|
||||
The `play_media` {% term service %} 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')*
|
||||
@ -93,9 +151,19 @@ data:
|
||||
|
||||
## Remote
|
||||
|
||||
The integration supports `remote` platform. The remote allows you to send key commands to your TV with the `remote.send_command` service.
|
||||
The {% term integration %} supports `remote` {% term platform %}. It allows you to send remote control commands to your TV with the `remote.send_command` service.
|
||||
|
||||
The commands that can be sent to the TV depends on the model of your TV. To display a list of supported commands for your TV, call the service `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 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 service %} `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).
|
||||
|
||||
**Example to send `Down` key command:**
|
||||
|
||||
```yaml
|
||||
service: remote.send_command
|
||||
target:
|
||||
entity_id: remote.bravia_tv
|
||||
data:
|
||||
command: "Down"
|
||||
```
|
||||
|
||||
{% details "Some commonly used commands" %}
|
||||
|
||||
@ -124,20 +192,34 @@ The commands that can be sent to the TV depends on the model of your TV. To disp
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
**Example to send `Down` key command:**
|
||||
|
||||
```yaml
|
||||
service: remote.send_command
|
||||
target:
|
||||
entity_id: remote.bravia_tv
|
||||
data:
|
||||
command: "Down"
|
||||
```
|
||||
|
||||
## Buttons
|
||||
|
||||
The integration supports `button` platform and allows you to reboot the device or terminate all running applications.
|
||||
The {% term integration %} supports `button` {% term platform %} and allows you to reboot the device or terminate all running applications.
|
||||
|
||||
## For TVs older than 2013
|
||||
## Limitations and known issues
|
||||
|
||||
### TV does not generate new PIN
|
||||
|
||||
If you have previously set up your TV with any Home Assistant instances via PIN code, you must remove Home Assistant from your TV in order for your TV to generate a new PIN. On your TV, go to: **Settings** > **Network** > **Remote device settings** > **Deregister remote device**. Menu titles may differ slightly between models. If needed, refer to your specific model's [manual](https://www.sony.com/electronics/support/manuals) for additional guidance.
|
||||
|
||||
### Sometimes, the integration displays an error in the logs and does not respond to commands
|
||||
|
||||
Unfortunately, the system service application (WebApiCore) on the TV that provides Sony Bravia REST API does not work very well and has many problems. The service may begin to reboot spontaneously or freeze, especially when the TV has not been rebooted for a long time or a heavy application is running. Perhaps sometimes the process is killed by Android TV itself due to lack of memory. When the service is being rebooted (about 30 seconds), the API will be unavailable, and any interaction with the {% term integration %} may result in an error in the logs.
|
||||
|
||||
If you encounter this, you must completely reboot your TV. To do this, hold down the **Power** button on the remote control and select **Restart**. In addition, we recommend periodically completely restarting your TV. You can also create an {% term automation %} that will automatically restart the TV (for example, every night if the TV is turned off).
|
||||
|
||||
If this happens very often, you can try to reset **WebApiCore** service. On your TV, go to: **Settings** > **Apps** > **See all aps** > Find **WebApiCore** > Press **Clear data**.
|
||||
|
||||
### Integration shows 'Smart TV' instead of the name of the running application
|
||||
|
||||
See [Using with Google Cast](#using-with-google-cast) section for more details.
|
||||
|
||||
### Power consumption ~15 W when the TV in standby mode while integration is enabled
|
||||
|
||||
The Bravia TV is [local pulling integration](https://www.home-assistant.io/blog/2016/02/12/classifying-the-internet-of-things/#polling-the-local-device). Even if the TV is turned off, its status is constantly polled to determine the current state, so the TV's network interface remains enabled. This is normal behavior. If you are concerned about this, you can disable polling for updates in the integration **System options** menu, but the TV status will no longer update automatically and you will have to force the {% term entity %} update by calling `homeassistant.update_entity` {% term service %} manually.
|
||||
|
||||
Please note that this behavior can be caused not only by the integration, but also by some applications installed on the TV.
|
||||
|
||||
### For TVs older than 2013
|
||||
|
||||
Users of TVs older than 2013 can control their devices using [HDMI-CEC](/integrations/hdmi_cec/), [Broadlink](/integrations/broadlink/) or [Kodi](/integrations/kodi/) integrations.
|
||||
|
@ -4,7 +4,8 @@ description: Instructions on how to integrate calendars within Home Assistant.
|
||||
ha_release: 0.33
|
||||
ha_domain: calendar
|
||||
ha_quality_scale: internal
|
||||
ha_category: []
|
||||
ha_category:
|
||||
- Calendar
|
||||
ha_codeowners:
|
||||
- '@home-assistant/core'
|
||||
ha_integration_type: entity
|
||||
@ -16,13 +17,10 @@ dashboard and can be used with automations.
|
||||
|
||||
This page does not provide instructions on how to create calendar
|
||||
entities. Please see the ["Calendar" category](/integrations/#calendar) on the
|
||||
integrations page to find integration offering calendar entities.
|
||||
integrations page to find integrations offering calendar entities. For example, [Local Calendar](/integrations/local_calendar/) is a fully local integration to create calendars and events within your Home Assistant instance or other integrations work with other services providing calendar data.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
A calendar {% term entity %} has a {% term state %} and attributes representing the next event (only).
|
||||
A calendar {% term trigger %} is much more flexible, has fewer limitations, and is
|
||||
recommended for automations instead of using the entity state.
|
||||
|
||||
## Viewing and managing calendars
|
||||
|
||||
@ -43,6 +41,9 @@ event's start or end. Review the [Automating Home Assistant](/getting-started/au
|
||||
getting started guide on automations or the [Automation](/docs/automation/)
|
||||
documentation for full details.
|
||||
|
||||
Calendar {% term triggers %} are the best way to automate based on calendar events.
|
||||
A calendar {% term entity %} can also be used to automate based on its state, but these are limited and attributes only represent the next event.
|
||||
|
||||
{% my automations badge %}
|
||||
|
||||

|
||||
|
@ -21,9 +21,11 @@ ha_platforms:
|
||||
ha_integration_type: integration
|
||||
---
|
||||
|
||||
<p class='note warning'>
|
||||
Daikin has removed their local API in newer products. They offer a cloud API accessible only under NDA, which is incompatible with open source. This affects units fitted with the BRP069C4x wifi adapter. Units listed under Supported Hardware below continue to have access to local control. Additionally the older but commonly available BRP072A42 adapter can be fitted to most if not all newer units for access to local control.
|
||||
</p>
|
||||
<div class='note warning'>
|
||||
|
||||
Daikin has removed their local API in newer products. They offer a Onecta cloud API for controlling Daikin devices through the cloud, see the [Daikin Europe Developer Portal](https://developer.cloud.daikineurope.com) for more details. This affects units fitted with the BRP069C4x wifi adapter. Units listed under Supported Hardware below continue to have access to local control. Additionally the older but commonly available BRP072A42 adapter can be fitted to most if not all newer units for access to local control.
|
||||
|
||||
</div>
|
||||
|
||||
The **Daikin** {% term integration %} integrates Daikin air conditioning systems into Home Assistant.
|
||||
|
||||
|
@ -34,7 +34,7 @@ The `ecovacs` {% term integration %} is the main integration to integrate [Ecova
|
||||
|
||||
Additional note: There are some issues during the password encoding. Using some special characters (e.g., `-`) in your password does not work.
|
||||
|
||||
With `advanced_mode` enabled, users can use their self-hosted instance over the cloud servers. Self-hosting comes with some requirements and limitations. More information can be found in the [Bumper's documentation](https://bumper.readthedocs.io).
|
||||
With `advanced_mode` enabled, users can use their self-hosted instance over the cloud servers. Self-hosting comes with some requirements and limitations. See [Self-hosted configuration](#self-hosted-configuration) for additional details.
|
||||
|
||||
## Provided entities
|
||||
|
||||
@ -136,3 +136,16 @@ Alternatively, you can use the `ecovacs_error` event to watch for errors. This e
|
||||
```
|
||||
|
||||
Finally, if a vacuum becomes unavailable (usually due to being idle and off its charger long enough for it to completely power off,) the vacuum's `status` attribute will change to `offline` until it is turned back on.
|
||||
|
||||
## Self-hosted configuration
|
||||
|
||||
Depending on your setup of the self-hosted instance, you can connect to the server using the following settings:
|
||||
- `Username`: Enter the e-mail address configured in your instance. If authentication is disabled, you can enter any valid e-mail address.
|
||||
- `Password`: Enter the password configured in your instance. If authentication is disabled, you can enter any string (series of characters).
|
||||
- `REST URL`: http://`SELF_HOSTED_INSTANCE`:8007
|
||||
- `MQTT URL`: mqtts://`SELF_HOSTED_INSTANCE`:8883
|
||||
- `Verify MQTT SSL certificate`: disabled
|
||||
|
||||
Replace `SELF_HOSTED_INSTANCE` with either the IP address or the hostname of your instance.
|
||||
|
||||
The above configuration is based on the information from [Bumper's documentation](https://bumper.readthedocs.io).
|
||||
|
@ -126,7 +126,7 @@ automation:
|
||||
|
||||
### Service `fan.turn_on`
|
||||
|
||||
Turn fan device on. This is only supported if the fan device supports being turned off.
|
||||
Turn fan device on. This is only supported if the fan device supports being turned off. See a similar example under `fan.turn_off`.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ----------- |
|
||||
@ -151,7 +151,7 @@ automation:
|
||||
platform: time
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.set_speed
|
||||
- service: fan.turn_off
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
|
@ -328,7 +328,6 @@ mqtt:
|
||||
command_topic: "bedroom_fan/on/set"
|
||||
direction_state_topic: "bedroom_fan/direction/state"
|
||||
direction_command_topic: "bedroom_fan/direction/set"
|
||||
oscillation_command_topic: "bedroom_fan/oscillation/set"
|
||||
oscillation_state_topic: "bedroom_fan/oscillation/state"
|
||||
oscillation_command_topic: "bedroom_fan/oscillation/set"
|
||||
percentage_state_topic: "bedroom_fan/speed/percentage_state"
|
||||
|
@ -11,3 +11,5 @@ ha_category: []
|
||||
---
|
||||
|
||||
The file upload integration allows various features in the frontend to upload files.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
@ -40,7 +40,24 @@ You can also use supported BCP 47 tags like the below or the 2-2 digit format fo
|
||||
| es-es | es | es |
|
||||
| es-us | es | com |
|
||||
|
||||
## Service say
|
||||
|
||||
## Service speak
|
||||
|
||||
The `tts.speak` service 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.
|
||||
|
||||
For more options about `speak`, see the Speak section on the main [TTS](/integrations/tts/#service-speak) building block page.
|
||||
|
||||
In YAML, your action will look like this:
|
||||
```yaml
|
||||
service: 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?
|
||||
```
|
||||
|
||||
## Service say (legacy)
|
||||
|
||||
<div class='note'>
|
||||
|
||||
|
@ -80,7 +80,6 @@ One of the great features of Matter is the so-called _Multi Fabric_ feature: you
|
||||
|
||||
For devices where Home Assistant provides a native integration (with local API), Matter may not be the best option. Matter, being a universal standard, might not have the nitty-gritty features that come with a product-specific protocol. A good example is Philips Hue: the communication over Matter only provides the basic controls over lights, while the official [Hue integration](/integrations/hue) brings all Hue unique features like (dynamic) scenes, entertainment mode, etc.
|
||||
|
||||
|
||||
## Supported installation types
|
||||
|
||||
It is recommended to run the Matter add-on on Home Assistant OS. This is currently the only supported option. Other installation types are without support and at your own risk.
|
||||
@ -180,6 +179,23 @@ This guide describes how to add a new device. This will use the Bluetooth connec
|
||||
|
||||
<lite-youtube videoid="Fk0n0r0eKcE" videotitle="Add Matter device via Android app in Home Assistant"></lite-youtube>
|
||||
|
||||
### Troubleshooting the installation
|
||||
|
||||
Check these steps if you are experiencing issues when trying to add a Matter device using the Home Assistant Companion app on your Android phone.
|
||||
|
||||
#### Symptom
|
||||
|
||||
While trying to add the Matter device, I get an error stating that *Matter is currently unavailable*.
|
||||
|
||||
#### Remedy
|
||||
|
||||
This could mean that not all required Matter modules that are needed by the Home Assistant Companion App have been downloaded yet. Try the following steps:
|
||||
|
||||
1. Wait up to 24 hours for the Google Play services to download the necessary Matter modules.
|
||||
2. If this did not work, try reinstalling the Home Assistant Companion app.
|
||||
3. If this did not work, try installing the Google Home app. Technically this is not required, but it might trigger another installation attempt of the Matter modules.
|
||||
4. Refer to this [Troubleshooting Guide from Google](https://developers.home.google.com/matter/verify-services).
|
||||
|
||||
## Sharing a device from another platform with Home Assistant
|
||||
|
||||
Use one of these methods if your Matter device was added to Apple Home or Google Home and you want to control it from both Apple or Google Home and Home Assistant.
|
||||
|
@ -47,42 +47,41 @@ The following binary sensors are added for each Backup Gateway:
|
||||
The following sensors are added for each Backup Gateway aggregated across all Powerwalls:
|
||||
|
||||
- Powerwall Backup Reserve - Reserve energy for grid outages in %
|
||||
- Powerwall Battery Now - Usage in kW
|
||||
- Powerwall Battery Now - Power in kW (negative for charging)
|
||||
- Powerwall Charge - Percent charge remaining in %
|
||||
- Powerwall Generator Now - Usage in kW (if applicable)
|
||||
- Powerwall Load Now - Load usage in kW
|
||||
- Powerwall Solar Now - Solar usage in kW (if applicable)
|
||||
- Powerwall Site Now - Site usage in kW
|
||||
- Powerwall Generator Now - Power in kW (if applicable)
|
||||
- Powerwall Load Now - Power in kW
|
||||
- Powerwall Solar Now - Power in kW (if applicable)
|
||||
- Powerwall Site Now - Power in kW (negative for grid export)
|
||||
- Powerwall Backup Reserve - Percentage of battery which will be reserved for a grid outage
|
||||
- Frequency/ Average Current/ Average Voltage Now
|
||||
- Frequency/ Average Current/ Average Voltage Now - in Hertz, Amps and Volts
|
||||
|
||||
The following sensors show the direction of energy in aggregate:
|
||||
The following sensors measure lifetime energy flow:
|
||||
|
||||
- Powerwall Solar Export - Solar energy exported in kWh
|
||||
- Powerwall Solar Import - Solar energy imported in kWh
|
||||
- Powerwall Solar Import - Solar energy imported in kWh (generally near zero)
|
||||
- Powerwall Site Export - Site energy exported in kWh
|
||||
- Powerwall Site Import - Site energy imported in kWh
|
||||
- Powerwall Battery Export - Battery energy exported in kWh
|
||||
- Powerwall Battery Import - Battery energy imported in kWh
|
||||
- Powerwall Load Export - Load energy exported in kWh
|
||||
- Powerwall Load Export - Load energy exported in kWh (generally zero)
|
||||
- Powerwall Load Import - Load energy imported in kWh
|
||||
- Powerwall Generator Export - Generator energy exported in kWh
|
||||
- Powerwall Generator Export - Generator energy exported in kWh
|
||||
- Powerwall Generator Import - Generator energy imported in kWh
|
||||
|
||||
The following sensors are added for each Powerwall:
|
||||
- Powerwall Battery Capacity - Capacity in kWh
|
||||
- Powerwall Battery Remaining - Remaining capacity in kWh
|
||||
- Frequency/ Average Current/ Average Voltage Now
|
||||
- Powerwall Load Now - Load usage in kW
|
||||
A Powerwall battery device for each battery, connected to the Powerwall Gateway, with the following sensors:
|
||||
- Powerwall Battery Capacity - Energy in kWh
|
||||
- Powerwall Battery Remaining - Remaining energy in kWh
|
||||
- Frequency/ Average Current/ Average Voltage Now in Hertz, Amps and Volts
|
||||
- Powerwall Battery Power - Battery power in kW (negative for charging)
|
||||
- Powerwall Battery Export - Battery energy exported in kWh
|
||||
- Powerwall Battery Import - Battery energy imported in kWh
|
||||
- Powerwall Charge - Percent charge remaining in %
|
||||
- Powerwall Grid State - State of grid power
|
||||
- Powerwall Grid State - Battery grid compliance
|
||||
|
||||
|
||||
### Switch
|
||||
|
||||
The following switches are added for each Powerwall Backup Gateway:
|
||||
The following switch is added for the Powerwall Backup Gateway:
|
||||
|
||||
- Off-Grid operation - Take your Powerwall off-grid (simulate a grid outage)
|
||||
|
||||
|
@ -24,6 +24,10 @@ Some examples of its use include:
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
<div class="note">
|
||||
When adding the **Proximity** integration, you are prompted to define the **Tolerance distance**. The tolerance distance is used to calculate the direction of travel in meters (m) to filter out small GPS coordinate changes.
|
||||
</div>
|
||||
|
||||
## Sensors
|
||||
|
||||
The following sensor entities will be created.
|
||||
|
@ -10,19 +10,23 @@ ha_quality_scale: internal
|
||||
ha_integration_type: system
|
||||
---
|
||||
|
||||
The `recovery_mode` integration is an internally used integration by the
|
||||
The **Recovery mode** integration is an internal integration used by the
|
||||
Home Assistant Core.
|
||||
|
||||
You don't have to configure it in any way since it is automatically always
|
||||
You don't have to configure it since it is automatically always
|
||||
available when Home Assistant needs it.
|
||||
|
||||
If, during startup, Home Assistant has problems reading your configuration,
|
||||
it will still continue to start using bits and pieces from the configuration
|
||||
of the last time it did start.
|
||||
it will still continue to start using parts of the configuration
|
||||
from the last time Home Assistant did start.
|
||||
|
||||
When this happens, Home Assistant will start in "Recovery mode" using this
|
||||
integration. In this mode, nothing is loaded, but it does give you access to
|
||||
When this happens, Home Assistant will start in **Recovery mode** using this
|
||||
integration. In this mode, no user configured integrations are loaded, but it does give you access to
|
||||
the Home Assistant frontend, settings and add-ons.
|
||||
|
||||
This gives you the possibility to correct the issue and restart Home Assistant
|
||||
to re-try.
|
||||
|
||||
## Related topics
|
||||
|
||||
- [General troubleshooting](/docs/troubleshooting_general/)
|
@ -35,12 +35,23 @@ On the Reolink device, a user account with admin privileges is needed for the pr
|
||||
{% include integrations/option_flow.md %}
|
||||
{% configuration_basic %}
|
||||
Protocol:
|
||||
description: Switch between RTSP, RTMP or FLV streaming protocol.
|
||||
description: Switch between <abbr title="real-time streaming protocol">RTSP</abbr>, <abbr title="real-time messaging protocol">RTMP</abbr>, or <abbr title="flash video">FLV</abbr> streaming protocol. <abbr title="real-time streaming protocol">RTSP</abbr> supports 4K streams (h265 encoding) while <abbr title="real-time messaging protocol">RTMP</abbr> and <abbr title="flash video">FLV</abbr> do not. <abbr title="flash video">FLV</abbr> is the least demanding on the camera.
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
## Asterisk (*) next to entities listed in this documentation
|
||||
|
||||
If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#enabling-entities) first.
|
||||
|
||||
## Camera streams
|
||||
|
||||
This integration creates a few camera entities, one for each stream type with different resolutions: Clear, Fluent, Balanced, Snapshots Clear, and Snapshots Fluent.
|
||||
This integration creates a few camera entities, one for each stream type with different resolutions:
|
||||
|
||||
- Fluent (Low resolution)
|
||||
- Balanced* (Mid resolution)
|
||||
- Clear* (High resolution, resource intensive)
|
||||
- Snapshots Fluent* (Low resolution)
|
||||
- Snapshots Clear* (High resolution)
|
||||
|
||||
The Fluent stream camera entity is enabled by default; the other streams are disabled by default.
|
||||
The Snapshots stream provides a sequence of image snapshots giving very low latency at the cost of a very low frame rate; this can be used when the RTMP/RTSP/FLV video stream has too much lag.
|
||||
Dual lens cameras provide additional streams for the second lens.
|
||||
@ -65,10 +76,6 @@ Not all camera models generate ONVIF push events for all event types, some binar
|
||||
For list of Reolink products that support ONVIF see the [Reolink Support Site](https://support.reolink.com/hc/en-us/articles/900000617826).
|
||||
To ensure you have the best latency possible, refer to the [Reducing latency of motion events](#reducing-latency-of-motion-events) section.
|
||||
|
||||
## Asterisk (*) next to entities listed in this documentation
|
||||
|
||||
If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#enabling-entities) first.
|
||||
|
||||
## Number entities
|
||||
|
||||
Depending on the supported features of the camera, number entities are added for:
|
||||
@ -331,11 +338,13 @@ Then power up the camera while pointing it at the QR code. It takes about a minu
|
||||
- Setting a static IP address for Reolink cameras/NVRs in your router is advisable to prevent (temporal) connectivity issues when the IP address changes.
|
||||
- Do not set a static IP in the Reolink device itself, but leave the **Connection Type** on **DHCP** under **Settings** > **Network** > **Network Information** > **Set Up**. If you set it to **static** on the Reolink device itself, this is known to cause incorrect DHCP requests on the network. The incorrect DHCP request causes Home Assistant to use the wrong IP address for the camera, resulting in connection issues. The issue originates from the Reolink firmware, which keeps sending DCHP requests even when you set a static IP address in the Reolink device.
|
||||
- Reolink cameras can support a limited amount of simultaneous connections. Therefore using third-party software like Frigate, Blue Iris, or Scrypted, or using the ONVIF integration at the same time can cause the camera to drop connections. This results in short unavailabilities of the Reolink entities in Home Assistant. Especially when the connections are coming from the same device (IP) where Home Assistant is running, the Reolink cameras can get confused, dropping one connection in favor of the other originating from the same host IP. If you experience disconnections/unavailabilities of the entities, please first temporarily shut down the other connections (like Frigate) to diagnose if that is the problem. If that is indeed the problem, you could try moving the third-party software to a different host (IP address) since that is known to solve the problem most of the time. You could also try switching the protocol to FLV on Home Assistant and/or the third-party software, as that is known to be less resource-intensive on the camera.
|
||||
- If the Reolink entities go to unavailable for short periods, the camera may be overloaded with requests resulting in short connection drops. To resolve this, first, check if the integration is using `ONVIF push` instead of `ONVIF long polling` (resource intensive) or `Fast polling` (very resource intensive), see the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. Moreover, try switching to the <abbr title="flash video">FLV</abbr> streaming protocol which is the least resource-intensive for the camera, see the [options](#options) section.
|
||||
- If the integration and the browser can't connect to the camera even after you enable the HTTP/HTTPS ports, try to create a new user on the camera; that fixes the problem in some cases.
|
||||
|
||||
### Reducing latency of motion events
|
||||
|
||||
ONVIF push will result in slightly faster state changes of the binary motion/AI event sensors than ONVIF long polling.
|
||||
Moreover, ONVIF push is less demanding for the camera than ONVIF long polling or fast polling, resulting in potentially less connection issues.
|
||||
However, ONVIF push has some additional network configuration requirements:
|
||||
|
||||
- Reolink products can not push motion events to an HTTPS address (SSL).
|
||||
|
@ -60,8 +60,8 @@ Begins super chlorination, running for the specified period or 24 hours if none
|
||||
|
||||
Stops super chlorination.
|
||||
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ------------------------------------------------------------------------------------ |
|
||||
| Service data attribute | Optional | Description |
|
||||
| ---------------------- | -------- | ---------------------------------------------------------------------------------------- |
|
||||
| `config_entry` | no | Integration entry_id of the ScreenLogic instance you wish to stop super chlorination on. |
|
||||
|
||||
## Reference
|
||||
|
@ -122,11 +122,6 @@ sequence:
|
||||
type: list
|
||||
{% endconfiguration %}
|
||||
|
||||
### Video tutorial
|
||||
This video tutorial explains how scripts work, how to use fields in scripts, and how to use response variables in scripts.
|
||||
|
||||
<lite-youtube videoid="vD_xckjQxRk" videotitle="Mastering Scripts in Home Assistant: A Comprehensive Guide" posterquality="maxresdefault"></lite-youtube>
|
||||
|
||||
### Script modes
|
||||
|
||||
Mode | Description
|
||||
@ -140,10 +135,133 @@ Mode | Description
|
||||
<img src='/images/integrations/script/script_modes.jpg'>
|
||||
</p>
|
||||
|
||||
### Full configuration
|
||||
### Passing variables to scripts
|
||||
|
||||
As part of the service, variables can be passed along to a script so they become available within templates in that script.
|
||||
|
||||
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.
|
||||
|
||||
Using the variables in the script requires the use of templates:
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
script:
|
||||
notify_pushover:
|
||||
description: "Send a pushover notification"
|
||||
fields:
|
||||
title:
|
||||
description: "The title of the notification"
|
||||
example: "State change"
|
||||
message:
|
||||
description: "The message content"
|
||||
example: "The light is on!"
|
||||
sequence:
|
||||
- condition: state
|
||||
entity_id: switch.pushover_notifications
|
||||
state: "on"
|
||||
- service: notify.pushover
|
||||
data:
|
||||
title: "{{ title }}"
|
||||
message: "{{ message }}"
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
Aside from the automation editor UI, variables can be passed to scripts within the service data. This can be used either by calling the script directly or the generic `script.turn_on` service. The difference is described in [Waiting for Script to Complete](#waiting-for-script-to-complete). All service 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:
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: light.bedroom
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
service: script.notify_pushover
|
||||
data:
|
||||
title: "State change"
|
||||
message: "The light is on!"
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
This example shows using `script.turn_on` service:
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: light.bedroom
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
service: script.turn_on
|
||||
target:
|
||||
entity_id: script.notify_pushover
|
||||
data:
|
||||
variables:
|
||||
title: "State change"
|
||||
message: "The light is on!"
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
|
||||
|
||||
<div class='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 a service,
|
||||
- the `this` variable the value of which is a dictionary of the current script's state.
|
||||
|
||||
</div>
|
||||
|
||||
### Waiting for Script to Complete
|
||||
|
||||
When calling a script "directly" (e.g., `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` service 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.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/script/script_wait.jpg'>
|
||||
</p>
|
||||
|
||||
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 %}
|
||||
|
||||
```yaml
|
||||
script:
|
||||
script_1:
|
||||
sequence:
|
||||
- service: script.turn_on
|
||||
target:
|
||||
entity_id: script.script_2
|
||||
# Perform some other steps here while second script runs...
|
||||
# Now wait for called script to complete.
|
||||
- wait_template: "{{ is_state('script.script_2', 'off') }}"
|
||||
# Now do some other things...
|
||||
script_2:
|
||||
sequence:
|
||||
# Do some things at the same time as the first script...
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Full configuration
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
script:
|
||||
wakeup:
|
||||
@ -187,115 +305,11 @@ script:
|
||||
target:
|
||||
entity_id: "{{ turn_on_entity }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Passing variables to scripts
|
||||
|
||||
As part of the service, variables can be passed along to a script so they become available within templates in that script.
|
||||
## Video tutorial
|
||||
|
||||
There are two ways to achieve this. One way is using the generic `script.turn_on` service. To pass variables to the script with this service, call it with the desired variables:
|
||||
This video tutorial explains how scripts work, how to use fields in scripts, and how to use response variables in scripts.
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: light.bedroom
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
service: script.turn_on
|
||||
target:
|
||||
entity_id: script.notify_pushover
|
||||
data:
|
||||
variables:
|
||||
title: "State change"
|
||||
message: "The light is on!"
|
||||
```
|
||||
|
||||
The other way is calling the script as a service directly. In this case, all service data will be made available as variables. If we apply this approach on the script above, it would look like this:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: light.bedroom
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
service: script.notify_pushover
|
||||
data:
|
||||
title: "State change"
|
||||
message: "The light is on!"
|
||||
```
|
||||
|
||||
Using the variables in the script requires the use of templates:
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
script:
|
||||
notify_pushover:
|
||||
description: "Send a pushover notification"
|
||||
fields:
|
||||
title:
|
||||
description: "The title of the notification"
|
||||
example: "State change"
|
||||
message:
|
||||
description: "The message content"
|
||||
example: "The light is on!"
|
||||
sequence:
|
||||
- condition: state
|
||||
entity_id: switch.pushover_notifications
|
||||
state: "on"
|
||||
- service: notify.pushover
|
||||
data:
|
||||
title: "{{ title }}"
|
||||
message: "{{ message }}"
|
||||
```
|
||||
|
||||
<div class='note'>
|
||||
|
||||
Script variables that may be used by templates include those provided from the configuration, those that are passed when started from a service and the `this` variable whose value is a dictionary of the current script's state.
|
||||
|
||||
</div>
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Waiting for Script to Complete
|
||||
|
||||
When calling a script "directly" (e.g., `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` service 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.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/integrations/script/script_wait.jpg'>
|
||||
</p>
|
||||
|
||||
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 %}
|
||||
|
||||
```yaml
|
||||
script:
|
||||
script_1:
|
||||
sequence:
|
||||
- service: script.turn_on
|
||||
target:
|
||||
entity_id: script.script_2
|
||||
# Perform some other steps here while second script runs...
|
||||
# Now wait for called script to complete.
|
||||
- wait_template: "{{ is_state('script.script_2', 'off') }}"
|
||||
# Now do some other things...
|
||||
script_2:
|
||||
sequence:
|
||||
# Do some things at the same time as the first script...
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
<lite-youtube videoid="vD_xckjQxRk" videotitle="Mastering Scripts in Home Assistant: A Comprehensive Guide" posterquality="maxresdefault"></lite-youtube>
|
||||
|
@ -42,7 +42,7 @@ There is currently support for the following device types within Home Assistant:
|
||||
|
||||
## SimpliSafe Plans
|
||||
|
||||
SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). Currently, only the Standard and Fast Protect are known to work with this integration; if you find otherwise, please consider updating this documentation.
|
||||
SimpliSafe offers several [monitoring plans](https://support.simplisafe.com/articles/alarm-events-monitoring/what-are-the-service-plan-options/6344794a013ba90af0bce6a4). All plans (including the free plan) should work with this integration.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
|
@ -185,6 +185,8 @@ Re-plug the USB stick, reboot the device, run `lsusb` again.
|
||||
The resulting product id now should be different and the brand id should be the same.
|
||||
And `ls -l /dev/*USB*` should now report your device.
|
||||
|
||||
Note: if you have multiple USB devices, USB number order can change on boot. For this reason, it's preferable to use your device ID and look in `/dev/serial/by-id/*`. For example, `/dev/serial/by-id/usb-HUAWEI_MOBILE_HUAWEI_MOBILE-if00-port0`.
|
||||
|
||||
If the device is still not recognized, remove the parameter -X from the usb_modeswitch command and reboot again.
|
||||
|
||||
## More details:
|
||||
|
@ -122,7 +122,7 @@ See [supported engines](/integrations/recorder/#custom-database-engines) for whi
|
||||
|
||||
The SQL integration will connect to the Home Assistant Recorder database if "Database URL" has not been specified.
|
||||
|
||||
There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes.
|
||||
There is no explicit configuration required for attributes. The integration will set all columns returned by the query as attributes.
|
||||
|
||||
Note that in all cases only the first row returned will be used.
|
||||
|
||||
|
@ -119,6 +119,10 @@ $ python3
|
||||
If you want to add new chat IDs then you will need to disable the active configuration to actually see the result with the IDs, otherwise you may only get empty results array.
|
||||
</div>
|
||||
|
||||
|
||||
**Method 4:** You can also get the chat ID from the Home Assistant logs. If you have set up the bot already, you can send a message to your bot from an unauthorized ID and you will see an error entry in the log containing the ID.
|
||||
[](https://my.home-assistant.io/redirect/logs/?)
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable Telegram notifications in your installation, add the following to your `configuration.yaml` file:
|
||||
|
@ -55,15 +55,15 @@ Button, image, number, and select template entities are defined in your YAML con
|
||||
|
||||
_For old sensor/binary sensor configuration format, [see below](#legacy-binary-sensor-configuration-format)._
|
||||
|
||||
# UI configuration
|
||||
## UI configuration
|
||||
|
||||
Sensor template and binary sensor template can be configured using the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Select the **+ Add helper** button and then select the **{% my config_flow_start domain=page.ha_domain title=page.title %}** helper.
|
||||
|
||||
To be able to add **{% my helpers title="Helpers" %}** via the user interface, you should have `default_config:` in your `configuration.yaml`. It should already be there by default unless you removed it.
|
||||
|
||||
# YAML configuration
|
||||
## YAML configuration
|
||||
|
||||
## State-based template binary sensors, buttons, images, numbers, selects and sensors
|
||||
### State-based template binary sensors, buttons, images, numbers, selects and sensors
|
||||
|
||||
Template entities will by default update as soon as any of the referenced data in the template updates.
|
||||
|
||||
@ -86,7 +86,7 @@ template:
|
||||
{% endraw %}
|
||||
|
||||
|
||||
## Trigger-based template binary sensors, buttons, images, numbers, selects and sensors
|
||||
### Trigger-based template binary sensors, buttons, images, numbers, selects and sensors
|
||||
|
||||
If you want more control over when an entity updates, you can define a trigger. 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.
|
||||
|
||||
@ -405,16 +405,16 @@ template:
|
||||
|
||||
[trigger-doc]: /docs/automation/trigger
|
||||
|
||||
### Video tutorial
|
||||
#### 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).
|
||||
|
||||
<lite-youtube videoid="zrWqDjaRBf0" videotitle="How to create Action Template Sensors in Home Assistant" posterquality="maxresdefault"></lite-youtube>
|
||||
|
||||
## Template and action variables
|
||||
### Template and action variables
|
||||
|
||||
State-based and trigger-based template entities have the special template variable `this` available in their templates and actions. The `this` variable is the [state object](/docs/configuration/state_object) of the entity and aids [self-referencing](#self-referencing) of an entity's state and attribute in templates and actions. Trigger-based entities also provide [the trigger data](/docs/automation/templating/).
|
||||
|
||||
## Rate limiting updates
|
||||
### Rate limiting updates
|
||||
|
||||
When there are entities present in the template and no triggers are defined, the template will be re-rendered when one of the entities changes states. To avoid this taking up too many resources in Home Assistant, rate limiting will be automatically applied if too many states are observed.
|
||||
|
||||
@ -455,9 +455,9 @@ template:
|
||||
|
||||
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` service is used, no rate limit is applied.
|
||||
|
||||
## Considerations
|
||||
### Considerations
|
||||
|
||||
### Startup
|
||||
#### 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 %}.
|
||||
|
||||
|
@ -17,6 +17,8 @@ dashboard for tracking items and whether or not they have been completed.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
For example, [Local To-do](/integrations/local_todo/) is a fully local integration to create to-do lists and tasks within your Home Assistant instance, [Shopping list](/integrations/shopping_list) specifically for shopping that can be added to with Assist, or other integrations work with online services providing to-do list data.
|
||||
|
||||
## Viewing and managing to-do lists
|
||||
|
||||
Each to-do list is represented as its own entity in Home Assistant and can be
|
||||
|
@ -30,6 +30,10 @@ To use the integration you must be a premium tractive client.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
<div class="note">
|
||||
Due to Tractive API limitations, trackers (pets) that are shared from another account to your account are not visible in Home Assistant. You need to configure all Tractive accounts from which trackers (pets) come from with Home Assistant.
|
||||
</div>
|
||||
|
||||
## Integration entities
|
||||
|
||||
The Tractive integration adds one device tracker and several sensors and switches per registered pet:
|
||||
|
@ -18,6 +18,8 @@ Text-to-speech (TTS) enables Home Assistant to speak to you.
|
||||
|
||||
{% include integrations/building_block_integration.md %}
|
||||
|
||||
See all [TTS integrations](https://www.home-assistant.io/integrations/#text-to-speech) using this building block for ways to use it in your automations. If you are using the Home Assistant voice assistant, [Assist](https://www.home-assistant.io/voice_control/), Assist is using TTS when replying to you. Another way to use TTS is by using [TTS with Home Assistant Cloud](https://www.nabucasa.com/config/tts/).
|
||||
|
||||
## Services
|
||||
|
||||
### Service speak
|
||||
@ -141,3 +143,11 @@ The Google cast devices (Google Home, Chromecast, etc.) present the following pr
|
||||
- They do not work with URLs that contain hostnames established by local naming means. Let's say your Home Assistant instance is running on a machine made known locally as `ha`. All your machines on your local network are able to access it as `ha`. However, try as you may, your cast device won't download the media files from your `ha` machine. That's because your cast device ignores your local naming setup. In this example, the `say` service creates a URL like `http://ha/path/to/media.mp3` (or `https://...` if you are using SSL). If you are _not_ using SSL then setting an internal URL that contains the IP address of your server works around this issue. By using an IP address, the cast device does not have to resolve the hostname.
|
||||
|
||||
- If you are using SSL (e.g., `https://yourhost.example.org/...`) then you _must_ use the hostname in the certificate (e.g., `external_url: https://yourhost.example.org`). You cannot use an IP address since the certificate won't be valid for the IP address, and the cast device will refuse the connection.
|
||||
|
||||
### Related topics
|
||||
|
||||
- [List of integrations using the TTS integration](https://www.home-assistant.io/integrations/#text-to-speech)
|
||||
- [TTS with Home Assistant Cloud](https://www.nabucasa.com/config/tts/)
|
||||
- [Google Translate TTS](https://www.home-assistant.io/integrations/google_translate/)
|
||||
- [Microsoft TTS](https://www.home-assistant.io/integrations/microsoft/)
|
||||
- [Home Assistant Assist](https://www.home-assistant.io/voice_control/)
|
||||
|
@ -82,3 +82,12 @@ automation:
|
||||
| code | Lock was unlocked by exterior code |
|
||||
| auto | Lock was locked/unlocked automatically by Verisure rule |
|
||||
| remote | Lock was locked/unlocked automatically by Verisure App |
|
||||
|
||||
## Limitations and known issues
|
||||
|
||||
Some users have reported that this integration currently doesn't work in the following countries:
|
||||
|
||||
- France
|
||||
- Ireland
|
||||
- Italy
|
||||
- Sweden
|
@ -37,8 +37,8 @@ This {% term integration %} will expose the following sensors:
|
||||
- Irradiance
|
||||
- Lightning average distance
|
||||
- Lightning count
|
||||
- Precipitation
|
||||
- Precipitation amount
|
||||
- Precipitation (accumulated over the previous minute)
|
||||
- Precipitation intensity ([extrapolated](https://weatherflow.github.io/Tempest/api/derived-metric-formulas.html#rain-rate) from the accumulation over the previous minute)
|
||||
- Precipitation type
|
||||
- Temperature
|
||||
- UV index
|
||||
|
@ -60,6 +60,9 @@ _Oh! And don't forget Valentine's Day is coming up!_ 😘
|
||||
- [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui)
|
||||
- [Release 2024.2.1 - February 9](#release-202421---february-9)
|
||||
- [Release 2024.2.2 - February 16](#release-202422---february-16)
|
||||
- [Release 2024.2.3 - February 22](#release-202423---february-22)
|
||||
- [Release 2024.2.4 - February 25](#release-202424---february-25)
|
||||
- [Release 2024.2.5 - February 27](#release-202425---february-27)
|
||||
- [Need help? Join the community!](#need-help-join-the-community)
|
||||
- [Backward-incompatible changes](#backward-incompatible-changes)
|
||||
- [Farewell to the following](#farewell-to-the-following)
|
||||
@ -279,7 +282,7 @@ noteworthy changes this release:
|
||||
|
||||
- [@edenhaus] improved how we handle errors in our form fields. We no longer
|
||||
show the technical coding gibberish that often showed up in the past. Nice!
|
||||
- When you [change the type of a switch entity] to, for example, a garage door
|
||||
- When you [change the type of a switch entity] to, for example, a garage door
|
||||
entity, you will now have the option to invert its behavior.
|
||||
Thanks, [@emontnemery]!
|
||||
- The [Ecovacs] integration received lots of love from [@edenhaus] and now
|
||||
@ -367,7 +370,7 @@ We welcome the following new integrations in this release:
|
||||
- **[Tedee]**, added by [@zweckj]<br />
|
||||
Use your Tedee smart locks in Home Assistant.
|
||||
- **[Teslemetry]**, added by [@Bre77]<br />
|
||||
Pull in live telemetry data from your Tesla vehicle via the Tesla Fleet API.
|
||||
Pull in live telemetry data from your Tesla vehicle via the Tesla Fleet API.
|
||||
- **[TechnoVE]**, added by [@Moustachauve]<br />
|
||||
Control of TechnoVE Smart Charging Station using a local API.
|
||||
- **[Traccar server]**, added by [@ludeeus]<br />
|
||||
@ -610,6 +613,141 @@ The following integrations are now available via the Home Assistant UI:
|
||||
[@wilburCforce]: https://github.com/wilburCforce
|
||||
[@zxdavb]: https://github.com/zxdavb
|
||||
|
||||
## Release 2024.2.3 - February 22
|
||||
|
||||
- Fix reauth in Overkiz for config entries created prior to 2022.12 ([@iMicknl] - [#106251])
|
||||
- Handle deep standby and poweroffs of enigma2 devices gracefully ([@autinerd] - [#107462])
|
||||
- Add wake up timeout to Teslemetry ([@Bre77] - [#109037])
|
||||
- Fix set_temperature in Tessie climate platform ([@Bre77] - [#110445])
|
||||
- Fix uuid issue in Lutron ([@wilburCforce] - [#110524])
|
||||
- Update rokuecp to 0.19.1 ([@ctalkington] - [#110670])
|
||||
- Fix scene activation with climate entities with `None` attribute values ([@mib1185] - [#110684])
|
||||
- Remove matplotlib pinning due to Python 3.12 incompatibility ([@sbyx] - [#110706])
|
||||
- Bump roombapy to 1.6.12 ([@mib1185] - [#110762])
|
||||
- Ensure Tile timestamps are reported as UTC ([@bachya] - [#110773])
|
||||
- Detect reached API rate limit in Tankerkoenig ([@mib1185] - [#110432])
|
||||
- Bump aiotankerkoenig to 0.4.1 ([@jpbede] - [#110840])
|
||||
- Update govee-local-api library to 1.4.4 ([@Galorhallen] - [#110854])
|
||||
- Allow loading of more then 1 defined Apprise URL ([@caronc] - [#110868])
|
||||
- Reolink continue setup when internet blocked ([@starkillerOG] - [#110888])
|
||||
- Bump deluge-client to 1.10.0 ([@tkdrob] - [#110663])
|
||||
- Bump deluge-client to 1.10.2 ([@dsander] - [#110905])
|
||||
- Bump reolink-aio to 0.8.8 ([@starkillerOG] - [#110959])
|
||||
- Reset error state when Ecovacs bot is operational again ([@mib1185] - [#110962])
|
||||
- Bump motionblinds to 0.6.21 ([@starkillerOG] - [#110970])
|
||||
- Bump holidays to 0.43 ([@gjohansson-ST] - [#111039])
|
||||
- Fixes UniFi Protect light state check ([@AngellusMortis] - [#111058])
|
||||
- Bump pywebpush to 1.14.1 ([@thecode] - [#111082])
|
||||
- Bump aioairzone to v0.7.4 ([@Noltari] - [#111105])
|
||||
- Bump deebot-client to 5.2.2 ([@edenhaus] - [#111112])
|
||||
- Ignore cloudhook already removed in mobile app ([@joostlek] - [#111122])
|
||||
|
||||
[#106251]: https://github.com/home-assistant/core/pull/106251
|
||||
[#107462]: https://github.com/home-assistant/core/pull/107462
|
||||
[#109037]: https://github.com/home-assistant/core/pull/109037
|
||||
[#109883]: https://github.com/home-assistant/core/pull/109883
|
||||
[#110078]: https://github.com/home-assistant/core/pull/110078
|
||||
[#110432]: https://github.com/home-assistant/core/pull/110432
|
||||
[#110445]: https://github.com/home-assistant/core/pull/110445
|
||||
[#110524]: https://github.com/home-assistant/core/pull/110524
|
||||
[#110663]: https://github.com/home-assistant/core/pull/110663
|
||||
[#110670]: https://github.com/home-assistant/core/pull/110670
|
||||
[#110684]: https://github.com/home-assistant/core/pull/110684
|
||||
[#110706]: https://github.com/home-assistant/core/pull/110706
|
||||
[#110720]: https://github.com/home-assistant/core/pull/110720
|
||||
[#110762]: https://github.com/home-assistant/core/pull/110762
|
||||
[#110773]: https://github.com/home-assistant/core/pull/110773
|
||||
[#110840]: https://github.com/home-assistant/core/pull/110840
|
||||
[#110854]: https://github.com/home-assistant/core/pull/110854
|
||||
[#110868]: https://github.com/home-assistant/core/pull/110868
|
||||
[#110888]: https://github.com/home-assistant/core/pull/110888
|
||||
[#110905]: https://github.com/home-assistant/core/pull/110905
|
||||
[#110959]: https://github.com/home-assistant/core/pull/110959
|
||||
[#110962]: https://github.com/home-assistant/core/pull/110962
|
||||
[#110970]: https://github.com/home-assistant/core/pull/110970
|
||||
[#111035]: https://github.com/home-assistant/core/pull/111035
|
||||
[#111039]: https://github.com/home-assistant/core/pull/111039
|
||||
[#111058]: https://github.com/home-assistant/core/pull/111058
|
||||
[#111082]: https://github.com/home-assistant/core/pull/111082
|
||||
[#111105]: https://github.com/home-assistant/core/pull/111105
|
||||
[#111112]: https://github.com/home-assistant/core/pull/111112
|
||||
[#111122]: https://github.com/home-assistant/core/pull/111122
|
||||
[@AngellusMortis]: https://github.com/AngellusMortis
|
||||
[@Bre77]: https://github.com/Bre77
|
||||
[@Galorhallen]: https://github.com/Galorhallen
|
||||
[@Noltari]: https://github.com/Noltari
|
||||
[@autinerd]: https://github.com/autinerd
|
||||
[@bachya]: https://github.com/bachya
|
||||
[@caronc]: https://github.com/caronc
|
||||
[@ctalkington]: https://github.com/ctalkington
|
||||
[@dsander]: https://github.com/dsander
|
||||
[@edenhaus]: https://github.com/edenhaus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@iMicknl]: https://github.com/iMicknl
|
||||
[@joostlek]: https://github.com/joostlek
|
||||
[@jpbede]: https://github.com/jpbede
|
||||
[@mib1185]: https://github.com/mib1185
|
||||
[@sbyx]: https://github.com/sbyx
|
||||
[@starkillerOG]: https://github.com/starkillerOG
|
||||
[@thecode]: https://github.com/thecode
|
||||
[@tkdrob]: https://github.com/tkdrob
|
||||
[@wilburCforce]: https://github.com/wilburCforce
|
||||
|
||||
## Release 2024.2.4 - February 25
|
||||
|
||||
- Return group unit of measurement when device_class is None ([@PoppyPop] - [#110973]) ([group docs])
|
||||
- Bump roombapy to 1.6.13 ([@Orhideous] - [#111187]) ([roomba docs])
|
||||
- Bump orjson to 3.9.15 ([@bdraco] - [#111233])
|
||||
- Set Lutron switch to device name ([@joostlek] - [#111293]) ([lutron docs])
|
||||
- Bump opower to 0.3.0 ([@swartzd] - [#109248]) ([opower docs])
|
||||
- Bump opower to 0.3.1 ([@benhoff] - [#111307])
|
||||
- Fix another name missing in wyoming getLogger ([@llluis] - [#111390]) ([wyoming docs])
|
||||
- Update caldav to 1.3.9 ([@cdce8p] - [#111429]) ([caldav docs])
|
||||
- Update guppy3 to 3.1.4.post1 ([@cdce8p] - [#111430]) ([profiler docs])
|
||||
- Bump openwebifpy to 4.2.4 ([@autinerd] - [#110676]) ([enigma2 docs])
|
||||
|
||||
[@autinerd]: https://github.com/autinerd
|
||||
[enigma2 docs]: /integrations/enigma2/
|
||||
[#110676]: https://github.com/home-assistant/core/pull/110676
|
||||
[#109248]: https://github.com/home-assistant/core/pull/109248
|
||||
[#109883]: https://github.com/home-assistant/core/pull/109883
|
||||
[#110078]: https://github.com/home-assistant/core/pull/110078
|
||||
[#110720]: https://github.com/home-assistant/core/pull/110720
|
||||
[#110973]: https://github.com/home-assistant/core/pull/110973
|
||||
[#111133]: https://github.com/home-assistant/core/pull/111133
|
||||
[#111187]: https://github.com/home-assistant/core/pull/111187
|
||||
[#111233]: https://github.com/home-assistant/core/pull/111233
|
||||
[#111293]: https://github.com/home-assistant/core/pull/111293
|
||||
[#111307]: https://github.com/home-assistant/core/pull/111307
|
||||
[#111390]: https://github.com/home-assistant/core/pull/111390
|
||||
[#111429]: https://github.com/home-assistant/core/pull/111429
|
||||
[#111430]: https://github.com/home-assistant/core/pull/111430
|
||||
[@Orhideous]: https://github.com/Orhideous
|
||||
[@PoppyPop]: https://github.com/PoppyPop
|
||||
[@bdraco]: https://github.com/bdraco
|
||||
[@benhoff]: https://github.com/benhoff
|
||||
[@cdce8p]: https://github.com/cdce8p
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@joostlek]: https://github.com/joostlek
|
||||
[@llluis]: https://github.com/llluis
|
||||
[@swartzd]: https://github.com/swartzd
|
||||
[abode docs]: /integrations/abode/
|
||||
[caldav docs]: /integrations/caldav/
|
||||
[group docs]: /integrations/group/
|
||||
[lutron docs]: /integrations/lutron/
|
||||
[opower docs]: /integrations/opower/
|
||||
[profiler docs]: /integrations/profiler/
|
||||
[roomba docs]: /integrations/roomba/
|
||||
[wyoming docs]: /integrations/wyoming/
|
||||
|
||||
## Release 2024.2.5 - February 27
|
||||
|
||||
- Add title to reauthenticate integration issue ([@timmo001] - [#111275])
|
||||
|
||||
[#111275]: https://github.com/home-assistant/core/pull/111275
|
||||
[@timmo001]: https://github.com/timmo001
|
||||
|
||||
## Need help? Join the community!
|
||||
|
||||
Home Assistant has a great community of users who are all more than willing
|
||||
@ -1149,11 +1287,11 @@ The following integrations are also no longer available as of this release:
|
||||
([@reedy] - [#107005])
|
||||
- **Legrand Home+ Control** has been removed as their API shut down in December.
|
||||
Use [the Netatmo integration](/integrations/netatmo/) as an alternative to
|
||||
integrate your Legrand Home+ Control devices.
|
||||
integrate your Legrand Home+ Control devices.
|
||||
([@jpbede] - [#107587])
|
||||
- **Life360** has been removed. They are now actively blocking third-party
|
||||
access, including Home Assistant. The [Home Assistant Companion app](https://companion.home-assistant.io/)
|
||||
is a good and (above all) privacy-friendly alternative.
|
||||
is a good and (above all) privacy-friendly alternative.
|
||||
([@pnbruckner] - [#107805])
|
||||
|
||||
[@jpbede]: https://github.com/jpbede
|
||||
|
145
source/_posts/2024-02-21-voice-chapter-6.markdown
Normal file
@ -0,0 +1,145 @@
|
||||
---
|
||||
layout: post
|
||||
title: "On device wake word on ESP32-S3 is here - Voice: Chapter 6"
|
||||
description: "This chapter brings on-device wake word detection (microWakeWord), customization for sentence triggers, additional intents for controlling devices, and better error messages."
|
||||
date: 2024-02-21 00:00:00
|
||||
date_formatted: "February 21, 2024"
|
||||
author: Michael Hansen
|
||||
comments: true
|
||||
categories: Assist
|
||||
og_image: /images/blog/2024-02-21-voice-chapter-6/social.jpg
|
||||
---
|
||||
|
||||
**TL;DR:** We have added on-device wake word detection (microWakeWord)! It's faster and more scalable than processing the wake word in Home Assistant. We will keep supporting wake word processing in Home Assistant. Also new is more customization for sentence triggers, additional intents for controlling more devices, and better error messages and debugging tools.
|
||||
|
||||
<p class='img'>
|
||||
<lite-youtube videoid="NQIv3nsu7dE" videotitle="Voice - Chapter 6 Livestream"></lite-youtube>
|
||||
Watch the full Voice chapter 6 livestream
|
||||
</p>
|
||||
|
||||
2023's [Year of the Voice] built a solid foundation for letting users control Home Assistant by speaking in their own language.
|
||||
|
||||
We continue with improvements to [Assist], including:
|
||||
|
||||
- More customization options for [sentence triggers]
|
||||
- Better error messages and [debugging tools]
|
||||
- Additional [intents] for controlling valves, vacuums, and media players
|
||||
|
||||
Oh, and "one more thing": **on-device, open source wake word detection in ESPHome!** 🥳🥳🥳
|
||||
|
||||
Check out this video of the new [microWakeWord] system running on an [ESP32-S3-BOX-3] alongside one doing wake word detection inside Home Assistant:
|
||||
|
||||
<p class='img'>
|
||||
<lite-youtube videoid="oSKBWtBJyDE" videotitle="On-device wake word is here! Demonstrating microWakeWord on the ESP32-S3-BOX-3 in Home Assistant."></lite-youtube>
|
||||
On-device vs. streaming wake word
|
||||
</p>
|
||||
|
||||
<!--more-->
|
||||
|
||||
## microWakeWord
|
||||
|
||||
Thanks to the incredible [microWakeWord] created by [Kevin Ahrendt], ESPHome can now perform wake word detection on devices like the [ESP32-S3-BOX-3].
|
||||
You can [install it on your S3-BOX-3 today][s3-box-tutorial] to try it out.
|
||||
|
||||
Back in [Chapter 4], we added wake word detection using [openWakeWord]. Unfortunately, openWakeWord was too large to run on low power devices like S3-BOX-3.
|
||||
So we chose to run wake word detection inside Home Assistant instead.
|
||||
|
||||
<p><img src='/images/blog/2024-02-21-voice-chapter-6/challenge.png' class='no-shadow' /></p>
|
||||
|
||||
Doing wake word detection in HA allows tiny devices like the [M5 ATOM Echo Development Kit][m5-tutorial] to simply stream audio and let all of the processing happen elsewhere. This is great, as it allows low-powered devices using a simple ESP32 chip to be transformed into a voice assistant even if they do not pack the necessary power to detect wake words.
|
||||
The downside is that adding more voice assistants requires more CPU usage in HA as well as more network traffic.
|
||||
|
||||
Enter microWakeWord. After listening to an interview with Paulus Schoutsen (founder of Home Assistant) on the [Self Hosted](https://selfhosted.show/) podcast, Kevin Ahrendt created a model based on [Google's Inception neural network](https://towardsdatascience.com/a-simple-guide-to-the-versions-of-the-inception-network-7fc52b863202). As an existing contributor to [ESPHome], Kevin was able to get this new model running on the ESP32-S3 chip inside the S3-BOX-3! _(It also works on the, now discontinued, S3-BOX and S3-BOX-Lite)_
|
||||
|
||||
Kevin has trained [three models](https://github.com/esphome/micro-wake-word-models/tree/main/models) for the launch of microWakeWord:
|
||||
|
||||
* "okay nabu"
|
||||
* "hey jarvis"
|
||||
* "alexa"
|
||||
|
||||
You can try these out yourself now by following the [ESP32-S3-BOX tutorial][s3-box-tutorial]. Changing the default "okay nabu" wake word will require adjusting your [ESPHome configuration](https://beta.esphome.io/components/micro_wake_word.html) and recompiling the firmware, which may take a long time and requires a machine with more than 2GB of RAM.
|
||||
|
||||
We're grateful to Kevin for developing microWakeWord, and making it a part of the open home!
|
||||
|
||||
## Sentence trigger responses
|
||||
|
||||
Adding custom sentences to Assist is as easy as adding a [sentence trigger][sentence triggers] to an automation. This allows you to trigger any action in Home Assistant with whatever sentences you want.
|
||||
|
||||
Now with the new [conversation response] action in HA 2024.2, you can also customize the response spoken or printed back to you. Using [templating](/docs/automation/templating/#sentence), your response can refer to the current state of your home.
|
||||
|
||||
<p><img src='/images/blog/2024-02-21-voice-chapter-6/assist-custom-response-editor.png' class='no-shadow' /></p>
|
||||
|
||||
You can also refer to [wildcards](/docs/automation/trigger/#sentence-wildcards) in your sentence trigger. For example, the sentence trigger:
|
||||
|
||||
```
|
||||
play {album} by {artist}
|
||||
```
|
||||
|
||||
could have the response:
|
||||
|
||||
{% raw %}
|
||||
```
|
||||
Playing {{ trigger.slots.album }} by {{ trigger.slots.artist }}
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
in addition to calling a media service.
|
||||
|
||||
You can experiment now with sentence triggers, and custom conversation responses in our automation editor by clicking here:
|
||||
[](https://my.home-assistant.io/redirect/automations/)
|
||||
|
||||
## Improved errors and debugging
|
||||
|
||||
Assist users know the phrase "Sorry, I couldn't understand that" all too well. This generic error message was given for a variety of reasons, such as:
|
||||
|
||||
* The sentence didn't match any known [intent](https://github.com/home-assistant/intents)
|
||||
* The device/area names didn't match
|
||||
* There weren't any devices of a specific type in an area (lights, windows, etc.)
|
||||
|
||||
Starting in HA 2024.2, Assist provides different error messages for each of these cases.
|
||||
|
||||
<img class="no-shadow" src='/images/blog/2024-02/assist-errors.png' alt='Screenshot showing the new errors Assist will return in case the intention is understood, but something else is missing.'>
|
||||
|
||||
Now if you encounter errors, you will know where to start looking! The first thing to check is that your device is [exposed to Assist](/voice_control/voice_remote_expose_devices/). Some types of devices, such as lights, are exposed by default. Other, like locks, are not and must be manually exposed.
|
||||
|
||||
Once your devices are exposed, make sure you've added an appropriate [alias](/voice_control/aliases) so Assist will know exactly how you'll be referring to them. Devices and areas can have multiple aliases, even in multiple languages, so everyone's preference can be accommodated.
|
||||
|
||||
If you are still having problems, the [Assist debug tool][debugging tools] has also been improved. Using the tool, you see how Assist is interpreting a sentence, including any missing pieces.
|
||||
|
||||
<p><img src='/images/blog/2024-02-21-voice-chapter-6/debug_tool.png' class='no-shadow' /></p>
|
||||
|
||||
[](https://my.home-assistant.io/redirect/developer_assist/)
|
||||
|
||||
Our community [language leaders](https://developers.home-assistant.io/docs/voice/language-leaders) are hard at work translating sentences for Assist. If you have suggestions for new sentences to be added, please create an issue on [the intents repository](https://github.com/home-assistant/intents) or drop us a line at voice@nabucasa.com
|
||||
|
||||
|
||||
## Thank you
|
||||
|
||||
Thank you to the Home Assistant community for subscribing to [Home Assistant Cloud][nabucasa] to support voice and development of Home Assistant, ESPHome and other projects in general.
|
||||
|
||||
Thanks to our language leaders for extending the sentence support to all the various languages.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/blog/2024-02-21-voice-chapter-6/ha-support.png' alt="Thank you for supporting the Home Assistant project">
|
||||
</p>
|
||||
|
||||
[Year of the Voice]: /blog/2022/12/20/year-of-voice/
|
||||
[Assist]: /voice_control/
|
||||
[exposed]: /voice_control/voice_remote_expose_devices/
|
||||
[alias]: /voice_control/aliases
|
||||
[wyoming]: https://github.com/rhasspy/wyoming
|
||||
[openWakeWord]: https://github.com/dscripka/openWakeWord
|
||||
[Piper]: https://github.com/rhasspy/piper/
|
||||
[wyoming-satellite]: https://github.com/rhasspy/wyoming-satellite
|
||||
[s3-box-tutorial]: /voice_control/s3_box_voice_assistant/
|
||||
[ESP32-S3-BOX-3]: https://www.espressif.com/en/news/ESP32-S3-BOX-3
|
||||
[ESPHome]: https://esphome.io
|
||||
[nabucasa]: https://www.nabucasa.com
|
||||
[sentence triggers]: /docs/automation/trigger/#sentence-trigger
|
||||
[conversation response]: /docs/scripts/#respond-to-a-conversation
|
||||
[microWakeWord]: https://github.com/kahrendt/microWakeWord
|
||||
[Kevin Ahrendt]: https://www.kevinahrendt.com/
|
||||
[debugging tools]: /voice_control/troubleshooting/#test-a-sentence-per-language-without-voice-without-executing-commands
|
||||
[intents]: https://developers.home-assistant.io/docs/intent_builtin
|
||||
[Chapter 4]: /blog/2023/10/20/year-of-the-voice-chapter-4/
|
||||
[m5-tutorial]: /voice_control/thirteen-usd-voice-remote/
|
@ -0,0 +1,19 @@
|
||||
---
|
||||
layout: post
|
||||
title: "What about Grace? Tune in to our special livestream next week!"
|
||||
description: "Why is Grace important to us? Well, we have a habit of naming our projects after influential women in tech. And we have been working on a little something special and can’t wait to show you!"
|
||||
date: 2024-02-22 00:00:01
|
||||
date_formatted: "February 22, 2024"
|
||||
author: Madelena Mak
|
||||
comments: true
|
||||
categories: Announcements
|
||||
og_image: /images/blog/2024-02-grace-chapter-1/banner.png
|
||||
---
|
||||
|
||||
Who is Grace? Grace Hopper was a computer scientist, mathematician, and US Navy admiral who had made significant contributions to the field of computer programming and technology, from her pioneering work on and contributions to the Harvard Mark I computer, COBOL, and UNIVAC I.
|
||||
|
||||
<lite-youtube videoid="XyBy0ckkiDU" videotitle="What about Grace? - Chapter 1"></lite-youtube>
|
||||
|
||||
Why is she important to us? Well, we have a habit of naming some of our projects after influential women in tech. And we have been working on a little something nice for the past year that we can’t wait to show you!
|
||||
|
||||
For those who are interested in making your smart home easier to control and monitor for everyone in your home, tune in next week on the leap year day, February 29, 2024, at 20:00 GMT / 21:00 CET / 3:00 PM ET / 12:00 PM PT, for a [special livestream](https://www.youtube.com/live/XyBy0ckkiDU). We will walk you through the past, present, and future of this special project.
|
@ -0,0 +1,49 @@
|
||||
---
|
||||
layout: post
|
||||
title: "Raspberry Pi 5 support and more in Home Assistant OS release 12 & Supervisor update"
|
||||
description: "HAOS 12 adds support for Raspberry Pi 5 and ODROID-M1S boards, with the Linux kernel updated to 6.6. Additionally, backups have become faster, and add-ons can now signal when they should not be auto-updated."
|
||||
date: 2024-02-26 00:00:00
|
||||
date_formatted: "February 26, 2024"
|
||||
author: Stefan Agner
|
||||
comments: true
|
||||
categories: HAOS
|
||||
og_image: /images/blog/2024-02-haos12/haos12.png
|
||||
---
|
||||
|
||||
**TL;DR:** Home Assistant OS 12 adds support for Raspberry Pi 5 and ODROID-M1S boards, with the Linux kernel updated to 6.6. Additionally, backups have become faster, and add-ons can now signal when they should not be auto-updated.
|
||||
|
||||
<p><img src='/images/blog/2024-02-haos12/haos12.png' class='no-shadow' /></p>
|
||||
|
||||
## Raspberry Pi 5
|
||||
|
||||
With the release of Home Assistant OS 12, we officially announce Raspberry Pi 5 support! Many Home Assistant OS users have extensively tested the preview releases during the last few months, and after some initial hiccups with the Raspberry Pi 5-specific update mechanism, things are stable and solid today. As a third of all Home Assistant users currently use a Raspberry Pi board as their dedicated Home Assistant system, we are sure this support will make many users very happy!
|
||||
|
||||
Compared to other Raspberry Pi boards, HAOS does not use U-Boot as an extra bootloader. Instead, the Raspberry Pi's built-in “tryboot” functionality is used to automatically fall back to a previous release in case of an update failure. This new update mechanism integration required us to have a longer testing phase.
|
||||
|
||||
In our testing, the higher CPU clock of the Raspberry Pi 5 (up to 2.4GHz) makes Home Assistant feel noticeably snappier compared to previous Raspberry Pi boards. Additionally, a Raspberry Pi HAT that provides NVMe SSD support allows you to extend your Raspberry Pi with fast, reliable, and cost-effective storage. We do recommend using an SD card as the boot medium and using the [data disk feature](/common-tasks/os/#using-external-data-disk) to move most of the Home Assistant installation onto the NVMe. This is easy to set up and guarantees a reliable boot.
|
||||
|
||||
## ODROID-M1S
|
||||
|
||||
The Raspberry Pi 5 is not the only new board that is supported with this release. We are happy to announce that the family of supported ODROID devices from the Korean manufacturer Hardkernel has become bigger thanks to a community contribution from Tim Lunn (darkxst), who implemented board support for the ODROID-M1S. The ODROID-M1S is the newest single-board computer from Hardkernel, which is similar to the already supported ODROID-M1, which was added in Home Assistant OS 10. This new board offers a slimmer form factor, 4 or 8 GB of RAM on board, and an embedded 64 GB eMMC storage. Home Assistant OS can be booted either from an SD card or the system can be flashed to the eMMC card using the procedure described in the [documentation](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1s.md). While the board also has an NVMe slot for a solid-state drive, it is not supported as a boot device. However, just like on the Raspberry Pi 5, it can still be used as the data disk.
|
||||
|
||||
Just like its larger brother, the ODROID-M1S is powered by a quad-core ARM Cortex-A55, but while ODROID-M1 has (very slightly) beefier Rockchip RK3568 SoC, this board sports the RK3566. Some of our more curious readers may notice this is the same processor that is found on our Home Assistant Green! While there are some similarities between those two boards, Home Assistant Green can offer you a seamless out-of-box experience, allowing you to set up your smart home in a matter of minutes. But Home Assistant is also about the freedom of choice, so if you are looking for a more DIY approach, ODROID-M1S might be the right choice for you.
|
||||
|
||||
## Linux 6.6
|
||||
|
||||
Home Assistant OS 12 now comes with Linux kernel 6.6! This is good news for those who want to run their Home Assistant on newer hardware that lacked support in the previous 6.1 kernel. This version update also allows us to extend the list of supported Wi-Fi and Bluetooth cards, including ones you may find in new mini-PCs, a popular platform for Home Assistant OS. Those who run their installations on a Raspberry Pi (including the CM4 in Home Assistant Yellow) may notice their kernel version still starts with 6.1. This is because we are not using the upstream kernel but the downstream one maintained by the Raspberry Pi developers. But this kernel was also updated to the latest stable version, which we hope will resolve some sporadic bugs.
|
||||
|
||||
Home Assistant OS sticks to the LTS (long-term support) kernels, which are usually released once per year - just like Buildroot, the base system we use for Home Assistant OS. This time, we are slightly ahead of schedule, because usually the kernel update is done alongside the bump of the Buildroot version. But don't worry, the Buildroot update is coming soon as well, and we expect to include its update in one of the next minor Home Assistant OS releases coming in the following weeks. This will conclude this year's spring cleaning of Home Assistant OS, and we will be ready to focus on new features and improvements again!
|
||||
|
||||
## Faster Backups
|
||||
|
||||
Home Assistant Supervisor and Core’s built-in backup functionality has become much faster. Thanks to contributions from bdraco, the backup feature gained faster compression speeds due to a library named isal, which provides optimized low-level functions for compression and decompression. More importantly, the backup feature now avoids intermediate copies, making it faster on slower storage media especially. If you used uncompressed backups before because the backup used to be too slow for you, now is the time to give compressed backups a try again! 😀
|
||||
|
||||
<p><img src='/images/blog/2024-02-haos12/supervisor-backup-speed-improvements.png' class='no-shadow' alt='Comparison of the speed of a 100MB backup on a Home Assistant Yellow, between Supervisor 2023.12.1 and 2024.02.0.' /></p>
|
||||
|
||||
Home Assistant OS users’ backup functionality is part of Supervisor. You’ll have received the improvements incrementally over the releases of the past few weeks. At the time of writing, your installation should run on Home Assistant Supervisor 2024.02.0 with all these improvements built in.
|
||||
|
||||
## Safer add-on auto-updates
|
||||
|
||||
Last, but not least, the Supervisor features an auto-update flag for add-ons. However, depending on the nature of an update to the add-on, the new version might need user intervention or have breaking changes. Add-on developers now have the option to prevent auto-updates to such versions. Users of the auto-update feature might see an update notification despite auto-updates being enabled. This means that the author of the add-on decided that this particular update should not be auto-updated and instead be manually approved by the user.
|
||||
|
||||
Note: We generally don’t recommend auto-updates for add-ons, as even safe updates might interfere with regular operation. For example, during the automatic update of an add-on like Z-Wave JS, your Z-Wave devices would unexpectedly become unavailable for a short time. The better approach for such add-ons is to plan some time to maintain your Home Assistant system every once in a while and update your add-ons in a batch.
|
266
source/_posts/2024-03-04-dashboard-chapter-1.markdown
Normal file
@ -0,0 +1,266 @@
|
||||
---
|
||||
layout: post
|
||||
title: "A Home-Approved Dashboard chapter 1: Drag-and-drop, Sections view, and a new grid system design!"
|
||||
description: "Wow! At long last!! The stars have aligned, and our experimental drag-and-drop feature for dashboards is finally here!"
|
||||
date: 2024-03-04 00:00:01
|
||||
date_formatted: "March 4, 2024"
|
||||
author: Madelena Mak
|
||||
comments: true
|
||||
categories: Dashboard
|
||||
og_image: /images/blog/2024-03-dashboard-chapter-1/banner.png
|
||||
---
|
||||
|
||||
Wow! At long last!! The stars have aligned, and our experimental drag-and-drop feature for dashboards is finally here! 🥲
|
||||
|
||||
Home Assistant strives to be the best smart home platform, and a smart home allows its residents to automate, control, observe, and anticipate the comfort, security, and various conveniences of their home. Besides voice assistants, dashboards are also a great way to help users do just that!
|
||||
|
||||
Therefore, we have been working hard to make customization and organization of dashboards as easy and intuitive as possible, and to create a default dashboard that will be more useful, user-friendly, and relevant right out of the box. [Matthias](https://github.com/matthiasdebaat) and [I](https://github.com/madelena) teamed up in April last year to tackle this problem together, and we called this series of improvements over our current dashboard “Project Grace”, named after the influential and brilliant late [Admiral Grace Hopper](https://www.nationalww2museum.org/war/articles/grace-hopper-woman-computer).
|
||||
|
||||
After months of user research and ideation to ensure that our design is [“home-approved”](https://building.open-home.io/open-home-approval-factor/#home-approval-factor) - to be easy and intuitive to use for you, your family, your guests, your roommates, and more - we are happy to share the first fruit of our success in the upcoming release 2024.3, with the help of [Paul](https://github.com/piitaya) and of course the wonderful frontend team. We hope that these features will help you take the dream dashboard for you and your home from idea to reality much faster and much more easily.
|
||||
|
||||
For those of you who are curious about the features and the design thinking behind them, read on and check out our [special livestream](https://www.youtube.com/watch?v=XyBy0ckkiDU) last week. You can also try out our updated [demo](https://demo.home-assistant.io/#/lovelace/home) and get involved by [joining the Home Assistant User Testing Group](http://home-assistant.io/join-research)! And last of all, thank you for supporting our efforts by [subscribing to Home Assistant Cloud](https://www.nabucasa.com)!
|
||||
|
||||
<p class='img'>
|
||||
<lite-youtube videoid="XyBy0ckkiDU" videotitle="A Home-Approved Dashboard - Chapter 1: What about Grace?"></lite-youtube>
|
||||
</p>
|
||||
|
||||
Enjoy!
|
||||
|
||||
~ Madelena 🥳
|
||||
|
||||
<!--more-->
|
||||
|
||||
## What is Project Grace?
|
||||
|
||||
Grace was the codename we used for the series of improvements to be built on top of [Lovelace], the framework for our dashboards. We aim to preserve the strengths of Lovelace, such as its flexibility and extensibility, and to mitigate its weaknesses, such as its steep learning curve, its lack of scalability, as well as the poor responsiveness of its layouts.
|
||||
|
||||
## The three-layout problem
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/blog/2024-03-dashboard-chapter-1/layout-types.png' alt='The three basic view layouts: Panel, Sidebar, and Masonry'>
|
||||
The three basic view layouts: Panel, Sidebar, and Masonry
|
||||
</p>
|
||||
|
||||
Our dashboard came with 3 default [view layout types](https://www.home-assistant.io/dashboards/views/#type) by default: Panel, which is simply one card covering the entire view; Sidebar, which is a two-column layout for cards; and [Masonry], which is the most robust of them all.
|
||||
|
||||
While it is excellent at creating a tightly-packed screen space-saving dashboard, Masonry lays out cards in a logic that may not be immediately clear and predictable to many users, which leads to a frustrating user experience to create and customize the layout of the cards. And as the layout logic depends on the height of each card, the varying heights of the cards available for our dashboards become a blessing and a curse: Even a difference in height of 1 pixel would mean a card one would guess to be displayed on the leftmost column getting shifted all the way to the right.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/masonry.png' alt='Image showing how masonry arranges cards based on size.'>
|
||||
Masonry arranges cards based on size.
|
||||
</p>
|
||||
|
||||
What’s more, unlike most other smart home apps, Home Assistant prides itself on Choice. In terms of dashboard view layouts, Choice means that dashboards should be able to be displayed on any screens that are the most convenient to our users - whether it’s a phone, a tablet, a large monitor, or other display devices. While the Masonry layout is great at making neat walls of cards, as its name also implies, it is a wall of cards which does not care whether the bricks are laid, thus the muscle memory of where users remember the cards will be lost every time the dashboard is displayed on another screen.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/blog/2024-03-dashboard-chapter-1/layout-masonry-problem.png' alt='Masonry does not care about where exactly cards are placed when the screen size changes.'>
|
||||
Masonry does not care about where exactly cards are placed when the screen size changes.
|
||||
</p>
|
||||
|
||||
For the past few years, we tried to create a more intuitive solution to rearrange the cards laid out by Masonry but ultimately the solutions did not work well for multiple screen sizes. Meanwhile, our users come up with solutions of their own, with many avoiding our default view layouts so that they can create a more predictable and memorable dashboard. As it turns out, “drag and drop” is not just an engineering problem; it is also a design problem.
|
||||
|
||||
To solve these problems with our layout, we realized that the Masonry layout, compatibility with multiple screen sizes, and easy “drag and drop” rearrangement of cards cannot co-exist. Over the past year, we ideated and identified a few solutions, namely:
|
||||
|
||||
1. [a new Sections view layout](#the-new-sections-view)
|
||||
2. [a design grid system](#the-grid-system), and
|
||||
3. [a “Z-Grid” auto-rearranging pattern](#drag-and-drop-rearrangement-of-cards-and-sections).
|
||||
|
||||
Let's dive in each solution and learn how they work together to make your dashboards easier to customize and use!
|
||||
|
||||
## The new Sections view
|
||||
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-case-studies.png" alt="Case studies of our users' dashboards"/>
|
||||
Case studies of our users' dashboards
|
||||
</p>
|
||||
|
||||
Throughout this project, we have looked at dozens of different dashboards created by you and posted on our discussion boards. One thing we notice is that our more advanced users are all naturally drawn to creating “sections”, groups of different cards delineated by a group title, manually with [grids](https://www.home-assistant.io/dashboards/grid/) and [markdown](https://www.home-assistant.io/dashboards/markdown/) cards.
|
||||
|
||||
Home Assistant dashboards are robust and packed with information, and our users often place dozens of cards for all sorts of buttons, switches, graphs, indicators, and more. By grouping cards into “sections”, our users can reduce the number of items they need to scan through when they are looking for a certain card, as they will be able to look for the relevant group title first and then reduce the scope to scan that particular group for the information. And by packing cards in a section into a grid card, the relative positions of the cards within a section are affected by changes in screen sizes, and so the spatial memory of the cards are retained, leading to a faster and less cumbersome experience.
|
||||
|
||||
<p class='img'>
|
||||
<img width="66%" src="/images/blog/2024-03-dashboard-chapter-1/sections-section-example.png" alt="Example of a dashboard section"/>
|
||||
Example of a dashboard section
|
||||
</p>
|
||||
|
||||
For our new Sections view, we are making these sections as the base unit of the view and we are streamlining its creation and editing procedures. Users will not need to fiddle around with grid cards and markdown cards to assemble a section manually, and instead a section now comes with all those amenities and much more.
|
||||
|
||||
### Getting started with Sections
|
||||
|
||||
<div class='note warning'>
|
||||
The new Sections view is experimental! Please do not build your daily dashboard on top of it yet!
|
||||
</div>
|
||||
|
||||
<p class='img'>
|
||||
<img width="66%" src="/images/blog/2024-03-dashboard-chapter-1/sections-create-new-view.png" alt="The Create New View configuration screen"/>
|
||||
The Create New View configuration screen
|
||||
</p>
|
||||
|
||||
To get started with the new Sections view, create a new view on your dashboard and choose **Sections (experimental)** as the view type. We currently do not have the option to migrate your current dashboard over yet.
|
||||
|
||||
<div class='note info'>
|
||||
If you are using the default dashboard, please read about how to <a href="/dashboards/#get-started-with-your-own-dashboard">create a new dashboard</a>.
|
||||
</div>
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-blank-sections-view.png" alt="A new dashboard view laid out in Sections"/>
|
||||
A new dashboard view laid out in Sections
|
||||
</p>
|
||||
|
||||
You will be greeted by a clean new dashboard view, with one section already created for you.
|
||||
|
||||
* To add a new section, select the **Create Section** button.
|
||||
<img height="56px" src="/images/blog/2024-03-dashboard-chapter-1/sections-add-section-button.png" alt="Add Section button"/>
|
||||
|
||||
* To edit the name of a section, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png" alt="Edit icon"/> **Edit** button on the top right of the section. (Tip: You can add any descriptive text for your section, including emojis!) When the section does not have a name, the section header will be hidden.
|
||||
|
||||
* To delete a section, select the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-trash.png" alt="Delete icon"/> **Delete** button on the top right of the section. You will be asked to confirm the deletion.
|
||||
|
||||
### Filling it up
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-example-dashboard.png" alt="A fully populated dashboard in Sections view layout"/>
|
||||
A fully populated dashboard in Sections view layout
|
||||
</p>
|
||||
|
||||
There are multiple ways to add cards into a section and populate your dashboard:
|
||||
|
||||
{% details "Using the Add Card button" %}
|
||||
|
||||
1. The easiest way to add cards is to select **Add Card** [Button icon] button inside the section.
|
||||
|
||||
2. The Add Card dialog will appear, and there are two options:
|
||||
|
||||
* **By Card**
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-add-card-by-card.png" alt="Add Card by Card type dialog"/>Add Card by Card type dialog
|
||||
</p>
|
||||
|
||||
If you have a good idea of what card you want to use for an entity, browse the list of available cards on this screen. For the Sections view, we recommend the Tile card, which is now pinned to the top in a Suggested Cards section.
|
||||
|
||||
* **By Entity**
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-add-card-by-card.png" alt="Add Card by Entity dialog"/>Add Card by Entity dialog
|
||||
</p>
|
||||
|
||||
If you want to add a bunch of entities in one go, select one or multiple entities on this list.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-add-card-suggestions.png" alt="Card suggestions"/>Card suggestions
|
||||
</p>
|
||||
Home Assistant will show a preview of the cards to be added, which will be displayed in Tile cards as the default of the Sections view. Tap the “Add to Dashboard” button to complete the process.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
{% details "Using the Add to Dashboard button on device pages" %}
|
||||
|
||||
<p class='img'>
|
||||
<img width="66%" src="/images/blog/2024-03-dashboard-chapter-1/sections-add-from-device-page.jpg" alt="Add to Dashboard feature on the device page"/>Add to Dashboard feature on the device page
|
||||
</p>
|
||||
|
||||
Another handy method for adding a bunch of sensors or controls belonging to the same device is to add them from the device’s page.
|
||||
|
||||
1. Navigate to the page of the device through Settings.
|
||||
|
||||
2. Tap the **Add to Dashboard** button on the screen.
|
||||
|
||||
3. You will be prompted to choose which dashboard view you want to add them to. If you choose a view using the Sections view layout, the sensors or controls will be added as tile cards placed inside a new section.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
### Responsive design
|
||||
|
||||
One major benefit of the new Sections view is that it is now much easier to build dashboards that work with multiple screen sizes.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/sections-responsive-design.png" alt="Sections view adapt nicely to different screen sizes."/>
|
||||
Sections view adapt nicely to different screen sizes.
|
||||
</p>
|
||||
|
||||
The view will rearrange the sections according to the amount of space available horizontally, while the number of columns of cards within each section stays the same, thus preserving your muscle memory of where the cards are located.
|
||||
|
||||
## The grid system
|
||||
|
||||
Our current dashboard views are organized in columns with cards of varying heights, and with masonry layout by default. As cards can vary in height in small amounts, it becomes hard to predict where cards will "land" when one moves a card to another column, or when screen size changes and moves all the cards, such as when viewing a dashboard on tablet vs on mobile. This creates friction in the customization experience of the dashboards.
|
||||
|
||||
Enter the grid system, a bastion of graphic design principles.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/grid-system-examples.png" alt="Examples of grid systems in use"/>
|
||||
Examples of grid systems in use
|
||||
</p>
|
||||
|
||||
Typographic grid systems have a long history in modern graphic design and print publishing, starting from its rise in the early 20th Century during the Constructivist and Geometrical art movements in Europe, which concerns the hidden rhythm behind a visual image. They are easily repeatable and, therefore, practical for generating an infinite amount of pages, yet also ensure aesthetic proportions and consistency for printable matter. They also bring order to a page. It helps users understand the relationship between each element on the page and whether one element belongs to another.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/grid-system.gif" alt="The Home Assistant dashboard grid system"/>
|
||||
The Home Assistant dashboard grid system
|
||||
</p>
|
||||
|
||||
When a UI is designed with a structured layout, that feeling of structure and organization comes through to the user in their first impression.
|
||||
|
||||
By introducing a grid system with cards of regular row height and column width multiples, we can help users rearrange cards more easily in a predictable manner, make Home Assistant adapt the dashboards to different screen sizes more easily, and, of course, make dashboards look tidier and more aesthetically pleasing.
|
||||
|
||||
<p class='img'>
|
||||
<img width="66%" src="/images/blog/2024-03-dashboard-chapter-1/grid-system-available-cards.png" alt="Cards currently optimized for the grid system: Sensor card, Tile card, and Button card"/>
|
||||
Cards currently optimized for the grid system: Sensor card, Tile card, and Button card
|
||||
</p>
|
||||
|
||||
To implement the grid system, we are now in the process of standardizing the widths and heights of our cards, starting with the Tile card, Button card, and Sensor card. These cards will occupy the right amount of space in the grid, while other cards will occupy the full width of a section by default at the moment.
|
||||
|
||||
For card developers, we will have more information on how to adapt your custom cards to the grid system soon.
|
||||
|
||||
## Drag-and-drop rearrangement of cards and sections
|
||||
|
||||
With sections and a grid system in place, we can finally implement a way to arrange cards and sections that is intuitive with drag-and-drop, predictable with how the cards will rearrange, while creating a dashboard that is easy to navigate and remember by visualizing the information hierarchy and not disturbing the spatial relationship between cards. Users will not need to pray and guess where the cards will land when they change their orders anymore!
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-arrangement-methods-comparison.png" alt="Comparison of four card arrangement methods"/>
|
||||
Comparison of four card arrangement methods
|
||||
</p>
|
||||
|
||||
Throughout the design process, we looked at a few different ways of how cards should be arranged. Ultimately, we chose the “Z-Grid” due to its simplicity, predictability, and memorability as the default, despite it may take up more space than other solutions. The Z-Grid works simply by laying out sections from left to right, and starting a new row when the row is full. The heights of the rows are determined by the tallest section on the row, while the width of the columns remain constant for responsive design.
|
||||
|
||||
### How to drag and drop
|
||||
|
||||
While your dashboard is in Edit Mode:
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-sections.gif" alt="Rearranging sections with drag-and-drop"/>
|
||||
Rearranging sections with drag-and-drop
|
||||
</p>
|
||||
|
||||
* To rearrange sections, simply tap and hold the <img height="28px" src="/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png" alt="Edit icon"/> **Move** handle and then move your cursor or finger towards your desired location. Other sections will move out of the way for where the selected section will drop.
|
||||
|
||||
<p class='img'>
|
||||
<img src="/images/blog/2024-03-dashboard-chapter-1/drag-and-drop-cards.gif" alt="Rearranging cards with drag-and-drop"/>
|
||||
Rearranging sections with drag-and-drop
|
||||
</p>
|
||||
|
||||
* To rearrange cards, tap and hold anywhere on the card and then move your cursor or finger towards your desired location.
|
||||
|
||||
(Don’t you love when instructions are so short? Yay to simplicity! 🦄)
|
||||
|
||||
## What’s next? Get involved!
|
||||
|
||||
The new Sections view with drag-and-drop is just the first step of Project Grace, a Home-Approved Dashboard. We have a good idea of where we want to head next in our design and development process, but we want to hear from you first before we proceed so that we can prioritize and build a product that will help you the most.
|
||||
|
||||
To get feedback from all of you and your household members, we decided to release this early in its incomplete form as an *experiment* for you to try out the new Sections view. For those who are curious, feel free to check out [our updated demo](https://demo.home-assistant.io/#/lovelace/home) to play around and have fun!
|
||||
|
||||
We want to make sure that the new default dashboard will not only work for you, but also everyone who lives in your home. We would love to hear what they think as well. Please do not hesitate to leave your comments below!
|
||||
|
||||
### Join the Home Assistant User Testing Group!
|
||||
|
||||
From time to time, we will send out user tests to help us make the harder product and design decisions we identify. By joining our user testing group, you will help steer the direction of our product and will also get a sneak peak of potential designs that are work in progress.
|
||||
|
||||
Please [fill out this form](http://home-assistant.io/join-research) to join the Home Assistant User Testing Group!
|
||||
|
||||
Big thanks to all the folks who joined us for user interviews, [Lewis from Everything Smart Home](https://www.youtube.com/c/EverythingSmartHome) for sharing his treasure trove of dashboards for our case studies, and of course, the fabulous [Nabu Casa](https://nabucasa.com) team. 💖
|
||||
|
||||
That’s all for now! Thank you for reading. Can’t wait to show you what’s next!
|
||||
|
||||
~ Madelena
|
||||
|
||||
[Lovelace]: https://www.home-assistant.io/blog/2019/01/23/lovelace-released/
|
||||
[Masonry]: https://www.home-assistant.io/dashboards/masonry/
|
@ -34,6 +34,9 @@ layout: null
|
||||
/yellow https://yellow.home-assistant.io
|
||||
/blog/2021/09/13/home-assistant-amber/ /blog/2021/09/13/home-assistant-yellow/
|
||||
|
||||
# User research
|
||||
/join-research https://forms.clickup.com/2533032/f/2d9n8-12931/52N1KK00E9BXEW71TN
|
||||
|
||||
# Older development pages
|
||||
/developers https://developers.home-assistant.io
|
||||
/developers/add_new_platform https://developers.home-assistant.io/docs/creating_platform_index/
|
||||
|
@ -1482,6 +1482,87 @@ For a summary in a more readable format:
|
||||
[@wilburCforce]: https://github.com/wilburCforce
|
||||
[@zxdavb]: https://github.com/zxdavb
|
||||
|
||||
## Release 2024.2.3 - February 22
|
||||
|
||||
- Fix reauth in Overkiz for config entries created prior to 2022.12 ([@iMicknl] - [#106251])
|
||||
- Handle deep standby and poweroffs of enigma2 devices gracefully ([@autinerd] - [#107462])
|
||||
- Add wake up timeout to Teslemetry ([@Bre77] - [#109037])
|
||||
- Fix set_temperature in Tessie climate platform ([@Bre77] - [#110445])
|
||||
- Fix uuid issue in Lutron ([@wilburCforce] - [#110524])
|
||||
- Update rokuecp to 0.19.1 ([@ctalkington] - [#110670])
|
||||
- Fix scene activation with climate entities with `None` attribute values ([@mib1185] - [#110684])
|
||||
- Remove matplotlib pinning due to Python 3.12 incompatibility ([@sbyx] - [#110706])
|
||||
- Bump roombapy to 1.6.12 ([@mib1185] - [#110762])
|
||||
- Ensure Tile timestamps are reported as UTC ([@bachya] - [#110773])
|
||||
- Detect reached API rate limit in Tankerkoenig ([@mib1185] - [#110432])
|
||||
- Bump aiotankerkoenig to 0.4.1 ([@jpbede] - [#110840])
|
||||
- Update govee-local-api library to 1.4.4 ([@Galorhallen] - [#110854])
|
||||
- Allow loading of more then 1 defined Apprise URL ([@caronc] - [#110868])
|
||||
- Reolink continue setup when internet blocked ([@starkillerOG] - [#110888])
|
||||
- Bump deluge-client to 1.10.0 ([@tkdrob] - [#110663])
|
||||
- Bump deluge-client to 1.10.2 ([@dsander] - [#110905])
|
||||
- Bump reolink-aio to 0.8.8 ([@starkillerOG] - [#110959])
|
||||
- Reset error state when Ecovacs bot is operational again ([@mib1185] - [#110962])
|
||||
- Bump motionblinds to 0.6.21 ([@starkillerOG] - [#110970])
|
||||
- Bump holidays to 0.43 ([@gjohansson-ST] - [#111039])
|
||||
- Fixes UniFi Protect light state check ([@AngellusMortis] - [#111058])
|
||||
- Bump pywebpush to 1.14.1 ([@thecode] - [#111082])
|
||||
- Bump aioairzone to v0.7.4 ([@Noltari] - [#111105])
|
||||
- Bump deebot-client to 5.2.2 ([@edenhaus] - [#111112])
|
||||
- Ignore cloudhook already removed in mobile app ([@joostlek] - [#111122])
|
||||
|
||||
[#106251]: https://github.com/home-assistant/core/pull/106251
|
||||
[#107462]: https://github.com/home-assistant/core/pull/107462
|
||||
[#109037]: https://github.com/home-assistant/core/pull/109037
|
||||
[#109883]: https://github.com/home-assistant/core/pull/109883
|
||||
[#110078]: https://github.com/home-assistant/core/pull/110078
|
||||
[#110432]: https://github.com/home-assistant/core/pull/110432
|
||||
[#110445]: https://github.com/home-assistant/core/pull/110445
|
||||
[#110524]: https://github.com/home-assistant/core/pull/110524
|
||||
[#110663]: https://github.com/home-assistant/core/pull/110663
|
||||
[#110670]: https://github.com/home-assistant/core/pull/110670
|
||||
[#110684]: https://github.com/home-assistant/core/pull/110684
|
||||
[#110706]: https://github.com/home-assistant/core/pull/110706
|
||||
[#110720]: https://github.com/home-assistant/core/pull/110720
|
||||
[#110762]: https://github.com/home-assistant/core/pull/110762
|
||||
[#110773]: https://github.com/home-assistant/core/pull/110773
|
||||
[#110840]: https://github.com/home-assistant/core/pull/110840
|
||||
[#110854]: https://github.com/home-assistant/core/pull/110854
|
||||
[#110868]: https://github.com/home-assistant/core/pull/110868
|
||||
[#110888]: https://github.com/home-assistant/core/pull/110888
|
||||
[#110905]: https://github.com/home-assistant/core/pull/110905
|
||||
[#110959]: https://github.com/home-assistant/core/pull/110959
|
||||
[#110962]: https://github.com/home-assistant/core/pull/110962
|
||||
[#110970]: https://github.com/home-assistant/core/pull/110970
|
||||
[#111035]: https://github.com/home-assistant/core/pull/111035
|
||||
[#111039]: https://github.com/home-assistant/core/pull/111039
|
||||
[#111058]: https://github.com/home-assistant/core/pull/111058
|
||||
[#111082]: https://github.com/home-assistant/core/pull/111082
|
||||
[#111105]: https://github.com/home-assistant/core/pull/111105
|
||||
[#111112]: https://github.com/home-assistant/core/pull/111112
|
||||
[#111122]: https://github.com/home-assistant/core/pull/111122
|
||||
[@AngellusMortis]: https://github.com/AngellusMortis
|
||||
[@Bre77]: https://github.com/Bre77
|
||||
[@Galorhallen]: https://github.com/Galorhallen
|
||||
[@Noltari]: https://github.com/Noltari
|
||||
[@autinerd]: https://github.com/autinerd
|
||||
[@bachya]: https://github.com/bachya
|
||||
[@caronc]: https://github.com/caronc
|
||||
[@ctalkington]: https://github.com/ctalkington
|
||||
[@dsander]: https://github.com/dsander
|
||||
[@edenhaus]: https://github.com/edenhaus
|
||||
[@frenck]: https://github.com/frenck
|
||||
[@gjohansson-ST]: https://github.com/gjohansson-ST
|
||||
[@iMicknl]: https://github.com/iMicknl
|
||||
[@joostlek]: https://github.com/joostlek
|
||||
[@jpbede]: https://github.com/jpbede
|
||||
[@mib1185]: https://github.com/mib1185
|
||||
[@sbyx]: https://github.com/sbyx
|
||||
[@starkillerOG]: https://github.com/starkillerOG
|
||||
[@thecode]: https://github.com/thecode
|
||||
[@tkdrob]: https://github.com/tkdrob
|
||||
[@wilburCforce]: https://github.com/wilburCforce
|
||||
|
||||
[#100684]: https://github.com/home-assistant/core/pull/100684
|
||||
[#100806]: https://github.com/home-assistant/core/pull/100806
|
||||
[#101497]: https://github.com/home-assistant/core/pull/101497
|
||||
|
@ -19,5 +19,6 @@ This section will provide guides to some common tasks and information which you
|
||||
{% include common-tasks/third-party-addons.md %}
|
||||
{% include common-tasks/data_disk.md %}
|
||||
{% include common-tasks/flashing_n2_otg.md %}
|
||||
{% include common-tasks/flashing_m1s_otg.md %}
|
||||
{% include common-tasks/enable_i2c.md %}
|
||||
|
||||
|
@ -3,6 +3,16 @@ title: "Cards"
|
||||
description: "Cards."
|
||||
---
|
||||
|
||||
Your dashboard is made up of Cards.
|
||||
Each dashboard is made up of cards.
|
||||
|
||||
There are several built-in card types, each with their own configuration options. Select a card from the menu to view additional details and the options for that card.
|
||||
<p class='img'>
|
||||
<img src='/images/getting-started/lovelace.png' alt='Screenshot of the masonry view with different types of cards'>
|
||||
Screenshot of the masonry view with different types of cards.
|
||||
</p>
|
||||
|
||||
There are several built-in card types, each with their own configuration options. Select a card from the menu to view additional details and the options for that card.
|
||||
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/card_menu.png' alt='Screenshot of the card menu'>
|
||||
Screenshot of the card menu.
|
||||
</p>
|
@ -1,15 +1,44 @@
|
||||
---
|
||||
title: "Multiple Dashboards"
|
||||
title: "Multiple dashboards"
|
||||
description: "Multiple powerful and configurable dashboards in Home Assistant."
|
||||
---
|
||||
|
||||
You can define multiple dashboards in Home Assistant. Each dashboard can be added to the sidebar. This makes it possible to create separate control dashboards for each individual part of your house.
|
||||
|
||||
You can manage your dashboards via the user interface. Go to **Settings** -> **Dashboards**. Here you can see all defined dashboards and create new ones.
|
||||
You can manage your dashboards via the user interface. Go to {% my lovelace_dashboards title="**Settings** > **Dashboards**" %}. Here you can see some of the defined dashboards and create new ones.
|
||||
|
||||
## Using YAML for the default dashboard
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/dashboard-manage-01.png' alt='Screenshot of the dashboard list'>
|
||||
Screenshot of the Dashboard list.
|
||||
</p>
|
||||
|
||||
To change the default dashboard, create a new file `ui-lovelace.yaml` in your configuration directory and add the following section to your `configuration.yaml` and restart Home Assistant:
|
||||
## Home Assistant default dashboards
|
||||
|
||||
Home Assistant ships with 5 predefined dashboards:
|
||||
|
||||
- Overview
|
||||
- Energy
|
||||
- Map
|
||||
- Logbook
|
||||
- History
|
||||
|
||||
Not all of predefined dashboards are listed under {% my lovelace_dashboards title="**Settings** > **Dashboards**" %}. **Map**, **Logbook**, and **History**, are powered by their respective integrations.
|
||||
|
||||
### Map dashboard
|
||||
|
||||
The predefined **Map** dashboard is powered by the [Map integration](/integrations/map/). If you see a [person](/integrations/person/) on the map, it means you have connected a device that allows [presence detection](/integrations/#presence-detection). This is the case for example if you have the [Home Assistant Companion App](https://companion.home-assistant.io/) on your phone and allowed location tracking.
|
||||
|
||||
### Logbook dashboard
|
||||
|
||||
The predefined **Logbook** dashboard is powered by the [Logbook integration](/integrations/logbook/). To control which events to show or filter out, refer to the documentation of the Logbook integration.
|
||||
|
||||
### History dashboard
|
||||
|
||||
The predefined **History** dashboard is powered by the [History integration](/integrations/logbook/). To learn about the data sources used and how to export data, refer to the documentation of the History integration.
|
||||
|
||||
## Using YAML for the Overview dashboard
|
||||
|
||||
To change the **Overview** dashboard, create a new file `ui-lovelace.yaml` in your configuration directory and add the following section to your `configuration.yaml` and restart Home Assistant:
|
||||
|
||||
```yaml
|
||||
lovelace:
|
||||
@ -18,9 +47,9 @@ lovelace:
|
||||
|
||||
A good way to start this file is to copy and paste the "Raw configuration" from the UI so your manual configuration starts the same as your existing UI.
|
||||
|
||||
- Click `Overview` in your sidebar.
|
||||
- Click the three dots menu (top-right) and click on `Edit Dashboard`.
|
||||
- Click the three dots menu again and click on `Raw configuration editor`.
|
||||
- In your sidebar, select **Overview**.
|
||||
- In the top-right corner, select the pencil icon.
|
||||
- Select the three dots menu and select **Raw configuration editor**.
|
||||
- There you see the configuration for your current dashboard. Copy that into the `<config>/ui-lovelace.yaml` file.
|
||||
|
||||
Once you take control of your UI via YAML, the Home Assistant interface for modifying it won't be available anymore and new entities will not automatically be added to your UI.
|
||||
@ -192,3 +221,9 @@ views:
|
||||
content: >
|
||||
Welcome to your **dashboard**.
|
||||
```
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Logbook integration](/integrations/logbook/)
|
||||
- [Map integration](/integrations/map/)
|
||||
- [History integration](/integrations/history/)
|
@ -3,30 +3,40 @@ title: "Dashboards"
|
||||
description: "Powerful and configurable dashboards for Home Assistant."
|
||||
---
|
||||
|
||||
Home Assistant dashboards are a fast, customizable and powerful way for users to manage their home using their mobiles and desktops.
|
||||
Home Assistant dashboards allow you to display information about your smart home. Dashboards are customizable and provide a powerful way to manage your home from your mobile or desktop.
|
||||
|
||||
- 29 different cards to place and configure as you like.
|
||||
- Dashboard Editor: Allows you to manage your dashboard by including a live preview when editing cards.
|
||||
- Fast: Using a static configuration allows us to build up the dashboard once.
|
||||
- Customizable:
|
||||
- Cards have a number of options which help to configure your data as required.
|
||||
- Themes (even at a per card basis).
|
||||
- Ability to override names and icons of entities.
|
||||
- Custom Cards from our amazing community are fully supported.
|
||||
You can customize your dashboard using various options:
|
||||
|
||||
To start, go to the Home Assistant Overview page, click on the three dots at the top right of the screen and select 'Edit Dashboard'. Then click on the blue '+ Add Card' icon at the bottom right and select a card to add.
|
||||
- Different card types to visualize your data and control your smart home devices.
|
||||
- [Themes](/integrations/frontend/#defining-themes) (even at a per card basis).
|
||||
- Override names and icons of entities.
|
||||
- Use custom cards from our amazing community.
|
||||
|
||||
<lite-youtube videoid="XY3R0xI45wA" videotitle="Editing the user interface" posterquality="maxresdefault"></lite-youtube>
|
||||
<p class='img'>
|
||||
<img src='/images/dashboards/edit-dashboard.webp' alt='Screencast showing how to edit a dashboard customize a vertical stack card'>
|
||||
Screencast showing how to edit a dashboard and customize a vertical stack card.
|
||||
</p>
|
||||
|
||||
To try it yourself, check out [the demo](https://demo.home-assistant.io).
|
||||
## Explore the interactive demo dashboard
|
||||
|
||||
Try it yourself with [the interactive demo](https://demo.home-assistant.io).
|
||||
|
||||
## Get started with your own dashboard
|
||||
|
||||
{% include dashboard/edit_dashboard.md %}
|
||||
|
||||
For more detailed instructions, follow the step-by-step tutorial on [editing the **Overview** dashboard](/getting-started/onboarding_dashboard/).
|
||||
|
||||
## Discuss dashboard
|
||||
|
||||
- Suggestions are welcome in the [frontend repository](https://github.com/home-assistant/frontend/)
|
||||
- For help with dashboards, join the `#frontend` channel on [our chat](/join-chat/) or [our forums](https://community.home-assistant.io/c/projects/frontend)
|
||||
|
||||
## Additional Resources
|
||||
## Related topics
|
||||
|
||||
- [Community Custom Cards](https://github.com/custom-cards)
|
||||
- [Home Assistant Cards](https://home-assistant-cards.bessarabov.com/)
|
||||
- [Community custom cards](https://github.com/custom-cards)
|
||||
- [Home Assistant cards](https://home-assistant-cards.bessarabov.com/)
|
||||
- [Material Design Icons](https://pictogrammers.com/library/mdi/)
|
||||
- [Dashboard themes](/integrations/frontend/#defining-themes)
|
||||
- [Interactive dashboard demo](https://demo.home-assistant.io)
|
||||
- [Editing the **Overview** dashboard](/getting-started/onboarding_dashboard/)
|
||||
|
@ -37,7 +37,7 @@ Devices and entities are used throughout Home Assistant. To name a few examples:
|
||||
A set of repeatable {% term actions %} that can be set up to run automatically. Automations are made of three key components:
|
||||
|
||||
1. Triggers - events that start an {% term automation %}. For example, when the sun sets or a motion sensor is activated.
|
||||
2. Conditions - optional tests that must be met an {% term action %} can be run. For example, if someone is home.
|
||||
2. Conditions - optional tests that must be met before an {% term action %} can be run. For example, if someone is home.
|
||||
3. Actions - interact with {% term devices %} such as turn on a light.
|
||||
|
||||
To learn the basics about {% term automations %}, refer to the [automation basics](/docs/automation/basics/) page or try [creating an automation](/getting-started/automation) yourself.
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Getting Started"
|
||||
title: "Getting started"
|
||||
description: "Getting started with Home Assistant"
|
||||
body_id: getting_started
|
||||
show_title: true
|
||||
|
@ -5,7 +5,7 @@ description: "Instructions on editing the dashboard for the first time"
|
||||
|
||||
## First contact with the Overview dashboard
|
||||
|
||||
The **Overview** dashboard is the first page you see after the [onboarding process](/getting-started/onboarding). Dashboards are customizable pages to display information in Home Assistant.
|
||||
The **Overview** [dashboard](/dashboards/) is the first page you see after the [onboarding process](/getting-started/onboarding). Dashboards are customizable pages to display information in Home Assistant.
|
||||
|
||||
By default, there are two dashboards: **Overview** and **Energy**. The image below shows a customized example of the **Overview** dashboard. If you just onboarded, your dashboard will be nearly empty.
|
||||
|
||||
@ -32,7 +32,7 @@ The procedure below is optional. The idea is to learn some basics on changing th
|
||||
- Once you are done, select **Update**.
|
||||

|
||||
|
||||
4. To change the type of dashboard card, in the top right corner, select the three-dots, then, in the **Edit dashboard** dialog, select the three dots again and select **Take control**.
|
||||
4. To change the type of dashboard card, in the top right corner, select the pencil icon, then, in the **Edit dashboard** dialog, select the three dots and select **Take control**.
|
||||

|
||||
- Read and accept this before continuing.
|
||||
- On the dashboard, select the weather card, select the three dots, then **Device info**.
|
||||
@ -46,7 +46,7 @@ The procedure below is optional. The idea is to learn some basics on changing th
|
||||
- You now see the forecast card on the dashboard.
|
||||
|
||||
7. Now let's delete the other weather card.
|
||||
- In the top right corner, select the three-dot menu, then select **Edit dashboard**.
|
||||
- In the top right corner, select the pencil.
|
||||

|
||||
- On the card, select the three-dot menu and select **Delete**.
|
||||

|
||||
@ -56,4 +56,11 @@ The procedure below is optional. The idea is to learn some basics on changing th
|
||||
- When you are done, in the top right corner, select **Done**.
|
||||
9. Congratulations! You have completed your first dashboard customization.
|
||||
|
||||
{% include getting-started/next_step.html step="Integrations" link="/getting-started/integration/" %}
|
||||
To continue with this tutorial, select the button below to learn about {% term integrations %}.
|
||||
|
||||
{% include getting-started/next_step.html step="Integrations" link="/getting-started/integration/" %}
|
||||
|
||||
## Related topics
|
||||
|
||||
- [Dashboards](/dashboards/)
|
||||
- [Views](/dashboards/views/)
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 46 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/alias.png
Normal file
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 73 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/challenge.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/debug_tool.png
Normal file
After Width: | Height: | Size: 360 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/error_messages.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/expose.png
Normal file
After Width: | Height: | Size: 8.9 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/ha-support.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
source/images/blog/2024-02-21-voice-chapter-6/social.jpg
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
source/images/blog/2024-02-grace-chapter-1/banner.png
Normal file
After Width: | Height: | Size: 640 KiB |
BIN
source/images/blog/2024-02-haos12/haos12.png
Normal file
After Width: | Height: | Size: 420 KiB |
After Width: | Height: | Size: 13 KiB |
BIN
source/images/blog/2024-03-dashboard-chapter-1/banner.png
Normal file
After Width: | Height: | Size: 221 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 4.1 MiB |
After Width: | Height: | Size: 2.8 MiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 517 KiB |
BIN
source/images/blog/2024-03-dashboard-chapter-1/grid-system.gif
Normal file
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 26 KiB |
BIN
source/images/blog/2024-03-dashboard-chapter-1/layout-types.png
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
source/images/blog/2024-03-dashboard-chapter-1/mdi-edit.png
Normal file
After Width: | Height: | Size: 170 B |
BIN
source/images/blog/2024-03-dashboard-chapter-1/mdi-move.png
Normal file
After Width: | Height: | Size: 215 B |
BIN
source/images/blog/2024-03-dashboard-chapter-1/mdi-trash.png
Normal file
After Width: | Height: | Size: 148 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 52 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 273 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 220 KiB |
After Width: | Height: | Size: 242 KiB |
After Width: | Height: | Size: 22 KiB |
BIN
source/images/dashboards/card_menu.png
Normal file
After Width: | Height: | Size: 103 KiB |
BIN
source/images/dashboards/dashboard-manage-01.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
source/images/dashboards/edit-dashboard.webp
Normal file
After Width: | Height: | Size: 1.2 MiB |
BIN
source/images/dashboards/masonry.png
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
source/images/dashboards/panel_view.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
source/images/dashboards/sidebar_view.png
Normal file
After Width: | Height: | Size: 119 KiB |