diff --git a/Gemfile b/Gemfile
index 698693df4a5..7ff1bf51beb 100644
--- a/Gemfile
+++ b/Gemfile
@@ -11,7 +11,7 @@ group :development do
# > 2.1.0 causes slowdowns https://github.com/sass/sassc-ruby/issues/189
gem 'sassc', '2.1.0'
gem 'sass-embedded', '1.86.0'
- gem 'rubocop', '1.74.0'
+ gem 'rubocop', '1.75.1'
gem 'ruby-lsp', '0.23.12'
gem 'rackup', '2.2.1'
end
@@ -24,7 +24,7 @@ group :jekyll_plugins do
end
gem 'sinatra', '4.1.1'
-gem 'nokogiri', '1.18.5'
+gem 'nokogiri', '1.18.6'
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library
diff --git a/Gemfile.lock b/Gemfile.lock
index aaaf9432fb7..ad060b64314 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -30,10 +30,10 @@ GEM
ffi (1.17.1-arm64-darwin)
ffi (1.17.1-x86_64-linux-gnu)
forwardable-extended (2.6.0)
- google-protobuf (4.30.1-arm64-darwin)
+ google-protobuf (4.30.2-arm64-darwin)
bigdecimal
rake (>= 13)
- google-protobuf (4.30.1-x86_64-linux)
+ google-protobuf (4.30.2-x86_64-linux)
bigdecimal
rake (>= 13)
http_parser.rb (0.8.0)
@@ -81,17 +81,17 @@ GEM
listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
- logger (1.6.6)
+ logger (1.7.0)
mercenary (0.4.0)
multi_json (1.15.0)
mustermann (3.0.3)
ruby2_keywords (~> 0.0.1)
- nokogiri (1.18.5-arm64-darwin)
+ nokogiri (1.18.6-arm64-darwin)
racc (~> 1.4)
- nokogiri (1.18.5-x86_64-linux-gnu)
+ nokogiri (1.18.6-x86_64-linux-gnu)
racc (~> 1.4)
parallel (1.26.3)
- parser (3.3.7.2)
+ parser (3.3.7.3)
ast (~> 2.4.1)
racc
pathutil (0.16.2)
@@ -119,7 +119,7 @@ GEM
regexp_parser (2.10.0)
rexml (3.4.1)
rouge (4.5.1)
- rubocop (1.74.0)
+ rubocop (1.75.1)
json (~> 2.3)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.1.0)
@@ -127,11 +127,12 @@ GEM
parser (>= 3.3.0.2)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 2.9.3, < 3.0)
- rubocop-ast (>= 1.38.0, < 2.0)
+ rubocop-ast (>= 1.43.0, < 2.0)
ruby-progressbar (~> 1.7)
unicode-display_width (>= 2.4.0, < 4.0)
- rubocop-ast (1.41.0)
+ rubocop-ast (1.43.0)
parser (>= 3.3.7.2)
+ prism (~> 1.4)
ruby-lsp (0.23.12)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
@@ -158,7 +159,7 @@ GEM
rack-protection (= 4.1.1)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
- sorbet-runtime (0.5.11953)
+ sorbet-runtime (0.5.11960)
stringex (2.8.6)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
@@ -181,10 +182,10 @@ DEPENDENCIES
jekyll-paginate (= 1.1.0)
jekyll-sitemap (= 1.4.0)
jekyll-toc (= 0.19.0)
- nokogiri (= 1.18.5)
+ nokogiri (= 1.18.6)
rackup (= 2.2.1)
rake (= 13.2.1)
- rubocop (= 1.74.0)
+ rubocop (= 1.75.1)
ruby-lsp (= 0.23.12)
sass-embedded (= 1.86.0)
sass-globbing (= 1.1.5)
diff --git a/source/_data/products.yml b/source/_data/products.yml
index 8ba4a091548..d18c2ab6691 100644
--- a/source/_data/products.yml
+++ b/source/_data/products.yml
@@ -46,7 +46,7 @@ green:
logo: /images/distributors/smarthome.webp
# Europe
- name: Alza.cz
- ship_from: Czechia
+ ship_from: Czech Republic
ship_to: Europe
url: https://www.alza.cz/home-assistant-green-d7998187.htm
logo: /images/distributors/alza-cz.webp
@@ -407,7 +407,7 @@ voice-pe:
logo: /images/distributors/smart-guys.webp
# Europe
- name: Alza.cz
- ship_from: Czechia
+ ship_from: Czech Republic
ship_to: Europe
url: https://www.alza.cz/home-assistant-voice-preview-edition-d12741248.htm
logo: /images/distributors/alza-cz.webp
diff --git a/source/_integrations/aemet.markdown b/source/_integrations/aemet.markdown
index 28bb05ba8dd..0c439a02c8c 100644
--- a/source/_integrations/aemet.markdown
+++ b/source/_integrations/aemet.markdown
@@ -73,3 +73,9 @@ For each condition, the following sensors are created:
The integration creates an image entity for the weather radar if the radar option is enabled.
Details about the API are available in the [AEMET OpenData documentation](https://opendata.aemet.es/dist).
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/airzone.markdown b/source/_integrations/airzone.markdown
index 240410e1978..7a973ff54c0 100644
--- a/source/_integrations/airzone.markdown
+++ b/source/_integrations/airzone.markdown
@@ -106,3 +106,9 @@ For each Airzone zone (thermostat), a *switch entity* is created.
## Water heater
For each Airzone device a *water heater entity* is created if supported.
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/airzone_cloud.markdown b/source/_integrations/airzone_cloud.markdown
index b51db8aa3fd..e6099354788 100644
--- a/source/_integrations/airzone_cloud.markdown
+++ b/source/_integrations/airzone_cloud.markdown
@@ -117,3 +117,9 @@ For each Airzone zone (thermostat), a switch entity is created to turn the therm
## Water heater
For each Airzone device, a *water heater entity* is created if supported.
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/google_drive.markdown b/source/_integrations/google_drive.markdown
index 82f259dd48d..e2cc4715a47 100644
--- a/source/_integrations/google_drive.markdown
+++ b/source/_integrations/google_drive.markdown
@@ -25,6 +25,8 @@ related:
This {% term integration %} allows you to connect your [Google Drive](https://drive.google.com) with Home Assistant Backups. When you set up this integration, your Google Drive will have a new folder called Home Assistant where all the backups will be stored. You can rename this folder to whatever you like in Google Drive at any point in time. If you delete the folder, it will automatically be re-created as long as you have the {% term integration %} enabled.
+For a video walkthrough of the setup instructions, see this video from 13:50 to 19:20
+
## Prerequisites
diff --git a/source/_integrations/heos.markdown b/source/_integrations/heos.markdown
index 956cb00c9fd..3f09e070ce4 100644
--- a/source/_integrations/heos.markdown
+++ b/source/_integrations/heos.markdown
@@ -84,9 +84,9 @@ This integration follows standard integration removal. No extra steps are requir
In addition to the standard [Media Player actions](/integrations/media_player#actions), the HEOS integration provides the following {% term actions %}:
-Group volume actions: `media_player.group_volume_set`, `media_player.group_volume_down`, and `media_player.group_volume_up` for entities joined to a group.
+Group volume actions: `heos.group_volume_set`, `heos.group_volume_down`, and `heos.group_volume_up` for entities joined to a group.
-### Action `media_player.group_volume_set`
+### Action `heos.group_volume_set`
Sets the group's volume while preserving member volume ratios. This action can be called on any entity in a group.
diff --git a/source/_integrations/imgw_pib.markdown b/source/_integrations/imgw_pib.markdown
index 0bc138daad0..13936cf278b 100644
--- a/source/_integrations/imgw_pib.markdown
+++ b/source/_integrations/imgw_pib.markdown
@@ -15,7 +15,14 @@ ha_platforms:
ha_integration_type: integration
---
-IMGW-PIB integration uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland.
+IMGW-PIB {% term integration %} uses hydrological data from [Institute of Meteorology and Water Management - National Research Institute](https://hydro.imgw.pl) to present information about rivers and water reservoirs in Poland.
+
+{% include integrations/config_flow.md %}
+
+{% configuration_basic %}
+Hydrological station:
+ description: "Select a hydrological station from the list of available stations."
+{% endconfiguration_basic %}
## Sensors
@@ -24,6 +31,8 @@ Sensor entities added to Home Assistant:
- Water level
- Water temperature (if a given hydrological station supports it)
-## Setup
+## Removing the integration
-{% include integrations/config_flow.md %}
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/nut.markdown b/source/_integrations/nut.markdown
index 1c4b98e0c6d..310dcf02a1d 100644
--- a/source/_integrations/nut.markdown
+++ b/source/_integrations/nut.markdown
@@ -17,9 +17,12 @@ ha_platforms:
- diagnostics
- sensor
ha_integration_type: device
+related:
+ - url: https://www.networkupstools.org
+ title: Network UPS Tools
---
-The Network UPS Tools (NUT) integration allows you to monitor and manage a UPS (battery backup) using a [NUT](https://networkupstools.org/) server. It lets you view their status, receives notifications about important events, and execute commands as device actions.
+The **Network UPS Tools (NUT)** {% term integration %} allows you to monitor and manage an Uninterruptible Power Supply (UPS) for battery backup, a Power Distribution Unit (PDU), or other similar power device using a [NUT](https://networkupstools.org/) server. It lets you view the status, receive notifications about important events, and execute commands as device actions for one or more such devices.
## Supported devices
diff --git a/source/_integrations/qnap_qsw.markdown b/source/_integrations/qnap_qsw.markdown
index 325e82eb61e..2e4dfb8415c 100644
--- a/source/_integrations/qnap_qsw.markdown
+++ b/source/_integrations/qnap_qsw.markdown
@@ -90,3 +90,9 @@ The following *sensors* are created for each port (or LACP):
| Update | Description |
| :------------------ | :--------------------------------- |
| firmware_update | Firmware update status. |
+
+## Removing the integration
+
+This integration follows standard integration removal. No extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_integrations/reolink.markdown b/source/_integrations/reolink.markdown
index 4022ad2cfe8..8859a3c8686 100644
--- a/source/_integrations/reolink.markdown
+++ b/source/_integrations/reolink.markdown
@@ -63,7 +63,7 @@ Protocol:
## Asterisk (*) next to entities listed in this documentation
-If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#enabling-entities) first.
+If an entity listed below has an asterisk (*) next to its name, it means it is disabled by default. To use such an entity, you must [enable the entity](/common-tasks/general/#to-enable-or-disable-a-single-entity) first.
## Data updates: plus (+) next to entities listed in this documentation
@@ -241,7 +241,7 @@ Depending on the supported features of the camera, switch entities are added for
- PTZ patrol (start/stop)
- Doorbell button sound
- Record
-- Manual record
+- Manual record+
- Privacy mode+
- Push notifications
- Hub ringtone on event
@@ -266,6 +266,8 @@ The Push-notification in the Reolink app is independent of the Home Assistant se
The **PTZ patrol** positions first need to be configured using the Reolink [app](https://support.reolink.com/hc/en-us/articles/360008746833/)/[windows](https://support.reolink.com/hc/en-us/articles/900003738126/)/web client. When no positions are configured, the PTZ patrol entity will not be added. When adding patrol positions for the first time, you need to restart the Reolink integration.
+The **Manual record** switch will turn off automatically after 10 minutes. Therefore the recording will end as soon as the manual record switch is turned off, or 10 minutes have passed.
+
### Light entities
Depending on the supported features of the camera, light entities are added for:
@@ -740,6 +742,16 @@ Prerequisites:
- Reolink cameras can support a limited amount of simultaneous connections. Therefore using third-party software like Frigate, Blue Iris, or Scrypted, or using the ONVIF integration at the same time can cause the camera to drop connections. This results in short unavailabilities of the Reolink entities in Home Assistant. Especially when the connections are coming from the same device (IP) where Home Assistant is running, the Reolink cameras can get confused, dropping one connection in favor of the other originating from the same host IP. If you experience disconnections/unavailabilities of the entities, please first temporarily shut down the other connections (like Frigate) to diagnose if that is the problem. If that is indeed the problem, you could try moving the third-party software to a different host (IP address) since that is known to solve the problem most of the time. You could also try switching the protocol to FLV on Home Assistant and/or the third-party software, as that is known to be less resource-intensive on the camera.
- If the Reolink entities go to unavailable for short periods, the camera may be overloaded with requests resulting in short connection drops. To resolve this, first, check if the integration is using `ONVIF push` instead of `ONVIF long polling` (resource intensive) or `Fast polling` (very resource intensive), see the [Reducing latency of motion events](#reducing-latency-of-motion-events) section. Moreover, try switching to the FLV streaming protocol which is the least resource-intensive for the camera, see the [options](#options) section.
+### Battery drains fast
+
+The Reolink Home Assistant integration is supposed to only wake battery cameras once per hour for about 10 seconds, which should not have a big impact on battery life. You can check this using the **Sleep status** entity. However, there are several factors that can have significant impact on battery life:
+
+- Make sure the **Preload camera stream** option is turned off for all battery camera entities under {% my integrations title="**Settings** > **Devices & services**" %} > Reolink integration card > **x devices** > select the battery camera > select the camera stream (do this for all enabled streams) > Gear icon {% icon "mdi:cog-outline" %}. The Preload camera stream will keep a active stream open, keeping the camera awake. This will drain the battery.
+- Make sure the **Manual Record** switch is turned off. While this switch is on, the camera will be awake and recording. Excessive use of this entity will drain the battery.
+- **Automations** which use entities from a Reolink battery camera can wake up the camera. Changing settings or requesting a snapshot will wake the battery camera for 10-30 seconds. When automations trigger very often, this can cause excessive battery use.
+- Some **Custom cards** that can be used to view the camera in a dashboard are known to keep a battery camera constantly awake, draining its battery.
+- Viewing a **dashboard** with a picture-entity card of a Reolink battery camera, will wake that camera to show the latest snapshot and/or stream. Therefore, it is recommended to place the picture-entity cards in a separate dashboard/tab, which is only accessed when actually wanting to view the battery camera streams.
+
### Streams or recordings not playing
- Most Reolink cameras use h265 encoding for the high resolution recording and clear stream to save storage space and bandwidth. Playback of this h265 encoding is not supported by all browsers or apps. Therefore, the high-resolution recording and/or clear stream may not function on all your devices from which you acces Home Assistant. To see if a Reolink camera is using h264 or h265 encoding, [download the diagnostics text file](/docs/configuration/troubleshooting/#download-diagnostics) and find the `"encoding main": "h265"\"h264"` in the txt file. The low-resolution recording and fluent stream always use h264 encoding and, therefore, do not suffer from this issue.
diff --git a/source/_integrations/shelly.markdown b/source/_integrations/shelly.markdown
index cbe1b3a8db2..c6ae4a0d2a5 100644
--- a/source/_integrations/shelly.markdown
+++ b/source/_integrations/shelly.markdown
@@ -49,6 +49,13 @@ Integrate [Shelly devices](https://shelly.com) into Home Assistant.
{% include integrations/config_flow.md %}
+{% configuration_basic %}
+Host:
+ description: "The Hostname or IP address of your Shelly device. You can find it in your router."
+Port:
+ description: "Custom TCP port of the device. Change this only if the device is connected via Shelly Range Extender."
+{% endconfiguration_basic %}
+
## Shelly device generations
There are four generations of devices and all generations are supported by this integration. There are some differences in how devices should be configured and in the naming of entities and devices between generations.
@@ -373,3 +380,9 @@ Please check from the device Web UI that the configured server is reachable.
- Before set up, battery-powered devices must be woken up by pressing the button on the device.
- For battery-powered devices, the `update` platform entities only inform about the availability of firmware updates but are not able to trigger the update process.
- Using the `homeassistant.update_entity` action for an entity belonging to a battery-powered device is not possible because most of the time these devices are sleeping (are offline).
+
+## Removing the integration
+
+This integration follows standard integration removal, no extra steps are required.
+
+{% include integrations/remove_device_service.md %}
diff --git a/source/_posts/2025-03-26-state-of-the-open-home-2025-announcement.markdown b/source/_posts/2025-03-26-state-of-the-open-home-2025-announcement.markdown
new file mode 100644
index 00000000000..f752bc553b2
--- /dev/null
+++ b/source/_posts/2025-03-26-state-of-the-open-home-2025-announcement.markdown
@@ -0,0 +1,20 @@
+---
+layout: post
+title: "Announcing State of the Open Home 2025"
+description: "April 12th will bring another big stream full of exciting updates and announcements."
+date: 2025-03-26 00:00:01
+date_formatted: "March 26, 2025"
+author: Paulus Schoutsen
+comments: true
+categories: Announcements
+og_image: /images/blog/2025-03-SOTOH-announce/art.png
+---
+
+
+π¨On April 12th, we're going live with this year's State of the Open Home - our annual recap of the previous year and look ahead to the next. Just like past years, this live stream will be packed with awesome announcements, updates, and cool community highlights. (*Got 11 hours to spare? Check out our last 5 [State of live streams](https://www.youtube.com/playlist?list=PLKsVm4cWHDQBtg2CwzJVoCvx4Mc2yTy7C)!*)
+
+This marks a full year since the founding of the [Open Home Foundation](https://www.openhomefoundation.org/) and Home Assistant becoming part of the foundation. We'll be taking a look back at what has been a very big year, and using this time to give you some big updates. These will include new projects becoming a part of the foundation π, new supporters π, and what's in store for our Works with Home Assistant program π€.
+
+We'll also be highlighting some of the big findings of our [2024 Home Assistant survey](/blog/2024/12/16/community-survey-2024/), where over 8,500 of you told us about yourself, your homes, and how you use Home Assistant. We'll also announce Home Assistant's 2025 [roadmap](/blog/categories/roadmap/), and how your feedback is shaping the future of the Open Home.
+
+**π Be sure to [click to get notified](https://www.youtube.com/watch?v=o4Vctz1_KYE) when it starts (Saturday, April 12 - 18:00 GMT / 20:00 CEST / 14:00 EDT / 11:00 PDT), and we can't wait to see you in the comments!**
diff --git a/source/images/blog/2025-03-SOTOH-announce/art.png b/source/images/blog/2025-03-SOTOH-announce/art.png
new file mode 100644
index 00000000000..64fd00dceab
Binary files /dev/null and b/source/images/blog/2025-03-SOTOH-announce/art.png differ
diff --git a/source/voice-pe/index.html b/source/voice-pe/index.html
index ca5900529eb..de4d3ff0ac5 100644
--- a/source/voice-pe/index.html
+++ b/source/voice-pe/index.html
@@ -216,7 +216,7 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
-
Buy now
+
Buy now
* Recommended MSRP. Pricing subject to individual retailers.
@@ -1383,4 +1383,4 @@ frontpage_image: /images/frontpage/voice-pe-frontpage.jpg
{% include custom/buy-dialog.html product="voice-pe" %}
-
\ No newline at end of file
+