diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 8d98d8e2237..9db615d42bc 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -18,7 +18,7 @@ "editorconfig.editorconfig", "GitHub.vscode-pull-request-github", "mrmlnc.vscode-scss", - "rebornix.Ruby", + "Shopify.ruby-lsp", "streetsidesoftware.code-spell-checker", "taichi.vscode-textlint", "yzhang.markdown-all-in-one" diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f5690fa9f2a..7a7d712f113 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -11,7 +11,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions/stale@v8.0.0 + - uses: actions/stale@v9.0.0 if: ${{ github.repository_owner == 'home-assistant' }} with: repo-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9a4e28c6be4..c147b84c11a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v4.1.1 - name: Setting up Node.js - uses: actions/setup-node@v4.0.0 + uses: actions/setup-node@v4.0.1 with: node-version: 16.x cache: "npm" @@ -27,7 +27,7 @@ jobs: - name: Check out files from GitHub uses: actions/checkout@v4.1.1 - name: Setting up Node.js - uses: actions/setup-node@v4.0.0 + uses: actions/setup-node@v4.0.1 with: node-version: 16.x cache: "npm" diff --git a/Gemfile.lock b/Gemfile.lock index e6878950cac..c3463c6b54a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - addressable (2.8.5) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) chunky_png (1.4.0) colorator (1.1.0) @@ -112,7 +112,7 @@ GEM tilt (2.3.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - tzinfo-data (1.2023.3) + tzinfo-data (1.2023.4) tzinfo (>= 1.0.0) unicode-display_width (2.5.0) webrick (1.8.1) diff --git a/_config.yml b/_config.yml index b4eb79256c6..1f6e90df54e 100644 --- a/_config.yml +++ b/_config.yml @@ -84,7 +84,7 @@ collections: #Search algolia: - api_key: "ae96d94b201c5444c8a443093edf3efb" + api_key: "ba6f7e6d97b3d3d2f778978c742a47c6" # Twitter twitter_user: balloob @@ -110,8 +110,8 @@ social: # Home Assistant release details current_major_version: 2023 current_minor_version: 12 -current_patch_version: 0 -date_released: 2023-12-06 +current_patch_version: 4 +date_released: 2023-12-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. diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 5b2958aa176..3af2fd05e58 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -12,33 +12,31 @@ $primary-color: #1abcf2; } } -.search-container { - position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background-color: white; - padding-top: 19px; - padding-right: 15%; - - .search { - max-width: 500px; - width: 100%; - border-bottom: 2px solid $primary-color; - float: right; - - .algolia-autocomplete { - width: calc(100% - 64px); - margin: 0 10px; - } - - input { - border: 0; - width: 100%; - outline: none; +.docsearch { + .DocSearch-Button { + padding: 0px; + margin-top: 16px; + margin-left: 0px; + margin-right: 0px; + background: none; + &:hover { + box-shadow: none; } } + .DocSearch-Button-Placeholder { + display: none; + } + .DocSearch-Button-Keys { + display: none; + } + .DocSearch-Search-Icon { + margin-right: 8px; + color: $primary-color; + } +} + +.DocSearch-Container { + z-index: 1000; } .integration-alert-container { @@ -75,12 +73,6 @@ a.integration-alert { } @media only screen and (max-width: $menu-collapse) { - .search-container { - z-index: 20; - padding-right: 5px; - padding-left: 5px; - } - .feedback { margin-bottom: 32px; } @@ -889,12 +881,19 @@ code { } @media only screen and (max-width: $menu-collapse) { + #not_found { .page { text-align: center; .search404-container { margin-bottom: 32px; + display: grid; + + #search404 { + display: flex; + justify-self: center; + } } } } @@ -908,9 +907,11 @@ code { .search404-container { margin-bottom: 32px; + display: grid; #search404 { - width: 420px; + display: flex; + justify-self: center; } } } diff --git a/source/404.html b/source/404.html index 2be0d311b63..d9c9f946a9b 100644 --- a/source/404.html +++ b/source/404.html @@ -8,24 +8,15 @@ body_id: not_found

Oh no! This page does not exist 😞

-
- - - -
+
- + \ No newline at end of file diff --git a/source/_dashboards/conditional.markdown b/source/_dashboards/conditional.markdown index ac25d30af4f..d025ed9d71b 100644 --- a/source/_dashboards/conditional.markdown +++ b/source/_dashboards/conditional.markdown @@ -7,6 +7,11 @@ description: The Conditional card displays another card based on conditions. The conditional card displays another card based on conditions. +

+ Screenshot of the conditional card + Screenshot of the conditional card. +

+ Note: if there are multiple conditions there will be treated as an 'and' condition. This means that for the card to show, _all_ conditions must be met. {% include dashboard/edit_dashboard.md %} diff --git a/source/_dashboards/thermostat.markdown b/source/_dashboards/thermostat.markdown index 1614b1b3c89..67b4d40cbf4 100644 --- a/source/_dashboards/thermostat.markdown +++ b/source/_dashboards/thermostat.markdown @@ -8,7 +8,7 @@ description: "The thermostat card gives control of your climate entity, allowing The thermostat card gives control of your [climate](/integrations/#climate) entity, allowing you to change the temperature and mode of the entity.

- Screenshot of the thermostat card + Screenshot of the thermostat card Screenshot of the thermostat card.

diff --git a/source/_docs/authentication.markdown b/source/_docs/authentication.markdown index 02d299c9ad5..29b8a313b44 100644 --- a/source/_docs/authentication.markdown +++ b/source/_docs/authentication.markdown @@ -7,21 +7,13 @@ The authentication system secures access to Home Assistant. ## Login screen -If you log in from within your local network, you are greeted with a login screen showing all the people in Home Assistant. - -Screenshot of the login screen, when logging in from within the local network - -### Privacy: Not showing users when logging in from outside the network - -When logging in from outside your local network, the users are not shown. This is to protect your privacy. In this case, you need to enter your user name. - -You might also see this screen if you are using a Chromium-based browser (Chrome, Edge) and IPv6. Home Assistant might not be able to detect if your are logging in from a local network. This is a known issue with Chromium. +You are greeted with a log in screen, asking you for user name and password. Screenshot of the login screen, when logging in from within the local network ## User accounts -When you start Home Assistant for the first time the _owner_ user account is created. This account has some special privileges and can: +When you start Home Assistant for the first time, the _owner_ user account is created. This account has some special privileges and can: - Create and manage other user accounts. - Configure integrations and other settings (coming soon). @@ -84,17 +76,7 @@ INFO (MainThread) [homeassistant.components.http.auth] You need to use a bearer ### Lost owner password -Before using the procedure below, make sure you explore options provided [here](/docs/locked_out). - -While you should hopefully be storing your passwords in a password manager, if you lose the password associated with the owner account the only way to resolve this is to delete _all_ the authentication data. You do this by shutting down Home Assistant and deleting the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/): - -- `auth` -- `auth_provider.homeassistant` -- `onboarding` -- `hassio` -- `cloud` - -When you start Home Assistant next, you'll be required to set up authentication again. +If you lose the password associated with the owner account, you need to [start a new onboarding process](/docs/locked_out/#to-prepare-the-system-to-start-a-new-onboarding-process). ### Error: invalid client id or redirect URL diff --git a/source/_docs/automation/using_blueprints.markdown b/source/_docs/automation/using_blueprints.markdown index 6eb407f497f..061538244dd 100644 --- a/source/_docs/automation/using_blueprints.markdown +++ b/source/_docs/automation/using_blueprints.markdown @@ -41,12 +41,24 @@ Home Assistant can import blueprints from the Home Assistant forums, GitHub, and The blueprint can now be used for creating automations. -## Keeping blueprints up to date +## Re-importing a blueprint Blueprints created by the community may go through multiple revisions. Sometimes a user creates a blueprint, the community provides feedback, and new functionality is added. -While there's no built-in functionality to update a blueprint you've already imported, you can manually edit +The quickest way to get these changes is by re-importing the blueprint. This will overwrite the blueprint you currently have. + +1. **Before you do this**: If the re-imported blueprint is not compatible, it can break your automations. + - In this case, you will need to manually adjust your automations. +2. Go to **{% my blueprints title="Settings > Automations & Scenes > Blueprints" %}**. +3. On the blueprint that you want to re-import, select the three-dot menu, and select **Re-import blueprint**. + +## Updating an imported blueprint manually + +Blueprints created by the community may go through multiple revisions. Sometimes a user creates a blueprint, +the community provides feedback, and new functionality is added. + +If you do not want to [re-import the blueprint](/docs/automation/using_blueprints/#re-importing-a-blueprint) for some reason, you can manually edit its YAML content to keep it up to date: 1. Navigate to the blueprints directory (`blueprints/automation/`). diff --git a/source/_docs/blueprint/selectors.markdown b/source/_docs/blueprint/selectors.markdown index 42c6f42402a..cc70e88028b 100644 --- a/source/_docs/blueprint/selectors.markdown +++ b/source/_docs/blueprint/selectors.markdown @@ -1324,4 +1324,4 @@ The output of this selector is a list of triggers. For example: - platform: numeric_state entity_id: "sensor.outside_temperature" below: 20 -```∏ +``` diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown index 2f3e7bd30c1..f5558c53bc7 100644 --- a/source/_docs/configuration/splitting_configuration.markdown +++ b/source/_docs/configuration/splitting_configuration.markdown @@ -29,7 +29,7 @@ homeassistant: 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 filename.yaml` is the statement that tells Home Assistant to insert the contents of `filename.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 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. 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: diff --git a/source/_docs/locked_out.md b/source/_docs/locked_out.md index 37cedcf4adc..dd4be294f07 100644 --- a/source/_docs/locked_out.md +++ b/source/_docs/locked_out.md @@ -6,36 +6,56 @@ description: "Options for regaining access" The sections below deal with recovering from a situation where you are not able to sign in, or need to recover your data. +## Forgot user name + +If you’ve forgotten your username, ask the owner to help you. +If you are the owner and have forgotten your user name, then you need to [prepare the system to start a new onboarding process](/docs/locked_out/#to-prepare-the-system-to-start-a-new-onboarding-process). + ## Forgot password -### Home Assistant (including Supervised) +If you are not the owner or do not have administrator rights, ask the owner to give you a new password. -If you are still logged in to the web interface with your user, then you are in luck. +- In the navigation pane on the left, check if you see the **Settings** menu listed above the **Notifications**. + - If you don't, you do not have administrator rights. -1. Add a new user as an administrator and give the new user a password you can remember. -2. Then log out, and log in with this new user. -3. Reset your password via this new administrator account (and then delete this new account). - - Your configuration will remain, and you don't have to do a new onboarding process. +If you are the owner or have administrator, there are different methods to reset a password, depending on your setup: -If you’ve forgotten your username, then deleting the files mentioned further below will be necessary to start a new onboarding process. +### To reset a password while still logged in (including Supervised) -#### To reset a user's password, via console +The method used to reset a password depends on your user rights: -Use this procedure if you know the username, and you can access the [Home Assistant console](/hassio/commandline/) on the device itself (not the SSH terminal from the add-ons). +- If you are a regular user without administrator rights, ask the owner to [give you a new password](/docs/locked_out/#to-reset-a-users-password-as-an-owner-via-the-web-interface). +- If you are the owner, choose one of the procedures below to reset your password. + - You cannot recover an owner password from within Home Assistant. + - There is only one owner per system. You cannot add a new owner. +- If you are an administrator, add a new user as an administrator and give the new user a password you can remember. + 1. Then log out, and log in with this new user. + 2. Reset your password via this new administrator account (and then [delete this new account](/docs/locked_out/#to-delete-a-user)). + - Your configuration will remain, and you don't have to do a new onboarding process. -1. Connect a keyboard and monitor to your device and access the terminal: +### To reset an owner's password, via console + +Use this procedure only if the following conditions are met: + +- You know the username. +- You can access the [Home Assistant console](/hassio/commandline/) **on the device itself** (not via the SSH terminal from the add-ons). + +1. Connect to the console of the Home Assistant server: + - If you are using a virtual machine, connect to your virtual machine console. - If you are using a Home Assistant Yellow, refer to the following procedure: - [Using the serial console on Windows](https://yellow.home-assistant.io/guides/use-serial-console-windows/) - [Using the serial console on macOS / Linux](https://yellow.home-assistant.io/guides/use-serial-console-linux-macos/) - If you are using a Home Assistant Green, refer to the following procedure: - [Using the terminal](https://green.home-assistant.io/guides/use-terminal/) + - If you are using another board, connect a keyboard and monitor to your device and access the terminal. The procedure is likely very similar to the one described for the Green in the step above. 2. Once you have opened the Home Assistant command line, enter the following command: - Note: `existing_user` is a placeholder. Replace it with your user name. - Note: `new_password` is a placeholder. Replace it with your new password. - **Command**: `auth reset --username existing_user --password new_password` + - **Troubleshooting**: If you see the message `zsh: command not found: auth`, you likely did not enter the command in the serial console connected to the device itself, but in the terminal within Home Assistant. 3. You can now log in to Home Assistant using this new password. -#### To reset a user's password, via the container command line +### To reset a user's password, via the container command line If you are running Home Assistant in a container, you can use the command line in the container with the `hass` command to change your password. The steps below refer to a Home Assistant container in Docker named `homeassistant`. Note that while working in the container, commands will take a few moments to execute. @@ -45,7 +65,9 @@ If you are running Home Assistant in a container, you can use the command line i 4. `exit` to exit the container command line 5. `docker restart homeassistant` to restart the container. -#### To reset a user's password, as an owner via the web interface +### To reset a user's password, as an owner via the web interface + +Only the owner can change other user's passwords. 1. In the bottom left, select your user to go to the {% my profile title="**Profile**" %} page and make sure **Advanced Mode** is activated. 2. Go to {% my people title="**Settings** > **People**" %} and select the person for which you want to change the password. @@ -55,7 +77,9 @@ If you are running Home Assistant in a container, you can use the command line i 5. Confirm the new password by entering it again, and select **OK** again. 6. A confirmation box will be displayed with the text **Password was changed successfully**. -#### To delete a user, as an administrator via the web interface +### To delete a user + +You need to be an owner or have administrator rights to delete a user. 1. Go to {% my people title="**Settings** > **People**" %} and select the person which you want to delete. - Note: you cannot delete the owner. @@ -63,21 +87,15 @@ If you are running Home Assistant in a container, you can use the command line i - A confirmation dialog box will be displayed. 3. To confirm, select **OK**. -#### Start a new onboarding process +### To prepare the system to start a new onboarding process -If you lose the password associated with the owner account and the steps above do not work to reset the password, the only way to resolve this is to start a new onboarding process. If you have an external backup with an administrator account of which you still know the login credentials, you can restore that backup. If you do not have a backup, resetting the device will erase all data. +If you lose the password associated with the owner account and the steps above do not work to reset the password, the only way to resolve this is to start a new onboarding process. + +- If you have an external backup with an administrator account of which you still know the login credentials, you can restore that backup. +- If you do not have a backup, resetting the device will erase all data. - If you have a Home Assistant Green, [reset the Green](https://green.home-assistant.io/guides/reset/). - If you have a Home Assistant Yellow, [reset the Yellow](https://yellow.home-assistant.io/guides/factory-reset/). -- If you have a Raspberry Pi, delete *all* the authentication data. - - Shut down Home Assistant. - - Remove your SD card and access it from your PC. - - Delete the following files from the `.storage/` folder in your [configuration folder](/docs/configuration/): - - `auth` - - `auth_provider.homeassistant` - - `onboarding` - - `hassio` - - `cloud` ## Recovering data for Home Assistant (including Supervised) diff --git a/source/_docs/scripts/service-calls.markdown b/source/_docs/scripts/service-calls.markdown index d153233b4ca..03424e8a7d6 100644 --- a/source/_docs/scripts/service-calls.markdown +++ b/source/_docs/scripts/service-calls.markdown @@ -133,13 +133,12 @@ Examples of service response data are upcoming calendar events for the next week Templates can also be used for handling response data. The service call can specify a `response_variable`. This is the [variable](/docs/scripts/#variables) -that contains the response data. You can define any name for your `response_variable`. This example calls a service and stores the response in -the variable called `agenda`. +that contains the response data. You can define any name for your `response_variable`. This example calls a service and stores the response in the variable called `agenda`. {% raw %} ```yaml -service: calendar.list_events +service: calendar.get_events target: entity_id: calendar.school data: @@ -168,7 +167,7 @@ data: message: >- Your agenda for today:

- {% for event in agenda.events %} + {% for event in agenda['calendar.school'].events %} {{ event.start}}: {{ event.summary }}
{% endfor %}

diff --git a/source/_includes/asides/categories.html b/source/_includes/asides/categories.html index f7dda739948..639ce3fc038 100644 --- a/source/_includes/asides/categories.html +++ b/source/_includes/asides/categories.html @@ -4,7 +4,7 @@ {% assign categories = site.categories | sort %} {% for category in categories %} {% assign category_name = category | first | downcase %} - {% if category_name != "core" %} + {% if category_name != "core"%}
  • {{ category | first | replace: '-', ' '}}
  • {% endif %} {% endfor %} diff --git a/source/_includes/asides/getting_started_navigation.html b/source/_includes/asides/getting_started_navigation.html index 687c7e45665..5af49d203de 100644 --- a/source/_includes/asides/getting_started_navigation.html +++ b/source/_includes/asides/getting_started_navigation.html @@ -4,8 +4,8 @@ @@ -31,8 +30,17 @@ +
    +

    Troubleshooting

    + +
    diff --git a/source/_includes/installation/container.md b/source/_includes/installation/container.md index 554a30af430..8d73f43d35f 100644 --- a/source/_includes/installation/container.md +++ b/source/_includes/installation/container.md @@ -129,8 +129,8 @@ As jemalloc can cause issues on certain hardware, it can be disabled by passing services: homeassistant: ... - environment: - - DISABLE_JEMALLOC: true + environment: + DISABLE_JEMALLOC: true ``` {% endtabbed_block %} diff --git a/source/_includes/installation/operating_system.md b/source/_includes/installation/operating_system.md index b3f7c2aadb9..780b4fa253f 100644 --- a/source/_includes/installation/operating_system.md +++ b/source/_includes/installation/operating_system.md @@ -1,4 +1,4 @@ -# Install Home Assistant Operating System +## Install Home Assistant Operating System {% assign release_url = "https://github.com/home-assistant/operating-system/releases/download" %} diff --git a/source/_includes/javascripts/scripts.html b/source/_includes/javascripts/scripts.html index 68dea471f5a..aa54f12cd05 100644 --- a/source/_includes/javascripts/scripts.html +++ b/source/_includes/javascripts/scripts.html @@ -1,29 +1,16 @@ - - - + diff --git a/source/_includes/site/head.html b/source/_includes/site/head.html index 586e850d16e..e29ee41bbb6 100644 --- a/source/_includes/site/head.html +++ b/source/_includes/site/head.html @@ -29,6 +29,7 @@ {% if site.social.mastodon.account %}{% endif %} + diff --git a/source/_includes/site/header.html b/source/_includes/site/header.html index 15089c8349c..f2cbb54b3d6 100644 --- a/source/_includes/site/header.html +++ b/source/_includes/site/header.html @@ -49,18 +49,10 @@
  • Blog
  • Need help?
  • - +
  • - - diff --git a/source/_includes/voice_assistant/install_esp_firmware.md b/source/_includes/voice_assistant/install_esp_firmware.md new file mode 100644 index 00000000000..f5529cc1556 --- /dev/null +++ b/source/_includes/voice_assistant/install_esp_firmware.md @@ -0,0 +1,32 @@ +{% capture product_name %}{{ include.name | default: page.product_name }}{% endcapture %} + +2. Connect the {{ product_name }} to your computer. + - In the pop-up window, view the available ports. + - Plug the USB-C cable into the {{ product_name }} and connect it to your computer.{% if page.product_name == 'ESP32-S3-BOX' %} + - If you have an ESP32-S3-BOX-3, plug it into the box directly, not into the docking station (not into the blue part). {% endif %} + - In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**.{% if page.product_name == 'ATOM Echo' %} + - **Troubleshooting**: If no new port shows, your system may be missing a driver. Close the pop-up window. + - In the dialog, select the CH342 driver, install it, then **Try again**. + ![Open My link](/images/assist/esp32-atom-flash-no-port.png){% endif %} +3. Select **Install Voice Assistant**, then **Install**. + - Once the installation is complete, select **Next**. + - Add the {{ product_name }} to your Wi-Fi: + - When prompted, select your network from the list and enter the credentials to your 2.4 GHz Wi-Fi network. + - Select **Connect**. + - The {{ product_name }} now joined your network. Select **Add to Home Assistant**. +4. This opens the **My** link to Home Assistant. + - If you have not used My Home Assistant before, you will need to configure it. If your Home Assistant URL is not accessible on `http://homeassistant.local:8123`, replace it with the URL to your Home Assistant instance. + - Open the link. + ![Open My link](/images/assist/esp32-atom-flash-06.png) +5. Select **OK**. + + ![Set up ESPHome](/images/assist/esp32-atom-flash-07.png) +6. **Troubleshooting**: If, at this stage, a dialog opens, prompting you to enter the connection settings of your ESPHome node, it means there is already a configuration set up for that ESPHome device. + - Close the dialog and perform the procedure on [deleting the {{ product_name }} configuration from ESPHome]({{ config_link }}). + - Restart Home Assistant. + - Then, under {% my integrations title="**Settings** > **Devices & Services**" %}, your {{ product_name }} should be discovered. +7. To add the newly discovered device, select the {{ product_name }} from the list. + - Add your {{ product_name }} to a room and select **Finish**. +8. You should now see the **ESPHome** integration. + ![New ESPHome device discovered](/images/assist/m5stack-atom-echo-discovered-33.png) + diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown index 2cf9458ed65..cffe3bfacaf 100644 --- a/source/_integrations/alarm_control_panel.mqtt.markdown +++ b/source/_integrations/alarm_control_panel.mqtt.markdown @@ -27,8 +27,6 @@ The integration can control your Alarm Panel by publishing to the `command_topic ## Configuration - - To enable this platform, add the following lines to your `configuration.yaml`: ```yaml diff --git a/source/_integrations/binary_sensor.mqtt.markdown b/source/_integrations/binary_sensor.mqtt.markdown index 4666b311bc0..6d2cde1fdda 100644 --- a/source/_integrations/binary_sensor.mqtt.markdown +++ b/source/_integrations/binary_sensor.mqtt.markdown @@ -20,7 +20,6 @@ Stateless devices such as buttons, remote controls etc are better represented by The `mqtt` binary sensor platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT sensor device goes offline (i.e., publishes `payload_not_available` to an `availability` topic), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability` topic is defined, Home Assistant will consider the MQTT device to be `available` and will display its state. - To use an MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: @@ -78,9 +77,9 @@ device: required: false type: string connections: - description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list hw_version: description: The hardware version of the device. required: false diff --git a/source/_integrations/button.mqtt.markdown b/source/_integrations/button.mqtt.markdown index 1821dafe2aa..b27e5a3d42e 100644 --- a/source/_integrations/button.mqtt.markdown +++ b/source/_integrations/button.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` button platform lets you send an MQTT message when the button is pres ## Configuration - - ```yaml # Example configuration.yaml entry mqtt: diff --git a/source/_integrations/calendar.markdown b/source/_integrations/calendar.markdown index de20cd1328d..dc539ba1af0 100644 --- a/source/_integrations/calendar.markdown +++ b/source/_integrations/calendar.markdown @@ -192,10 +192,10 @@ data: {% endraw %} -### Service `calendar.list_events` +### Service `calendar.get_events` This service populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data) -with calendar events within a date range. +with calendar events within a date range. It can return events from multiple calendars. | Service data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------- | --------| @@ -209,20 +209,20 @@ Use only one of `end_date_time` or `duration`. - -{% raw %} ```yaml -service: calendar.list_events +service: calendar.get_events target: - entity_id: calendar.school + entity_id: + - calendar.school + - calendar.work data: duration: hours: 24 response_variable: agenda ``` -{% endraw %} -The response data field `events` is a list of events with these fields: +The response data contains a field for every calendar entity (e.g. `calendar.school` and `calendar.work` in this case). +Every calendar entity has a field `events` containing a list of events with these fields: | Response data | Description | Example | | ---------------------- | ----------- | -------- | @@ -236,16 +236,17 @@ This example uses a template with response data in another service call: {% raw %} ```yaml -service: notify.gmail_com +service: notify.nina data: - target: gduser1@workspacesamples.dev title: Daily agenda for {{ now().date() }} message: >- - Your agenda for today: -

    - {% for event in agenda.events %} + Your school calendar for today: + {% for event in agenda["calendar.school_calendar"]["events"] %} + {{ event.start}}: {{ event.summary }}
    + {% endfor %} + Your work calendar for today: + {% for event in agenda["calendar.work_calendar"]["events"] %} {{ event.start}}: {{ event.summary }}
    {% endfor %} -

    ``` {% endraw %} diff --git a/source/_integrations/camera.mqtt.markdown b/source/_integrations/camera.mqtt.markdown index 4e09c0bad5a..d958bd78791 100644 --- a/source/_integrations/camera.mqtt.markdown +++ b/source/_integrations/camera.mqtt.markdown @@ -14,8 +14,6 @@ This can be used with an application or a service capable of sending images thro ## Configuration - - To enable this camera in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -78,7 +76,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/climate.mqtt.markdown b/source/_integrations/climate.mqtt.markdown index 94d91a0d3f2..9bd168069ed 100644 --- a/source/_integrations/climate.mqtt.markdown +++ b/source/_integrations/climate.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` climate platform lets you control your MQTT enabled HVAC devices. ## Configuration - - To enable this climate platform in your installation, first add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/cover.mqtt.markdown b/source/_integrations/cover.mqtt.markdown index b42a4230b2d..5a919d36ea2 100644 --- a/source/_integrations/cover.mqtt.markdown +++ b/source/_integrations/cover.mqtt.markdown @@ -27,8 +27,6 @@ Optimistic mode can be forced, even if a `state_topic` / `position_topic` is def The `mqtt` cover platform optionally supports a list of `availability` topics to receive online and offline messages (birth and LWT messages) from the MQTT cover device. During normal operation, if the MQTT cover device goes offline (i.e., publishes a matching `payload_not_available` to any `availability` topic), Home Assistant will display the cover as "unavailable". If these messages are published with the `retain` flag set, the cover will receive an instant update after subscription and Home Assistant will display correct availability state of the cover when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the cover as "unavailable" when Home Assistant starts up. - - To use your MQTT cover in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -89,7 +87,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/device_tracker.mqtt.markdown b/source/_integrations/device_tracker.mqtt.markdown index a198427b6f3..ebb659809aa 100644 --- a/source/_integrations/device_tracker.mqtt.markdown +++ b/source/_integrations/device_tracker.mqtt.markdown @@ -13,8 +13,6 @@ The `mqtt` device tracker platform allows you to define new device_trackers thro ## Configuration - - To use this device tracker in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -75,9 +73,9 @@ device: required: false type: string connections: - description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list hw_version: description: The hardware version of the device. required: false diff --git a/source/_integrations/device_trigger.mqtt.markdown b/source/_integrations/device_trigger.mqtt.markdown index c14cf884a27..14eea3c1761 100644 --- a/source/_integrations/device_trigger.mqtt.markdown +++ b/source/_integrations/device_trigger.mqtt.markdown @@ -53,9 +53,9 @@ device: required: false type: string connections: - description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list identifiers: description: A list of IDs that uniquely identify the device. For example a serial number. required: false diff --git a/source/_integrations/devolo_home_network.markdown b/source/_integrations/devolo_home_network.markdown index 2e311a037b8..3c32f23cd68 100755 --- a/source/_integrations/devolo_home_network.markdown +++ b/source/_integrations/devolo_home_network.markdown @@ -53,22 +53,22 @@ Currently the following device types within Home Assistant are supported. ### Images -- QR code of your guest wifi credentials +- QR code of your guest Wi-Fi credentials - Updates every 15 seconds if changes are detected - Is enabled by default ### Presence detection -- Detect presence of devices connected to the main or the guest wifi +- Detect presence of devices connected to the main or the guest Wi-Fi - Updates every 15 seconds - Automatically adds new devices as disabled entities unless disabled via system option ### Sensors -- Number of connected wifi clients +- Number of connected Wi-Fi clients - Updates every 15 seconds - Is enabled by default -- Number of neighbored wifi networks +- Number of neighbored Wi-Fi networks - Updates every 5 minutes - Is disabled by default because it runs quite long - Number of PLC devices in the same PLC network @@ -80,7 +80,7 @@ Currently the following device types within Home Assistant are supported. ### Switch -- Turn on/off guest wifi +- Turn on/off guest Wi-Fi - Is enabled by default - Turn on/off the device LEDs - Is enabled by default @@ -106,7 +106,7 @@ The list of supported devolo devices depends on the device firmware and the devi - dLAN 550+ Wifi - dLAN 550 WiFi -Since firmware 7.10 also the following device without Wifi can be used as long as the corresponding entities are supported: +Since firmware 7.10 also the following device without Wi-Fi can be used as long as the corresponding entities are supported: - Magic 2 LAN triple - Magic 2 DinRail diff --git a/source/_integrations/discord.markdown b/source/_integrations/discord.markdown index a5edbf69e38..71a5e39f72e 100644 --- a/source/_integrations/discord.markdown +++ b/source/_integrations/discord.markdown @@ -51,7 +51,7 @@ Now use the Discord Authorization page with the **Application ID** of your [appl Wait for the confirmation which should say "Authorized". -Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. In The Discord application go to **Settings** > **Advanced** > **Enable Developer Mode**. +Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. Open Discord and go to **User Settings** > **Advanced** > **Enable Developer Mode**. User settings can be found next to your username in Discord. ![Screenshot of Discord bot create prompt](/images/screenshots/discord-api.png) diff --git a/source/_integrations/dormakaba_dkey.markdown b/source/_integrations/dormakaba_dkey.markdown index dd0e760b71c..f490e7bb799 100644 --- a/source/_integrations/dormakaba_dkey.markdown +++ b/source/_integrations/dormakaba_dkey.markdown @@ -25,3 +25,9 @@ In addition to a lock entity, each added dKey lock will also have: - A battery sensor - A binary_sensor which shows if the door is open or not - A binary_sensor which shows the position of the lock's dead bolt + +
    + +The Dormakaba dKey lock is currently not working with USB dongles or built-in Bluetooth radios, only [ESPHome Bluetooth proxies](/integrations/bluetooth/#remote-adapters-bluetooth-proxies) work reliably. + +
    diff --git a/source/_integrations/epson.markdown b/source/_integrations/epson.markdown index 7237026bd94..e89a645d235 100644 --- a/source/_integrations/epson.markdown +++ b/source/_integrations/epson.markdown @@ -24,7 +24,7 @@ When you want to add a device for the first time, turn it on before following th - turn on/off - set input -- set/get color mode +- set/get color mode including high/low lamp - increase/decrease volume - mute/unmute audio - send next/previous track @@ -37,6 +37,7 @@ When you want to add a device for the first time, turn it on before following th - Epson EH-TW5350 - Epson EH-TW7000 +- Epson EH-TW9400W (shares platform with 7400/8400/9400(w)) To make this module work you need to connect your projector to your LAN. The best is to use iProjection app by Epson to test if it is working. diff --git a/source/_integrations/event.mqtt.markdown b/source/_integrations/event.mqtt.markdown index f386c06d8bc..7bf28a846b3 100644 --- a/source/_integrations/event.mqtt.markdown +++ b/source/_integrations/event.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` event platform allows you to process event info from an MQTT message. ## Configuration - - ```yaml # Example configuration.yaml entry mqtt: diff --git a/source/_integrations/fan.mqtt.markdown b/source/_integrations/fan.mqtt.markdown index 9cc7d7a23cb..fed05d176b9 100644 --- a/source/_integrations/fan.mqtt.markdown +++ b/source/_integrations/fan.mqtt.markdown @@ -18,8 +18,6 @@ When a `state_topic` is not available, the fan will work in optimistic mode. In Optimistic mode can be forced even if a `state_topic` is available. Try to enable it if you are experiencing incorrect fan operation. - - To enable MQTT fans in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -86,7 +84,7 @@ device: connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list hw_version: description: The hardware version of the device. required: false diff --git a/source/_integrations/fastdotcom.markdown b/source/_integrations/fastdotcom.markdown index a50bef73de9..5ade5761a6e 100644 --- a/source/_integrations/fastdotcom.markdown +++ b/source/_integrations/fastdotcom.markdown @@ -21,7 +21,7 @@ The `fastdotcom` integration uses the [Fast.com](https://fast.com/) web service
    Currently, the Fast.com integration only supports measuring download bandwidth. -If you want to measure bandwidth metrics other then download such as ping and upload, utilize the [Speedtest.net](/integrations/speedtestdotnet) integration. +If you want to measure bandwidth metrics other than download such as ping and upload, utilize the [Speedtest.net](/integrations/speedtestdotnet) integration.
    diff --git a/source/_integrations/frontier_silicon.markdown b/source/_integrations/frontier_silicon.markdown index 77e2aeb7fbb..709c0810454 100644 --- a/source/_integrations/frontier_silicon.markdown +++ b/source/_integrations/frontier_silicon.markdown @@ -15,7 +15,7 @@ ha_ssdp: true ha_config_flow: true --- -This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the UNDOK app. +This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the OKTIV or UNDOK apps. ## Supported models @@ -28,11 +28,12 @@ Supported devices include, but are not limited to: - Silvercrest: [SIRD 14 C2 (archived website)] - Teufel: [Radio 3sixty (2019)] - Roberts: [Roberts Stream 94i] -- Some models from: Auna, Technisat, Revo, Pinell, Como Audio +- TechniSat: [DIGITRADIO 10 IR], and some other models +- Some models from: Auna, Revo, Pinell, Como Audio This integration was developed and tested with a [Roberts Stream 94i]. -If your device is supported by the UNDOK app, then it is also supported by this integration. +If your device is supported by the OKTIV or UNDOK apps, then it is also supported by this integration. ## Prerequisites @@ -90,3 +91,4 @@ This renders the usage of [UNDOK] almost impossible for these older devices, as [Radio 3sixty (2019)]: https://teufel.de/radio-3sixty-2019-105437000 [SIRD 14 C2 (archived website)]: https://web.archive.org/web/20191011141311/https://www.silvercrest-multiroom.de/produkte/stereo-internet-radio/ [Roberts Stream 94i]: https://www.robertsradio.com/en-gb/stream-94i +[DIGITRADIO 10 IR]: https://www.technisat.com/en_XX/DIGITRADIO-10-IR/352-10774-22920/ diff --git a/source/_integrations/google_generative_ai_conversation.markdown b/source/_integrations/google_generative_ai_conversation.markdown index 65cd64d6d5f..754e7d2f7f8 100644 --- a/source/_integrations/google_generative_ai_conversation.markdown +++ b/source/_integrations/google_generative_ai_conversation.markdown @@ -12,7 +12,7 @@ ha_domain: google_generative_ai_conversation ha_integration_type: service --- -The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://developers.generativeai.google/) in Home Assistant. +The Google Generative AI integration adds a conversation agent powered by [Google Generative AI](https://ai.google.dev/) in Home Assistant. This conversation agent is unable to control your house. The Google Generative AI conversation agent can be used in automations, but not as a [sentence trigger](/docs/automation/trigger/#sentence-trigger). It can only query information that has been provided by Home Assistant. To be able to answer questions about your house, Home Assistant will need to provide Google Generative AI with the details of your house, which include areas, devices and their states. @@ -24,8 +24,6 @@ This integration requires an API key to use, [which you can generate here](https The Google Generative AI API key is used to authenticate requests to the Google Generative AI API. To generate an API key take the following steps: -- Join the PaLM API and MakerSuite [waitlist](https://makersuite.google.com/waitlist). -- Wait several days for an email with subject "It’s your turn to use the PaLM API and MakerSuite". - Visit the [API Keys page](https://makersuite.google.com/app/apikey) to retrieve the API key you'll use to configure the integration. {% include integrations/option_flow.md %} diff --git a/source/_integrations/homewizard.markdown b/source/_integrations/homewizard.markdown index b9408b93777..af10aac801b 100644 --- a/source/_integrations/homewizard.markdown +++ b/source/_integrations/homewizard.markdown @@ -18,6 +18,8 @@ ha_platforms: ha_zeroconf: true ha_integration_type: integration ha_quality_scale: platinum +works_with: + - local --- Integration for the [HomeWizard Energy](https://www.homewizard.com) platform. It can collect data locally from the HomeWizard Energy products and create them as sensors in Home Assistant. diff --git a/source/_integrations/humidifier.mqtt.markdown b/source/_integrations/humidifier.mqtt.markdown index 77ceb813694..e7b71d0b40e 100644 --- a/source/_integrations/humidifier.mqtt.markdown +++ b/source/_integrations/humidifier.mqtt.markdown @@ -18,8 +18,6 @@ When a `state_topic` is not available, the humidifier will work in optimistic mo Optimistic mode can be forced even if a `state_topic` is available. Try to enable it if you are experiencing incorrect humidifier operation. - - To enable MQTT humidifiers in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -105,7 +103,7 @@ device: connections: description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list hw_version: description: The hardware version of the device. required: false diff --git a/source/_integrations/image.mqtt.markdown b/source/_integrations/image.mqtt.markdown index 6d6b19c75bc..4f9af9fafc8 100644 --- a/source/_integrations/image.mqtt.markdown +++ b/source/_integrations/image.mqtt.markdown @@ -18,8 +18,6 @@ An alternative setup is to use the `url_topic` option to receive an image URL fo ## Configuration - - To enable this image in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -81,7 +79,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/intent_script.markdown b/source/_integrations/intent_script.markdown index 7c60a76dc92..9cf1b9f6817 100644 --- a/source/_integrations/intent_script.markdown +++ b/source/_integrations/intent_script.markdown @@ -98,7 +98,7 @@ conversation: intent_script: EventCountToday: action: - - service: calendar.list_events + - service: calendar.get_events target: entity_id: calendar.my_calendar data_template: @@ -108,7 +108,7 @@ intent_script: - stop: "" response_variable: result # and return it speech: - text: "{{ action_response.events | length }}" # use the action's response + text: "{{ action_response['calendar.my_calendar'].events | length }}" # use the action's response ``` {% endraw %} diff --git a/source/_integrations/isy994.markdown b/source/_integrations/isy994.markdown index cf244056372..4a830722975 100644 --- a/source/_integrations/isy994.markdown +++ b/source/_integrations/isy994.markdown @@ -201,7 +201,7 @@ Delete a Z-Wave Lock User Code via the ISY. #### Service `isy994.rename_node` -Rename a node or group (scene) on the ISY994. Note: this will not automatically change the Home Assistant Entity Name or Entity ID to match. The entity name and ID will only be updated after calling `isy994.reload` or restarting Home Assistant, and ONLY IF you have not already customized the name within Home Assistant. +Rename a node or group (scene) on the ISY994. Note: this will not automatically change the Home Assistant Entity Name or Entity ID to match. The entity name and ID will only be updated after reloading the integration or restarting Home Assistant, and ONLY IF you have not already customized the name within Home Assistant. | Service data attribute | Optional | Description | | ---------------------- | -------- | -------------------------------------------------------------- | diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown index 8a801597ec4..ed73a591dcc 100644 --- a/source/_integrations/knx.markdown +++ b/source/_integrations/knx.markdown @@ -544,7 +544,7 @@ name: address: description: Group address to send to. required: true - type: [string, list] + type: string payload: description: The raw payload that shall be sent. required: false diff --git a/source/_integrations/lawn_mower.mqtt.markdown b/source/_integrations/lawn_mower.mqtt.markdown index efbc6eda481..f027c913d2a 100644 --- a/source/_integrations/lawn_mower.mqtt.markdown +++ b/source/_integrations/lawn_mower.mqtt.markdown @@ -77,7 +77,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example, the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/led_ble.markdown b/source/_integrations/led_ble.markdown index 8fbaec6d290..220cb40afa5 100644 --- a/source/_integrations/led_ble.markdown +++ b/source/_integrations/led_ble.markdown @@ -49,6 +49,6 @@ These devices have been sold under many brands, including: - REYSURPIUS - SUPERNIGHT - Triones -- Zengee +- [Zengge](http://www.zengge.com/sy) - YONEDA - Zerproc diff --git a/source/_integrations/light.mqtt.markdown b/source/_integrations/light.mqtt.markdown index 774b013eb4d..1b68606524d 100644 --- a/source/_integrations/light.mqtt.markdown +++ b/source/_integrations/light.mqtt.markdown @@ -42,8 +42,6 @@ Optimistic mode can be forced, even if the `state_topic` is available. Try to en Home Assistant internally assumes that a light's state corresponds to a defined `color_mode`. The state of MQTT lights with default schema and support for both color and color temperature will set the `color_mode` according to the last received valid color or color temperature. Optionally, a `color_mode_state_topic` can be configured for explicit control of the `color_mode` - - ```yaml # Example configuration.yaml entry mqtt: diff --git a/source/_integrations/lock.mqtt.markdown b/source/_integrations/lock.mqtt.markdown index 2e513f451c5..03a9482798d 100644 --- a/source/_integrations/lock.mqtt.markdown +++ b/source/_integrations/lock.mqtt.markdown @@ -21,8 +21,6 @@ Optimistic mode can be forced, even if state topic is available. Try to enable i It's mandatory for locks to support `lock` and `unlock`. A lock may optionally support `open`, (e.g. to open the bolt in addition to the latch), in this case, `payload_open` is required in the configuration. If the lock is in optimistic mode, it will change states to `unlocked` when handling the `open` command. An MQTT lock can also report the intermediate states `unlocking`, `locking` or `jammed` if the motor reports a jammed state. - - To enable MQTT locks in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/motion_blinds.markdown b/source/_integrations/motion_blinds.markdown index f848ec71cf6..be110615e79 100644 --- a/source/_integrations/motion_blinds.markdown +++ b/source/_integrations/motion_blinds.markdown @@ -20,6 +20,7 @@ The integration allows you to control [Motion Blinds](https://motionblinds.com/) Additionally the following brands have been reported to also work with this integration: +- [Acomax](https://www.acomax.de/) - [AMP Motorization](https://www.ampmotorization.com/) - [Bliss Automation - Alta Window Fashions](https://www.altawindowfashions.com/product/automation/bliss-automation/) - [Bloc Blinds](https://www.blocblinds.com/) @@ -50,6 +51,7 @@ The following bridges are reported to work with this integration: - DD7002B Brel-Home box - D1554 Brel Home USB plug - Brel HUB-03 + - Acomax FX-I 620 Bridge Maxi {% include integrations/config_flow.md %} diff --git a/source/_integrations/mqtt.markdown b/source/_integrations/mqtt.markdown index 3680e4fcffa..8233f996e53 100644 --- a/source/_integrations/mqtt.markdown +++ b/source/_integrations/mqtt.markdown @@ -683,6 +683,8 @@ The following software has built-in support for MQTT discovery: - [ArduinoHA](https://github.com/dawidchyrzynski/arduino-home-assistant) - [Arilux AL-LC0X LED controllers](https://github.com/smrtnt/Arilux_AL-LC0X) +- [ble2mqtt](https://github.com/devbis/ble2mqtt) +- [digitalstrom-mqtt](https://github.com/gaetancollaud/digitalstrom-mqtt) - [ebusd](https://github.com/john30/ebusd) - [ecowitt2mqtt](https://github.com/bachya/ecowitt2mqtt) - [EMS-ESP32 (and EMS-ESP)](https://github.com/emsesp/EMS-ESP32) diff --git a/source/_integrations/number.mqtt.markdown b/source/_integrations/number.mqtt.markdown index 46ee2aed08b..d49876b4daa 100644 --- a/source/_integrations/number.mqtt.markdown +++ b/source/_integrations/number.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` Number platform allows you to integrate devices that might expose con ## Configuration - - To enable MQTT Number in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -70,7 +68,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/ping.markdown b/source/_integrations/ping.markdown index 178d5e15f6a..c4a65a1a457 100644 --- a/source/_integrations/ping.markdown +++ b/source/_integrations/ping.markdown @@ -27,8 +27,8 @@ There is currently support for the following device types within Home Assistant: ## Polling interval -By default, the integration will ping the device every 5 minutes. -If you wish to do a ping more frequently, you can disable the automatic refresh in the integration's system options (Enable polling for updates) and create your own automation with your desired frequency. +By default, the integration will ping the device every 30 seconds. +If you wish to do a ping at a different interval, you can disable the automatic refresh in the integration's system options (Enable polling for updates) and create your own automation with your desired frequency. For more detailed steps on how to define a custom interval, follow the procedure below. @@ -47,7 +47,7 @@ To change the settings, go to {% my integrations title="**Settings** > **Devices ## Binary sensor The `ping` binary sensor platform allows you to use `ping` to send ICMP echo requests. This way you can check if a given host is online and determine the round trip times from your Home Assistant instance to that system. -This sensor is enabled by default. The default polling interval is 5 minutes. +This sensor is enabled by default. The default polling interval is 30 seconds. The sensor exposes the different round trip times in milliseconds measured by `ping` as attributes: diff --git a/source/_integrations/python_script.markdown b/source/_integrations/python_script.markdown index 0ccc00e16a2..85943b59336 100644 --- a/source/_integrations/python_script.markdown +++ b/source/_integrations/python_script.markdown @@ -132,8 +132,8 @@ Services can also respond with data. Retrieving this data in your Python script ```python # get_forecast.py -service_data = {"type": "daily", "entity_id": "weather.YOUR_HOME"} -current_forecast = hass.services.call("weather", "get_forecast", service_data, blocking=True, return_response=True) +service_data = {"type": "daily", "entity_id": ["weather.YOUR_HOME", "weather.YOUR_SCHOOL"]} +current_forecast = hass.services.call("weather", "get_forecasts", service_data, blocking=True, return_response=True) ``` ## Documenting your Python scripts diff --git a/source/_integrations/radio_browser.markdown b/source/_integrations/radio_browser.markdown index ed98de91712..edbedf8e5bb 100644 --- a/source/_integrations/radio_browser.markdown +++ b/source/_integrations/radio_browser.markdown @@ -17,12 +17,12 @@ The Radio Browser integration allows you to use the directory of radio stations collected on [Radio Browser](https://www.radio-browser.info) in Home Assistant. -All radio stations can be browsed and played via the Media panel in -Home Assistant. +{% include integrations/config_flow.md %} -Additionally, when creating automations, the "Play Media" action can be used -to pick a station from the directory. This makes it possible to create -an automation that e.g., starts playing your favorite radio station on your +To start the Radio Browser, in Home Assistant, go to **Media** > **Radio Browser** and select the speaker. +![Starting the radio browser](/images/integrations/radio_browser/radio_browser.png) + +You can also use the Radio Browser in automations. When creating an automation, use the **Play Media** action to pick a station from the directory. This allows you for example to create +an automation that starts playing your favorite radio station on your Cast devices. -{% include integrations/config_flow.md %} diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown index d268a62f168..ed332795e11 100644 --- a/source/_integrations/reolink.markdown +++ b/source/_integrations/reolink.markdown @@ -238,6 +238,7 @@ The following models have been tested and confirmed to work: - [RLC-520A](https://reolink.com/product/rlc-520a/) - RLC-522* - [RLC-810A](https://reolink.com/product/rlc-810a/) +- [RLC-810WA](https://reolink.com/product/rlc-810wa/) - [RLC-811A](https://reolink.com/product/rlc-811a/) - [RLC-81PA](https://reolink.com/product/rlc-81pa/) - [RLC-820A](https://reolink.com/product/rlc-820a/) @@ -248,6 +249,7 @@ The following models have been tested and confirmed to work: - [RLN8-410 NVR](https://reolink.com/product/rln8-410/) - [RLN16-410 NVR](https://reolink.com/product/rln16-410/) - [RLN36 NVR](https://reolink.com/product/rln36/) +- [RLN12W NVR](https://reolink.com/product/rln12w/) - [Reolink Duo WiFi](https://reolink.com/product/reolink-duo-wifi-v1/) - [Reolink Duo 2 WiFi](https://reolink.com/product/reolink-duo-wifi/) - Reolink Duo Floodlight ([PoE](https://reolink.com/product/reolink-duo-floodlight-poe/) and [Wi-Fi](https://reolink.com/product/reolink-duo-floodlight-wifi/)) diff --git a/source/_integrations/scene.mqtt.markdown b/source/_integrations/scene.mqtt.markdown index ffc3c3bc503..bfbe7511bac 100644 --- a/source/_integrations/scene.mqtt.markdown +++ b/source/_integrations/scene.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` scene platform lets you control your MQTT enabled scenes. ## Configuration - - To enable a MQTT scene in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/select.mqtt.markdown b/source/_integrations/select.mqtt.markdown index b842a5ce95f..348fc90b29f 100644 --- a/source/_integrations/select.mqtt.markdown +++ b/source/_integrations/select.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` Select platform allows you to integrate devices that might expose con ## Configuration - - To enable MQTT Select in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -82,7 +80,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/sensor.mqtt.markdown b/source/_integrations/sensor.mqtt.markdown index 9c8d3222844..e6d6d9511f2 100644 --- a/source/_integrations/sensor.mqtt.markdown +++ b/source/_integrations/sensor.mqtt.markdown @@ -12,8 +12,6 @@ This `mqtt` sensor platform uses the MQTT message payload as the sensor value. I ## Configuration - - To use your MQTT sensor in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/siren.mqtt.markdown b/source/_integrations/siren.mqtt.markdown index 9524be4e68a..dc77a556057 100644 --- a/source/_integrations/siren.mqtt.markdown +++ b/source/_integrations/siren.mqtt.markdown @@ -18,8 +18,6 @@ When a `state_topic` is not available, the siren will work in optimistic mode. I Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect operation. - - To enable this siren in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/spotify.markdown b/source/_integrations/spotify.markdown index a86c1b6ef12..06a864c5b16 100644 --- a/source/_integrations/spotify.markdown +++ b/source/_integrations/spotify.markdown @@ -43,7 +43,7 @@ to allow you to log in with your Spotify account. 2. Log in to the [Spotify Developer Dashboard](https://developer.spotify.com/dashboard). -3. Click the [**Create app**](https://developer.spotify.com/dashboard/create) button in the top right. +3. Select the [**Create app**](https://developer.spotify.com/dashboard/create) button in the top right. ![Spotify Developer Dashboard](/images/integrations/spotify/create-spotify-application.png) @@ -57,22 +57,24 @@ to allow you to log in with your Spotify account. ![Creating a Spotify Application](/images/integrations/spotify/create-spotify-application.png) -5. Check the box to agree with the requirements and click the **Save** button +5. Select Web API. + +6. Check the box to agree with the requirements and click the **Save** button to confirm the application creation. -6. Spotify will now show the new application you have just created. Click on +7. Spotify will now show the new application you have just created. Select the **Settings** button in the top right to configure it. ![Edit the Spotify Application settings](/images/integrations/spotify/edit-settings.png) -7. Before we can start configuring Home Assistant, we need to grab the application +8. Before we can start configuring Home Assistant, we need to grab the application credentials Home Assistant needs. - Click on the **View client secret** button to reveal the client secret. + Select on the **View client secret** button to reveal the client secret. ![Show the client secret of the Spotify Application](/images/integrations/spotify/show-client-secret.png) -8. The _"Client ID"_ and _"Client secret"_ are the two pieces of information +9. The _"Client ID"_ and _"Client secret"_ are the two pieces of information that Home Assistant needs to communicate with Spotify and is what we call: Application credentials. diff --git a/source/_integrations/ssdp.markdown b/source/_integrations/ssdp.markdown index d1a2b498c51..1384463fb9f 100644 --- a/source/_integrations/ssdp.markdown +++ b/source/_integrations/ssdp.markdown @@ -33,6 +33,7 @@ The following integrations are automatically discovered by the SSDP integration: - [Denon AVR](/integrations/denonavr/) - [Denon HEOS](/integrations/heos/) - [DirecTV](/integrations/directv/) + - [Frontier Silicon](/integrations/frontier_silicon/) - [Huawei LTE](/integrations/huawei_lte/) - [Hyperion](/integrations/hyperion/) - [Keenetic NDMS2 Router](/integrations/keenetic_ndms2/) diff --git a/source/_integrations/switch.mqtt.markdown b/source/_integrations/switch.mqtt.markdown index 77b7c13d181..66a11eace31 100644 --- a/source/_integrations/switch.mqtt.markdown +++ b/source/_integrations/switch.mqtt.markdown @@ -18,8 +18,6 @@ When a `state_topic` is not available, the switch will work in optimistic mode. Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect switch operation. - - To enable this switch in your installation, add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/tag.mqtt.markdown b/source/_integrations/tag.mqtt.markdown index eda4f07dc55..915db473c05 100644 --- a/source/_integrations/tag.mqtt.markdown +++ b/source/_integrations/tag.mqtt.markdown @@ -34,9 +34,9 @@ device: required: false type: string connections: - description: "A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `'connections': ['mac', '02:5b:26:a8:dc:12']`." + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false - type: [list, map] + type: list hw_version: description: The hardware version of the device. required: false diff --git a/source/_integrations/template.markdown b/source/_integrations/template.markdown index 41cbeada74b..7915acbdaba 100644 --- a/source/_integrations/template.markdown +++ b/source/_integrations/template.markdown @@ -779,7 +779,7 @@ template: - platform: time_pattern hours: /1 action: - - service: weather.get_forecast + - service: weather.get_forecasts data: type: hourly target: @@ -790,7 +790,7 @@ template: unique_id: weather_forecast_hourly state: "{{ now().isoformat() }}" attributes: - forecast: "{{ hourly.forecast }}" + forecast: "{{ hourly['weather.home'].forecast }}" ``` {% endraw %} diff --git a/source/_integrations/text.mqtt.markdown b/source/_integrations/text.mqtt.markdown index 81f03dc4b62..fc32722f0ea 100644 --- a/source/_integrations/text.mqtt.markdown +++ b/source/_integrations/text.mqtt.markdown @@ -76,7 +76,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/tplink.markdown b/source/_integrations/tplink.markdown index 3cd7a9da1f9..3dc58f8c202 100644 --- a/source/_integrations/tplink.markdown +++ b/source/_integrations/tplink.markdown @@ -55,7 +55,7 @@ See [Supported Devices in python-kasa](https://github.com/python-kasa/python-kas - KP125 - KP401 - EP10 -- EP25 +- EP25 (HW versions 2.5 and earlier) ### Power Strips @@ -153,7 +153,7 @@ data: random_seed: 80 ``` -### Seqeuence Effect - Service `tplink.sequence_effect` +### Sequence Effect - Service `tplink.sequence_effect` The light strips allow setting a sequence effect. diff --git a/source/_integrations/tuya.markdown b/source/_integrations/tuya.markdown index ea359545ff3..aeadaf13740 100644 --- a/source/_integrations/tuya.markdown +++ b/source/_integrations/tuya.markdown @@ -61,32 +61,37 @@ This is a separate account from the one you made for the app. You cannot log in ### Create a project 1. Log in to the [Tuya IoT Platform](https://iot.tuya.com/). -2. In the left navigation bar, click `Cloud` > `Development`. -3. On the page that appears, click `Create Cloud Project`. -4. In the `Create Cloud Project` dialog box, configure `Project Name`, `Description`, `Industry`, and `Data Center`. For the `Development Method` field, select `Smart Home` from the dropdown list. For the `Data Center` field, select the zone you are located in. Refer to the country/data center mapping list [here](https://github.com/tuya/tuya-home-assistant/blob/main/docs/regions_dataCenters.md) to choose the right data center for the country you are in. - ![](/images/integrations/tuya/image_001.png) -5. Click `Create` to continue with the project configuration. -6. In Configuration Wizard, make sure you add `Industry Basic Service`, `Smart Home Basic Service` and `Device Status Notification` APIs. The list of API should look like this: +2. In the left navigation bar, select **Cloud** > **Development**. +3. On the page that appears, select **Create Cloud Project**. +4. In the **Create Cloud Project** dialog box, configure **Project Name**, **Description**, **Industry**, and **Data Center**. + - For the **Development Method** field, select **Smart Home** from the dropdown list. + - For the **Data Center** field, select the zone you are located in. + - Refer to the country/data center mapping list [here](https://github.com/tuya/tuya-home-assistant/blob/main/docs/regions_dataCenters.md) to choose the right data center for the country you are in. + ![](/images/integrations/tuya/image_001.png) +5. Select **Create** to continue with the project configuration. +6. In the Configuration Wizard, make sure you add **Industry Basic Service**, **Smart Home Basic Service** and **Device Status Notification** APIs. The list of APIs should look like this: ![](/images/integrations/tuya/image_002new.png) -7. Click `Authorize`. +7. Select **Authorize**. ### Link devices by app account -1. Navigate to the `Devices` tab. -2. Click `Link Tuya App Account` > `Add App Account`. - ![](/images/integrations/tuya/image_003.png) -3. Scan the QR code that appears using the `Tuya Smart` app or `Smart Life` app using the 'Me' section of the app. +1. In **Cloud** > **Development**, open the project that was just created using the link on the far right of the list. +2. Navigate to the **Devices** tab. +3. Select **Link Tuya App Account** > **Add App Account**. + ![](/images/integrations/tuya/image_003.png) +4. Scan the QR code that appears using the **Tuya Smart** app or **Smart Life** app using the 'Me' section of the app. ![](/images/integrations/tuya/image_004.png) -4. Click `Confirm` in the app. -5. To confirm that everything worked, navigate to the `All Devices` tab. Here you should be able to find the devices from the app. -6. If zero devices are imported, try changing the DataCenter and check the account used is the "Home Owner". +5. Select **Confirm** in the app. +6. To confirm that everything worked, navigate to the **All Devices** tab. + - Here you should be able to find the devices from the app. + - If zero devices are imported, try changing the DataCenter and check the account used is the "Home Owner". You can change DataCenter by clicking the Cloud icon on the left menu, then clicking the Edit link in the Operation column for your newly created project. You can change DataCenter in the popup window. ![](/images/integrations/tuya/image_005.png) ### Get authorization key -Click the created project to enter the `Project Overview` page and get the `Authorization Key`. You will need these for setting up the integration. in the next step. +Select the created project to enter the **Project Overview** page and get the **Authorization Key**. You will need these for setting up the integration. in the next step. ![](/images/integrations/tuya/image_006.png) @@ -118,7 +123,7 @@ If no devices show up in Home Assistant: description: > - First, make sure the devices show up in Tuya's cloud portal under the devices tab. - - In the Tuya IoT configuration cloud portal, you must NOT link your non-developer account under the "Users" tab. Doing so will work, and you can even still add the devices under the devices tab, but the API will send 0 devices down to Home Assistant. You must only link the account under the Devices->"Link Tuya App Account". If it shows up on the users tab, be sure to delete it. + - In the Tuya IoT configuration cloud portal, you must NOT link your non-developer account under the "Users" tab. Doing so will work, and you can even still add the devices under the devices tab, but the API will send 0 devices down to Home Assistant. You must only link the account under the **Devices** > **Link Tuya App Account**. If it shows up on the users tab, be sure to delete it. - Your region may not be correctly set. diff --git a/source/_integrations/update.mqtt.markdown b/source/_integrations/update.mqtt.markdown index db85aca9fe9..3e9f96ea834 100644 --- a/source/_integrations/update.mqtt.markdown +++ b/source/_integrations/update.mqtt.markdown @@ -73,7 +73,7 @@ device: required: false type: string connections: - description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": ["mac", "02:5b:26:a8:dc:12"]`.' + description: 'A list of connections of the device to the outside world as a list of tuples `[connection_type, connection_identifier]`. For example the MAC address of a network interface: `"connections": [["mac", "02:5b:26:a8:dc:12"]]`.' required: false type: list hw_version: diff --git a/source/_integrations/water_heater.mqtt.markdown b/source/_integrations/water_heater.mqtt.markdown index f22ec09bba5..75e5cb1779d 100644 --- a/source/_integrations/water_heater.mqtt.markdown +++ b/source/_integrations/water_heater.mqtt.markdown @@ -12,8 +12,6 @@ The `mqtt` water heater platform lets you control your MQTT enabled water heater ## Configuration - - To enable this water heater platform in your installation, first add the following to your `configuration.yaml` file: ```yaml diff --git a/source/_integrations/weather.markdown b/source/_integrations/weather.markdown index 5c9fff4f434..714c7fa52ca 100644 --- a/source/_integrations/weather.markdown +++ b/source/_integrations/weather.markdown @@ -49,7 +49,6 @@ The `weather` {% term entity %} can provide the conditions listed below as its s Detailed weather conditions as well as the unit of measurements used for the conditions are indicated by state attributes. A weather {% term entity %} may not support all the state attributes. -{% raw %} ```yaml apparent_temperature: 12.0 cloud_coverage: 0 @@ -68,37 +67,29 @@ wind_gust_speed: 51.56 wind_speed: 35.17 wind_speed_unit: km/h ``` -{% endraw %} -## Service `weather.get_forecast` +## Service `weather.get_forecasts` -Weather integrations which support weather forecasts expose the forecast using services. The services provided by weather entities are described below, and you can also read more about [Service Calls](/docs/scripts/service-calls/). - -
    - -Some integrations may not support the `weather.get_forecast` service, but instead expose weather forecasts as a state attribute named `forecast`. This behavior is deprecated and will be removed in a future release of Home Assistant Core. - -
    - -This service populates [Response Data](/docs/scripts/service-calls#use-templates-to-handle-response-data) -with a weather forecast. +This service populates [response data](/docs/scripts/service-calls#use-templates-to-handle-response-data) +with a mapping of weather services and their associated forecasts. | Service data attribute | Optional | Description | Example | | ---------------------- | -------- | ----------- | --------| -| `type` | no | The type of forecast, must be one of `daily`, `twice_daily` or `hourly`. | daily +| `type` | no | The type of forecast, must be one of `daily`, `twice_daily`, or `hourly`. The default is `daily`. | daily -{% raw %} ```yaml -service: weather.get_forecast +service: weather.get_forecasts target: - entity_id: weather.home + entity_id: + - weather.tomorrow_io_home_nowcast + - weather.toronto_forecast data: - type: daily + type: hourly response_variable: weather_forecast ``` -{% endraw %} -The response data field `forecast` is a list of forecasted conditions at a given point in time: +The response data field is a mapping of called target entities, each containing the `forecast` field. +`forecast` is a list of forecasted conditions at a given point in time: | Response data | Description | Example | | ---------------------- | ----------- | -------- | @@ -112,7 +103,7 @@ The response data field `forecast` is a list of forecasted conditions at a given | `precipitation_probability` | The probability of precipitation in %. | 0 | `precipitation` | The precipitation amount in the unit indicated by the `precipitation_unit` state attribute. | 0 | `pressure` | The air pressure in the unit indicated by the `pressure_unit` state attribute. | 1019 -| `temperature` | The temperature in the unit indicated by the `temperature_unit` state attribute. If templow is also provided, this is the higher temperature. | 14.2 +| `temperature` | The temperature in the unit indicated by the `temperature_unit` state attribute. If `templow` is also provided, this is the higher temperature. | 14.2 | `templow` | The lower temperature in the unit indicated by the `temperature_unit` state attribute. | 5.0 | `uv_index` | The UV index. | 3 | `wind_bearing` | The wind bearing in azimuth angle (degrees) or 1-3 letter cardinal direction. | 268 @@ -120,34 +111,85 @@ The response data field `forecast` is a list of forecasted conditions at a given | `wind_speed` | The wind speed in the unit indicated by the `wind_speed_unit` state attribute. | 24.41 -Example forecast: +## Examples + +{% details "Example template sensor using get_forecasts" %} + +Example template sensor that contains the hourly forecast {% raw %} + ```yaml -forecast: - - condition: cloudy - precipitation_probability: 0 - datetime: '2023-02-17T14:00:00+00:00' - wind_bearing: 268 - temperature: 14.2 - pressure: 1019 - wind_speed: 24.41 - precipitation: 0 - - condition: cloudy - precipitation_probability: 0 - datetime: '2023-02-17T15:00:00+00:00' - wind_bearing: 268 - temperature: 13.8 - pressure: 1019 - wind_speed: 22.61 - precipitation: 0 - - condition: cloudy - precipitation_probability: 0 - datetime: '2023-02-17T16:00:00+00:00' - wind_bearing: 265 - temperature: 13.2 - pressure: 1020 - wind_speed: 20.27 - precipitation: 0 +template: + - trigger: + - platform: time_pattern + hours: /1 + action: + - service: weather.get_forecasts + data: + type: hourly + target: + entity_id: weather.home + response_variable: hourly + sensor: + - name: Temperature forecast next hour + unique_id: temperature_forecast_next_hour + state: "{{ hourly['weather.home'].forecast[0].temperature }}" + unit_of_measurement: °C + ``` + {% endraw %} + +{% enddetails %} + + +{% details "Example service response" %} + +```yaml +weather.tomorrow_io_home_nowcast: + forecast: + - datetime: "2023-12-07T13:00:00+00:00" + condition: cloudy + precipitation_probability: 0 + wind_bearing: 241.19 + temperature: 0.1 + dew_point: -1.9 + wind_speed: 16.88 + precipitation: 0 + humidity: 86 + - datetime: "2023-12-07T14:00:00+00:00" + condition: cloudy + precipitation_probability: 0 + wind_bearing: 232.41 + temperature: 0.8 + dew_point: -2.8 + wind_speed: 17.82 + precipitation: 0 + humidity: 77 + - datetime: "2023-12-07T15:00:00+00:00" + condition: cloudy + precipitation_probability: 0 + wind_bearing: 236.09 + temperature: 1.1 + dew_point: -2.6 + wind_speed: 17.89 + precipitation: 0 + humidity: 77 +weather.toronto_forecast: + forecast: + - datetime: "2023-12-07T14:00:00+00:00" + condition: snowy + precipitation_probability: 40 + temperature: 0 + - datetime: "2023-12-07T15:00:00+00:00" + condition: snowy + precipitation_probability: 40 + temperature: 0 + - datetime: "2023-12-07T16:00:00+00:00" + condition: snowy + precipitation_probability: 40 + temperature: 0 +``` + +{% enddetails %} \ No newline at end of file diff --git a/source/_integrations/wolflink.markdown b/source/_integrations/wolflink.markdown index 1f3c1c8ac23..d51cf99de16 100644 --- a/source/_integrations/wolflink.markdown +++ b/source/_integrations/wolflink.markdown @@ -26,5 +26,6 @@ The {% term integration %} fetches all data based on parameters, that are expose - Wolf Link Home Pro connected to a FGB-28 device - Wolf ISM7e / Link Pro connected to a COB-20 device +- Wolf ISM7 (HW v1.0, SW v2.10.47) connected to a CGB-2-14 device {% include integrations/config_flow.md %} diff --git a/source/_integrations/wyoming.markdown b/source/_integrations/wyoming.markdown index 82db5769ad2..b2fdbb7abf6 100644 --- a/source/_integrations/wyoming.markdown +++ b/source/_integrations/wyoming.markdown @@ -23,6 +23,10 @@ The **Wyoming** {% term integration %} connects external voice services to Home - Piper {% my supervisor_addon badge addon="core_piper" %} - openWakeWord {% my supervisor_addon badge addon="core_openwakeword" %} +### Installing a local voice pipeline + +The Wyoming, Piper, and Whisper add-ons are used to create a fully local voice pipeline. To learn how to do this, follow the procedure on [installing a local voice pipeline](/voice_control/voice_remote_local_assistant/). + {% include integrations/config_flow.md %} ## Satellites diff --git a/source/_posts/2021-12-18-ios-multi-server.markdown b/source/_posts/2021-12-18-ios-multi-server.markdown index 654524282aa..b558f0abd06 100644 --- a/source/_posts/2021-12-18-ios-multi-server.markdown +++ b/source/_posts/2021-12-18-ios-multi-server.markdown @@ -5,7 +5,9 @@ date: 2021-12-18 00:00:00 date_formatted: "December 18, 2021" author: Zac West author_twitter: zacwest -categories: Release-Notes +categories: + - Release-Notes + - iOS og_image: /images/blog/2021-12-ios/social.png --- diff --git a/source/_posts/2023-12-06-release-202312.markdown b/source/_posts/2023-12-06-release-202312.markdown index 24b73aa5be8..f10b96fa52d 100644 --- a/source/_posts/2023-12-06-release-202312.markdown +++ b/source/_posts/2023-12-06-release-202312.markdown @@ -54,6 +54,10 @@ Happy holidays & enjoy the release! - [Other noteworthy changes](#other-noteworthy-changes) - [New integrations](#new-integrations) - [Integrations now available to set up from the UI](#integrations-now-available-to-set-up-from-the-ui) +- [Release 2023.12.1 - December 8](#release-2023121---december-8) +- [Release 2023.12.2 - December 13](#release-2023122---december-13) +- [Release 2023.12.3 - December 14](#release-2023123---december-14) +- [Release 2023.12.4 - December 27](#release-2023124---december-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) @@ -66,6 +70,14 @@ Don't forget to [join our release party live stream on YouTube](https://www.yout ## A beautiful new login page +
    + +This feature has been disabled in Home Assistant 2023.12.3. +[Read more about it here](/blog/2023/12/14/disabling-new-login-page-functionality/). + +
    + + The login page of Home Assistant has been redesigned to be more modern and match the [recent redesign of the Home Assistant onboarding](/blog/2023/09/06/release-20239/#onboarding). @@ -310,6 +322,307 @@ The following integrations are now available via the Home Assistant UI: [Fast.com]: /integrations/fastdotcom [Ping]: /integrations/ping +## Release 2023.12.1 - December 8 + +- Initialize energy_state without price ([@Excentyl] - [#97031]) +- Bump yolink-api to 0.3.4 ([@matrixd2] - [#105124]) +- Bump apple_weatherkit to 1.1.2 ([@tjhorner] - [#105140]) +- Correct smtp error message string ([@jbouwh] - [#105148]) +- Expose todo entities to Assist by default ([@synesthesiam] - [#105150]) +- Disable scenarios (scenes) for local API in Overkiz ([@iMicknl] - [#105153]) +- Improve LIDL christmas light detection in deCONZ ([@Kane610] - [#105155]) +- Bump reolink_aio to 0.8.2 ([@starkillerOG] - [#105157]) +- Don't return TTS URL in Assist pipeline ([@synesthesiam] - [#105164]) +- Bump Météo-France to 1.3.0 ([@Quentame] - [#105170]) +- Fix ZHA quirk ID custom entities matching all devices ([@TheJulianJES] - [#105184]) +- Fix missing apostrophe in smtp ([@lunmay] - [#105189]) +- Set ping interval to 15 seconds instead of 5 minutes ([@nohn] - [#105191]) +- Increase ping update interval to 30 seconds ([@jpbede] - [#105199]) +- Fix bug in roon incremental volume control. ([@pavoni] - [#105201]) +- fix supportedFanOscillationModes is null ([@haimn] - [#105205]) +- Disable config flow progress in peco config flow ([@emontnemery] - [#105222]) +- Fix Fritzbox light setup ([@flabbamann] - [#105232]) +- Fix check_date service in workday ([@gjohansson-ST] - [#105241]) +- Fix AsusWrt invalid data type with tuple type ([@ollo69] - [#105247]) +- Explicit check for None in Discovergy entity if condition ([@jpbede] - [#105248]) +- Add migration for old HomeWizard sensors ([@DCSBL] - [#105251]) +- Fix update of uncategorized OurGroceries items ([@OnFreund] - [#105255]) +- Bump pyunifiprotect to 4.22.0 ([@bdraco] - [#105265]) +- Set device id and forward errors to Wyoming satellites ([@synesthesiam] - [#105266]) +- Fix mqtt json light state updates using deprecated color handling ([@jbouwh] - [#105283]) +- Always set _attr_current_option in Nobø Hub select entities ([@oyvindwe] - [#105289]) +- Update frontend to 20231208.2 ([@piitaya] - [#105299]) +- Add test for energy cost sensor for late price sensor ([@emontnemery] - [#105312]) +- Use area id for context instead of name ([@synesthesiam] - [#105313]) +- Add workaround for orjson not handling subclasses of str ([@emontnemery] - [#105314]) +- Add rollback on exception that needs rollback in SQL ([@gjohansson-ST] - [#104948]) +- Workaround `to_json` template filter in parsing dict key ([@jbouwh] - [#105327]) +- Bump plugwise to v0.34.5 ([@bouwew] - [#105330]) + +[#104948]: https://github.com/home-assistant/core/pull/104948 +[#105124]: https://github.com/home-assistant/core/pull/105124 +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105140]: https://github.com/home-assistant/core/pull/105140 +[#105148]: https://github.com/home-assistant/core/pull/105148 +[#105150]: https://github.com/home-assistant/core/pull/105150 +[#105153]: https://github.com/home-assistant/core/pull/105153 +[#105155]: https://github.com/home-assistant/core/pull/105155 +[#105157]: https://github.com/home-assistant/core/pull/105157 +[#105164]: https://github.com/home-assistant/core/pull/105164 +[#105170]: https://github.com/home-assistant/core/pull/105170 +[#105184]: https://github.com/home-assistant/core/pull/105184 +[#105189]: https://github.com/home-assistant/core/pull/105189 +[#105191]: https://github.com/home-assistant/core/pull/105191 +[#105199]: https://github.com/home-assistant/core/pull/105199 +[#105201]: https://github.com/home-assistant/core/pull/105201 +[#105205]: https://github.com/home-assistant/core/pull/105205 +[#105222]: https://github.com/home-assistant/core/pull/105222 +[#105232]: https://github.com/home-assistant/core/pull/105232 +[#105241]: https://github.com/home-assistant/core/pull/105241 +[#105247]: https://github.com/home-assistant/core/pull/105247 +[#105248]: https://github.com/home-assistant/core/pull/105248 +[#105251]: https://github.com/home-assistant/core/pull/105251 +[#105255]: https://github.com/home-assistant/core/pull/105255 +[#105265]: https://github.com/home-assistant/core/pull/105265 +[#105266]: https://github.com/home-assistant/core/pull/105266 +[#105283]: https://github.com/home-assistant/core/pull/105283 +[#105289]: https://github.com/home-assistant/core/pull/105289 +[#105299]: https://github.com/home-assistant/core/pull/105299 +[#105312]: https://github.com/home-assistant/core/pull/105312 +[#105313]: https://github.com/home-assistant/core/pull/105313 +[#105314]: https://github.com/home-assistant/core/pull/105314 +[#105327]: https://github.com/home-assistant/core/pull/105327 +[#105330]: https://github.com/home-assistant/core/pull/105330 +[#97031]: https://github.com/home-assistant/core/pull/97031 +[@DCSBL]: https://github.com/DCSBL +[@Excentyl]: https://github.com/Excentyl +[@Kane610]: https://github.com/Kane610 +[@OnFreund]: https://github.com/OnFreund +[@Quentame]: https://github.com/Quentame +[@TheJulianJES]: https://github.com/TheJulianJES +[@bdraco]: https://github.com/bdraco +[@bouwew]: https://github.com/bouwew +[@emontnemery]: https://github.com/emontnemery +[@flabbamann]: https://github.com/flabbamann +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@haimn]: https://github.com/haimn +[@iMicknl]: https://github.com/iMicknl +[@jbouwh]: https://github.com/jbouwh +[@jpbede]: https://github.com/jpbede +[@lunmay]: https://github.com/lunmay +[@matrixd2]: https://github.com/matrixd2 +[@nohn]: https://github.com/nohn +[@ollo69]: https://github.com/ollo69 +[@oyvindwe]: https://github.com/oyvindwe +[@pavoni]: https://github.com/pavoni +[@piitaya]: https://github.com/piitaya +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@tjhorner]: https://github.com/tjhorner + +## Release 2023.12.2 - December 13 + +- Fix Lyric LCC thermostats auto mode ([@apt-itude] - [#104853]) +- Bump zeroconf to 0.128.0 ([@bdraco] - [#104936]) +- Fix CI test_invalid_rrule_fix test by freezing the time ([@jbouwh] - [#105294]) +- Add missing configuration for services.yaml in blink ([@mkmer] - [#105310]) +- Bump pyschlage to 2023.12.0 ([@dknowles2] - [#105349]) +- Fix preset modes error in Smartthings ([@gjohansson-ST] - [#105375]) +- Fix service missing key in Blink ([@mkmer] - [#105387]) +- Fix adding/updating todo items with due date in CalDAV integration ([@DerFlob] - [#105435]) +- Check if heat area exists when setting up valve opening and battery sensors in moehlenhoff alpha2 ([@j-a-n] - [#105437]) +- Bump hatasmota to 0.8.0 ([@emontnemery] - [#105440]) +- Bump plugwise to v0.35.3 ([@bouwew] - [#105442]) +- Fix alexa calling not featured cover services ([@jbouwh] - [#105444]) +- Fix fitbit oauth reauth debug logging ([@allenporter] - [#105450]) +- Write Enphase Envoy data to log when in debug mode ([@catsmanac] - [#105456]) +- Bump ical to 6.1.1 ([@allenporter] - [#105462]) +- Bump zeroconf to 0.128.4 ([@bdraco] - [#105465]) +- Remove Aftership import issue when entry already exists ([@joostlek] - [#105476]) +- Disconnect before reconnecting to satellite ([@synesthesiam] - [#105500]) +- Bump caldav to 1.3.8 ([@FrnchFrgg] - [#105508]) +- Bump pyhiveapi to v0.5.16 ([@KJonline] - [#105513]) +- Fix setup Fast.com ([@gjohansson-ST] - [#105580]) +- Add name slot to HassClimateGetTemperature intent ([@synesthesiam] - [#105585]) +- Skip TTS events entirely with empty text ([@synesthesiam] - [#105617]) +- Rename "satellite enabled" to "mute" ([@synesthesiam] - [#105619]) +- Fix timing issue in Withings ([@joostlek] - [#105203]) +- Update pylint to 3.0.3 ([@cdce8p] - [#105491]) +- Reload ZHA integration on any error, not just recoverable ones ([@puddly] - [#105659]) +- Bump ZHA dependencies ([@puddly] - [#105661]) + +[#104853]: https://github.com/home-assistant/core/pull/104853 +[#104936]: https://github.com/home-assistant/core/pull/104936 +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105203]: https://github.com/home-assistant/core/pull/105203 +[#105294]: https://github.com/home-assistant/core/pull/105294 +[#105310]: https://github.com/home-assistant/core/pull/105310 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105349]: https://github.com/home-assistant/core/pull/105349 +[#105375]: https://github.com/home-assistant/core/pull/105375 +[#105387]: https://github.com/home-assistant/core/pull/105387 +[#105435]: https://github.com/home-assistant/core/pull/105435 +[#105437]: https://github.com/home-assistant/core/pull/105437 +[#105440]: https://github.com/home-assistant/core/pull/105440 +[#105442]: https://github.com/home-assistant/core/pull/105442 +[#105444]: https://github.com/home-assistant/core/pull/105444 +[#105450]: https://github.com/home-assistant/core/pull/105450 +[#105456]: https://github.com/home-assistant/core/pull/105456 +[#105462]: https://github.com/home-assistant/core/pull/105462 +[#105465]: https://github.com/home-assistant/core/pull/105465 +[#105476]: https://github.com/home-assistant/core/pull/105476 +[#105491]: https://github.com/home-assistant/core/pull/105491 +[#105500]: https://github.com/home-assistant/core/pull/105500 +[#105508]: https://github.com/home-assistant/core/pull/105508 +[#105513]: https://github.com/home-assistant/core/pull/105513 +[#105580]: https://github.com/home-assistant/core/pull/105580 +[#105585]: https://github.com/home-assistant/core/pull/105585 +[#105617]: https://github.com/home-assistant/core/pull/105617 +[#105619]: https://github.com/home-assistant/core/pull/105619 +[#105659]: https://github.com/home-assistant/core/pull/105659 +[#105661]: https://github.com/home-assistant/core/pull/105661 +[@DerFlob]: https://github.com/DerFlob +[@FrnchFrgg]: https://github.com/FrnchFrgg +[@KJonline]: https://github.com/KJonline +[@allenporter]: https://github.com/allenporter +[@apt-itude]: https://github.com/apt-itude +[@bdraco]: https://github.com/bdraco +[@bouwew]: https://github.com/bouwew +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@dknowles2]: https://github.com/dknowles2 +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@j-a-n]: https://github.com/j-a-n +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@mkmer]: https://github.com/mkmer +[@puddly]: https://github.com/puddly +[@synesthesiam]: https://github.com/synesthesiam + +## Release 2023.12.3 - December 14 + +- Ensure platform setup for all AVM FRITZ!SmartHome devices ([@mib1185] - [#105515]) +- Update AEMET-OpenData to v0.4.7 ([@Noltari] - [#105676]) +- Fix restoring UniFi clients with old unique id ([@Kane610] - [#105691]) +- Bump zeroconf to 0.128.5 ([@bdraco] - [#105694]) +- Add missing rest_command reload service to services.yaml ([@jpbede] - [#105714]) +- Fix issue clearing renault schedules ([@epenet] - [#105719]) +- Fix Fully Kiosk Browser MQTT event callbacks with non-standard event topics ([@cgarwood] - [#105735]) +- Disable user profiles on login screen ([@frenck] - [#105749]) + +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105515]: https://github.com/home-assistant/core/pull/105515 +[#105655]: https://github.com/home-assistant/core/pull/105655 +[#105676]: https://github.com/home-assistant/core/pull/105676 +[#105691]: https://github.com/home-assistant/core/pull/105691 +[#105694]: https://github.com/home-assistant/core/pull/105694 +[#105714]: https://github.com/home-assistant/core/pull/105714 +[#105719]: https://github.com/home-assistant/core/pull/105719 +[#105735]: https://github.com/home-assistant/core/pull/105735 +[#105749]: https://github.com/home-assistant/core/pull/105749 +[@Kane610]: https://github.com/Kane610 +[@Noltari]: https://github.com/Noltari +[@bdraco]: https://github.com/bdraco +[@cgarwood]: https://github.com/cgarwood +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@jpbede]: https://github.com/jpbede +[@mib1185]: https://github.com/mib1185 + +## Release 2023.12.4 - December 27 + +- Pass timeout to httpx in RESTful Switch ([@vexofp] - [#105364]) +- Add Raspberry Pi 5 specific container image ([@agners] - [#105488]) +- Set todo item status in intent ([@synesthesiam] - [#105743]) +- Bump aioairzone to v0.7.0 ([@Noltari] - [#105807]) +- Update aioairzone to v0.7.2 ([@Noltari] - [#105811]) +- Fix HVAC mode duplication for Shelly Gen2 climate platform ([@bieniu] - [#105812]) +- Fix Airzone temperature range on new climate card ([@Noltari] - [#105830]) +- Bump pyunifiprotect to 4.22.3 ([@bdraco] - [#105833]) +- Address late review comments on AVM FRITZ!SmartHome ([@mib1185] - [#105860]) +- Set WiFi QR code entity to unknown when Fritzbox is not available ([@mib1185] - [#105870]) +- Bump reolink_aio to 0.8.3 ([@starkillerOG] - [#105489]) +- Bump reolink_aio to 0.8.4 ([@starkillerOG] - [#105946]) +- Bump motionblinds to 0.6.19 ([@starkillerOG] - [#105951]) +- Fix unreachable Netatmo sensor returning false values ([@cgtobi] - [#105954]) +- Add Raspberry Pi 5 to version and hardware integration ([@agners] - [#105992]) +- Bump blinkpy 0.22.4 ([@mkmer] - [#105993]) +- Don't fetch unchanged OurGroceries lists ([@OnFreund] - [#105998]) +- Bump pyatmo to 8.0.1 ([@cgtobi] - [#106094]) +- Bump surepy to 0.9.0 ([@benleb] - [#106101]) +- Bump pyenphase to 1.15.2 ([@bdraco] - [#106134]) +- Bump ZHA dependencies ([@puddly] - [#106147]) +- Bump life360 to 6.0.1 ([@pnbruckner] - [#106149]) +- Fix bug with non-existent Notion bridge IDs ([@bachya] - [#106152]) +- Fix Netatmo light switching states by assuming state until next update ([@cgtobi] - [#106162]) +- Bump Devialet to 1.4.4 ([@fwestenberg] - [#106171]) +- Bump ring-doorbell to 0.8.5 ([@sdb9696] - [#106178]) +- Bump Devialet to 1.4.5 ([@fwestenberg] - [#106184]) +- Bump aiopulse to 0.4.4 ([@atmurray] - [#106239]) +- Fix Shelly consumption_types ([@emontnemery] - [#106273]) +- Missing exception on relogin in Honeywell ([@mkmer] - [#106324]) +- Redact unique id from diagnostics in blink ([@mkmer] - [#106413]) + +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105364]: https://github.com/home-assistant/core/pull/105364 +[#105488]: https://github.com/home-assistant/core/pull/105488 +[#105489]: https://github.com/home-assistant/core/pull/105489 +[#105655]: https://github.com/home-assistant/core/pull/105655 +[#105743]: https://github.com/home-assistant/core/pull/105743 +[#105757]: https://github.com/home-assistant/core/pull/105757 +[#105807]: https://github.com/home-assistant/core/pull/105807 +[#105811]: https://github.com/home-assistant/core/pull/105811 +[#105812]: https://github.com/home-assistant/core/pull/105812 +[#105830]: https://github.com/home-assistant/core/pull/105830 +[#105833]: https://github.com/home-assistant/core/pull/105833 +[#105860]: https://github.com/home-assistant/core/pull/105860 +[#105870]: https://github.com/home-assistant/core/pull/105870 +[#105946]: https://github.com/home-assistant/core/pull/105946 +[#105951]: https://github.com/home-assistant/core/pull/105951 +[#105954]: https://github.com/home-assistant/core/pull/105954 +[#105992]: https://github.com/home-assistant/core/pull/105992 +[#105993]: https://github.com/home-assistant/core/pull/105993 +[#105998]: https://github.com/home-assistant/core/pull/105998 +[#106094]: https://github.com/home-assistant/core/pull/106094 +[#106101]: https://github.com/home-assistant/core/pull/106101 +[#106134]: https://github.com/home-assistant/core/pull/106134 +[#106147]: https://github.com/home-assistant/core/pull/106147 +[#106149]: https://github.com/home-assistant/core/pull/106149 +[#106152]: https://github.com/home-assistant/core/pull/106152 +[#106162]: https://github.com/home-assistant/core/pull/106162 +[#106171]: https://github.com/home-assistant/core/pull/106171 +[#106178]: https://github.com/home-assistant/core/pull/106178 +[#106184]: https://github.com/home-assistant/core/pull/106184 +[#106239]: https://github.com/home-assistant/core/pull/106239 +[#106273]: https://github.com/home-assistant/core/pull/106273 +[#106324]: https://github.com/home-assistant/core/pull/106324 +[#106413]: https://github.com/home-assistant/core/pull/106413 +[@Noltari]: https://github.com/Noltari +[@OnFreund]: https://github.com/OnFreund +[@agners]: https://github.com/agners +[@atmurray]: https://github.com/atmurray +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@cgtobi]: https://github.com/cgtobi +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@mib1185]: https://github.com/mib1185 +[@mkmer]: https://github.com/mkmer +[@pnbruckner]: https://github.com/pnbruckner +[@puddly]: https://github.com/puddly +[@sdb9696]: https://github.com/sdb9696 +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@vexofp]: https://github.com/vexofp + ## Need help? Join the community! Home Assistant has a great community of users who are all more than willing diff --git a/source/_posts/2023-12-07-homewizard-joins-works-with-home-assistant-program.markdown b/source/_posts/2023-12-07-homewizard-joins-works-with-home-assistant-program.markdown new file mode 100644 index 00000000000..42deaa5f44c --- /dev/null +++ b/source/_posts/2023-12-07-homewizard-joins-works-with-home-assistant-program.markdown @@ -0,0 +1,32 @@ +--- +layout: post +title: "HomeWizard joins Works With Home Assistant program" +description: "HomeWizard makes Wi-Fi devices that give insight into electricity, water, and gas consumption. The devices integrate locally into Home Assistant." +date: 2023-12-07 00:00:02 +date_formatted: "December 7, 2023" +author: Guy Sie +comments: true +categories: Announcements +og_image: /images/blog/2023-12-homewizard/homewizard-wwha-og.png +--- + +We’re delighted to announce that HomeWizard has joined the Works With Home Assistant program under the *‘Works Locally With Home Assistant’* badge and is committed to ensuring their products work well in Home Assistant. This Dutch company creates Wi-Fi devices that give households insight into their electricity, water, and gas consumption. They want to make people aware of their energy consumption and help them save on energy - not just because it’s good for their wallet, but also good for the world. A mission that matches our [Open Home values](/blog/2021/12/23/the-open-home/) perfectly. They will also be the first company to use our updated Works With Home Assistant badge, featuring the new Home Assistant logo! + +![HomeWizard works locally with Home Assistant](/images/blog/2023-12-homewizard/homewizard-wwha.png) + + +HomeWizard’s journey to becoming a partner started with an engineer working on their energy meters, who developed a custom Home Assistant integration in his spare time. This custom integration grew and became part of Home Assistant core in release 2022.2, and its popularity with HomeWizard customers has led to HomeWizard adopting it and becoming an official partner today! + +As a result, the [HomeWizard Energy integration](/integrations/homewizard/) has been developed by listening to the Home Assistant community. Features like a local API in their products and the ability to disable cloud communication were added in response. Currently, the integration supports the following products: + +Wi-Fi P1 Meter (model: HWE-P1): Sensors for power import/export, energy consumption (single or three phases), information about your smart meter, and gas. + +Wi-Fi Energy Socket (model: HWE-SKT): Sensors for power import/export, energy consumption, and switches for controlling the outlet. + +Wi-Fi Watermeter (model: HWE-WTR): Sensors for active and total water usage. + +Wi-Fi kWh Meter (models: SDM230-wifi, SDM630-wifi): Sensors for power import/export and energy consumption. + +While HomeWizard is a Dutch company, their products work in many countries. For example, the P1 Meter works on [most modern meters that have a P1 port](https://helpdesk.homewizard.com/en/articles/5935311-is-my-smart-meter-compatible), the Water meter on [analog water meters with Itron, Elster, or Sensus mounting holes](https://helpdesk.homewizard.com/en/articles/6287701-is-my-analog-watermeter-compatible), and the kWh Meters can be mounted on DIN rails. All of them can be purchased from [HomeWizard’s webshop](https://www.homewizard.com/shop/). + +We’re very excited about this news, and we love the journey that the HomeWizard integration has taken from one engineer’s hobby to an official partnership. Check out [our original announcement](/blog/2022/07/12/partner-program/) for more information about the Works with Home Assistant partner program. diff --git a/source/_posts/2023-12-12-silicon-labs-official-partnership-nabu-casa.markdown b/source/_posts/2023-12-12-silicon-labs-official-partnership-nabu-casa.markdown new file mode 100644 index 00000000000..f61a30f0a2a --- /dev/null +++ b/source/_posts/2023-12-12-silicon-labs-official-partnership-nabu-casa.markdown @@ -0,0 +1,21 @@ +--- +layout: post +title: "Silicon Labs partners with Nabu Casa to support Open Source" +description: "Silicon Labs, the company behind Z-Wave and designer of chips used in Z-Wave, Zigbee, Thread, and more, has entered an official partnership with Nabu Casa. Our work is fundamental to the growth of the Z-Wave ecosystem, and we are happy to see this get acknowledged by Silicon Labs with this partnership. As a partner, we are now able to collaborate with Silicon Labs to report bugs and get our issues fixed with priority." +date: 2023-12-12 00:00:02 +date_formatted: "December 12, 2023" +author: Guy Sie +comments: true +categories: Announcements +og_image: /images/blog/2023-12-siliconlabs/siliconlabs-og.png +--- + +[Silicon Labs](https://www.silabs.com/) has entered an official partnership with [Nabu Casa](https://www.nabucasa.com/) to offer support for our open-source and hardware efforts. + +![Silicon Labs and Nabu Casa](/images/blog/2023-12-siliconlabs/siliconlabs-og.png) + +Silicon Labs is the company behind Z-Wave and designs chips for Z-Wave, Zigbee, Thread, and more standards. Their chips provide connectivity to many devices, including Philips Hue, Ring, IKEA TRÅDFRI, and our own [Home Assistant Yellow](/yellow) and [Home Assistant SkyConnect](/skyconnect) products. In fact, every Z-Wave chip in a Z-Wave product ever made came from Silicon Labs. + +We love open standards because they live up to our [Open Home values](https://www.home-assistant.io/blog/2021/12/23/the-open-home/) for the smart home: privacy, choice, and sustainability. This is why Nabu Casa, with the revenue received from Home Assistant Cloud subscribers, invests heavily in integrating these open standards, which involves working on a daily basis with Silicon Labs technologies. For example, we employ [Dominic](https://github.com/alcalzone) to work full-time on [Z-Wave JS](https://github.com/zwave-js) and [Nikita](https://github.com/puddly) to work full-time on [Zigpy](https://github.com/zigpy/zigpy), the library powering Zigbee in Home Assistant. Other developers are dedicated to making sure the Silicon Labs chips inside our own hardware work perfectly in Home Assistant. + +Z-Wave JS is the only open-source implementation of Z-Wave, powering an increasing number of Z-Wave platforms beyond Home Assistant. Our work is fundamental to the growth of the Z-Wave ecosystem, and we are happy to see this get acknowledged by Silicon Labs with this partnership. With Home Assistant, we are exposed to many different devices running Z-Wave, Zigbee, and Thread. And as a partner, we are now able to collaborate with Silicon Labs to report bugs and get our issues fixed with priority. diff --git a/source/_posts/2023-12-13-year-of-the-voice-chapter-5.markdown b/source/_posts/2023-12-13-year-of-the-voice-chapter-5.markdown index 72852f10d08..c20093b7da3 100644 --- a/source/_posts/2023-12-13-year-of-the-voice-chapter-5.markdown +++ b/source/_posts/2023-12-13-year-of-the-voice-chapter-5.markdown @@ -22,7 +22,7 @@ At the start of 2023, Home Assistant had basic text-based control for some devic Home Assistant users can now create multiple voice assistants by mixing and matching components of a voice "pipeline". Home Assistant Cloud subscribers automatically gain access to high-quality voice components in over 130 languages and dialects. Fully local components are available as well, such as our [Piper] text-to-speech system, allowing for 100% offline voice control. -In [Chapter 4], we added wake word processing directly into Home Assistant by leveraging the [openWakeWord] project. This allowed tiny voice satellites such as the [M5 ATOM Echo Development Kit][m5-tutorial] to offload wake word detection by streaming audio to a Home Assistant server. The community has been hard at work training a variety of [custom wake words](community-wake-words) that everyone can use to make their voice experience unique. +In [Chapter 4], we added wake word processing directly into Home Assistant by leveraging the [openWakeWord] project. This allowed tiny voice satellites such as the [M5 ATOM Echo Development Kit][m5-tutorial] to offload wake word detection by streaming audio to a Home Assistant server. The community has been hard at work training a variety of [custom wake words][community-wake-words] that everyone can use to make their voice experience unique. For the final chapter of 2023, we have expanded the available types of voice commands to include weather, temperature, and to-do lists. Voice satellites are now aware of which area they're in, and more hardware/software options are available too. @@ -30,7 +30,7 @@ Happy holidays!

    -Assist running on the ESP32-S3-BOX-3. +Assist running on the ESP32-S3-BOX.

    @@ -40,8 +40,8 @@ Assist running on the ESP32-S3-BOX-3. Espressif recently released the [ESP32-S3-BOX-3], an update of the discontinued ESP32-S3-BOX (and "lite" variant). This "AIoT" development kit contains an ESP32-S3 chip, dual microphones, a small speaker, and a screen. Several docks are available in the box, which expose a USB-C power connector and GPIO pins for expanding the device.

    - -Assist running on the ESP32-S3-BOX-3 with custom artwork. + +Assist running on the ESP32-S3-BOX with custom artwork.

    The [ESPHome] team has been hard at work adding support for the S3-BOX-3, including the ability to customize the display! Check out the [S3-BOX-3 tutorial][s3-box-tutorial] to get started. @@ -58,7 +58,7 @@ Starting all the way back in [Chapter 1], we added voice commands for: - Turning lights and other devices on and off - Opening and closing doors, windows, etc. - Setting the brightness and color of lights -- Adding items to a shopping list +- Adding items to a shopping list - Asking questions, such as which windows are open in an area For Chapter 5, we've extended this list to include: @@ -80,7 +80,7 @@ Voice satellites can be placed all around the house, and it's important to keep Voice satellites make use of the area they're in.

    -This is a small start to satellites being aware of their *context*, and adjusting behavior accordingly. +This is a small start to satellites being aware of their *context*, and adjusting behavior accordingly. ## Improved Raspberry Pi satellites @@ -120,22 +120,22 @@ Thanks to our language leaders for extending the sentence support to all the var Thank you for supporting the Home Assistant project

    -[Year of the Voice]: https://www.home-assistant.io/blog/2022/12/20/year-of-voice/ -[Chapter 1]: https://www.home-assistant.io/blog/2023/01/26/year-of-the-voice-chapter-1/ -[Chapter 4]: https://www.home-assistant.io/blog/2023/10/20/year-of-the-voice-chapter-4/ -[Assist]: https://www.home-assistant.io/voice_control/ -[exposed]: https://www.home-assistant.io/voice_control/voice_remote_expose_devices/ -[alias]: https://www.home-assistant.io/voice_control/aliases +[Year of the Voice]: /blog/2022/12/20/year-of-voice/ +[Chapter 1]: /blog/2023/01/26/year-of-the-voice-chapter-1/ +[Chapter 4]: /blog/2023/10/20/year-of-the-voice-chapter-4/ +[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/ [community-wake-words]: https://github.com/fwartner/home-assistant-wakewords-collection [ESP32-S3-BOX-3]: https://www.espressif.com/en/news/ESP32-S3-BOX-3 -[wyoming]: https://www.home-assistant.io/integrations/wyoming +[wyoming]: /integrations/wyoming [wyoming-satellite]: https://github.com/rhasspy/wyoming-satellite [rpi-zero-2w]: https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/ -[s3-box-tutorial]: https://www.home-assistant.io/voice_control/s3_box_voice_assistant/ +[s3-box-tutorial]: /voice_control/s3_box_voice_assistant/ [ESPHome]: https://esphome.io [nabucasa]: https://www.nabucasa.com [phone-tutorial]: https://www.home-assistant.io/voice_control/worlds-most-private-voice-assistant/ -[m5-tutorial]: http://localhost:4000/voice_control/thirteen-usd-voice-remote/ +[m5-tutorial]: /voice_control/thirteen-usd-voice-remote/ diff --git a/source/_posts/2023-12-14-disabling new login page functionality.markdown b/source/_posts/2023-12-14-disabling new login page functionality.markdown new file mode 100644 index 00000000000..f5c2ce3b5d6 --- /dev/null +++ b/source/_posts/2023-12-14-disabling new login page functionality.markdown @@ -0,0 +1,25 @@ +--- +layout: post +title: "Disabling new login page functionality" +description: "Why we are removing the redesigned login page introduced in release 2023.12 in patch 2023.12.3." +date: 2023-12-14 00:00:00 +date_formatted: "December 14, 2023" +author: Paulus Schoutsen +author_twitter: balloob +comments: true +categories: Public-Service-Announcement +--- + +In [release 2023.12](https://www.home-assistant.io/blog/2023/12/06/release-202312/) we added a redesigned login page to Home Assistant. It detects when you are accessing Home Assistant via your local home network, and if so, presents a redesigned login experience that shows your user profiles. If you access Home Assistant from outside your home network, the login page still asks for your username and password, like before. + +We have heard the concerns from the community that this functionality can open up your Home Assistant instance to a user enumeration attack from within the local network. A malicious actor with access to your local network could get the names and pictures of all Home Assistant users. They could use this information to make attacking your Home Assistant instance easier. + +A security issue was filed for this on December 10, we have accepted and published the corresponding [GitHub Security Advisory](https://github.com/home-assistant/core/security/advisories/GHSA-jqpc-rc7g-vf83), and have disabled the redesigned login page functionality in patch 2023.12.3 released on December 14. + +While researching the feedback we received, we were troubled to discover that the users who experienced problems with the new login page often used misconfigured reverse proxies. When the reverse proxy is not configured correctly, Home Assistant is no longer able to discern between traffic from your local home network or a public network. These users would see the redesigned login page when accessing Home Assistant from outside their home network. + +To improve the network security of these users, we are researching how we can use Home Assistant to detect more variations of misconfigured proxies and inform them about it. + +We redesigned the login page because we believed the local home network is within the privacy of your own home and a trusted environment for showing the people in it. We assumed that users attempting to log in on the local network are also trusted and allowed to see other user profiles, similar to what Microsoft, Apple, Netflix, and other companies assume in their products. + +That said, we do hear you and take your feedback, and the potential security risk to users with misconfigured reverse proxies, seriously. Thank you for bringing this to our attention and being open about your concerns. diff --git a/source/_posts/2023-12-27-companion-app-for-ios-202312-lets-go.markdown b/source/_posts/2023-12-27-companion-app-for-ios-202312-lets-go.markdown new file mode 100644 index 00000000000..67751ae3970 --- /dev/null +++ b/source/_posts/2023-12-27-companion-app-for-ios-202312-lets-go.markdown @@ -0,0 +1,55 @@ +--- +layout: post +title: "Companion app for iOS 2023.12: Let’s go!" +description: "Bruno Pantaleão has joined Nabu Casa as an iOS engineer and will work on improving the experience of the Companion App for iOS users. 2023.12 brings us Apple Thread credentials sharing, a new WatchOS icon, a **Select All** scene toggle, and a **What’s New** link." +date: 2023-12-27 00:00:02 +date_formatted: "December 27, 2023" +author: Bruno Pantaleão +comments: true +categories: iOS, Release-Notes +og_image: /images/blog/2023-12-ios-lets-go/ios-og.png +--- + +We have good news for those hoping for more features and faster development of the iOS Companion App! I, Bruno Pantaleão, have joined Nabu Casa as an iOS engineer (of course, also working on watchOS, iPadOS, and macOS apps), and am planning to continue the great work done by Robbie Trencheny, Zac West, and the community, giving the iOS app the attention that it deserves. So let’s talk about this month’s 2023.12 release of the app! + +![Companion App for iOS 2023.12](/images/blog/2023-12-ios-lets-go/ios-og.png) + + + +## Apple Thread network credentials sharing + +If you have HomePods or Apple TVs and you also have a Thread border router in Home Assistant, you may want to take advantage of Apple’s network to control devices in your home. You can now import your Apple Thread credentials into Home Assistant and then make Apple the preferred Thread network. + +![Apple Thread network credentials sharing](/images/blog/2023-12-ios-lets-go/1.png) + +## New watchOS App Icon + +We updated the Apple Watch App Icon with the new Home Assistant logo. + +![New watchOS App Icon](/images/blog/2023-12-ios-lets-go/2.png) + +## Toggle all scenes for watchOS + +Previously, you would have to disable scenes one by one to hide them on your Apple Watch. If you, like me, have a Philips Hue bridge, you would probably see several auto-generated scenes (like ‘Bathroom concentrate’ and ‘Bathroom Arctic aurora’ below :D ) that are not always relevant to see on your watch. We added a button to quickly toggle between all scenes now in the iOS companion app. + +![Toggle all scenes for watchOS](/images/blog/2023-12-ios-lets-go/3.png) + +## Keep up with “What’s new” in the App + +We have added a **What’s new?** link in companion App settings so you can quickly access the latest App release notes. + +![Keep up with Whats new in the App](/images/blog/2023-12-ios-lets-go/4.jpeg) + +## Support for iOS 12, 13, and 14 in 2024.01 + +In the new year, we will do some housecleaning to make sure that the iOS Companion App is prepared for the future. To do so, we will stop supporting iOS 12, 13, and 14 in release 2024.01 of the Companion App. We know our users are repurposing older phones and tablets into dashboards and controls for their homes, which aligns with our focus on sustainability. It's why we try to keep our apps running on older devices for as long as we can. + +Currently, less than 1% of our users (according to the App Store analytics provided by users who gave permission to share their data with Apple) are still on these three iOS versions. Supporting them makes the codebase hard to maintain and blocks us from using newer iOS features. This change will make it easier for new contributors to feel comfortable contributing to the iOS codebase, which is also one of my goals. With a more modern codebase, we can give more attention to PRs and help other contributors have everything they need to feel comfortable submitting PRs. + +This does not mean your iOS 12, 13, or 14 devices have become unusable. You can still access your Home Assistant using the browser if you have a device that can't update past iOS 12, such as the 2014 iPhone 6 or iPad Mini 3. All other devices currently capable of running iOS 13 or 14 can be updated to iOS 15 or higher and use the new versions of the iOS Companion App. + +## On the roadmap + +Wondering what we have on the roadmap for our Apple apps? We’re still working on it, but you can expect further developments to make Home Assistant on the Apple ecosystem more integrated, bringing shared features between iPhone, Apple Watch, iPad, and Mac - and I’m looking forward to getting my hands on Apple Vision Pro and seeing the possibilities it brings to the Open Home. We’re also planning on improvements to Siri shortcuts widgets and as many new sensors as possible. Another feature that is on our radar is Assist; in 2023, we completed the Year of the Voice. Android users benefitted from some extra functions compared to iOS users, and we want to make sure we catch up and bring these features to iPhones as well! + +If you’re an Android user, good news is also coming to your beloved Companion App! We are looking for an Android engineer to join Nabu Casa to bring the Android Companion App to the next level. We have yet to officially open up a job, but if you know someone or would already like to apply yourself, feel free to send us a message at apply@nabucasa.com. diff --git a/source/_redirects b/source/_redirects index 8dca5272e13..ae670d9f082 100644 --- a/source/_redirects +++ b/source/_redirects @@ -4,7 +4,7 @@ layout: null # These redirects are handled by Netlify # -{% assign recent_release_post = site.categories['Core'].first %} +{% assign release_notes = site.categories['Release-Notes'] %} # General use redirects /join-chat https://discord.gg/home-assistant @@ -18,9 +18,9 @@ layout: null /community https://community.home-assistant.io/ /latest-security-alert /security/ -# Link to latest release note -/latest-release-notes/ {{ recent_release_post.url }}{{ site.patch_version_notes }} 302! - +# Link to latest release notes +/latest-release-notes/ {{ release_notes | where: "categories", "Core" | map: 'url' | first }}{{ site.patch_version_notes }} 302! +/latest-ios-release-notes/ {{ release_notes | where: "categories", "iOS" | map: 'url' | first }} 302! # Matter workshop June 2022 /skyconnect-interest https://docs.google.com/forms/d/e/1FAIpQLScEjHSBJszUZfgO3MIDO51IHr3Oeohcs8BLpRIjY1liJ58IpA/viewform?usp=sf_link @@ -251,10 +251,14 @@ layout: null /docs/assist/using_voice_assistants_overview/ /voice_control/ /docs/assist/voice_remote_expose_devices/ /voice_control/voice_remote_expose_devices/ /docs/assist/voice_remote_local_assistant/ /voice_control/voice_remote_local_assistant/ +# Redirect for the QR Codes on the S3 Box +/s3-box-no-wifi /voice_control/troubleshooting_the_s3_box/#error-unable-to-connect-to-wi-fi +/s3-box-no-ha /voice_control/troubleshooting_the_s3_box/#error-no-home-assistant /docs/assist/troubleshooting/ /voice_control/troubleshooting/ /docs/assist/worlds-most-private-voice-assistant/ /voice_control/worlds-most-private-voice-assistant/ /projects/worlds-most-private-voice-assistant/ /voice_control/worlds-most-private-voice-assistant/ /docs/assist/thirteen-usd-voice-remote/ /voice_control/thirteen-usd-voice-remote/ +/draw_assist /voice_control/s3-box-customize/#to-draw-your-own-images /projects/thirteen-usd-voice-remote/ /voice_control/thirteen-usd-voice-remote/ /docs/backend/updater /integrations/analytics /docs/ecosystem/ios/ https://companion.home-assistant.io/ diff --git a/source/changelogs/core-2023.12.markdown b/source/changelogs/core-2023.12.markdown index 6adeee60405..0ec4d13dcd5 100644 --- a/source/changelogs/core-2023.12.markdown +++ b/source/changelogs/core-2023.12.markdown @@ -785,6 +785,119 @@ For a summary in a more readable format: - Fix typo in v2c strings.json ([@lunmay] - [#105104]) - Bump intents to 2023.12.05 ([@synesthesiam] - [#105116]) +## Release 2023.12.1 - December 8 + +- Initialize energy_state without price ([@Excentyl] - [#97031]) +- Bump yolink-api to 0.3.4 ([@matrixd2] - [#105124]) +- Bump apple_weatherkit to 1.1.2 ([@tjhorner] - [#105140]) +- Correct smtp error message string ([@jbouwh] - [#105148]) +- Expose todo entities to Assist by default ([@synesthesiam] - [#105150]) +- Disable scenarios (scenes) for local API in Overkiz ([@iMicknl] - [#105153]) +- Improve LIDL christmas light detection in deCONZ ([@Kane610] - [#105155]) +- Bump reolink_aio to 0.8.2 ([@starkillerOG] - [#105157]) +- Don't return TTS URL in Assist pipeline ([@synesthesiam] - [#105164]) +- Bump Météo-France to 1.3.0 ([@Quentame] - [#105170]) +- Fix ZHA quirk ID custom entities matching all devices ([@TheJulianJES] - [#105184]) +- Fix missing apostrophe in smtp ([@lunmay] - [#105189]) +- Set ping interval to 15 seconds instead of 5 minutes ([@nohn] - [#105191]) +- Increase ping update interval to 30 seconds ([@jpbede] - [#105199]) +- Fix bug in roon incremental volume control. ([@pavoni] - [#105201]) +- fix supportedFanOscillationModes is null ([@haimn] - [#105205]) +- Disable config flow progress in peco config flow ([@emontnemery] - [#105222]) +- Fix Fritzbox light setup ([@flabbamann] - [#105232]) +- Fix check_date service in workday ([@gjohansson-ST] - [#105241]) +- Fix AsusWrt invalid data type with tuple type ([@ollo69] - [#105247]) +- Explicit check for None in Discovergy entity if condition ([@jpbede] - [#105248]) +- Add migration for old HomeWizard sensors ([@DCSBL] - [#105251]) +- Fix update of uncategorized OurGroceries items ([@OnFreund] - [#105255]) +- Bump pyunifiprotect to 4.22.0 ([@bdraco] - [#105265]) +- Set device id and forward errors to Wyoming satellites ([@synesthesiam] - [#105266]) +- Fix mqtt json light state updates using deprecated color handling ([@jbouwh] - [#105283]) +- Always set _attr_current_option in Nobø Hub select entities ([@oyvindwe] - [#105289]) +- Update frontend to 20231208.2 ([@piitaya] - [#105299]) +- Add test for energy cost sensor for late price sensor ([@emontnemery] - [#105312]) +- Use area id for context instead of name ([@synesthesiam] - [#105313]) +- Add workaround for orjson not handling subclasses of str ([@emontnemery] - [#105314]) +- Add rollback on exception that needs rollback in SQL ([@gjohansson-ST] - [#104948]) +- Workaround `to_json` template filter in parsing dict key ([@jbouwh] - [#105327]) +- Bump plugwise to v0.34.5 ([@bouwew] - [#105330]) + +## Release 2023.12.2 - December 13 + +- Fix Lyric LCC thermostats auto mode ([@apt-itude] - [#104853]) +- Bump zeroconf to 0.128.0 ([@bdraco] - [#104936]) +- Fix CI test_invalid_rrule_fix test by freezing the time ([@jbouwh] - [#105294]) +- Add missing configuration for services.yaml in blink ([@mkmer] - [#105310]) +- Bump pyschlage to 2023.12.0 ([@dknowles2] - [#105349]) +- Fix preset modes error in Smartthings ([@gjohansson-ST] - [#105375]) +- Fix service missing key in Blink ([@mkmer] - [#105387]) +- Fix adding/updating todo items with due date in CalDAV integration ([@DerFlob] - [#105435]) +- Check if heat area exists when setting up valve opening and battery sensors in moehlenhoff alpha2 ([@j-a-n] - [#105437]) +- Bump hatasmota to 0.8.0 ([@emontnemery] - [#105440]) +- Bump plugwise to v0.35.3 ([@bouwew] - [#105442]) +- Fix alexa calling not featured cover services ([@jbouwh] - [#105444]) +- Fix fitbit oauth reauth debug logging ([@allenporter] - [#105450]) +- Write Enphase Envoy data to log when in debug mode ([@catsmanac] - [#105456]) +- Bump ical to 6.1.1 ([@allenporter] - [#105462]) +- Bump zeroconf to 0.128.4 ([@bdraco] - [#105465]) +- Remove Aftership import issue when entry already exists ([@joostlek] - [#105476]) +- Disconnect before reconnecting to satellite ([@synesthesiam] - [#105500]) +- Bump caldav to 1.3.8 ([@FrnchFrgg] - [#105508]) +- Bump pyhiveapi to v0.5.16 ([@KJonline] - [#105513]) +- Fix setup Fast.com ([@gjohansson-ST] - [#105580]) +- Add name slot to HassClimateGetTemperature intent ([@synesthesiam] - [#105585]) +- Skip TTS events entirely with empty text ([@synesthesiam] - [#105617]) +- Rename "satellite enabled" to "mute" ([@synesthesiam] - [#105619]) +- Fix timing issue in Withings ([@joostlek] - [#105203]) +- Update pylint to 3.0.3 ([@cdce8p] - [#105491]) +- Reload ZHA integration on any error, not just recoverable ones ([@puddly] - [#105659]) +- Bump ZHA dependencies ([@puddly] - [#105661]) + +## Release 2023.12.3 - December 14 + +- Ensure platform setup for all AVM FRITZ!SmartHome devices ([@mib1185] - [#105515]) +- Update AEMET-OpenData to v0.4.7 ([@Noltari] - [#105676]) +- Fix restoring UniFi clients with old unique id ([@Kane610] - [#105691]) +- Bump zeroconf to 0.128.5 ([@bdraco] - [#105694]) +- Add missing rest_command reload service to services.yaml ([@jpbede] - [#105714]) +- Fix issue clearing renault schedules ([@epenet] - [#105719]) +- Fix Fully Kiosk Browser MQTT event callbacks with non-standard event topics ([@cgarwood] - [#105735]) +- Disable user profiles on login screen ([@frenck] - [#105749]) + +## Release 2023.12.4 - December 27 + +- Pass timeout to httpx in RESTful Switch ([@vexofp] - [#105364]) +- Add Raspberry Pi 5 specific container image ([@agners] - [#105488]) +- Set todo item status in intent ([@synesthesiam] - [#105743]) +- Bump aioairzone to v0.7.0 ([@Noltari] - [#105807]) +- Update aioairzone to v0.7.2 ([@Noltari] - [#105811]) +- Fix HVAC mode duplication for Shelly Gen2 climate platform ([@bieniu] - [#105812]) +- Fix Airzone temperature range on new climate card ([@Noltari] - [#105830]) +- Bump pyunifiprotect to 4.22.3 ([@bdraco] - [#105833]) +- Address late review comments on AVM FRITZ!SmartHome ([@mib1185] - [#105860]) +- Set WiFi QR code entity to unknown when Fritzbox is not available ([@mib1185] - [#105870]) +- Bump reolink_aio to 0.8.3 ([@starkillerOG] - [#105489]) +- Bump reolink_aio to 0.8.4 ([@starkillerOG] - [#105946]) +- Bump motionblinds to 0.6.19 ([@starkillerOG] - [#105951]) +- Fix unreachable Netatmo sensor returning false values ([@cgtobi] - [#105954]) +- Add Raspberry Pi 5 to version and hardware integration ([@agners] - [#105992]) +- Bump blinkpy 0.22.4 ([@mkmer] - [#105993]) +- Don't fetch unchanged OurGroceries lists ([@OnFreund] - [#105998]) +- Bump pyatmo to 8.0.1 ([@cgtobi] - [#106094]) +- Bump surepy to 0.9.0 ([@benleb] - [#106101]) +- Bump pyenphase to 1.15.2 ([@bdraco] - [#106134]) +- Bump ZHA dependencies ([@puddly] - [#106147]) +- Bump life360 to 6.0.1 ([@pnbruckner] - [#106149]) +- Fix bug with non-existent Notion bridge IDs ([@bachya] - [#106152]) +- Fix Netatmo light switching states by assuming state until next update ([@cgtobi] - [#106162]) +- Bump Devialet to 1.4.4 ([@fwestenberg] - [#106171]) +- Bump ring-doorbell to 0.8.5 ([@sdb9696] - [#106178]) +- Bump Devialet to 1.4.5 ([@fwestenberg] - [#106184]) +- Bump aiopulse to 0.4.4 ([@atmurray] - [#106239]) +- Fix Shelly consumption_types ([@emontnemery] - [#106273]) +- Missing exception on relogin in Honeywell ([@mkmer] - [#106324]) +- Redact unique id from diagnostics in blink ([@mkmer] - [#106413]) + [#101186]: https://github.com/home-assistant/core/pull/101186 [#101196]: https://github.com/home-assistant/core/pull/101196 [#101349]: https://github.com/home-assistant/core/pull/101349 @@ -1492,6 +1605,7 @@ For a summary in a more readable format: [#104914]: https://github.com/home-assistant/core/pull/104914 [#104941]: https://github.com/home-assistant/core/pull/104941 [#104947]: https://github.com/home-assistant/core/pull/104947 +[#104948]: https://github.com/home-assistant/core/pull/104948 [#104961]: https://github.com/home-assistant/core/pull/104961 [#104966]: https://github.com/home-assistant/core/pull/104966 [#104972]: https://github.com/home-assistant/core/pull/104972 @@ -1511,6 +1625,39 @@ For a summary in a more readable format: [#105099]: https://github.com/home-assistant/core/pull/105099 [#105104]: https://github.com/home-assistant/core/pull/105104 [#105116]: https://github.com/home-assistant/core/pull/105116 +[#105124]: https://github.com/home-assistant/core/pull/105124 +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105140]: https://github.com/home-assistant/core/pull/105140 +[#105148]: https://github.com/home-assistant/core/pull/105148 +[#105150]: https://github.com/home-assistant/core/pull/105150 +[#105153]: https://github.com/home-assistant/core/pull/105153 +[#105155]: https://github.com/home-assistant/core/pull/105155 +[#105157]: https://github.com/home-assistant/core/pull/105157 +[#105164]: https://github.com/home-assistant/core/pull/105164 +[#105170]: https://github.com/home-assistant/core/pull/105170 +[#105184]: https://github.com/home-assistant/core/pull/105184 +[#105189]: https://github.com/home-assistant/core/pull/105189 +[#105191]: https://github.com/home-assistant/core/pull/105191 +[#105199]: https://github.com/home-assistant/core/pull/105199 +[#105201]: https://github.com/home-assistant/core/pull/105201 +[#105205]: https://github.com/home-assistant/core/pull/105205 +[#105222]: https://github.com/home-assistant/core/pull/105222 +[#105232]: https://github.com/home-assistant/core/pull/105232 +[#105241]: https://github.com/home-assistant/core/pull/105241 +[#105247]: https://github.com/home-assistant/core/pull/105247 +[#105248]: https://github.com/home-assistant/core/pull/105248 +[#105251]: https://github.com/home-assistant/core/pull/105251 +[#105255]: https://github.com/home-assistant/core/pull/105255 +[#105265]: https://github.com/home-assistant/core/pull/105265 +[#105266]: https://github.com/home-assistant/core/pull/105266 +[#105283]: https://github.com/home-assistant/core/pull/105283 +[#105289]: https://github.com/home-assistant/core/pull/105289 +[#105299]: https://github.com/home-assistant/core/pull/105299 +[#105312]: https://github.com/home-assistant/core/pull/105312 +[#105313]: https://github.com/home-assistant/core/pull/105313 +[#105314]: https://github.com/home-assistant/core/pull/105314 +[#105327]: https://github.com/home-assistant/core/pull/105327 +[#105330]: https://github.com/home-assistant/core/pull/105330 [#71034]: https://github.com/home-assistant/core/pull/71034 [#71644]: https://github.com/home-assistant/core/pull/71644 [#72363]: https://github.com/home-assistant/core/pull/72363 @@ -1547,6 +1694,7 @@ For a summary in a more readable format: [#95722]: https://github.com/home-assistant/core/pull/95722 [#95954]: https://github.com/home-assistant/core/pull/95954 [#96370]: https://github.com/home-assistant/core/pull/96370 +[#97031]: https://github.com/home-assistant/core/pull/97031 [#97280]: https://github.com/home-assistant/core/pull/97280 [#97553]: https://github.com/home-assistant/core/pull/97553 [#98164]: https://github.com/home-assistant/core/pull/98164 @@ -1558,45 +1706,8 @@ For a summary in a more readable format: [#99438]: https://github.com/home-assistant/core/pull/99438 [#99450]: https://github.com/home-assistant/core/pull/99450 [#99500]: https://github.com/home-assistant/core/pull/99500 -[@Adi146]: https://github.com/Adi146 -[@Bre77]: https://github.com/Bre77 -[@CFenner]: https://github.com/CFenner -[@Cereal2nd]: https://github.com/Cereal2nd -[@CodingSquirrel]: https://github.com/CodingSquirrel -[@DCSBL]: https://github.com/DCSBL -[@Danielhiversen]: https://github.com/Danielhiversen -[@Djelibeybi]: https://github.com/Djelibeybi -[@Floyer007]: https://github.com/Floyer007 -[@FredericMa]: https://github.com/FredericMa -[@GeoffAtHome]: https://github.com/GeoffAtHome -[@Haerteleric]: https://github.com/Haerteleric -[@Hejki]: https://github.com/Hejki -[@IceBotYT]: https://github.com/IceBotYT -[@IsakNyberg]: https://github.com/IsakNyberg -[@Kane610]: https://github.com/Kane610 -[@KapJI]: https://github.com/KapJI -[@Lash-L]: https://github.com/Lash-L -[@MTrab]: https://github.com/MTrab -[@Mappenhei]: https://github.com/Mappenhei -[@Marco98]: https://github.com/Marco98 -[@MartinHjelmare]: https://github.com/MartinHjelmare -[@MislavMandaric]: https://github.com/MislavMandaric -[@MrBartusek]: https://github.com/MrBartusek -[@Narmishka]: https://github.com/Narmishka -[@Noltari]: https://github.com/Noltari -[@OnFreund]: https://github.com/OnFreund -[@ProstoSanja]: https://github.com/ProstoSanja -[@Quentame]: https://github.com/Quentame -[@Shulyaka]: https://github.com/Shulyaka -[@Shutgun]: https://github.com/Shutgun -[@Sibgatulin]: https://github.com/Sibgatulin -[@StevenLooman]: https://github.com/StevenLooman -[@TheJulianJES]: https://github.com/TheJulianJES -[@TheKalpit]: https://github.com/TheKalpit -[@Vaarlion]: https://github.com/Vaarlion -[@ViViDboarder]: https://github.com/ViViDboarder -[@Xitee1]: https://github.com/Xitee1 [@abmantis]: https://github.com/abmantis +[@Adi146]: https://github.com/Adi146 [@akx]: https://github.com/akx [@allenporter]: https://github.com/allenporter [@apt-itude]: https://github.com/apt-itude @@ -1604,6 +1715,7 @@ For a summary in a more readable format: [@azogue]: https://github.com/azogue [@balloob]: https://github.com/balloob [@bdraco]: https://github.com/bdraco +[@bdraco]: https://github.com/bdraco [@bieniu]: https://github.com/bieniu [@bilak]: https://github.com/bilak [@blastoise186]: https://github.com/blastoise186 @@ -1611,21 +1723,29 @@ For a summary in a more readable format: [@boswelja]: https://github.com/boswelja [@bouwew]: https://github.com/bouwew [@bramkragten]: https://github.com/bramkragten +[@Bre77]: https://github.com/Bre77 [@c0ffeeca7]: https://github.com/c0ffeeca7 [@catsmanac]: https://github.com/catsmanac [@ccrepin]: https://github.com/ccrepin [@cdce8p]: https://github.com/cdce8p +[@Cereal2nd]: https://github.com/Cereal2nd +[@CFenner]: https://github.com/CFenner [@cgarwood]: https://github.com/cgarwood [@cgtobi]: https://github.com/cgtobi [@chrisx8]: https://github.com/chrisx8 +[@CodingSquirrel]: https://github.com/CodingSquirrel [@codyc1515]: https://github.com/codyc1515 [@codyhackw]: https://github.com/codyhackw [@coffeehorn]: https://github.com/coffeehorn [@cronjefourie]: https://github.com/cronjefourie +[@Danielhiversen]: https://github.com/Danielhiversen [@davet2001]: https://github.com/davet2001 +[@DCSBL]: https://github.com/DCSBL +[@DCSBL]: https://github.com/DCSBL [@deosrc]: https://github.com/deosrc [@dgomes]: https://github.com/dgomes [@disforw]: https://github.com/disforw +[@Djelibeybi]: https://github.com/Djelibeybi [@dknowles2]: https://github.com/dknowles2 [@dotvav]: https://github.com/dotvav [@dsypniewski]: https://github.com/dsypniewski @@ -1635,59 +1755,99 @@ For a summary in a more readable format: [@eifinger]: https://github.com/eifinger [@elupus]: https://github.com/elupus [@emontnemery]: https://github.com/emontnemery +[@emontnemery]: https://github.com/emontnemery [@engrbm87]: https://github.com/engrbm87 [@erwindouna]: https://github.com/erwindouna +[@Excentyl]: https://github.com/Excentyl [@farmio]: https://github.com/farmio [@fb22]: https://github.com/fb22 [@fetzerch]: https://github.com/fetzerch [@ffourcot]: https://github.com/ffourcot +[@flabbamann]: https://github.com/flabbamann +[@Floyer007]: https://github.com/Floyer007 +[@FredericMa]: https://github.com/FredericMa +[@frenck]: https://github.com/frenck [@frenck]: https://github.com/frenck [@fwestenberg]: https://github.com/fwestenberg [@gaaf]: https://github.com/gaaf [@geirra]: https://github.com/geirra +[@GeoffAtHome]: https://github.com/GeoffAtHome [@gigatexel]: https://github.com/gigatexel [@gjohansson-ST]: https://github.com/gjohansson-ST +[@gjohansson-ST]: https://github.com/gjohansson-ST [@gladhorn]: https://github.com/gladhorn [@glanch]: https://github.com/glanch +[@Haerteleric]: https://github.com/Haerteleric [@hahn-th]: https://github.com/hahn-th +[@haimn]: https://github.com/haimn +[@Hejki]: https://github.com/Hejki [@hesselonline]: https://github.com/hesselonline +[@IceBotYT]: https://github.com/IceBotYT [@iMicknl]: https://github.com/iMicknl +[@iMicknl]: https://github.com/iMicknl +[@IsakNyberg]: https://github.com/IsakNyberg [@jakubcermak]: https://github.com/jakubcermak [@janiversen]: https://github.com/janiversen [@jbouwh]: https://github.com/jbouwh +[@jbouwh]: https://github.com/jbouwh [@jflefebvre06]: https://github.com/jflefebvre06 [@jimmyd-be]: https://github.com/jimmyd-be [@jmwhite5]: https://github.com/jmwhite5 [@joostlek]: https://github.com/joostlek [@joseph39]: https://github.com/joseph39 [@jpbede]: https://github.com/jpbede +[@jpbede]: https://github.com/jpbede [@jrieger]: https://github.com/jrieger +[@Kane610]: https://github.com/Kane610 +[@Kane610]: https://github.com/Kane610 +[@KapJI]: https://github.com/KapJI [@killer0071234]: https://github.com/killer0071234 [@klaasnicolaas]: https://github.com/klaasnicolaas [@kroimon]: https://github.com/kroimon +[@Lash-L]: https://github.com/Lash-L [@laurentriffard]: https://github.com/laurentriffard [@ludeeus]: https://github.com/ludeeus [@lunmay]: https://github.com/lunmay +[@lunmay]: https://github.com/lunmay +[@Mappenhei]: https://github.com/Mappenhei [@marcelveldt]: https://github.com/marcelveldt +[@Marco98]: https://github.com/Marco98 [@marcolivierarsenault]: https://github.com/marcolivierarsenault [@marthoc]: https://github.com/marthoc +[@MartinHjelmare]: https://github.com/MartinHjelmare +[@matrixd2]: https://github.com/matrixd2 [@maximweb]: https://github.com/maximweb [@mheath]: https://github.com/mheath [@mib1185]: https://github.com/mib1185 +[@MislavMandaric]: https://github.com/MislavMandaric [@mkmer]: https://github.com/mkmer [@mletenay]: https://github.com/mletenay +[@MrBartusek]: https://github.com/MrBartusek [@mricharz]: https://github.com/mricharz +[@MTrab]: https://github.com/MTrab [@muppet3000]: https://github.com/muppet3000 [@myztillx]: https://github.com/myztillx [@nachonam]: https://github.com/nachonam +[@Narmishka]: https://github.com/Narmishka [@natekspencer]: https://github.com/natekspencer +[@nohn]: https://github.com/nohn +[@Noltari]: https://github.com/Noltari [@ollo69]: https://github.com/ollo69 +[@ollo69]: https://github.com/ollo69 +[@OnFreund]: https://github.com/OnFreund +[@OnFreund]: https://github.com/OnFreund [@oyvindwe]: https://github.com/oyvindwe +[@oyvindwe]: https://github.com/oyvindwe +[@pavoni]: https://github.com/pavoni [@pavoni]: https://github.com/pavoni [@pdecat]: https://github.com/pdecat [@piitaya]: https://github.com/piitaya +[@piitaya]: https://github.com/piitaya [@pjanuario]: https://github.com/pjanuario +[@ProstoSanja]: https://github.com/ProstoSanja [@puddly]: https://github.com/puddly +[@Quentame]: https://github.com/Quentame +[@Quentame]: https://github.com/Quentame [@r01k]: https://github.com/r01k [@raman325]: https://github.com/raman325 [@rappenze]: https://github.com/rappenze @@ -1698,21 +1858,157 @@ For a summary in a more readable format: [@scop]: https://github.com/scop [@sdb9696]: https://github.com/sdb9696 [@sergeymaysak]: https://github.com/sergeymaysak +[@Shulyaka]: https://github.com/Shulyaka +[@Shutgun]: https://github.com/Shutgun +[@Sibgatulin]: https://github.com/Sibgatulin [@slovdahl]: https://github.com/slovdahl [@starkillerOG]: https://github.com/starkillerOG +[@starkillerOG]: https://github.com/starkillerOG [@stegm]: https://github.com/stegm +[@StevenLooman]: https://github.com/StevenLooman [@suaveolent]: https://github.com/suaveolent [@syepes]: https://github.com/syepes [@synesthesiam]: https://github.com/synesthesiam +[@synesthesiam]: https://github.com/synesthesiam [@teharris1]: https://github.com/teharris1 [@tetele]: https://github.com/tetele +[@TheJulianJES]: https://github.com/TheJulianJES +[@TheJulianJES]: https://github.com/TheJulianJES +[@TheKalpit]: https://github.com/TheKalpit [@thijsputman]: https://github.com/thijsputman [@timmo001]: https://github.com/timmo001 [@tjhorner]: https://github.com/tjhorner +[@tjhorner]: https://github.com/tjhorner [@tkdrob]: https://github.com/tkdrob [@tronikos]: https://github.com/tronikos [@ufodone]: https://github.com/ufodone +[@Vaarlion]: https://github.com/Vaarlion [@vangorra]: https://github.com/vangorra [@vhartikainen]: https://github.com/vhartikainen +[@ViViDboarder]: https://github.com/ViViDboarder +[@Xitee1]: https://github.com/Xitee1 [@yuxincs]: https://github.com/yuxincs [@zxdavb]: https://github.com/zxdavb +[#104853]: https://github.com/home-assistant/core/pull/104853 +[#104936]: https://github.com/home-assistant/core/pull/104936 +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105203]: https://github.com/home-assistant/core/pull/105203 +[#105294]: https://github.com/home-assistant/core/pull/105294 +[#105310]: https://github.com/home-assistant/core/pull/105310 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105349]: https://github.com/home-assistant/core/pull/105349 +[#105375]: https://github.com/home-assistant/core/pull/105375 +[#105387]: https://github.com/home-assistant/core/pull/105387 +[#105435]: https://github.com/home-assistant/core/pull/105435 +[#105437]: https://github.com/home-assistant/core/pull/105437 +[#105440]: https://github.com/home-assistant/core/pull/105440 +[#105442]: https://github.com/home-assistant/core/pull/105442 +[#105444]: https://github.com/home-assistant/core/pull/105444 +[#105450]: https://github.com/home-assistant/core/pull/105450 +[#105456]: https://github.com/home-assistant/core/pull/105456 +[#105462]: https://github.com/home-assistant/core/pull/105462 +[#105465]: https://github.com/home-assistant/core/pull/105465 +[#105476]: https://github.com/home-assistant/core/pull/105476 +[#105491]: https://github.com/home-assistant/core/pull/105491 +[#105500]: https://github.com/home-assistant/core/pull/105500 +[#105508]: https://github.com/home-assistant/core/pull/105508 +[#105513]: https://github.com/home-assistant/core/pull/105513 +[#105580]: https://github.com/home-assistant/core/pull/105580 +[#105585]: https://github.com/home-assistant/core/pull/105585 +[#105617]: https://github.com/home-assistant/core/pull/105617 +[#105619]: https://github.com/home-assistant/core/pull/105619 +[#105659]: https://github.com/home-assistant/core/pull/105659 +[#105661]: https://github.com/home-assistant/core/pull/105661 +[@DerFlob]: https://github.com/DerFlob +[@FrnchFrgg]: https://github.com/FrnchFrgg +[@KJonline]: https://github.com/KJonline +[@allenporter]: https://github.com/allenporter +[@apt-itude]: https://github.com/apt-itude +[@bdraco]: https://github.com/bdraco +[@bouwew]: https://github.com/bouwew +[@catsmanac]: https://github.com/catsmanac +[@cdce8p]: https://github.com/cdce8p +[@dknowles2]: https://github.com/dknowles2 +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@gjohansson-ST]: https://github.com/gjohansson-ST +[@j-a-n]: https://github.com/j-a-n +[@jbouwh]: https://github.com/jbouwh +[@joostlek]: https://github.com/joostlek +[@mkmer]: https://github.com/mkmer +[@puddly]: https://github.com/puddly +[@synesthesiam]: https://github.com/synesthesiam +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105515]: https://github.com/home-assistant/core/pull/105515 +[#105655]: https://github.com/home-assistant/core/pull/105655 +[#105676]: https://github.com/home-assistant/core/pull/105676 +[#105691]: https://github.com/home-assistant/core/pull/105691 +[#105694]: https://github.com/home-assistant/core/pull/105694 +[#105714]: https://github.com/home-assistant/core/pull/105714 +[#105719]: https://github.com/home-assistant/core/pull/105719 +[#105735]: https://github.com/home-assistant/core/pull/105735 +[#105749]: https://github.com/home-assistant/core/pull/105749 +[@Kane610]: https://github.com/Kane610 +[@Noltari]: https://github.com/Noltari +[@bdraco]: https://github.com/bdraco +[@cgarwood]: https://github.com/cgarwood +[@epenet]: https://github.com/epenet +[@frenck]: https://github.com/frenck +[@jpbede]: https://github.com/jpbede +[@mib1185]: https://github.com/mib1185 +[#105135]: https://github.com/home-assistant/core/pull/105135 +[#105324]: https://github.com/home-assistant/core/pull/105324 +[#105364]: https://github.com/home-assistant/core/pull/105364 +[#105488]: https://github.com/home-assistant/core/pull/105488 +[#105489]: https://github.com/home-assistant/core/pull/105489 +[#105655]: https://github.com/home-assistant/core/pull/105655 +[#105743]: https://github.com/home-assistant/core/pull/105743 +[#105757]: https://github.com/home-assistant/core/pull/105757 +[#105807]: https://github.com/home-assistant/core/pull/105807 +[#105811]: https://github.com/home-assistant/core/pull/105811 +[#105812]: https://github.com/home-assistant/core/pull/105812 +[#105830]: https://github.com/home-assistant/core/pull/105830 +[#105833]: https://github.com/home-assistant/core/pull/105833 +[#105860]: https://github.com/home-assistant/core/pull/105860 +[#105870]: https://github.com/home-assistant/core/pull/105870 +[#105946]: https://github.com/home-assistant/core/pull/105946 +[#105951]: https://github.com/home-assistant/core/pull/105951 +[#105954]: https://github.com/home-assistant/core/pull/105954 +[#105992]: https://github.com/home-assistant/core/pull/105992 +[#105993]: https://github.com/home-assistant/core/pull/105993 +[#105998]: https://github.com/home-assistant/core/pull/105998 +[#106094]: https://github.com/home-assistant/core/pull/106094 +[#106101]: https://github.com/home-assistant/core/pull/106101 +[#106134]: https://github.com/home-assistant/core/pull/106134 +[#106147]: https://github.com/home-assistant/core/pull/106147 +[#106149]: https://github.com/home-assistant/core/pull/106149 +[#106152]: https://github.com/home-assistant/core/pull/106152 +[#106162]: https://github.com/home-assistant/core/pull/106162 +[#106171]: https://github.com/home-assistant/core/pull/106171 +[#106178]: https://github.com/home-assistant/core/pull/106178 +[#106184]: https://github.com/home-assistant/core/pull/106184 +[#106239]: https://github.com/home-assistant/core/pull/106239 +[#106273]: https://github.com/home-assistant/core/pull/106273 +[#106324]: https://github.com/home-assistant/core/pull/106324 +[#106413]: https://github.com/home-assistant/core/pull/106413 +[@Noltari]: https://github.com/Noltari +[@OnFreund]: https://github.com/OnFreund +[@agners]: https://github.com/agners +[@atmurray]: https://github.com/atmurray +[@bachya]: https://github.com/bachya +[@bdraco]: https://github.com/bdraco +[@benleb]: https://github.com/benleb +[@bieniu]: https://github.com/bieniu +[@cgtobi]: https://github.com/cgtobi +[@emontnemery]: https://github.com/emontnemery +[@frenck]: https://github.com/frenck +[@fwestenberg]: https://github.com/fwestenberg +[@mib1185]: https://github.com/mib1185 +[@mkmer]: https://github.com/mkmer +[@pnbruckner]: https://github.com/pnbruckner +[@puddly]: https://github.com/puddly +[@sdb9696]: https://github.com/sdb9696 +[@starkillerOG]: https://github.com/starkillerOG +[@synesthesiam]: https://github.com/synesthesiam +[@vexofp]: https://github.com/vexofp diff --git a/source/dashboards/badges.markdown b/source/dashboards/badges.markdown index 0a32b826a5e..56821d17624 100644 --- a/source/dashboards/badges.markdown +++ b/source/dashboards/badges.markdown @@ -5,6 +5,11 @@ description: "Description of the various badges that are available." Badges are widgets that sit at the top of a panel, above all the cards. +

    + Badges + Badges at the top of a panel. +

    + ## State Label Badge The State Label badge allows you to display a state badge. This badge supports [actions](/dashboards/actions/). diff --git a/source/dashboards/features.markdown b/source/dashboards/features.markdown index 62d1af628f5..fa704c88bc6 100644 --- a/source/dashboards/features.markdown +++ b/source/dashboards/features.markdown @@ -104,6 +104,11 @@ type: required: true description: "`climate-hvac-modes`" type: string +style: + required: false + description: "How the modes should be displayed. It can be either `dropdown` or `icons`." + type: string + default: icons hvac_modes: required: true description: List of modes to show on the card. The list can contain `auto`, `heat_cool`, `heat`, `cool`, `dry`, `fan_only`, and `off`. diff --git a/source/getting-started/concepts-terminology.markdown b/source/getting-started/concepts-terminology.markdown index 6c1a71dc11c..cb5e3508a2a 100644 --- a/source/getting-started/concepts-terminology.markdown +++ b/source/getting-started/concepts-terminology.markdown @@ -4,12 +4,6 @@ description: "Explaining some Home Assistant basics" --- Now you're in Home Assistant, let's look at the most important concepts. -## Dashboards - -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. 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. To learn how to customize your dashboards, refer to the [dashboard](/dashboards) documentation. - -![Dashboard](/images/getting-started/lovelace.png) - ## Integrations Integrations are pieces of software that allow Home Assistant to connect to other software and platforms. For example, a product by Philips called Hue would use the Philips Hue {% term integration %} and allow Home Assistant to talk to the hardware controller Hue Bridge. Any Home Assistant compatible {% term devices %} connected to the Hue Bridge would appear in Home Assistant as [devices](#devices--entities). @@ -70,4 +64,4 @@ Depending on your [installation type](/installation), you can install third part ![Add-ons](/images/getting-started/add-ons.png) -{% include getting-started/next_step.html step="Adding Integrations In Home Assistant" link="/getting-started/integration/" %} +{% include getting-started/next_step.html step="Edit the dashboard" link="/getting-started/onboarding_dashboard/" %} diff --git a/source/getting-started/configuration.markdown b/source/getting-started/configuration.markdown index 8c1849ef3c8..b18abfa0212 100644 --- a/source/getting-started/configuration.markdown +++ b/source/getting-started/configuration.markdown @@ -41,7 +41,7 @@ Now let's make a change using the file editor: we are going to change the name, - Click the save icon in the top right to commit changes. - - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a configuration check. Do this by navigating to {% my server_controls title="Developer Tools > YAML" %} and and then clicking on the **Check configuration** button. When it's valid, it will show the text "Configuration valid!". In order for the **Check Configuration**" button to be visible, you must enable **Advanced Mode** on your user profile. + - Most changes in `configuration.yaml` require Home Assistant to be restarted to see the changes. You can verify that your changes are acceptable by running a configuration check. Do this by navigating to {% my server_controls title="Developer Tools > YAML" %} and then clicking on the **Check configuration** button. When it's valid, it will show the text "Configuration valid!". In order for the **Check Configuration**" button to be visible, you must enable **Advanced Mode** on your user profile. - Now restart Home Assistant. You can do so by either using the **Restart** option in the ⚙ menu of the File Editor UI or by navigating to {% my system_dashboard title="Settings > System" %} and then clicking on the **Restart** button on the top right of the page. ![Screenshot of the "General" page in the configuration panel.](/images/screenshots/configuration-validation.png) diff --git a/source/getting-started/onboarding.markdown b/source/getting-started/onboarding.markdown index 24051d20fe7..e9df380e60b 100644 --- a/source/getting-started/onboarding.markdown +++ b/source/getting-started/onboarding.markdown @@ -26,7 +26,9 @@ We will now create the owner's account of Home Assistant. This account is an adm - Continue with the procedure on [restoring from backup](/common-tasks/os/#restoring-a-backup). - Ignore the rest of this procedure. The following steps describe how to create a new installation, not how to restore from backup. 2. If this is your initial installation, select **Create my smart home**. -3. Enter a name, username, and password. Select **Create account**. +3. Enter a name, username, and password. + - Store the name, username, and password in a password manager. There is no way to recover the owner credentials. + - Select **Create account**. ![Set your username and password.](/images/getting-started/username.png) diff --git a/source/getting-started/onboarding_dashboard.markdown b/source/getting-started/onboarding_dashboard.markdown index bef7cd9eeb5..37fbff83251 100644 --- a/source/getting-started/onboarding_dashboard.markdown +++ b/source/getting-started/onboarding_dashboard.markdown @@ -5,6 +5,12 @@ 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. + +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. + +![Dashboard](/images/getting-started/lovelace.png) + The procedure below is optional. The idea is to learn some basics on changing the dashboard. ### To change a card on the Overview dashboard @@ -48,4 +54,4 @@ 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="Concepts & Terminology" link="/getting-started/concepts-terminology/" %} \ No newline at end of file +{% include getting-started/next_step.html step="Integrations" link="/getting-started/integration/" %} \ No newline at end of file diff --git a/source/green/index.html b/source/green/index.html index f32ebbe2820..9f69711502d 100644 --- a/source/green/index.html +++ b/source/green/index.html @@ -2329,7 +2329,22 @@ frontpage_image: /images/frontpage/green-frontpage.png
    🇺🇸
    ameriDroid
    -
    Shipping from the USA
    +
    Shipping from US
    +
    + + + + + + + +
    +
    +
    🇺🇸
    +
    Cloudfree
    +
    Shipping from US
    🇺🇸
    ameriDroid
    -
    Shipping from the USA
    +
    Shipping from US
    + +## ESP32-S3-BOX-3 voice assistant status illustrations + +The ESP32-S3-BOX-3 voice assistant has 6 illustrations to indicate its state: + +

    + Screenshot showing energy price graph. + The ESP32-S3-BOX-3 states: loading, idle, listening, thinking, replying, error. +

    + +The chart shows the default illustrations. The next steps show you how to change those. + +## Prerequisites + +- Latest version of Home Assistant, installed with the Home Assistant Operating System +- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- [ESP32-S3-BOX-3](https://www.aliexpress.us/item/1005005920207976.html?gatewayAdapt=4itemAdapt). The ESP32-S3-BOX-Lite or the ESP32-S3-BOX also work, but they are not currently on the market. +- Successfully completed the [ESP32-S3-BOX-3 voice assistant](/voice_control/s3_box_voice_assistant/) tutorial + +## Adopting the device in the ESPHome add-on + +Before you can import new illustrations, you need to install the ESPHome add-on and adopt the device in the add-on. + +1. Make sure the ESP32-S3-BOX-3 is up and running and connected to your Wi-Fi. +2. Go to **Settings** > **Add-ons** and check if you have the **ESPHome** add-on installed. + - If you haven't done so, go to [**Settings** > **Add-ons** > **ESPHome**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome) to install the add-on. +3. Start the add-on and select **Open web UI**. +4. In the ESPHome add-on dashboard, on the **ESP32-S3-BOX-3** card, select **Adopt**. + + ![Adopt the ESP32-S3-BOX-3 in the ESPHome add-on](/images/assist/esp32-adopt-s3.png) +5. If you like, give it a new name. Then, select **Adopt**. + - Adopting an ESPHome device allows us to customize the existing software. + - **Result**: The status will change to **Online**. +6. Now that you have set up the ESPHome add-on, continue with one of the 2 different methods to add custom images: + - [Option 1: Using images from a community repository](#option-1-using-images-from-a-community-repository) + - [Option 2: Using your own images](#option-2-using-your-own-illustrations) + +## Option 1: Using images from a community repository + +If you want new images but don't want to create your own, you can use images from the community. +If you want to use your own images, skip this procedure and go to [Option 2: Using your own imagess](#option-2-using-your-own-illustrations) instead. + +### To use images from the community + +1. On the **ESP32-S3-BOX-3** add-on, select edit. + - **Result**: An editor opens, showing the configuration file. + ![ESP32-S3-BOX-3 config file](/images/assist/esp32-adopt-s3-01.png) +2. For inspiration, we have prepared some images for you. + - Check them out in this [repository](https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/tree/main/frenck/illustrations). +3. For this tutorial, we will use some images of Frenck. + - Add the following lines into the `substitutions` block. + + ```yaml + substitutions: + loading_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/loading.png + idle_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/idle.png + listening_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/listening.png + thinking_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/thinking.png + replying_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/replying.png + error_illustration_file: https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/raw/main/frenck/illustrations/error.png + ``` + +4. Save the changes and select **Install**: + - Depending on your environment, the installation process can take a while. +![ESP32-S3-BOX-3 config file](/images/assist/esp32-s3-config-05.png) + +5. Once the installation is complete, you can see the new image on the ESP32-S3-BOX-3. + - Now, speak a command to test the new setting. For example, *OK Nabu, turn off the living room lights*. + +## Option 2: Using your own illustrations + +There are 2 parts to this: + +- [Preparing your own illustrations](#to-prepare-your-own-images) +- [Adding your illustrations to the configuration](#to-add-your-images-to-the-configuration) + +### About the image specifications + +Here's what you need to know to get the best result on your ESP32-S3-BOX-3 screen. + +#### Using light and dark image background + +In the [overview diagram](#esp32-s3-box-3-voice-assistant-status-illustrations), you can see that the default images use different background colors. This is to make it easier to recognize a state change when you look at your screen. + +In your images, you could use 2 different background colors: + +- For loading and idle: use a dark background +- For listening, thinking, and replying: use a light background +- For error: As you like + +If your images have transparency, you can define the background color in the configuration. The procedure below shows how to change the background. + +#### Image dimensions and file format + +- **Dimensions**: The screen is 320 x 240 pixels. If the image you provide is not in a 4:3 ratio, the remaining area will be filled with background color. +- **File format**: PNG, JPEG, or SVG + +### To prepare your own images + +1. Create your own images according to the specifications defined in the section [About the image specifications](#about-the-image-specifications). + - You could even draw your own! + - There's a [template](#to-draw-your-own-images) for it. +2. Copy all 6 images into a folder. For example: `voice_assistant_gfx`. +3. Make sure you have [access to your configuration files](/common-tasks/os/#configuring-access-to-files). + - [Install the Samba add-on](/common-tasks/os/#installing-and-using-the-samba-add-on). + - This allows you to copy multiple files at once. +4. Copy your image folder into the configuration folder: + - Open the `config` folder and open the `ESPHome` folder. + - Copy your image folder in there. + ![ESP32-S3-BOX-3 config file](/images/assist/s32-s3-add-image-folder.png) + +### To add your images to the configuration + +1. In Home Assistant, go to [**Settings** > **Add-ons** > **ESPHome**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome), and **Open Web UI**. +2. On the **ESP32-S3-BOX-3** add-on, select edit. + - **Result**: An editor opens, showing the configuration file. + ![ESP32-S3-BOX-3 config file](/images/assist/esp32-adopt-s3-01.png) + +3. To add your images, add the following lines into the `substitutions` block. + + ```yaml + substitutions: + loading_illustration_file: voice_assistant_gfx/loading.png + idle_illustration_file: voice_assistant_gfx/idle.png + listening_illustration_file: voice_assistant_gfx/listening.png + thinking_illustration_file: voice_assistant_gfx/thinking.png + replying_illustration_file: voice_assistant_gfx/replying.png + error_illustration_file: voice_assistant_gfx/error.png + ``` + +4. If you used transparency in your images and you want to change the background color, add the following lines into the `substitutions` block: + - The `000000` stands for black, `FFFFFF` stands for white in [hexadecimal color code](https://www.w3schools.com/html/html_colors_hex.asp). + - If you want to use different colors, replace the corresponding color code. + - To find the color code, you can use a tool like the Google color picker. + + ```yaml + substitutions: + ... + loading_illustration_background_color: '000000' + idle_illustration_background_color: '000000' + listening_illustration_background_color: 'FFFFFF' + thinking_illustration_background_color: 'FFFFFF' + replying_illustration_background_color: 'FFFFFF' + error_illustration_background_color: '000000' + ``` + +5. Save the changes and select **Install**. + ![ESP32-S3-BOX-3 config file](/images/assist/s32-s3-add-image-config-02.png) +6. Save the changes. + - Depending on your environment, the installation process can take a while. +7. Once the installation is complete, you can see the new image on the S3-BOX. + - Now, speak a command to test the new setting. For example, *OK Nabu, turn on the light*. + +## To draw your own images + +1. We prepared a template for you to draw your own status images. +![ESP32-S3-BOX-3 config file](/images/assist/draw_assist.png) +2. Download the file and start drawing! + +
    + Draw Assist + +3. When you are done: + - Snap a picture of each. + - [Follow these steps](#to-prepare-your-own-images) to bring them onto your Voice Assistant. + +## Related topics + +- [Community image repository](https://github.com/jlpouffier/home-assistant-s3-box-community-illustrations/tree/main) +- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) +- [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- [ESP32-S3-BOX-3 voice assistant](/voice_control/s3_box_voice_assistant/) +- [General troubleshooting section for Assist](/voice_control/troubleshooting/) +- [Troubleshooting the ESP32-S3-BOX-3](/voice_control/troubleshooting_the_s3_box/) +- [Access to your configuration files](/common-tasks/os/#configuring-access-to-files) diff --git a/source/voice_control/s3_box_voice_assistant.markdown b/source/voice_control/s3_box_voice_assistant.markdown new file mode 100644 index 00000000000..e6968c545cc --- /dev/null +++ b/source/voice_control/s3_box_voice_assistant.markdown @@ -0,0 +1,90 @@ +--- +title: "ESP32-S3-BOX voice assistant" +product_name: ESP32-S3-BOX +device_name_entry: ESP32-S3-BOX +config_link: /voice_control/s3_box_voice_assistant/#to-delete-the-configuration-from-esphome +--- + +This tutorial will guide you to turn an ESP32-S3-BOX, ESP32-S3-BOX-3, or an ESP32-S3-BOX-Light into a Home Assistant voice assistant. Note, the term ESP32-S3-BOX is used to refer to any of the 3 product variants. + + + +## Prerequisites + +- Home Assistant 2023.12, installed with the Home Assistant Operating System +- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- Have [enabled a wake word](/voice_control/install_wake_word_add_on/) for your voice assistant +- The password to your 2.4 GHz Wi-Fi network +- Chrome or Edge browser on a desktop (not Android/iOS) +- One of the three Espressif ESP32-S3-BOX variants: + - [ESP32-S3-BOX-3](https://www.aliexpress.us/item/1005005920207976.html?gatewayAdapt=4itemAdapt) + - ESP32-S3-BOX or ESP32-S3-BOX-Lite (not currently on the market) +- USB-C cable to connect the ESP32-S3-BOX + +## Installing the software onto the ESP32-S3-BOX + +Before you can use this device with Home Assistant, you need to install a bit of software on it. + +1. Make sure this page is opened in a Chromium-based browser on a **desktop**. The software installation does not work with a tablet or phone. + + - If you have an ESP32-S3-BOX-3, select the **Connect** button below to display a list of available USB devices. Do not connect the ESP32-S3-BOX-3 yet. + - If your ESP32-S3-BOX-3 does not appear in the list of devices presented by your browser: + - You need to manually invoke "flash mode": + - Hold the "boot" button (left side upper button) as you tap the "reset" button (left side lower button) + - After a few seconds, the ESP32-S3-BOX-3 should appear in the list of USB devices presented by your browser. + - Follow the steps until step 3. After selecting the **Next** button, on the S3-Box, tap the "Reset" button again. + - Then, select the blue **Connect button** again, select the USB device and follow the prompts to configure the Wi-Fi. + - If your browser does not support web serial, you will see a warning message indicating this instead of a button. + + + + + + - If you have an ESP32-S3-BOX or ESP32-S3-BOX-Lite, open the [ESPHome projects](https://esphome.io/projects/index.html?type=voice) page, select your variant and follow the installation instructions. + - **For advanced users**: The configuration files are available on GitHub: + - [ESP32-S3-BOX-3](https://github.com/esphome/firmware/blob/main/voice-assistant/esp32-s3-box-3.yaml) + +{% include voice_assistant/install_esp_firmware.md %} + +9. Select the **ESPHome** integration. Under **Devices**, you should see the **ESP32-S3-BOX** listed. + ![ESP32-S3-BOX-3 discovered](/images/assist/s32-s3-box-3-discovered.png) + + - Your ESP32-S3-BOX is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply. + +10. Congratulations! You can now voice control Home Assistant via a ESP32 device with a display. Now give some commands. + +## Controlling Home Assistant + +1. Say your wake word. For this tutorial, use "OK, Nabu". +2. Say a [supported voice command](/voice_control/builtin_sentences/). For example, *Turn on the light*. + - Once the intent has been processed, the LED lights up in green and Home Assistant confirms the action. + - Make sure you’re using the area name exactly as you defined it in Home Assistant. + - You can also ask a question, such as + - *Is the front door locked?* + - *Which lights are on in the living room?* +3. Your command is not supported? Add your own commands using [a sentence trigger](/voice_control/custom_sentences/). + +## Turning off microphone or screen + +1. If you do not want to Assist to listen for a while, you can turn off the microphone. + - Go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the **ESPHome** integration. + - Under **ESP32-S3-BOX-3**, select **1 device**. + - Enable **Mute**. + - The screen of the ESP32-S3-BOX-3 will turn off, too. + + ![Toggle to enable/disable Mute](/images/assist/wake_word_disable.png) +2. If you want to just use the wake word, but do not want to use the screen, you can turn it off. + - Go to {% my integrations title="**Settings** > **Devices & Services**" %} and select the **ESPHome** integration. + - Under **ESP32-S3-BOX-3**, select **1 device**. + - Disable **LCD Backlight**. + + ![Toggle to enable/disable wake word](/images/assist/s3-box-disable-screen.png) + +## Related topics + +- [Enable a wake word](/voice_control/install_wake_word_add_on/) +- [General troubleshooting section for Assist](/voice_control/troubleshooting/) +- [Troubleshooting the ESP32-S3-BOX-3](/voice_control/troubleshooting_the_s3_box/) +- [ESPHome projects page](https://esphome.io/projects/index.html) +- [Access to your configuration files](/common-tasks/os/#configuring-access-to-files) diff --git a/source/voice_control/thirteen-usd-voice-remote.markdown b/source/voice_control/thirteen-usd-voice-remote.markdown index 2e1f77fdf80..5489f8eafaa 100644 --- a/source/voice_control/thirteen-usd-voice-remote.markdown +++ b/source/voice_control/thirteen-usd-voice-remote.markdown @@ -1,5 +1,8 @@ --- title: "$13 voice assistant for Home Assistant" +product_name: ATOM Echo +device_name_entry: M5Stack Atom Echo a61920 +config_link: /voice_control/thirteen-usd-voice-remote/#to-delete-the-atom-echo-configuration-from-esphome --- This tutorial will guide you to turn an ATOM Echo into the @@ -12,46 +15,15 @@ your smart home. Issue commands and get responses! ## Prerequisites - Home Assistant 2023.10, installed with the Home Assistant Operating System -- [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) or a manually configured [Assist Pipeline](/voice_control/voice_remote_local_assistant) +- Have [enabled a wake word](/voice_control/install_wake_word_add_on/) for your voice assistant - The password to your 2.4 GHz Wi-Fi network - Chrome (or a Chromium-based browser like Edge) on desktop (not Android/iOS) - [M5Stack ATOM Echo Development Kit](https://shop.m5stack.com/products/atom-echo-smart-speaker-dev-kit?ref=NabuCasa) - USB-C cable to connect the ATOM Echo -## Adding a wake word to your voice assistant - -1. Install the openWakeWord add-on: - - Follow steps 1-3 of the procedure on [enabling a wake word](/voice_control/install_wake_word_add_on). -2. Go to {% my voice_assistants title="**Settings** > **Voice assistants**" %} and select **Add assistant**. -3. Give your assistant a name, for example the wake word you are going to use. -4. Select the language you are going to use to speak to Home Assistant. - - If the **Text-to-speech** and **Speech-to-text** sections do not provide language selectors, this means you do not have an Assist pipeline set up. - - Set up [Home Assistant Cloud](https://www.nabucasa.com) or a manually configured [Assist pipeline](/voice_control/voice_remote_local_assistant). -5. Under **Text-to-speech**, select the language and voice you want Home Assistant to use when speaking to you. -6. To define the wake word engine, under **Wake word**, select **openWakeWord**. - - Then, select **ok nabu**. - - If you created a new assistant, select **Create**. - - If you edited an existing assistant, select **Update**. - - **Result**: You now have a voice assistant that listens to a wake word. -7. For the first run, it is recommended to use **ok nabu**, just to test the setup. - - Once you have it all set up, you can [create your own wake words](/voice_control/create_wake_word/). - ## Installing the software onto the ATOM Echo -If you have used the ATOM Echo on Home Assistant before and have it installed via ESPHome add-on, you first need to remove its configuration. - -### To delete the ATOM Echo configuration from ESPHome - -1. Go to {% my integrations title="**Settings** > **Devices & Services**" %}, and select the ESPHome integration. - - Under **Devices**, next to the **M5Stack Atom Echo a61920** entry, select the three-dots menu. - - Select **Delete**. -2. Make sure you have [access to the configuration files](/common-tasks/os/#configuring-access-to-files). - - If you have never done this before, [install the file editor add-on](/common-tasks/os/#installing-and-using-the-file-editor-add-on). -3. Access the config files and open the **esphome** folder. -4. If there is a configuration file for the ATOM Echo, delete it. - -### To install the software on your ATOM Echo - Before you can use this device with Home Assistant, you need to install a bit of software on it. 1. Make sure this page is opened in a Chromium-based browser on a desktop. It does not work on a tablet or phone. @@ -61,40 +33,11 @@ Before you can use this device with Home Assistant, you need to install a bit of - **For advanced users**: The configuration file is available on [GitHub](https://github.com/esphome/firmware/blob/main/voice-assistant/m5stack-atom-echo.yaml). -2. Connect the ATOM Echo to your computer. - - In the pop-up window, view the available ports. - - Plug the USB-C cable into the ATOM Echo and connect it to your computer. - - In the pop-up window, there should now appear a new entry. Select this USB serial port and select **Connect**. - - Depending on your computer, the entry might look different. - ![Select USB port](/images/assist/esp32-atom-flash-select-port.png) - - If no new port shows, your system may be missing a driver. Close the pop-up window. - - In the dialog, select the CH342 driver, install it, then **Try again**. - ![Open My link](/images/assist/esp32-atom-flash-no-port.png) -3. Select **Install Voice Assistant**, then **Install**. - - Follow the instructions provided by the installation wizard. - - Add the ATOM Echo to your Wi-Fi: - - When prompted, select your network from the list and enter the credentials to your 2.4 GHz Wi-Fi network. - - Select **Connect**. - - The ATOM Echo now joined your network. Select **Add to Home Assistant**. -4. This opens the **My** link to Home Assistant. - - If you have not used My Home Assistant before, you will need to configure it. If your Home Assistant URL is not accessible on `http://homeassistant.local:8123`, replace it with the URL to your Home Assistant instance. - - Open the link. - ![Open My link](/images/assist/esp32-atom-flash-06.png) -5. Select **OK**. - - ![Set up ESPHome](/images/assist/esp32-atom-flash-07.png) -6. If, at this stage, a dialog opens, prompting you to enter the connection settings of your ESPHome node, it means there is already a configuration set up for that ESPHome device. - - Close the dialog and perform the procedure on [deleting the ATOM Echo configuration from ESPHome](/voice_control/thirteen-usd-voice-remote/#to-delete-the-atom-echo-configuration-from-esphome). - - Restart Home Assistant. - - Then, under {% my integrations title="**Settings** > **Devices & Services**" %}, your ATOM Echo should be discovered. -7. To add the newly discovered device, select the ATOM Echo from the list. - - Add your ATOM Echo to a room and select **Finish**. -8. You should now see the **ESPHome** integration. - ![New ESPHome device discovered](/images/assist/m5stack-atom-echo-discovered-33.png) +{% include voice_assistant/install_esp_firmware.md %} 9. Select the **ESPHome** integration. Under **Devices**, you should see the **M5Stack Atom Echo** listed. ![ATOM Echo discovered](/images/assist/m5stack-atom-echo-discovered-new-03.png) - Your ATOM Echo is connected to Home Assistant over Wi-Fi. You can now move it to any place in your home with a USB power supply. -10. Congratulations! You can now voice control Home Assistant using a button with a built-in microphone. Now give some commands. +10. Congratulations! You can now voice control Home Assistant using a button with a built-in microphone. Now give some commands. ## Controlling Home Assistant over the ATOM Echo @@ -133,36 +76,13 @@ Before you can use this device with Home Assistant, you need to install a bit of Are things not working as expected? - Checkout the [general troubleshooting section for Assist](/voice_control/troubleshooting/). -- You think there is a problem with noise or volume? Checkout the procedure below. - -### Tweaking the ATOM Echo configuration - -1. Make sure you have [access to your configuration files](/common-tasks/os/#configuring-access-to-files). -2. Edit the general configuration: - - Access the `config` folder and open the `configuration.yaml` file. - - Enter the following text: - ```yaml - assist_pipeline: - debug_recording_dir: /share/assist_pipeline - ``` -3. Save the changes and restart Home Assistant. -4. Make sure you have the [Samba add-on installed](/common-tasks/os/#configuring-access-to-files). -5. On your computer, access your Home Assistant server via Samba. - - Navigate to `/share/assist_pipeline`. - - For each voice command you gave, you will find a subfolder with the audio file in `.wav` format. -6. Listen to the audio file of interest. -7. Adjust noise suppression and volume, if needed: - - Access the `config` folder and open the `esphome/m5stack-atom-echo-wake-word.yaml` file. - - Find the `voice_assistant` section. - - If the audio is too noisy, increase the `noise_suppression_level` (max. 4). - - If the audio is too quiet, increase either the `auto_gain` (max. 31) or the `volume_multiplier` (no maximum, but a too high value will cause distortion eventually). -8. Collecting the debug recordings impacts your disk space. - - Once you have found a configuration that works, delete the folder with the audio files. - - In the `configuration.yaml` file, delete the `assist_pipeline entry` and restart Home Assistant. ## Related topics +- [Enable a wake word](/voice_control/install_wake_word_add_on/) - [Create your own wake words](/voice_control/create_wake_word/) - [General troubleshooting section for Assist](/voice_control/troubleshooting/) - [Access to your configuration files](/common-tasks/os/#configuring-access-to-files) - [Using a sentence trigger](/voice_control/custom_sentences/) +- [Home Assistant Cloud](/voice_control/voice_remote_cloud_assistant/) +- [Manually configured Assist pipeline](/voice_control/voice_remote_local_assistant) \ No newline at end of file diff --git a/source/voice_control/troubleshooting.markdown b/source/voice_control/troubleshooting.markdown index 2c1cd691de3..a926fc455d9 100644 --- a/source/voice_control/troubleshooting.markdown +++ b/source/voice_control/troubleshooting.markdown @@ -88,3 +88,33 @@ The example below shows common pitfalls when enquiring about the weather. While ![Create alias for entity name](/images/assist/assist_create_alias.png) 5. If you just ask "What is the weather" when you have forecast entities for multiple entities, Assist always returns the data for the place that was first added. Currently, there is no way to change that. +## Tweaking the Assist audio configuration for your device + +You think there is an issue with background background noise or speaker volume? In some cases, it can help to tweak settings such as noise suppression and gain of your voice assistant device (such as the S32-S3-BOX-3). + +### To tweak the Assist audio configuration for your device + +1. Make sure you have [access to your configuration files](/common-tasks/os/#configuring-access-to-files). +2. Edit the general configuration: + - Access the `config` folder and open the `configuration.yaml` file. + - Enter the following text: + + ```yaml + assist_pipeline: + debug_recording_dir: /share/assist_pipeline + ``` + +3. Save the changes and restart Home Assistant. +4. Make sure you have the [Samba add-on installed](/common-tasks/os/#configuring-access-to-files). +5. On your computer, access your Home Assistant server via Samba. + - Navigate to `/share/assist_pipeline`. + - For each voice command you gave, you will find a subfolder with the audio file in `.wav` format. +6. Listen to the audio file of interest. +7. Adjust noise suppression and volume, if needed: + - Access the `config` folder and open the `esphome/your-device-name-wake-word.yaml` file. + - Find the `voice_assistant` section. + - If the audio is too noisy, increase the `noise_suppression_level` (max. 4). + - If the audio is too quiet, increase either the `auto_gain` (max. 31) or the `volume_multiplier` (no maximum, but a too high value will cause distortion eventually). +8. Collecting the debug recordings impacts your disk space. + - Once you have found a configuration that works, delete the folder with the audio files. + - In the `configuration.yaml` file, delete the `assist_pipeline entry` and restart Home Assistant. diff --git a/source/voice_control/troubleshooting_the_s3_box.markdown b/source/voice_control/troubleshooting_the_s3_box.markdown new file mode 100644 index 00000000000..2c3b59e061f --- /dev/null +++ b/source/voice_control/troubleshooting_the_s3_box.markdown @@ -0,0 +1,84 @@ +--- +title: "Troubleshooting the ESP32-S3-BOX-3" +--- + +This section provides troubleshooting steps for the ESP32-S3-BOX-3 by Espressif. + +## Error: Unable to connect to Wi-Fi + +### Symptom + +The ESP32-S3-BOX-3 shows a message that it is unable to connect to Wi-Fi. + +### Remedy + +1. First, check if your network is ready in general. + 1. Make sure your router is on and within reach. + 2. Make sure you have chosen a Wi-Fi network that supports 2.4 GHz. The ESP32-S3-BOX-3 won't show up on a 5 GHz network. + +2. The next step is to make sure you entered the correct Wi-Fi password. Follow the steps either under **Option 1** or **Option 2**, depending on whether or not you have the ESPHome add-on installed. + - **Option 1**: You do not have the ESPHome add-on installed or you have the add-on but did **not** adopt the ESP32-S3-BOX-3. If the device is shown in green, it is not adopted. + ![ESP32-S3-BOX-3 not adopted](/images/assist/esp32-not-adopted.png) + 1. Make sure the USB cable is plugged into the ESP32-S3-BOX-3. + 2. Go to the [ESPHome projects website](https://esphome.io/projects/index.html), select the **Connect** button, then **Change Wi-Fi**. + - **Option 2**: You already have the ESPHome add-on installed and adopted the ESP32-S3-BOX-3 on your ESPHome dashboard. + 1. Make sure the USB cable is plugged into the ESP32-S3-BOX-3. + 2. In Home Assistant, go to [**Settings** > **Add-ons** > **ESPHome**](https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome), and **Open Web UI**. + 3. On the **ESP32-S3-BOX-3** add-on, select edit. + ![ESP32-S3-BOX-3 open config file](/images/assist/esps32-s3-edit-config.png) + - **Result**: An editor opens, showing the configuration file. + ![ESP32-S3-BOX-3 edit config file](/images/assist/esp32-edit-wifi-credentials.png) + 4. In the **wifi** section, check if it refers to the `secrets` file (contains `!secret`). + If it does not contain a **wifi** section, enter the section below: + + ```yaml + wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + ``` + + 5. Close the editor and in the overview, select **Secrets**. + ![ESP32-S3-BOX-3 open config file](/images/assist/esp32-open-secrets.png) + 6. Enter your Wi-Fi credentials. + ![ESP32-S3-BOX-3 open config file](/images/assist/esp32-edit-secrets.png) + +## The Wi-Fi dialog never shows after the installation + +### Symptom + +The installation wizard never shows the dialog to connect to the Wi-Fi, but directly returns to the screen with **Install Voice Assistant**. + +### Remedy + +1. Disconnect the USB cable connecting the ESP32-S3-BOX-3 and connect it again. +2. If this didn't help, check if you are using a USB cable that is power only and does not transfer data. + +## Error: No Home Assistant + +### Symptom + +The ESP32-S3-BOX-3 shows a message that there is no Home Assistant. + +### Description + +This message indicates that the device could connect to the Wi-Fi, but is unable to communicate with Home Assistant. + +### Remedy + +1. If you see this message during a restart or while an update is running, wait until the restart or update is finished. + - In this case, there is nothing you need to do. It is expected that the device temporarily stops communicating. +2. Make sure your device is on the same network as Home Assistant. + - If you have a complex network setup with VLAN, make sure it is in the same VLAN. +3. Go to {% my integrations title="**Settings** > **Devices & Services**" %}. + - If the device is shown as **Discovered**, select **Configure**. + ![ESP32-S3-BOX-3 open config file](/images/assist/esp32-discovered.png) + - If it was not discovered, select [**Add integration** > **ESPHome**](https://my.home-assistant.io/redirect/config_flow_start/?domain=esphome). +4. If you see the screen below, but the ESP32-S3-BOX-3 is not listed, select **Setup another instance of ESPHome**. + + ![ESP32-S3-BOX-3 open config file](/images/assist/esp32-s3-box-not-discovered.png) + - Go to your router, find the IP address or hostname of your device, and enter it. + +## Related topics + +- [Creating a ESP32-S3-BOX-3 voice assistant](/voice_control/s3_box_voice_assistant/) +- [ESPHome projects website](https://esphome.io/projects/index.html) \ No newline at end of file diff --git a/source/voice_control/voice_remote_local_assistant.markdown b/source/voice_control/voice_remote_local_assistant.markdown index 1be6e2db80d..f4992eabf0f 100644 --- a/source/voice_control/voice_remote_local_assistant.markdown +++ b/source/voice_control/voice_remote_local_assistant.markdown @@ -21,12 +21,13 @@ For the quickest way to get your local Assist pipeline started, follow these ste 1. Install the add-ons to convert text into speech and vice versa. - Install the {% my supervisor_addon addon="core_whisper" title="**Whisper**" %} and the {% my supervisor_addon addon="core_piper" title="**Piper**" %} add-ons. ![Install the Whisper and Piper add-ons](/images/assist/piper-whisper-install-01.png) - - Start both add-ons. + - If you want to use a wake word, also install the {% my supervisor_addon addon="core_openwakeword" title="**openWakeWord**" %} add-on. + - Start the add-ons. - Once the add-ons are started, head over to the integrations under {% my integrations title="**Settings** > **Devices & Services**" %}. - You should now see Piper and Whisper being discovered by the [Wyoming integration](/integrations/wyoming/). ![Whisper and Piper integrations](/images/assist/piper-whisper-install-new-02.png) - - For both integrations, select **Configure**. - - Once the setup is complete, you should see both Piper and Whisper in one integration. + - For each integration, select **Configure**. + - Once the setup is complete, you should see both Piper and Whisper (and, optionally, also openWakeword) in one integration. ![Whisper and Piper integration](/images/assist/piper-whisper-install-new-03.png) - **Whisper** converts speech into text. diff --git a/source/yellow/index.html b/source/yellow/index.html index 200ac21627f..4312fe880df 100644 --- a/source/yellow/index.html +++ b/source/yellow/index.html @@ -258,7 +258,7 @@ frontpage_image: /images/frontpage/yellow-frontpage.jpg
  • M.2 socket M-Key
  • Supports 2230, 2242, 2260, and 2280 modules
  • PCIe x1
  • -
  • Note: Google Coral AI Accelerator not working, details in this issue
  • +
  • Note: Google Coral AI Accelerator doesn't work in the expansion slot. For details, see this issue
  • Gigabit Ethernet
  • @@ -355,7 +355,7 @@ frontpage_image: /images/frontpage/yellow-frontpage.jpg
    🇺🇸
    ameriDroid
    -
    Shipping from the USA. Yellow Standard only.
    +
    Shipping from US. Yellow Standard only.
    🇺🇸
    Crowd Supply
    -
    Shipping from the USA.
    +
    Shipping from US.